Browse Source

lis结果导入被动接口

master
wxd 2 years ago
parent
commit
b5f5e2f7e5
  1. 58
      src/Shentun.Peis.Application.Contracts/ImportLisResults/ImportResultByLisRequestNoInputDto.cs
  2. 56
      src/Shentun.Peis.Application/ImportLisResults/ImportLisResultAppService.cs
  3. 26
      src/Shentun.Peis.Domain/ColumnReferenceCodes/ColumnReferenceCodeManager.cs

58
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; }
/// <summary>
/// 项目编号
/// </summary>
public string ItemId { get; set; }
/// <summary>
/// 项目名称
/// </summary>
public string ItemName { get; set; }
/// <summary>
/// 结果
/// </summary>
public string? Result { get; set; }
/// <summary>
/// 单位
/// </summary>
public string? Unit { get; set; }
/// <summary>
/// 参考范围
/// </summary>
public string? ReferenceRangeValue { get; set; }
/// <summary>
/// 危急值范围
/// </summary>
public string? CriticalRangeValue { get; set; }
/// <summary>
/// 危急值
/// </summary>
public string? CriticalValue { get; set; }
/// <summary>
/// 检查医生
/// </summary>
public string? CheckDoctorName { get; set; }
/// <summary>
/// 检查日期
/// </summary>
public DateTime? CheckDate { get; set; }
}
}

56
src/Shentun.Peis.Application/ImportLisResults/ImportLisResultAppService.cs

@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using NPOI.SS.Formula.Functions; using NPOI.SS.Formula.Functions;
using NPOI.Util; using NPOI.Util;
using Shentun.Peis.ColumnReferenceCodes;
using Shentun.Peis.DiagnosisFunctions; using Shentun.Peis.DiagnosisFunctions;
using Shentun.Peis.Enums; using Shentun.Peis.Enums;
using Shentun.Peis.Items; using Shentun.Peis.Items;
@ -64,6 +65,7 @@ namespace Shentun.Peis.ImportLisResults
private List<ReferenceRange> _referenceRanges; private List<ReferenceRange> _referenceRanges;
private static bool _isRunning = false; private static bool _isRunning = false;
private static readonly object lockObject = new object(); private static readonly object lockObject = new object();
private readonly ColumnReferenceCodeManager _columnReferenceCodeManager;
public ImportLisResultAppService(IRepository<RegisterCheck, Guid> registerCheckRepository, public ImportLisResultAppService(IRepository<RegisterCheck, Guid> registerCheckRepository,
IRepository<RegisterCheckItem> registerCheckItemRepository, IRepository<RegisterCheckItem> registerCheckItemRepository,
IRepository<PatientRegister, Guid> patientRegisterRepository, IRepository<PatientRegister, Guid> patientRegisterRepository,
@ -88,7 +90,8 @@ namespace Shentun.Peis.ImportLisResults
ItemManager itemManager, ItemManager itemManager,
UnitManager unitManager, UnitManager unitManager,
RegisterCheckAppService registerCheckAppService, RegisterCheckAppService registerCheckAppService,
IRepository<ThirdInterface> thirdInterfaceRepository)
IRepository<ThirdInterface> thirdInterfaceRepository,
ColumnReferenceCodeManager columnReferenceCodeManager)
{ {
_registerCheckRepository = registerCheckRepository; _registerCheckRepository = registerCheckRepository;
_userRepository = userRepository; _userRepository = userRepository;
@ -116,6 +119,7 @@ namespace Shentun.Peis.ImportLisResults
_unitManager = unitManager; _unitManager = unitManager;
_registerCheckAppService = registerCheckAppService; _registerCheckAppService = registerCheckAppService;
_thirdInterfaceRepository = thirdInterfaceRepository; _thirdInterfaceRepository = thirdInterfaceRepository;
_columnReferenceCodeManager = columnReferenceCodeManager;
} }
/// <summary> /// <summary>
/// 从第三方接口导入结果 /// 从第三方接口导入结果
@ -420,29 +424,51 @@ namespace Shentun.Peis.ImportLisResults
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[HttpPost("api/app/ImportLisResult/ImportResultByLisRequestNo")] [HttpPost("api/app/ImportLisResult/ImportResultByLisRequestNo")]
public async Task ImportResultByLisRequestNoAsync(LisRequestNoInputDto input)
public async Task ImportResultByLisRequestNoAsync(ImportResultByLisRequestNoInputDto input)
{ {
if (input == null) if (input == null)
throw new UserFriendlyException("请求参数无效"); 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();
if (query == null)
var thirdInterface = await _thirdInterfaceRepository.FirstOrDefaultAsync(o => o.ThirdInterfaceType == ThirdInterfaceTypeFlag.ImportLisResult);
if(thirdInterface==null)
throw new UserFriendlyException($"未配置检验导入的参数");
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<CreateImportLisResultDto> inputDtoList = new List<CreateImportLisResultDto>();
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);
} }
} }
} }

26
src/Shentun.Peis.Domain/ColumnReferenceCodes/ColumnReferenceCodeManager.cs

@ -37,9 +37,9 @@ namespace Shentun.Peis.ColumnReferenceCodes
GuidGenerator.Create() GuidGenerator.Create()
) )
{ {
ColumnReferenceId = entity.ColumnReferenceId,
CodeValue = entity.CodeValue,
FilterCodeValue = entity.FilterCodeValue,
ColumnReferenceId = entity.ColumnReferenceId,
CodeValue = entity.CodeValue,
FilterCodeValue = entity.FilterCodeValue,
}; };
} }
@ -63,5 +63,25 @@ namespace Shentun.Peis.ColumnReferenceCodes
await _repository.DeleteAsync(entity); await _repository.DeleteAsync(entity);
} }
/// <summary>
/// 获取字段对照的本系统相应的值
/// </summary>
/// <param name="columnReferenceId"></param>
/// <param name="interfaceCodeValue"></param>
/// <returns></returns>
public async Task<string> 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 "";
}
} }
} }
Loading…
Cancel
Save