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;
}
}
}