126 lines
6.2 KiB
C#
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;
|
|
}
|
|
|
|
}
|
|
}
|