128 lines
4.9 KiB
C#
128 lines
4.9 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 T_Service_Apoplexy_PerCapitaCostDB : BaseDB, IT_Service_Apoplexy_PerCapitaCost
|
|
{
|
|
public SqlSugarClient db = GetClient();
|
|
|
|
/// <summary>
|
|
/// 统计人均费用
|
|
/// </summary>
|
|
/// <param name="hospitalGuid"></param>
|
|
/// <param name="startTime"></param>
|
|
/// <param name="endTime"></param>
|
|
/// <returns></returns>
|
|
public List<AverageResultModel> StatisticalPerCapitaExpenses(string hospitalGuid, string startTime, string endTime,int type)
|
|
{
|
|
List<AverageResultModel> list = new List<AverageResultModel>();
|
|
DateTime dt1 = DateTime.Now;
|
|
DateTime dt2 = DateTime.Now;
|
|
if (type == 2)
|
|
{
|
|
int year = int.Parse(startTime);
|
|
dt1 = new DateTime(year, 1, 1);
|
|
dt2 = new DateTime(year, 12, 31);
|
|
|
|
}
|
|
|
|
if (type == 1)
|
|
{
|
|
DateTime startdt = Convert.ToDateTime(startTime);
|
|
dt1 = startdt.AddDays(1 - startdt.Day);
|
|
DateTime enddt = Convert.ToDateTime(endTime);
|
|
dt2 = enddt.AddDays(1 - enddt.Day).AddMonths(1).AddDays(-1);
|
|
}
|
|
|
|
//数据结果集
|
|
var oneClass = db.Queryable<T_Service_Patient, T_Service_Apoplexy_PatientOutcome>((a, b) => a.GUID == b.PatientGuid)
|
|
.Where((a, b) => a.HospitalGuid == hospitalGuid && a.DeleteFlag == 0&& !SqlFunc.IsNullOrEmpty(b.CYTime)&& SqlFunc.ToDate(b.CYTime) >= dt1 && SqlFunc.ToDate(b.CYTime) <= dt2.AddDays(1))
|
|
.Select((a, b) => new StatisticalPerCapitaExpensesModel
|
|
{
|
|
PatientGuid = b.PatientGuid,
|
|
CYTime = b.CYTime,
|
|
AllInCost = b.AllInCost,
|
|
|
|
}).ToList();
|
|
|
|
//月份集合
|
|
List<DateTime> monthList = new List<DateTime>();
|
|
int Month = (dt2.Year - dt1.Year) * 12 + (dt2.Month - dt1.Month);
|
|
for (int i = 0; i < Month + 1; i++)
|
|
{
|
|
string res = dt1.AddMonths(i).Year + "-" + GetDateZero(dt1.AddMonths(i).Month) + "-01";
|
|
DateTime dt = Convert.ToDateTime(res);
|
|
monthList.Add(dt.AddDays(1 - dt.Day));
|
|
}
|
|
|
|
//填充结果集
|
|
if (oneClass != null)
|
|
{
|
|
if (monthList.Count > 0)
|
|
{
|
|
AverageResultModel model = null;
|
|
for (int i = 0; i < monthList.Count; i++)
|
|
{
|
|
DateTime start = Convert.ToDateTime(monthList[i]);
|
|
DateTime end = Convert.ToDateTime(monthList[i]).AddMonths(1).AddDays(-1);
|
|
string timeDate = monthList[i].ToString("yyyy-MM");
|
|
model = new AverageResultModel();
|
|
model.Key = timeDate;
|
|
|
|
//住院费用(月)
|
|
float Costsum = (float)oneClass.Where(j => SqlFunc.ToDate(j.CYTime) >= start && SqlFunc.ToDate(j.CYTime) <= end.AddDays(1)&&!string.IsNullOrEmpty(j.AllInCost)).Sum(i => Convert.ToDouble(i.AllInCost));
|
|
//每月药物费用(单位:元(人民币))
|
|
|
|
//每月总人数
|
|
int Count = oneClass.Where(j => SqlFunc.ToDate(j.CYTime) >= start && SqlFunc.ToDate(j.CYTime) <= end.AddDays(1)).Count();
|
|
if(Count == 0)
|
|
model.Value = "0.00";
|
|
if (Count > 0)
|
|
//住院平均费用(月)
|
|
model.Value = ((double)Costsum / Count).ToString("#0.00");
|
|
if (Count == 0)
|
|
model.Value = ((double)Count).ToString("#0.00");
|
|
list.Add(model);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
AverageResultModel model = null;
|
|
for (int i = 0; i < monthList.Count; i++)
|
|
{
|
|
string timeDate = monthList[i].ToString("yyyy-MM");
|
|
model = new AverageResultModel();
|
|
model.Key = timeDate;
|
|
list.Add(model);
|
|
}
|
|
}
|
|
return list;
|
|
}
|
|
|
|
public string GetDateZero(int date)
|
|
{
|
|
if (date < 10)
|
|
{
|
|
return "0" + date;
|
|
}
|
|
else
|
|
{
|
|
return date.ToString();
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|