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

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. using Microsoft.AspNetCore.Mvc;
  2. using Microsoft.Extensions.Configuration;
  3. using Shentun.Peis.DiagnosisFunctions;
  4. using Shentun.Peis.Models;
  5. using Shentun.Peis.PlugIns;
  6. using Shentun.Peis.RegisterCheckItems;
  7. using Shentun.Peis.RegisterChecks;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Linq;
  11. using System.Text;
  12. using System.Threading.Tasks;
  13. using Volo.Abp.Application.Services;
  14. using Volo.Abp.Domain.Repositories;
  15. using Volo.Abp.Guids;
  16. using Volo.Abp.Identity;
  17. using Volo.Abp.Users;
  18. namespace Shentun.Peis.ImportLisResults
  19. {
  20. public class ImportLisResultAppService : ApplicationService
  21. {
  22. private readonly IRepository<RegisterCheckItem> _registerCheckItemRepository;
  23. private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository;
  24. private readonly IRepository<ReferenceRange, Guid> _referenceRangeRepository;
  25. private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
  26. private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository;
  27. private readonly IRepository<LisRequest, Guid> _lisRequestRepository;
  28. private readonly IRepository<RegisterCheckSummary, Guid> _registerCheckSummaryRepository;
  29. private readonly IRepository<RegisterCheckSuggestion, Guid> _registerCheckSuggestionRepository;
  30. private readonly IRepository<IdentityUser, Guid> _userRepository;
  31. private readonly RegisterCheckManager _registerCheckManager;
  32. private readonly RegisterCheckItemManager _registerCheckItemManager;
  33. private readonly CacheService _cacheService;
  34. private readonly IGuidGenerator _guidGenerator;
  35. private readonly IConfiguration _configuration;
  36. private readonly ICurrentUser _currentUser;
  37. private readonly IRepository<UserItemType> _userItemTypeRepository;
  38. private readonly IRepository<Asbitem, Guid> _asbitemRepository;
  39. private readonly DiagnosisFunctionAppService _diagnosisFunctionAppService;
  40. public ImportLisResultAppService(IRepository<RegisterCheck, Guid> registerCheckRepository,
  41. IRepository<RegisterCheckItem> registerCheckItemRepository,
  42. IRepository<PatientRegister, Guid> patientRegisterRepository,
  43. IRepository<ReferenceRange, Guid> referenceRangeRepository,
  44. IRepository<RegisterCheckSummary, Guid> registerCheckSummaryRepository,
  45. IRepository<RegisterCheckSuggestion, Guid> registerCheckSuggestionRepository,
  46. IRepository<IdentityUser, Guid> userRepository,
  47. RegisterCheckManager registerCheckManager,
  48. RegisterCheckItemManager registerCheckItemManager,
  49. CacheService cacheService,
  50. IGuidGenerator guidGenerator,
  51. IConfiguration configuration,
  52. ICurrentUser currentUser,
  53. IRepository<UserItemType> userItemTypeRepository,
  54. IRepository<Asbitem, Guid> asbitemRepository,
  55. IRepository<RegisterCheckAsbitem, Guid> registerCheckAsbitemRepository,
  56. IRepository<LisRequest, Guid> lisRequestRepository,
  57. DiagnosisFunctionAppService diagnosisFunctionAppService)
  58. {
  59. _registerCheckRepository = registerCheckRepository;
  60. _userRepository = userRepository;
  61. _registerCheckManager = registerCheckManager;
  62. _patientRegisterRepository = patientRegisterRepository;
  63. _referenceRangeRepository = referenceRangeRepository;
  64. _registerCheckItemRepository = registerCheckItemRepository;
  65. _registerCheckSummaryRepository = registerCheckSummaryRepository;
  66. _registerCheckSuggestionRepository = registerCheckSuggestionRepository;
  67. _registerCheckItemManager = registerCheckItemManager;
  68. _cacheService = cacheService;
  69. _guidGenerator = guidGenerator;
  70. _configuration = configuration;
  71. _currentUser = currentUser;
  72. _userItemTypeRepository = userItemTypeRepository;
  73. _asbitemRepository = asbitemRepository;
  74. _registerCheckAsbitemRepository = registerCheckAsbitemRepository;
  75. _lisRequestRepository = lisRequestRepository;
  76. _diagnosisFunctionAppService = diagnosisFunctionAppService;
  77. }
  78. [HttpGet("api/app/ImportLisResult/ImportResult")]
  79. public async Task ImportResultAsync(List<LisResult> input)
  80. {
  81. //设置结果
  82. var list = (from registerCheck in await _registerCheckRepository.GetQueryableAsync()
  83. join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync()
  84. on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
  85. join registerCheckItem in await _registerCheckItemRepository.GetQueryableAsync()
  86. on registerCheck.Id equals registerCheckItem.RegisterCheckId
  87. join lisRequest in await _lisRequestRepository.GetQueryableAsync()
  88. on registerCheckAsbitem.LisRequestId equals lisRequest.Id
  89. where input.Select(o => o.LisRequestNo).ToList().Contains(lisRequest.LisRequestNo)
  90. select new
  91. {
  92. registerCheck,
  93. registerCheckAsbitem,
  94. registerCheckItem,
  95. lisRequest,
  96. }).ToList();
  97. var lisRequestNos = input.Select(o => o.LisRequestNo).Distinct().ToList();
  98. foreach(var inputItem in input)
  99. {
  100. var lisRequestItem = list.Where(o=>o.lisRequest.LisRequestNo == inputItem.LisRequestNo
  101. && o.registerCheckItem.ItemId == new Guid(inputItem.ItemId)).FirstOrDefault();
  102. if(lisRequestItem == null)
  103. {
  104. continue;
  105. }
  106. var itemSource = new RegisterCheckItem()
  107. {
  108. Result = inputItem.Result,
  109. ReferenceRangeValue = inputItem.ReferenceRangeValue,
  110. Unit = inputItem.Unit,
  111. CriticalRangeValue = inputItem.CriticalRangeValue
  112. };
  113. await _registerCheckItemManager.UpdateRegisterCheckItemAsync(itemSource, lisRequestItem.registerCheckItem);
  114. await _registerCheckItemRepository.UpdateAsync(lisRequestItem.registerCheckItem);
  115. }
  116. //生成小结
  117. var registerChecks = list.Select(o=>o.registerCheck).Distinct().ToList();
  118. foreach(var registerCheck in registerChecks)
  119. {
  120. var getDiagnosisResultRequestDto = new GetDiagnosisResultRequestDto()
  121. {
  122. RegisterCheckId = registerCheck.Id,
  123. Items = list.Where(o=>o.registerCheck.Id == registerCheck.Id)
  124. .Select(o=>new GetDiagnosisResultRequest_Item()
  125. {
  126. ItemId = o.registerCheckItem.ItemId,
  127. Result = o.registerCheckItem.Result,
  128. }).ToList()
  129. };
  130. }
  131. //保存小结
  132. }
  133. }
  134. }