192 lines
9.8 KiB
C#
192 lines
9.8 KiB
C#
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();
|
|
|
|
/// <summary>
|
|
/// 孕产妇患者趋势图数据
|
|
/// </summary>
|
|
/// <param name="patientGuid"></param>
|
|
/// <param name="flag"></param>
|
|
/// <returns></returns>
|
|
public List<KeyValue> GetCriticalPregnantData(string hospitalGuid, string startTime, string endTime)
|
|
{
|
|
List<KeyValue> list = new List<KeyValue>();
|
|
|
|
int Month = (Convert.ToDateTime(endTime).Year - Convert.ToDateTime(startTime).Year) * 12 + (Convert.ToDateTime(endTime).Month - Convert.ToDateTime(startTime).Month);
|
|
List<DateTime> monthList = new List<DateTime>();
|
|
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<T_Service_Patient>()
|
|
.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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 孕产妇患者转院趋势图数据
|
|
/// </summary>
|
|
/// <param name="patientGuid"></param>
|
|
/// <param name="flag"></param>
|
|
/// <returns></returns>
|
|
public List<PregnantTransferTrend> GetPregnantTransferTrend(string hospitalGuid, string startTime, string endTime, long systemModelId)
|
|
{
|
|
List<PregnantTransferTrend> list = new List<PregnantTransferTrend>();
|
|
|
|
int Month = (Convert.ToDateTime(endTime).Year - Convert.ToDateTime(startTime).Year) * 12 + (Convert.ToDateTime(endTime).Month - Convert.ToDateTime(startTime).Month);
|
|
List<DateTime> monthList = new List<DateTime>();
|
|
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<T_Service_Patient>()
|
|
.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<T_Service_CriticalPregnant_Transport, T_Service_Patient>((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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 计算月份
|
|
/// </summary>
|
|
/// <param name="month"></param>
|
|
/// <returns></returns>
|
|
public string GetMonthZero(int month)
|
|
{
|
|
if (month < 10)
|
|
{
|
|
return "0" + month;
|
|
}
|
|
else
|
|
{
|
|
return month.ToString();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取病例个数统计
|
|
/// </summary>
|
|
/// <param name="hospitalGuid"></param>
|
|
/// <param name="systemModelId"></param>
|
|
/// <returns></returns>
|
|
public MaternalModel GetCaseDataModel(string hospitalGuid, long systemModelId)
|
|
{
|
|
MaternalModel model = new MaternalModel();
|
|
var oneClass = db.Queryable<T_Service_Patient, T_Service_CriticalPregnant_Transport, T_Service_CriticalPregnant_BasicInfo, T_Service_CriticalPregnant_StandardScore>((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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取来院方式总数统计
|
|
/// </summary>
|
|
/// <param name="hospitalGuid"></param>
|
|
/// <param name="systemModelId"></param>
|
|
/// <returns></returns>
|
|
public Dictionary<string, int> GetComeHospitalWay(string hospitalGuid, long systemModelId)
|
|
{
|
|
Dictionary<string, int> dictionary = new Dictionary<string, int>();
|
|
var oneClass = db.Queryable<T_Service_Patient, T_Service_CriticalPregnant_BasicInfo>((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;
|
|
}
|
|
}
|
|
}
|