StableVersion4.3/HL_FristAidPlatform_DataBase/Service/T_Service_Trauma_Hospitaliz...

126 lines
5.3 KiB
C#
Raw Permalink Normal View History

2024-03-11 09:47:34 +08:00
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<TraumaHospitalizationTimeModel> GetHospitalizationTimeStatistics(string hospitalGuid, string startTime, string endTime, int flag)
{
List<TraumaHospitalizationTimeModel> list = new List<TraumaHospitalizationTimeModel>();
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; 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, T_Service_Trauma_ReceiveInfo, T_Service_Trauma_ISSAIS>((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<T_Service_Patient, T_Service_Trauma_ISSAIS, T_Service_Trauma_ICUList>((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;
}
/// <summary>
/// 计算月份
/// </summary>
/// <param name="month"></param>
/// <returns></returns>
private string GetMonthZero(int month)
{
if (month < 10)
{
return "0" + month;
}
else
{
return month.ToString();
}
}
}
}