StableVersion4.3/HL_FristAidPlatform_DataBase/Service/T_Service_ChestPain_Prehosp...

512 lines
23 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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
{
/// <summary>
/// 院前部分信息表
/// </summary>
public class T_Service_ChestPain_PrehospitalDB : BaseDB, IT_Service_ChestPain_Prehospital
{
public SqlSugarClient db = GetClient();
/// <summary>
/// 增加一条数据
/// </summary>
public T_Service_ChestPain_Prehospital Add(T_Service_ChestPain_Prehospital model)
{
return db.Insertable(model).ExecuteReturnEntity();
}
/// <summary>
/// 更新一条数据
/// </summary>
public bool Update(T_Service_ChestPain_Prehospital model)
{
return db.Updateable(model).ExecuteCommand() == 0 ? false : true;
}
/// <summary>
/// 删除一条数据
/// </summary>
public bool Delete(long ID)
{
return db.Deleteable<T_Service_ChestPain_Prehospital>(it => it.ID == ID).ExecuteCommand() == 0 ? false : true; ;
}
public T_Service_ChestPain_Prehospital GetByGuid(string patientguid)
{
return db.Queryable<T_Service_ChestPain_Prehospital>().Where(it => (it.PatientGuid == patientguid)).First();
}
/// <summary>
/// 获得数据列表
/// </summary>
public TableModel<T_Service_ChestPain_Prehospital> GetPageList(int pageIndex, int pageSize)
{
int total = 0;
List<T_Service_ChestPain_Prehospital> data = db.Queryable<T_Service_ChestPain_Prehospital>().Where(it => it.DeleteFlag == 0).ToPageList(pageIndex, pageSize, ref total);
TableModel<T_Service_ChestPain_Prehospital> t = new TableModel<T_Service_ChestPain_Prehospital>();
t.Code = 0;
t.PageCount = data.Count;
t.TotalNumber = total;
t.Data = data;
t.Msg = "成功";
return t;
}
/// <summary>
/// 获得前几行数据
/// </summary>
public T_Service_ChestPain_Prehospital Get(long ID)
{
return db.Queryable<T_Service_ChestPain_Prehospital>().First(it => it.ID == ID);
}
/// <summary>
/// 根据日期获取数据
/// </summary>
public TableModel<Patient_Prehospital> GetWhere(DateTime startTime, DateTime endTime)
{
TableModel<Patient_Prehospital> t = new TableModel<Patient_Prehospital>();
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<Patient_Prehospital> data = db.Ado.SqlQuery<Patient_Prehospital>(sql);
t.Code = 0;
t.PageCount = data.Count;
t.TotalNumber = data.Count;
t.Data = data;
t.Msg = "成功";
return t;
}
/// <summary>
/// 根据患者编号(GUID)+所属报表类型 获取数据信息
/// </summary>
/// <param name="patientGuid">病人编号(GUID)</param>
/// <returns></returns>
public TableModel<T_Service_ChestPain_Prehospital> GetByPatientGuid(string patientGuid)
{
TableModel<T_Service_ChestPain_Prehospital> t = new TableModel<T_Service_ChestPain_Prehospital>();
var listMode = db.Queryable<T_Service_ChestPain_Prehospital>().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<KeyValue> 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<KeyValue> data = db.Ado.SqlQuery<KeyValue>(sql);
TableModel<KeyValue> t = new TableModel<KeyValue>();
t.Code = 0;
t.PageCount = data.Count;
t.TotalNumber = data.Count;
t.Data = data;
t.Msg = "成功";
return t;
}
/// <summary>
/// STEMI患者首份ECG远程传输或院内至心电图确诊时间≤10分钟比例
/// </summary>
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;
}
/// <summary>
/// 120急救或者转运患者ECG远程传输比例
/// </summary>
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;
}
/// <summary>
/// STEMI患者首份ECG远程传输或院内至心电图确诊时间≤10分钟比例
/// </summary>
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;
}
/// <summary>
/// STEMI患者首次医疗接触至双重抗血小板治疗比例、时间≤10分钟比例
/// </summary>
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;
}
/// <summary>
/// 通用获取表报接口
/// </summary>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <returns></returns>
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
/// <summary>
/// 来院方式统
/// </summary>
/// <param name="hosptialGuid"></param>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <returns></returns>
public List<MassiveDataStatisticsModel> GetChestPainToHospitalWay(string hosptialGuid, string startTime, string endTime)
{
List<MassiveDataStatisticsModel> list = new List<MassiveDataStatisticsModel>();
List<MassiveDataStatisticsModel> lst = new List<MassiveDataStatisticsModel>();
lst = db.Queryable<T_Service_Patient, T_Service_ChestPain_FirstAIDInfo>((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<ReprotMonth> reprotMonthList = new List<ReprotMonth>();
List<ReportDetails> reportDetailsList = new List<ReportDetails>();
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<ECGTransmissionMonth> reprotMonthList = new List<ECGTransmissionMonth>();
List<ECGTransmissionDetails> reportDetailsList = new List<ECGTransmissionDetails>();
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;
}
/// <summary>
/// DataSet转换成Json格式
/// </summary>
/// <paramname="ds">DataSet</param>
///<returns></returns>
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();
}
/// <summary>
/// dataTable转换成Json格式
/// </summary>
/// <paramname="dt"></param>
///<returns></returns>
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();
}
/// <summary>
/// 参数转换为in条件字符串
/// </summary>
/// <param name="lst"></param>
/// <returns></returns>
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
}
}