From b5f5e2f7e5aece6c2d2a7c45683eb8cd7b4cbf6f Mon Sep 17 00:00:00 2001 From: wxd <123@qq.com> Date: Sun, 23 Jun 2024 23:16:01 +0800 Subject: [PATCH] =?UTF-8?q?lis=E7=BB=93=E6=9E=9C=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E8=A2=AB=E5=8A=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ImportResultByLisRequestNoInputDto.cs | 58 +++++++++++++++++++ .../ImportLisResultAppService.cs | 56 +++++++++++++----- .../ColumnReferenceCodeManager.cs | 30 ++++++++-- 3 files changed, 124 insertions(+), 20 deletions(-) create mode 100644 src/Shentun.Peis.Application.Contracts/ImportLisResults/ImportResultByLisRequestNoInputDto.cs diff --git a/src/Shentun.Peis.Application.Contracts/ImportLisResults/ImportResultByLisRequestNoInputDto.cs b/src/Shentun.Peis.Application.Contracts/ImportLisResults/ImportResultByLisRequestNoInputDto.cs new file mode 100644 index 0000000..edc0bc6 --- /dev/null +++ b/src/Shentun.Peis.Application.Contracts/ImportLisResults/ImportResultByLisRequestNoInputDto.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Shentun.Peis.ImportLisResults +{ + public class ImportResultByLisRequestNoInputDto + { + public string LisRequestNo { get; set; } + + /// + /// 项目编号 + /// + public string ItemId { get; set; } + /// + /// 项目名称 + /// + public string ItemName { get; set; } + + /// + /// 结果 + /// + public string? Result { get; set; } + /// + /// 单位 + /// + + public string? Unit { get; set; } + /// + /// 参考范围 + /// + + public string? ReferenceRangeValue { get; set; } + /// + /// 危急值范围 + /// + + public string? CriticalRangeValue { get; set; } + /// + /// 危急值 + /// + + public string? CriticalValue { get; set; } + + /// + /// 检查医生 + /// + + public string? CheckDoctorName { get; set; } + /// + /// 检查日期 + /// + + public DateTime? CheckDate { get; set; } + + + } +} diff --git a/src/Shentun.Peis.Application/ImportLisResults/ImportLisResultAppService.cs b/src/Shentun.Peis.Application/ImportLisResults/ImportLisResultAppService.cs index 2e245e7..651a778 100644 --- a/src/Shentun.Peis.Application/ImportLisResults/ImportLisResultAppService.cs +++ b/src/Shentun.Peis.Application/ImportLisResults/ImportLisResultAppService.cs @@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; using NPOI.SS.Formula.Functions; using NPOI.Util; +using Shentun.Peis.ColumnReferenceCodes; using Shentun.Peis.DiagnosisFunctions; using Shentun.Peis.Enums; using Shentun.Peis.Items; @@ -64,6 +65,7 @@ namespace Shentun.Peis.ImportLisResults private List _referenceRanges; private static bool _isRunning = false; private static readonly object lockObject = new object(); + private readonly ColumnReferenceCodeManager _columnReferenceCodeManager; public ImportLisResultAppService(IRepository registerCheckRepository, IRepository registerCheckItemRepository, IRepository patientRegisterRepository, @@ -88,7 +90,8 @@ namespace Shentun.Peis.ImportLisResults ItemManager itemManager, UnitManager unitManager, RegisterCheckAppService registerCheckAppService, - IRepository thirdInterfaceRepository) + IRepository thirdInterfaceRepository, + ColumnReferenceCodeManager columnReferenceCodeManager) { _registerCheckRepository = registerCheckRepository; _userRepository = userRepository; @@ -116,6 +119,7 @@ namespace Shentun.Peis.ImportLisResults _unitManager = unitManager; _registerCheckAppService = registerCheckAppService; _thirdInterfaceRepository = thirdInterfaceRepository; + _columnReferenceCodeManager = columnReferenceCodeManager; } /// /// 从第三方接口导入结果 @@ -420,29 +424,51 @@ namespace Shentun.Peis.ImportLisResults /// /// [HttpPost("api/app/ImportLisResult/ImportResultByLisRequestNo")] - public async Task ImportResultByLisRequestNoAsync(LisRequestNoInputDto input) + public async Task ImportResultByLisRequestNoAsync(ImportResultByLisRequestNoInputDto input) { if (input == null) throw new UserFriendlyException("请求参数无效"); - var query = (from lisRequest in await _lisRequestRepository.GetQueryableAsync() - join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on lisRequest.Id equals registerCheckAsbitem.LisRequestId - join registerCheck in await _registerCheckRepository.GetQueryableAsync() on registerCheckAsbitem.RegisterCheckId equals registerCheck.Id - where lisRequest.LisRequestNo == input.LisRequestNo - select new - { - registerCheck.PatientRegisterId - }).FirstOrDefault(); + + var thirdInterface = await _thirdInterfaceRepository.FirstOrDefaultAsync(o => o.ThirdInterfaceType == ThirdInterfaceTypeFlag.ImportLisResult); + if(thirdInterface==null) + throw new UserFriendlyException($"未配置检验导入的参数"); - if (query == null) + var parmValue = thirdInterface.ParmValue; + var configurationBuilder = new ConfigurationBuilder() + .AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue))); + var config = configurationBuilder.Build(); + Guid execOrganizationUnitId =Guid.Parse(config.GetSection("Interface").GetSection("ExecOrganizationUnitId").Value); + Guid columnReferenId = Guid.Parse(config.GetSection("Interface").GetSection("ColumnReferenId").Value); + + string codeValue = await _columnReferenceCodeManager.GetColumnReferenCodeValueAsync(columnReferenId, input.ItemId); + if (string.IsNullOrWhiteSpace(codeValue)) { - throw new UserFriendlyException("检验单号不存在"); + throw new UserFriendlyException($"项目编号:{input.ItemId}没有对照"); } + Guid itemId = Guid.Parse(codeValue); - await ImportResultByPatientRegisterIdAsync(new PatientRegisterIdInputDto + List inputDtoList = new List(); + var inputDto = new CreateImportLisResultDto { - PatientRegisterId = query.PatientRegisterId - }); + CheckDate = input.CheckDate, + CheckDoctorName = input.CheckDoctorName, + CriticalRangeValue = input.CriticalRangeValue, + CriticalValue = input.CriticalValue, + ExecOrganizationUnitId = execOrganizationUnitId, + ItemId = itemId, + ItemName = input.ItemName, + LisRequestNo = input.LisRequestNo, + ReferenceRangeValue = input.ReferenceRangeValue, + ReportPrompt = "", + ResultStatusId = null, + Result = input.Result, + Unit = input.Unit + }; + + inputDtoList.Add(inputDto); + + await ImportResultAsync(inputDtoList); } } } diff --git a/src/Shentun.Peis.Domain/ColumnReferenceCodes/ColumnReferenceCodeManager.cs b/src/Shentun.Peis.Domain/ColumnReferenceCodes/ColumnReferenceCodeManager.cs index c03f10a..5162bde 100644 --- a/src/Shentun.Peis.Domain/ColumnReferenceCodes/ColumnReferenceCodeManager.cs +++ b/src/Shentun.Peis.Domain/ColumnReferenceCodes/ColumnReferenceCodeManager.cs @@ -32,14 +32,14 @@ namespace Shentun.Peis.ColumnReferenceCodes ) { DataHelper.CheckEntityIsNull(entity); - + return new ColumnReferenceCode( GuidGenerator.Create() ) { - ColumnReferenceId = entity.ColumnReferenceId, - CodeValue = entity.CodeValue, - FilterCodeValue = entity.FilterCodeValue, + ColumnReferenceId = entity.ColumnReferenceId, + CodeValue = entity.CodeValue, + FilterCodeValue = entity.FilterCodeValue, }; } @@ -51,7 +51,7 @@ namespace Shentun.Peis.ColumnReferenceCodes { DataHelper.CheckEntityIsNull(sourceEntity); DataHelper.CheckEntityIsNull(targetEntity); - + targetEntity.CodeValue = sourceEntity.CodeValue; targetEntity.FilterCodeValue = sourceEntity.FilterCodeValue; } @@ -63,5 +63,25 @@ namespace Shentun.Peis.ColumnReferenceCodes await _repository.DeleteAsync(entity); } + + /// + /// 获取字段对照的本系统相应的值 + /// + /// + /// + /// + public async Task GetColumnReferenCodeValueAsync(Guid columnReferenceId, string interfaceCodeValue) + { + var codeValue = (from columnReferenceCode in await _repository.GetQueryableAsync() + join columnReferenceInterface in await _columnReferenceInterfaceRepository.GetQueryableAsync() + on columnReferenceCode.Id equals columnReferenceInterface.ColumnReferenceCodeId + where columnReferenceCode.ColumnReferenceId == columnReferenceId && columnReferenceInterface.InterfaceCodeValue == interfaceCodeValue + select columnReferenceCode.CodeValue).FirstOrDefault(); + if (!string.IsNullOrWhiteSpace(codeValue)) + return codeValue; + else + return ""; + + } } }