From 35d15dc5b25e375007a7e4abcc285075d5db1f0e Mon Sep 17 00:00:00 2001 From: wxd <123@qq.com> Date: Fri, 17 May 2024 16:32:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9D=A1=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...rmationOfMedicalExaminationPersonnelDto.cs | 24 +++ .../PrintReports/PrintReportAppService.cs | 8 +- .../ThirdPartyPublicInterfaceAppService.cs | 156 ++++++++++++++---- 3 files changed, 151 insertions(+), 37 deletions(-) diff --git a/src/Shentun.Peis.Application.Contracts/ThirdPartyPublicInterfaces/BasicInformationOfMedicalExaminationPersonnelDto.cs b/src/Shentun.Peis.Application.Contracts/ThirdPartyPublicInterfaces/BasicInformationOfMedicalExaminationPersonnelDto.cs index fe83ce8..b37828a 100644 --- a/src/Shentun.Peis.Application.Contracts/ThirdPartyPublicInterfaces/BasicInformationOfMedicalExaminationPersonnelDto.cs +++ b/src/Shentun.Peis.Application.Contracts/ThirdPartyPublicInterfaces/BasicInformationOfMedicalExaminationPersonnelDto.cs @@ -76,12 +76,18 @@ namespace Shentun.Peis.ThirdPartyPublicInterfaces /// 体检项目情况 /// public List Items { get; set; } + /// /// 总检综述 /// public List SumSummarys { get; set; } + /// + /// 项目异常结果 + /// + public List AsbitemAbnormals { get; set; } + /// /// 总检建议 /// @@ -116,6 +122,11 @@ namespace Shentun.Peis.ThirdPartyPublicInterfaces /// 参考范围 /// public string ReferenceRangeValue { get; set; } + + /// + /// 结果状态 + /// + public string ResultStatusName { get; set; } } @@ -163,4 +174,17 @@ namespace Shentun.Peis.ThirdPartyPublicInterfaces /// public string SumSuggestionContent { get; set; } } + + public class BasicInformationOfMedicalExaminationPersonnelAsbitemAbnormalDto + { + /// + /// 体检项目名称 + /// + public string AsbitemName { get; set; } + + /// + /// 异常结果 + /// + public string AsbitemAbnormalResult { get; set; } + } } diff --git a/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs b/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs index 99fe8f9..fa1b826 100644 --- a/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs +++ b/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs @@ -466,10 +466,10 @@ namespace Shentun.Peis.PrintReports /// /// 打印Pacs条码数据 /// - /// + /// /// [HttpPost("api/app/PrintReport/getpacsnoreport")] - public async Task> GetPacsNoReportAsync(Guid PatientRegisterId) + public async Task> GetPacsNoReportAsync(PatientRegisterIdInputDto input) { var query = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync() @@ -479,9 +479,9 @@ namespace Shentun.Peis.PrintReports from asbitemHaveEmpty in asbitemTemp.DefaultIfEmpty() join itemType in await _itemTypeRepository.GetQueryableAsync() on asbitemHaveEmpty.ItemTypeId equals itemType.Id into itemTypeTemp from itemTypeHaveEmpty in itemTypeTemp.DefaultIfEmpty() - where (patientRegister.Id == PatientRegisterId + where (patientRegister.Id == input.PatientRegisterId && !string.IsNullOrEmpty(registerCheck.CheckRequestNo) - && asbitemHaveEmpty.BarcodeMode != '2' + && asbitemHaveEmpty.BarcodeMode != BarcodeModeFlag.NoPrint ) select new { diff --git a/src/Shentun.Peis.Application/ThirdPartyPublicInterfaces/ThirdPartyPublicInterfaceAppService.cs b/src/Shentun.Peis.Application/ThirdPartyPublicInterfaces/ThirdPartyPublicInterfaceAppService.cs index 06ea58c..f1581ce 100644 --- a/src/Shentun.Peis.Application/ThirdPartyPublicInterfaces/ThirdPartyPublicInterfaceAppService.cs +++ b/src/Shentun.Peis.Application/ThirdPartyPublicInterfaces/ThirdPartyPublicInterfaceAppService.cs @@ -7,6 +7,7 @@ using Shentun.Peis.Enums; using Shentun.Peis.Models; using Shentun.Peis.PatientRegisters; using Shentun.Peis.Permissions; +using SqlSugar; using System; using System.Collections.Generic; using System.Linq; @@ -35,6 +36,11 @@ namespace Shentun.Peis.ThirdPartyPublicInterfaces private readonly IRepository _sumSuggestionContentRepository; private readonly IRepository _sumSummaryHeaderRepository; private readonly IRepository _sumSummaryContentRepository; + private readonly IRepository _registerCheckSummaryRepository; + private readonly IRepository _resultStatusRepository; + private readonly IRepository _columnReferenceRepository; + private readonly IRepository _columnReferenceCodeRepository; + private readonly IRepository _columnReferenceInterfaceRepository; private readonly CacheService _cacheService; public ThirdPartyPublicInterfaceAppService( IRepository patientRegisterRepository, @@ -49,7 +55,12 @@ namespace Shentun.Peis.ThirdPartyPublicInterfaces IRepository sumSuggestionHeaderRepository, IRepository sumSuggestionContentRepository, IRepository sumSummaryHeaderRepository, - IRepository sumSummaryContentRepository) + IRepository sumSummaryContentRepository, + IRepository registerCheckSummaryRepository, + IRepository resultStatusRepository, + IRepository columnReferenceRepository, + IRepository columnReferenceCodeRepository, + IRepository columnReferenceInterfaceRepository) { _patientRegisterRepository = patientRegisterRepository; _cacheService = cacheService; @@ -64,6 +75,11 @@ namespace Shentun.Peis.ThirdPartyPublicInterfaces _sumSuggestionContentRepository = sumSuggestionContentRepository; _sumSummaryHeaderRepository = sumSummaryHeaderRepository; _sumSummaryContentRepository = sumSummaryContentRepository; + _registerCheckSummaryRepository = registerCheckSummaryRepository; + _resultStatusRepository = resultStatusRepository; + _columnReferenceRepository = columnReferenceRepository; + _columnReferenceCodeRepository = columnReferenceCodeRepository; + _columnReferenceInterfaceRepository = columnReferenceInterfaceRepository; } @@ -110,19 +126,21 @@ namespace Shentun.Peis.ThirdPartyPublicInterfaces MobileTelephone = patientRegisterEnt.Patient.MobileTelephone }; - var registerCheckItemList = from patientRegister in await _patientRegisterRepository.GetQueryableAsync() join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId 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 item.ItemTypeId equals itemType.Id into itemTypeTemp from itemTypeHaveEmpty in itemTypeTemp.DefaultIfEmpty() + join resultStatus in await _resultStatusRepository.GetQueryableAsync() on registerCheckItem.ResultStatusId equals resultStatus.Id into resultStatusTemp + from resultStatusHaveEmpty in resultStatusTemp.DefaultIfEmpty() where patientRegister.Id == patientRegisterEnt.Id select new { registerCheckItem, ItemName = item.DisplayName, - DepartmentName = itemTypeHaveEmpty != null ? itemTypeHaveEmpty.DisplayName : "" + DepartmentName = itemTypeHaveEmpty != null ? itemTypeHaveEmpty.DisplayName : "", + ResultStatusName = resultStatusHaveEmpty != null ? resultStatusHaveEmpty.DisplayName : "正常" }; @@ -134,28 +152,82 @@ namespace Shentun.Peis.ThirdPartyPublicInterfaces ItemName = s.ItemName, ReferenceRangeValue = s.registerCheckItem.ReferenceRangeValue, Result = s.registerCheckItem.Result, - Unit = s.registerCheckItem.Unit + Unit = s.registerCheckItem.Unit, + ResultStatusName = s.ResultStatusName }).ToList(); - //总检综述 - var sumSummaryList = from patientRegister in await _patientRegisterRepository.GetQueryableAsync() - join sumSummaryHeader in await _sumSummaryHeaderRepository.GetQueryableAsync() on patientRegister.Id equals sumSummaryHeader.PatientRegisterId - join sumSummaryContent in await _sumSummaryContentRepository.GetQueryableAsync() on sumSummaryHeader.Id equals sumSummaryContent.SumSummaryHeaderId - where patientRegister.Id == patientRegisterEnt.Id - orderby sumSummaryHeader.DisplayOrder, sumSummaryContent.DisplayOrder - select new - { - SummaryTitle = sumSummaryHeader.SummaryTitle, - SummaryContent = sumSummaryContent.SummaryContent - }; - result.SumSummarys = sumSummaryList.Select(s => new BasicInformationOfMedicalExaminationPersonnelSumSummaryDto + //组合项目情况 + #region 组合项目情况 + var sumSummaryList = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync() + join sumSummaryHeader in await _sumSummaryHeaderRepository.GetQueryableAsync() on patientRegister.Id equals sumSummaryHeader.PatientRegisterId + join sumSummaryContent in await _sumSummaryContentRepository.GetQueryableAsync() on sumSummaryHeader.Id equals sumSummaryContent.SumSummaryHeaderId + where patientRegister.Id == patientRegisterEnt.Id + orderby sumSummaryHeader.DisplayOrder, sumSummaryContent.DisplayOrder + select new + { + sumSummaryHeaderId = sumSummaryHeader.Id, + SummaryTitle = sumSummaryHeader.SummaryTitle, + SummaryContent = sumSummaryContent.SummaryContent + }).ToList(); + + var sumSummaryGroup = sumSummaryList.GroupBy(g => g.sumSummaryHeaderId); + + List sumSummarys = new List(); + + foreach (var item in sumSummaryGroup) { - SumSummaryTitle = s.SummaryTitle, - SumSummaryContent = s.SummaryContent - }).ToList(); + sumSummarys.Add(new BasicInformationOfMedicalExaminationPersonnelSumSummaryDto + { + SumSummaryTitle = item.FirstOrDefault().SummaryTitle, + SumSummaryContent = string.Join(',', item.Select(s => s.SummaryContent.Trim().Replace("\n", "")).ToList()) + }); + } + + result.SumSummarys = sumSummarys; + #endregion + + + + #region 组合项目异常 + var registerCheckSummaryList = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync() + join registerCheck in (await _registerCheckRepository.GetQueryableAsync()) + .Include(x => x.RegisterCheckAsbitems).ThenInclude(x => x.Asbitem).AsQueryable() + on patientRegister.Id equals registerCheck.PatientRegisterId + join registerCheckSummary in await _registerCheckSummaryRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckSummary.RegisterCheckId + where patientRegister.Id == patientRegisterEnt.Id + select new + { + registerCheck, + registerCheckSummary + }).ToList(); + + var registerCheckSummaryGroup = registerCheckSummaryList.GroupBy(g => g.registerCheck.Id); + + List asbitemAbnormals = new List(); + foreach (var item in registerCheckSummaryGroup) + { + //默认结果集合 + var defaultResultList = item.FirstOrDefault().registerCheck.RegisterCheckAsbitems.Select(s => s.Asbitem.DefaultResult.Trim().Replace("\n", "")).ToList(); + + var summaryList = item.Where(m => !defaultResultList.Contains(m.registerCheckSummary.Summary.Trim().Replace("\n", ""))).Select(s => s.registerCheckSummary.Summary).ToList(); + + if (summaryList.Any()) + { + asbitemAbnormals.Add(new BasicInformationOfMedicalExaminationPersonnelAsbitemAbnormalDto + { + AsbitemName = string.Join(',', item.FirstOrDefault().registerCheck.RegisterCheckAsbitems.Select(s => s.Asbitem.DisplayName).ToList()), + AsbitemAbnormalResult = string.Join(',', summaryList), + }); + } + } + + result.AsbitemAbnormals = asbitemAbnormals; + #endregion + + #region 总检建议 //总检建议 var sumSuggestionsList = from patientRegister in await _patientRegisterRepository.GetQueryableAsync() @@ -189,6 +261,7 @@ namespace Shentun.Peis.ThirdPartyPublicInterfaces SumSuggestionContent = ss.SuggestionContent }).ToList() }).ToList(); + #endregion listDto.Add(result); } @@ -290,38 +363,55 @@ namespace Shentun.Peis.ThirdPartyPublicInterfaces asbitem, ItemTypeName = itemTypeHaveEmpty != null ? itemTypeHaveEmpty.DisplayName : "", ItemTypeId = itemTypeHaveEmpty != null ? itemTypeHaveEmpty.Id.ToString() : "" - }).ToList(); + }); + + //var NoSetupDeviceType = query.Where(m => m.asbitem.DeviceTypeId == null || m.asbitem.DeviceTypeId == Guid.Empty).Select(s => s.asbitem.DisplayName).ToList(); + + //if (NoSetupDeviceType.Any()) + // throw new UserFriendlyException($"检查项目{string.Join(',', NoSetupDeviceType)}未设置仪器类别"); if (!string.IsNullOrEmpty(input.xmlx)) { //检查类型检索 + + ////仪器类别ID + //var deviceTypeId = (from columnReference in await _columnReferenceRepository.GetQueryableAsync() + // join columnReferenceCode in await _columnReferenceCodeRepository.GetQueryableAsync() on columnReference.Id equals columnReferenceCode.ColumnReferenceId + // join columnReferenceInterface in await _columnReferenceInterfaceRepository.GetQueryableAsync() on columnReferenceCode.Id equals columnReferenceInterface.ColumnReferenceCodeId + // where columnReference.DisplayName == "仪器类别" && columnReferenceInterface.InterfaceCodeValue == input.xmlx + // select columnReferenceCode.CodeValue).FirstOrDefault(); + + //query = query.Where(m => m.asbitem.DeviceTypeId == Guid.Parse(deviceTypeId)); } - if (query.Count == 0) + var queryList = query.ToList(); + + + if (queryList.Count() == 0) throw new UserFriendlyException($"体检编号不存在"); var patientInfo = new PatientPacsInfo_PatientInfoDto { addr = "", - tjbh = query.FirstOrDefault().CheckRequestNo, - csrq = query.FirstOrDefault().patientRegister.BirthDate != null ? query.FirstOrDefault().patientRegister.BirthDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "", - djr = _cacheService.GetSurnameAsync(query.FirstOrDefault().patientRegister.CreatorId).Result, - djrq = query.FirstOrDefault().patientRegister.CreationTime.ToString("yyyy-MM-dd HH:mm:ss"), - lxdh = query.FirstOrDefault().MobileTelephone, - nl = query.FirstOrDefault().patientRegister.Age.ToString(), - sfzh = query.FirstOrDefault().IdNo, - tjrq = query.FirstOrDefault().patientRegister.MedicalStartDate != null ? query.FirstOrDefault().patientRegister.MedicalStartDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "", - xb = query.FirstOrDefault().patientRegister.SexId == 'M' ? "1" : (query.FirstOrDefault().patientRegister.SexId == 'F' ? "2" : "9"), - xm = query.FirstOrDefault().patientRegister.PatientName + tjbh = queryList.FirstOrDefault().CheckRequestNo, + csrq = queryList.FirstOrDefault().patientRegister.BirthDate != null ? queryList.FirstOrDefault().patientRegister.BirthDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "", + djr = _cacheService.GetSurnameAsync(queryList.FirstOrDefault().patientRegister.CreatorId).Result, + djrq = queryList.FirstOrDefault().patientRegister.CreationTime.ToString("yyyy-MM-dd HH:mm:ss"), + lxdh = queryList.FirstOrDefault().MobileTelephone, + nl = queryList.FirstOrDefault().patientRegister.Age.ToString(), + sfzh = queryList.FirstOrDefault().IdNo, + tjrq = queryList.FirstOrDefault().patientRegister.MedicalStartDate != null ? queryList.FirstOrDefault().patientRegister.MedicalStartDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "", + xb = queryList.FirstOrDefault().patientRegister.SexId == 'M' ? "1" : (queryList.FirstOrDefault().patientRegister.SexId == 'F' ? "2" : "9"), + xm = queryList.FirstOrDefault().patientRegister.PatientName }; - var items = query.Select(s => new PatientPacsInfo_ItemsDto + var items = queryList.Select(s => new PatientPacsInfo_ItemsDto { ksbm = s.ItemTypeId, ksmc = s.ItemTypeName, - sqdh = s.CheckRequestNo + "-" + (query.IndexOf(s) + 1), + sqdh = s.CheckRequestNo + "-" + (queryList.IndexOf(s) + 1), xmbh = s.asbitem.Id.ToString(), xmlx = "1", xmmc = s.asbitem.DisplayName,