using HL_FristAidPlatform_Help; using HL_FristAidPlatform_IDataBase; using HL_FristAidPlatform_Models; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HL_FristAidPlatform_DataBase { /// /// 创伤患者质控 /// public class T_Service_Trauma_QualityControlDB : BaseDB, IT_Service_Trauma_QualityControl { public SqlSugarClient db = GetClient(); /// /// 获取创伤患者质控信息 /// /// /// public QualityControlModel GetQualityControlByPatientGuid(string guid, long systemModelId) { QualityControlModel model = new QualityControlModel(); model = db.Queryable((a, b, c, d, e, f, gcs, ti) => new JoinQueryInfos(JoinType.Left, a.GUID == b.PatientGuid, JoinType.Left, a.GUID == c.PatientGuid, JoinType.Left, a.GUID == d.PatientGuid, JoinType.Left, a.GUID == e.PatientGuid, JoinType.Left, a.GUID == f.PatientGuid, JoinType.Left, a.GUID == gcs.PatientGUID, JoinType.Left, a.GUID == ti.PatientGuid)) .Where((a, b, c, d, e, f, gcs, ti) => a.GUID == guid && a.SystemModuleID == systemModelId) .Select((a, b, c, d, e, f, gcs, ti) => new QualityControlModel() { PatientGuid = a.GUID, ComeHosptialWay = b.ComeHosptialWay, Name = a.Name, Age = a.Age, Gender = a.Gender, CallTraumaTeam = b.CallTraumaTeam, EarlyWarning = b.EarlyWarning, InpatientID = c.InpatientID, OutpatientID = c.OutpatientID, ReceiveDepartment = c.ReceiveDepartment, ArriveEmergencyTime = c.ArriveEmergencyTime, ArriveEmergencyDeath = c.ArriveEmergencyDeath, BloodTransfusion = d.BloodTransfusion, ArtificialAirway = d.ArtificialAirway, EmergencyOperation = d.EmergencyOperation, FastCT = d.FastCT, FastCTEndTime = d.FastCTEndTime, ChestX = d.ChestX, ChestXEndTime = d.ChestXEndTime, Pelvis = d.Pelvis, PelvisEndTime = d.PelvisEndTime, FAST = d.FAST, FASTEndTime = d.FASTEndTime, OtherX = d.OtherX, OtherXEndTime = d.OtherXEndTime, OtherXType = d.OtherXType, Whereabouts = e.Whereabouts, SituationRemarks = e.SituationRemarks, ResidenceTime = c.ResidenceTime, TreatmentOutcome = e.TreatmentOutcome, HandoverTime = e.HandoverTime, ReceivingHospital = e.ReceivingHospital, OutComeTime = e.OutComeTime, ExactWereabouts = e.ExactWereabouts, HospitalizationStartTime = c.HospitalizationStartTime, HospitalizationEndTime = c.HospitalizationEndTime, Death = c.Death, DeathTime = c.DeathTime, ArriveICU = c.ArriveICU, ObservationTime = c.ObservationTime, ObservationDead = c.ObservationDead, DataReporter = e.DataReporter, ArriveOutpatientTime = c.ArriveOutpatientTime, ArriveOutpatientDeath = c.ArriveOutpatientDeath, CompletionRate = e.CompletionRate, ApplyBloodTransfusionTime = d.ApplyBloodTransfusionTime, ImplementBloodTransfusionTime = d.ImplementBloodTransfusionTime, ProposeAirwayTime = d.ProposeAirwayTime, StartOperationTime = d.StartOperationTime, EmergencyLeaveTime = c.EmergencyLeaveTime, DeathDesc = e.DeathDesc, KeepInDesc = e.DeathDesc, ProposeOperationTime = d.ProposeOperationTime, SuccessAirwayTime = d.SuccessAirwayTime, TreatmentOtherContent = e.TreatmentOtherContent, LeaveScene = f.LeaveScene, HospitalizationDays = c.HospitalizationDays, GCSScore = gcs.TotalScore == 0 ? "" : gcs.TotalScore.ToString(), TIScore = ti.TISum, HospitalizationID = c.HospitalizationID, ArriveHospital = f.ArriveHospital }).First(); if (model != null) { model.ICUList = new List(); model.ICUList = db.Queryable().Where(i => i.PatientGuid == guid) .OrderBy(i => new { i.ArriveICUTime, i.LeaveICUTime, i.ICUDays }, OrderByType.Asc) .Select(i => new ICUListModel { ArriveICUTime = i.ArriveICUTime, LeaveICUTime = i.LeaveICUTime, ICUDays = i.ICUDays }).ToList(); } var ISSClass = db.Queryable().Where(i => i.PatientGuid == guid).OrderBy(i => i.CreationDate, OrderByType.Desc).Take(1).First(); if (ISSClass != null) { model.ISS_AISScore = ISSClass.ISS + "/" + ISSClass.AIS; model.Grave = ISSClass.Grave; } return model; } /// /// 创伤患者质控信息保存 /// /// /// /// /// /// /// public bool SaveQualityControl(T_Service_Patient patient, T_Service_Trauma_ReceiveInfo receiveInfo, T_Service_Trauma_Rescue rescue, T_Service_Trauma_OutCome outCome, List lst, T_Service_Trauma_FirstAidInfo first) { try { db.Ado.BeginTran(); db.Updateable(patient).UpdateColumns(it => new { it.Name, it.Age, it.Gender ,it.EmergencyState}).ExecuteCommand(); if (SqlFunc.IsNullOrEmpty(receiveInfo.GUID)) { receiveInfo.GUID = Guid.NewGuid().ToString(); db.Insertable(receiveInfo).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand(); } else { db.Updateable(receiveInfo).UpdateColumns(it => new { it.OutpatientID, it.InpatientID, it.ReceiveDepartment, it.ArriveEmergencyTime, it.ArriveEmergencyDeath, it.DeathTime, it.HospitalizationStartTime, it.HospitalizationEndTime, it.Death, it.ArriveICU, it.ObservationTime, it.ObservationDead, it.ResidenceTime, it.EmergencyLeaveTime, it.ArriveOutpatientDeath, it.ArriveOutpatientTime, it.HospitalizationDays, it.HospitalizationID }).ExecuteCommand(); } if (SqlFunc.IsNullOrEmpty(rescue.GUID)) { rescue.GUID = Guid.NewGuid().ToString(); db.Insertable(rescue).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand(); } else { db.Updateable(rescue).UpdateColumns(it => new { it.FastCT, it.FastCTEndTime, it.ChestX, it.ChestXEndTime, it.Pelvis, it.PelvisEndTime, it.FAST, it.FASTEndTime, it.BloodTransfusion, it.ApplyBloodTransfusionTime, it.ImplementBloodTransfusionTime, it.ArtificialAirway, it.ProposeAirwayTime, it.SuccessAirwayTime, it.EmergencyOperation, it.ProposeOperationTime, it.StartOperationTime, it.OtherX, it.OtherXEndTime, it.OtherXType, it.BloodTransfusionInterval, it.ArtificialAirwayInterval, it.EmergencyOperationInterval, it.FastCTInterval, it.ChestXInterval, it.PelvisInterval, it.FASTInterval, it.OtherXInterval }).ExecuteCommand(); } if (SqlFunc.IsNullOrEmpty(outCome.GUID)) { outCome.GUID = Guid.NewGuid().ToString(); db.Insertable(outCome).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand(); } else { db.Updateable(outCome).UpdateColumns(it => new { it.Whereabouts, it.OutComeTime, it.HandoverTime, it.DataReporter, it.CompletionRate, it.SituationRemarks, it.TreatmentOutcome, it.TreatmentOtherContent, it.DeathDesc, it.KeepInDesc, it.ExactWereabouts, it.ReceivingHospital }).ExecuteCommand(); } if (lst.Count > 0) { db.Deleteable().In(it => it.PatientGuid, patient.GUID).ExecuteCommand(); for (int i = 0; i < lst.Count; i++) { db.Insertable(lst[i]).ExecuteCommand(); } } if (SqlFunc.IsNullOrEmpty(first.GUID)) { first.GUID = Guid.NewGuid().ToString(); db.Insertable(first).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand(); } else { db.Updateable(first).UpdateColumns(it => new { it.LeaveScene,it.ArriveHospital }).ExecuteCommand(); } db.Ado.CommitTran(); return true; } catch (Exception ex) { db.Ado.RollbackTran(); Help.WriteErrorLog("创伤患者质控信息保存(SaveQualityControl)", ex.ToString()); return false; } } } }