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.

531 lines
26 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
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 year 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 Microsoft.Extensions.Configuration;
  5. using Shentun.Peis.Enums;
  6. using Shentun.Peis.MenuInfos;
  7. using Shentun.Peis.Models;
  8. using Shentun.Peis.PatientRegisters;
  9. using Shentun.Peis.RegisterCheckItems;
  10. using Shentun.Peis.RegisterCheckSummarys;
  11. using System;
  12. using System.Collections.Generic;
  13. using System.Linq;
  14. using System.Linq.Dynamic.Core;
  15. using System.Text;
  16. using System.Threading.Tasks;
  17. using Volo.Abp;
  18. using Volo.Abp.Application.Dtos;
  19. using Volo.Abp.Application.Services;
  20. using Volo.Abp.Domain.Entities.Events.Distributed;
  21. using Volo.Abp.Domain.Repositories;
  22. using Volo.Abp.Guids;
  23. using Volo.Abp.Identity;
  24. using Volo.Abp.ObjectMapping;
  25. using Volo.Abp.Users;
  26. namespace Shentun.Peis.RegisterChecks
  27. {
  28. /// <summary>
  29. /// 登记检查单
  30. /// </summary>
  31. [ApiExplorerSettings(GroupName = "Work")]
  32. [Authorize]
  33. public class RegisterCheckAppService : ApplicationService
  34. {
  35. private readonly IRepository<RegisterCheckItem> _registerCheckItemRepository;
  36. private readonly IRepository<RegisterCheckAsbitem> _registerCheckAsbitemRepository;
  37. private readonly IRepository<ItemType> _itemTypeRepository;
  38. private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository;
  39. private readonly IRepository<ReferenceRange, Guid> _referenceRangeRepository;
  40. private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
  41. private readonly IRepository<RegisterCheckSummary, Guid> _registerCheckSummaryRepository;
  42. private readonly IRepository<RegisterCheckSuggestion, Guid> _registerCheckSuggestionRepository;
  43. private readonly IRepository<IdentityUser, Guid> _userRepository;
  44. private readonly RegisterCheckManager _registerCheckManager;
  45. private readonly RegisterCheckItemManager _registerCheckItemManager;
  46. private readonly CacheService _cacheService;
  47. private readonly IGuidGenerator _guidGenerator;
  48. private readonly IConfiguration _configuration;
  49. private readonly ICurrentUser _currentUser;
  50. private readonly IRepository<UserItemType> _userItemTypeRepository;
  51. private readonly IRepository<Asbitem, Guid> _asbitemRepository;
  52. public RegisterCheckAppService(IRepository<RegisterCheck, Guid> registerCheckRepository,
  53. IRepository<RegisterCheckItem> registerCheckItemRepository,
  54. IRepository<PatientRegister, Guid> patientRegisterRepository,
  55. IRepository<ReferenceRange, Guid> referenceRangeRepository,
  56. IRepository<RegisterCheckSummary, Guid> registerCheckSummaryRepository,
  57. IRepository<RegisterCheckSuggestion, Guid> registerCheckSuggestionRepository,
  58. IRepository<IdentityUser, Guid> userRepository,
  59. RegisterCheckManager registerCheckManager,
  60. RegisterCheckItemManager registerCheckItemManager,
  61. CacheService cacheService,
  62. IGuidGenerator guidGenerator,
  63. IConfiguration configuration,
  64. ICurrentUser currentUser,
  65. IRepository<UserItemType> userItemTypeRepository,
  66. IRepository<Asbitem, Guid> asbitemRepository,
  67. IRepository<RegisterCheckAsbitem> registerCheckAsbitemRepository,
  68. IRepository<ItemType> itemTypeRepository)
  69. {
  70. _registerCheckRepository = registerCheckRepository;
  71. _userRepository = userRepository;
  72. _registerCheckManager = registerCheckManager;
  73. _patientRegisterRepository = patientRegisterRepository;
  74. _referenceRangeRepository = referenceRangeRepository;
  75. _registerCheckItemRepository = registerCheckItemRepository;
  76. _registerCheckSummaryRepository = registerCheckSummaryRepository;
  77. _registerCheckSuggestionRepository = registerCheckSuggestionRepository;
  78. _registerCheckItemManager = registerCheckItemManager;
  79. _cacheService = cacheService;
  80. _guidGenerator = guidGenerator;
  81. _configuration = configuration;
  82. _currentUser = currentUser;
  83. _userItemTypeRepository = userItemTypeRepository;
  84. _asbitemRepository = asbitemRepository;
  85. _registerCheckAsbitemRepository = registerCheckAsbitemRepository;
  86. _itemTypeRepository = itemTypeRepository;
  87. }
  88. /// <summary>
  89. /// 根据RegisterCheckId获取当前实体数据
  90. /// </summary>
  91. /// <param name="id"></param>
  92. /// <returns></returns>
  93. [HttpGet("api/app/registercheck/getregistercheck")]
  94. public async Task<RegisterCheckDto> GetRegisterCheckAsync(Guid id)
  95. {
  96. var registerCheckEntity = (await _registerCheckRepository.GetQueryableAsync())
  97. .Include(x => x.RegisterCheckAsbitems)
  98. .FirstOrDefault(f => f.Id == id);
  99. var registerCheckDto = new RegisterCheckDto
  100. {
  101. AuditorUserId = registerCheckEntity.AuditorUserId,
  102. AuditTime = registerCheckEntity.AuditTime,
  103. CheckDate = DataHelper.ConversionDateToString(registerCheckEntity.CheckDate),
  104. CheckDoctorId = registerCheckEntity.CheckDoctorId,
  105. CheckRequestNo = registerCheckEntity.CheckRequestNo,
  106. CheckRequestPrintTimes = registerCheckEntity.CheckRequestPrintTimes,
  107. CompleteFlag = registerCheckEntity.CompleteFlag,
  108. CreationTime = registerCheckEntity.CreationTime,
  109. CreatorId = registerCheckEntity.CreatorId,
  110. CriticalValue = registerCheckEntity.CriticalValue,
  111. CriticalValueCreateDate = DataHelper.ConversionDateToString(registerCheckEntity.CriticalValueCreateDate),
  112. CriticalValueFlag = registerCheckEntity.CriticalValueFlag,
  113. CriticalValueProcessContent = registerCheckEntity.CriticalValueProcessContent,
  114. CriticalValueProcessDate = DataHelper.ConversionDateToString(registerCheckEntity.CriticalValueProcessDate),
  115. CriticalValueProcessDoctor = registerCheckEntity.CriticalValueProcessDoctor,
  116. CriticalValueProcessFlag = registerCheckEntity.CriticalValueProcessFlag,
  117. Id = registerCheckEntity.Id,
  118. IsAudit = registerCheckEntity.IsAudit,
  119. IsLock = registerCheckEntity.IsLock,
  120. LastModificationTime = registerCheckEntity.LastModificationTime,
  121. LastModifierId = registerCheckEntity.LastModifierId,
  122. ThirdInfo = registerCheckEntity.ThirdInfo,
  123. LastModifierName = _cacheService.GetSurnameAsync(registerCheckEntity.LastModifierId).Result,
  124. CreatorName = _cacheService.GetSurnameAsync(registerCheckEntity.CreatorId).Result,
  125. IsCharge = registerCheckEntity.RegisterCheckAsbitems.Where(m => m.PayTypeFlag == PayTypeFlag.PersonPay && m.IsCharge == 'N').Count() > 0 ? 'N' : 'Y'
  126. };
  127. return registerCheckDto;
  128. }
  129. /// <summary>
  130. /// 获取登记check表数据(附带组合项目名称跟是否收费) 医生诊台左边列表 只有一个收费就显示收费
  131. /// </summary>
  132. /// <param name="input"></param>
  133. /// <returns></returns>
  134. [HttpPost("api/app/RegisterCheck/GetRegisterCheckAsbitemsByPatientRegisterId")]
  135. public async Task<List<RegisterCheckOrAsbitemNameOrIsChargeDto>> GetRegisterCheckAsbitemsByPatientRegisterIdAsync(PatientRegisterIdInputDto input)
  136. {
  137. //var list = (from registerCheck in await _registerCheckRepository.GetQueryableAsync()
  138. // join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync()
  139. // on registerCheck.Id equals registerCheckAsbitem.AsbitemId
  140. // join asbitem in await _asbitemRepository.GetQueryableAsync()
  141. // on registerCheckAsbitem.AsbitemId equals asbitem.Id
  142. // join itemType in await _itemTypeRepository.GetQueryableAsync()
  143. // on asbitem.ItemTypeId equals itemType.Id
  144. // where registerCheck.PatientRegisterId == input.PatientRegisterId
  145. // orderby itemType.DisplayName, asbitem.DisplayOrder
  146. // select new
  147. // {
  148. // registerCheck,
  149. // registerCheckAsbitem,
  150. // asbitem,
  151. // itemType
  152. // }).ToList();
  153. var entlist = (await _registerCheckRepository.GetQueryableAsync())
  154. .Include(x => x.RegisterCheckAsbitems)
  155. .ThenInclude(x => x.Asbitem).ThenInclude(x => x.ItemType)
  156. .Where(m => m.PatientRegisterId == input.PatientRegisterId).ToList();
  157. //排序
  158. entlist = entlist.OrderBy(o => o.RegisterCheckAsbitems.Max(o => o.Asbitem.ItemType.DisplayOrder)).ToList()
  159. .OrderBy(o => o.RegisterCheckAsbitems.Max(o => o.Asbitem.DisplayOrder)).ToList();
  160. var entdto = entlist.Where(m => m.RegisterCheckAsbitems.Where(mm => mm.Asbitem.IsCheck == 'Y').Count() > 0).Select(s => new RegisterCheckOrAsbitemNameOrIsChargeDto
  161. {
  162. CheckTypeFlag = s.RegisterCheckAsbitems.First().Asbitem.ItemType.CheckTypeFlag,
  163. AsbitemName = string.Join(",", s.RegisterCheckAsbitems.Select(rs => rs.Asbitem.DisplayName).ToList()),
  164. AuditorUserId = s.AuditorUserId,
  165. AuditTime = s.AuditTime,
  166. CheckDate = DataHelper.ConversionDateToString(s.CheckDate),
  167. CheckDoctorId = s.CheckDoctorId,
  168. CheckRequestNo = s.CheckRequestNo,
  169. CheckRequestPrintTimes = s.CheckRequestPrintTimes,
  170. CompleteFlag = s.CompleteFlag,
  171. CreationTime = s.CreationTime,
  172. CreatorId = s.CreatorId,
  173. CriticalValue = s.CriticalValue,
  174. CriticalValueCreateDate = DataHelper.ConversionDateToString(s.CriticalValueCreateDate),
  175. CriticalValueFlag = s.CriticalValueFlag,
  176. CriticalValueProcessContent = s.CriticalValueProcessContent,
  177. CriticalValueProcessDate = DataHelper.ConversionDateToString(s.CriticalValueProcessDate),
  178. CriticalValueProcessDoctor = s.CriticalValueProcessDoctor,
  179. CriticalValueProcessFlag = s.CriticalValueProcessFlag,
  180. Id = s.Id,
  181. IsAudit = s.IsAudit,
  182. IsCharge = s.RegisterCheckAsbitems.Where(m => m.IsCharge == 'Y').Count() > 0 ? 'Y' : 'N',
  183. IsLock = s.IsLock,
  184. LastModificationTime = s.LastModificationTime,
  185. LastModifierId = s.LastModifierId,
  186. //RegisterAsbitemId = s.RegisterAsbitemId,
  187. ThirdInfo = s.ThirdInfo,
  188. CreatorName = _cacheService.GetSurnameAsync(s.CreatorId).Result,
  189. LastModifierName = _cacheService.GetSurnameAsync(s.LastModifierId).Result,
  190. ItemTypeDisplayOrder = s.RegisterCheckAsbitems.First().Asbitem.ItemType.DisplayOrder,
  191. AsbitemDisplayOrder = s.RegisterCheckAsbitems.First().Asbitem.DisplayOrder
  192. }).ToList();
  193. return entdto;
  194. }
  195. /// <summary>
  196. /// 获取登记check表数据(附带组合项目名称跟是否收费) 医生诊台左边列表 只有一个收费就显示收费 增加项目类别权限控制
  197. /// </summary>
  198. /// <param name="input"></param>
  199. /// <returns></returns>
  200. [HttpPost("api/app/RegisterCheck/GetRegisterCheckWithAsbitems")]
  201. public async Task<List<RegisterCheckWithAsbitemsDto>> GetRegisterCheckWithAsbitemsAsync(PatientRegisterIdInputDto input)
  202. {
  203. var entlist = (await _registerCheckRepository.GetQueryableAsync())
  204. .Include(x => x.RegisterCheckAsbitems)
  205. .ThenInclude(x => x.Asbitem).ThenInclude(x => x.ItemType)
  206. .Where(m => m.RegisterCheckAsbitems.Select(s => s.PatientRegisterId)
  207. .Contains(input.PatientRegisterId)
  208. && m.RegisterCheckAsbitems.Select(s => s.Asbitem.IsCheck).Contains('Y'));
  209. #region 增加项目类别权限
  210. string AdminId = _configuration.GetValue<string>("AdminId");
  211. if (_currentUser.Id.Value != Guid.Parse(AdminId))
  212. {
  213. var asbitemIds = (from userItemType in await _userItemTypeRepository.GetQueryableAsync()
  214. join asbitem in await _asbitemRepository.GetQueryableAsync() on userItemType.ItemTypeId equals asbitem.ItemTypeId
  215. where userItemType.UserId == _currentUser.Id.Value
  216. select asbitem.Id).ToList();
  217. if (asbitemIds.Any())
  218. {
  219. entlist = entlist.Where(m => asbitemIds.Contains(m.RegisterCheckAsbitems.FirstOrDefault().AsbitemId));
  220. }
  221. else
  222. {
  223. return new List<RegisterCheckWithAsbitemsDto>();
  224. }
  225. }
  226. #endregion
  227. //排序
  228. entlist = entlist.OrderBy(o => o.RegisterCheckAsbitems.Max(o => o.Asbitem.ItemType.DisplayOrder))
  229. .ThenBy(o => o.RegisterCheckAsbitems.Max(o => o.Asbitem.DisplayOrder));
  230. var entdto = entlist.ToList().Select(s => new RegisterCheckWithAsbitemsDto
  231. {
  232. AsbitemName = string.Join(",", s.RegisterCheckAsbitems.Select(rs => rs.Asbitem.DisplayName).ToList()),
  233. AuditorUserId = s.AuditorUserId,
  234. AuditTime = s.AuditTime,
  235. CheckDate = DataHelper.ConversionDateToString(s.CheckDate),
  236. CheckDoctorId = s.CheckDoctorId,
  237. CheckRequestNo = s.CheckRequestNo,
  238. CompleteFlag = s.CompleteFlag,
  239. Id = s.Id,
  240. IsAudit = s.IsAudit,
  241. IsCharge = s.RegisterCheckAsbitems.Where(m => m.IsCharge == 'Y').Count() > 0 ? 'Y' : 'N',
  242. IsLock = s.IsLock,
  243. CheckTypeFlag = s.RegisterCheckAsbitems.First().Asbitem.ItemType.CheckTypeFlag,
  244. ItemTypeDisplayOrder = s.RegisterCheckAsbitems.First().Asbitem.ItemType.DisplayOrder,
  245. AsbitemDisplayOrder = s.RegisterCheckAsbitems.First().Asbitem.DisplayOrder,
  246. }).ToList();
  247. return entdto;
  248. }
  249. [HttpPost("api/app/registercheck/UpdateCheckResult")]
  250. public async Task UpdateCheckResult(UpdateCheckResultDto input)
  251. {
  252. if (input == null)
  253. {
  254. throw new UserFriendlyException("input参数不能为空");
  255. }
  256. if (input.RegisterCheckItems == null)
  257. {
  258. throw new UserFriendlyException("RegisterCheckItems参数不能为空");
  259. }
  260. if (!input.RegisterCheckItems.Where(o => !string.IsNullOrWhiteSpace(o.Result)).ToList().Any())
  261. {
  262. throw new UserFriendlyException("明细结果不能全部为空");
  263. }
  264. if (input.Summarys == null || !input.Summarys.Any())
  265. {
  266. throw new UserFriendlyException("小结不能为空");
  267. }
  268. var registerCheck = await _registerCheckRepository.GetAsync(input.RegisterCheckId);
  269. var patientRegister = await _patientRegisterRepository.GetAsync(registerCheck.PatientRegisterId);
  270. //修改医生和检查日期
  271. if (string.IsNullOrWhiteSpace(input.CheckDoctorId))
  272. {
  273. input.CheckDoctorId = CurrentUser.Id.ToString();
  274. }
  275. _registerCheckManager.UpdateCheckDoctorAndDateAsync(patientRegister, registerCheck, input.CheckDoctorId, input.CheckDate, input.ExecOrganizationUnitId);
  276. //更新人员登记信息完成标志
  277. patientRegister.CompleteFlag = PatientRegisterCompleteFlag.PartCheck;
  278. await _patientRegisterRepository.UpdateAsync(patientRegister);
  279. await _registerCheckRepository.UpdateAsync(registerCheck);
  280. //修改项目结果
  281. var registerCheckItems = await _registerCheckItemRepository.GetListAsync(o => o.RegisterCheckId == input.RegisterCheckId);
  282. foreach (var registerCheckItem in registerCheckItems)
  283. {
  284. var inputCheckItem = input.RegisterCheckItems.Where(o => o.ItemId == registerCheckItem.ItemId).FirstOrDefault();
  285. if (inputCheckItem == null)
  286. {
  287. continue;
  288. }
  289. var registerCheckItemUpdate = new RegisterCheckItem()
  290. {
  291. Result = inputCheckItem.Result,
  292. CheckDoctorName = inputCheckItem.CheckDoctorName,
  293. CriticalValue = inputCheckItem.CriticalValue,
  294. CheckDate = DateTime.Now
  295. };
  296. await _registerCheckItemManager.UpdateRegisterCheckItemAsync(registerCheckItemUpdate, registerCheckItem);
  297. }
  298. await _registerCheckItemRepository.UpdateManyAsync(registerCheckItems);
  299. //修改小结
  300. var deleteRegisterCheckSummarys = await _registerCheckSummaryRepository.GetListAsync(o => o.RegisterCheckId == input.RegisterCheckId);
  301. await _registerCheckSummaryRepository.DeleteManyAsync(deleteRegisterCheckSummarys);
  302. for (var i = 0; i < input.Summarys.Count; i++)
  303. {
  304. var registerCheckSummary = new RegisterCheckSummary(_guidGenerator.Create())
  305. {
  306. DisplayOrder = i + 1,
  307. RegisterCheckId = input.RegisterCheckId,
  308. Summary = input.Summarys[i].Summary,
  309. SummaryFlag = '0'
  310. };
  311. await _registerCheckSummaryRepository.InsertAsync(registerCheckSummary);
  312. }
  313. //修改建议
  314. var _registerCheckSuggestions = await _registerCheckSuggestionRepository.GetListAsync(o => o.RegisterCheckId == input.RegisterCheckId);
  315. await _registerCheckSuggestionRepository.DeleteManyAsync(_registerCheckSuggestions);
  316. for (var i = 0; i < input.Suggestions.Count; i++)
  317. {
  318. var registerCheckSuggestion = new RegisterCheckSuggestion(_guidGenerator.Create())
  319. {
  320. DisplayOrder = i + 1,
  321. RegisterCheckId = input.RegisterCheckId,
  322. Suggestion = input.Suggestions[i].Suggestion,
  323. };
  324. await _registerCheckSuggestionRepository.InsertAsync(registerCheckSuggestion);
  325. }
  326. }
  327. ///// <summary>
  328. ///// 弃检跟恢复操作 0(为未检), 1(已检), 2(弃检)
  329. ///// </summary>
  330. ///// <param name="RegisterCheckId">检查单ID</param>
  331. ///// <param name="CompleteFlag">检查状态</param>
  332. ///// <returns></returns>
  333. //[HttpPost("api/app/registercheck/updatecomplete")]
  334. //public async Task<RegisterCheckDto> UpdateCompleteAsync(Guid RegisterCheckId, char CompleteFlag)
  335. //{
  336. // var registerCheckEnt = await _registerCheckManager.UpdateCompleteAsync(RegisterCheckId, CompleteFlag);
  337. // return ObjectMapper.Map<RegisterCheck, RegisterCheckDto>(registerCheckEnt);
  338. //}
  339. /// <summary>
  340. /// 批量弃检跟恢复操作 0(为未检), 1(已检), 2(弃检)
  341. /// </summary>
  342. /// <param name="input"></param>
  343. /// <returns></returns>
  344. [HttpPost("api/app/registercheck/updatecompletemany")]
  345. public async Task<List<RegisterCheckDto>> UpdateCompleteManyAsync(List<UpdateCompleteManyDto> input)
  346. {
  347. List<RegisterCheckDto> msg = new List<RegisterCheckDto>();
  348. if (input.Any())
  349. {
  350. foreach (var item in input)
  351. {
  352. var registerCheckEnt = await _registerCheckManager.UpdateCompleteAsync(item.RegisterCheckId, item.CompleteFlag);
  353. var newentity = ObjectMapper.Map<RegisterCheck, RegisterCheckDto>(registerCheckEnt);
  354. if (newentity != null)
  355. {
  356. msg.Add(newentity);
  357. }
  358. }
  359. }
  360. return msg;
  361. }
  362. /// <summary>
  363. /// 更新审核状态 Y 已审核 N 未审核
  364. /// </summary>
  365. /// <param name="RegisterCheckId">检查单ID</param>
  366. /// <param name="IsAudit">审核状态( Y 已审核 N 未审核)</param>
  367. /// <returns></returns>
  368. [HttpPost("api/app/registercheck/updateisaudit")]
  369. public async Task<RegisterCheckDto> UpdateIsAuditAsync(Guid RegisterCheckId, char IsAudit)
  370. {
  371. var registerCheckEnt = await _registerCheckManager.UpdateIsAuditAsync(RegisterCheckId, IsAudit);
  372. return ObjectMapper.Map<RegisterCheck, RegisterCheckDto>(registerCheckEnt);
  373. }
  374. /// <summary>
  375. /// 更改检查医生(自动更新完成状态为已检)
  376. /// </summary>
  377. /// <param name="input"></param>
  378. /// <returns></returns>
  379. [HttpPost("api/app/registercheck/updatecheckdoctor")]
  380. public async Task<RegisterCheckDto> UpdateCheckDoctorAsync(UpdateCheckDoctorDto input)
  381. {
  382. if (input == null || input.RegisterCheckId == Guid.Empty)
  383. {
  384. throw new UserFriendlyException("请求参数有误");
  385. }
  386. var entity = await _registerCheckRepository.GetAsync(m => m.Id == input.RegisterCheckId);
  387. var entitydto = ObjectMapper.Map<UpdateCheckDoctorDto, RegisterCheck>(input);
  388. var newentity = await _registerCheckManager.UpdateCheckDoctorAsync(entitydto, entity);
  389. return ObjectMapper.Map<RegisterCheck, RegisterCheckDto>(newentity);
  390. }
  391. /// <summary>
  392. /// 更改危警值内容
  393. /// </summary>
  394. /// <param name="input"></param>
  395. /// <returns></returns>
  396. [HttpPost("api/app/registercheck/updatecriticalvalue")]
  397. public async Task<RegisterCheckDto> UpdateCriticalValueAsync(UpdateCriticalValueDto input)
  398. {
  399. if (input == null || input.RegisterCheckId == Guid.Empty)
  400. {
  401. throw new UserFriendlyException("请求参数有误");
  402. }
  403. var entity = await _registerCheckRepository.GetAsync(m => m.Id == input.RegisterCheckId);
  404. var entitydto = ObjectMapper.Map<UpdateCriticalValueDto, RegisterCheck>(input);
  405. var newentity = await _registerCheckManager.UpdateCriticalValueAsync(entitydto, entity);
  406. return ObjectMapper.Map<RegisterCheck, RegisterCheckDto>(newentity);
  407. }
  408. /// <summary>
  409. /// 更改审核医生(自动更新审核状态为已审核)
  410. /// </summary>
  411. /// <param name="input"></param>
  412. /// <returns></returns>
  413. [HttpPost("api/app/registercheck/updateauditordoctor")]
  414. public async Task<RegisterCheckDto> UpdateAuditorDoctorAsync(UpdateAuditorDoctorDto input)
  415. {
  416. if (input == null || input.RegisterCheckId == Guid.Empty)
  417. {
  418. throw new UserFriendlyException("请求参数有误");
  419. }
  420. var entity = await _registerCheckRepository.GetAsync(m => m.Id == input.RegisterCheckId);
  421. var entitydto = ObjectMapper.Map<UpdateAuditorDoctorDto, RegisterCheck>(input);
  422. var newentity = await _registerCheckManager.UpdateAuditorDoctorAsync(entitydto, entity);
  423. return ObjectMapper.Map<RegisterCheck, RegisterCheckDto>(newentity);
  424. }
  425. /// <summary>
  426. /// 修改人员登记的组合项目锁定状态 批量
  427. /// </summary>
  428. /// <param name="input"></param>
  429. /// <returns></returns>
  430. /// <exception cref="UserFriendlyException"></exception>
  431. [HttpPost("api/app/registercheck/updateregistercheckislockmany")]
  432. public async Task<List<RegisterCheckDto>> UpdateRegisterCheckIsLockManyAsync(List<UpdateRegisterCheckIsLockDto> input)
  433. {
  434. if (!input.Any())
  435. throw new UserFriendlyException("请求参数有误");
  436. List<RegisterCheck> entlist = new List<RegisterCheck>();
  437. foreach (var item in input)
  438. {
  439. var ent = await _registerCheckRepository.GetAsync(item.RegisterCheckId);
  440. ent.IsLock = item.IsLock;
  441. entlist.Add(ent);
  442. }
  443. await _registerCheckRepository.UpdateManyAsync(entlist);
  444. return ObjectMapper.Map<List<RegisterCheck>, List<RegisterCheckDto>>(entlist);
  445. }
  446. ///// <summary>
  447. ///// 查询检查项目组合项目记录跟检查结果 根据体检登记ID
  448. ///// </summary>
  449. ///// <param name="PatientRegisterId">体检登记ID</param>
  450. ///// <returns></returns>
  451. //public async Task<List<RegisterCheckOrRegisterAsbitemDto>> GetListInPatientRegisterIdAsync(Guid PatientRegisterId)
  452. //{
  453. // var registerCheckList = (await _registerCheckRepository.GetDbSetAsync()).Include(s => s.RegisterAsbitem).Include(s => s.RegisterAsbitem.Asbitem)
  454. // .Where(m => m.RegisterAsbitem.PatientRegisterId == PatientRegisterId).ToList();
  455. // var entListDto = registerCheckList.Select(s => new RegisterCheckOrRegisterAsbitemDto
  456. // {
  457. // AsbitemName = s.RegisterAsbitem.Asbitem.DisplayName,
  458. // CompleteFlag = s.CompleteFlag,
  459. // CreationTime = s.CreationTime,
  460. // CreatorId = s.CreatorId,
  461. // Id = s.Id,
  462. // LastModificationTime = s.LastModificationTime,
  463. // LastModifierId = s.LastModifierId,
  464. // CreatorName = EntityHelper.GetUserNameNoSql(userList, s.CreatorId),
  465. // LastModifierName = EntityHelper.GetUserNameNoSql(userList, s.LastModifierId)
  466. // }).ToList();
  467. // return entListDto;
  468. //}
  469. }
  470. }