StableVersion4.3/HL_FristAidPlatform_DataBase/Service/T_Service_ApoplexyScreenInf...

543 lines
31 KiB
C#
Raw Permalink 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.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
namespace HL_FristAidPlatform_DataBase
{
public class T_Service_ApoplexyScreenInfoDB : BaseDB, IT_Service_ApoplexyScreenInfo
{
public SqlSugarClient db = GetClient();
/// <summary>
/// 新增高危人群筛查
/// </summary>
/// <param name="info"></param>
/// <param name="risk"></param>
/// <param name="physicalFitness"></param>
/// <returns></returns>
public bool SaveScreenPatient(T_Service_ApoplexyScreenInfo info, T_Service_FirstAid_ApoplexyHighRiskScreening risk, T_Service_ApoplexyScreenPhysicalFitness physicalFitness)
{
try
{
db.Ado.BeginTran();
db.Insertable(info).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
db.Insertable(risk).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
db.Insertable(physicalFitness).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
if (risk.HighRisk == 1 || risk.HighRisk == 2)
{
T_Service_Apoplexy_Community_BaseInfo baseInfo = new T_Service_Apoplexy_Community_BaseInfo();
baseInfo.GUID = Guid.NewGuid().ToString();
baseInfo.PatientGUID = info.GUID;
baseInfo.HospitalGUID = info.HospitalGUID;
baseInfo.CreatorID = info.CreateID;
baseInfo.FollowUpDepartment = risk.ShareUserDepartment;
baseInfo.CreationDate = Convert.ToDateTime(DateTime.Now.AddMonths(1).ToString("yyyy-MM-dd"));
baseInfo.Flag = "1";
db.Insertable(baseInfo).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
T_Service_Apoplexy_Community_BaseInfo baseInfo1 = new T_Service_Apoplexy_Community_BaseInfo();
baseInfo1.GUID = Guid.NewGuid().ToString();
baseInfo1.PatientGUID = info.GUID;
baseInfo1.HospitalGUID = info.HospitalGUID;
baseInfo1.CreatorID = info.CreateID;
baseInfo1.FollowUpDepartment = risk.ShareUserDepartment;
baseInfo1.CreationDate = Convert.ToDateTime(DateTime.Now.AddMonths(3).ToString("yyyy-MM-dd"));
baseInfo1.Flag = "3";
db.Insertable(baseInfo1).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
T_Service_Apoplexy_Community_BaseInfo baseInfo2 = new T_Service_Apoplexy_Community_BaseInfo();
baseInfo2.GUID = Guid.NewGuid().ToString();
baseInfo2.PatientGUID = info.GUID;
baseInfo2.HospitalGUID = info.HospitalGUID;
baseInfo2.CreatorID = info.CreateID;
baseInfo2.FollowUpDepartment = risk.ShareUserDepartment;
baseInfo2.CreationDate = Convert.ToDateTime(DateTime.Now.AddMonths(6).ToString("yyyy-MM-dd"));
baseInfo2.Flag = "6";
db.Insertable(baseInfo2).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
T_Service_Apoplexy_Community_BaseInfo baseInfo3 = new T_Service_Apoplexy_Community_BaseInfo();
baseInfo3.GUID = Guid.NewGuid().ToString();
baseInfo3.PatientGUID = info.GUID;
baseInfo3.HospitalGUID = info.HospitalGUID;
baseInfo3.CreatorID = info.CreateID;
baseInfo3.FollowUpDepartment = risk.ShareUserDepartment;
baseInfo3.CreationDate = Convert.ToDateTime(DateTime.Now.AddMonths(9).ToString("yyyy-MM-dd"));
baseInfo3.Flag = "9";
db.Insertable(baseInfo3).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
T_Service_Apoplexy_Community_BaseInfo baseInfo4 = new T_Service_Apoplexy_Community_BaseInfo();
baseInfo4.GUID = Guid.NewGuid().ToString();
baseInfo4.PatientGUID = info.GUID;
baseInfo4.HospitalGUID = info.HospitalGUID;
baseInfo4.CreatorID = info.CreateID;
baseInfo4.FollowUpDepartment = risk.ShareUserDepartment;
baseInfo4.CreationDate = Convert.ToDateTime(DateTime.Now.AddMonths(12).ToString("yyyy-MM-dd"));
baseInfo4.Flag = "12";
db.Insertable(baseInfo4).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
}
db.Ado.CommitTran();
return true;
}
catch (Exception a)
{
db.Ado.RollbackTran();
return false;
}
}
public T_Service_ApoplexyScreenInfo GetByPhone(string phone)
{
DateTime dt1 = DateTime.Now.AddDays(1);
DateTime dt2 = dt1.AddYears(-1);
return db.Queryable<T_Service_ApoplexyScreenInfo>().Where(i => i.ContactNmber == phone && i.CreateTime >= dt2 && i.CreateTime <= dt1).First();
}
public T_Service_ApoplexyScreenInfo GetByIDCard(string idcard)
{
DateTime dt1 = DateTime.Now.AddDays(1);
DateTime dt2 = dt1.AddYears(-1);
return db.Queryable<T_Service_ApoplexyScreenInfo>().Where(i => i.IDCard == idcard && i.CreateTime >= dt2 && i.CreateTime <= dt1).First();
}
/// <summary>
/// 高危筛查患者列表
/// </summary>
/// <param name="info">患者信息;姓名,电话,身份证</param>
/// <param name="source">来源:-1 全部 0 院内1 院外 </param>
/// <param name="category">筛查数据填报来源:-1 全部, 0 筛查系统1 app2 扫码</param>
/// <param name="startTime">复筛开始时间</param>
/// <param name="endTime">复筛结束时间</param>
/// <param name="visitType">就诊类型1 门诊2住院3体检4其他</param>
/// <param name="ecg">心电图: 空字符 未做心电图1 已经心电图</param>
/// <param name="tcd">TCD空字符 未做TCD,1已做TD</param>
/// <param name="laboratory">实验室检查:空字符 未做检查1已做检查</param>
/// <param name="cervical">颈部血管超声:空字符 未做血管超声1已做血管超声</param>
/// <param name="cDepartment">初筛科室</param>
/// <param name="cDoctor">初筛医生</param>
/// <param name="highRisk">初筛评级:-1 全部 0 低危1 高危2 中危, 3 正常</param>
/// <param name="cHighRisk">初筛高危因素8+2问题逗号分隔</param>
/// <param name="rescreeningStatus">复筛状态1 未复筛, 2 进行中, 3 已完成</param>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <returns></returns>
public TableModel<ScreeninListModel> GetScreeninListModel(string info, int source, int category, string startTime, string endTime, string visitType, string ecg, string tcd, string laboratory, string cervical, string cDepartment, string cDoctor, int highRisk, string cHighRisk, string rescreeningStatus, int pageIndex, int pageSize)
{
var cexp = Expressionable.Create<ScreeninListModel>();
var fexp = Expressionable.Create<ScreeninListModel>();
int total = 0;
List<ScreeninListModel> list = new List<ScreeninListModel>();
var query = db.Queryable<T_Service_FirstAid_ApoplexyHighRiskScreening, T_Service_ApoplexyScreenInfo>((a, b) => new JoinQueryInfos(JoinType.Inner, a.PatientGUID == b.GUID))
.Where((a, b) => b.DeleteFlag == 0)
.WhereIF(!SqlFunc.IsNullOrEmpty(info), (a, b) => b.Name.Contains(info) || b.ContactNmber.Contains(info) || b.IDCard.Contains(info))
.WhereIF(source > -1, (a, b) => a.Source == source)
.WhereIF(category > -1, (a, b) => a.Category == category)
.WhereIF(!SqlFunc.IsNullOrEmpty(startTime), (a, b) => b.CreateTime >= SqlFunc.ToDate(startTime))
.WhereIF(!SqlFunc.IsNullOrEmpty(endTime), (a, b) => b.CreateTime <= SqlFunc.ToDate(endTime).AddDays(1))
.WhereIF(highRisk > -1, (a, b) => a.HighRisk == highRisk)
.WhereIF(!SqlFunc.IsNullOrEmpty(visitType), (a, b) => b.VisitType == visitType)
.WhereIF(!SqlFunc.IsNullOrEmpty(cDepartment), (a, b) => a.ShareUserDepartment == cDepartment)
.WhereIF(!SqlFunc.IsNullOrEmpty(cDoctor), (a, b) => a.ShareUserName == cDoctor)
.WhereIF(rescreeningStatus == "1", (a, b) => b.RescreeningStatus == 0)
.WhereIF(rescreeningStatus == "2", (a, b) => b.RescreeningStatus > 0 && b.RescreeningStatus < 10)
.WhereIF(rescreeningStatus == "3", (a, b) => b.RescreeningStatus > 0 && b.RescreeningStatus == 10)
.WhereIF(ecg == "1", (a, b) => !SqlFunc.IsNullOrEmpty(SqlFunc.Subqueryable<T_Service_ApoplexyScreenPhysicalFitness>().Where(py => py.PatientGUID == b.GUID && !string.IsNullOrEmpty(py.ECGInspectionTime)).Select(py => py.ECGInspectionTime)))
.WhereIF(!SqlFunc.IsNullOrEmpty(tcd), (a, b) => !SqlFunc.IsNullOrEmpty(SqlFunc.Subqueryable<T_Service_ApoplexyTCD>().Where(tc => tc.PatientGUID == b.GUID && tc.IsTCD == "1").Select(tc => tc.PatientGUID)))
.WhereIF(!SqlFunc.IsNullOrEmpty(laboratory), (a, b) => !SqlFunc.IsNullOrEmpty(SqlFunc.Subqueryable<T_Service_ApoplexyScreenLaboratory>().Where(la => la.PatientGUID == b.GUID).Select(la => la.PatientGUID)))
.WhereIF(!SqlFunc.IsNullOrEmpty(cervical), (a, b) => !SqlFunc.IsNullOrEmpty(SqlFunc.Subqueryable<T_Service_ApoplexyScreenCervical>().Where(cer => cer.PatientGUID == b.GUID).Select(cer => cer.PatientGUID)))
.OrderBy((a, b) => b.CreateTime, OrderByType.Desc).Select((a, b) => new ScreeninListModel()
{
GUID = b.GUID,
Name = b.Name,
Age = b.Age,
Gender = b.Gender,
ContactNmber = b.ContactNmber,
IDCard = b.IDCard.Length > 0 ? b.IDCard.Substring(0, 3) + "***********" + b.IDCard.Substring(b.IDCard.Length - 4, 4) : "未填",
RescreeningStatus = SqlFunc.IF(b.RescreeningStatus == 0).Return("未复筛").ElseIF(b.RescreeningStatus == 10).Return("已完成").End("进行中"),
VisitType = b.VisitType,
InitialScreenNum = a.InitialScreenNum,
ShareUserDepartment = a.ShareUserDepartment,
ShareUserName = a.ShareUserName,
InitialSreeningtime = SqlFunc.ToString(a.CreateTime),
HighRisk = a.HighRisk,
Source = a.Source,
Category = a.Category,
Diabetes = a.Diabetes,
Obese = a.Obese,
RelativeHistory = a.RelativeHistory,
RescreeningNumber = b.RescreeningNumber,
BoolFat = a.BoolFat,
Smoke = a.Smoke,
HeartDisease = a.HeartDisease,
Hypertension = a.Hypertension,
Apoplexy = a.Apoplexy,
AmountOfExercise = a.AmountOfExercise,
TIA = a.TIA
});
if (!string.IsNullOrEmpty(cHighRisk))
{
string[] valueArry = new string[0];
valueArry = cHighRisk.Split(',');
if (valueArry.Length > 0)
{
for (int i = 0; i < valueArry.Length; i++)
{
if (valueArry[i].ToString() == "1")
cexp.And(a => a.Hypertension == 1);
if (valueArry[i].ToString() == "2")
cexp.And(a => a.BoolFat == 1);
if (valueArry[i].ToString() == "3")
cexp.And(a => a.Diabetes == 1);
if (valueArry[i].ToString() == "4")
cexp.And(a => a.HeartDisease == 1);
if (valueArry[i].ToString() == "5")
cexp.And(a => a.Smoke == 1);
if (valueArry[i].ToString() == "6")
cexp.And(a => a.Apoplexy == 1);
if (valueArry[i].ToString() == "7")
cexp.And(a => a.AmountOfExercise == 1);
if (valueArry[i].ToString() == "8")
cexp.And(a => a.RelativeHistory == 1);
if (valueArry[i].ToString() == "9")
cexp.And(a => a.TIA == 1);
if (valueArry[i].ToString() == "10")
cexp.And(a => a.Obese == 1);
}
query = query.Where(cexp.ToExpression());
}
}
list = query.Clone().ToPageList(pageIndex, pageSize, ref total);
if (list != null && list.Count > 0)
{
for (int i = 0; i < list.Count(); i++)
{
if (!string.IsNullOrEmpty(list[i].InitialSreeningtime))
list[i].InitialSreeningtime = Convert.ToDateTime(list[i].InitialSreeningtime).ToString("yyyy-MM-dd HH:mm");
}
}
TableModel<ScreeninListModel> t = new TableModel<ScreeninListModel>();
t.Code = 0;
t.PageCount = list.Count;
t.TotalNumber = total;
t.Data = list;
t.Msg = "成功";
return t;
}
/// <summary>
/// 保存基本信息
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
public bool SaveScreenInfo(T_Service_ApoplexyScreenInfo info, string mark, string flag)
{
try
{
db.Ado.BeginTran();
// string RescreeningStatus = "1";
db.Updateable(info).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand();
if (!SqlFunc.IsNullOrEmpty(mark))//筛查人/干预人有变动,筛查/干预相关表筛查人同步更新
{
T_Service_ApoplexyScreenLifeStyle lifeStyle = new T_Service_ApoplexyScreenLifeStyle();
lifeStyle = db.Queryable<T_Service_ApoplexyScreenLifeStyle>().Where(i => i.PatientGUID == info.GUID && i.Flag == flag).First();
if (lifeStyle == null)
{
lifeStyle = new T_Service_ApoplexyScreenLifeStyle();
lifeStyle.Screener = mark;
lifeStyle.Flag = flag;
lifeStyle.PatientGUID = info.GUID;
lifeStyle.GUID = Guid.NewGuid().ToString();
db.Insertable(lifeStyle).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
}
else
{
lifeStyle.Screener = mark;
db.Updateable(lifeStyle).UpdateColumns(it => new { it.Screener }).ExecuteCommand();
}
T_Service_ApoplexyScreenFamilyHistory familyHistory = new T_Service_ApoplexyScreenFamilyHistory();
familyHistory = db.Queryable<T_Service_ApoplexyScreenFamilyHistory>().Where(i => i.PatientGUID == info.GUID && i.Flag == flag).First();
if (familyHistory == null)
{
familyHistory = new T_Service_ApoplexyScreenFamilyHistory();
familyHistory.Screener = mark;
familyHistory.Flag = flag;
familyHistory.PatientGUID = info.GUID;
familyHistory.GUID = Guid.NewGuid().ToString();
db.Insertable(familyHistory).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
}
else
{
familyHistory.Screener = mark;
db.Updateable(familyHistory).UpdateColumns(it => new { it.Screener }).ExecuteCommand();
}
if (flag == "1")
{
T_Service_ApoplexyPastHistory pastHistory = new T_Service_ApoplexyPastHistory();
pastHistory = db.Queryable<T_Service_ApoplexyPastHistory>().Where(i => i.PatientGUID == info.GUID).First();
if (pastHistory == null)
{
pastHistory = new T_Service_ApoplexyPastHistory();
pastHistory.Screener = mark;
pastHistory.PatientGUID = info.GUID;
pastHistory.GUID = Guid.NewGuid().ToString();
db.Insertable(pastHistory).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
}
else
{
pastHistory.Screener = mark;
db.Updateable(pastHistory).UpdateColumns(it => new { it.Screener }).ExecuteCommand();
}
T_Service_ApoplexyProposal proposal = new T_Service_ApoplexyProposal();
proposal = db.Queryable<T_Service_ApoplexyProposal>().Where(i => i.PatientGUID == info.GUID).First();
if (proposal == null)
{
proposal = new T_Service_ApoplexyProposal();
proposal.ScreenName = mark;
proposal.PatientGUID = info.GUID;
proposal.GUID = Guid.NewGuid().ToString();
db.Insertable(proposal).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
}
else
{
proposal.ScreenName = mark;
db.Updateable(proposal).UpdateColumns(it => new { it.ScreenName }).ExecuteCommand();
}
T_Service_ApoplexyTCD tcd = new T_Service_ApoplexyTCD();
tcd = db.Queryable<T_Service_ApoplexyTCD>().Where(i => i.PatientGUID == info.GUID).First();
if (tcd == null)
{
tcd = new T_Service_ApoplexyTCD();
tcd.ScreenName = mark;
tcd.PatientGUID = info.GUID;
tcd.GUID = Guid.NewGuid().ToString();
db.Insertable(tcd).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
}
else
{
tcd.ScreenName = mark;
db.Updateable(tcd).UpdateColumns(it => new { it.ScreenName }).ExecuteCommand();
}
}
if (flag == "2")
{
T_Service_ApoplexyIntervenePastHistory pastHistory = new T_Service_ApoplexyIntervenePastHistory();
pastHistory = db.Queryable<T_Service_ApoplexyIntervenePastHistory>().Where(i => i.PatientGUID == info.GUID).First();
if (pastHistory == null)
{
pastHistory = new T_Service_ApoplexyIntervenePastHistory();
pastHistory.Screener = mark;
pastHistory.PatientGUID = info.GUID;
pastHistory.GUID = Guid.NewGuid().ToString();
db.Insertable(pastHistory).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
}
else
{
pastHistory.Screener = mark;
db.Updateable(pastHistory).UpdateColumns(it => new { it.Screener }).ExecuteCommand();
}
}
T_Service_ApoplexyScreenPhysicalFitness physicalFitness = new T_Service_ApoplexyScreenPhysicalFitness();
physicalFitness = db.Queryable<T_Service_ApoplexyScreenPhysicalFitness>().Where(i => i.PatientGUID == info.GUID && i.Flag == flag).First();
if (physicalFitness == null)
{
physicalFitness = new T_Service_ApoplexyScreenPhysicalFitness();
physicalFitness.SignScreener = mark;
physicalFitness.MeasurementScreener = mark;
physicalFitness.StethoscopeScreener = mark;
physicalFitness.Flag = flag;
physicalFitness.PatientGUID = info.GUID;
physicalFitness.GUID = Guid.NewGuid().ToString();
db.Insertable(physicalFitness).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
}
else
{
physicalFitness.SignScreener = mark;
physicalFitness.MeasurementScreener = mark;
physicalFitness.StethoscopeScreener = mark;
db.Updateable(physicalFitness).UpdateColumns(it => new { it.SignScreener, it.MeasurementScreener, it.StethoscopeScreener, it.ECGScreener }).ExecuteCommand();
}
T_Service_ApoplexyScreenAngiopathy angiopathy = new T_Service_ApoplexyScreenAngiopathy();
angiopathy = db.Queryable<T_Service_ApoplexyScreenAngiopathy>().Where(i => i.PatientGUID == info.GUID && i.Flag == flag).First();
if (angiopathy == null)
{
angiopathy = new T_Service_ApoplexyScreenAngiopathy();
angiopathy.ScreenName = mark;
angiopathy.Flag = flag;
angiopathy.PatientGUID = info.GUID;
angiopathy.GUID = Guid.NewGuid().ToString();
db.Insertable(angiopathy).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();
}
else
{
angiopathy.ScreenName = mark;
db.Updateable(angiopathy).UpdateColumns(it => new { it.ScreenName }).ExecuteCommand();
}
}
db.Ado.CommitTran();
return true;
}
catch (Exception a)
{
db.Ado.RollbackTran();
Help.WriteErrorLog("卒中高危筛查保存基本信息(SaveScreenInfo)", a.ToString());
return false;
}
}
/// <summary>
/// 获取基本信息
/// </summary>
/// <param name="guid"></param>
/// <returns></returns>
public T_Service_ApoplexyScreenInfo GetScreenInfo(string guid)
{
return db.Queryable<T_Service_ApoplexyScreenInfo>().Where(i => i.GUID == guid && i.DeleteFlag == 0).First();
}
/// <summary>
/// 随访日历
/// </summary>
/// <param name="guid"></param>
/// <returns></returns>
public TableModel<CalendarModel> GetCalenderData(string FollowUpDepartment)
{
List<CalendarModel> list = new List<CalendarModel>();
list = db.Queryable<T_Service_ApoplexyScreenInfo, T_Service_Apoplexy_Community_BaseInfo>((a, b) => new JoinQueryInfos(JoinType.Inner, a.GUID == b.PatientGUID)).
Where((a, b) => !SqlFunc.IsNullOrEmpty(b.CreationDate) && a.DeleteFlag == 0 && b.IsCompleted == 0 && b.FollowUpDepartment == FollowUpDepartment).GroupBy((a, b) => SqlFunc.ToDate(b.CreationDate).Date)
.Select((a, b) => new CalendarModel { info = SqlFunc.AggregateCount(b.CreationDate), Date = SqlFunc.ToDate(b.CreationDate).Date, AllDay = true, ExpiredTime = SqlFunc.ToDate(b.CreationDate).Date < SqlFunc.ToDate(DateTime.Now).Date ? 0 : 1 }).ToList();
TableModel<CalendarModel> t = new TableModel<CalendarModel>();
t.Code = 0;
t.PageCount = list.Count;
t.TotalNumber = list.Count;
t.Data = list;
t.Msg = "成功";
return t;
}
/// <summary>
/// 随访日历列表
/// </summary>
/// <param name="guid"></param>
/// <returns></returns>
public TableModel<ApoplexyScreenInfo> GetCalenderList(DateTime date, string FollowUpDepartment)
{
List<ApoplexyScreenInfo> list = new List<ApoplexyScreenInfo>();
list = db.Queryable<T_Service_ApoplexyScreenInfo, T_Service_Apoplexy_Community_BaseInfo>((a, b) => new JoinQueryInfos(JoinType.Inner, a.GUID == b.PatientGUID)).
Where((a, b) => !SqlFunc.IsNullOrEmpty(b.CreationDate) && b.DeleteFlag == 0 && b.FollowUpDepartment == FollowUpDepartment && SqlFunc.ToDate(b.CreationDate).Date == SqlFunc.ToDate(date).Date).OrderBy((a, b) => b.IsCompleted, OrderByType.Asc).Select((a, b) => new ApoplexyScreenInfo
{
GUID = a.GUID,
Name = a.Name,
Gender = a.Gender,
Age = a.Age,
IDCard = a.IDCard,
ContactNmber = a.ContactNmber,
CreationDate = b.CreationDate,
CreateID = b.CreatorID,
Flag = b.Flag,
FollowUpDepartment = b.FollowUpDepartment,
FollowupPerson = b.FollowupPerson,
IsCompleted = b.IsCompleted
}).ToList();
TableModel<ApoplexyScreenInfo> t = new TableModel<ApoplexyScreenInfo>();
t.Code = 0;
t.PageCount = list.Count;
t.TotalNumber = list.Count;
t.Data = list;
t.Msg = "成功";
return t;
}
/// <summary>
/// 随访日历统计按月按科室统计
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public Tuple<int, int, int, int, int> GetCalenderStatistics(string FollowUpDepartment, int CreatorID)
{
DateTime dt = DateTime.Now;
DateTime start = Convert.ToDateTime(dt.AddDays(1 - dt.Day).ToString("yyyy-MM-dd"));
DateTime end = Convert.ToDateTime(dt.AddDays(1 - dt.Day).AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd"));
//随访成功
var list = db.Queryable<T_Service_ApoplexyScreenInfo, T_Service_Apoplexy_Community_BaseInfo>((a, b) => new JoinQueryInfos(JoinType.Inner, a.GUID == b.PatientGUID)).
Where((a, b) => !SqlFunc.IsNullOrEmpty(b.CreationDate) && b.DeleteFlag == 0 && b.IsCompleted == 1 && b.FollowUpDepartment == FollowUpDepartment && SqlFunc.Between(b.CreationDate, start, end)).Select(a => a.GUID).ToList();
//失访任务
var list1 = db.Queryable<T_Service_ApoplexyScreenInfo, T_Service_Apoplexy_Community_BaseInfo>((a, b) => new JoinQueryInfos(JoinType.Inner, a.GUID == b.PatientGUID)).
Where((a, b) => !SqlFunc.IsNullOrEmpty(b.CreationDate) && b.DeleteFlag == 0 && b.IsCompleted == 1 && b.LossOfVisit == "1" && b.FollowUpDepartment == FollowUpDepartment && SqlFunc.Between(b.CreationDate, start, end)).Select(a => a.GUID).ToList();
//个人已完成
var list2 = db.Queryable<T_Service_ApoplexyScreenInfo, T_Service_Apoplexy_Community_BaseInfo>((a, b) => new JoinQueryInfos(JoinType.Inner, a.GUID == b.PatientGUID)).
Where((a, b) => !SqlFunc.IsNullOrEmpty(b.CreationDate) && b.DeleteFlag == 0 && b.IsCompleted == 1 && b.FollowUpDepartment == FollowUpDepartment && b.CreatorID == CreatorID && SqlFunc.Between(b.CreationDate, start, end)).Select(a => a.GUID).ToList();
//科室已完成
var list3 = db.Queryable<T_Service_ApoplexyScreenInfo, T_Service_Apoplexy_Community_BaseInfo>((a, b) => new JoinQueryInfos(JoinType.Inner, a.GUID == b.PatientGUID)).
Where((a, b) => !SqlFunc.IsNullOrEmpty(b.CreationDate) && b.DeleteFlag == 0 && b.IsCompleted == 1 && b.FollowUpDepartment == FollowUpDepartment && SqlFunc.Between(b.CreationDate, start, end)).Select(a => a.GUID).ToList();
//科室任务
var list4 = db.Queryable<T_Service_ApoplexyScreenInfo, T_Service_Apoplexy_Community_BaseInfo>((a, b) => new JoinQueryInfos(JoinType.Inner, a.GUID == b.PatientGUID)).
Where((a, b) => !SqlFunc.IsNullOrEmpty(b.CreationDate) && b.DeleteFlag == 0 && b.FollowUpDepartment == FollowUpDepartment && SqlFunc.Between(b.CreationDate, start, end)).Select(a => a.GUID).ToList();
return Tuple.Create(list.Count, list1.Count, list2.Count, list3.Count, list4.Count);
}
/// <summary>
/// 获取已经筛查了的部门集合
/// </summary>
/// <returns></returns>
public List<string> GetScreenDepartment()
{
List<string> list = new List<string>();
list = db.Queryable<T_Service_FirstAid_ApoplexyHighRiskScreening>().Where(i => !SqlFunc.IsNullOrEmpty(i.ShareUserDepartment)).Distinct().Select(i => i.ShareUserDepartment).ToList();
return list;
}
/// <summary>
/// 根据患者GUID获取筛查表中内容填报完成度
/// </summary>
/// <param name="guid"></param>
/// <returns></returns>
public SceenIntegrityModel GetSceenIntegrity(string guid)
{
SceenIntegrityModel model = new SceenIntegrityModel();
model = db.Queryable<T_Service_ApoplexyScreenInfo, T_Service_ApoplexyScreenLifeStyle, T_Service_ApoplexyScreenFamilyHistory, T_Service_ApoplexyPastHistory,
T_Service_ApoplexyScreenPhysicalFitness, T_Service_ApoplexyScreenLaboratory, T_Service_ApoplexyTCD, T_Service_ApoplexyScreenCervical,
T_Service_ApoplexyScreenAngiopathy, T_Service_ApoplexyProposal>((a, b, c, d, e, f, g, h, i, j) => new JoinQueryInfos(
JoinType.Left, a.GUID == b.PatientGUID, JoinType.Left, a.GUID == c.PatientGUID, JoinType.Left, a.GUID == d.PatientGUID,
JoinType.Left, a.GUID == e.PatientGUID, JoinType.Left, a.GUID == f.PatientGUID, JoinType.Left, a.GUID == g.PatientGUID,
JoinType.Left, a.GUID == h.PatientGUID, JoinType.Left, a.GUID == i.PatientGUID, JoinType.Left, a.GUID == j.PatientGUID))
.Where((a, b, c, d, e, f, g, h, i, j) => a.GUID == guid && a.DeleteFlag == 0)
.Select((a, b, c, d, e, f, g, h, i, j) => new SceenIntegrityModel()
{
Info = a.FillinStatus,
Lifestyle = b.FillinStatus,
Familyhistory = c.FillinStatus,
Medicalhistory = d.FillinStatus,
PhysicaAndecg = e.FillinStatus,
Laboratory = f.FillinStatus,
TCD = g.FillinStatus,
Cervical = h.FillinStatus,
Operation = i.FillinStatus,
Proposal = j.FillinStatus,
}).First();
return model;
}
}
}