You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
141 lines
7.1 KiB
141 lines
7.1 KiB
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Shentun.Peis.DiagnosisFunctions;
|
|
using Shentun.Peis.Models;
|
|
using Shentun.Peis.PlugIns;
|
|
using Shentun.Peis.RegisterCheckItems;
|
|
using Shentun.Peis.RegisterChecks;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Volo.Abp.Application.Services;
|
|
using Volo.Abp.Domain.Repositories;
|
|
using Volo.Abp.Guids;
|
|
using Volo.Abp.Identity;
|
|
using Volo.Abp.Users;
|
|
|
|
namespace Shentun.Peis.ImportLisResults
|
|
{
|
|
public class ImportLisResultAppService : ApplicationService
|
|
{
|
|
private readonly IRepository<RegisterCheckItem> _registerCheckItemRepository;
|
|
private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository;
|
|
private readonly IRepository<ReferenceRange, Guid> _referenceRangeRepository;
|
|
private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
|
|
private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository;
|
|
private readonly IRepository<LisRequest, Guid> _lisRequestRepository;
|
|
private readonly IRepository<RegisterCheckSummary, Guid> _registerCheckSummaryRepository;
|
|
private readonly IRepository<RegisterCheckSuggestion, Guid> _registerCheckSuggestionRepository;
|
|
private readonly IRepository<IdentityUser, Guid> _userRepository;
|
|
private readonly RegisterCheckManager _registerCheckManager;
|
|
private readonly RegisterCheckItemManager _registerCheckItemManager;
|
|
private readonly CacheService _cacheService;
|
|
private readonly IGuidGenerator _guidGenerator;
|
|
private readonly IConfiguration _configuration;
|
|
private readonly ICurrentUser _currentUser;
|
|
private readonly IRepository<UserItemType> _userItemTypeRepository;
|
|
private readonly IRepository<Asbitem, Guid> _asbitemRepository;
|
|
private readonly DiagnosisFunctionAppService _diagnosisFunctionAppService;
|
|
public ImportLisResultAppService(IRepository<RegisterCheck, Guid> registerCheckRepository,
|
|
IRepository<RegisterCheckItem> registerCheckItemRepository,
|
|
IRepository<PatientRegister, Guid> patientRegisterRepository,
|
|
IRepository<ReferenceRange, Guid> referenceRangeRepository,
|
|
IRepository<RegisterCheckSummary, Guid> registerCheckSummaryRepository,
|
|
IRepository<RegisterCheckSuggestion, Guid> registerCheckSuggestionRepository,
|
|
IRepository<IdentityUser, Guid> userRepository,
|
|
RegisterCheckManager registerCheckManager,
|
|
RegisterCheckItemManager registerCheckItemManager,
|
|
CacheService cacheService,
|
|
IGuidGenerator guidGenerator,
|
|
IConfiguration configuration,
|
|
ICurrentUser currentUser,
|
|
IRepository<UserItemType> userItemTypeRepository,
|
|
IRepository<Asbitem, Guid> asbitemRepository,
|
|
IRepository<RegisterCheckAsbitem, Guid> registerCheckAsbitemRepository,
|
|
IRepository<LisRequest, Guid> lisRequestRepository,
|
|
DiagnosisFunctionAppService diagnosisFunctionAppService)
|
|
{
|
|
_registerCheckRepository = registerCheckRepository;
|
|
_userRepository = userRepository;
|
|
_registerCheckManager = registerCheckManager;
|
|
_patientRegisterRepository = patientRegisterRepository;
|
|
_referenceRangeRepository = referenceRangeRepository;
|
|
_registerCheckItemRepository = registerCheckItemRepository;
|
|
_registerCheckSummaryRepository = registerCheckSummaryRepository;
|
|
_registerCheckSuggestionRepository = registerCheckSuggestionRepository;
|
|
_registerCheckItemManager = registerCheckItemManager;
|
|
_cacheService = cacheService;
|
|
_guidGenerator = guidGenerator;
|
|
_configuration = configuration;
|
|
_currentUser = currentUser;
|
|
_userItemTypeRepository = userItemTypeRepository;
|
|
_asbitemRepository = asbitemRepository;
|
|
_registerCheckAsbitemRepository = registerCheckAsbitemRepository;
|
|
_lisRequestRepository = lisRequestRepository;
|
|
_diagnosisFunctionAppService = diagnosisFunctionAppService;
|
|
}
|
|
[HttpGet("api/app/ImportLisResult/ImportResult")]
|
|
public async Task ImportResultAsync(List<LisResult> input)
|
|
{
|
|
//设置结果
|
|
|
|
var list = (from registerCheck in await _registerCheckRepository.GetQueryableAsync()
|
|
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync()
|
|
on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
|
|
join registerCheckItem in await _registerCheckItemRepository.GetQueryableAsync()
|
|
on registerCheck.Id equals registerCheckItem.RegisterCheckId
|
|
join lisRequest in await _lisRequestRepository.GetQueryableAsync()
|
|
on registerCheckAsbitem.LisRequestId equals lisRequest.Id
|
|
where input.Select(o => o.LisRequestNo).ToList().Contains(lisRequest.LisRequestNo)
|
|
select new
|
|
{
|
|
registerCheck,
|
|
registerCheckAsbitem,
|
|
registerCheckItem,
|
|
lisRequest,
|
|
}).ToList();
|
|
|
|
var lisRequestNos = input.Select(o => o.LisRequestNo).Distinct().ToList();
|
|
foreach(var inputItem in input)
|
|
{
|
|
var lisRequestItem = list.Where(o=>o.lisRequest.LisRequestNo == inputItem.LisRequestNo
|
|
&& o.registerCheckItem.ItemId == new Guid(inputItem.ItemId)).FirstOrDefault();
|
|
if(lisRequestItem == null)
|
|
{
|
|
continue;
|
|
}
|
|
var itemSource = new RegisterCheckItem()
|
|
{
|
|
Result = inputItem.Result,
|
|
ReferenceRangeValue = inputItem.ReferenceRangeValue,
|
|
Unit = inputItem.Unit,
|
|
CriticalRangeValue = inputItem.CriticalRangeValue
|
|
};
|
|
|
|
await _registerCheckItemManager.UpdateRegisterCheckItemAsync(itemSource, lisRequestItem.registerCheckItem);
|
|
await _registerCheckItemRepository.UpdateAsync(lisRequestItem.registerCheckItem);
|
|
|
|
}
|
|
//生成小结
|
|
var registerChecks = list.Select(o=>o.registerCheck).Distinct().ToList();
|
|
foreach(var registerCheck in registerChecks)
|
|
{
|
|
var getDiagnosisResultRequestDto = new GetDiagnosisResultRequestDto()
|
|
{
|
|
RegisterCheckId = registerCheck.Id,
|
|
Items = list.Where(o=>o.registerCheck.Id == registerCheck.Id)
|
|
.Select(o=>new GetDiagnosisResultRequest_Item()
|
|
{
|
|
ItemId = o.registerCheckItem.ItemId,
|
|
Result = o.registerCheckItem.Result,
|
|
}).ToList()
|
|
};
|
|
}
|
|
|
|
//保存小结
|
|
|
|
}
|
|
}
|
|
}
|