StableVersion4.3/HL_FristAidPlatform_DataBase/Service/MassiveDataStatisticsDB.cs

1234 lines
57 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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 MassiveDataStatisticsDB : BaseDB, IMassiveDataStatistics
{
public SqlSugarClient db = GetClient();
#region 胸痛大屏数据展示查询
/// <summary>
/// 来院方式统计--胸痛大屏数据
/// </summary>
/// <param name="hosptialGuid"></param>
/// <returns></returns>
public List<MassiveDataStatisticsModel> GetChestPainToHospitalWay(string hosptialGuid)
{
List<MassiveDataStatisticsModel> list = new List<MassiveDataStatisticsModel>();
List<MassiveDataStatisticsModel> lst = new List<MassiveDataStatisticsModel>();
lst = db.Queryable<T_Service_Patient, T_Service_ChestPain_FirstAIDInfo>((a, b) => a.GUID == b.PatientGuid)
.Where((a, b) => a.HospitalGuid == hosptialGuid && a.SystemModuleID == 2 && a.DeleteFlag == 0)
.Select((a, b) => new MassiveDataStatisticsModel()
{
name = b.CW_Coming_Way_Code
}).ToList();
MassiveDataStatisticsModel m1 = new MassiveDataStatisticsModel();
m1.name = "120来院";
MassiveDataStatisticsModel m2 = new MassiveDataStatisticsModel();
m2.name = "转院";
MassiveDataStatisticsModel m3 = new MassiveDataStatisticsModel();
m3.name = "自行来院";
MassiveDataStatisticsModel m4 = new MassiveDataStatisticsModel();
m4.name = "院内发病";
//CW_Coming_Way_Code 1呼叫120或其他出车 2转院包含任何机构 3自行来院 4院内发病
if (lst.Count > 0)
{
m1.value = lst.Where(i => i.name == "1").Count();
m2.value = lst.Where(i => i.name == "2").Count();
m3.value = lst.Where(i => i.name == "3").Count();
m4.value = lst.Where(i => i.name == "4").Count();
}
list.Add(m1);
list.Add(m2);
list.Add(m3);
list.Add(m4);
return list;
}
/// <summary>
/// 胸痛单元数据统计--胸痛大屏数据
/// </summary>
/// <param name="hosptialGuid"></param>
/// <returns></returns>
public List<MassiveDataStatisticsHospitalModel> GetChestPainToNetworkHospital(string hosptialGuid)
{
List<MassiveDataStatisticsHospitalModel> list = new List<MassiveDataStatisticsHospitalModel>();
//网络医院
List<MassiveDataStatisticsHospitalModel> Networklist = new List<MassiveDataStatisticsHospitalModel>();
//救治单元
List<MassiveDataStatisticsHospitalModel> Unitlist = new List<MassiveDataStatisticsHospitalModel>();
var highlist = db.Queryable<T_Base_Hospital>().Where(it => it.GUID == hosptialGuid).Select(it => it.Name).First();
var temphighlist = db.Queryable<T_Base_Hospital>().Where(it => it.ParentGUID == hosptialGuid).Select(it => it.Name).ToList();
var templist = db.Queryable<T_Service_Patient, T_Service_ChestPain_FirstAIDInfo>((a, b) => a.GUID == b.PatientGuid)
.Where((a, b) => a.HospitalGuid == hosptialGuid && a.SystemModuleID == 2 && a.DeleteFlag == 0 && b.CW_ZY_Trans_Type == "1" || b.CW_ZY_Trans_Type == "2")
.GroupBy((a, b) => b.CW_ZY_Trans_Hospital_Name)
.Select((a, b) => new MassiveDataStatisticsHospitalModel()
{
lowname = b.CW_ZY_Trans_Hospital_Name,
highname = "",
value = SqlFunc.AggregateCount(b.CW_ZY_Trans_Hospital_Name)
}).ToList();
for (int i = 0; i < temphighlist.Count(); i++)
{
MassiveDataStatisticsHospitalModel model = new MassiveDataStatisticsHospitalModel();
model.highname = highlist;
model.lowname = temphighlist[i];
model.value = 0;
foreach (var item in templist)
{
if (!string.IsNullOrEmpty(item.lowname))
{
if (temphighlist[i] == item.lowname)
{
model.value = item.value;
//var copyTempList = templist.Remove(item);
}
}
}
Unitlist.Add(model);
}
foreach (var item in Unitlist)
{
list.Add(item);
}
foreach (var item in templist)
{
if (!string.IsNullOrEmpty(item.lowname))
{
item.highname = highlist;
list.Add(item);
}
}
return list;
}
/// <summary>
/// 绕行统计
/// </summary>
/// <param name="hosptialGuid"></param>
/// <returns></returns>
public List<MassiveDataStatisticsModel> GetChestPainDetour(string hosptialGuid)
{
List<MassiveDataStatisticsModel> list = new List<MassiveDataStatisticsModel>();
List<T_Service_Patient> lst = new List<T_Service_Patient>();
lst = db.Queryable<T_Service_Patient>().Where(i => i.HospitalGuid == hosptialGuid && i.SystemModuleID == 2 && i.DeleteFlag == 0).ToList();
/// 1:未绕行 2:单绕 3:双绕 4:三绕
MassiveDataStatisticsModel m1 = new MassiveDataStatisticsModel();
m1.name = "未绕行";
MassiveDataStatisticsModel m2 = new MassiveDataStatisticsModel();
m2.name = "单绕";
MassiveDataStatisticsModel m3 = new MassiveDataStatisticsModel();
m3.name = "双绕";
MassiveDataStatisticsModel m4 = new MassiveDataStatisticsModel();
m4.name = "三绕";
if (lst.Count > 0)
{
m1.value = lst.Where(i => i.IsGreenChannel == 1).Count();
m2.value = lst.Where(i => i.IsGreenChannel == 2).Count();
m3.value = lst.Where(i => i.IsGreenChannel == 3).Count();
m4.value = lst.Where(i => i.IsGreenChannel == 4).Count();
}
list.Add(m1);
list.Add(m2);
list.Add(m3);
list.Add(m4);
return list;
}
/// <summary>
/// 人群分布统计-性别,年龄
/// </summary>
/// <param name="hosptialGuid"></param>
/// <returns></returns>
public PopulationDistributionModel GetPopulationDistribution(string hosptialGuid)
{
List<T_Service_Patient> lst = new List<T_Service_Patient>();
lst = db.Queryable<T_Service_Patient>().Where(i => i.HospitalGuid == hosptialGuid && i.SystemModuleID == 2 && i.DeleteFlag == 0).ToList();
PopulationDistributionModel population = new PopulationDistributionModel();
if (lst.Count > 0)
{
int i = lst.Where(i => i.Gender == 1).Count();
int j = lst.Where(i => i.Gender == 2).Count();
if ((i + j) > 0)
{
double temp1 = i / ((double)i + (double)j);
population.manProprtion = temp1.ToString("#0.00");
double temp2 = 1 - temp1;
population.womanProprtion = temp2.ToString("#0.00");
}
population.data = new List<MassiveDataStatisticsModel>();
MassiveDataStatisticsModel m1 = new MassiveDataStatisticsModel();
m1.name = "50岁以下";
m1.value = lst.Where(x => x.Age < 50 && x.Age >= 0).Count();
population.data.Add(m1);
MassiveDataStatisticsModel m2 = new MassiveDataStatisticsModel();
m2.name = "50-60岁";
m2.value = lst.Where(x => x.Age >= 50 && x.Age < 60).Count();
population.data.Add(m2);
MassiveDataStatisticsModel m3 = new MassiveDataStatisticsModel();
m3.name = "60-70岁";
m3.value = lst.Where(x => x.Age >= 60 && x.Age < 70).Count();
population.data.Add(m3);
MassiveDataStatisticsModel m4 = new MassiveDataStatisticsModel();
m4.name = "70-80岁";
m4.value = lst.Where(x => x.Age >= 70 && x.Age < 80).Count();
population.data.Add(m4);
MassiveDataStatisticsModel m5 = new MassiveDataStatisticsModel();
m5.name = "80-90岁";
m5.value = lst.Where(x => x.Age >= 80 && x.Age < 90).Count();
population.data.Add(m5);
MassiveDataStatisticsModel m6 = new MassiveDataStatisticsModel();
m6.name = "90岁以上";
m5.value = lst.Where(x => x.Age >= 90).Count();
population.data.Add(m6);
}
return population;
}
/// <summary>
/// 病例个数统计
/// </summary>
/// <param name="hosptialGuid"></param>
/// <returns></returns>
public List<MassiveDataStatisticsModel> GetChestPainDataStatistics(string hosptialGuid)
{
List<MassiveDataStatisticsModel> list = new List<MassiveDataStatisticsModel>();
List<T_Service_Patient> lst = new List<T_Service_Patient>();
lst = db.Queryable<T_Service_Patient>().Where(i => i.HospitalGuid == hosptialGuid && i.SystemModuleID == 2 && i.DeleteFlag == 0).ToList();
MassiveDataStatisticsModel m1 = new MassiveDataStatisticsModel();
m1.name = "今日新增";
MassiveDataStatisticsModel m2 = new MassiveDataStatisticsModel();
m2.name = "本周新增";
MassiveDataStatisticsModel m3 = new MassiveDataStatisticsModel();
m3.name = "本月新增";
MassiveDataStatisticsModel m4 = new MassiveDataStatisticsModel();
m4.name = "本季新增";
MassiveDataStatisticsModel m5 = new MassiveDataStatisticsModel();
m5.name = "本年新增";
MassiveDataStatisticsModel m6 = new MassiveDataStatisticsModel();
m6.name = "累计新增";
if (lst.Count > 0)
{
DateTime dt = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));
m1.value = lst.Where(i => i.CreationDate >= dt && i.CreationDate < dt.AddDays(1)).Count();
DateTime startWeek = dt.AddDays(1 - Convert.ToInt32(dt.DayOfWeek.ToString("d")));
DateTime endWeek = startWeek.AddDays(6);
m2.value = lst.Where(i => i.CreationDate >= startWeek && i.CreationDate <= endWeek).Count();
DateTime startMonth = dt.AddDays(1 - dt.Day);
DateTime endMonth = startMonth.AddMonths(1).AddDays(-1);
m3.value = lst.Where(i => i.CreationDate >= startMonth && i.CreationDate <= endMonth).Count();
DateTime startQuarter = dt.AddMonths(0 - (dt.Month - 1) % 3).AddDays(1 - dt.Day);
DateTime endQuarter = startQuarter.AddMonths(3).AddDays(-1);
m4.value = lst.Where(i => i.CreationDate >= startQuarter && i.CreationDate <= endQuarter).Count();
DateTime startYear = new DateTime(dt.Year, 1, 1);
DateTime endYear = new DateTime(dt.Year, 12, 31);
m5.value = lst.Where(i => i.CreationDate >= startYear && i.CreationDate <= endYear).Count();
m6.value = lst.Count();
}
list.Add(m1);
list.Add(m2);
list.Add(m3);
list.Add(m4);
list.Add(m5);
list.Add(m6);
return list;
}
/// <summary>
/// 随访统计
/// </summary>
/// <param name="hosptialGuid"></param>
/// <returns></returns>
public List<ChesPainFollowUpStatostocsModel> GetFollowUpStatostocs(string hosptialGuid)
{
List<ChesPainFollowUpStatostocsModel> list = new List<ChesPainFollowUpStatostocsModel>();
List<MassiveDataStatisticsModel> lst = new List<MassiveDataStatisticsModel>();
lst = db.Queryable<T_Service_Patient, T_Service_ChestPain_FollowUpInfo>((a, b) => a.GUID == b.registerId).Where((a, b) => a.HospitalGuid == hosptialGuid && a.SystemModuleID == 2 && a.DeleteFlag == 0).Select((a, b) => new MassiveDataStatisticsModel()
{
name = b.month,
value = b.isFollowUp == "1" ? 1 : 0
}).ToList();
ChesPainFollowUpStatostocsModel m1 = new ChesPainFollowUpStatostocsModel();
m1.name = "已随访";
m1.data = new List<Data>();
Data d1 = new Data();
d1.value = lst.Where(i => i.name == "1" && i.value == 1).Count();
m1.data.Add(d1);
Data d3 = new Data();
d3.value = lst.Where(i => i.name == "3" && i.value == 1).Count();
m1.data.Add(d3);
Data d6 = new Data();
d6.value = lst.Where(i => i.name == "6" && i.value == 1).Count();
m1.data.Add(d6);
Data d12 = new Data();
d12.value = lst.Where(i => i.name == "12" && i.value == 1).Count();
m1.data.Add(d12);
ChesPainFollowUpStatostocsModel m2 = new ChesPainFollowUpStatostocsModel();
m2.name = "未随访";
m2.data = new List<Data>();
Data t1 = new Data();
t1.value = lst.Where(i => i.name == "1" && i.value != 1).Count();
m2.data.Add(t1);
Data t3 = new Data();
t3.value = lst.Where(i => i.name == "3" && i.value != 1).Count();
m2.data.Add(t3);
Data t6 = new Data();
t6.value = lst.Where(i => i.name == "6" && i.value != 1).Count();
m2.data.Add(t6);
Data t12 = new Data();
t12.value = lst.Where(i => i.name == "12" && i.value != 1).Count();
m2.data.Add(t12);
list.Add(m1);
list.Add(m2);
return list;
}
/// <summary>
/// (胸痛/卒中)地图数据
/// </summary>
/// <param name="hosptialGuid">医院GUID</param>
/// <param name="systemModuleID">2胸痛 3卒中</param>
/// <param name="type">1 省级地图数据 2 市级地图数据 </param>
/// <param name="name1">区域上级</param>
/// <param name="name2">所有区域名称逗号分隔</param>
/// <returns></returns>
public List<MapDistributionDataModel> GetChestPainMapDistributionData(string hosptialGuid, int systemModuleID, int type, string name1, string name2)
{
List<MapDistributionDataModel> list = new List<MapDistributionDataModel>();
List<AttackAddressModel> lst = new List<AttackAddressModel>();
string _name1 = "";
string _name2 = "";
string[] str = null;
string[] str1 = null;
if (type == 1)
{
if (name1.Contains("省"))
_name1 = name1.Replace("省", "");
if (name1.Contains("自治区"))
_name1 = name1.Replace("自治区", "");
if (!string.IsNullOrEmpty(name2))
{
str = name2.Split(",");
if (str.Length > 0)
{
str1 = new string[str.Length];
for (int i = 0; i < str.Length; i++)
{
if (str[i].Contains("市"))
_name2 = str[i].Replace("市", "");
if (str[i].Contains("自治区"))
_name2 = str[i].Replace("自治区", "");
if (str[i].Contains("自治州"))
_name2 = str[i].Replace("自治州", "");
if (str[i].Contains("地区"))
_name2 = str[i].Replace("地区", "");
if (str[i].Contains("地区"))
_name2 = str[i].Replace("地区", "");
str1[i] = _name2;
}
}
}
lst = db.Queryable<T_Service_Patient>()
.Where(i => i.HospitalGuid == hosptialGuid && i.SystemModuleID == systemModuleID && i.DeleteFlag == 0)
.Where(i => i.Province.Contains(_name1))
.Select(i => new AttackAddressModel { Address = i.City, CreationDate = i.CreationDate })
.ToList();
}
if (type == 2)
{
if (name1.Contains("市"))
_name1 = name1.Replace("市", "");
if (!string.IsNullOrEmpty(name2))
{
str = name2.Split(",");
if (str.Length > 0)
{
str1 = new string[str.Length];
for (int i = 0; i < str.Length; i++)
{
if (str[i].Contains("区"))
_name2 = str[i].Replace("区", "");
if (str[i].Contains("市"))
_name2 = str[i].Replace("市", "");
if (str[i].Contains("县"))
_name2 = str[i].Replace("县", "");
str1[i] = _name2;
}
}
lst = db.Queryable<T_Service_Patient>()
.Where(i => i.HospitalGuid == hosptialGuid && i.SystemModuleID == systemModuleID && i.DeleteFlag == 0)
.Where(i => i.City.Contains(_name1))
.Select(i => new AttackAddressModel { Address = i.Area, CreationDate = i.CreationDate })
.ToList();
}
}
if (type == 3)
{
if (name1.Contains("市"))
_name1 = name1.Replace("市", "");
if (name1.Contains("区"))
_name1 = name1.Replace("区", "");
if (name1.Contains("区"))
_name1 = name1.Replace("区", "");
if (!string.IsNullOrEmpty(name1))
{
str = name1.Split(",");
if (str.Length > 0)
{
str1 = new string[str.Length];
for (int i = 0; i < str.Length; i++)
{
if (str[i].Contains("区"))
_name2 = str[i].Replace("区", "");
if (str[i].Contains("市"))
_name2 = str[i].Replace("市", "");
if (str[i].Contains("县"))
_name2 = str[i].Replace("县", "");
str1[i] = _name2;
}
}
lst = db.Queryable<T_Service_Patient>()
.Where(i => i.HospitalGuid == hosptialGuid && i.SystemModuleID == systemModuleID && i.DeleteFlag == 0)
.Where(i => i.Area.Contains(_name1))
.Select(i => new AttackAddressModel { Address = i.Area, CreationDate = i.CreationDate })
.ToList();
}
}
if (str.Length > 0)
{
for (int i = 0; i < str.Length; i++)
{
MapDistributionDataModel model = new MapDistributionDataModel();
model.name = str[i].ToString();
string dt = DateTime.Now.ToString("yyyy-MM-dd");
model.value = lst.Where(j => j.CreationDate >= Convert.ToDateTime(dt) && j.CreationDate < Convert.ToDateTime(dt).AddDays(1) && j.Address == str1[i]).Count();
model.total = lst.Where(j => j.Address == str1[i]).Count();
list.Add(model);
}
}
return list;
}
#endregion
#region 卒中大屏数据展示查询
/// <summary>
/// 来院方式统计--卒中大屏数据
/// </summary>
/// <param name="hosptialGuid"></param>
/// <returns></returns>
public List<MassiveDataStatisticsModel> GetApoplexyPainToHospitalWay(string hosptialGuid)
{
List<MassiveDataStatisticsModel> list = new List<MassiveDataStatisticsModel>();
List<MassiveDataStatisticsModel> lst = new List<MassiveDataStatisticsModel>();
lst = db.Queryable<T_Service_Patient, T_Service_Apoplexy_Prehospital>((a, b) => a.GUID == b.PatientGuid)
.Where((a, b) => a.HospitalGuid == hosptialGuid && a.SystemModuleID == 3 && a.DeleteFlag == 0)
.Select((a, b) => new MassiveDataStatisticsModel() { name = b.BCLyType }).ToList();
MassiveDataStatisticsModel m1 = new MassiveDataStatisticsModel();
m1.name = "当地120";
MassiveDataStatisticsModel m2 = new MassiveDataStatisticsModel();
m2.name = "自行来院";
MassiveDataStatisticsModel m3 = new MassiveDataStatisticsModel();
m3.name = "外院转院";
MassiveDataStatisticsModel m4 = new MassiveDataStatisticsModel();
m4.name = "本院急救车";
//MassiveDataStatisticsModel m5 = new MassiveDataStatisticsModel();
if (lst.Count > 0)
{
//BCLyType :1.本院急救车 2.当地 120 3.外院转院 4.自行来院 5院内发病
m1.value = lst.Where(i => i.name == "1").Count();
m2.value = lst.Where(i => i.name == "2").Count();
m3.value = lst.Where(i => i.name == "3").Count();
m4.value = lst.Where(i => i.name == "4").Count();
}
list.Add(m1);
list.Add(m2);
list.Add(m3);
list.Add(m4);
return list;
}
/// <summary>
/// 治疗类型统计--卒中大屏数据
/// </summary>
/// <param name="hosptialGuid"></param>
/// <returns></returns>
public List<MassiveDataStatisticsModel> GetApoplexyPainACZLType(string hosptialGuid)
{
List<MassiveDataStatisticsModel> list = new List<MassiveDataStatisticsModel>();
List<T_Service_Patient> lst = new List<T_Service_Patient>();
lst = db.Queryable<T_Service_Patient>().Where(i => i.HospitalGuid == hosptialGuid && i.SystemModuleID == 3 && i.DeleteFlag == 0).ToList();
MassiveDataStatisticsModel m1 = new MassiveDataStatisticsModel();
m1.name = "静脉溶栓";
MassiveDataStatisticsModel m2 = new MassiveDataStatisticsModel();
m2.name = "血管内介入治疗";
MassiveDataStatisticsModel m3 = new MassiveDataStatisticsModel();
m3.name = "脑出血";
MassiveDataStatisticsModel m4 = new MassiveDataStatisticsModel();
m4.name = "颅内动脉瘤";
MassiveDataStatisticsModel m5 = new MassiveDataStatisticsModel();
m5.name = "CEA/CAS";
if (lst.Count > 0)
{
// 01.静脉溶栓 02.血管内介入治疗 03.脑出血 04.颅内动脉瘤05.CEA/CAS
m1.value = lst.Where(i => i.acZLType != "" && i.acZLType != null && i.acZLType.Contains("01")).Count();
m2.value = lst.Where(i => i.acZLType != "" && i.acZLType != null && i.acZLType.Contains("02")).Count();
m3.value = lst.Where(i => i.acZLType != "" && i.acZLType != null && i.acZLType.Contains("03")).Count();
m4.value = lst.Where(i => i.acZLType != "" && i.acZLType != null && i.acZLType.Contains("04")).Count();
m5.value = lst.Where(i => i.acZLType != "" && i.acZLType != null && i.acZLType.Contains("05")).Count();
}
list.Add(m1);
list.Add(m2);
list.Add(m3);
list.Add(m4);
list.Add(m5);
return list;
}
/// <summary>
/// DNT中位数统计--卒中大屏数据
/// </summary>
/// <param name="hosptialGuid"></param>
/// <returns></returns>
public List<MassiveDataStatisticsModel> GetApoplexyPainDNTMedian(string hosptialGuid)
{
List<MassiveDataStatisticsModel> list = new List<MassiveDataStatisticsModel>();
List<ThrombolysisMedianModel> lst = new List<ThrombolysisMedianModel>();
lst = db.Queryable<T_Service_Patient, T_Service_Apoplexy_RSZL, T_Service_Apoplexy_Prehospital>
((a, b, c) => new JoinQueryInfos(JoinType.Inner, a.GUID == b.PatientGuid,
JoinType.Inner, a.GUID == c.PatientGuid))
.Where((a, b, c) => a.HospitalGuid == hosptialGuid && a.SystemModuleID == 3 && a.DeleteFlag == 0 && !SqlFunc.IsNullOrEmpty(c.NGSJZDaoYuanTime) && !SqlFunc.IsNullOrEmpty(b.RSDNT))
.Select((a, b, c) => new ThrombolysisMedianModel()
{
Value = int.Parse(b.RSDNT)
}).ToList();
if (lst.Count > 0)
{
List<MassiveDataStatisticsModel> rsdnt1 = new List<MassiveDataStatisticsModel>();
for (int i = 0; i < lst.Count; i++)
{
MassiveDataStatisticsModel m = new MassiveDataStatisticsModel();
if (lst[i].Value < 90)
{
m.value = lst[i].Value;
rsdnt1.Add(m);
}
}
List<MassiveDataStatisticsModel> rsdnt2 = new List<MassiveDataStatisticsModel>();
for (int i = 0; i < lst.Count; i++)
{
MassiveDataStatisticsModel m = new MassiveDataStatisticsModel();
if (lst[i].Value >= 90 && lst[i].Value < 180)
{
m.value = lst[i].Value;
rsdnt2.Add(m);
}
}
List<MassiveDataStatisticsModel> rsdnt3 = new List<MassiveDataStatisticsModel>();
for (int i = 0; i < lst.Count; i++)
{
MassiveDataStatisticsModel m = new MassiveDataStatisticsModel();
if (lst[i].Value > 180)
{
m.value = lst[i].Value;
rsdnt3.Add(m);
}
}
if (rsdnt1.Count > 0)
{
MassiveDataStatisticsModel t1 = new MassiveDataStatisticsModel();
MassiveDataStatisticsModel t2 = new MassiveDataStatisticsModel();
MassiveDataStatisticsModel model = new MassiveDataStatisticsModel();
if (rsdnt1.Count % 2 == 0)
{
int k1 = rsdnt1.Count() / 2;
int k2 = k1 + 1;
t1 = rsdnt1.SkipWhile((n, index) => index == k1).First();
t2 = rsdnt1.SkipWhile((n, index) => index == k2).First();
int sum = t1.value + t2.value;
model.value = sum / 2;
}
else
{
int k = (rsdnt1.Count - 1) / 2 + 1;
t1 = rsdnt1.SkipWhile((n, index) => index == k).First();
model.value = t1.value;
}
model.name = "<90分钟";
list.Add(model);
}
if (rsdnt2.Count > 0)
{
MassiveDataStatisticsModel t1 = new MassiveDataStatisticsModel();
MassiveDataStatisticsModel t2 = new MassiveDataStatisticsModel();
MassiveDataStatisticsModel model = new MassiveDataStatisticsModel();
if (rsdnt2.Count % 2 == 0)
{
int k1 = rsdnt2.Count() / 2;
int k2 = k1 + 1;
t1 = rsdnt2.SkipWhile((n, index) => index == k1).First();
t2 = rsdnt2.SkipWhile((n, index) => index == k2).First();
int sum = t1.value + t2.value;
model.value = sum / 2;
}
else
{
int k = (rsdnt2.Count - 1) / 2 + 1;
t1 = rsdnt2.SkipWhile((n, index) => index == k).First();
model.value = t1.value;
}
model.name = "90~180分钟";
list.Add(model);
}
if (rsdnt3.Count > 0)
{
MassiveDataStatisticsModel t1 = new MassiveDataStatisticsModel();
MassiveDataStatisticsModel t2 = new MassiveDataStatisticsModel();
MassiveDataStatisticsModel model = new MassiveDataStatisticsModel();
if (rsdnt3.Count % 2 == 0)
{
int k1 = rsdnt3.Count() / 2;
int k2 = k1 + 1;
t1 = rsdnt3.SkipWhile((n, index) => index == k1).First();
t2 = rsdnt3.SkipWhile((n, index) => index == k2).First();
int sum = t1.value + t2.value;
model.value = sum / 2;
}
else
{
int k = (rsdnt3.Count - 1) / 2 + 1;
t1 = rsdnt3.SkipWhile((n, index) => index == k).First();
model.value = t1.value;
}
model.name = ">180分钟";
list.Add(model);
}
}
return list;
}
/// <summary>
/// DPT中位数统计--卒中大屏数据
/// </summary>
/// <param name="hosptialGuid"></param>
/// <returns></returns>
public List<MassiveDataStatisticsModel> GetApoplexyPainDPTMedian(string hosptialGuid)
{
List<MassiveDataStatisticsModel> list = new List<MassiveDataStatisticsModel>();
List<ThrombolysisMedianModel> lst = new List<ThrombolysisMedianModel>();
lst = db.Queryable<T_Service_Patient, T_Service_Apoplexy_XGZL>
((a, b) => new JoinQueryInfos(JoinType.Inner, a.GUID == b.PatientGuid))
.Where((a, b) => a.HospitalGuid == hosptialGuid && a.SystemModuleID == 3 && a.DeleteFlag == 0 && !SqlFunc.IsNullOrEmpty(b.XGDPT) && b.XGDPT != "不详")
.Select((a, b) => new ThrombolysisMedianModel()
{
Value = Convert.ToInt32(b.XGDPT)
}).ToList();
if (lst.Count > 0)
{
List<MassiveDataStatisticsModel> rsdnt1 = new List<MassiveDataStatisticsModel>();
for (int i = 0; i < lst.Count; i++)
{
MassiveDataStatisticsModel m = new MassiveDataStatisticsModel();
if (lst[i].Value < 90)
{
m.value = lst[i].Value;
rsdnt1.Add(m);
}
}
List<MassiveDataStatisticsModel> rsdnt2 = new List<MassiveDataStatisticsModel>();
for (int i = 0; i < lst.Count; i++)
{
MassiveDataStatisticsModel m = new MassiveDataStatisticsModel();
if (lst[i].Value >= 90 && lst[i].Value < 180)
{
m.value = lst[i].Value;
rsdnt2.Add(m);
}
}
List<MassiveDataStatisticsModel> rsdnt3 = new List<MassiveDataStatisticsModel>();
for (int i = 0; i < lst.Count; i++)
{
MassiveDataStatisticsModel m = new MassiveDataStatisticsModel();
if (lst[i].Value > 180)
{
m.value = lst[i].Value;
rsdnt3.Add(m);
}
}
if (rsdnt1.Count > 0)
{
MassiveDataStatisticsModel t1 = new MassiveDataStatisticsModel();
MassiveDataStatisticsModel t2 = new MassiveDataStatisticsModel();
MassiveDataStatisticsModel model = new MassiveDataStatisticsModel();
if (rsdnt1.Count % 2 == 0)
{
int k1 = rsdnt1.Count() / 2;
int k2 = k1 + 1;
t1 = rsdnt1.SkipWhile((n, index) => index == k1).First();
t2 = rsdnt1.SkipWhile((n, index) => index == k2).First();
int sum = t1.value + t2.value;
model.value = sum / 2;
}
else
{
int k = (rsdnt1.Count - 1) / 2 + 1;
t1 = rsdnt1.SkipWhile((n, index) => index == k).First();
model.value = t1.value;
}
model.name = "<90分钟";
list.Add(model);
}
if (rsdnt2.Count > 0)
{
MassiveDataStatisticsModel t1 = new MassiveDataStatisticsModel();
MassiveDataStatisticsModel t2 = new MassiveDataStatisticsModel();
MassiveDataStatisticsModel model = new MassiveDataStatisticsModel();
if (rsdnt2.Count % 2 == 0)
{
int k1 = rsdnt2.Count() / 2;
int k2 = k1 + 1;
t1 = rsdnt2.SkipWhile((n, index) => index == k1).First();
t2 = rsdnt2.SkipWhile((n, index) => index == k2).First();
int sum = t1.value + t2.value;
model.value = sum / 2;
}
else
{
int k = (rsdnt2.Count - 1) / 2 + 1;
t1 = rsdnt2.SkipWhile((n, index) => index == k).First();
model.value = t1.value;
}
model.name = "90~180分钟";
list.Add(model);
}
if (rsdnt3.Count > 0)
{
MassiveDataStatisticsModel t1 = new MassiveDataStatisticsModel();
MassiveDataStatisticsModel t2 = new MassiveDataStatisticsModel();
MassiveDataStatisticsModel model = new MassiveDataStatisticsModel();
if (rsdnt3.Count % 2 == 0)
{
int k1 = rsdnt3.Count() / 2;
int k2 = k1 + 1;
t1 = rsdnt3.SkipWhile((n, index) => index == k1).First();
t2 = rsdnt3.SkipWhile((n, index) => index == k2).First();
int sum = t1.value + t2.value;
model.value = sum / 2;
}
else
{
int k = (rsdnt3.Count - 1) / 2 + 1;
t1 = rsdnt3.SkipWhile((n, index) => index == k).First();
model.value = t1.value;
}
model.name = ">180分钟";
list.Add(model);
}
}
return list;
}
/// <summary>
/// 病例个数统计--卒中大屏数据
/// </summary>
/// <param name="hosptialGuid"></param>
/// <returns></returns>
public List<MassiveDataStatisticsModel> GetApoplexyDataStatistics(string hosptialGuid)
{
List<MassiveDataStatisticsModel> list = new List<MassiveDataStatisticsModel>();
List<T_Service_Patient> lst = new List<T_Service_Patient>();
lst = db.Queryable<T_Service_Patient>().Where(i => i.HospitalGuid == hosptialGuid && i.SystemModuleID == 3 && i.DeleteFlag == 0).ToList();
MassiveDataStatisticsModel m1 = new MassiveDataStatisticsModel();
m1.name = "今日新增";
MassiveDataStatisticsModel m2 = new MassiveDataStatisticsModel();
m2.name = "本周新增";
MassiveDataStatisticsModel m3 = new MassiveDataStatisticsModel();
m3.name = "本月新增";
MassiveDataStatisticsModel m4 = new MassiveDataStatisticsModel();
m4.name = "本季新增";
MassiveDataStatisticsModel m5 = new MassiveDataStatisticsModel();
m5.name = "本年新增";
MassiveDataStatisticsModel m6 = new MassiveDataStatisticsModel();
m6.name = "累计新增";
if (lst.Count > 0)
{
DateTime dt = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));
m1.value = lst.Where(i => i.CreationDate >= dt && i.CreationDate <= dt.AddDays(1)).Count();
DateTime startWeek = dt.AddDays(1 - Convert.ToInt32(dt.DayOfWeek.ToString("d")));
DateTime endWeek = startWeek.AddDays(6);
m2.value = lst.Where(i => i.CreationDate >= startWeek && i.CreationDate <= endWeek).Count();
DateTime startMonth = dt.AddDays(1 - dt.Day);
DateTime endMonth = startMonth.AddMonths(1).AddDays(-1);
m3.value = lst.Where(i => i.CreationDate >= startMonth && i.CreationDate <= endMonth).Count();
DateTime startQuarter = dt.AddMonths(0 - (dt.Month - 1) % 3).AddDays(1 - dt.Day);
DateTime endQuarter = startQuarter.AddMonths(3).AddDays(-1);
m4.value = lst.Where(i => i.CreationDate >= startQuarter && i.CreationDate <= endQuarter).Count();
DateTime startYear = new DateTime(dt.Year, 1, 1);
DateTime endYear = new DateTime(dt.Year, 12, 31);
m5.value = lst.Where(i => i.CreationDate >= startYear && i.CreationDate <= endYear).Count();
m6.value = lst.Count();
}
list.Add(m1);
list.Add(m2);
list.Add(m3);
list.Add(m4);
list.Add(m5);
list.Add(m6);
return list;
}
/// <summary>
/// 发病到入院统计--卒中大屏数据
/// </summary>
/// <param name="hosptialGuid"></param>
/// <returns></returns>
public List<MassiveDataStatisticsModel> GetApoplexySymptomToBalloon(string hosptialGuid)
{
List<MassiveDataStatisticsModel> list = new List<MassiveDataStatisticsModel>();
MassiveDataStatisticsModel model1 = new MassiveDataStatisticsModel();
MassiveDataStatisticsModel model2 = new MassiveDataStatisticsModel();
MassiveDataStatisticsModel model3 = new MassiveDataStatisticsModel();
List<TimeModel> lst = new List<TimeModel>();
//急性脑梗死发病时间: NGSJZFaBingTime
// 脑出血患者发病时间:NCXJZFaBingTime
lst = db.Queryable<T_Service_Patient, T_Service_Apoplexy_Prehospital>((a, b) => a.GUID == b.PatientGuid)
.Where((a, b) => a.HospitalGuid == hosptialGuid && a.SystemModuleID == 3 && a.DeleteFlag == 0)
.Select((a, b) => new TimeModel()
{
FaBingTime = b.NGSJZFaBingTime == "" ? b.NCXJZFaBingTime : b.NGSJZFaBingTime,
DaoYuanTime = b.NGSJZDaoYuanTime == "" ? b.NCXJZDaoYuanTime : b.NGSJZDaoYuanTime
}).ToList();
model1.name = "<4.5小时";
model2.name = "4.5~6小时";
model3.name = ">8小时";
if (lst.Count > 0)
{
List<int> m1 = new List<int>();
List<int> m2 = new List<int>();
List<int> m3 = new List<int>();
for (int i = 0; i < lst.Count; i++)
{
if (!string.IsNullOrEmpty(lst[i].FaBingTime) && !string.IsNullOrEmpty(lst[i].DaoYuanTime))
{
long minutes = GetHours(lst[i].FaBingTime, lst[i].DaoYuanTime);
if (minutes < 4.5)
{
m1.Add(1);
}
if (minutes >= 90 && minutes < 180)
{
m2.Add(2);
}
if (minutes >= 8)
{
m3.Add(3);
}
}
}
model1.value = m1.Count;
model2.value = m2.Count;
model3.value = m3.Count;
//if (m1.Count > 0)
//model1.value = (m1.Count * 100 / lst.Count).ToString("#0.00");
//if (m2.Count > 0)
//model2.value = (m2.Count * 100 / lst.Count).ToString("#0.00");
// if (m3.Count > 0)
//model3.value = (m3.Count * 100 / lst.Count).ToString("#0.00");
}
list.Add(model1);
list.Add(model2);
list.Add(model3);
return list;
}
/// <summary>
/// 计算小时差
/// </summary>
/// <param name="date1"></param>
/// <param name="date2"></param>
/// <returns></returns>
public long GetHours(string date1, string date2)
{
DateTime d1 = Convert.ToDateTime(date1);
DateTime d2 = Convert.ToDateTime(date2);
TimeSpan d3 = d2.Subtract(d1);
long diff = d3.Milliseconds;
long diffHours = diff / (60 * 60 * 1000) % 24;
return diffHours;
}
public class TimeModel
{
/// <summary>
/// 发病时间
/// </summary>
public string FaBingTime { get; set; }
public string DaoYuanTime { get; set; }
public string Minutes { get; set; }
}
/// <summary>
/// 人群分布统计-性别,年龄
/// </summary>
/// <param name="hosptialGuid"></param>
/// <returns></returns>
public PopulationDistributionModel GetApoplexyPopulationDistribution(string hosptialGuid)
{
List<T_Service_Patient> lst = new List<T_Service_Patient>();
lst = db.Queryable<T_Service_Patient>().Where(i => i.HospitalGuid == hosptialGuid && i.SystemModuleID == 3 && i.DeleteFlag == 0).ToList();
PopulationDistributionModel population = new PopulationDistributionModel();
if (lst.Count > 0)
{
int i = lst.Where(x => x.Gender == 1).Count();
int j = lst.Where(x => x.Gender == 2).Count();
if ((i + j) > 0)
{
double temp1 = i / ((double)i + (double)j);
population.manProprtion = temp1.ToString("#0.00");
double temp2 = 1 - temp1;
population.womanProprtion = temp2.ToString("#0.00");
}
population.data = new List<MassiveDataStatisticsModel>();
MassiveDataStatisticsModel m1 = new MassiveDataStatisticsModel();
m1.name = "50岁以下";
m1.value = lst.Where(x => x.Age < 50 && x.Age >= 0).Count();
population.data.Add(m1);
MassiveDataStatisticsModel m2 = new MassiveDataStatisticsModel();
m2.name = "50-60岁";
m2.value = lst.Where(x => x.Age >= 50 && x.Age < 60).Count();
population.data.Add(m2);
MassiveDataStatisticsModel m3 = new MassiveDataStatisticsModel();
m3.name = "60-70岁";
m3.value = lst.Where(x => x.Age >= 60 && x.Age < 70).Count();
population.data.Add(m3);
MassiveDataStatisticsModel m4 = new MassiveDataStatisticsModel();
m4.name = "70-80岁";
m4.value = lst.Where(x => x.Age >= 70 && x.Age < 80).Count();
population.data.Add(m4);
MassiveDataStatisticsModel m5 = new MassiveDataStatisticsModel();
m5.name = "80-90岁";
m5.value = lst.Where(x => x.Age >= 80 && x.Age < 90).Count();
population.data.Add(m5);
MassiveDataStatisticsModel m6 = new MassiveDataStatisticsModel();
m6.name = "90岁以上";
m5.value = lst.Where(x => x.Age >= 90).Count();
population.data.Add(m6);
}
return population;
}
/// <summary>
/// TOAST分型统计
/// </summary>
/// <param name="hosptialGuid"></param>
/// <returns></returns>
public List<MassiveDataStatisticsModel> GetTOASTEvaluationRate(string hosptialGuid)
{
List<MassiveDataStatisticsModel> list = new List<MassiveDataStatisticsModel>();
List<MassiveDataStatisticsModel> lst = new List<MassiveDataStatisticsModel>();
lst = db.Queryable<T_Service_Patient, T_Service_Apoplexy_TOAST>((a, b) => new JoinQueryInfos(JoinType.Inner, a.GUID == b.PatientGuid))
.Where((a, b) => a.HospitalGuid == hosptialGuid && a.SystemModuleID == 3 && a.DeleteFlag == 0 && !SqlFunc.IsNullOrEmpty(b.TJiZhi))
.Select((a, b) => new MassiveDataStatisticsModel()
{
name = b.TJiZhi
}).ToList();
/// 1.大动脉粥样硬化性卒中LAA
/// 2.心源性脑栓塞CE
/// 3.小动脉闭塞性卒中或腔隙性卒中 SAA
/// 4.其他原因所致的缺血性卒中SOE
/// 5.不明原因的缺血性卒中SUE
MassiveDataStatisticsModel p1 = new MassiveDataStatisticsModel();
MassiveDataStatisticsModel p2 = new MassiveDataStatisticsModel();
MassiveDataStatisticsModel p3 = new MassiveDataStatisticsModel();
MassiveDataStatisticsModel p4 = new MassiveDataStatisticsModel();
MassiveDataStatisticsModel p5 = new MassiveDataStatisticsModel();
p1.name = "LAA";
p2.name = "CE";
p3.name = "SAA";
p4.name = "SOE";
p5.name = "SUE";
if (lst.Count > 0)
{
p1.value = lst.Where(i => i.name == "1").Count();
p2.value = lst.Where(i => i.name == "2").Count();
p3.value = lst.Where(i => i.name == "3").Count();
p4.value = lst.Where(i => i.name == "4").Count();
p5.value = lst.Where(i => i.name == "5").Count();
//if (lst1 > 0)
// p1.value = (lst1 * 100 / lst.Count).ToString("#0.00");
//if (lst2 > 0)
// p1.value = (lst2 * 100 / lst.Count).ToString("#0.00");
//if (lst3 > 0)
// p1.value = (lst3 * 100 / lst.Count).ToString("#0.00");
//if (lst4 > 0)
// p1.value = (lst4 * 100 / lst.Count).ToString("#0.00");
//if (lst5 > 0)
// p1.value = (lst5 * 100 / lst.Count).ToString("#0.00");
}
list.Add(p1);
list.Add(p2);
list.Add(p3);
list.Add(p4);
list.Add(p5);
return list;
}
/// <summary>
/// 入门到到达CT时间统计
/// 所有患者的 入门-开始ct时间差按月排序计算平均值
/// </summary>
/// <param name="hosptialGuid"></param>
/// <returns></returns>
public List<MassiveDataStatisticsModel> GetApoplexyIntroductionToCT(string hosptialGuid)
{
List<MassiveDataStatisticsModel> list = new List<MassiveDataStatisticsModel>();
List<DtoCTModel> lst = new List<DtoCTModel>();
//近12月个月份集合
DateTime dt1 = DateTime.Now;
DateTime dt2 = DateTime.Now.AddMonths(-11);
int Month = (dt1.Year - dt2.Year) * 12 + (dt1.Month - dt2.Month);
List<DateTime> monthList = new List<DateTime>();
for (int i = 0; i < Month + 1; i++)
{
string res = dt2.AddMonths(i).Year + "-" + GetMonthZero(dt2.AddMonths(i).Month) + "-01";
DateTime dt = Convert.ToDateTime(res);
monthList.Add(dt.AddDays(1 - dt.Day));
}
//筛选近12月所有数据
lst = db.Queryable<T_Service_Patient, T_Service_Apoplexy_NCXZYJC>((a, b) => a.GUID == b.PatientGuid)
.Where((a, b) => a.HospitalGuid == hosptialGuid && a.SystemModuleID == 3 && a.DeleteFlag == 0 && a.RegisterTime >= monthList[0] && a.RegisterTime <= monthList[11].AddMonths(1))
.Select((a, b) => new DtoCTModel()
{
RegisterTime = a.RegisterTime,
dtct = b.DTCT
}).ToList();
MassiveDataStatisticsModel m1 = new MassiveDataStatisticsModel();
m1.name = monthList[0].ToString("yyyy-MM");
MassiveDataStatisticsModel m2 = new MassiveDataStatisticsModel();
m2.name = monthList[1].ToString("yyyy-MM");
MassiveDataStatisticsModel m3 = new MassiveDataStatisticsModel();
m3.name = monthList[2].ToString("yyyy-MM");
MassiveDataStatisticsModel m4 = new MassiveDataStatisticsModel();
m4.name = monthList[3].ToString("yyyy-MM");
MassiveDataStatisticsModel m5 = new MassiveDataStatisticsModel();
m5.name = monthList[4].ToString("yyyy-MM");
MassiveDataStatisticsModel m6 = new MassiveDataStatisticsModel();
m6.name = monthList[5].ToString("yyyy-MM");
MassiveDataStatisticsModel m7 = new MassiveDataStatisticsModel();
m7.name = monthList[6].ToString("yyyy-MM");
MassiveDataStatisticsModel m8 = new MassiveDataStatisticsModel();
m8.name = monthList[7].ToString("yyyy-MM");
MassiveDataStatisticsModel m9 = new MassiveDataStatisticsModel();
m9.name = monthList[8].ToString("yyyy-MM");
MassiveDataStatisticsModel m10 = new MassiveDataStatisticsModel();
m10.name = monthList[9].ToString("yyyy-MM");
MassiveDataStatisticsModel m11 = new MassiveDataStatisticsModel();
m11.name = monthList[10].ToString("yyyy-MM");
MassiveDataStatisticsModel m12 = new MassiveDataStatisticsModel();
m12.name = monthList[11].ToString("yyyy-MM");
if (lst.Count > 0)
{
int i1 = lst.Where(i => i.RegisterTime >= Convert.ToDateTime(monthList[0]) && i.RegisterTime < Convert.ToDateTime(monthList[1])).Count();
if (i1 > 0)
m1.value = lst.Where(i => i.RegisterTime >= Convert.ToDateTime(monthList[0]) && i.RegisterTime < Convert.ToDateTime(monthList[1])).Sum(i => i.dtct) / i1;
int i2 = lst.Where(i => i.RegisterTime >= Convert.ToDateTime(monthList[1]) && i.RegisterTime < Convert.ToDateTime(monthList[2])).Count();
if (i2 > 0)
m2.value = lst.Where(i => i.RegisterTime >= Convert.ToDateTime(monthList[1]) && i.RegisterTime < Convert.ToDateTime(monthList[2])).Sum(i => i.dtct) / i2;
int i3 = lst.Where(i => i.RegisterTime >= Convert.ToDateTime(monthList[2]) && i.RegisterTime < Convert.ToDateTime(monthList[3])).Count();
if (i3 > 0)
m3.value = lst.Where(i => i.RegisterTime >= Convert.ToDateTime(monthList[2]) && i.RegisterTime < Convert.ToDateTime(monthList[3])).Sum(i => i.dtct) / i3;
int i4 = lst.Where(i => i.RegisterTime >= Convert.ToDateTime(monthList[3]) && i.RegisterTime < Convert.ToDateTime(monthList[4])).Count();
if (i4 > 0)
m4.value = lst.Where(i => i.RegisterTime >= Convert.ToDateTime(monthList[3]) && i.RegisterTime < Convert.ToDateTime(monthList[4])).Sum(i => i.dtct) / i4;
int i5 = lst.Where(i => i.RegisterTime >= Convert.ToDateTime(monthList[4]) && i.RegisterTime < Convert.ToDateTime(monthList[5])).Count();
if (i5 > 0)
m5.value = lst.Where(i => i.RegisterTime >= Convert.ToDateTime(monthList[4]) && i.RegisterTime < Convert.ToDateTime(monthList[5])).Sum(i => i.dtct) / i5;
int i6 = lst.Where(i => i.RegisterTime >= Convert.ToDateTime(monthList[5]) && i.RegisterTime < Convert.ToDateTime(monthList[6])).Count();
if (i6 > 0)
m6.value = lst.Where(i => i.RegisterTime >= Convert.ToDateTime(monthList[5]) && i.RegisterTime < Convert.ToDateTime(monthList[6])).Sum(i => i.dtct) / i6;
int i7 = lst.Where(i => i.RegisterTime >= Convert.ToDateTime(monthList[6]) && i.RegisterTime < Convert.ToDateTime(monthList[7])).Count();
if (i7 > 0)
m7.value = lst.Where(i => i.RegisterTime >= Convert.ToDateTime(monthList[6]) && i.RegisterTime < Convert.ToDateTime(monthList[7])).Sum(i => i.dtct) / i7;
int i8 = lst.Where(i => i.RegisterTime >= Convert.ToDateTime(monthList[7]) && i.RegisterTime < Convert.ToDateTime(monthList[8])).Count();
if (i8 > 0)
m8.value = lst.Where(i => i.RegisterTime >= Convert.ToDateTime(monthList[7]) && i.RegisterTime < Convert.ToDateTime(monthList[8])).Sum(i => i.dtct) / i8;
int i9 = lst.Where(i => i.RegisterTime >= Convert.ToDateTime(monthList[8]) && i.RegisterTime < Convert.ToDateTime(monthList[9])).Count();
if (i9 > 0)
m9.value = lst.Where(i => i.RegisterTime >= Convert.ToDateTime(monthList[8]) && i.RegisterTime < Convert.ToDateTime(monthList[9])).Sum(i => i.dtct) / i9;
int i10 = lst.Where(i => i.RegisterTime >= Convert.ToDateTime(monthList[9]) && i.RegisterTime < Convert.ToDateTime(monthList[10])).Count();
if (i10 > 0)
m10.value = lst.Where(i => i.RegisterTime >= Convert.ToDateTime(monthList[9]) && i.RegisterTime < Convert.ToDateTime(monthList[10])).Sum(i => i.dtct) / i10;
int i11 = lst.Where(i => i.RegisterTime >= Convert.ToDateTime(monthList[10]) && i.RegisterTime < Convert.ToDateTime(monthList[11])).Count();
if (i11 > 0)
m11.value = lst.Where(i => i.RegisterTime >= Convert.ToDateTime(monthList[10]) && i.RegisterTime < Convert.ToDateTime(monthList[11])).Sum(i => i.dtct) / i11;
int i12 = lst.Where(i => i.RegisterTime >= Convert.ToDateTime(monthList[11]) && i.RegisterTime < DateTime.Now.AddMonths(1)).Count();
if (i12 > 0)
m12.value = lst.Where(i => i.RegisterTime >= Convert.ToDateTime(monthList[11]) && i.RegisterTime < DateTime.Now.AddMonths(1)).Sum(i => i.dtct) / i12;
}
list.Add(m1);
list.Add(m2);
list.Add(m3);
list.Add(m4);
list.Add(m5);
list.Add(m6);
list.Add(m7);
list.Add(m8);
list.Add(m9);
list.Add(m10);
list.Add(m11);
list.Add(m12);
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();
}
}
/// <summary>
/// 随访统计
/// </summary>
/// <param name="hosptialGuid"></param>
/// <returns></returns>
public List<MassiveDataStatisticsModel> GetApoplexyFollowUp(string hosptialGuid)
{
List<MassiveDataStatisticsModel> list = new List<MassiveDataStatisticsModel>();
MassiveDataStatisticsModel m1 = new MassiveDataStatisticsModel();
m1.name = "随访总次数";
m1.value = db.Queryable<T_Service_Apoplexy_FollowUpBase>().Where(i => i.HospitalGuid == hosptialGuid && i.DeleteFlag == 0).Count();
list.Add(m1);
MassiveDataStatisticsModel m3 = new MassiveDataStatisticsModel();
m3.name = "已完成随访";
m3.value = db.Queryable<T_Service_Apoplexy_FollowUpBase, T_Service_Apoplexy_FollowUpInfo>((a, b) => a.GUID == b.FGUID).Where((a, b) => a.HospitalGuid == hosptialGuid && !SqlFunc.IsNullOrEmpty(b.Proportion) && a.DeleteFlag == 0).Select((a, b) => b.Proportion).Count();
list.Add(m3);
MassiveDataStatisticsModel m2 = new MassiveDataStatisticsModel();
m2.name = "未完成随访";
m2.value = m1.value - m3.value;
list.Add(m2);
return list;
}
//随访次数
#endregion
}
public class DtoCTModel
{
public DateTime? RegisterTime { get; set; }
public int dtct { get; set; }
}
public class AttackAddressModel
{
public string Address { get; set; }
public DateTime? CreationDate { get; set; }
}
}