1234 lines
57 KiB
C#
1234 lines
57 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 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; }
|
||
}
|
||
}
|