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 "";
+
+ }
}
}