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.

214 lines
9.0 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
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
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.Authorization;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Microsoft.EntityFrameworkCore;
  4. using Shentun.Peis.Enums;
  5. using Shentun.Peis.GuideTypes;
  6. using Shentun.Peis.Models;
  7. using Shentun.Peis.ReferenceRanges;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Linq;
  11. using System.Text;
  12. using System.Threading.Tasks;
  13. using TencentCloud.Ame.V20190916.Models;
  14. using Volo.Abp;
  15. using Volo.Abp.Application.Services;
  16. using Volo.Abp.Domain.Repositories;
  17. using Volo.Abp.Identity;
  18. using Volo.Abp.ObjectMapping;
  19. using Volo.Abp.Users;
  20. namespace Shentun.Peis.RegisterCheckItems
  21. {
  22. /// <summary>
  23. /// 检查明细项目记录
  24. /// </summary>
  25. [ApiExplorerSettings(GroupName = "Work")]
  26. [Authorize]
  27. public class RegisterCheckItemAppService : ApplicationService
  28. {
  29. private readonly IRepository<RegisterCheckItem> _registerCheckItemRepository;
  30. private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository;
  31. private readonly IRepository<ReferenceRange, Guid> _referenceRangeRepository;
  32. private readonly IRepository<IdentityUser, Guid> _userRepository;
  33. private readonly RegisterCheckItemManager _registerCheckItemManager;
  34. private readonly ReferenceRangeManager _referenceRangeManager;
  35. public RegisterCheckItemAppService(
  36. IRepository<RegisterCheckItem> registerCheckItemRepository,
  37. IRepository<IdentityUser, Guid> userRepository,
  38. RegisterCheckItemManager registerCheckItemManager,
  39. ReferenceRangeManager referenceRangeManager,
  40. IRepository<PatientRegister, Guid> patientRegisterRepository,
  41. IRepository<ReferenceRange, Guid> referenceRangeRepository)
  42. {
  43. this._registerCheckItemRepository = registerCheckItemRepository;
  44. this._userRepository = userRepository;
  45. this._registerCheckItemManager = registerCheckItemManager;
  46. this._referenceRangeManager = referenceRangeManager;
  47. this._patientRegisterRepository = patientRegisterRepository;
  48. this._referenceRangeRepository = referenceRangeRepository;
  49. }
  50. /// <summary>
  51. /// 获取检查明细项目记录 附带项目名称跟项目结果模板的集合
  52. /// </summary>
  53. /// <returns></returns>
  54. [HttpGet("api/app/registercheckitem/getlistinregistercheckid")]
  55. public async Task<List<RegisterCheckItemOrItemOrItemResultTemplateDto>> GetListInRegisterCheckIdAsync(Guid RegisterCheckId, Guid PatientRegisterId)
  56. {
  57. var entlist = (await _registerCheckItemRepository.GetDbSetAsync())
  58. .Include(x => x.Item)
  59. .Include(x => x.Item.ItemResultTemplates)
  60. .Include(x => x.Item.ItemType)
  61. .Include(x => x.RegisterCheck)
  62. .Where(m => m.RegisterCheckId == RegisterCheckId);
  63. #region 未检查的项目重新更新参考范围、危警值
  64. var PatientRegisterEnt = await _patientRegisterRepository.GetAsync(PatientRegisterId);
  65. var referenceRangeList = await _referenceRangeRepository.GetListAsync();
  66. List<RegisterCheckItem> update_list = new List<RegisterCheckItem>();
  67. foreach (var ent in entlist)
  68. {
  69. if (ent.RegisterCheck.CompleteFlag == RegisterCheckCompleteFlag.UnChecked)
  70. {
  71. var referenceRangeEnt = _referenceRangeManager.GetReferenceRangeInSexAgeTemp(referenceRangeList,
  72. ent.Item,
  73. PatientRegisterEnt.SexId,
  74. PatientRegisterEnt.Age);
  75. if (referenceRangeEnt != null)
  76. {
  77. ent.ReferenceRangeValue = referenceRangeEnt.ReferenceRangeValue;
  78. ent.CriticalRangeValue = referenceRangeEnt.CriticalRangeValue;
  79. }
  80. update_list.Add(ent);
  81. }
  82. }
  83. if (update_list.Any())
  84. {
  85. await _registerCheckItemRepository.UpdateManyAsync(update_list, true);
  86. }
  87. #endregion
  88. var userList = await _userRepository.GetListAsync();
  89. var entdto = entlist.Select(s => new RegisterCheckItemOrItemOrItemResultTemplateDto
  90. {
  91. CheckDate = DataHelper.ConversionDateToString(s.CheckDate),
  92. CheckDoctorName = s.CheckDoctorName,
  93. CriticalRangeValue = s.CriticalRangeValue,
  94. CriticalValue = s.CriticalValue,
  95. ItemId = s.ItemId,
  96. IsCalculationItem = s.Item.IsCalculationItem,
  97. ItemName = s.Item.DisplayName,
  98. itemResultTemplates = s.Item.ItemResultTemplates.Select(si => new ItemResultTemplates.ItemResultTemplateDropDto
  99. {
  100. DiagnosisId = si.DiagnosisId,
  101. IsNameIntoSummary = si.IsNameIntoSummary,
  102. IsResultIntoSummary = si.IsResultIntoSummary,
  103. ItemId = si.ItemId,
  104. Result = si.Result,
  105. ResultStatusId = si.ResultStatusId,
  106. SimpleCode = si.SimpleCode
  107. }).ToList(),
  108. ReferenceRangeValue = s.ReferenceRangeValue,
  109. ReferenceRangeTypeFlag = s.Item.ReferenceRangeTypeFlag,
  110. RegisterCheckId = RegisterCheckId,
  111. Result = string.IsNullOrEmpty(s.Result) && s.RegisterCheck.CompleteFlag == RegisterCheckCompleteFlag.UnChecked ? s.Item.DefaultResult : s.Result,
  112. ResultStatusId = s.ResultStatusId,
  113. Unit = s.Unit,
  114. LineModeFlag = s.Item.LineModeFlag == '2' ? (s.Item.ItemType.IsWrap == 'N' ? '0' : '1') : s.Item.LineModeFlag,
  115. CreationTime = s.CreationTime,
  116. CreatorId = s.CreatorId,
  117. LastModificationTime = s.LastModificationTime,
  118. LastModifierId = s.LastModifierId,
  119. CreatorName = EntityHelper.GetUserNameNoSql(userList, s.CreatorId),
  120. LastModifierName = EntityHelper.GetUserNameNoSql(userList, s.LastModifierId),
  121. InputCheck = s.Item.InputCheck
  122. }).ToList();
  123. return entdto;
  124. }
  125. ///// <summary>
  126. ///// 修改结果内容
  127. ///// </summary>
  128. ///// <param name="RegisterCheckId">RegisterCheck表ID</param>
  129. ///// <param name="ItemId">项目ID</param>
  130. ///// <param name="input"></param>
  131. ///// <returns></returns>
  132. //[HttpPost("api/app/registercheckitem/updateresult")]
  133. //public async Task<RegisterCheckItemDto> UpdateResultAsync(Guid RegisterCheckId, Guid ItemId, UpdateRegisterCheckItemResultDto input)
  134. //{
  135. // var ent = await _registerCheckItemRepository.GetAsync(m => m.RegisterCheckId == RegisterCheckId && m.ItemId == ItemId);
  136. // ent.Result = input.Result;
  137. // ent.CheckDoctorName = input.CheckDoctorName;
  138. // ent.CriticalValue = input.CriticalValue;
  139. // ent.CheckDate = PageHelper.ConvertDate(input.CheckDate);
  140. // var entnew = await _registerCheckItemRepository.UpdateAsync(ent);
  141. // return ObjectMapper.Map<RegisterCheckItem, RegisterCheckItemDto>(entnew);
  142. //}
  143. /// <summary>
  144. /// 批量修改检查明细项目记录
  145. /// </summary>
  146. /// <param name="input"></param>
  147. /// <returns></returns>
  148. [HttpPost("api/app/registercheckitem/updateregistercheckitemmany")]
  149. public async Task<List<RegisterCheckItemDto>> UpdateRegisterCheckItemManyAsync(List<UpdateRegisterCheckItemManyDto> input)
  150. {
  151. if (!input.Any())
  152. {
  153. throw new UserFriendlyException("请求参数有误");
  154. }
  155. List<RegisterCheckItemDto> msg = new List<RegisterCheckItemDto>();
  156. foreach (var item in input)
  157. {
  158. var entity = await _registerCheckItemRepository.GetAsync(m => m.RegisterCheckId == item.RegisterCheckId && m.ItemId == item.ItemId);
  159. var entitydto = ObjectMapper.Map<UpdateRegisterCheckItemManyDto, RegisterCheckItem>(item);
  160. var newentity = await _registerCheckItemManager.UpdateRegisterCheckItemAsync(entitydto, entity);
  161. msg.Add(ObjectMapper.Map<RegisterCheckItem, RegisterCheckItemDto>(newentity));
  162. }
  163. return msg;
  164. }
  165. /// <summary>
  166. /// 删除检查明细项目记录
  167. /// </summary>
  168. /// <param name="RegisterCheckId"></param>
  169. /// <param name="ItemId"></param>
  170. /// <returns></returns>
  171. [HttpPost("api/app/registercheckitem/deleteregistercheckitem")]
  172. public async Task DeleteRegisterCheckItemAsync(Guid RegisterCheckId, Guid ItemId)
  173. {
  174. // await _registerCheckItemRepository.DeleteAsync(m => m.RegisterCheckId == RegisterCheckId && m.ItemId == ItemId);
  175. await _registerCheckItemManager.CheckAndDeleteAsync(RegisterCheckId, ItemId);
  176. }
  177. }
  178. }