Browse Source

组合项目明细

master
wxd 12 months ago
parent
commit
2edb27f6bc
  1. 43
      src/Shentun.Peis.Application.Contracts/CustomerReports/GetAsbitemSpecificResultReportDto.cs
  2. 240
      src/Shentun.Peis.Application/CustomerReports/CustomerReportAppService.cs

43
src/Shentun.Peis.Application.Contracts/CustomerReports/GetAsbitemSpecificResultReportDto.cs

@ -30,12 +30,53 @@ namespace Shentun.Peis.CustomerReports
/// </summary>
public short? Age { get; set; }
/// <summary>
/// 身份证号
/// </summary>
public string IdNo { get; set; }
/// <summary>
/// 单位名称
/// </summary>
public string CustomerOrgName { get; set; }
/// <summary>
/// 部门名称
/// </summary>
public string DepartmentName { get; set; }
/// <summary>
/// 条码号
/// </summary>
public string PatientRegisterNo { get; set; }
/// <summary>
/// 档案号
/// </summary>
public string PatientNo { get; set; }
/// <summary>
/// 手机号
/// </summary>
public string MobileTelephone { get; set; }
/// <summary>
/// 体检开始日期
/// </summary>
public string MedicalStartDate { get; set; }
/// <summary>
/// 人员类别
/// </summary>
public string PersonnelTypeName { get; set; }
/////// <summary>
/////// 小结综述内容(多个以 ; 号隔开) RegisterCheckSummary表 Summary字段
/////// </summary>
//public string RegisterCheckSummarys { get; set; }
public List<GetAsbitemSpecificResultReport_Check> RegisterChecks { get; set; }
///// <summary>

240
src/Shentun.Peis.Application/CustomerReports/CustomerReportAppService.cs

