using HL_FristAidPlatform_Help; using HL_FristAidPlatform_IDataBase; using HL_FristAidPlatform_Models; using Newtonsoft.Json; using SqlSugar; using System; using System.Collections.Generic; using System.Data; using System.Globalization; namespace HL_FristAidPlatform_DataBase { public class T_Service_ChestPain_PatientsTimeAxisDB : BaseDB, IT_Service_ChestPain_PatientsTimeAxis { public SqlSugarClient db = GetClient(); #region 增 /// /// 批量新增 根据病人编号新增所有时间节点业务记录 /// /// 必须传病人编号+所属系统模块编号 /// public bool Add(T_Service_ChestPain_PatientsTimeAxis model) { //增加对应模块的时间节点记录业务 且排除已存在的记录 string Url = string.Format("SELECT ID FROM T_Base_TimeAxis WHERE SystemModuleID={0} AND IsDisplayTimeAxis=0 AND DeleteFlag=0 AND ID NOT IN(SELECT TimeAxisID FROM T_Service_ChestPain_PatientsTimeAxis WHERE PatientGuid='{1}' AND DeleteFlag=0) ORDER BY OrderBy", model.SystemModuleID, model.PatientGuid); DataTable dataTable = db.Ado.GetDataTable(Url); int number = 0; if (dataTable.Rows.Count > 0) { foreach (DataRow item in dataTable.Rows) { T_Service_ChestPain_PatientsTimeAxis InsertModel = new T_Service_ChestPain_PatientsTimeAxis(); InsertModel.GUID = Guid.NewGuid().ToString(); InsertModel.PatientGuid = model.PatientGuid; InsertModel.TimeAxisID = Convert.ToInt32(item["ID"] + ""); InsertModel.DeleteFlag = 0; InsertModel.IsAutoForRFID = 0; InsertModel.SystemModuleID = model.SystemModuleID; number = db.Insertable(InsertModel).InsertColumns(it => new { it.GUID, it.PatientGuid, it.TimeAxisID, it.DeleteFlag, it.IsAutoForRFID, it.SystemModuleID }).ExecuteReturnIdentity(); } } return number > 0 ? true : false; } /// /// 直接新增有值的数据 /// /// /// public bool DirectAdd(T_Service_ChestPain_PatientsTimeAxis model) { return db.Insertable(model).ExecuteCommand() == 0 ? false : true; } #endregion #region 删 public bool Dels(string GUID) { return db.Deleteable().Where(it => it.GUID == GUID).ExecuteCommand() == 0 ? false : true; } public bool DeleteForPatientGuid(string GUID) { return db.Deleteable().Where(it => it.PatientGuid == GUID).ExecuteCommand() == 0 ? false : true; } #endregion #region 改 public bool Update(T_Service_ChestPain_PatientsTimeAxis menu) { return db.Updateable(menu).ExecuteCommand() == 0 ? false : true; } /// /// 根据病人编号和时间节点编号更改记录时间 /// 用于快速扫码记录 /// /// 病人编号 /// 时间节点编号 /// 操作时间 /// public bool UpdateRecordingTimeByPatientIDAndTimeAxisID(string patientGuid, long timeAxisID, string recordingTime) { int InfluenceNumber = 0; try { InfluenceNumber = db.Updateable().SetColumns(it => new T_Service_ChestPain_PatientsTimeAxis() { RecordingTime = recordingTime }).Where(it => it.PatientGuid == patientGuid && it.TimeAxisID == timeAxisID).ExecuteCommand(); } catch (Exception) { } return InfluenceNumber > 0 ? true : false; } /// /// 根据病人编号和时间节点编号更改参考正常时间 /// /// 病人编号 /// /// /// public bool UpdateNormalTime(string patientGuid, long timeAxisID, string normalTime) { int InfluenceNumber = db.Updateable().SetColumns(it => new T_Service_ChestPain_PatientsTimeAxis() { NormalTime = normalTime }).Where(it => it.PatientGuid == patientGuid && it.TimeAxisID == timeAxisID).ExecuteCommand(); return InfluenceNumber > 0 ? true : false; } /// /// 根据病人编号和时间节点编号更改记录时间 /// 用于移动端 /// /// 患者编号 /// 时间节点编号 /// 记录时间,为空时表示删除以前的记录值 /// public bool UpdateRecordingTimeForApp(string patientGuid, long timeAxisID, string recordingTime) { string sql = string.Format("EXEC Update_TimeAxis_RecordingTime '{0}',{1},'{2}'", patientGuid, timeAxisID, recordingTime); return db.Ado.ExecuteCommand(sql) > 0 ? true : false; } #endregion #region 查 public T_Service_ChestPain_PatientsTimeAxis Get(string ID) { return db.Queryable().First(it => it.GUID == ID); } public TableModel GetPageList(int pageIndex, int pageSize) { int total = 0; List data = db.Queryable().ToPageList(pageIndex, pageSize, ref total); TableModel t = new TableModel(); t.Code = 0; t.PageCount = data.Count; t.TotalNumber = total; t.Data = data; t.Msg = "成功"; return t; } /// /// 获取患者列表--分页 /// /// 起始页 /// 每页大小 /// 所属院区GUID /// 所属模块ID /// 开始时间(创建) /// 结束时间(创建) /// 急救状态:-1全部 0未结束(对应急救中0+住院中1) 1已结束(对应已转归2) /// 来院方式代码 0:未选择;参考字典表T_Base_HospitalMode /// 出车单位代码0:未选择;1:120救护车;2:本院救护车;3:外院救护车 /// 初步诊断0:未选择,参考字典表T_Base_PreliminaryDiagnosis /// 关键词 /// /// public TableModel GetPatientsTime(int pageIndex, int pageSize, string hospitalGuid, long systemModuleID, string startTime, string endTime, int state, int hospitalMode, int vehicleoutUnit, int preliminaryDiagnosis, string keyWord) { int TotalNumber = 0; TableModel t = new TableModel(); try { var listMode = db.Queryable((Patient, Prehospital, FirstMedicalReception, Gender, PreliminaryDiagnosis, Hospital, WristStrap, HospitalMode) => new object[] { JoinType.Left,Patient.GUID == Prehospital.PatientGuid, JoinType.Left,Patient.GUID == FirstMedicalReception.PatientGuid, JoinType.Left,Patient.Gender == Gender.GenderCode, JoinType.Left,Prehospital.PreliminaryDiagnosis == PreliminaryDiagnosis.ID, JoinType.Left,Patient.HospitalGuid == Hospital.GUID, JoinType.Left,Patient.WristStrapID == WristStrap.ID, JoinType.Left,Prehospital.HospitalMode.ToString() == HospitalMode.Value & HospitalMode.SystemModuleID == systemModuleID, }) .Where((Patient, Prehospital, FirstMedicalReception, Gender, PreliminaryDiagnosis, Hospital, WristStrap, HospitalMode) => SqlFunc.Between(Patient.RegisterTime, startTime, endTime) && Patient.SystemModuleID == systemModuleID && Patient.DeleteFlag == 0) .WhereIF(!string.IsNullOrEmpty(hospitalGuid), (Patient, Prehospital, FirstMedicalReception, Gender, PreliminaryDiagnosis, Hospital, WristStrap, HospitalMode) => Patient.HospitalGuid == hospitalGuid) .WhereIF(state == 0, (Patient, Prehospital, FirstMedicalReception, Gender, PreliminaryDiagnosis, Hospital, WristStrap, HospitalMode) => Patient.EmergencyState == 0 || Patient.EmergencyState == 1) .WhereIF(state == 1, (Patient, Prehospital, FirstMedicalReception, Gender, PreliminaryDiagnosis, Hospital, WristStrap, HospitalMode) => Patient.EmergencyState == 2) .WhereIF(hospitalMode > 0, (Patient, Prehospital, FirstMedicalReception, Gender, PreliminaryDiagnosis, Hospital, WristStrap, HospitalMode) => Prehospital.HospitalMode == hospitalMode) .WhereIF(vehicleoutUnit > 0, (Patient, Prehospital, FirstMedicalReception, Gender, PreliminaryDiagnosis, Hospital, WristStrap, HospitalMode) => Prehospital.Vehicleout_Unit == vehicleoutUnit) .WhereIF(preliminaryDiagnosis > 0, (Patient, Prehospital, FirstMedicalReception, Gender, PreliminaryDiagnosis, Hospital, WristStrap, HospitalMode) => Prehospital.PreliminaryDiagnosis == preliminaryDiagnosis) .WhereIF(!string.IsNullOrEmpty(keyWord), (Patient, Prehospital, FirstMedicalReception, Gender, PreliminaryDiagnosis, Hospital, WristStrap, HospitalMode) => Patient.Name.Contains(keyWord) || Patient.PymCode.Contains(keyWord) || Patient.WbmCode.Contains(keyWord) || Patient.CustomCode.Contains(keyWord) || Patient.MobilePhone.Contains(keyWord) || Patient.IdentityCard.Contains(keyWord) || Patient.Address.Contains(keyWord) || Patient.OutpatientNumber.Contains(keyWord) || Patient.AdmissionNumber.Contains(keyWord)) .Select((Patient, Prehospital, FirstMedicalReception, Gender, PreliminaryDiagnosis, Hospital, WristStrap, HospitalMode) => new ViewModel_PatientsList { ID = Patient.ID, GUID = Patient.GUID, Name = Patient.Name, Gender = Patient.Gender, GenderName = Gender.GenderName, Age = Patient.Age, EmergencyState = Patient.EmergencyState, EmergencyStateCase = Patient.EmergencyState.ToString(), Nation = Patient.Nation, MobilePhone = Patient.MobilePhone, IdentityCard = Patient.IdentityCard, Address = Patient.Address, Attack_Address = Patient.Attack_Address, OutpatientNumber = Patient.OutpatientNumber, AdmissionNumber = Patient.AdmissionNumber, HospitalModeName = HospitalMode.Content, RegisterTime = Patient.RegisterTime, CallHelpTime = Convert.ToDateTime(Prehospital.CallHelpTime), Attack_Time = Prehospital.Attack_Time, First_MC_Time = Convert.ToDateTime(FirstMedicalReception.First_Organization_Time) + "", PreliminaryDiagnosis = PreliminaryDiagnosis.Content, HospitalGuid = Patient.HospitalGuid, HospitalName = Hospital.Name, EqmtNo = Patient.EqmtNo, WardshipId = Patient.WardshipId, WristStrapID = Patient.WristStrapID, WristStrapCode = WristStrap.Code, WristStrapCodeAlias = WristStrap.Alias, Vehicleout_Unit = Prehospital.Vehicleout_Unit.ToString(), Vehicleout_Unit_Name = Prehospital.Vehicleout_Unit_Name, AmbulanceGuid = Patient.AmbulanceGuid, CCPC_State = Patient.CCPC_State, CCPC_StateCase = Patient.CCPC_State.ToString(), CCPC_Register_ID = Patient.CCPC_Register_ID, IsGreenChannel = Patient.IsGreenChannel, PymCode = Patient.PymCode, WbmCode = Patient.WbmCode, CustomCode = Patient.CustomCode, Status = Patient.Status, Give_UP_Treatment = Patient.Give_UP_Treatment, Thrombolysis = Patient.Thrombolysis, Interventional_Therapy = Patient.Interventional_Therapy, Specified_Archiving_Time = Patient.Specified_Archiving_Time, Print_CPTRS_Num = Patient.Print_CPTRS_Num, Print_CPTRS_Person_ID = Patient.Print_CPTRS_Person_ID, Print_CPTRS_Person = Patient.Print_CPTRS_Person, Print_CPTRS_Time = Patient.Print_CPTRS_Time, }).OrderBy((Patient) => Patient.RegisterTime, OrderByType.Desc).ToPageList(pageIndex, pageSize, ref TotalNumber); t.Code = 0; t.PageCount = listMode.Count; t.TotalNumber = TotalNumber; t.Data = listMode; t.Msg = "成功"; } catch (Exception ex) { Help.Info(ex.Message); } return t; } /// /// 获取患者列表--分页 V2.1 /// /// 起始页 /// 每页大小 /// 所属院区GUID集合,包含分园区、网络医院等 /// 所属模块ID /// 开始时间(创建) /// 结束时间(创建) /// 急救状态:-1全部 0未结束(对应急救中0+住院中1) 1已结束(对应已转归2) /// 来院方式代码 "":未选择;参考字典表T_Base_HospitalMode /// 出车单位代码 "":未选择;1:120救护车;2:本院救护车;3:外院救护车 /// 初步诊断 "":未选择,参考字典表T_Base_PreliminaryDiagnosis /// 关键词 /// /// public TableModel GetPatientsTime2(int pageIndex, int pageSize, string hospitalGuid, long systemModuleID, string startTime, string endTime, int state, string coming_Way_Code, string ambulance_Department, string diagnosis_Code, string keyWord, string GreenWay, string IllnessLevel, int status, int ccpcState) { int TotalNumber = 0; TableModel t = new TableModel(); try { var listMode = db.Queryable((Patient, FirstAIDInfo, TreatmentInfo, Gender, Hospital, WristStrap, HospitalMode) => new object[] { JoinType.Left,Patient.GUID == FirstAIDInfo.PatientGuid, JoinType.Left,Patient.GUID == TreatmentInfo.PatientGuid, JoinType.Left,Patient.Gender == Gender.GenderCode, JoinType.Left,Patient.HospitalGuid == Hospital.GUID, JoinType.Left,Patient.WristStrapID == WristStrap.ID, JoinType.Left,HospitalMode.Value ==FirstAIDInfo.CW_Coming_Way_Code && HospitalMode.SystemModuleID == systemModuleID }) .Where((Patient, FirstAIDInfo, TreatmentInfo, Gender, Hospital, WristStrap, HospitalMode) => SqlFunc.Between(Patient.RegisterTime, startTime, endTime) && Patient.HospitalGuid == hospitalGuid && Patient.SystemModuleID == systemModuleID && Patient.DeleteFlag == 0) .WhereIF(state == 0, (Patient, FirstAIDInfo, TreatmentInfo, Gender, Hospital, WristStrap, HospitalMode) => Patient.EmergencyState == 0 || Patient.EmergencyState == 1) .WhereIF(state == 1, (Patient, FirstAIDInfo, TreatmentInfo, Gender, Hospital, WristStrap, HospitalMode) => Patient.EmergencyState == 2) .WhereIF(!string.IsNullOrEmpty(coming_Way_Code), (Patient, FirstAIDInfo, TreatmentInfo, Gender, Hospital, WristStrap, HospitalMode) => FirstAIDInfo.CW_Coming_Way_Code == coming_Way_Code) .WhereIF(!string.IsNullOrEmpty(ambulance_Department), (Patient, FirstAIDInfo, TreatmentInfo, Gender, Hospital, WristStrap, HospitalMode) => FirstAIDInfo.CW_120_Ambulance_Department == ambulance_Department) .WhereIF(!string.IsNullOrEmpty(diagnosis_Code), (Patient, FirstAIDInfo, TreatmentInfo, Gender, Hospital, WristStrap, HospitalMode) => TreatmentInfo.CP_Diagnosis_Code == diagnosis_Code) .WhereIF(status > 0, (Patient, FirstAIDInfo, TreatmentInfo, Gender, Hospital, WristStrap, HospitalMode) => Patient.Status == status) .WhereIF(ccpcState > -1, (Patient, FirstAIDInfo, TreatmentInfo, Gender, Hospital, WristStrap, HospitalMode) => Patient.CCPC_State == ccpcState) .WhereIF(!string.IsNullOrEmpty(GreenWay), (Patient, FirstAIDInfo, TreatmentInfo, Gender, Hospital, WristStrap, HospitalMode) => Patient.IsGreenWay == GreenWay) .WhereIF(!string.IsNullOrEmpty(IllnessLevel), (Patient, FirstAIDInfo, TreatmentInfo, Gender, Hospital, WristStrap, HospitalMode) => Patient.IllnessLevel == IllnessLevel) .WhereIF(!string.IsNullOrEmpty(keyWord), (Patient, FirstAIDInfo, TreatmentInfo, Gender, Hospital, WristStrap, HospitalMode) => Patient.Name.Contains(keyWord) || Patient.PymCode.Contains(keyWord) || Patient.WbmCode.Contains(keyWord) || Patient.CustomCode.Contains(keyWord) || Patient.MobilePhone.Contains(keyWord) || Patient.IdentityCard.Contains(keyWord) || Patient.Address.Contains(keyWord) || Patient.OutpatientNumber.Contains(keyWord) || Patient.AdmissionNumber.Contains(keyWord)) .OrderBy((Patient, FirstAIDInfo, TreatmentInfo, Gender, Hospital, WristStrap, HospitalMode) => Patient.RegisterTime, OrderByType.Desc) .Select((Patient, FirstAIDInfo, TreatmentInfo, Gender, Hospital, WristStrap, HospitalMode) => new ViewModel_PatientsList { ID = Patient.ID, GUID = Patient.GUID, IsForward = Patient.IsForward, Name = Patient.Name, Gender = Patient.Gender, GenderName = Gender.GenderName, Age = Patient.Age, CP_Diagnosis_Code = TreatmentInfo.CP_Diagnosis_Code, EmergencyState = Patient.EmergencyState, EmergencyStateCase = Patient.EmergencyState.ToString(), Nation = Patient.Nation, MobilePhone = Patient.MobilePhone, IdentityCard = Patient.IdentityCard, Address = Patient.Address, Province = Patient.Province, City = Patient.City, Area = Patient.Area, Attack_Address = Patient.Attack_Address, OutpatientNumber = Patient.OutpatientNumber, AdmissionNumber = Patient.AdmissionNumber, HospitalModeName = HospitalMode.Content, RegisterTime = Patient.RegisterTime, CallHelpTime = FirstAIDInfo.CW_120_Help_Time, Is_Null_Attack_Detail_Time = FirstAIDInfo.Is_Null_Attack_Detail_Time, Attack_Time = FirstAIDInfo.Is_Null_Attack_Detail_Time == "1" ? Convert.ToDateTime(FirstAIDInfo.Attack_Time).ToString("yyyy-MM-dd") : Convert.ToDateTime(FirstAIDInfo.Attack_Time).ToString("yyyy-MM-dd HH:mm"), First_MC_Time = SqlFunc.Subqueryable().Where(s => s.PatientGuid == Patient.GUID && (s.TimeAxisID.ToString() == SqlFunc.Subqueryable().Where(c => c.ID == 1003).Select(c => c.Config)) && s.DeleteFlag == 0).Select(s => s.RecordingTime), PreliminaryDiagnosis = TreatmentInfo.CP_Diagnosis_Code, HospitalGuid = Patient.HospitalGuid, HospitalName = Hospital.Name, EqmtNo = Patient.EqmtNo, WardshipId = Patient.WardshipId, WristStrapID = Patient.WristStrapID, WristStrapCode = WristStrap.Code, WristStrapCodeAlias = WristStrap.Alias, Vehicleout_Unit = FirstAIDInfo.CW_120_Ambulance_Department, AmbulanceGuid = Patient.AmbulanceGuid, CCPC_State = Patient.CCPC_State, CCPC_StateCase = Patient.CCPC_State.ToString(), CCPC_Register_ID = Patient.CCPC_Register_ID, IsGreenChannel = Patient.IsGreenChannel, PymCode = Patient.PymCode, WbmCode = Patient.WbmCode, CustomCode = Patient.CustomCode, Status = Patient.Status, Give_UP_Treatment = Patient.Give_UP_Treatment, Thrombolysis = Patient.Thrombolysis, Interventional_Therapy = Patient.Interventional_Therapy, Specified_Archiving_Time = Patient.Specified_Archiving_Time, Print_CPTRS_Num = Patient.Print_CPTRS_Num, Print_CPTRS_Person_ID = Patient.Print_CPTRS_Person_ID, Print_CPTRS_Person = Patient.Print_CPTRS_Person, Print_CPTRS_Time = Patient.Print_CPTRS_Time, Creator = Patient.Creator, Audit_Refuse_Note = Patient.Audit_Refuse_Note, IsGreenWay = Patient.IsGreenWay, IllnessLevel = Patient.IllnessLevel }).ToPageList(pageIndex, pageSize, ref TotalNumber); //if (listMode.Count > 0) //{ // for (int i = 0; i < listMode.Count; i++) // { // if (listMode[i].Is_Null_Attack_Detail_Time == "1" && listMode[i].AttackTime.ToString() != "") // listMode[i].Attack_Time = Convert.ToDateTime(listMode[i].AttackTime).ToString("yyyy-MM-dd"); // if (listMode[i].Is_Null_Attack_Detail_Time == "0" && listMode[i].AttackTime.ToString() != "") // listMode[i].Attack_Time = Convert.ToDateTime(listMode[i].AttackTime).ToString("yyyy-MM-dd HH:mm"); // } //} t.Code = 0; t.PageCount = listMode.Count; t.TotalNumber = TotalNumber; t.Data = listMode; t.Msg = "成功"; } catch (Exception ex) { Help.Info(ex.Message); } return t; } /// /// 获取患者列表--分页 V2.1 /// 用于移动端 /// /// 起始页 /// 每页大小 /// 所属院区GUID /// 所属模块ID /// 开始时间(创建) /// 结束时间(创建) /// 急救状态:-1全部 0未结束(对应急救中0+住院中1) 1已结束(对应已转归2) /// 来院方式代码 "":未选择;参考字典表T_Base_HospitalMode /// 出车单位代码 "":未选择;1:120救护车;2:本院救护车;3:外院救护车 /// 初步诊断 "":未选择,参考字典表T_Base_PreliminaryDiagnosis /// 关键词 /// /// public TableModel GetPatientsTimeForApp(int pageIndex, int pageSize, string hospitalGuid, long systemModuleID, string startTime, string endTime, int state, string coming_Way_Code, string ambulance_Department, string diagnosis_Code, string keyWord, string GreenWay, string IllnessLevel, int status, int ccpcState) { int TotalNumber = 0; TableModel t = new TableModel(); try { var listMode = db.Queryable((Patient, FirstAIDInfo, TreatmentInfo, Gender, Hospital, WristStrap, HospitalMode) => new object[] { JoinType.Left,Patient.GUID == FirstAIDInfo.PatientGuid, JoinType.Left,Patient.GUID == TreatmentInfo.PatientGuid, JoinType.Left,Patient.Gender == Gender.GenderCode, JoinType.Left,Patient.HospitalGuid == Hospital.GUID, JoinType.Left,Patient.WristStrapID == WristStrap.ID, JoinType.Left,FirstAIDInfo.CW_Coming_Way_Code == HospitalMode.Value & HospitalMode.SystemModuleID == systemModuleID, }) .Where((Patient, FirstAIDInfo, TreatmentInfo, Gender, Hospital, WristStrap, HospitalMode) => SqlFunc.Between(Patient.RegisterTime, startTime, endTime) && Patient.SystemModuleID == systemModuleID && Patient.DeleteFlag == 0) .WhereIF(!string.IsNullOrEmpty(hospitalGuid), (Patient, FirstAIDInfo, TreatmentInfo, Gender, Hospital, WristStrap, HospitalMode) => Patient.HospitalGuid == hospitalGuid) .WhereIF(state == 0, (Patient, FirstAIDInfo, TreatmentInfo, Gender, Hospital, WristStrap, HospitalMode) => Patient.EmergencyState == 0 || Patient.EmergencyState == 1) .WhereIF(state == 1, (Patient, FirstAIDInfo, TreatmentInfo, Gender, Hospital, WristStrap, HospitalMode) => Patient.EmergencyState == 2) .WhereIF(!string.IsNullOrEmpty(coming_Way_Code), (Patient, FirstAIDInfo, TreatmentInfo, Gender, Hospital, WristStrap, HospitalMode) => FirstAIDInfo.CW_Coming_Way_Code == coming_Way_Code) .WhereIF(!string.IsNullOrEmpty(ambulance_Department), (Patient, FirstAIDInfo, TreatmentInfo, Gender, Hospital, WristStrap, HospitalMode) => FirstAIDInfo.CW_120_Ambulance_Department == ambulance_Department) .WhereIF(!string.IsNullOrEmpty(diagnosis_Code), (Patient, FirstAIDInfo, TreatmentInfo, Gender, Hospital, WristStrap, HospitalMode) => TreatmentInfo.CP_Diagnosis_Code == diagnosis_Code) .WhereIF(status > 0, (Patient, FirstAIDInfo, TreatmentInfo, Gender, Hospital, WristStrap, HospitalMode) => Patient.Status == status) .WhereIF(ccpcState > -1, (Patient, FirstAIDInfo, TreatmentInfo, Gender, Hospital, WristStrap, HospitalMode) => Patient.CCPC_State == ccpcState) .WhereIF(!string.IsNullOrEmpty(GreenWay), (Patient, FirstAIDInfo, TreatmentInfo, Gender, Hospital, WristStrap, HospitalMode) => Patient.IsGreenWay == GreenWay) .WhereIF(!string.IsNullOrEmpty(IllnessLevel), (Patient, FirstAIDInfo, TreatmentInfo, Gender, Hospital, WristStrap, HospitalMode) => Patient.IllnessLevel == IllnessLevel) .WhereIF(!string.IsNullOrEmpty(keyWord), (Patient, FirstAIDInfo, TreatmentInfo, Gender, Hospital, WristStrap, HospitalMode) => Patient.Name.Contains(keyWord) || Patient.PymCode.Contains(keyWord) || Patient.WbmCode.Contains(keyWord) || Patient.CustomCode.Contains(keyWord) || Patient.MobilePhone.Contains(keyWord) || Patient.IdentityCard.Contains(keyWord) || Patient.Address.Contains(keyWord) || Patient.OutpatientNumber.Contains(keyWord) || Patient.AdmissionNumber.Contains(keyWord)) .Select((Patient, FirstAIDInfo, TreatmentInfo, Gender, Hospital, WristStrap, HospitalMode) => new ViewModel_PatientsList { ID = Patient.ID, GUID = Patient.GUID, Name = Patient.Name, Gender = Patient.Gender, GenderName = Gender.GenderName, Age = Patient.Age, Province = Patient.Province, City = Patient.City, Area = Patient.Area, EmergencyState = Patient.EmergencyState, EmergencyStateCase = Patient.EmergencyState.ToString(), Nation = Patient.Nation, MobilePhone = Patient.MobilePhone, IdentityCard = Patient.IdentityCard, Address = Patient.Address, Attack_Address = Patient.Attack_Address, OutpatientNumber = Patient.OutpatientNumber, AdmissionNumber = Patient.AdmissionNumber, HospitalModeName = HospitalMode.Content, RegisterTime = Patient.RegisterTime, CallHelpTime = FirstAIDInfo.CW_120_Help_Time, Is_Null_Attack_Detail_Time = FirstAIDInfo.Is_Null_Attack_Detail_Time, AttackTime = FirstAIDInfo.Attack_Time, First_MC_Time = FirstAIDInfo.CW_120_First_MC_Time, PreliminaryDiagnosis = TreatmentInfo.CP_Diagnosis_Code, HospitalGuid = Patient.HospitalGuid, HospitalName = Hospital.Name, EqmtNo = Patient.EqmtNo, WardshipId = Patient.WardshipId, WristStrapID = Patient.WristStrapID, WristStrapCode = WristStrap.Code, WristStrapCodeAlias = WristStrap.Alias, Vehicleout_Unit = FirstAIDInfo.CW_120_Ambulance_Department, AmbulanceGuid = Patient.AmbulanceGuid, CCPC_State = Patient.CCPC_State, CCPC_StateCase = Patient.CCPC_State.ToString(), CCPC_Register_ID = Patient.CCPC_Register_ID, IsGreenChannel = Patient.IsGreenChannel, PymCode = Patient.PymCode, WbmCode = Patient.WbmCode, CustomCode = Patient.CustomCode, Status = Patient.Status, Give_UP_Treatment = Patient.Give_UP_Treatment, Thrombolysis = Patient.Thrombolysis, Interventional_Therapy = Patient.Interventional_Therapy, Specified_Archiving_Time = Patient.Specified_Archiving_Time, Print_CPTRS_Num = Patient.Print_CPTRS_Num, Print_CPTRS_Person_ID = Patient.Print_CPTRS_Person_ID, Print_CPTRS_Person = Patient.Print_CPTRS_Person, Print_CPTRS_Time = Patient.Print_CPTRS_Time, IsGreenWay = Patient.IsGreenWay, IllnessLevel = Patient.IllnessLevel }).OrderBy((Patient) => Patient.RegisterTime, OrderByType.Desc).ToPageList(pageIndex, pageSize, ref TotalNumber); if (listMode.Count > 0) { for (int i = 0; i < listMode.Count; i++) { if (listMode[i].Is_Null_Attack_Detail_Time == "1") { if (!string.IsNullOrEmpty(listMode[i].AttackTime + "")) { listMode[i].Attack_Time = Convert.ToDateTime(listMode[i].AttackTime).ToString("yyyy-MM-dd"); } } if (listMode[i].Is_Null_Attack_Detail_Time == "0") { if (!string.IsNullOrEmpty(listMode[i].AttackTime + "")) { listMode[i].Attack_Time = Convert.ToDateTime(listMode[i].AttackTime).ToString("yyyy-MM-dd HH:mm"); } } } } t.Code = 0; t.PageCount = listMode.Count; t.TotalNumber = TotalNumber; t.Data = listMode; t.Msg = "成功"; } catch (Exception ex) { Help.Info(ex.Message); } return t; } /// /// 根据病人编号获取所有记录节点时间 /// /// 病人编号 /// 是否显示到时间轴0是1否 /// public string GetPatientDetailTime(string patientGuid, int isDisplayTimeAxis) { string items = ""; string whereStr = ""; if (isDisplayTimeAxis != -1) { whereStr = " AND c.IsDisplayTimeAxis = " + isDisplayTimeAxis; } string SqlStr = @" SELECT temp.*,e.IncrementalInterval_X,e.IncrementalInterval_Y,e.TotalPerRow,e.LocationX_Start,e.LocationY_Start,f.OrderBy,e.Thrombolysis,e.Interventional_Therapy FROM ( SELECT c.ID,a.[GUID],a.IsGreenChannel,c.GUID AS TimeAxisGUID,a.Name,a.Age,a.Gender,c.TimeName,b.RecordingTime,c.Interval,c.ParentID,b.NormalTime,c.LocationX,c.LocationY,c.ContrastTimeAxisID,c.Describe,c.Form_Flag,d.CW_Coming_Way_Code as HospitalMode,a.SystemModuleID,a.Thrombolysis,a.Interventional_Therapy FROM T_Service_Patient a LEFT JOIN T_Service_ChestPain_PatientsTimeAxis b on a.GUID = b.PatientGuid LEFT JOIN T_Base_TimeAxis c on b.TimeAxisID = c.ID LEFT JOIN T_Service_ChestPain_FirstAIDInfo d ON d.PatientGuid=a.GUID WHERE a.GUID = '{0}' {1} AND a.DeleteFlag=0 AND b.DeleteFlag=0 AND c.DeleteFlag=0) AS temp LEFT JOIN T_Base_TimeAxis_Templet e ON e.SystemModuleID=temp.SystemModuleID AND e.HospitalModeValue=temp.HospitalMode AND e.IsGreenChannel=temp.IsGreenChannel AND e.Thrombolysis=temp.Thrombolysis AND e.Interventional_Therapy=temp.Interventional_Therapy JOIN T_Base_TimeAxis_TempletDetail f ON f.TempletGUID=e.GUID AND temp.TimeAxisGUID=f.TimeAxisGUID AND f.DeleteFlag=0 ORDER BY f.OrderBy"; SqlStr = string.Format(SqlStr, patientGuid, whereStr); DataTable dt = db.Ado.GetDataTable(SqlStr); if (dt.Rows.Count > 0) { foreach (DataRow item in dt.Rows) { string row = ""; for (int i = 0; i < dt.Columns.Count; i++) { row += JsonConvert.SerializeObject(dt.Columns[i].ColumnName) + ":"; row += JsonConvert.SerializeObject(item[i]) + ","; } row = row.Remove(row.Length - 1); items += "{" + row + "}" + ","; } items = items.Remove(items.Length - 1); } items = "[" + items + "]"; return items; } /// /// 根据病人编号获取所有记录节点时间 /// /// 病人编号 /// 是否显示到时间轴0是1否 /// public string GetPatientTime(string patientGuid) { string items = ""; string SqlStr = @" SELECT c.ID,a.[GUID],a.IsGreenChannel,c.GUID AS TimeAxisGUID,a.Name,a.Age,a.Gender,c.TimeName,b.RecordingTime,c.Interval,c.ParentID,b.NormalTime,c.LocationX,c.LocationY,c.ContrastTimeAxisID,c.Describe,c.Form_Flag,d.HospitalMode,a.SystemModuleID FROM T_Service_Patient a LEFT JOIN T_Service_ChestPain_PatientsTimeAxis b on a.GUID = b.PatientGuid LEFT JOIN T_Base_TimeAxis c on b.TimeAxisID = c.ID LEFT JOIN T_Service_ChestPain_Prehospital d ON d.PatientGuid=a.GUID WHERE a.GUID = '{0}' AND a.DeleteFlag=0 AND b.DeleteFlag=0 AND c.DeleteFlag=0"; SqlStr = string.Format(SqlStr, patientGuid); DataTable dt = db.Ado.GetDataTable(SqlStr); if (dt.Rows.Count > 0) { foreach (DataRow item in dt.Rows) { string row = ""; for (int i = 0; i < dt.Columns.Count; i++) { row += JsonConvert.SerializeObject(dt.Columns[i].ColumnName) + ":"; row += JsonConvert.SerializeObject(item[i]) + ","; } row = row.Remove(row.Length - 1); items += "{" + row + "}" + ","; } items = items.Remove(items.Length - 1); } items = "[" + items + "]"; return items; } /// /// 根据病人编号+时间节点标识 获取记录时间 /// /// 病人编号 /// 时间节点编号:-1查询该病人的全部节点 /// public TableModel GetRecordingTime(string patientGuid, long timeAxisID) { TableModel t = new TableModel(); var listMode = db.Queryable().Where(it => it.PatientGuid == patientGuid && it.DeleteFlag == 0).WhereIF(timeAxisID > 0, it => it.TimeAxisID == timeAxisID) .Select(it => new T_Service_ChestPain_PatientsTimeAxis { //ID = it.ID, GUID = it.GUID.ToString(), PatientGuid = it.PatientGuid, TimeAxisID = it.TimeAxisID, DeleteFlag = it.DeleteFlag, RecordingTime = it.RecordingTime, NormalTime = it.NormalTime, SystemModuleID = it.SystemModuleID }).OrderBy((it) => it.RecordingTime).ToList(); t.Code = 0; t.PageCount = listMode.Count; t.TotalNumber = listMode.Count; t.Data = listMode; t.Msg = "成功"; return t; } public TableModel GetModelByReport(string where) { string sql = "select * from T_Service_ChestPain_PatientsTimeAxis where DeleteFlag=0 and " + where + ""; List data = db.Ado.SqlQuery(sql); TableModel t = new TableModel(); t.Code = 0; t.PageCount = data.Count; t.TotalNumber = data.Count; t.Data = data; t.Msg = "成功"; return t; } /// /// 根据相关条件获取符合条件的时间节点 /// 用于移动端 /// /// 病人编号 /// 节点组编号 /// public string GetTimeAxisByGroupIDForApp(string patientGuid, int groupId) { string ReturnStr = ""; string SqlStr = ""; //按组查询 if (groupId > 0) { SqlStr = @" SELECT a.ID,a.TimeAxisID,b.TimeName,a.RecordingTime,c.GroupName FROM T_Service_ChestPain_PatientsTimeAxis a JOIN T_Base_TimeAxis b ON a.TimeAxisID =b.ID LEFT JOIN T_Base_TimeAxisGroup c ON b.GroupID=c.ID WHERE a.PatientGuid='{0}' AND b.GroupID={1} AND b.IsDisplayTimeAxis =0 AND a.DeleteFlag=0 AND b.DeleteFlag=0"; SqlStr = string.Format(SqlStr, patientGuid, groupId); } else { SqlStr = @" SELECT temp.*,e.IncrementalInterval_X,e.IncrementalInterval_Y,e.TotalPerRow,e.LocationX_Start,e.LocationY_Start,f.OrderBy FROM ( SELECT c.ID,a.[GUID],a.IsGreenChannel,c.GUID AS TimeAxisGUID,a.Name,a.Age,a.Gender,c.TimeName,b.RecordingTime,c.Interval,c.ParentID,b.NormalTime,c.LocationX,c.LocationY,c.ContrastTimeAxisID,c.Describe,c.Form_Flag,d.CW_Coming_Way_Code as HospitalMode,a.SystemModuleID FROM T_Service_Patient a LEFT JOIN T_Service_ChestPain_PatientsTimeAxis b on a.GUID = b.PatientGuid LEFT JOIN T_Base_TimeAxis c on b.TimeAxisID = c.ID LEFT JOIN T_Service_ChestPain_FirstAIDInfo d ON d.PatientGuid=a.GUID WHERE a.GUID = '{0}' AND c.IsDisplayTimeAxis =0 AND a.DeleteFlag=0 AND b.DeleteFlag=0 AND c.DeleteFlag=0) AS temp LEFT JOIN T_Base_TimeAxis_Templet e ON e.SystemModuleID=temp.SystemModuleID AND e.HospitalModeValue=temp.HospitalMode AND e.IsGreenChannel=temp.IsGreenChannel JOIN T_Base_TimeAxis_TempletDetail f ON f.TempletGUID=e.GUID AND temp.TimeAxisGUID=f.TimeAxisGUID AND f.DeleteFlag=0 ORDER BY f.OrderBy"; SqlStr = string.Format(SqlStr, patientGuid); } DataTable dt = db.Ado.GetDataTable(SqlStr); if (dt.Rows.Count > 0) { foreach (DataRow item in dt.Rows) { string row = ""; for (int i = 0; i < dt.Columns.Count; i++) { row += JsonConvert.SerializeObject(dt.Columns[i].ColumnName) + ":"; row += JsonConvert.SerializeObject(item[i]) + ","; } row = row.Remove(row.Length - 1); ReturnStr += "{" + row + "}" + ","; } ReturnStr = ReturnStr.Remove(ReturnStr.Length - 1); } ReturnStr = "[" + ReturnStr + "]"; return ReturnStr; } /// /// 获取胸痛患者质量控制列表 /// /// 起始页 /// 每页大小 /// 所属院区GUID /// 开始时间(创建) /// 结束时间(创建) /// 是否PCI:1是,0否,-1查询全部 /// 诊断,用','分割,为空查全部 /// 关键词 /// 患者编号 /// public string GetChestPainQualityControl(int pageIndex, int pageSize, string hospitalGuid, string startTime, string endTime, int isPCI, string diagnosisCode, string keyWord, string patientGuid) { try { DataTable dataTable = db.Ado.GetDataTable("EXEC Pro_ChestPain_QualityControl @PageIndex,@PageSize,@HospitalGuid,@StartDate,@EndDate,@IsPCI,@DiagnosisCode,@KeyWord,@PatientGuid", new { PageIndex = pageIndex, PageSize = pageSize, HospitalGuid = hospitalGuid, StartDate = startTime, EndDate = endTime, IsPCI = isPCI, DiagnosisCode = diagnosisCode, KeyWord = keyWord, PatientGuid = patientGuid }); string JsonStr = Help.DataTableToJsonStr(dataTable); return JsonStr; } catch (Exception ex) { Help.Info(ex.Message); return ex.Message; } } public T_Service_ChestPain_PatientsTimeAxis GetPatientDetailTime(string patientGuid, long timeAxisID) { return db.Queryable().First(it => it.PatientGuid == patientGuid && it.TimeAxisID == timeAxisID); } #endregion } }