97 lines
5.3 KiB
C#
97 lines
5.3 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
|
|
{
|
|
/// <summary>
|
|
/// 胸痛随访统计
|
|
/// </summary>
|
|
public class T_Service_Chest_FollowUpStatisticsDB : BaseDB, IT_Service_Chest_FollowUpStatistics
|
|
{
|
|
public SqlSugarClient db = GetClient();
|
|
|
|
/// <summary>
|
|
/// 随访率统计
|
|
/// </summary>
|
|
/// <param name="stratTime"></param>
|
|
/// <param name="endTime"></param>
|
|
/// <returns></returns>
|
|
public FollowUpRateModel GetFollowUpStatistics(string startTime, string endTime)
|
|
{
|
|
FollowUpRateModel model = new FollowUpRateModel();
|
|
var oneClass = db.Queryable<T_Service_ChestPain_FollowUpInfo, T_Service_Patient, T_Service_ChestPain_OutComeInfo>((a, b, c) => new JoinQueryInfos(JoinType.Left, a.registerId == b.GUID, JoinType.Left, a.registerId == c.PatientGuid))
|
|
.Where((a, b, c) => !SqlFunc.IsNullOrEmpty(a.actualEvaluationDate))
|
|
.WhereIF(!SqlFunc.IsNullOrEmpty(startTime), (a, b, c) => c.Leave_Time >= Convert.ToDateTime(startTime))
|
|
.WhereIF(!SqlFunc.IsNullOrEmpty(endTime), (a, b, c) => c.Leave_Time <= Convert.ToDateTime(endTime).AddDays(1))
|
|
.Select((a, b, c) => new { a.month,a.isFollowUp, a.actualEvaluationDate, c.Leave_Time }).ToList();
|
|
int count = 0;
|
|
int qualifiedCount = 0;
|
|
if (oneClass != null)
|
|
{
|
|
count = 0;
|
|
qualifiedCount = 0;
|
|
count = oneClass.Where(i => i.month == "1").Count();
|
|
qualifiedCount = oneClass.Where(i => i.month == "1" && i.isFollowUp == "1" && Convert.ToDateTime(i.actualEvaluationDate) >= Convert.ToDateTime(i.Leave_Time).AddDays(20) && Convert.ToDateTime(i.actualEvaluationDate) <= Convert.ToDateTime(i.Leave_Time).AddDays(40)).Count();
|
|
if (qualifiedCount > 0)
|
|
model.IntervalJanuary = (int)(((double)qualifiedCount / (double)count) * 100);
|
|
|
|
count = 0;
|
|
qualifiedCount = 0;
|
|
count = oneClass.Where(i => i.month == "3").Count();
|
|
qualifiedCount = oneClass.Where(i => i.month == "3" && i.isFollowUp == "1" && Convert.ToDateTime(i.actualEvaluationDate) >= Convert.ToDateTime(i.Leave_Time).AddDays(80) && Convert.ToDateTime(i.actualEvaluationDate) <= Convert.ToDateTime(i.Leave_Time).AddDays(100)).Count();
|
|
if (qualifiedCount > 0)
|
|
model.IntervalMarch = (int)(((double)qualifiedCount / (double)count) * 100);
|
|
|
|
count = 0;
|
|
qualifiedCount = 0;
|
|
count = oneClass.Where(i => i.month == "6").Count();
|
|
qualifiedCount = oneClass.Where(i => i.month == "6" && i.isFollowUp == "1" && Convert.ToDateTime(i.actualEvaluationDate) >= Convert.ToDateTime(i.Leave_Time).AddDays(170) && Convert.ToDateTime(i.actualEvaluationDate) <= Convert.ToDateTime(i.Leave_Time).AddDays(190)).Count();
|
|
if (qualifiedCount > 0)
|
|
model.IntervalJune = (int)(((double)qualifiedCount / (double)count) * 100);
|
|
|
|
count = 0;
|
|
qualifiedCount = 0;
|
|
count = oneClass.Where(i => i.month == "12").Count();
|
|
qualifiedCount = oneClass.Where(i => i.month == "12" && i.isFollowUp == "1" && Convert.ToDateTime(i.actualEvaluationDate) >= Convert.ToDateTime(i.Leave_Time).AddDays(355) && Convert.ToDateTime(i.actualEvaluationDate) <= Convert.ToDateTime(i.Leave_Time).AddDays(375)).Count();
|
|
if (qualifiedCount > 0)
|
|
model.IntervalDecember = (int)(((double)qualifiedCount / (double)count) * 100);
|
|
}
|
|
|
|
return model;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 随访上传总数统计
|
|
/// </summary>
|
|
/// <param name="startTime"></param>
|
|
/// <param name="endTime"></param>
|
|
/// <returns></returns>
|
|
public FollowUpRateModel GetFollowUpReporting(string startTime, string endTime)
|
|
{
|
|
|
|
FollowUpRateModel model = new FollowUpRateModel();
|
|
var oneClass = db.Queryable<T_Service_ChestPain_FollowUpInfo, T_Service_Patient, T_Service_ChestPain_OutComeInfo>((a, b, c) => new JoinQueryInfos(JoinType.Left, a.registerId == b.GUID, JoinType.Left, a.registerId == c.PatientGuid))
|
|
.Where((a, b, c) => a.status == "2")
|
|
.WhereIF(!SqlFunc.IsNullOrEmpty(startTime), (a, b, c) => c.Leave_Time >= Convert.ToDateTime(startTime))
|
|
.WhereIF(!SqlFunc.IsNullOrEmpty(endTime), (a, b, c) => c.Leave_Time <= Convert.ToDateTime(endTime).AddDays(1))
|
|
.Select((a, b, c) => new { a.month }).ToList();
|
|
if (oneClass != null)
|
|
{
|
|
model.IntervalJanuary= oneClass.Where(i => i.month == "1").Count();
|
|
model.IntervalMarch = oneClass.Where(i => i.month == "3").Count();
|
|
model.IntervalJune = oneClass.Where(i => i.month == "6").Count();
|
|
model.IntervalDecember = oneClass.Where(i => i.month == "12").Count();
|
|
}
|
|
return model;
|
|
}
|
|
|
|
}
|
|
}
|