@ -58,7 +58,7 @@ namespace Shentun.Peis.CustomerReports
private readonly IRepository<SumSuggestionContent, Guid> _sumSuggestionContentRepository;
private readonly CustomerOrgManager _customerOrgManager;
private readonly CustomerOrgReportManager _customerOrgReportManager;
private readonly CacheService _cacheService;
public CustomerReportAppService(
IRepository<Patient, Guid> patientRepository,
@ -79,7 +79,8 @@ namespace Shentun.Peis.CustomerReports
IRepository<SumSuggestionHeader, Guid> sumSuggestionHeaderRepository,
IRepository<SumSuggestionContent, Guid> sumSuggestionContentRepository,
CustomerOrgManager customerOrgManager,
CustomerOrgReportManager customerOrgReportManager)
CustomerOrgReportManager customerOrgReportManager,
CacheService cacheService)
{
this._patientRepository = patientRepository;
this._patientRegisterRepository = patientRegisterRepository;
@ -100,6 +101,7 @@ namespace Shentun.Peis.CustomerReports
this._customerOrgManager = customerOrgManager;
this._itemTypeRepository = itemTypeRepository;
this._customerOrgReportManager = customerOrgReportManager;
_cacheService = cacheService;
}
@ -1134,146 +1136,6 @@ namespace Shentun.Peis.CustomerReports
}
///// <summary>
///// 组合项目具体结果统计 组合项目可以多选 但是必选的
///// </summary>
///// <param name="input"></param>
///// <returns></returns>
//[HttpPost("api/customerreport/getasbitemspecificresultreport")]
//public async Task<List<GetAsbitemSpecificResultReportDto>> GetAsbitemSpecificResultReportAsync(GetAsbitemSpecificResultReportRequestDto input)
//{
// var query = from a in await _patientRegisterRepository.GetQueryableAsync()
// join b in await _patientRepository.GetQueryableAsync() on a.PatientId equals b.Id into bb
// from ab in bb.DefaultIfEmpty()
// join d in await _registerAsbitemRepository.GetQueryableAsync() on a.Id equals d.PatientRegisterId
// join c in await _registerCheckRepository.GetQueryableAsync() on d.RegisterCheckId equals c.Id
// join e in await _registerCheckItemRepository.GetQueryableAsync() on c.Id equals e.RegisterCheckId into ee
// from ae in ee.DefaultIfEmpty()
// join h in await _itemRepository.GetQueryableAsync() on ae.ItemId equals h.Id into hh
// from ah in hh.DefaultIfEmpty()
// join f in await _registerCheckSummaryRepository.GetQueryableAsync() on c.Id equals f.RegisterCheckId into ff
// from af in ff.DefaultIfEmpty()
// join g in await _sexRepository.GetQueryableAsync() on a.SexId equals g.Id into gg
// from ag in gg.DefaultIfEmpty()
// select new { a, ab, c, d, ae, af, ag, ah };
// var sumquery = query;
// if (input.CustomerOrgs.Any())
// {
// var item = input.CustomerOrgs[0];
// if (item.CustomerOrgGroupId.Any())
// {
// sumquery = sumquery.Where(m => m.a.CustomerOrgGroupId != null && item.CustomerOrgGroupId.Contains(m.a.CustomerOrgGroupId.Value));
// }
// if (item.CustomerOrgRegisterId != null && item.CustomerOrgRegisterId != Guid.Empty)
// {
// sumquery = sumquery.Where(m => m.a.CustomerOrgRegisterId == item.CustomerOrgRegisterId);
// }
// if (item.CustomerOrgId != null)
// {
// var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item.CustomerOrgId.Value);
// sumquery = sumquery.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId));
// }
// if (item.DateType != null && !string.IsNullOrEmpty(item.StartDate) && !string.IsNullOrEmpty(item.EndDate))
// {
// if (item.DateType == '1')
// {
// sumquery = sumquery.Where(m => m.a.CreationTime >= Convert.ToDateTime(item.StartDate) &&
// m.a.CreationTime < Convert.ToDateTime(item.EndDate).AddDays(1));
// }
// else if (item.DateType == '2')
// {
// sumquery = sumquery.Where(m => m.a.MedicalStartDate != null && m.a.MedicalStartDate >= Convert.ToDateTime(item.StartDate) &&
// m.a.MedicalStartDate < Convert.ToDateTime(item.EndDate).AddDays(1));
// }
// else if (item.DateType == '3')
// {
// sumquery = sumquery.Where(m => m.a.SummaryDate != null && m.a.SummaryDate >= Convert.ToDateTime(item.StartDate) &&
// m.a.SummaryDate < Convert.ToDateTime(item.EndDate).AddDays(1));
// }
// }
// if (input.CustomerOrgs.Count > 1)
// {
// foreach (var item2 in input.CustomerOrgs)
// {
// if (input.CustomerOrgs.IndexOf(item2) > 0)
// {
// var newquery = query;
// if (item2.CustomerOrgGroupId.Any())
// {
// newquery = newquery.Where(m => m.a.CustomerOrgGroupId != null && item2.CustomerOrgGroupId.Contains(m.a.CustomerOrgGroupId.Value));
// }
// if (item2.CustomerOrgRegisterId != null && item2.CustomerOrgRegisterId != Guid.Empty)
// {
// newquery = newquery.Where(m => m.a.CustomerOrgRegisterId == item2.CustomerOrgRegisterId);
// }
// if (item2.CustomerOrgId != null)
// {
// var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item2.CustomerOrgId.Value);
// newquery = newquery.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId));
// }
// if (item2.DateType != null && !string.IsNullOrEmpty(item2.StartDate) && !string.IsNullOrEmpty(item2.EndDate))
// {
// if (item2.DateType == '1')
// {
// newquery = newquery.Where(m => m.a.CreationTime >= Convert.ToDateTime(item2.StartDate) &&
// m.a.CreationTime < Convert.ToDateTime(item2.EndDate).AddDays(1));
// }
// else if (item2.DateType == '2')
// {
// newquery = newquery.Where(m => m.a.MedicalStartDate != null && m.a.MedicalStartDate >= Convert.ToDateTime(item2.StartDate) &&
// m.a.MedicalStartDate < Convert.ToDateTime(item2.EndDate).AddDays(1));
// }
// else if (item2.DateType == '3')
// {
// newquery = newquery.Where(m => m.a.SummaryDate != null && m.a.SummaryDate >= Convert.ToDateTime(item2.StartDate) &&
// m.a.SummaryDate < Convert.ToDateTime(item2.EndDate).AddDays(1));
// }
// }
// sumquery = sumquery.Union(newquery);
// }
// }
// }
// }
// if (input.AsbitemId.Any())
// {
// sumquery = sumquery.Where(m => input.AsbitemId.Contains(m.d.AsbitemId));
// }
// var sql = sumquery.ToQueryString();
// var entlist = sumquery.GroupBy(g => g.a.Id).Select(s => new GetAsbitemSpecificResultReportDto
// {
// PatientName = s.FirstOrDefault().a.PatientName,
// Age = s.FirstOrDefault().a.Age,
// MedicalTimes = s.FirstOrDefault().a.MedicalTimes,
// RegisterCheckSummarys2 = string.Join(";", s.Where(m => m.af != null).Select(sa => sa.af.Summary)),
// RegisterCheckSummarys = s.Where(m => m.af != null).GroupBy(g => g.af.RegisterCheckId).Select(gb => new GetAsbitemSpecificResultReport_Summary
// {
// CheckRequestNo = gb.FirstOrDefault().c.CheckRequestNo,
// RegisterCheckSummarys = string.Join(";", gb.Select(sa => sa.af.Summary))
// }).ToList(),
// RegisterCheckItems = s.Where(m => m.ae != null).Select(sa => new GetAsbitemSpecificResultReport_Item
// {
// ItemName = sa.ah != null ? sa.ah.DisplayName : "",
// Result = sa.ae.Result
// }).ToList(),
// SexName = s.FirstOrDefault().ag != null ? s.FirstOrDefault().ag.DisplayName : "",
// }).ToList();
// return entlist;
//}
@ -1296,15 +1158,20 @@ namespace Shentun.Peis.CustomerReports
// from ag in gg.DefaultIfEmpty()
// select new { a, ab, c, d, ag, e };
var query = from a in await _patientRegisterRepository.GetQueryableAsync()
join b in await _patientRepository.GetQueryableAsync() on a.PatientId equals b.Id into bb
from ab in bb.DefaultIfEmpty()
join c in await _registerCheckRepository.GetQueryableAsync() on a.Id equals c.PatientRegisterId
join d in await _registerAsbitemRepository.GetQueryableAsync() on c.Id equals d.RegisterCheckId
join e in await _asbitemRepository.GetQueryableAsync() on d.AsbitemId equals e.Id
join g in await _sexRepository.GetQueryableAsync() on a.SexId equals g.Id into gg
from ag in gg.DefaultIfEmpty()
select new { a, ab, c, d, ag, e };
var query = from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id into patientTemp
from patientHaveEmpty in patientTemp.DefaultIfEmpty()
join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId
join registerCheckAsbitem in await _registerAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id
select new
{
patientRegister,
patientHaveEmpty,
registerCheck,
registerCheckAsbitem,
asbitem
};
var sumquery = query;
@ -1316,33 +1183,33 @@ namespace Shentun.Peis.CustomerReports
if (item.CustomerOrgGroupId.Any())
{
sumquery = sumquery.Where(m => m.a.CustomerOrgGroupId != null && item.CustomerOrgGroupId.Contains(m.a.CustomerOrgGroupId.Value));
sumquery = sumquery.Where(m => m.patientRegister.CustomerOrgGroupId != null && item.CustomerOrgGroupId.Contains(m.patientRegister.CustomerOrgGroupId.Value));
}
if (item.CustomerOrgRegisterId != null && item.CustomerOrgRegisterId != Guid.Empty)
{
sumquery = sumquery.Where(m => m.a.CustomerOrgRegisterId == item.CustomerOrgRegisterId);
sumquery = sumquery.Where(m => m.patientRegister.CustomerOrgRegisterId == item.CustomerOrgRegisterId);
}
if (item.CustomerOrgId != null)
{
var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item.CustomerOrgId.Value);
sumquery = sumquery.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId));
sumquery = sumquery.Where(m => CustomerOrgIds.Contains(m.patientRegister.CustomerOrgId));
}
if (!string.IsNullOrEmpty(item.StartDate) && !string.IsNullOrEmpty(item.EndDate))
{
if (item.DateType == '1')
{
sumquery = sumquery.Where(m => m.a.CreationTime >= Convert.ToDateTime(item.StartDate) &&
m.a.CreationTime < Convert.ToDateTime(item.EndDate).AddDays(1));
sumquery = sumquery.Where(m => m.patientRegister.CreationTime >= Convert.ToDateTime(item.StartDate) &&
m.patientRegister.CreationTime < Convert.ToDateTime(item.EndDate).AddDays(1));
}
else if (item.DateType == '2')
{
sumquery = sumquery.Where(m => m.a.MedicalStartDate != null && m.a.MedicalStartDate >= Convert.ToDateTime(item.StartDate) &&
m.a.MedicalStartDate < Convert.ToDateTime(item.EndDate).AddDays(1));
sumquery = sumquery.Where(m => m.patientRegister.MedicalStartDate != null && m.patientRegister.MedicalStartDate >= Convert.ToDateTime(item.StartDate) &&
m.patientRegister.MedicalStartDate < Convert.ToDateTime(item.EndDate).AddDays(1));
}
else if (item.DateType == '3')
{
sumquery = sumquery.Where(m => m.a.SummaryDate != null && m.a.SummaryDate >= Convert.ToDateTime(item.StartDate) &&
m.a.SummaryDate < Convert.ToDateTime(item.EndDate).AddDays(1));
sumquery = sumquery.Where(m => m.patientRegister.SummaryDate != null && m.patientRegister.SummaryDate >= Convert.ToDateTime(item.StartDate) &&
m.patientRegister.SummaryDate < Convert.ToDateTime(item.EndDate).AddDays(1));
}
}
@ -1356,33 +1223,33 @@ namespace Shentun.Peis.CustomerReports
var newquery = query;
if (item2.CustomerOrgGroupId.Any())
{
newquery = newquery.Where(m => m.a.CustomerOrgGroupId != null && item2.CustomerOrgGroupId.Contains(m.a.CustomerOrgGroupId.Value));
newquery = newquery.Where(m => m.patientRegister.CustomerOrgGroupId != null && item2.CustomerOrgGroupId.Contains(m.patientRegister.CustomerOrgGroupId.Value));
}
if (item2.CustomerOrgRegisterId != null && item2.CustomerOrgRegisterId != Guid.Empty)
{
newquery = newquery.Where(m => m.a.CustomerOrgRegisterId == item2.CustomerOrgRegisterId);
newquery = newquery.Where(m => m.patientRegister.CustomerOrgRegisterId == item2.CustomerOrgRegisterId);
}
if (item2.CustomerOrgId != null)
{
var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item2.CustomerOrgId.Value);
newquery = newquery.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId));
newquery = newquery.Where(m => CustomerOrgIds.Contains(m.patientRegister.CustomerOrgId));
}
if (item2.DateType != null && !string.IsNullOrEmpty(item2.StartDate) && !string.IsNullOrEmpty(item2.EndDate))
if (!string.IsNullOrEmpty(item2.StartDate) && !string.IsNullOrEmpty(item2.EndDate))
{
if (item2.DateType == '1')
{
newquery = newquery.Where(m => m.a.CreationTime >= Convert.ToDateTime(item2.StartDate) &&
m.a.CreationTime < Convert.ToDateTime(item2.EndDate).AddDays(1));
newquery = newquery.Where(m => m.patientRegister.CreationTime >= Convert.ToDateTime(item2.StartDate) &&
m.patientRegister.CreationTime < Convert.ToDateTime(item2.EndDate).AddDays(1));
}
else if (item2.DateType == '2')
{
newquery = newquery.Where(m => m.a.MedicalStartDate != null && m.a.MedicalStartDate >= Convert.ToDateTime(item2.StartDate) &&
m.a.MedicalStartDate < Convert.ToDateTime(item2.EndDate).AddDays(1));
newquery = newquery.Where(m => m.patientRegister.MedicalStartDate != null && m.patientRegister.MedicalStartDate >= Convert.ToDateTime(item2.StartDate) &&
m.patientRegister.MedicalStartDate < Convert.ToDateTime(item2.EndDate).AddDays(1));
}
else if (item2.DateType == '3')
{
newquery = newquery.Where(m => m.a.SummaryDate != null && m.a.SummaryDate >= Convert.ToDateTime(item2.StartDate) &&
m.a.SummaryDate < Convert.ToDateTime(item2.EndDate).AddDays(1));
newquery = newquery.Where(m => m.patientRegister.SummaryDate != null && m.patientRegister.SummaryDate >= Convert.ToDateTime(item2.StartDate) &&
m.patientRegister.SummaryDate < Convert.ToDateTime(item2.EndDate).AddDays(1));
}
}
sumquery = sumquery.Union(newquery);
@ -1399,19 +1266,19 @@ namespace Shentun.Peis.CustomerReports
}
sumquery = sumquery.Where(m => input.AsbitemId.Contains(m.d.AsbitemId));
sumquery = sumquery.Where(m => input.AsbitemId.Contains(m.registerCheckAsbitem.AsbitemId));
if (input.CompleteFlag != null)
{
sumquery = sumquery.Where(m => m.c.CompleteFlag == input.CompleteFlag);
sumquery = sumquery.Where(m => m.registerCheck.CompleteFlag == input.CompleteFlag);
}
if (sumquery.Any())
{
var registerCheckSummaryList = await _registerCheckSummaryRepository.GetListAsync(m => sumquery.Select(s => s.c.Id).Contains(m.RegisterCheckId));
var registerCheckSummaryList = await _registerCheckSummaryRepository.GetListAsync(m => sumquery.Select(s => s.registerCheck.Id).Contains(m.RegisterCheckId));
var registerCheckItemList = (from rci in await _registerCheckItemRepository.GetQueryableAsync()
join i in await _itemRepository.GetQueryableAsync() on rci.ItemId equals i.Id
where sumquery.Select(s => s.c.Id).Contains(rci.RegisterCheckId)
where sumquery.Select(s => s.registerCheck.Id).Contains(rci.RegisterCheckId)
select new
{
RegisterCheckId = rci.RegisterCheckId,
@ -1420,16 +1287,23 @@ namespace Shentun.Peis.CustomerReports
}).ToList();
var entlist = sumquery.ToList().GroupBy(g => g.a.Id).Select(s => new GetAsbitemSpecificResultReportDto
{
PatientName = s.FirstOrDefault().a.PatientName,
Age = s.FirstOrDefault().a.Age,
MedicalTimes = s.FirstOrDefault().a.MedicalTimes,
SexName = s.FirstOrDefault().ag != null ? s.FirstOrDefault().ag.DisplayName : "",
RegisterChecks = s.GroupBy(g => g.c.Id).Select(sa => new GetAsbitemSpecificResultReport_Check
var entlist = sumquery.ToList().GroupBy(g => g.patientRegister.Id).Select(s => new GetAsbitemSpecificResultReportDto
{
PatientName = s.FirstOrDefault().patientRegister.PatientName,
Age = s.FirstOrDefault().patientRegister.Age,
MedicalTimes = s.FirstOrDefault().patientRegister.MedicalTimes,
SexName = _cacheService.GetSexNameAsync(s.FirstOrDefault().patientRegister.SexId).GetAwaiter().GetResult(),
CustomerOrgName = _cacheService.GetTopCustomerOrgNameAsync(s.FirstOrDefault().patientRegister.CustomerOrgId).GetAwaiter().GetResult(),
DepartmentName = _cacheService.GetCustomerOrgNameAsync(s.FirstOrDefault().patientRegister.CustomerOrgId).GetAwaiter().GetResult(),
IdNo = s.FirstOrDefault().patientHaveEmpty != null ? s.FirstOrDefault().patientHaveEmpty.IdNo : "",
MedicalStartDate = DataHelper.ConversionDateShortToString(s.FirstOrDefault().patientRegister.MedicalStartDate),
MobileTelephone = s.FirstOrDefault().patientHaveEmpty != null ? s.FirstOrDefault().patientHaveEmpty.MobileTelephone : "",
PatientNo = s.FirstOrDefault().patientHaveEmpty != null ? s.FirstOrDefault().patientHaveEmpty.PatientNo : "",
PatientRegisterNo = s.FirstOrDefault().patientRegister.PatientRegisterNo,
PersonnelTypeName = _cacheService.GetPersonnelTypeNameAsync(s.FirstOrDefault().patientRegister.PersonnelTypeId).GetAwaiter().GetResult(),
RegisterChecks = s.GroupBy(g => g.registerCheck.Id).Select(sa => new GetAsbitemSpecificResultReport_Check
{
CheckName = string.Join("_", sa.Select(sb => sb.e.DisplayName)),
//RegisterCheckId = sa.Key,
CheckName = string.Join("_", sa.Select(sb => sb.asbitem.DisplayName)),
RegisterCheckSummarys = string.Join(";", registerCheckSummaryList.Where(m => m.RegisterCheckId == sa.Key).Select(ss => ss.Summary)),
RegisterCheckItems = registerCheckItemList.Where(m => m.RegisterCheckId == sa.Key).Select(sb => new GetAsbitemSpecificResultReport_Item
{

Loading…
Cancel
Save