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. 30
      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 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<ReferenceRange> _referenceRanges;
private static bool _isRunning = false;
private static readonly object lockObject = new object();
private readonly ColumnReferenceCodeManager _columnReferenceCodeManager;
public ImportLisResultAppService(IRepository<RegisterCheck, Guid> registerCheckRepository,
IRepository<RegisterCheckItem> registerCheckItemRepository,
IRepository<PatientRegister, Guid> patientRegisterRepository,
@ -88,7 +90,8 @@ namespace Shentun.Peis.ImportLisResults
ItemManager itemManager,
UnitManager unitManager,
RegisterCheckAppService registerCheckAppService,
IRepository<ThirdInterface> thirdInterfaceRepository)
IRepository<ThirdInterface> thirdInterfaceRepository,
ColumnReferenceCodeManager columnReferenceCodeManager)
{
_registerCheckRepository = registerCheckRepository;
_userRepository = userRepository;
@ -116,6 +119,7 @@ namespace Shentun.Peis.ImportLisResults
_unitManager = unitManager;
_registerCheckAppService = registerCheckAppService;
_thirdInterfaceRepository = thirdInterfaceRepository;
_columnReferenceCodeManager = columnReferenceCodeManager;
}
/// <summary>
/// 从第三方接口导入结果
@ -420,29 +424,51 @@ namespace Shentun.Peis.ImportLisResults
/// </summary>
/// <returns></returns>
[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<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);
}
}
}

30
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);
}
/// <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