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_Chest_FollowUpStatisticsDB : BaseDB, IT_Service_Chest_FollowUpStatistics { public SqlSugarClient db = GetClient(); /// /// 随访率统计 /// /// /// /// public FollowUpRateModel GetFollowUpStatistics(string startTime, string endTime) { FollowUpRateModel model = new FollowUpRateModel(); var oneClass = db.Queryable((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; } /// /// 随访上传总数统计 /// /// /// /// public FollowUpRateModel GetFollowUpReporting(string startTime, string endTime) { FollowUpRateModel model = new FollowUpRateModel(); var oneClass = db.Queryable((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; } } }