using HL_FristAidPlatform_Help; using HL_FristAidPlatform_IDataBase; using HL_FristAidPlatform_Models; using SqlSugar; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; namespace HL_FristAidPlatform_DataBase { /// /// 院前部分信息表 /// public class T_Service_ChestPain_PrehospitalDB : BaseDB, IT_Service_ChestPain_Prehospital { public SqlSugarClient db = GetClient(); /// /// 增加一条数据 /// public T_Service_ChestPain_Prehospital Add(T_Service_ChestPain_Prehospital model) { return db.Insertable(model).ExecuteReturnEntity(); } /// /// 更新一条数据 /// public bool Update(T_Service_ChestPain_Prehospital model) { return db.Updateable(model).ExecuteCommand() == 0 ? false : true; } /// /// 删除一条数据 /// public bool Delete(long ID) { return db.Deleteable(it => it.ID == ID).ExecuteCommand() == 0 ? false : true; ; } public T_Service_ChestPain_Prehospital GetByGuid(string patientguid) { return db.Queryable().Where(it => (it.PatientGuid == patientguid)).First(); } /// /// 获得数据列表 /// public TableModel GetPageList(int pageIndex, int pageSize) { int total = 0; List data = db.Queryable().Where(it => it.DeleteFlag == 0).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; } /// /// 获得前几行数据 /// public T_Service_ChestPain_Prehospital Get(long ID) { return db.Queryable().First(it => it.ID == ID); } /// /// 根据日期获取数据 /// public TableModel GetWhere(DateTime startTime, DateTime endTime) { TableModel t = new TableModel(); string sql = "select a.Name,convert(varchar(7),a.CreationDate,120) as CreationDate,b.CP_Diagnosis_Code as Content from T_Service_Patient a join T_Service_ChestPain_TreatmentInfo b on a.GUID=b.PatientGuid where a.SystemModuleID=2 and a.DeleteFlag=0 and a.CreationDate between '" + startTime + "' and '" + endTime + "' order by convert(varchar(7),a.CreationDate,120) "; List data = db.Ado.SqlQuery(sql); t.Code = 0; t.PageCount = data.Count; t.TotalNumber = data.Count; t.Data = data; t.Msg = "成功"; return t; } /// /// 根据患者编号(GUID)+所属报表类型 获取数据信息 /// /// 病人编号(GUID) /// public TableModel GetByPatientGuid(string patientGuid) { TableModel t = new TableModel(); var listMode = db.Queryable().Where(it => it.PatientGuid == patientGuid && it.DeleteFlag == 0) .Select(it => new T_Service_ChestPain_Prehospital { ID = it.ID, GUID = it.GUID, PatientGuid = it.PatientGuid, Attack_Time = it.Attack_Time, TimeOfOnset = it.TimeOfOnset, OnsetTimeInterval = it.OnsetTimeInterval, IsCallHelp = it.IsCallHelp, CallHelpTime = it.CallHelpTime, CallHelpWay = it.CallHelpWay, PreliminaryDiagnosis = it.PreliminaryDiagnosis, PreliminaryDiagnosis_Text = it.PreliminaryDiagnosis_Text, PreliminaryDiagnosisDoctorID = it.PreliminaryDiagnosisDoctorID, PreliminaryDiagnosisDoctorName = it.PreliminaryDiagnosisDoctorName, ConditionAssessment = it.ConditionAssessment, ConditionAssessmentText = it.ConditionAssessmentText, Is_Persistent = it.Is_Persistent, Is_Intermittent = it.Is_Intermittent, Is_Laxation = it.Is_Laxation, Is_Bellyache = it.Is_Bellyache, Is_Dyspnea = it.Is_Dyspnea, Is_Shock = it.Is_Shock, Is_Heart_Attack = it.Is_Heart_Attack, Is_Malignant_Arrhythmia = it.Is_Malignant_Arrhythmia, Is_Cpr = it.Is_Cpr, Is_Hemorrhage = it.Is_Hemorrhage, Is_Other = it.Is_Other, HospitalMode = it.HospitalMode, Vehicleout_Unit = it.Vehicleout_Unit, Vehicleout_Unit_Name = it.Vehicleout_Unit_Name, InHospital_Admission_Time = it.InHospital_Admission_Time, Is_Bypass_Emergency = it.Is_Bypass_Emergency, Nonstop = it.Nonstop, Nonstop_Time = it.Nonstop_Time, Leave_Emergency_Time = it.Leave_Emergency_Time, Is_Bypass_CCU = it.Is_Bypass_CCU, Arrive_CCU_Time = it.Arrive_CCU_Time, IsNetworkCollaboration = it.IsNetworkCollaboration, Transport_Hospital_Name = it.Transport_Hospital_Name, Transport_Department_Name = it.Transport_Department_Name, Transport_HospitalIn_Visit_Time = it.Transport_HospitalIn_Visit_Time, Transfer_Time = it.Transfer_Time, Ambulance_Arrived_Time = it.Ambulance_Arrived_Time, Leave_Outhospital_Time = it.Leave_Outhospital_Time, Disease_Department = it.Disease_Department, Consultation_Time = it.Consultation_Time, Leave_Department_Time = it.Leave_Department_Time, Other_Hospital_Name = it.Other_Hospital_Name, NonAcs_CCP = it.NonAcs_CCP, NonAcs_CCPText = it.NonAcs_CCPText, Arrhythmia = it.Arrhythmia, DCM = it.DCM, ICM = it.ICM, HCM = it.HCM, Carditis = it.Carditis, CHD = it.CHD, AVHD = it.AVHD, OMI = it.OMI, AP = it.AP, Palpitate = it.Palpitate, AF = it.AF, Hypertension = it.Hypertension, HF = it.HF, Atrialflutter = it.Atrialflutter, VPC = it.VPC, APB = it.APB, ST = it.ST, Other_NonAcs_CCP = it.Other_NonAcs_CCP, Other_NonAcs_CCPText = it.Other_NonAcs_CCPText, RD = it.RD, DSD = it.DSD, NSD = it.NSD, PD = it.PD, MD = it.MD, SSD = it.SSD, Other = it.Other, Handle_Way = it.Handle_Way, Handle_Time = it.Handle_Time, Patient_Outcome = it.Patient_Outcome, Handle_Doctor_Name = it.Handle_Doctor_Name, DeleteFlag = it.DeleteFlag, CreationDate = it.CreationDate, CreatorID = it.CreatorID, Creator = it.Creator, EditTime = it.EditTime, EditorID = it.EditorID, Editor = it.Editor, Emergency_Log = it.Emergency_Log, }).OrderBy(it => it.ID, OrderByType.Desc).ToList(); t.Code = 0; t.TotalNumber = listMode.Count; t.Data = listMode; t.Msg = "成功"; return t; } #region //STEMI患者首份ECG(远程传输或院内)至心电图确诊时间;≤10分钟比例 public TableModel GetKeyValueByReport(DateTime startTime, DateTime endTime, string where) { string sql = "select substring(CONVERT(varchar(10), a.CreationDate,120),0,8) as [key],datediff(N,e.RecordingTime,d.ECG_Diagnose_Time)as value from T_Service_Patient a join T_Service_ChestPain_Prehospital b on a.GUID=b.PatientGuid " + " left join T_Base_PreliminaryDiagnosis c on b.PreliminaryDiagnosis = c.ID left join T_Service_ChestPain_FirstMedicalReception d on a.GUID = d.PatientGuid" + " left join T_Service_ChestPain_PatientsTimeAxis e on a.GUID = e.PatientGuid where a.SystemModuleID = 2 and c.Content = 'STEMI' and a.DeleteFlag = 0 and b.DeleteFlag = 0" + " and d.DeleteFlag = 0 and a.CreationDate between '" + startTime + "' and '" + endTime + "' and e.TimeAxisID = " + 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; } /// /// STEMI患者首份ECG(远程传输或院内)至心电图确诊时间;≤10分钟比例 /// public ReprotModel GetIndexWhere(DateTime startTime, DateTime endTime, string mcTimeAxisID, string eCGTimeAxisID, string screen) { DataSet spResult = db.Ado.GetDataSetAll("exec ChestPain_Report01 @StartTime,@EndTime,@MCTimeAxisID,@ECGTimeAxisID,@Screen", new { StartTime = startTime.ToShortDateString() + " 00:00", EndTime = endTime.ToShortDateString() + " 23:59", MCTimeAxisID = mcTimeAxisID, ECGTimeAxisID = eCGTimeAxisID, Screen = screen }); ReprotModel JsonResult = dataSetToJosn(spResult); return JsonResult; } /// /// 120急救或者转运患者ECG远程传输比例 /// public ECGTransmissionReportModel GetECGTransmissionReport(DateTime startTime, DateTime endTime, string screen) { DataSet spResult = db.Ado.GetDataSetAll("exec ChestPain_Report02 @StartTime,@EndTime,@Screen", new { StartTime = startTime.ToShortDateString() + " 00:00", EndTime = endTime.ToShortDateString() + " 23:59", Screen = screen }); ECGTransmissionReportModel JsonResult = dataSetToECGTransmissionReport(spResult); return JsonResult; } /// /// STEMI患者首份ECG(远程传输或院内)至心电图确诊时间;≤10分钟比例 /// public ReprotModel GetECGDiagnosisReport(DateTime startTime, DateTime endTime) { DataSet spResult = db.Ado.GetDataSetAll("exec ChestPain_Report03 @StartTime,@EndTime", new { StartTime = startTime.ToShortDateString() + " 00:00", EndTime = endTime.ToShortDateString() + " 23:59", }); ReprotModel JsonResult = dataSetToJosn(spResult); return JsonResult; } /// /// STEMI患者首次医疗接触至双重抗血小板治疗比例、时间;≤10分钟比例 /// public ReprotModel GetDoubleResistanceReport(DateTime startTime, DateTime endTime) { DataSet spResult = db.Ado.GetDataSetAll("exec ChestPain_Report04 @StartTime,@EndTime", new { StartTime = startTime.ToShortDateString() + " 00:00", EndTime = endTime.ToShortDateString() + " 23:59", }); ReprotModel JsonResult = dataSetToJosn(spResult); return JsonResult; } /// /// 通用获取表报接口 /// /// /// /// public ReprotModel GetReport(DateTime startTime, DateTime endTime, string reportName) { DataSet spResult = db.Ado.GetDataSetAll("exec " + reportName + " @StartTime,@EndTime", new { StartTime = startTime.ToShortDateString() + " 00:00", EndTime = endTime.ToShortDateString() + " 23:59", }); ReprotModel JsonResult = dataSetToJosn(spResult); return JsonResult; } #endregion /// /// 来院方式统 /// /// /// /// /// public List GetChestPainToHospitalWay(string hosptialGuid, string startTime, string endTime) { List list = new List(); List lst = new List(); lst = db.Queryable((a, b) => a.GUID == b.PatientGuid) .Where((a, b) => a.HospitalGuid == hosptialGuid && a.SystemModuleID == 2 && a.DeleteFlag == 0) .WhereIF(!SqlFunc.IsNullOrEmpty(startTime), (a, b) => a.CreationDate >= SqlFunc.ToDate(startTime)) .WhereIF(!SqlFunc.IsNullOrEmpty(endTime), (a, b) => a.CreationDate <= SqlFunc.ToDate(endTime).AddDays(1)) .Select((a, b) => new MassiveDataStatisticsModel() { name = b.CW_Coming_Way_Code }).ToList(); MassiveDataStatisticsModel m1 = new MassiveDataStatisticsModel(); m1.name = "120来院"; MassiveDataStatisticsModel m2 = new MassiveDataStatisticsModel(); m2.name = "转院"; MassiveDataStatisticsModel m3 = new MassiveDataStatisticsModel(); m3.name = "自行来院"; MassiveDataStatisticsModel m4 = new MassiveDataStatisticsModel(); m4.name = "院内发病"; //CW_Coming_Way_Code 1:呼叫(120或其他)出车 2:转院(包含任何机构) 3:自行来院 4:院内发病 if (lst.Count > 0) { m1.value = lst.Where(i => i.name == "1").Count(); m2.value = lst.Where(i => i.name == "2").Count(); m3.value = lst.Where(i => i.name == "3").Count(); m4.value = lst.Where(i => i.name == "4").Count(); } list.Add(m1); list.Add(m2); list.Add(m3); list.Add(m4); return list; } #region 帮助类方法 public ReprotModel dataSetToJosn(DataSet ds) { List reprotMonthList = new List(); List reportDetailsList = new List(); ReprotModel reprotModels = new ReprotModel(); if (ds.Tables[0].Rows.Count > 0) { foreach (DataRow item in ds.Tables[0].Rows) { ReprotMonth reprotMonth = new ReprotMonth(); reprotMonth.月份 = item[ds.Tables[0].Columns[0].ColumnName] + ""; reprotMonth.平均时间 = Convert.ToDouble(item[ds.Tables[0].Columns[1].ColumnName] + "" == "" ? 0 : item[ds.Tables[0].Columns[1].ColumnName]); reprotMonth.最小值 = Convert.ToDouble(item[ds.Tables[0].Columns[2].ColumnName] + "" == "" ? 0 : item[ds.Tables[0].Columns[2].ColumnName]); reprotMonth.最大值 = Convert.ToDouble(item[ds.Tables[0].Columns[3].ColumnName] + "" == "" ? 0 : item[ds.Tables[0].Columns[3].ColumnName]); reprotMonth.总数 = Convert.ToDouble(item[ds.Tables[0].Columns[4].ColumnName] + "" == "" ? 0 : item[ds.Tables[0].Columns[4].ColumnName]); reprotMonth.总时间 = Convert.ToDouble(item[ds.Tables[0].Columns[5].ColumnName] + "" == "" ? 0 : item[ds.Tables[0].Columns[5].ColumnName]); reprotMonth.百分比 = Convert.ToDouble(item[ds.Tables[0].Columns[6].ColumnName] + "" == "" ? 0 : item[ds.Tables[0].Columns[6].ColumnName]); reprotMonth.合格总数 = Convert.ToDouble(item[ds.Tables[0].Columns[7].ColumnName] + "" == "" ? 0 : item[ds.Tables[0].Columns[7].ColumnName]); reprotMonthList.Add(reprotMonth); } } if (ds.Tables[1].Rows.Count > 0) { foreach (DataRow item in ds.Tables[1].Rows) { ReportDetails reportDetails = new ReportDetails(); reportDetails.月份 = item[ds.Tables[1].Columns[0].ColumnName] + ""; reportDetails.姓名 = item[ds.Tables[1].Columns[1].ColumnName] + ""; reportDetails.开始时间 = item[ds.Tables[1].Columns[2].ColumnName] + ""; reportDetails.结束时间 = item[ds.Tables[1].Columns[3].ColumnName] + ""; //reportDetails.差值 = Convert.ToDouble(item[ds.Tables[1].Columns[4].ColumnName] + "" == "" ? 0 : item[ds.Tables[1].Columns[4].ColumnName]); if (!string.IsNullOrEmpty(reportDetails.开始时间 + "") && !string.IsNullOrEmpty(reportDetails.结束时间 + "")) { DateTime dt1 = Convert.ToDateTime(reportDetails.开始时间); DateTime dt2 = Convert.ToDateTime(reportDetails.结束时间); TimeSpan ts = dt2.Subtract(dt1); reportDetails.差值 = ts.Days * 1440 + ts.Hours * 60 + ts.Minutes * 1; } reportDetails.参考时间 = Convert.ToDouble(item[ds.Tables[1].Columns[5].ColumnName] + "" == "" ? 0 : item[ds.Tables[1].Columns[5].ColumnName]); reportDetailsList.Add(reportDetails); } } reprotModels.reprotMonths = reprotMonthList; reprotModels.reportDetails = reportDetailsList; return reprotModels; } public ECGTransmissionReportModel dataSetToECGTransmissionReport(DataSet ds) { List reprotMonthList = new List(); List reportDetailsList = new List(); ECGTransmissionReportModel reprotModels = new ECGTransmissionReportModel(); if (ds.Tables[0].Rows.Count > 0) { foreach (DataRow item in ds.Tables[0].Rows) { ECGTransmissionMonth reprotMonth = new ECGTransmissionMonth(); reprotMonth.月份 = item[ds.Tables[0].Columns[0].ColumnName] + ""; reprotMonth.远程传输比例 = Convert.ToDouble(item[ds.Tables[0].Columns[1].ColumnName] + "" == "" ? 0 : item[ds.Tables[0].Columns[1].ColumnName]); reprotMonth.远程传输 = Convert.ToInt32(item[ds.Tables[0].Columns[2].ColumnName] + "" == "" ? 0 : item[ds.Tables[0].Columns[2].ColumnName]); reprotMonth.总数 = Convert.ToInt32(item[ds.Tables[0].Columns[3].ColumnName] + "" == "" ? 0 : item[ds.Tables[0].Columns[3].ColumnName]); reprotMonthList.Add(reprotMonth); } } if (ds.Tables[1].Rows.Count > 0) { foreach (DataRow item in ds.Tables[1].Rows) { ECGTransmissionDetails reportDetails = new ECGTransmissionDetails(); reportDetails.月份 = item[ds.Tables[1].Columns[0].ColumnName] + ""; reportDetails.姓名 = item[ds.Tables[1].Columns[1].ColumnName] + ""; reportDetails.是否有效数据 = item[ds.Tables[1].Columns[2].ColumnName] + ""; reportDetailsList.Add(reportDetails); } } reprotModels.eCGTransmissionMonths = reprotMonthList; reprotModels.eCGTransmissionDetails = reportDetailsList; return reprotModels; } /// /// DataSet转换成Json格式 /// /// DataSet /// public static string DatasetToJson(DataSet ds, int total = -1) { StringBuilder json = new StringBuilder(); foreach (DataTable dt in ds.Tables) { //{"total":5,"rows":[ json.Append("{\"total\":"); if (total == -1) { json.Append(dt.Rows.Count); } else { json.Append(total); } json.Append(",\"rows\":["); json.Append(DataTableToJson(dt)); json.Append("]}"); } return json.ToString(); } /// /// dataTable转换成Json格式 /// /// /// public static string DataTableToJson(DataTable dt) { StringBuilder jsonBuilder = new StringBuilder(); for (int i = 0; i < dt.Rows.Count; i++) { jsonBuilder.Append("{"); for (int j = 0; j < dt.Columns.Count; j++) { jsonBuilder.Append("\""); jsonBuilder.Append(dt.Columns[j].ColumnName); jsonBuilder.Append("\":\""); jsonBuilder.Append(dt.Rows[i][j].ToString()); jsonBuilder.Append("\","); } if (dt.Columns.Count > 0) { jsonBuilder.Remove(jsonBuilder.Length - 1, 1); } jsonBuilder.Append("},"); } if (dt.Rows.Count > 0) { jsonBuilder.Remove(jsonBuilder.Length - 1, 1); } return jsonBuilder.ToString(); } /// /// 参数转换为in条件字符串 /// /// /// public static string ParseToSQLIn(string lst) { StringBuilder sb = new StringBuilder(); string[] array = lst.Split(','); //sb.Append("'0'"); foreach (string item in array) { sb.Append(",'"); sb.Append(item); sb.Append("'"); } if (sb.Length > 0) { sb.Remove(0, 1); } return sb.ToString(); } #endregion } }