public EnumApiStatus Modify(RequestConsultationInfoUpdateDTO model, ref ResponseConsultationLogDTO logDto, DBEntities db = null) { bool dbPrivateFlag = false; if (db == null) { db = CreateDb(); dbPrivateFlag = true; } //主诊医生 var attendingDoctor = model.Doctors.Where(i => i.IsAttending == true).FirstOrDefault(); if (attendingDoctor == null) { //当前用户为主诊医生 if (model.CurrUserAttending == true && !string.IsNullOrEmpty(model.ConsultationDoctorID)) { attendingDoctor = new RequestConsultationDoctorDTO { DoctorID = model.ConsultationDoctorID, IsAttending = true }; model.Doctors.Add(attendingDoctor); } } #region 病历 UserMedicalRecord userMedical = null; if (model.MedicalRecord != null) { userMedical = model.MedicalRecord.Map <RequestUserMedicalRecordDTO, UserMedicalRecord>(); } else { userMedical = new UserMedicalRecord(); } userMedical.UserID = model.CurrentOperatorUserID; userMedical.MemberID = model.MemberID; userMedical.DoctorID = attendingDoctor == null?model.Doctors.Select(i => i.DoctorID).First() : attendingDoctor.DoctorID; #endregion ConsultationLog operationLog; RemoteConsultation entity = null; if (!string.IsNullOrEmpty(model.ConsultationID)) { #region 编辑(删除再添加) //订单不存在 entity = db.RemoteConsultations.Where(i => i.ConsultationID == model.ConsultationID && i.IsDeleted == false).FirstOrDefault(); if (entity == null) { return(EnumApiStatus.ConsultationNotExists); } //该状态不能修改 if (entity.ConsultationProgress == EnumConsultationProgress.Arranged || entity.ConsultationProgress == EnumConsultationProgress.InProgress || entity.ConsultationProgress == EnumConsultationProgress.Finished || entity.ConsultationProgress == EnumConsultationProgress.Invalid) { return(EnumApiStatus.CurrStatusNotModify); } //已取消,已付款,已完成的订单不能再修改 var opdRegister = db.UserOPDRegisters.Where(i => i.OPDRegisterID == entity.OPDRegisterID).FirstOrDefault(); if (opdRegister != null && (opdRegister.OPDState != EnumOPDState.NoPay)) { return(EnumApiStatus.CurrOrderStatusNotModify); } //修改会诊单 entity.Requirement = model.Requirement; entity.Purpose = model.Purpose; entity.StartTime = model.StartTime; entity.FinishTime = model.FinishTime; entity.ConsultationProgress = model.ConsultationProgress; entity.Address = model.Address; db.Update(entity); //修改预约记录 //opdRegister.OPDRegisterID = entity.OPDRegisterID; opdRegister = CreateOpdRegister(model, opdRegister, attendingDoctor); db.Update(opdRegister); //修改病例 userMedical.UserMedicalRecordID = db.UserMedicalRecords.Where(i => i.OPDRegisterID == opdRegister.OPDRegisterID).Select(i => i.UserMedicalRecordID).First(); userMedical.OPDRegisterID = opdRegister.OPDRegisterID; db.Update(userMedical); //删除医生 var consultationDoctors = db.ConsultationDoctors.Where(i => i.ConsultationID == entity.ConsultationID); db.ConsultationDoctors.RemoveRange(consultationDoctors); //删除文件 var userFiles = db.UserFiles.Where(i => i.OutID == userMedical.UserMedicalRecordID); db.UserFiles.RemoveRange(userFiles); //操作日志 var operation = GetOperationType(entity, model); operationLog = CreateOperationLog(model.ConsultationID, operation.OperationType, EnumOPDState.NoPay, model.ConsultationProgress, operation.Message, model.CurrentOperatorUserID, model.OrgID); #endregion } else { // 添加会诊单 entity = model.Map <RequestConsultationInfoUpdateDTO, RemoteConsultation>(); entity.ConsultationID = Guid.NewGuid().ToString("N"); entity.OPDRegisterID = entity.ConsultationID; entity.ConsultationNo = CreateConsultationNo(); entity.CreateTime = DateTime.Now; entity.CreateUserID = model.CurrentOperatorUserID; db.RemoteConsultations.Add(entity); //添加预约记录 var opdRegister = CreateOpdRegister(model, null, attendingDoctor); opdRegister.CreateTime = DateTime.Now; opdRegister.OPDDate = DateTime.Now; opdRegister.OrgnazitionID = model.OrgID; opdRegister.OPDRegisterID = entity.OPDRegisterID; db.UserOPDRegisters.Add(opdRegister); #region 是否进入导诊系统分诊,否则分诊状态设为不分诊 db.DoctorTriages.Add(new DoctorTriage { OPDRegisterID = opdRegister.OPDRegisterID, TriageDoctorID = model.IsToGuidance ? "" : opdRegister.DoctorID, TriageStatus = model.IsToGuidance ? EnumTriageStatus.None : EnumTriageStatus.Triaged, IsToGuidance = model.IsToGuidance }); #endregion //添加病历 userMedical.UserMedicalRecordID = Guid.NewGuid().ToString("N"); userMedical.OPDRegisterID = opdRegister.OPDRegisterID; db.UserMedicalRecords.Add(userMedical); //操作日志 operationLog = CreateOperationLog(entity.ConsultationID, EnumConsultationOperationType.Create, EnumOPDState.NoPay, model.ConsultationProgress, "创建会诊订单", model.CurrentOperatorUserID, model.OrgID); } #region 添加医生 if (model.Doctors != null && model.Doctors.Count > 0) { //会诊医生会诊服务价格 decimal totalPrice = 0; model.Doctors.ForEach(item => { totalPrice += item.ServicePrice; db.ConsultationDoctors.Add(new ConsultationDoctor { ConsultationDoctorID = Guid.NewGuid().ToString("N"), ConsultationID = entity.ConsultationID, DoctorID = item.DoctorID, IsAttending = item.IsAttending, Amount = item.ServicePrice }); }); //平台服务费用 totalPrice += model.PlatServicePrice; entity.Amount = totalPrice; } #endregion #region 添加文件 if (model.Files != null) { model.Files.ForEach(i => { db.UserFiles.Add(new UserFile() { FileID = Guid.NewGuid().ToString("N"), FileName = i.FileUrl, FileUrl = i.FileUrl, FileType = 0, Remark = i.Remark, OutID = userMedical.UserMedicalRecordID, UserID = model.CurrentOperatorUserID }); }); } #endregion #region 添加影像资料 if (model.InspectResult != null) { //只保存新资料 var inspectList = model.InspectResult.Where(i => string.IsNullOrEmpty(i.InspectResultID)).ToList(); inspectList.ForEach(i => { var inspectEntity = i.Map <RequestUserInspectResultDTO, UserInspectResult>(); inspectEntity.InspectResultID = Guid.NewGuid().ToString("N"); db.UserInspectResults.Add(inspectEntity); }); UploadInspect(inspectList); } #endregion logDto = operationLog.Map <ConsultationLog, ResponseConsultationLogDTO>(); var ret = true; if (dbPrivateFlag) { ret = db.SaveChanges() > 0; db.Dispose(); } if (ret) { return(EnumApiStatus.BizOK); } else { return(EnumApiStatus.BizError); } }
private UserOPDRegister CreateOpdRegister(RequestConsultationInfoUpdateDTO model, UserOPDRegister entity, RequestConsultationDoctorDTO attendingDoctor) { if (entity == null) { entity = new UserOPDRegister(); } entity.UserID = model.CurrentOperatorUserID; entity.MemberID = model.MemberID; entity.OPDType = EnumDoctorServiceType.Consultation; entity.Fee = model.Amount; entity.CreateUserID = model.CurrentOperatorUserID; entity.OPDBeginTime = ""; entity.OPDEndTime = ""; entity.DoctorID = attendingDoctor == null ? "" : attendingDoctor.DoctorID; entity.DoctorName = attendingDoctor == null ? "" : attendingDoctor.DoctorName; entity.RegDate = model.StartTime == null ? DateTime.Now : model.StartTime.Value; entity.MemberName = model.MemberName; entity.Gender = model.Gender; entity.Marriage = model.Marriage; entity.Age = ToolHelper.GetAgeFromBirth(model.Birthday); entity.IDNumber = string.IsNullOrEmpty(model.IDNumber) ? "" : model.IDNumber; entity.IDType = model.IDType; entity.Mobile = model.Mobile; entity.Address = model.PatientAddress; entity.Birthday = model.Birthday; return(entity); }