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
}
}