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_HospitalizationTimeDB: BaseDB, IT_Service_Trauma_HospitalizationTime { public SqlSugarClient db = GetClient(); public List GetHospitalizationTimeStatistics(string hospitalGuid, string startTime, string endTime, int flag) { 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; 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.Left, a.GUID == b.PatientGuid, JoinType.Left, a.GUID == c.PatientGuid)) .Where((a, b, c) => a.HospitalGuid == hospitalGuid && a.SystemModuleID == 4 && a.DeleteFlag == 0 && c.Grave == 1 && a.CreationDate >= SqlFunc.ToDate(startTime) && a.CreationDate <= SqlFunc.ToDate(endTime)) .Select((a, b, c) =>new { CreationDate=a.CreationDate, GUID=a.GUID, HospitalizationDays=b.HospitalizationDays, Grave =c.Grave, }) .ToList(); //严重创伤病人ICU住院天数 var twoClass = db.Queryable((a, b, c) => new JoinQueryInfos( JoinType.Left, a.GUID == b.PatientGuid, JoinType.Left, a.GUID == c.PatientGuid)) .Where((a, b, c) => a.HospitalGuid == hospitalGuid && a.SystemModuleID == 4 && a.DeleteFlag == 0 && b.Grave == 1 && a.CreationDate >= SqlFunc.ToDate(startTime) && a.CreationDate <= SqlFunc.ToDate(endTime)) .Select((a, b, c) =>new { CreationDate = a.CreationDate, GUID = a.GUID, Grave = b.Grave, ICUDays=c.ICUDays }) .ToList(); if (oneClass != null) { for (int i = 0; i < monthList.Count; i++) { TraumaHospitalizationTimeModel model = new TraumaHospitalizationTimeModel(); model.Month = monthList[i].ToString("yyyy-MM"); model.AvgHospitalizationDays = "0.0"; var temponeClass = oneClass.Where(j => j.CreationDate >= SqlFunc.ToDate(monthList[i].ToString()) && j.CreationDate <= Convert.ToDateTime(SqlFunc.ToDate(monthList[i].ToString() + "-01").AddMonths(1)) ).ToList(); if (temponeClass.Count > 0) { double a = 0; var temp = temponeClass.Where(i => !SqlFunc.IsNullOrEmpty(i.HospitalizationDays)); if (temp != null) { a = (double)temp.Sum(i => SqlFunc.ToInt64((i.HospitalizationDays))) / (double)temponeClass.Count; } model.AvgHospitalizationDays = a.ToString("#0.0"); } model.AvgICUDays = "0.0"; if (twoClass != null) { var temptwoClass = twoClass.Where(j => j.CreationDate >= SqlFunc.ToDate(monthList[i].ToString()) && j.CreationDate <= Convert.ToDateTime(SqlFunc.ToDate(monthList[i].ToString() + "-01").AddMonths(1))).ToList(); if (temponeClass.Count > 0) { double b = 0; var temp = temptwoClass.Where(i => !SqlFunc.IsNullOrEmpty(i.ICUDays)); if (temp != null) { b = (double)temp.Sum(i => SqlFunc.ToInt64((i.ICUDays))) / (double)temponeClass.Count; } model.AvgICUDays = b.ToString("#0.0"); } } list.Add(model); } } return list; } /// /// 计算月份 /// /// /// private string GetMonthZero(int month) { if (month < 10) { return "0" + month; } else { return month.ToString(); } } } }