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 _registerCheckItemRepository; private readonly IRepository _patientRegisterRepository; private readonly IRepository _referenceRangeRepository; private readonly IRepository _registerCheckRepository; private readonly IRepository _registerCheckAsbitemRepository; private readonly IRepository _lisRequestRepository; private readonly IRepository _registerCheckSummaryRepository; private readonly IRepository _registerCheckSuggestionRepository; private readonly IRepository _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 _userItemTypeRepository; private readonly IRepository _asbitemRepository; private readonly DiagnosisFunctionAppService _diagnosisFunctionAppService; public ImportLisResultAppService(IRepository registerCheckRepository, IRepository registerCheckItemRepository, IRepository patientRegisterRepository, IRepository referenceRangeRepository, IRepository registerCheckSummaryRepository, IRepository registerCheckSuggestionRepository, IRepository userRepository, RegisterCheckManager registerCheckManager, RegisterCheckItemManager registerCheckItemManager, CacheService cacheService, IGuidGenerator guidGenerator, IConfiguration configuration, ICurrentUser currentUser, IRepository userItemTypeRepository, IRepository asbitemRepository, IRepository registerCheckAsbitemRepository, IRepository 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 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() }; } //保存小结 } } }