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 ChestPainUnitDB2: BaseDB, IChestPainUnit2 { public SqlSugarClient db = GetClient(); public List GetCaseStatisticsSTEMI(string hospitalGuid, string startTime, string endTime) { List list = new List(); int Month = (Convert.ToDateTime(endTime).Year - Convert.ToDateTime(startTime).Year) * 12 + (Convert.ToDateTime(endTime).Month - Convert.ToDateTime(startTime).Month); List monthList = new List(); for (int i = 0; i < Month + 1; i++) { string res = Convert.ToDateTime(startTime).AddMonths(i).Year + "-" + GetMonthZero(Convert.ToDateTime(startTime).AddMonths(i).Month) + "-01"; DateTime dt = Convert.ToDateTime(res); monthList.Add(dt.AddDays(1 - dt.Day)); } var oneClass = db.Queryable((a, b, c) => new JoinQueryInfos( JoinType.Inner, a.GUID == b.PatientGuid, JoinType.Inner, a.GUID == c.PatientGuid)) .Where((a, b, c) => a.HospitalGuid == hospitalGuid && a.SystemModuleID == 14 && a.DeleteFlag == 0 && b.Attack_Time != null && c.CP_Diagnosis_Code == "1"&&c.NSTEMI_Strategy=="0") .WhereIF(!SqlFunc.IsNullOrEmpty(startTime), (a, b, c) => b.CW_120_Arrived_Hospital_Time >= SqlFunc.ToDate(startTime)) .WhereIF(!SqlFunc.IsNullOrEmpty(endTime), (a, b, c) => b.CW_120_Arrived_Hospital_Time <= SqlFunc.ToDate(endTime)) .Select((a, b, c) => new { b.CW_120_Arrived_Hospital_Time, b.Throm_Start_Time }).ToList(); if (oneClass != null) { for (int i = 0; i < monthList.Count; i++) { CaseStatisticsSTEMIModel model = new CaseStatisticsSTEMIModel(); model.Month = monthList[i].ToString("yyyy-MM"); int count = oneClass.Where(j => j.CW_120_Arrived_Hospital_Time >= SqlFunc.ToDate(monthList[i].ToString()) && j.CW_120_Arrived_Hospital_Time <= Convert.ToDateTime(SqlFunc.ToDate(monthList[i].ToString()).AddMonths(1).ToString("yyyy-MM-01")).AddDays(-1)&&GetMinutes(Convert.ToDateTime(j.CW_120_Arrived_Hospital_Time),Convert.ToDateTime(j.Throm_Start_Time))<=30).Count(); model.Count = count + ""; list.Add(model); } } return list; } public List GetCaseStatisticsSTEMITransfer(string hospitalGuid, string startTime, string endTime) { List list = new List(); int Month = (Convert.ToDateTime(endTime).Year - Convert.ToDateTime(startTime).Year) * 12 + (Convert.ToDateTime(endTime).Month - Convert.ToDateTime(startTime).Month); List monthList = new List(); for (int i = 0; i < Month + 1; i++) { string res = Convert.ToDateTime(startTime).AddMonths(i).Year + "-" + GetMonthZero(Convert.ToDateTime(startTime).AddMonths(i).Month) + "-01"; DateTime dt = Convert.ToDateTime(res); monthList.Add(dt.AddDays(1 - dt.Day)); } //CW_ZY_Leave_Outhospital_Time 转院离开医院时间 var oneClass = db.Queryable((a, b, c) => new JoinQueryInfos( JoinType.Inner, a.GUID == b.PatientGuid, JoinType.Inner, a.GUID == c.PatientGuid)) .Where((a, b, c) => a.HospitalGuid == hospitalGuid && a.SystemModuleID == 14 && a.DeleteFlag == 0 && b.Attack_Time != null && c.CP_Diagnosis_Code == "1" && c.NSTEMI_Strategy == "2"|| c.NSTEMI_Strategy == "3") .WhereIF(!SqlFunc.IsNullOrEmpty(startTime), (a, b, c) => b.CW_120_Arrived_Hospital_Time >= SqlFunc.ToDate(startTime)) .WhereIF(!SqlFunc.IsNullOrEmpty(endTime), (a, b, c) => b.CW_120_Arrived_Hospital_Time <= SqlFunc.ToDate(endTime)) .Select((a, b, c) => new { b.CW_120_Arrived_Hospital_Time, b.CW_ZY_Leave_Outhospital_Time }).ToList(); if (oneClass != null) { for (int i = 0; i < monthList.Count; i++) { CaseStatisticsSTEMIModel model = new CaseStatisticsSTEMIModel(); model.Month = monthList[i].ToString("yyyy-MM"); int count = oneClass.Where(j => j.CW_120_Arrived_Hospital_Time >= SqlFunc.ToDate(monthList[i].ToString()) && j.CW_120_Arrived_Hospital_Time <= Convert.ToDateTime(SqlFunc.ToDate(monthList[i].ToString()).AddMonths(1).ToString("yyyy-MM-01")).AddDays(-1) && GetMinutes(Convert.ToDateTime(j.CW_120_Arrived_Hospital_Time), Convert.ToDateTime(j.CW_ZY_Leave_Outhospital_Time)) <= 30).Count(); model.Count = count + ""; list.Add(model); } } return list; } /// /// 计算月份 /// /// /// public string GetMonthZero(int month) { if (month < 10) { return "0" + month; } else { return month.ToString(); } } public int GetMinutes(DateTime startTime, DateTime endTime) { DateTime dtone = Convert.ToDateTime(startTime); DateTime dttwo = Convert.ToDateTime(endTime); TimeSpan span = dttwo.Subtract(dtone); //算法是dttwo 减去 dtone int ss = span.Days * 1440 + span.Hours * 60 + span.Minutes; return ss; } } }