diff --git a/src/Shentun.Peis.Application.Contracts/CustomerReports/GetAsbitemSpecificResultReportDto.cs b/src/Shentun.Peis.Application.Contracts/CustomerReports/GetAsbitemSpecificResultReportDto.cs index e22bd82..17ee54f 100644 --- a/src/Shentun.Peis.Application.Contracts/CustomerReports/GetAsbitemSpecificResultReportDto.cs +++ b/src/Shentun.Peis.Application.Contracts/CustomerReports/GetAsbitemSpecificResultReportDto.cs @@ -30,12 +30,53 @@ namespace Shentun.Peis.CustomerReports /// public short? Age { get; set; } + /// + /// 身份证号 + /// + public string IdNo { get; set; } + + /// + /// 单位名称 + /// + public string CustomerOrgName { get; set; } + + /// + /// 部门名称 + /// + public string DepartmentName { get; set; } + + /// + /// 条码号 + /// + public string PatientRegisterNo { get; set; } + + + /// + /// 档案号 + /// + public string PatientNo { get; set; } + + /// + /// 手机号 + /// + public string MobileTelephone { get; set; } + + /// + /// 体检开始日期 + /// + public string MedicalStartDate { get; set; } + + /// + /// 人员类别 + /// + public string PersonnelTypeName { get; set; } + /////// /////// 小结综述内容(多个以 ; 号隔开) RegisterCheckSummary表 Summary字段 /////// //public string RegisterCheckSummarys { get; set; } - + public List RegisterChecks { get; set; } ///// diff --git a/src/Shentun.Peis.Application/CustomerReports/CustomerReportAppService.cs b/src/Shentun.Peis.Application/CustomerReports/CustomerReportAppService.cs index 689f73e..0099f13 100644 --- a/src/Shentun.Peis.Application/CustomerReports/CustomerReportAppService.cs +++ b/src/Shentun.Peis.Application/CustomerReports/CustomerReportAppService.cs @@ -58,7 +58,7 @@ namespace Shentun.Peis.CustomerReports private readonly IRepository _sumSuggestionContentRepository; private readonly CustomerOrgManager _customerOrgManager; private readonly CustomerOrgReportManager _customerOrgReportManager; - + private readonly CacheService _cacheService; public CustomerReportAppService( IRepository patientRepository, @@ -79,7 +79,8 @@ namespace Shentun.Peis.CustomerReports IRepository sumSuggestionHeaderRepository, IRepository 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 } - ///// - ///// 组合项目具体结果统计 组合项目可以多选 但是必选的 - ///// - ///// - ///// - //[HttpPost("api/customerreport/getasbitemspecificresultreport")] - //public async Task> 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 {