From 0902a1db53e5222e62e34008db48f4d0fe470586 Mon Sep 17 00:00:00 2001 From: wxd <123@qq.com> Date: Wed, 22 May 2024 11:47:43 +0800 Subject: [PATCH] =?UTF-8?q?=E8=81=8C=E4=B8=9A=E7=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OccupationalDiseaseAppService.cs | 187 +++++++++++++++++- 1 file changed, 186 insertions(+), 1 deletion(-) diff --git a/src/Shentun.Peis.Application/OccupationalDiseases/OccupationalDiseaseAppService.cs b/src/Shentun.Peis.Application/OccupationalDiseases/OccupationalDiseaseAppService.cs index 3549f43..cc50769 100644 --- a/src/Shentun.Peis.Application/OccupationalDiseases/OccupationalDiseaseAppService.cs +++ b/src/Shentun.Peis.Application/OccupationalDiseases/OccupationalDiseaseAppService.cs @@ -1,9 +1,12 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using Shentun.Peis.Enums; using Shentun.Peis.Models; using Shentun.Peis.OcCheckTypes; using Shentun.Peis.PatientOccupationalDiseases; using Shentun.Peis.PatientRegisters; +using Shentun.Peis.SumSummaryReports; using System; using System.Collections.Generic; using System.Linq; @@ -12,6 +15,7 @@ using System.Threading.Tasks; using Volo.Abp; using Volo.Abp.Application.Services; using Volo.Abp.Domain.Repositories; +using Volo.Abp.Identity; using Volo.Abp.ObjectMapping; namespace Shentun.Peis.OccupationalDiseases @@ -29,13 +33,44 @@ namespace Shentun.Peis.OccupationalDiseases private readonly IRepository _patientSymptomRepository; private readonly PatientOccupationalDiseaseManager _patientOccupationalDiseaseManager; private readonly CacheService _cacheService; + + + + + private readonly IRepository _patientRepository; + private readonly IRepository _registerCheckRepository; + private readonly IRepository _identityUserRepository; + private readonly IRepository _itemTypeRepository; + private readonly IRepository _registerCheckItemRepository; + private readonly IRepository _itemRepository; + private readonly IRepository _patientRegisterRepository; + private readonly IRepository _registerCheckAsbitemRepository; + private readonly IRepository _resultStatusRepository; + private readonly IRepository _registerCheckSummaryRepository; + private readonly IRepository _asbitemRepository; + + + + + public OccupationalDiseaseAppService( IRepository patientOccupationalDiseaseRepository, IRepository patientOccupationalHistoryRepository, IRepository patientPoisonRepository, IRepository patientSymptomRepository, PatientOccupationalDiseaseManager patientOccupationalDiseaseManager, - CacheService cacheService) + CacheService cacheService, + IRepository patientRepository, + IRepository registerCheckRepository, + IRepository identityUserRepository, + IRepository itemTypeRepository, + IRepository registerCheckItemRepository, + IRepository itemRepository, + IRepository patientRegisterRepository, + IRepository registerCheckAsbitemRepository, + IRepository resultStatusRepository, + IRepository registerCheckSummaryRepository, + IRepository asbitemRepository) { _patientOccupationalDiseaseRepository = patientOccupationalDiseaseRepository; _patientOccupationalHistoryRepository = patientOccupationalHistoryRepository; @@ -43,6 +78,17 @@ namespace Shentun.Peis.OccupationalDiseases _patientSymptomRepository = patientSymptomRepository; _patientOccupationalDiseaseManager = patientOccupationalDiseaseManager; _cacheService = cacheService; + _patientRepository = patientRepository; + _registerCheckRepository = registerCheckRepository; + _identityUserRepository = identityUserRepository; + _itemTypeRepository = itemTypeRepository; + _registerCheckItemRepository = registerCheckItemRepository; + _itemRepository = itemRepository; + _patientRegisterRepository = patientRegisterRepository; + _registerCheckAsbitemRepository = registerCheckAsbitemRepository; + _resultStatusRepository = resultStatusRepository; + _registerCheckSummaryRepository = registerCheckSummaryRepository; + _asbitemRepository = asbitemRepository; } /// @@ -310,5 +356,144 @@ namespace Shentun.Peis.OccupationalDiseases await _patientOccupationalDiseaseRepository.UpdateAsync(patientOccupationalDiseaseEnt); } + + /// + /// 获取体征结果 + /// + /// 人员登记ID + /// + [HttpPost("api/app/OccupationalDisease/GetDetailResults")] + public async Task> GetDetailResultsAsync(PatientRegisterIdInputDto input) + { + List msg = new List(); + + var userlist = await _identityUserRepository.GetListAsync(); + var resultStatus = await _resultStatusRepository.GetListAsync(); + var list = (from patient in await _patientRepository.GetQueryableAsync() + join patientRegister in await _patientRegisterRepository.GetQueryableAsync() + on patient.Id equals patientRegister.PatientId + join registerCheck in await _registerCheckRepository.GetQueryableAsync() + on patientRegister.Id equals registerCheck.PatientRegisterId + join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() + on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId + join registerCheckSummary in await _registerCheckSummaryRepository.GetQueryableAsync() + on registerCheck.Id equals registerCheckSummary.RegisterCheckId + join asbitem in await _asbitemRepository.GetQueryableAsync() + on registerCheckAsbitem.AsbitemId equals asbitem.Id + join registerCheckItem in await _registerCheckItemRepository.GetQueryableAsync() + on registerCheck.Id equals registerCheckItem.RegisterCheckId + join item in await _itemRepository.GetQueryableAsync() + on registerCheckItem.ItemId equals item.Id + join itemType in await _itemTypeRepository.GetQueryableAsync() + on asbitem.ItemTypeId equals itemType.Id + where patientRegister.Id == input.PatientRegisterId + && registerCheck.CompleteFlag == RegisterCheckCompleteFlag.Checked + && asbitem.IsCheck == 'Y' + select new + { + patient, + patientRegister, + registerCheck, + registerCheckSummary, + registerCheckAsbitem, + asbitem, + registerCheckItem, + item, + itemType + + }).AsNoTracking().ToList(); + + if (!list.Any()) + { + return null; + } + + //将子项目类别设置为父项目类别 + var itemTypes = await _itemTypeRepository.GetListAsync(); + foreach (var listItem in list) + { + var parentItemType = itemTypes.Where(o => o.Id == listItem.itemType.ParentId).FirstOrDefault(); + if (parentItemType != null) + { + listItem.asbitem.DisplayOrder = listItem.itemType.DisplayOrder * 1000 + listItem.asbitem.DisplayOrder; + listItem.itemType.DisplayName = parentItemType.DisplayName; + listItem.itemType.DisplayOrder = parentItemType.DisplayOrder; + + } + } + var detailedResultsList_Asbitems = new List(); + var registerCheckIds = list.OrderBy(o => o.itemType.DisplayOrder) + .OrderBy(o => o.asbitem.DisplayOrder) + .Select(o => o.registerCheck.Id).Distinct().ToList(); + foreach (var registerCheckId in registerCheckIds) + { + var listItem = list.Where(o => o.registerCheck.Id == registerCheckId).First(); + var detailedResultsList_Asbitem = new SumSummaryReportDetailResultWithAsbitem() + { + + ItemTypeName = listItem.itemType.DisplayName, + AsbitemNames = string.Join(",", list.Where(o => o.registerCheck.Id == registerCheckId) + .OrderBy(o => o.itemType.DisplayOrder).OrderBy(o => o.asbitem.DisplayOrder) + .Select(o => o.asbitem.DisplayName).Distinct().ToList()), + ItemTypeDisplayOrder = listItem.itemType.DisplayOrder, + AsbitemDisplayOrder = listItem.asbitem.DisplayOrder, + CheckDate = ((DateTime)listItem.registerCheck.CheckDate).Date, + CheckDoctorName = EntityHelper.GetCheckDoctorName(listItem.registerCheck.CheckDoctorId, userlist), + Items = list.Where(o => o.registerCheck.Id == registerCheckId) + .OrderBy(o => o.itemType.DisplayOrder) + .OrderBy(o => o.asbitem.DisplayOrder) + .OrderBy(o => o.item.DisplayOrder) + .GroupBy(o => o.registerCheckItem.ItemId) + .Select(o => new SumSummaryReportDetailResultWithItem() + { + ItemId = o.FirstOrDefault().registerCheckItem.ItemId, + ItemName = o.FirstOrDefault().item.DisplayName, + ItemResult = o.FirstOrDefault().registerCheckItem.Result, + ReferenceRangeValue = o.FirstOrDefault().registerCheckItem.ReferenceRangeValue, + CriticalRangeValue = o.FirstOrDefault().registerCheckItem.CriticalRangeValue, + Unit = o.FirstOrDefault().registerCheckItem.Unit, + ResultStatusId = o.FirstOrDefault().registerCheckItem.ResultStatusId, + ResultStatusName = (resultStatus.Where(x => x.Id == o.FirstOrDefault().registerCheckItem.ResultStatusId).FirstOrDefault() == null) ? "" : resultStatus.Where(x => x.Id == o.FirstOrDefault().registerCheckItem.ResultStatusId).FirstOrDefault().ReportPrompt, + ReportFontColor = (resultStatus.Where(x => x.Id == o.FirstOrDefault().registerCheckItem.ResultStatusId).FirstOrDefault() == null) ? 0 : resultStatus.Where(x => x.Id == o.FirstOrDefault().registerCheckItem.ResultStatusId).FirstOrDefault().ReportFontColor, + ReportBackgroundColor = (resultStatus.Where(x => x.Id == o.FirstOrDefault().registerCheckItem.ResultStatusId).FirstOrDefault() == null) ? 16777215 : resultStatus.Where(x => x.Id == o.FirstOrDefault().registerCheckItem.ResultStatusId).FirstOrDefault().ReportBackgroundColor, + }).ToList(), + Summarys = list.Where(o => o.registerCheck.Id == registerCheckId) + .OrderBy(o => o.registerCheckSummary.DisplayOrder) + .GroupBy(o => o.registerCheckSummary.Summary) + .Select(o => new SumSummaryReportDetailResultWithSummary() + { + Summary = o.FirstOrDefault().registerCheckSummary.Summary + }) + .ToList(), + + }; + detailedResultsList_Asbitem.Summarys = detailedResultsList_Asbitem.Summarys.Distinct().ToList(); + + + + detailedResultsList_Asbitems.Add(detailedResultsList_Asbitem); + + } + + var grouplist = detailedResultsList_Asbitems.OrderBy(o => o.ItemTypeDisplayOrder) + .OrderBy(o => o.AsbitemDisplayOrder) + .GroupBy(g => g.ItemTypeName); + + foreach (var g in grouplist) + { + var glist = g.OrderBy(o => o.ItemTypeDisplayOrder).OrderBy(o => o.AsbitemDisplayOrder).ToList(); + var resultlist = new SumSummaryReportDetailResultDto + { + ItemTypeDisplayOrder = glist.FirstOrDefault().ItemTypeDisplayOrder, + ItemTypeName = glist.FirstOrDefault().ItemTypeName, + Asbitems = glist + }; + + msg.Add(resultlist); + } + msg = msg.OrderBy(o => o.ItemTypeDisplayOrder).ToList(); + return msg; + } + } }