StableVersion4.3/HL_FristAidPlatform_DataBase/Service/ChestPainUnitDB2.cs

126 lines
6.2 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;
using System.Text;
using System.Threading.Tasks;
namespace HL_FristAidPlatform_DataBase
{
public class ChestPainUnitDB2: BaseDB, IChestPainUnit2
{
public SqlSugarClient db = GetClient();
public List<CaseStatisticsSTEMIModel> GetCaseStatisticsSTEMI(string hospitalGuid, string startTime, string endTime)
{
List<CaseStatisticsSTEMIModel> list = new List<CaseStatisticsSTEMIModel>();
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, T_Service_ChestPain_FirstAIDInfo,T_Service_ChestPain_TreatmentInfo>((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<CaseStatisticsSTEMIModel> GetCaseStatisticsSTEMITransfer(string hospitalGuid, string startTime, string endTime)
{
List<CaseStatisticsSTEMIModel> list = new List<CaseStatisticsSTEMIModel>();
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));
}
//CW_ZY_Leave_Outhospital_Time 转院离开医院时间
var oneClass = db.Queryable<T_Service_Patient, T_Service_ChestPain_FirstAIDInfo, T_Service_ChestPain_TreatmentInfo>((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;
}
/// <summary>
/// 计算月份
/// </summary>
/// <param name="month"></param>
/// <returns></returns>
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;
}
}
}