|
|
|
@ -1,6 +1,7 @@ |
|
|
|
using Microsoft.AspNetCore.Authorization; |
|
|
|
using Microsoft.AspNetCore.Mvc; |
|
|
|
using Microsoft.EntityFrameworkCore; |
|
|
|
using Microsoft.EntityFrameworkCore.Metadata.Internal; |
|
|
|
using Shentun.Peis.CustomerOrgs; |
|
|
|
using Shentun.Peis.Enums; |
|
|
|
using Shentun.Peis.Models; |
|
|
|
@ -33,7 +34,7 @@ namespace Shentun.Peis.PeisReports |
|
|
|
private readonly IRepository<MedicalPackage, Guid> _medicalPackageRepository; |
|
|
|
private readonly IRepository<CustomerOrg, Guid> _customerOrgRepository; |
|
|
|
private readonly IRepository<Sex> _sexRepository; |
|
|
|
private readonly IRepository<RegisterCheckAsbitem, Guid> _registerAsbitemRepository; |
|
|
|
private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository; |
|
|
|
private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository; |
|
|
|
private readonly IRepository<Asbitem, Guid> _asbitemRepository; |
|
|
|
private readonly CustomerOrgManager _customerOrgManager; |
|
|
|
@ -48,7 +49,7 @@ namespace Shentun.Peis.PeisReports |
|
|
|
IRepository<MedicalPackage, Guid> medicalPackageRepository, |
|
|
|
IRepository<CustomerOrg, Guid> customerOrgRepository, |
|
|
|
IRepository<Sex> sexRepository, |
|
|
|
IRepository<RegisterCheckAsbitem, Guid> registerAsbitemRepository, |
|
|
|
IRepository<RegisterCheckAsbitem, Guid> registerCheckAsbitemRepository, |
|
|
|
IRepository<RegisterCheck, Guid> registerCheckRepository, |
|
|
|
IRepository<Asbitem, Guid> asbitemRepository, |
|
|
|
CustomerOrgManager customerOrgManager, |
|
|
|
@ -63,7 +64,7 @@ namespace Shentun.Peis.PeisReports |
|
|
|
this._medicalPackageRepository = medicalPackageRepository; |
|
|
|
this._customerOrgRepository = customerOrgRepository; |
|
|
|
this._sexRepository = sexRepository; |
|
|
|
this._registerAsbitemRepository = registerAsbitemRepository; |
|
|
|
this._registerCheckAsbitemRepository = registerCheckAsbitemRepository; |
|
|
|
this._registerCheckRepository = registerCheckRepository; |
|
|
|
this._asbitemRepository = asbitemRepository; |
|
|
|
this._customerOrgManager = customerOrgManager; |
|
|
|
@ -83,7 +84,7 @@ namespace Shentun.Peis.PeisReports |
|
|
|
join b in await _patientRepository.GetQueryableAsync() on a.PatientId equals b.Id into bb |
|
|
|
from ab in bb.DefaultIfEmpty() |
|
|
|
join registerCheck in await _registerCheckRepository.GetQueryableAsync() on a.Id equals registerCheck.PatientRegisterId |
|
|
|
join registerAsbitem in await _registerAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerAsbitem.RegisterCheckId |
|
|
|
join registerAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerAsbitem.RegisterCheckId |
|
|
|
join asbitem in await _asbitemRepository.GetQueryableAsync() on registerAsbitem.AsbitemId equals asbitem.Id |
|
|
|
join c in await _customerOrgGroupRepository.GetQueryableAsync() on a.CustomerOrgGroupId equals c.Id into cc |
|
|
|
from ac in cc.DefaultIfEmpty() |
|
|
|
@ -366,7 +367,7 @@ namespace Shentun.Peis.PeisReports |
|
|
|
[HttpPost("api/app/peisreport/getregisterasbitemregistercheckstatus")] |
|
|
|
public async Task<List<GetRegisterAsbitemRegisterCheckStatusDto>> GetRegisterAsbitemRegisterCheckStatusAsync(GetRegisterAsbitemRegisterCheckStatusRequestDto input) |
|
|
|
{ |
|
|
|
var query = from j in await _registerAsbitemRepository.GetQueryableAsync() |
|
|
|
var query = from j in await _registerCheckAsbitemRepository.GetQueryableAsync() |
|
|
|
join k in await _registerCheckRepository.GetQueryableAsync() on j.RegisterCheckId equals k.Id into kk |
|
|
|
from jk in kk.DefaultIfEmpty() |
|
|
|
join l in await _patientRegisterRepository.GetQueryableAsync() on j.PatientRegisterId equals l.Id into ll |
|
|
|
@ -534,7 +535,7 @@ namespace Shentun.Peis.PeisReports |
|
|
|
public async Task<List<GetRegisterAsbitemChargeStatusDto>> GetRegisterAsbitemChargeStatusAsync(GetRegisterAsbitemChargeStatusRequestDto input) |
|
|
|
{ |
|
|
|
|
|
|
|
var query = from j in await _registerAsbitemRepository.GetQueryableAsync() |
|
|
|
var query = from j in await _registerCheckAsbitemRepository.GetQueryableAsync() |
|
|
|
join k in await _registerCheckRepository.GetQueryableAsync() on j.RegisterCheckId equals k.Id into kk |
|
|
|
from jk in kk.DefaultIfEmpty() |
|
|
|
join l in await _patientRegisterRepository.GetQueryableAsync() on j.PatientRegisterId equals l.Id into ll |
|
|
|
@ -712,7 +713,7 @@ namespace Shentun.Peis.PeisReports |
|
|
|
from af in ff.DefaultIfEmpty() |
|
|
|
join g in await _sexRepository.GetQueryableAsync() on a.SexId equals g.Id into gg |
|
|
|
from ag in gg.DefaultIfEmpty() |
|
|
|
join aj in await _registerAsbitemRepository.GetQueryableAsync() on a.Id equals aj.PatientRegisterId |
|
|
|
join aj in await _registerCheckAsbitemRepository.GetQueryableAsync() on a.Id equals aj.PatientRegisterId |
|
|
|
join ak in await _registerCheckRepository.GetQueryableAsync() on aj.RegisterCheckId equals ak.Id |
|
|
|
join al in await _asbitemRepository.GetQueryableAsync() on aj.AsbitemId equals al.Id |
|
|
|
//join j in await _registerAsbitemRepository.GetQueryableAsync() on a.Id equals j.PatientRegisterId into jj
|
|
|
|
@ -866,5 +867,89 @@ namespace Shentun.Peis.PeisReports |
|
|
|
return entlist; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 健康统计数据
|
|
|
|
/// </summary>
|
|
|
|
/// <returns></returns>
|
|
|
|
[HttpPost("api/app/PeisReport/GetHealthStatistics")] |
|
|
|
public async Task<HealthStatisticsDto> GetHealthStatisticsAsync(HealthStatisticsInputDto input) |
|
|
|
{ |
|
|
|
var query = from patientRegister in await _patientRegisterRepository.GetQueryableAsync() |
|
|
|
join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId |
|
|
|
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId |
|
|
|
select new |
|
|
|
{ |
|
|
|
patientRegister, |
|
|
|
registerCheck, |
|
|
|
registerCheckAsbitem |
|
|
|
}; |
|
|
|
if (input.MedicalTypeIds.Any()) |
|
|
|
{ |
|
|
|
if (input.IsMedicalTypeId == 'Y') |
|
|
|
{ |
|
|
|
query = query.Where(m => input.MedicalTypeIds.Contains(m.patientRegister.MedicalTypeId) || m.patientRegister.MedicalTypeId == null); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
query = query.Where(m => input.MedicalTypeIds.Contains(m.patientRegister.MedicalTypeId)); |
|
|
|
} |
|
|
|
} |
|
|
|
if (input.CustomerOrgIds.Any()) |
|
|
|
{ |
|
|
|
List<Guid?> ids = new List<Guid?>(); |
|
|
|
|
|
|
|
foreach (var item in input.CustomerOrgIds) |
|
|
|
{ |
|
|
|
var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item); |
|
|
|
ids.AddRange(CustomerOrgIds); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
query = query.Where(m => ids.Contains(m.patientRegister.CustomerOrgId)); |
|
|
|
} |
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(input.StartDate) && !string.IsNullOrEmpty(input.EndDate)) |
|
|
|
{ |
|
|
|
if (input.DateType == '1') |
|
|
|
{ |
|
|
|
query = query.Where(m => m.patientRegister.CreationTime >= Convert.ToDateTime(input.StartDate) && |
|
|
|
m.patientRegister.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1)); |
|
|
|
} |
|
|
|
else if (input.DateType == '2') |
|
|
|
{ |
|
|
|
query = query.Where(m => m.patientRegister.MedicalStartDate != null && m.patientRegister.MedicalStartDate.Value >= Convert.ToDateTime(input.StartDate) && |
|
|
|
m.patientRegister.MedicalStartDate.Value < Convert.ToDateTime(input.EndDate).AddDays(1)); |
|
|
|
} |
|
|
|
else if (input.DateType == '3') |
|
|
|
{ |
|
|
|
query = query.Where(m => m.patientRegister.SummaryDate != null && m.patientRegister.SummaryDate.Value >= Convert.ToDateTime(input.StartDate) && |
|
|
|
m.patientRegister.SummaryDate.Value < Convert.ToDateTime(input.EndDate).AddDays(1)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
var dataList = query.ToList(); |
|
|
|
|
|
|
|
var patientRegisterGroup = dataList.GroupBy(g => g.patientRegister); |
|
|
|
|
|
|
|
var maleCount = patientRegisterGroup.Where(m => m.Key.SexId == SexFlag.Male).Count(); |
|
|
|
var femaleCount = patientRegisterGroup.Where(m => m.Key.SexId == SexFlag.Female).Count(); |
|
|
|
var sumCount = patientRegisterGroup.Count(); |
|
|
|
|
|
|
|
var standardPrice = dataList.Sum(s => s.registerCheckAsbitem.StandardPrice * s.registerCheckAsbitem.Amount); |
|
|
|
var chargePrice = dataList.Sum(s => s.registerCheckAsbitem.ChargePrice * s.registerCheckAsbitem.Amount); |
|
|
|
|
|
|
|
var resultDto = new HealthStatisticsDto |
|
|
|
{ |
|
|
|
ChargeMoney = chargePrice, |
|
|
|
FemaleCount = femaleCount, |
|
|
|
MaleCount = maleCount, |
|
|
|
SumCount = sumCount, |
|
|
|
StandardMoney = standardPrice |
|
|
|
}; |
|
|
|
|
|
|
|
return resultDto; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |