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.

225 lines
9.6 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
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 IRepository<Unit, Guid> _unitRepository;
  34. private readonly RegisterCheckItemManager _registerCheckItemManager;
  35. private readonly ReferenceRangeManager _referenceRangeManager;
  36. private readonly CacheService _cacheService;
  37. public RegisterCheckItemAppService(
  38. IRepository<RegisterCheckItem> registerCheckItemRepository,
  39. IRepository<IdentityUser, Guid> userRepository,
  40. RegisterCheckItemManager registerCheckItemManager,
  41. ReferenceRangeManager referenceRangeManager,
  42. IRepository<PatientRegister, Guid> patientRegisterRepository,
  43. IRepository<ReferenceRange, Guid> referenceRangeRepository,
  44. IRepository<Unit, Guid> unitRepository,
  45. CacheService cacheService)
  46. {
  47. this._registerCheckItemRepository = registerCheckItemRepository;
  48. this._userRepository = userRepository;
  49. this._registerCheckItemManager = registerCheckItemManager;
  50. this._referenceRangeManager = referenceRangeManager;
  51. this._patientRegisterRepository = patientRegisterRepository;
  52. this._referenceRangeRepository = referenceRangeRepository;
  53. _unitRepository = unitRepository;
  54. _cacheService = cacheService;
  55. }
  56. /// <summary>
  57. /// 获取检查明细项目记录 附带项目名称跟项目结果模板的集合
  58. /// </summary>
  59. /// <returns></returns>
  60. [HttpGet("api/app/registercheckitem/getlistinregistercheckid")]
  61. public async Task<List<RegisterCheckItemOrItemOrItemResultTemplateDto>> GetListInRegisterCheckIdAsync(Guid RegisterCheckId, Guid PatientRegisterId)
  62. {
  63. var entlist = (await _registerCheckItemRepository.GetQueryableAsync())
  64. .Include(x => x.Item)
  65. .Include(x => x.Item.ItemResultTemplates)
  66. .Include(x => x.Item.ItemType)
  67. .Include(x => x.RegisterCheck)
  68. .Where(m => m.RegisterCheckId == RegisterCheckId);
  69. #region 未检查的项目重新更新参考范围、危警值
  70. var PatientRegisterEnt = await _patientRegisterRepository.GetAsync(PatientRegisterId);
  71. var referenceRangeList = await _referenceRangeRepository.GetListAsync();
  72. List<RegisterCheckItem> update_list = new List<RegisterCheckItem>();
  73. var units = await _unitRepository.GetListAsync();
  74. foreach (var ent in entlist)
  75. {
  76. if (ent.RegisterCheck.CompleteFlag == RegisterCheckCompleteFlag.UnChecked)
  77. {
  78. var referenceRangeEnt = _referenceRangeManager.GetReferenceRangeInSexAgeTemp(referenceRangeList,
  79. ent.Item,
  80. PatientRegisterEnt.SexId,
  81. PatientRegisterEnt.Age);
  82. if (referenceRangeEnt != null)
  83. {
  84. ent.ReferenceRangeValue = referenceRangeEnt.ReferenceRangeValue;
  85. ent.CriticalRangeValue = referenceRangeEnt.CriticalRangeValue;
  86. }
  87. var unit = units.Where(o => o.Id == ent.Item.UnitId).FirstOrDefault();
  88. if (unit != null)
  89. {
  90. ent.Unit = unit.DisplayName;
  91. }
  92. update_list.Add(ent);
  93. }
  94. }
  95. if (update_list.Any())
  96. {
  97. await _registerCheckItemRepository.UpdateManyAsync(update_list, true);
  98. }
  99. #endregion
  100. var entdto = entlist.Select(s => new RegisterCheckItemOrItemOrItemResultTemplateDto
  101. {
  102. CheckDate = DataHelper.ConversionDateToString(s.CheckDate),
  103. CheckDoctorName = s.CheckDoctorName,
  104. CriticalRangeValue = s.CriticalRangeValue,
  105. CriticalValue = s.CriticalValue,
  106. ItemId = s.ItemId,
  107. IsCalculationItem = s.Item.IsCalculationItem,
  108. ItemName = s.Item.DisplayName,
  109. itemResultTemplates = s.Item.ItemResultTemplates.Select(si => new ItemResultTemplates.ItemResultTemplateDropDto
  110. {
  111. DiagnosisId = si.DiagnosisId,
  112. IsNameIntoSummary = si.IsNameIntoSummary,
  113. IsResultIntoSummary = si.IsResultIntoSummary,
  114. ItemId = si.ItemId,
  115. Result = si.Result,
  116. ResultStatusId = si.ResultStatusId,
  117. SimpleCode = si.SimpleCode
  118. }).ToList(),
  119. ReferenceRangeValue = s.ReferenceRangeValue,
  120. ReferenceRangeTypeFlag = s.Item.ReferenceRangeTypeFlag,
  121. RegisterCheckId = RegisterCheckId,
  122. Result = string.IsNullOrEmpty(s.Result) && s.RegisterCheck.CompleteFlag == RegisterCheckCompleteFlag.UnChecked ? s.Item.DefaultResult : s.Result,
  123. ResultStatusId = s.ResultStatusId,
  124. Unit = s.Unit,
  125. LineModeFlag = s.Item.LineModeFlag == '2' ? (s.Item.ItemType.IsWrap == 'N' ? '0' : '1') : s.Item.LineModeFlag,
  126. CreationTime = s.CreationTime,
  127. CreatorId = s.CreatorId,
  128. LastModificationTime = s.LastModificationTime,
  129. LastModifierId = s.LastModifierId,
  130. CreatorName = _cacheService.GetUserNameAsync(s.CreatorId).Result,
  131. LastModifierName = _cacheService.GetUserNameAsync(s.LastModifierId).Result,
  132. InputCheck = s.Item.InputCheck
  133. }).ToList();
  134. return entdto;
  135. }
  136. ///// <summary>
  137. ///// 修改结果内容
  138. ///// </summary>
  139. ///// <param name="RegisterCheckId">RegisterCheck表ID</param>
  140. ///// <param name="ItemId">项目ID</param>
  141. ///// <param name="input"></param>
  142. ///// <returns></returns>
  143. //[HttpPost("api/app/registercheckitem/updateresult")]
  144. //public async Task<RegisterCheckItemDto> UpdateResultAsync(Guid RegisterCheckId, Guid ItemId, UpdateRegisterCheckItemResultDto input)
  145. //{
  146. // var ent = await _registerCheckItemRepository.GetAsync(m => m.RegisterCheckId == RegisterCheckId && m.ItemId == ItemId);
  147. // ent.Result = input.Result;
  148. // ent.CheckDoctorName = input.CheckDoctorName;
  149. // ent.CriticalValue = input.CriticalValue;
  150. // ent.CheckDate = PageHelper.ConvertDate(input.CheckDate);
  151. // var entnew = await _registerCheckItemRepository.UpdateAsync(ent);
  152. // return ObjectMapper.Map<RegisterCheckItem, RegisterCheckItemDto>(entnew);
  153. //}
  154. /// <summary>
  155. /// 批量修改检查明细项目记录
  156. /// </summary>
  157. /// <param name="input"></param>
  158. /// <returns></returns>
  159. [HttpPost("api/app/registercheckitem/updateregistercheckitemmany")]
  160. public async Task<List<RegisterCheckItemDto>> UpdateRegisterCheckItemManyAsync(List<UpdateRegisterCheckItemManyDto> input)
  161. {
  162. throw new Exception("禁止");
  163. if (!input.Any())
  164. {
  165. throw new UserFriendlyException("请求参数有误");
  166. }
  167. List<RegisterCheckItemDto> msg = new List<RegisterCheckItemDto>();
  168. foreach (var item in input)
  169. {
  170. var entity = await _registerCheckItemRepository.GetAsync(m => m.RegisterCheckId == item.RegisterCheckId && m.ItemId == item.ItemId);
  171. var entitydto = ObjectMapper.Map<UpdateRegisterCheckItemManyDto, RegisterCheckItem>(item);
  172. var newentity = await _registerCheckItemManager.UpdateRegisterCheckItemAsync(entitydto, entity);
  173. msg.Add(ObjectMapper.Map<RegisterCheckItem, RegisterCheckItemDto>(newentity));
  174. }
  175. return msg;
  176. }
  177. /// <summary>
  178. /// 删除检查明细项目记录
  179. /// </summary>
  180. /// <param name="RegisterCheckId"></param>
  181. /// <param name="ItemId"></param>
  182. /// <returns></returns>
  183. [HttpPost("api/app/registercheckitem/deleteregistercheckitem")]
  184. public async Task DeleteRegisterCheckItemAsync(Guid RegisterCheckId, Guid ItemId)
  185. {
  186. // await _registerCheckItemRepository.DeleteAsync(m => m.RegisterCheckId == RegisterCheckId && m.ItemId == ItemId);
  187. await _registerCheckItemManager.CheckAndDeleteAsync(RegisterCheckId, ItemId);
  188. }
  189. }
  190. }