public Create3(Guid JZID, Guid?preGeneralRoomInfoId, Guid roomId) { this.PreGeneralRoomInfoId = preGeneralRoomInfoId; this.RoomId = roomId; this.JZID = JZID; var dbTrasen = new TrasenDbContext("TrasenConnection"); var MZYS_JZJL = dbTrasen.MZYS_JZJL.Where(c => c.JZID == JZID).FirstOrDefault(); var BRXX = dbTrasen.VI_YY_BRXX.Where(c => c.BRXXID == MZYS_JZJL.BRXXID).FirstOrDefault(); var GHXX = dbTrasen.VI_MZ_GHXX.Where(c => c.GHXXID == MZYS_JZJL.GHXXID).FirstOrDefault(); var YY_KDJB = dbTrasen.YY_KDJB.Where(c => c.BRXXID == MZYS_JZJL.BRXXID).FirstOrDefault(); var JC_SEXCODE = dbTrasen.JC_SEXCODE.Where(c => c.CODE == BRXX.XB).FirstOrDefault(); var JC_EMPLOYEE_PROPERTY = dbTrasen.JC_EMPLOYEE_PROPERTY.Where(c => c.EMPLOYEE_ID == MZYS_JZJL.JSYSDM).FirstOrDefault(); if (MZYS_JZJL == null || BRXX == null || GHXX == null || YY_KDJB == null) { throw new ArgumentException("JZID无效"); } this.PatientName = BRXX?.BRXM; this.OutPatientNumber = YY_KDJB?.KH; this.Sex = JC_SEXCODE?.NAME; this.BirthDate = BRXX?.CSRQ; this.DiagnosisNameOrigin = MZYS_JZJL?.ZDMC; this.ReceiveTime = MZYS_JZJL?.JSSJ; this.FirstDoctorName = JC_EMPLOYEE_PROPERTY?.NAME; this.KDJID = YY_KDJB.KDJID; this.BRXXID = BRXX.BRXXID; this.GHXXID = GHXX.GHXXID; }
public Create2(string outPatientNumber, Guid roomId, Guid?preGeneralRoomInfoId) { this.RoomId = roomId; this.PreGeneralRoomInfoId = preGeneralRoomInfoId; var db3 = new Domains3.Entities.EiSDbContext(); var room = db3.Rooms.Find(this.RoomId); this.RoomName = room.RoomName; Domains3.Entities.GeneralRoomInfo target = null; if (this.PreGeneralRoomInfoId != null) { target = db3.GeneralRoomInfos.Find(this.PreGeneralRoomInfoId); } var dbTrasen = new TrasenDbContext("TrasenConnection"); var itemKDJB = dbTrasen.YY_KDJB.Where(c => c.KH == outPatientNumber).First(); List <VI_MZ_GHXX> listGHXX; if (target == null) { listGHXX = dbTrasen.VI_MZ_GHXX.Where(c => c.BRXXID == itemKDJB.BRXXID).OrderByDescending(c => c.GHSJ).ThenBy(c => c.GHXXID).ToList(); } else { listGHXX = dbTrasen.VI_MZ_GHXX.Where(c => c.BRXXID == itemKDJB.BRXXID && c.GHSJ >= target.ReceiveTime.Value).OrderByDescending(c => c.GHSJ).ThenBy(c => c.GHXXID).ToList(); } this.ListGhxx = listGHXX.Select(c => new ItemGhxx(c, this.RoomId, this.PreGeneralRoomInfoId)).ToList(); }
/// <summary> /// 初始化。 /// </summary> /// <param name="outPatientNumber">卡号。</param> public Create2(string outPatientNumber) { var dbTrasen = new TrasenDbContext("TrasenConnection"); var itemKDJB = dbTrasen.YY_KDJB.Where(c => c.KH == outPatientNumber).First(); var listGHXX = dbTrasen.VI_MZ_GHXX.Where(c => c.BRXXID == itemKDJB.BRXXID).OrderByDescending(c => c.GHSJ).ThenBy(c => c.GHXXID).ToList(); this.ListGhxx = listGHXX.Select(c => new ItemGhxx(c)).ToList(); }
/// <summary> /// 初始化。 /// </summary> /// <param name="GHXX">挂号信息。</param> public ItemGhxx(VI_MZ_GHXX GHXX) { var dbTrasen = new TrasenDbContext("TrasenConnection"); this.RegisterTime = GHXX.GHSJ; var listJZJL = dbTrasen.MZYS_JZJL.Where(c => c.GHXXID == GHXX.GHXXID).OrderByDescending(c => c.JSSJ).ThenBy(c => c.JZID).ToList(); this.ListJzjl = listJZJL.Select(c => new ItemJzjl(c)).ToList(); }
/// <summary> /// 初始化。 /// </summary> /// <param name="JZJL">门诊医师接诊记录。</param> public ItemJzjl(MZYS_JZJL JZJL) { var dbTrasen = new TrasenDbContext("TrasenConnection"); this.ORIGIN_JZID = JZJL.JZID; this.FirstDoctorName = dbTrasen.JC_EMPLOYEE_PROPERTY.Where(c => c.EMPLOYEE_ID == JZJL.JSYSDM).FirstOrDefault()?.NAME; this.DiagnosisNameOrigin = JZJL.ZDMC; this.ReceiveTime = JZJL.JSSJ; }
public ItemGhxx(VI_MZ_GHXX GHXX, Guid roomId, Guid?preGeneralRoomInfoId) { this.RoomId = roomId; this.PreGeneralRoomInfoId = preGeneralRoomInfoId; var dbTrasen = new TrasenDbContext("TrasenConnection"); this.RegisterTime = GHXX.GHSJ; var listJZJL = dbTrasen.MZYS_JZJL.Where(c => c.GHXXID == GHXX.GHXXID).OrderByDescending(c => c.JSSJ).ThenBy(c => c.JZID).ToList(); this.ListJzjl = listJZJL.Select(c => new ItemJzjl(c, this.RoomId, this.PreGeneralRoomInfoId)).ToList(); }
public ItemJzjl(MZYS_JZJL JZJL, Guid roomId, Guid?preGeneralRoomInfoId) { this.RoomId = roomId; this.PreGeneralRoomInfoId = preGeneralRoomInfoId; var dbTrasen = new TrasenDbContext("TrasenConnection"); this.ORIGIN_JZID = JZJL.JZID; this.FirstDoctorName = dbTrasen.JC_EMPLOYEE_PROPERTY.Where(c => c.EMPLOYEE_ID == JZJL.JSYSDM).FirstOrDefault()?.NAME; this.DiagnosisNameOrigin = JZJL.ZDMC; this.ReceiveTime = JZJL.JSSJ; var db3 = new Domains3.Entities.EiSDbContext(); this.ExistRoomName = db3.GeneralRoomInfos.FirstOrDefault(c => c.JZID == JZJL.JZID)?.Room.RoomName; }
public void GetDoctor(bool isUpdateExists = true) { var db = new PhMS2dot1Domain.Models.PhMS2dot1DomainContext(this.localConnection); var dbTrasen = new TrasenDbContext(this.trasenConnection); //测试使用。 { //db.Database.Log = Console.WriteLine; //dbTrasen.Database.Log = Console.WriteLine; } var listDoctors = db.Doctors.ToList(); var listTrasen_JC_EMPLOYEE_PROPERTY = dbTrasen.JC_EMPLOYEE_PROPERTY.ToList(); foreach (var itemTrasen_JC_EMPLOYEE_PROPERTY in listTrasen_JC_EMPLOYEE_PROPERTY) { var doctor = listDoctors.Where(c => c.ORIGIN_EMPLOYEE_ID == itemTrasen_JC_EMPLOYEE_PROPERTY.EMPLOYEE_ID).FirstOrDefault(); if (doctor == null) { doctor = new PhMS2dot1Domain.Models.Doctor(); doctor.DoctorName = itemTrasen_JC_EMPLOYEE_PROPERTY.NAME; doctor.DoctorCode = itemTrasen_JC_EMPLOYEE_PROPERTY.D_CODE; doctor.ORIGIN_EMPLOYEE_ID = itemTrasen_JC_EMPLOYEE_PROPERTY.EMPLOYEE_ID; db.Doctors.Add(doctor); } else { if (isUpdateExists) { doctor.DoctorName = itemTrasen_JC_EMPLOYEE_PROPERTY.NAME; doctor.DoctorCode = itemTrasen_JC_EMPLOYEE_PROPERTY.D_CODE; doctor.ORIGIN_EMPLOYEE_ID = itemTrasen_JC_EMPLOYEE_PROPERTY.EMPLOYEE_ID; } } db.SaveChanges(); } }
public void GetDepartment(bool isUpdateExists = true) { var db = new PhMS2dot1Domain.Models.PhMS2dot1DomainContext(this.localConnection); var dbTrasen = new TrasenDbContext(this.trasenConnection); //测试使用。 { //db.Database.Log = Console.WriteLine; //dbTrasen.Database.Log = Console.WriteLine; } var listDepartments = db.Departments.ToList(); var listTrasen_JC_DEPT_PROPERTY = dbTrasen.JC_DEPT_PROPERTY.ToList(); foreach (var itemTrasen_JC_DEPT_PROPERTY in listTrasen_JC_DEPT_PROPERTY) { var department = listDepartments.Where(c => c.Origin_DEPT_ID == itemTrasen_JC_DEPT_PROPERTY.DEPT_ID).FirstOrDefault(); if (department == null) { department = new PhMS2dot1Domain.Models.Department(); department.DepartmentName = itemTrasen_JC_DEPT_PROPERTY.NAME; department.Origin_DEPT_ID = itemTrasen_JC_DEPT_PROPERTY.DEPT_ID; db.Departments.Add(department); } else { if (isUpdateExists) { department.DepartmentName = itemTrasen_JC_DEPT_PROPERTY.NAME; department.Origin_DEPT_ID = itemTrasen_JC_DEPT_PROPERTY.DEPT_ID; } } db.SaveChanges(); } }
/// <summary> /// 获取门诊用药记录。 /// </summary> /// <param name="start">时段起点(闭区间)。</param> /// <param name="end">时段终点(开区间)。</param> /// <param name="isUpdateExists">是否更新已有记录。</param> /// <remarks>存在部分“创新”中的处方明细表记录无法对应处方的记录,目前以忽略处理。</remarks> public void GetOutPatientDrugRecords(DateTime start, DateTime end, bool isUpdateExists = false) { //==初始化== #region "初始化" var importDataLog = new PhMS2dot1Domain.Models.ImportDataLog(); this.LogInitial(importDataLog, "Trasen", "VI_MZ_CFB_MX, YP_YPCJD, YP_YPGGD", "OutPatientDrugRecords", start, end); this.LogAppendRemarks(importDataLog, string.Format("MethodName=GetOutPatientDrugRecords. IsUpdateExists={0}. ", isUpdateExists)); #endregion //==对创新取数== #region "对创新取数" var dbTrasen = new TrasenDbContext(this.trasenConnection); var queryTrasenVI_MZ_CFB_MX = dbTrasen.VI_MZ_CFB_MX.Where(c => start <= c.QRSJ && c.QRSJ < end && (c.TJDXMDM == "01" || c.TJDXMDM == "02" || c.TJDXMDM == "03")); //(取创新中的原数据的可选筛选条件,暂无) this.LogSetReadStartTime(importDataLog); var listTrasenVI_MZ_CFB_MX = queryTrasenVI_MZ_CFB_MX.ToList(); var listYP_YPCJD = dbTrasen.YP_YPCJD.ToList(); var listYP_YPGGD = dbTrasen.YP_YPGGD.Where(c => !c.BDELETE).ToList(); this.LogSetReadEndTime(importDataLog); this.LogSetSourceRecordCount(importDataLog, listTrasenVI_MZ_CFB_MX.Count()); #endregion //==处理OutPatientDrugRecords==。 #region "处理OutPatientDrugRecords" this.LogSetSuccessImportRecordCount(importDataLog, (int)importDataLog.SourceRecordCount); this.LogSetWriteStartTime(importDataLog); Parallel.ForEach(listTrasenVI_MZ_CFB_MX, new ParallelOptions { MaxDegreeOfParallelism = this.MaxDegreeOfParallelism }, (itemTrasenVI_MZ_CFB_MX, state, index) => { var dbParallel = new PhMS2dot1Domain.Models.PhMS2dot1DomainContext(this.localConnection); var outPatientDrugRecord = dbParallel.OutPatientDrugRecords.Where(c => c.Origin_CFMXID == itemTrasenVI_MZ_CFB_MX.CFMXID).FirstOrDefault(); if (outPatientDrugRecord == null) { //检测父节点 if (!dbParallel.OutPatientPrescriptions.Where(c => c.OutPatientPrescriptionID == itemTrasenVI_MZ_CFB_MX.CFID).Any()) { this.LogAppendErrorMessage(importDataLog, "Failded Insert OutPatientDrugRecord: index:" + index + ", OutPatientDrugRecordID:" + itemTrasenVI_MZ_CFB_MX.CFMXID + ". "); } else { var itemYP_YPCJD = listYP_YPCJD.Where(c => c.CJID == itemTrasenVI_MZ_CFB_MX.XMID).First(); var itemYP_YPGGD = listYP_YPGGD.Where(c => c.GGID == itemYP_YPCJD.GGID).First(); outPatientDrugRecord = new PhMS2dot1Domain.Models.OutPatientDrugRecord(); outPatientDrugRecord.OutPatientDrugRecordID = itemTrasenVI_MZ_CFB_MX.CFMXID; outPatientDrugRecord.OutPatientPrescriptionID = itemTrasenVI_MZ_CFB_MX.CFID; outPatientDrugRecord.ProductName = itemTrasenVI_MZ_CFB_MX.PM; outPatientDrugRecord.IsEssential = itemYP_YPGGD.GJJBYW.Value; outPatientDrugRecord.Origin_CFMXID = itemTrasenVI_MZ_CFB_MX.CFMXID; outPatientDrugRecord.Origin_KSSDJID = itemYP_YPGGD.KSSDJID; outPatientDrugRecord.Origin_CJID = (int)itemTrasenVI_MZ_CFB_MX.XMID; outPatientDrugRecord.IsWesternMedicine = (itemTrasenVI_MZ_CFB_MX.TJDXMDM == "01"); outPatientDrugRecord.IsChinesePatentMedicine = (itemTrasenVI_MZ_CFB_MX.TJDXMDM == "02"); outPatientDrugRecord.IsTraditionalChineseMedicine = (itemTrasenVI_MZ_CFB_MX.TJDXMDM == "03"); outPatientDrugRecord.DosageForm = itemTrasenVI_MZ_CFB_MX.GG; outPatientDrugRecord.Ddd = itemYP_YPGGD.DDD.Value; outPatientDrugRecord.Origin_YFMC = itemTrasenVI_MZ_CFB_MX.YFMC; outPatientDrugRecord.UnitPrice = itemTrasenVI_MZ_CFB_MX.DJ; outPatientDrugRecord.UnitName = itemTrasenVI_MZ_CFB_MX.DW; outPatientDrugRecord.Quantity = itemTrasenVI_MZ_CFB_MX.SL; outPatientDrugRecord.ActualPrice = itemTrasenVI_MZ_CFB_MX.JE; outPatientDrugRecord.EffectiveConstituentAmount = itemYP_YPGGD.DDDJL.HasValue ? itemYP_YPGGD.DDDJL.Value : itemYP_YPGGD.HLXS; dbParallel.OutPatientDrugRecords.Add(outPatientDrugRecord); dbParallel.SaveChanges(); } } else { if (isUpdateExists) { var itemYP_YPCJD = listYP_YPCJD.Where(c => c.CJID == itemTrasenVI_MZ_CFB_MX.XMID).First(); var itemYP_YPGGD = listYP_YPGGD.Where(c => c.GGID == itemYP_YPCJD.GGID).First(); outPatientDrugRecord.OutPatientPrescriptionID = itemTrasenVI_MZ_CFB_MX.CFID; outPatientDrugRecord.ProductName = itemTrasenVI_MZ_CFB_MX.PM; outPatientDrugRecord.IsEssential = itemYP_YPGGD.GJJBYW.Value; outPatientDrugRecord.Origin_KSSDJID = itemYP_YPGGD.KSSDJID; outPatientDrugRecord.Origin_CJID = (int)itemTrasenVI_MZ_CFB_MX.XMID; outPatientDrugRecord.IsWesternMedicine = (itemTrasenVI_MZ_CFB_MX.TJDXMDM == "01"); outPatientDrugRecord.IsChinesePatentMedicine = (itemTrasenVI_MZ_CFB_MX.TJDXMDM == "02"); outPatientDrugRecord.IsTraditionalChineseMedicine = (itemTrasenVI_MZ_CFB_MX.TJDXMDM == "03"); outPatientDrugRecord.DosageForm = itemTrasenVI_MZ_CFB_MX.GG; outPatientDrugRecord.Ddd = itemYP_YPGGD.DDD.Value; outPatientDrugRecord.Origin_YFMC = itemTrasenVI_MZ_CFB_MX.YFMC; outPatientDrugRecord.UnitPrice = itemTrasenVI_MZ_CFB_MX.DJ; outPatientDrugRecord.UnitName = itemTrasenVI_MZ_CFB_MX.DW; outPatientDrugRecord.Quantity = itemTrasenVI_MZ_CFB_MX.SL; outPatientDrugRecord.ActualPrice = itemTrasenVI_MZ_CFB_MX.JE; outPatientDrugRecord.EffectiveConstituentAmount = itemYP_YPGGD.DDDJL.HasValue ? itemYP_YPGGD.DDDJL.Value : itemYP_YPGGD.HLXS; dbParallel.SaveChanges(); } } }); this.LogSetWriteEndTime(importDataLog); #endregion //==完成== #region "完成" this.LogSave(importDataLog); Console.WriteLine("Finish Get OutPatientDrugRecords:{0} To {1}.", start, end); #endregion }
/// <summary> /// 获取住院病例,并同时获取病人。 /// </summary> /// <param name="start">时段起点(闭区间)。</param> /// <param name="end">时段终点(开区间)。</param> /// <param name="isRemoveCancel">指定是否将“CANCEL_BIT”为1的记录从本地删除。</param> /// <param name="isContainNullOutDate">是否包含未出院记录。</param> /// <param name="isUpdateExist">是否更新已存在记录。</param> /// <remarks>病人为住院、门诊共用。</remarks> /// <example> /// 获取2016年9月数据 /// <code> /// GetPatienstAndInPatients(new DateTime(2016, 9, 1), new DateTime(2016, 10, 1)); /// </code> /// </example> public void GetPatienstAndInPatients(DateTime start, DateTime end, bool isRemoveCancel = true, bool isContainNullOutDate = false, bool isUpdateExist = false) { //==初始化== #region 初始化 var importDataLogPatient = new PhMS2dot1Domain.Models.ImportDataLog(); var importDataLogInPatient = new PhMS2dot1Domain.Models.ImportDataLog(); this.LogInitial(importDataLogPatient, "Trasen", "VI_ZY_VINPATIENT", "Patients", start, end); this.LogInitial(importDataLogInPatient, "Trasen", "VI_ZY_VINPATIENT", "InPatients", start, end); this.LogAppendRemarks(importDataLogPatient, string.Format("MethodName=GetPatienstAndInPatients. isRemoveCancel={0}, isContainNullOutDate={1}, IsUpdateExists={2}. ", isRemoveCancel, isContainNullOutDate, isUpdateExist)); this.LogAppendRemarks(importDataLogInPatient, string.Format("MethodName=GetPatienstAndInPatients. isRemoveCancel={0}, isContainNullOutDate={1}, IsUpdateExists={2}. ", isRemoveCancel, isContainNullOutDate, isUpdateExist)); #endregion //==对创新取数== #region 对创新取数 var dbTrasen = new TrasenDbContext(this.trasenConnection); var queryTrasenVI_ZY_VINPATIENT = dbTrasen.VI_ZY_VINPATIENT.Where(c => (start <= c.OUT_DATE && c.OUT_DATE < end) || (start <= c.CANCEL_DATE && c.CANCEL_DATE < end)); //(取创新中的原数据的可选筛选条件) if (isContainNullOutDate) { queryTrasenVI_ZY_VINPATIENT = queryTrasenVI_ZY_VINPATIENT.Union(dbTrasen.VI_ZY_VINPATIENT.Where(c => !c.OUT_DATE.HasValue)); } this.LogSetReadStartTime(importDataLogPatient); this.LogSetReadStartTime(importDataLogInPatient); var listTrasen_VI_ZY_VINPATIENT = queryTrasenVI_ZY_VINPATIENT.ToList(); var listTrasen_VI_ZY_VINPATIENT_Distinct = listTrasen_VI_ZY_VINPATIENT.Distinct(new Infrastructure.VI_ZY_VINPATIENT_Comparer()).ToList(); this.LogSetReadEndTime(importDataLogPatient); this.LogSetReadEndTime(importDataLogInPatient); this.LogSetSourceRecordCount(importDataLogPatient, listTrasen_VI_ZY_VINPATIENT_Distinct.Count()); this.LogSetSourceRecordCount(importDataLogInPatient, listTrasen_VI_ZY_VINPATIENT.Count()); #endregion //==处理Patients== #region 处理Patients this.LogSetSuccessImportRecordCount(importDataLogPatient, (int)importDataLogPatient.SourceRecordCount); this.LogSetWriteStartTime(importDataLogPatient); Parallel.ForEach(listTrasen_VI_ZY_VINPATIENT_Distinct, new ParallelOptions { MaxDegreeOfParallelism = this.MaxDegreeOfParallelism }, (itemTrasen_VI_ZY_VINPATIENT, state, index) => { var dbParallel = new PhMS2dot1Domain.Models.PhMS2dot1DomainContext(this.localConnection); var patient = dbParallel.Patients.Where(old => old.Origin_PATIENT_ID == itemTrasen_VI_ZY_VINPATIENT.PATIENT_ID).FirstOrDefault(); if (patient == null) { patient = new PhMS2dot1Domain.Models.Patient(); patient.PatientID = itemTrasen_VI_ZY_VINPATIENT.PATIENT_ID; patient.Origin_PATIENT_ID = itemTrasen_VI_ZY_VINPATIENT.PATIENT_ID; patient.BirthDate = itemTrasen_VI_ZY_VINPATIENT.BIRTHDAY; patient.PatientName = itemTrasen_VI_ZY_VINPATIENT.NAME; dbParallel.Patients.Add(patient); dbParallel.SaveChanges(); } else { if (isUpdateExist) { patient.BirthDate = itemTrasen_VI_ZY_VINPATIENT.BIRTHDAY; patient.PatientName = itemTrasen_VI_ZY_VINPATIENT.NAME; dbParallel.SaveChanges(); } } }); this.LogSetWriteEndTime(importDataLogPatient); #endregion //==处理InPatients== #region 处理InPatients this.LogSetSuccessImportRecordCount(importDataLogInPatient, (int)importDataLogInPatient.SourceRecordCount); this.LogSetWriteStartTime(importDataLogInPatient); Parallel.ForEach(listTrasen_VI_ZY_VINPATIENT, new ParallelOptions { MaxDegreeOfParallelism = this.MaxDegreeOfParallelism }, (itemTrasen_VI_ZY_VINPATIENT, state, index) => { var dbParallel = new PhMS2dot1Domain.Models.PhMS2dot1DomainContext(this.localConnection); var inPatient = dbParallel.InPatients.Where(c => c.Origin_INPATIENT_ID == itemTrasen_VI_ZY_VINPATIENT.INPATIENT_ID).FirstOrDefault(); if (itemTrasen_VI_ZY_VINPATIENT.CANCEL_BIT != 0) { if (isRemoveCancel) { if (inPatient != null) { dbParallel.InPatients.Remove(inPatient); } } } else { if (inPatient == null) { inPatient = new PhMS2dot1Domain.Models.InPatient(); inPatient.InPatientID = itemTrasen_VI_ZY_VINPATIENT.INPATIENT_ID; inPatient.PatientID = itemTrasen_VI_ZY_VINPATIENT.PATIENT_ID; inPatient.CaseNumber = itemTrasen_VI_ZY_VINPATIENT.INPATIENT_NO; inPatient.Times = itemTrasen_VI_ZY_VINPATIENT.TIMES; inPatient.InDate = itemTrasen_VI_ZY_VINPATIENT.IN_DATE.Value; inPatient.OutDate = itemTrasen_VI_ZY_VINPATIENT.OUT_DATE; inPatient.Origin_INPATIENT_ID = itemTrasen_VI_ZY_VINPATIENT.INPATIENT_ID; inPatient.Origin_IN_DEPT = itemTrasen_VI_ZY_VINPATIENT.IN_DEPT; inPatient.Origin_DEPT_ID = itemTrasen_VI_ZY_VINPATIENT.DEPT_ID; dbParallel.InPatients.Add(inPatient); dbParallel.SaveChanges(); } else { if (isUpdateExist) { inPatient.PatientID = itemTrasen_VI_ZY_VINPATIENT.PATIENT_ID; inPatient.CaseNumber = itemTrasen_VI_ZY_VINPATIENT.INPATIENT_NO; inPatient.Times = itemTrasen_VI_ZY_VINPATIENT.TIMES; inPatient.InDate = itemTrasen_VI_ZY_VINPATIENT.IN_DATE.Value; inPatient.OutDate = itemTrasen_VI_ZY_VINPATIENT.OUT_DATE; inPatient.Origin_IN_DEPT = itemTrasen_VI_ZY_VINPATIENT.IN_DEPT; inPatient.Origin_DEPT_ID = itemTrasen_VI_ZY_VINPATIENT.DEPT_ID; dbParallel.SaveChanges(); } } } }); this.LogSetWriteEndTime(importDataLogInPatient); #endregion //==完成== #region "完成" this.LogSave(importDataLogPatient); this.LogSave(importDataLogInPatient); Console.WriteLine("Finish Get GetPatienstAndInPatients:{0} To {1}.", start, end); #endregion }
/// <summary> /// 获取门诊处方。 /// </summary> /// <param name="start">时段起点(闭区间)。</param> /// <param name="end">时段终点(开区间)。</param> /// <param name="isUpdateExists">是否更新已有记录。</param> /// <remarks>存在部分“创新”中的处方表记录无法对应挂号记录的记录,目前以忽略处理。</remarks> public void GetOutPatientPrescriptions(DateTime start, DateTime end, bool isUpdateExists = false) { //==初始化== #region 初始化 var importDataLog = new PhMS2dot1Domain.Models.ImportDataLog(); this.LogInitial(importDataLog, "Trasen", "VI_MZ_CFB", "OutPatientPrescriptions", start, end); this.LogAppendRemarks(importDataLog, string.Format("MethodName=GetOutPatientPrescriptions. IsUpdateExists={0}. ", isUpdateExists)); #endregion //==对创新取数== #region "对创新取数" var dbTrasen = new TrasenDbContext(this.trasenConnection); var queryTrasenVI_MZ_CFB = dbTrasen.VI_MZ_CFB.Where(c => start <= c.SFRQ && c.SFRQ < end); //(取创新中的原数据的可选筛选条件,暂无) this.LogSetReadStartTime(importDataLog); var listTrasenVI_MZ_CFB = queryTrasenVI_MZ_CFB.ToList(); this.LogSetReadEndTime(importDataLog); this.LogSetSourceRecordCount(importDataLog, listTrasenVI_MZ_CFB.Count()); #endregion //==处理OutPatientPrescriptions== #region "处理OutPatientPrescriptions" this.LogSetSuccessImportRecordCount(importDataLog, (int)importDataLog.SourceRecordCount); this.LogSetWriteStartTime(importDataLog); Parallel.ForEach(listTrasenVI_MZ_CFB, new ParallelOptions { MaxDegreeOfParallelism = this.MaxDegreeOfParallelism }, (itemTrasenVI_MZ_CFB, state, index) => { var dbParallel = new PhMS2dot1Domain.Models.PhMS2dot1DomainContext(this.localConnection); var outPatientPrescription = dbParallel.OutPatientPrescriptions.Where(c => c.Origin_CFID == itemTrasenVI_MZ_CFB.CFID).FirstOrDefault(); if (outPatientPrescription == null) { //检测父节点 if (!dbParallel.OutPatients.Where(c => c.OutPatientID == itemTrasenVI_MZ_CFB.GHXXID.Value).Any()) { this.LogAppendErrorMessage(importDataLog, "Failded Insert OutPatientPrescription: index:" + index + ", OutPatientPrescriptionID:" + itemTrasenVI_MZ_CFB.CFID + ". "); } else { outPatientPrescription = new PhMS2dot1Domain.Models.OutPatientPrescription(); outPatientPrescription.OutPatientPrescriptionID = itemTrasenVI_MZ_CFB.CFID; outPatientPrescription.OutPatientID = itemTrasenVI_MZ_CFB.GHXXID.Value; outPatientPrescription.Origin_CFID = itemTrasenVI_MZ_CFB.CFID; outPatientPrescription.ChargeTime = itemTrasenVI_MZ_CFB.SFRQ.Value; outPatientPrescription.Origin_KSDM = itemTrasenVI_MZ_CFB.KSDM; outPatientPrescription.Origin_YSDM = itemTrasenVI_MZ_CFB.YSDM; dbParallel.OutPatientPrescriptions.Add(outPatientPrescription); dbParallel.SaveChanges(); } } else { if (isUpdateExists) { outPatientPrescription.OutPatientID = itemTrasenVI_MZ_CFB.GHXXID.Value; outPatientPrescription.ChargeTime = itemTrasenVI_MZ_CFB.SFRQ.Value; outPatientPrescription.Origin_KSDM = itemTrasenVI_MZ_CFB.KSDM; outPatientPrescription.Origin_YSDM = itemTrasenVI_MZ_CFB.YSDM; dbParallel.SaveChanges(); } } }); this.LogSetWriteEndTime(importDataLog); #endregion //==完成== #region "完成" this.LogSave(importDataLog); Console.WriteLine("Finish Get OutPatientPrescriptions:{0} To {1}.", start, end); #endregion }
/// <summary> /// 获取门诊病例,并同时获取病人。 /// </summary> /// <param name="start">时段起点(闭区间)。</param> /// <param name="end">时段终点(开区间)。</param> /// <param name="isUpdateExist">是否更新已有记录。</param> /// <remarks>病人为住院、门诊共用。</remarks> public void GetPatientsAndOutPatients(DateTime start, DateTime end, bool isUpdateExist = false) { //==初始化== #region 初始化 var importDataLogPatient = new PhMS2dot1Domain.Models.ImportDataLog(); var importDataLogOutPatient = new PhMS2dot1Domain.Models.ImportDataLog(); this.LogInitial(importDataLogPatient, "Trasen", "VI_MZ_GHXX", "Patients", start, end); this.LogInitial(importDataLogOutPatient, "Trasen", "VI_MZ_GHXX", "OutPatients", start, end); this.LogAppendRemarks(importDataLogPatient, string.Format("MethodName=GetPatientsAndOutPatients. IsUpdateExists={0}. ", isUpdateExist)); this.LogAppendRemarks(importDataLogOutPatient, string.Format("MethodName=GetPatientsAndOutPatients. IsUpdateExists={0}. ", isUpdateExist)); #endregion //==对创新取数== #region 对创新取数 var dbTrasen = new TrasenDbContext(this.trasenConnection); var queryTrasenVI_MZ_GHXX = dbTrasen.VI_MZ_GHXX.Where(c => (start <= c.GHDJSJ && c.GHDJSJ < end) || (c.QXGHSJ.HasValue && start <= c.QXGHSJ && c.QXGHSJ < end)); //(取创新中的原数据的可选筛选条件,暂无) this.LogSetReadStartTime(importDataLogPatient); this.LogSetReadStartTime(importDataLogOutPatient); var listTrasen_VI_MZ_GHXX = queryTrasenVI_MZ_GHXX.ToList(); var listTrasen_VI_MZ_GHXX_Distinct = listTrasen_VI_MZ_GHXX.Distinct(new Infrastructure.VI_MZ_GHXX_Comparer()).ToList(); this.LogSetReadEndTime(importDataLogPatient); this.LogSetReadEndTime(importDataLogOutPatient); this.LogSetSourceRecordCount(importDataLogPatient, listTrasen_VI_MZ_GHXX_Distinct.Count()); this.LogSetSourceRecordCount(importDataLogOutPatient, listTrasen_VI_MZ_GHXX.Count()); #endregion //==处理Patients== #region 处理Patients this.LogSetSuccessImportRecordCount(importDataLogPatient, (int)importDataLogPatient.SourceRecordCount); this.LogSetWriteStartTime(importDataLogPatient); Parallel.ForEach(listTrasen_VI_MZ_GHXX_Distinct, new ParallelOptions { MaxDegreeOfParallelism = this.MaxDegreeOfParallelism }, (itemTrasen_VI_MZ_GHXX, state, index) => { //-读取时间未累积- var dbTrasenParallel = new TrasenDbContext(this.trasenConnection); var itemTrasen_VI_YY_BRXX = dbTrasenParallel.VI_YY_BRXX.Where(c => c.BRXXID == itemTrasen_VI_MZ_GHXX.BRXXID).First(); var dbParallel = new PhMS2dot1Domain.Models.PhMS2dot1DomainContext(this.localConnection); var patient = dbParallel.Patients.Where(c => c.Origin_PATIENT_ID == itemTrasen_VI_MZ_GHXX.BRXXID).FirstOrDefault(); if (patient == null) { patient = new PhMS2dot1Domain.Models.Patient(); patient.PatientID = itemTrasen_VI_MZ_GHXX.BRXXID.Value; patient.Origin_PATIENT_ID = itemTrasen_VI_MZ_GHXX.BRXXID.Value; patient.PatientName = itemTrasen_VI_YY_BRXX.BRXM; patient.BirthDate = itemTrasen_VI_YY_BRXX.CSRQ; dbParallel.Patients.Add(patient); dbParallel.SaveChanges(); } else { if (isUpdateExist) { patient.PatientName = itemTrasen_VI_YY_BRXX.BRXM; patient.BirthDate = itemTrasen_VI_YY_BRXX.CSRQ; } } }); this.LogSetWriteEndTime(importDataLogPatient); #endregion //==处理OutPatients== #region 处理OutPatients this.LogSetSuccessImportRecordCount(importDataLogOutPatient, (int)importDataLogOutPatient.SourceRecordCount); this.LogSetWriteStartTime(importDataLogOutPatient); Parallel.ForEach(listTrasen_VI_MZ_GHXX, new ParallelOptions { MaxDegreeOfParallelism = this.MaxDegreeOfParallelism }, (itemTrasen_VI_MZ_GHXX, state, index) => { var dbParallel = new PhMS2dot1Domain.Models.PhMS2dot1DomainContext(this.localConnection); var outPatient = dbParallel.OutPatients.Where(c => c.Origin_GHXXID == itemTrasen_VI_MZ_GHXX.GHXXID).FirstOrDefault(); if (outPatient == null) { outPatient = new PhMS2dot1Domain.Models.OutPatient(); outPatient.OutPatientID = itemTrasen_VI_MZ_GHXX.GHXXID; outPatient.PatientID = itemTrasen_VI_MZ_GHXX.BRXXID.Value; outPatient.Origin_GHXXID = itemTrasen_VI_MZ_GHXX.GHXXID; outPatient.Origin_GHLB = itemTrasen_VI_MZ_GHXX.GHLB; outPatient.ChargeTime = itemTrasen_VI_MZ_GHXX.GHDJSJ.Value; outPatient.CancelChargeTime = itemTrasen_VI_MZ_GHXX.QXGHSJ; dbParallel.OutPatients.Add(outPatient); dbParallel.SaveChanges(); } else { if (isUpdateExist) { outPatient.Origin_GHLB = itemTrasen_VI_MZ_GHXX.GHLB; outPatient.ChargeTime = itemTrasen_VI_MZ_GHXX.GHDJSJ.Value; outPatient.CancelChargeTime = itemTrasen_VI_MZ_GHXX.QXGHSJ; outPatient.PatientID = itemTrasen_VI_MZ_GHXX.BRXXID.Value; dbParallel.SaveChanges(); } } }); this.LogSetWriteEndTime(importDataLogOutPatient); #endregion //==完成== #region "完成" this.LogSave(importDataLogPatient); this.LogSave(importDataLogOutPatient); Console.WriteLine("Finish Get GetPatientsAndOutPatients:{0} To {1}.", start, end); #endregion }
/// <summary> /// 获取住院费用记录。 /// </summary> /// <param name="start">时段起点(闭区间)。</param> /// <param name="end">时段终点(开区间)。</param> /// <param name="isRemoveDelete">指定是否将DELETE_BIT为1的记录在本地删除。</param> /// <param name="isContainNullOutDate">是否包含未出院记录。</param> /// <param name="isUpdateExists">是否更新已存在记录。</param> public void GetDrugFee(DateTime start, DateTime end, bool isRemoveDelete = true, bool isContainNullOutDate = false, bool isUpdateExists = true) { var db = new PhMS2dot1Domain.Models.PhMS2dot1DomainContext(this.localConnection); var dbTrasen = new TrasenDbContext(this.trasenConnection); //取InPatients。 var queryInPatients = db.InPatients.Where(c => start <= c.OutDate && c.OutDate < end); if (isContainNullOutDate) { queryInPatients = queryInPatients.Union(db.InPatients.Where(c => !c.OutDate.HasValue)); } var listInPatient = queryInPatients.ToList(); foreach (var itemInPatient in listInPatient) { //预先获取InPatient相关的DrugFee,方便取数。 var listDrugFee = db.DrugFees.Where(c => c.InPatientDrugRecord.InPatientID == itemInPatient.InPatientID).ToList(); //取对应的VI_ZY_FEE_SPECI。 var listTrasen_VI_ZY_FEE_SPECI = dbTrasen.VI_ZY_FEE_SPECI.Where(c => c.INPATIENT_ID == itemInPatient.InPatientID && c.XMLY == 1 && c.ORDER_ID != new Guid("00000000-0000-0000-0000-000000000000")).ToList(); foreach (var itemVI_ZY_FEE_SPECI in listTrasen_VI_ZY_FEE_SPECI) { if (itemVI_ZY_FEE_SPECI.DELETE_BIT == 1) { if (isRemoveDelete) { var drugFee = db.DrugFees.Where(c => c.Origin_ID == itemVI_ZY_FEE_SPECI.ID).FirstOrDefault(); if (drugFee != null) { db.DrugFees.Remove(drugFee); db.SaveChanges(); } } } else { var drugFee = listDrugFee.Where(c => c.Origin_ID == itemVI_ZY_FEE_SPECI.ID).FirstOrDefault(); if (drugFee == null) { drugFee = new PhMS2dot1Domain.Models.DrugFee(); drugFee.DrugFeeID = itemVI_ZY_FEE_SPECI.ID; drugFee.InPatientDrugRecordID = itemVI_ZY_FEE_SPECI.ORDER_ID; drugFee.UnitPrice = itemVI_ZY_FEE_SPECI.COST_PRICE; drugFee.Quantity = itemVI_ZY_FEE_SPECI.NUM; drugFee.ActualPrice = itemVI_ZY_FEE_SPECI.ACVALUE; drugFee.ChargeTime = itemVI_ZY_FEE_SPECI.CHARGE_DATE.Value; drugFee.Origin_ID = itemVI_ZY_FEE_SPECI.ID; drugFee.Origin_Unit = itemVI_ZY_FEE_SPECI.UNIT; db.DrugFees.Add(drugFee); } else { if (isUpdateExists) { drugFee.InPatientDrugRecordID = itemVI_ZY_FEE_SPECI.ORDER_ID; drugFee.UnitPrice = itemVI_ZY_FEE_SPECI.COST_PRICE; drugFee.Quantity = itemVI_ZY_FEE_SPECI.NUM; drugFee.ActualPrice = itemVI_ZY_FEE_SPECI.ACVALUE; drugFee.ChargeTime = itemVI_ZY_FEE_SPECI.CHARGE_DATE.Value; drugFee.Origin_ID = itemVI_ZY_FEE_SPECI.ID; drugFee.Origin_Unit = itemVI_ZY_FEE_SPECI.UNIT; } } } } db.SaveChanges(); } }
/// <summary> /// 获取住院用药记录。 /// </summary> /// <param name="start">时段起点(闭区间)。</param> /// <param name="end">时段终点(开区间)。</param> /// <param name="isContainNullOutDate">是否包含未出院记录。</param> /// <param name="isUpdateExists">是否更新已存在记录。</param> public void GetInPatientDrugRecords(DateTime start, DateTime end, bool isContainNullOutDate = false, bool isUpdateExists = false) { //==初始化== #region 初始化 var importDataLog = new PhMS2dot1Domain.Models.ImportDataLog(); this.LogInitial(importDataLog, "Trasen", "VI_ZY_ORDERRECORD, YP_YPCJD, YP_YPGGD", "InPatientDrugRecords", start, end); this.LogAppendRemarks(importDataLog, string.Format("MethodName=GetInPatientDrugRecords. isContainNullOutDate={0}. isUpdateExists={1}. (无法精确计算时间点)", isContainNullOutDate, isUpdateExists)); #endregion this.LogSetReadStartTime(importDataLog); this.LogSetWriteStartTime(importDataLog); int sourceRecordCount = 0; var dbTrasen = new TrasenDbContext(this.trasenConnection); var db = new PhMS2dot1Domain.Models.PhMS2dot1DomainContext(this.localConnection); //预先获取整个表,方便取数。 var listYP_YPCJD = dbTrasen.YP_YPCJD.ToList(); var listYP_YPGGD = dbTrasen.YP_YPGGD.Where(c => !c.BDELETE).ToList(); //取InPatients。 var queryInPatients = db.InPatients.Where(c => start <= c.OutDate && c.OutDate < end); if (isContainNullOutDate) { queryInPatients = queryInPatients.Union(db.InPatients.Where(c => !c.OutDate.HasValue)); } var listInPatients = queryInPatients.ToList(); foreach (var itemInPatient in listInPatients) { //预先获取InPatient相关的InPatientDrugRecord,方便取数。 var listInPatientDrugRecord = itemInPatient.InPatientDrugRecords.ToList(); //取对应的VI_ZY_ORDERRECORD。 var listTrasen_VI_ZY_ORDERRECORD = dbTrasen.VI_ZY_ORDERRECORD.Where(c => c.INPATIENT_ID == itemInPatient.Origin_INPATIENT_ID && c.XMLY == 1 && c.HOITEM_ID != -1).ToList(); sourceRecordCount += listTrasen_VI_ZY_ORDERRECORD.Count(); foreach (var itemVI_ZY_ORDERRECORD in listTrasen_VI_ZY_ORDERRECORD) { //关联的实例。 var objectYP_YPCJD = listYP_YPCJD.Where(c => c.CJID == itemVI_ZY_ORDERRECORD.HOITEM_ID).First(); var objectYP_YPGGD = listYP_YPGGD.Where(c => c.GGID == objectYP_YPCJD.GGID).First(); //获取是否已存在InPatientDrugRecord。 var inPatientDrugRecord = listInPatientDrugRecord.Where(c => c.Origin_ORDER_ID.Value == itemVI_ZY_ORDERRECORD.ORDER_ID).FirstOrDefault(); if (inPatientDrugRecord == null) { inPatientDrugRecord = new PhMS2dot1Domain.Models.InPatientDrugRecord(); inPatientDrugRecord.InPatientDrugRecordID = itemVI_ZY_ORDERRECORD.ORDER_ID; inPatientDrugRecord.InPatientID = itemVI_ZY_ORDERRECORD.INPATIENT_ID; inPatientDrugRecord.ProductName = objectYP_YPCJD.S_YPPM; inPatientDrugRecord.IsEssential = objectYP_YPGGD.GJJBYW.Value; inPatientDrugRecord.DosageForm = objectYP_YPGGD.YPGG; inPatientDrugRecord.DDD = objectYP_YPGGD.DDD.Value; inPatientDrugRecord.Origin_ORDER_ID = itemVI_ZY_ORDERRECORD.ORDER_ID; inPatientDrugRecord.Origin_EXEC_DEPT = itemVI_ZY_ORDERRECORD.EXEC_DEPT; inPatientDrugRecord.Origin_ORDER_DOC = itemVI_ZY_ORDERRECORD.ORDER_DOC; inPatientDrugRecord.Origin_KSSDJID = objectYP_YPGGD.KSSDJID; inPatientDrugRecord.Origin_CJID = objectYP_YPCJD.CJID; inPatientDrugRecord.Origin_ORDER_USAGE = itemVI_ZY_ORDERRECORD.ORDER_USAGE; inPatientDrugRecord.EffectiveConstituentAmount = objectYP_YPGGD.DDDJL.HasValue ? objectYP_YPGGD.DDDJL.Value : objectYP_YPGGD.HLXS; inPatientDrugRecord.IsWesternMedicine = itemVI_ZY_ORDERRECORD.NTYPE == 1; inPatientDrugRecord.IsChinesePatentMedicine = itemVI_ZY_ORDERRECORD.NTYPE == 2; inPatientDrugRecord.IsTraditionalChineseMedicine = itemVI_ZY_ORDERRECORD.NTYPE == 3; db.InPatientDrugRecords.Add(inPatientDrugRecord); db.SaveChanges(); } else { if (isUpdateExists) { inPatientDrugRecord.InPatientID = itemVI_ZY_ORDERRECORD.INPATIENT_ID; inPatientDrugRecord.ProductName = objectYP_YPCJD.S_YPPM; inPatientDrugRecord.IsEssential = objectYP_YPGGD.GJJBYW.Value; inPatientDrugRecord.DosageForm = objectYP_YPGGD.YPGG; inPatientDrugRecord.DDD = objectYP_YPGGD.DDD.Value; inPatientDrugRecord.Origin_EXEC_DEPT = itemVI_ZY_ORDERRECORD.EXEC_DEPT; inPatientDrugRecord.Origin_ORDER_DOC = itemVI_ZY_ORDERRECORD.ORDER_DOC; inPatientDrugRecord.Origin_KSSDJID = objectYP_YPGGD.KSSDJID; inPatientDrugRecord.Origin_CJID = objectYP_YPCJD.CJID; inPatientDrugRecord.Origin_ORDER_USAGE = itemVI_ZY_ORDERRECORD.ORDER_USAGE; inPatientDrugRecord.EffectiveConstituentAmount = objectYP_YPGGD.DDDJL.HasValue ? objectYP_YPGGD.DDDJL.Value : objectYP_YPGGD.HLXS; inPatientDrugRecord.IsWesternMedicine = itemVI_ZY_ORDERRECORD.NTYPE == 1; inPatientDrugRecord.IsChinesePatentMedicine = itemVI_ZY_ORDERRECORD.NTYPE == 2; inPatientDrugRecord.IsTraditionalChineseMedicine = itemVI_ZY_ORDERRECORD.NTYPE == 3; db.SaveChanges(); } } } } this.LogSetReadEndTime(importDataLog); this.LogSetWriteEndTime(importDataLog); this.LogSetSourceRecordCount(importDataLog, sourceRecordCount); this.LogSetSuccessImportRecordCount(importDataLog, sourceRecordCount); this.LogSave(importDataLog); Console.WriteLine("Finish Get GetInPatientDrugRecords:{0} To {1}.", start, end); }
/// <summary> /// 刷新。 /// </summary> /// <param name="rescueRoomInfoId">归属的抢救室病例ID。</param> public ActionResult Refresh(Guid rescueRoomInfoId) { var db = new EiSDbContext(); var dbTrasen = new TrasenDbContext("TrasenConnection"); var target = db.RescueRoomInfos.Find(rescueRoomInfoId); if (target == null) { return(HttpNotFound()); } //设置时段起点、结点 DateTime?timeUpperBound; DateTime?timeLowerBound; { timeUpperBound = target.ReceiveTime; var itemJZJL = dbTrasen.MZYS_JZJL.Where(c => c.JZID == target.JZID).FirstOrDefault(); timeLowerBound = itemJZJL.WCSJ; } //==获取指定GHXXID的“处方表”记录。== var queryCFB = dbTrasen.VI_MZ_CFB.Where(c => c.GHXXID == target.GHXXID); //设置时段起点 queryCFB = queryCFB.Where(c => timeUpperBound <= c.SFRQ); //设置时段结点 if (timeLowerBound.HasValue) { queryCFB = queryCFB.Where(c => c.SFRQ <= timeLowerBound.Value);//该结点边界特殊,使用闭区间——结束的瞬间可能同时有医嘱。 } var listCFB = queryCFB.ToList(); foreach (var itemCFB in listCFB) { //获取指定CFID的“处方表明细”记录。 var queryCFBMX = dbTrasen.VI_MZ_CFB_MX.Where(c => c.CFID == itemCFB.CFID); var listCFBMX = queryCFBMX.ToList(); foreach (var itemCFBMX in listCFBMX) { if (db.RescueRoomDrugRecordDefinitions.Any(c => c.DrugCode == itemCFBMX.BM)) { //判断是新增的药品还是退费的药品 if (!itemCFBMX.TYID.HasValue) { var rescueRoomDrugRecord = db.RescueRoomDrugRecords.Where(c => c.CFMXID == itemCFBMX.CFMXID).FirstOrDefault(); if (rescueRoomDrugRecord == null) { rescueRoomDrugRecord = new RescueRoomDrugRecord(); rescueRoomDrugRecord.RescueRoomDrugRecordId = Guid.NewGuid(); rescueRoomDrugRecord.RescueRoomInfoId = target.RescueRoomInfoId; rescueRoomDrugRecord.ProductCode = itemCFBMX.BM; rescueRoomDrugRecord.ProductName = itemCFBMX.PM; rescueRoomDrugRecord.GoodsName = itemCFBMX.SPM; rescueRoomDrugRecord.DosageQuantity = itemCFBMX.YL; rescueRoomDrugRecord.DosageUnit = itemCFBMX.YLDW; rescueRoomDrugRecord.PrescriptionTime = itemCFB.SFRQ; rescueRoomDrugRecord.Usage = itemCFBMX.YFMC; rescueRoomDrugRecord.CFMXID = itemCFBMX.CFMXID; rescueRoomDrugRecord.CFID = itemCFBMX.CFID; rescueRoomDrugRecord.UpdateTime = DateTime.Now; db.RescueRoomDrugRecords.Add(rescueRoomDrugRecord); db.SaveChanges(); } else { rescueRoomDrugRecord.RescueRoomInfoId = target.RescueRoomInfoId; rescueRoomDrugRecord.ProductCode = itemCFBMX.BM; rescueRoomDrugRecord.ProductName = itemCFBMX.PM; rescueRoomDrugRecord.GoodsName = itemCFBMX.SPM; rescueRoomDrugRecord.DosageQuantity = itemCFBMX.YL; rescueRoomDrugRecord.DosageUnit = itemCFBMX.YLDW; rescueRoomDrugRecord.PrescriptionTime = itemCFB.SFRQ; rescueRoomDrugRecord.Usage = itemCFBMX.YFMC; rescueRoomDrugRecord.CFMXID = itemCFBMX.CFMXID; rescueRoomDrugRecord.CFID = itemCFBMX.CFID; db.SaveChanges(); } } else { var rescueRoomDrugRecord = db.RescueRoomDrugRecords.Where(c => c.CFMXID == itemCFBMX.TYID.Value).FirstOrDefault(); if (rescueRoomDrugRecord != null) { rescueRoomDrugRecord.DosageQuantity -= itemCFBMX.YL; if (rescueRoomDrugRecord.DosageQuantity == 0) { db.RescueRoomDrugRecords.Remove(rescueRoomDrugRecord); } db.SaveChanges(); } else { throw new Exception("无对应原始处方明细记录。"); } } } } } //删除处方时间早于时段起点的用药项 if (timeUpperBound.HasValue) { var listRescueRoomDrugRecord = db.RescueRoomDrugRecords.Where(c => c.RescueRoomInfoId == target.RescueRoomInfoId && c.PrescriptionTime < timeUpperBound).ToList(); db.RescueRoomDrugRecords.RemoveRange(listRescueRoomDrugRecord); db.SaveChanges(); } //删除处方时间超过时段结点的用药项 if (timeLowerBound.HasValue) { var listRescueRoomDrugRecord = db.RescueRoomDrugRecords.Where(c => c.RescueRoomInfoId == target.RescueRoomInfoId && timeLowerBound < c.PrescriptionTime).ToList(); db.RescueRoomDrugRecords.RemoveRange(listRescueRoomDrugRecord); db.SaveChanges(); } //删除编码在定义外的用药项 if (true) { var listRescueRoomDrugRecord = db.RescueRoomDrugRecords.ToList(); var listRescueRoomDrugRecordDefinition = db.RescueRoomDrugRecordDefinitions.Where(c => c.GreenPathCode == "Ami").ToList(); foreach (var itemRescueRoomDrugRecord in listRescueRoomDrugRecord) { if (!listRescueRoomDrugRecordDefinition.Any(c => c.DrugCode == itemRescueRoomDrugRecord.ProductCode)) { db.RescueRoomDrugRecords.Remove(itemRescueRoomDrugRecord); } } db.SaveChanges(); } return(RedirectToAction("IndexPartial", new { rescueRoomInfoId })); }