325 lines
16 KiB
C#
325 lines
16 KiB
C#
using HL_FristAidPlatform_Help;
|
|
using HL_FristAidPlatform_IDataBase;
|
|
using HL_FristAidPlatform_Models;
|
|
using SqlSugar;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
|
|
namespace HL_FristAidPlatform_DataBase
|
|
{
|
|
public class EmergencyTriageService : BaseDB, IEmergencyTriageService
|
|
{
|
|
public SqlSugarClient db = GetClient();
|
|
|
|
/// <summary>
|
|
/// 分诊保存
|
|
/// </summary>
|
|
/// <param name="fp"></param>
|
|
/// <param name="checkup"></param>
|
|
/// <param name="ass"></param>
|
|
/// <param name="patient"></param>
|
|
/// <param name="info"></param>
|
|
/// <param name="prehospital"></param>
|
|
/// <returns></returns>
|
|
public string EmergencyTriageTran(T_Service_FirstAid_PatientInfo fp, T_Service_FirstAid_HealthCheckup checkup, T_Service_FirstAid_AssistantExamination ass, T_Service_Patient patient, T_Service_ChestPain_FirstAIDInfo info, T_Service_Apoplexy_Prehospital prehospital, long CreatorID)
|
|
{
|
|
try
|
|
{
|
|
db.Ado.BeginTran();
|
|
|
|
db.Insertable(patient).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
|
|
db.Insertable(fp).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
|
|
if (!string.IsNullOrEmpty(checkup.GUID))
|
|
{
|
|
db.Insertable(checkup).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
|
|
}
|
|
if (!string.IsNullOrEmpty(ass.GUID))
|
|
{
|
|
db.Insertable(ass).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(info.GUID))
|
|
{
|
|
db.Insertable(info).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
|
|
}
|
|
if (!string.IsNullOrEmpty(prehospital.GUID))
|
|
{
|
|
db.Insertable(prehospital).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
|
|
}
|
|
if (patient.SystemModuleID == 2)//胸痛类型
|
|
{
|
|
//胸痛诊疗
|
|
T_Service_ChestPain_TreatmentInfo treatmentInfo = new T_Service_ChestPain_TreatmentInfo();
|
|
treatmentInfo.PatientGuid = patient.GUID;
|
|
treatmentInfo.CreatorID = CreatorID;
|
|
treatmentInfo.CreationDate = DateTime.Now;
|
|
treatmentInfo.GUID = Guid.NewGuid().ToString();
|
|
db.Insertable(treatmentInfo).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
|
|
//冠状动脉造影
|
|
T_Service_ChestPain_CoronaryAngiographie coronary = new T_Service_ChestPain_CoronaryAngiographie();
|
|
coronary.PatientGuid = patient.GUID;
|
|
coronary.CreatorID = CreatorID;
|
|
coronary.CreationDate = DateTime.Now;
|
|
coronary.GUID = Guid.NewGuid().ToString();
|
|
db.Insertable(coronary).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
|
|
//转归表
|
|
T_Service_ChestPain_OutComeInfo outComeInfo = new T_Service_ChestPain_OutComeInfo();
|
|
outComeInfo.PatientGuid = patient.GUID;
|
|
outComeInfo.CreatorID = CreatorID;
|
|
outComeInfo.CreationDate = DateTime.Now;
|
|
outComeInfo.GUID = Guid.NewGuid().ToString();
|
|
db.Insertable(outComeInfo).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
|
|
|
|
//增加对应模块的时间节点记录业务 且排除已存在的记录
|
|
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", patient.SystemModuleID, patient.GUID);
|
|
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 = patient.GUID;
|
|
InsertModel.TimeAxisID = Convert.ToInt32(item["ID"] + "");
|
|
InsertModel.DeleteFlag = 0;
|
|
InsertModel.IsAutoForRFID = 0;
|
|
InsertModel.SystemModuleID = patient.SystemModuleID;
|
|
number = db.Insertable(InsertModel).InsertColumns(it => new { it.GUID, it.PatientGuid, it.TimeAxisID, it.DeleteFlag, it.IsAutoForRFID, it.SystemModuleID }).ExecuteReturnIdentity();
|
|
}
|
|
}
|
|
}
|
|
if (patient.SystemModuleID == 3)
|
|
{
|
|
//增加对应模块的时间节点记录业务 且排除已存在的记录
|
|
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_Apoplexy_PatientsTimeAxis WHERE PatientGuid='{1}' AND DeleteFlag=0) ORDER BY OrderBy", patient.SystemModuleID, patient.GUID);
|
|
DataTable dataTable = db.Ado.GetDataTable(Url);
|
|
int number = 0;
|
|
if (dataTable.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow item in dataTable.Rows)
|
|
{
|
|
T_Service_Apoplexy_PatientsTimeAxis InsertModel = new T_Service_Apoplexy_PatientsTimeAxis();
|
|
InsertModel.GUID = Guid.NewGuid().ToString();
|
|
InsertModel.PatientGuid = patient.GUID;
|
|
InsertModel.SystemModuleID = patient.SystemModuleID;
|
|
InsertModel.TimeAxisID = Convert.ToInt32(item["ID"] + "");
|
|
InsertModel.DeleteFlag = 0;
|
|
InsertModel.IsAutoForRFID = 0;
|
|
number = db.Insertable(InsertModel).InsertColumns(it => new { it.GUID, it.PatientGuid, it.SystemModuleID, it.TimeAxisID, it.DeleteFlag, it.IsAutoForRFID }).ExecuteReturnIdentity();
|
|
}
|
|
}
|
|
|
|
}
|
|
var task = db.Queryable<T_Service_FirstAid_AlarmInfo>().Where(i => i.GUID == fp.TaskGUID).First();
|
|
if (task != null)
|
|
{
|
|
task.ActualPatientsNumber = task.ActualPatientsNumber + 1;
|
|
db.Updateable(task).ExecuteCommand();
|
|
}
|
|
|
|
db.Ado.CommitTran();
|
|
return patient.GUID;
|
|
}
|
|
|
|
catch (Exception ex)
|
|
{
|
|
db.Ado.RollbackTran();
|
|
Help.WriteErrorLog("急诊分诊:分诊保存(EmergencyTriageTran)", ex.ToString());
|
|
return "";
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 新增急诊分诊患者
|
|
/// </summary>
|
|
/// <param name="fp"></param>
|
|
/// <param name="checkup"></param>
|
|
/// <param name="ass"></param>
|
|
/// <param name="patient"></param>
|
|
/// <returns></returns>
|
|
public string AddEmergencyTriage(T_Service_FirstAid_PatientInfo fp, T_Service_FirstAid_HealthCheckup checkup, T_Service_FirstAid_AssistantExamination ass, T_Service_Patient patient)
|
|
{
|
|
try
|
|
{
|
|
db.Ado.BeginTran();
|
|
db.Insertable(patient).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
|
|
db.Insertable(fp).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
|
|
if (!string.IsNullOrEmpty(checkup.GUID))
|
|
{
|
|
db.Insertable(checkup).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
|
|
}
|
|
if (!string.IsNullOrEmpty(ass.GUID))
|
|
{
|
|
db.Insertable(ass).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
|
|
}
|
|
db.Ado.CommitTran();
|
|
return patient.GUID;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
db.Ado.RollbackTran();
|
|
Help.WriteErrorLog("急诊分诊:分诊保存(EmergencyTriage)", ex.ToString());
|
|
return "";
|
|
}
|
|
}
|
|
|
|
public string AddBatchPatient(T_Service_FirstAid_PatientInfo fp,T_Service_Patient patient)
|
|
{
|
|
try
|
|
{
|
|
db.Ado.BeginTran();
|
|
db.Insertable(patient).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
|
|
db.Insertable(fp).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
|
|
db.Ado.CommitTran();
|
|
return patient.GUID;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
db.Ado.RollbackTran();
|
|
Help.WriteErrorLog("急诊分诊:批量创建患者(AddBatchPatient)", ex.ToString());
|
|
return "";
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 出科召回
|
|
/// </summary>
|
|
/// <param name="fp"></param>
|
|
/// <returns></returns>
|
|
public string RecallDepartment(T_Service_FirstAid_PatientInfo fp)
|
|
{
|
|
try
|
|
{
|
|
return db.Updateable<T_Service_FirstAid_PatientInfo>(t => t.TriageDepartment == fp.TriageDepartment).Where(t => t.PatientGUID == fp.PatientGUID).ExecuteCommand().ToString();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
db.Ado.RollbackTran();
|
|
Help.WriteErrorLog("急诊分诊:出科召回(RecallDepartment)", ex.ToString());
|
|
return "";
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 交接 非重大事故
|
|
/// </summary>
|
|
/// <param name="perlist"></param>
|
|
/// <param name="ambList"></param>
|
|
/// <param name="call"></param>
|
|
/// <param name="id"></param>
|
|
/// <returns></returns>
|
|
public bool HandoverVehicleAndPer(T_Service_Patient patient, T_Service_FirstAid_HealthCheckup health, List<T_Service_FirstAid_Personnel> perlist, List<T_Base_Ambulance> ambList, T_Service_FirstAid_Call call, int id)
|
|
{
|
|
try
|
|
{
|
|
db.Ado.BeginTran();
|
|
if (patient != null)
|
|
{
|
|
db.Insertable(patient).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
|
|
db.Insertable(health).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
|
|
|
|
// 新增工作量 评分统计
|
|
T_Service_FirstAid_WorkLoad work = new T_Service_FirstAid_WorkLoad();
|
|
if (!SqlFunc.IsNullOrEmpty(health.Pulse))
|
|
work.FourTestsMark = work.FourTestsMark + 1;
|
|
if (!SqlFunc.IsNullOrEmpty(health.HeartRate))
|
|
work.FourTestsMark = work.FourTestsMark + 1;
|
|
if (!SqlFunc.IsNullOrEmpty(health.SystolicPressure) && !SqlFunc.IsNullOrEmpty(health.DiastolicPressure))
|
|
work.FourTestsMark = work.FourTestsMark + 1;
|
|
if (!SqlFunc.IsNullOrEmpty(health.Temperature))
|
|
work.FourTestsMark = work.FourTestsMark + 1;
|
|
work.CensusScore = work.CensusScore + work.FourTestsMark;
|
|
if (work != null)
|
|
if (work != null)
|
|
{
|
|
work.GUID = Guid.NewGuid().ToString();
|
|
work.CallGUID = call.GUID;
|
|
db.Insertable(work).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
|
|
}
|
|
}
|
|
if (perlist != null)
|
|
db.Updateable(perlist).SetColumns(t => t.CurrentState == 0).ExecuteCommand();
|
|
if (ambList != null)
|
|
db.Updateable(ambList).SetColumns(t => t.State == 1).ExecuteCommand();
|
|
|
|
db.Updateable<T_Service_FirstAid_Call>().SetColumns(it =>
|
|
new T_Service_FirstAid_Call
|
|
{
|
|
HandoverTime = DateTime.Now.ToString(),
|
|
HandoverUser = call.HandoverUser,
|
|
TaskState = 5
|
|
}).Where(it => it.GUID == call.GUID).ExecuteCommand();
|
|
if (id > 0)
|
|
db.Updateable<T_Base_WristStrap>().SetColumns(it => it.Status == 0).Where(it => it.ID == id).ExecuteCommand();
|
|
db.Ado.CommitTran();
|
|
return true;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return false;
|
|
Help.WriteErrorLog("急诊分诊:交接 非重大事故(HandoverVehicleAndPer)", ex.ToString());
|
|
throw;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 交接 重大事故(未修改标签卡状态 后期加)
|
|
/// </summary>
|
|
/// <param name="perlist"></param>
|
|
/// <param name="ambList"></param>
|
|
/// <returns></returns>
|
|
public bool HandoverVehicleAndPer(List<T_Service_FirstAid_Personnel> perlist, List<T_Base_Ambulance> ambList, string guid)
|
|
{
|
|
try
|
|
{
|
|
db.Ado.BeginTran();
|
|
if (perlist != null && perlist.Count > 0)
|
|
db.Updateable(perlist).SetColumns(t => t.CurrentState == 0).ExecuteCommand();
|
|
if (ambList != null && ambList.Count > 0)
|
|
db.Updateable(ambList).SetColumns(t => t.State == 1).ExecuteCommand();
|
|
|
|
string sql = string.Format(@" select GUID, Name, CurrentState,Role,Gender from dbo.T_Service_FirstAid_Personnel where GUID in
|
|
(select SUBSTRING(a.AccompanyinPersonnel, number, CHARINDEX(',', a.AccompanyinPersonnel + ',', number) - number)
|
|
from dbo.T_Service_FirstAid_Call a,master..spt_values
|
|
where GUID = '{0}'
|
|
and CurrentState=2
|
|
and number >= 1 and number<len(a.AccompanyinPersonnel)
|
|
and type = 'p'
|
|
and SUBSTRING(',' + a.AccompanyinPersonnel,number,1)= ',')
|
|
", guid);
|
|
DataTable dt = db.Ado.GetDataTable(sql);
|
|
string JsonStr1 = Help.DataTableToJsonStr(dt);
|
|
string sql2 = string.Format(@"select GUID, PlateNumber, State from dbo.T_Base_Ambulance where GUID in (select SUBSTRING(a.VehicleGUID, number, CHARINDEX(',', a.VehicleGUID + ',', number) - number)
|
|
from dbo.T_Service_FirstAid_Call a,master..spt_values
|
|
where GUID = '{0}'
|
|
and State=2
|
|
and number >= 1 and number<len(a.VehicleGUID)
|
|
and type = 'p'
|
|
and SUBSTRING(',' + a.VehicleGUID,number,1)= ',')", guid);
|
|
|
|
DataTable dt2 = db.Ado.GetDataTable(sql2);
|
|
string JsonStr2 = Help.DataTableToJsonStr(dt2);
|
|
|
|
//没有存在未交接的人员和车辆时,更新状态
|
|
if (string.IsNullOrEmpty(JsonStr1.Replace("[", "").Replace("]", "")) && string.IsNullOrEmpty(JsonStr2.Replace("[", "").Replace("]", "")))
|
|
{
|
|
db.Updateable<T_Service_FirstAid_Call>().SetColumns(it => new T_Service_FirstAid_Call() { TaskState = 5, HandoverTime = DateTime.Now.ToString() }).Where(it => it.GUID == guid).ExecuteCommand();
|
|
}
|
|
db.Ado.CommitTran();
|
|
return true;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return false;
|
|
Help.WriteErrorLog("急诊分诊:交接 重大事故(HandoverVehicleAndPer)", ex.ToString());
|
|
throw;
|
|
}
|
|
}
|
|
}
|
|
}
|