using HL_FristAidPlatform_Help;
using HL_FristAidPlatform_IDataBase;
using HL_FristAidPlatform_Models;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HL_FristAidPlatform_DataBase
{
public class T_Service_Apoplexy_NutritionalRiskDB : BaseDB, IT_Service_Apoplexy_NutritionalRisk
{
public SqlSugarClient db = GetClient();
///
/// 保存住院成人患者营养风险筛查
///
///
///
public bool SaveNutritionalRisk(T_Service_Apoplexy_NutritionalRisk nutritionalRisk)
{
bool result = false;
if (!SqlFunc.IsNullOrEmpty(nutritionalRisk.GUID))
{
result = db.Updateable(nutritionalRisk).IgnoreColumns(i => new { i.Flag, i.CreateTime, i.CreatorID }).ExecuteCommand() == 1 ? true : false;
}
else
{
var nutritional = db.Queryable().Where(i => i.PatientGuid == nutritionalRisk.PatientGuid).ToList();
if (nutritional != null && nutritional.Count > 0)
{
int count = nutritional.Where(i => i.Flag > 0).Count();
nutritionalRisk.Flag = count + 1;
db.Updateable().SetColumns(i => i.isComplete == 1).Where(i => i.PatientGuid == nutritionalRisk.PatientGuid).ExecuteCommand();
}
else
{
nutritionalRisk.Flag = 0;
}
nutritionalRisk.GUID = Guid.NewGuid().ToString();
nutritionalRisk.CreateTime = DateTime.Now;
nutritionalRisk.isComplete = 0;
result = db.Insertable(nutritionalRisk).ExecuteCommand() == 1 ? true : false;
}
return result;
}
///
/// 获取住院成人患者营养风险筛查
///
///
///
public NutritionalRiskModel GetNutritionalRiskByPatientGuid(string patientGuid, int flag)
{
int sflag = flag + 1;
NutritionalRiskModel model = new NutritionalRiskModel();
model = db.Queryable().Where(i => i.PatientGuid == patientGuid && i.Flag == flag && i.DeleteFlag == 0)
.Select(i => new NutritionalRiskModel()
{
GUID = i.GUID,
PatientGuid = i.PatientGuid,
Nutritional = i.Nutritional,
Disease = i.Disease,
Age = i.Age,
TotalScore = i.TotalScore,
Flag = i.Flag,
CreateTime = i.CreateTime,
ScreenFlag = SqlFunc.Subqueryable().Where(s => s.PatientGuid == patientGuid && s.Flag == sflag).Count(),
}).First();
return model;
}
///
/// 根据患者GUID获取筛查集合
///
///
///
public List GetNutritionalRisksListByPatientGuid(string patientGuid)
{
List list = new List();
list = db.Queryable((a, b) => new JoinQueryInfos(JoinType.Inner, a.CreatorID == b.ID))
.OrderBy((a, b) => a.CreateTime, OrderByType.Desc)
.Select((a, b) => new NutritionalRiskModel()
{
Nutritional = a.Nutritional,
Disease = a.Disease,
Age = a.Age,
CreateTime = a.CreateTime,
Flag = a.Flag,
CreateUserName = b.FullName
}).ToList();
return list;
}
///
/// 营养筛查日历
///
///
public TableModel GetCalenderData()
{
List list = new List();
list = db.Queryable().
Where(i => i.DeleteFlag == 0 && i.TotalScore <= 3 && i.isComplete == 0).GroupBy(i => SqlFunc.ToDate(i.CreateTime).Date)
.Select(a => new CalendarModel
{
info = SqlFunc.AggregateCount(a.CreateTime),
Date = SqlFunc.ToDate(a.CreateTime).Date.AddDays(7),
AllDay = true,
ExpiredTime = SqlFunc.ToDate(a.CreateTime).Date < SqlFunc.ToDate(DateTime.Now).Date ? 0 : 1
}).ToList();
TableModel t = new TableModel();
t.Code = 0;
t.PageCount = list.Count;
t.TotalNumber = list.Count;
t.Data = list;
t.Msg = "成功";
return t;
}
///
/// 营养筛查列表
///
///
///
public TableModel GetCalenderList(DateTime date)
{
List list = new List();
list = db.Queryable((a, b, c) => new JoinQueryInfos(JoinType.Inner, a.PatientGuid == b.GUID, JoinType.Left, a.CreatorID == c.ID)).Where(a => a.DeleteFlag == 0 && a.TotalScore <= 3 && a.isComplete == 0 && SqlFunc.ToDate(a.CreateTime).Date == SqlFunc.ToDate(date).Date.AddDays(-7)).Select((a, b, c) => new NutritionalRiskModel
{
PatientGuid = a.PatientGuid,
Nutritional = a.Nutritional,
Disease = a.Disease,
Age = a.Age,
TotalScore = a.TotalScore,
Flag = a.Flag,
CreateTime = a.CreateTime,
CreateUserName = c.FullName,
Name = b.Name,
Gender = b.Gender,
PatientAge = b.Age
}).ToList();
TableModel t = new TableModel();
t.Code = 0;
t.PageCount = list.Count;
t.TotalNumber = list.Count;
t.Data = list;
t.Msg = "成功";
return t;
}
///
/// 获取住院成人患者营养风险筛查 复筛最新数据
///
///
///
public T_Service_Apoplexy_NutritionalRisk GetByPatientGuid(string patientGuid)
{
return db.Queryable().Where(i => i.PatientGuid == patientGuid && i.DeleteFlag == 0 && i.isComplete == 0).OrderBy(i => i.Flag, OrderByType.Desc).First();
}
}
}