using HL_FristAidPlatform_Help; using HL_FristAidPlatform_IDataBase; using HL_FristAidPlatform_Models; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; namespace HL_FristAidPlatform_DataBase { public class T_Service_CriticalPregnant_StatisticsSummaryDB : BaseDB, IT_Service_CriticalPregnant_StatisticsSummary { public SqlSugarClient db = GetClient(); /// /// 孕产妇患者趋势图数据 /// /// /// /// public List GetCriticalPregnantData(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() .Where(a => a.HospitalGuid == hospitalGuid && a.SystemModuleID == 5 && a.DeleteFlag == 0) .WhereIF(!SqlFunc.IsNullOrEmpty(startTime), a => a.CreationDate >= SqlFunc.ToDate(startTime)) .WhereIF(!SqlFunc.IsNullOrEmpty(endTime), a => a.CreationDate <= SqlFunc.ToDate(endTime)) .ToList(); if (oneClass != null) { int count = 0; for (int i = 0; i < monthList.Count; i++) { KeyValue model = new KeyValue(); model.key = monthList[i].ToString("yyyy-MM"); count = 0; count = oneClass.Where(a => a.CreationDate >= SqlFunc.ToDate(monthList[i].ToString()) && a.CreationDate <= Convert.ToDateTime(SqlFunc.ToDate(monthList[i].ToString()).AddMonths(1).ToString("yyyy-MM-01"))).Count(); model.value = count + ""; list.Add(model); } } return list; } /// /// 孕产妇患者转院趋势图数据 /// /// /// /// public List GetPregnantTransferTrend(string hospitalGuid, string startTime, string endTime, long systemModelId) { 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() .Where(a => a.HospitalGuid == hospitalGuid && a.SystemModuleID == systemModelId && a.DeleteFlag == 0) .WhereIF(!SqlFunc.IsNullOrEmpty(startTime), a => a.CreationDate >= SqlFunc.ToDate(startTime)) .WhereIF(!SqlFunc.IsNullOrEmpty(endTime), a => a.CreationDate <= SqlFunc.ToDate(endTime)) .ToList(); //转院人数 var twoClass = db.Queryable((a, b) => new JoinQueryInfos(JoinType.Left, a.PatientGUID == b.GUID)) .Where((a, b) => b.HospitalGuid == hospitalGuid && b.SystemModuleID == systemModelId && a.DeleteFlag == 0) .WhereIF(!SqlFunc.IsNullOrEmpty(startTime), a => a.CreationDate >= SqlFunc.ToDate(startTime)) .WhereIF(!SqlFunc.IsNullOrEmpty(endTime), a => a.CreationDate <= SqlFunc.ToDate(endTime)) .Select((a, b) => new { b.GUID, b.CreationDate }) .ToList(); if (oneClass != null) { int sumCount = 0; int transferCount = 0; for (int i = 0; i < monthList.Count; i++) { PregnantTransferTrend model = new PregnantTransferTrend(); model.Month = monthList[i].ToString("yyyy-MM"); sumCount = 0; sumCount = oneClass.Where(a => a.CreationDate >= SqlFunc.ToDate(monthList[i].ToString()) && a.CreationDate <= Convert.ToDateTime(SqlFunc.ToDate(monthList[i].ToString()).AddMonths(1).ToString("yyyy-MM-01"))).Count(); if (twoClass != null) { transferCount = 0; transferCount = twoClass.Where(a => a.CreationDate >= SqlFunc.ToDate(monthList[i].ToString()) && a.CreationDate <= Convert.ToDateTime(SqlFunc.ToDate(monthList[i].ToString()).AddMonths(1).ToString("yyyy-MM-01"))).Count(); } model.SumCount = sumCount + ""; model.TransferCount = transferCount + ""; list.Add(model); } } return list; } /// /// 计算月份 /// /// /// public string GetMonthZero(int month) { if (month < 10) { return "0" + month; } else { return month.ToString(); } } /// /// 获取病例个数统计 /// /// /// /// public MaternalModel GetCaseDataModel(string hospitalGuid, long systemModelId) { MaternalModel model = new MaternalModel(); var oneClass = db.Queryable((a, b, c, d) => new JoinQueryInfos(JoinType.Left, a.GUID == b.PatientGUID, JoinType.Left, a.GUID == c.PatientGuid, JoinType.Left, a.GUID == d.PatientGUID)) .Where((a, b, c, d) => a.HospitalGuid == hospitalGuid && a.SystemModuleID == systemModelId && a.DeleteFlag == 0) .Select((a, b, c, d) => new { a.GUID, a.CreationDate, a.EmergencyState, c.ComeHospitalWay, d.PatientGUID }) .ToList(); if (oneClass != null) { DateTime dt = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")); model.ToDayCount = oneClass.Where((a, b) => a.CreationDate >= dt && a.CreationDate <= dt.AddDays(1)).Count(); DateTime startQuarter = dt.AddMonths(0 - (dt.Month - 1) % 3).AddDays(1 - dt.Day); DateTime endQuarter = startQuarter.AddMonths(3).AddDays(-1); model.QuarterCount = oneClass.Where((a, b) => a.CreationDate >= startQuarter && a.CreationDate <= endQuarter).Count(); DateTime startWeek = dt.AddDays(1 - Convert.ToInt32(dt.DayOfWeek.ToString("d"))); DateTime endWeek = startWeek.AddDays(6); model.WeekCount = oneClass.Where((a, b) => a.CreationDate >= startWeek && a.CreationDate <= endWeek).Count(); DateTime startMonth = dt.AddDays(1 - dt.Day); DateTime endMonth = startMonth.AddMonths(1).AddDays(-1); model.MonthCount = oneClass.Where((a, b) => a.CreationDate >= startMonth && a.CreationDate <= endMonth).Count(); DateTime startYear = new DateTime(dt.Year, 1, 1); DateTime endYear = new DateTime(dt.Year, 12, 31); model.YearCount = oneClass.Where((a, b) => a.CreationDate >= startYear && a.CreationDate <= endYear).Count(); model.TotalCount = oneClass.Count(); model.TransferCount = oneClass.Where((a, b) => a.EmergencyState == 2).Count(); model.GradedCount= oneClass.Where((a, b) => !SqlFunc.IsNullOrEmpty(a.PatientGUID)).Count(); } return model; } /// /// 获取来院方式总数统计 /// /// /// /// public Dictionary GetComeHospitalWay(string hospitalGuid, long systemModelId) { Dictionary dictionary = new Dictionary(); var oneClass = db.Queryable((a, b) => new JoinQueryInfos(JoinType.Left, a.GUID == b.PatientGuid)).Where((a, b) => a.HospitalGuid == hospitalGuid && a.SystemModuleID == systemModelId && a.DeleteFlag == 0) .Select((a, b) => new { b.ComeHospitalWay }).ToList(); if (oneClass != null) { dictionary.Add("call", oneClass.Where((a, b) => a.ComeHospitalWay == "1").Count()); dictionary.Add("zxly", oneClass.Where((a, b) => a.ComeHospitalWay == "2").Count()); dictionary.Add("zy", oneClass.Where((a, b) => a.ComeHospitalWay == "3").Count()); dictionary.Add("ynfb", oneClass.Where((a, b) => a.ComeHospitalWay == "4").Count()); } return dictionary; } } }