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.

5298 lines
265 KiB

3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
4 months ago
3 years ago
2 years ago
3 years ago
5 months ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
4 months ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 months ago
3 months ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
4 months ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 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
4 months ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 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
4 months ago
3 years ago
3 years ago
3 months ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
6 months ago
3 years ago
3 years ago
3 years ago
5 months ago
3 years ago
3 years ago
3 months ago
2 years ago
3 years ago
6 months ago
6 months ago
3 years ago
3 years ago
6 months ago
3 years ago
3 years ago
6 months ago
3 years ago
3 years ago
3 months ago
4 months ago
3 years ago
3 years ago
3 years ago
3 years ago
6 months ago
3 years ago
6 months ago
3 years ago
3 years ago
2 years ago
4 months ago
2 years ago
2 years ago
2 years ago
2 years ago
5 months ago
2 years ago
5 months ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
6 months ago
6 months ago
3 years ago
1 year ago
2 years ago
2 years ago
6 months ago
6 months ago
3 months ago
5 months ago
3 years ago
3 years ago
2 years ago
3 years ago
4 months ago
4 months ago
3 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
3 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
2 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
3 months ago
4 months ago
4 months ago
4 months ago
2 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
5 months ago
5 months ago
5 months ago
2 years ago
5 months ago
2 years ago
5 months 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
5 months ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
4 months ago
2 years ago
3 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
4 months ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 months ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
6 months ago
6 months ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
6 months ago
6 months ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 months ago
3 years ago
3 months ago
1 month ago
1 month ago
3 months ago
3 years ago
2 years ago
2 years ago
4 months ago
4 months ago
2 years ago
5 months ago
1 month ago
6 months ago
5 months ago
5 months ago
4 months ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
5 months ago
4 months ago
5 months ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 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 months ago
3 months ago
2 years ago
3 years ago
3 years ago
2 years ago
5 months 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
3 years ago
2 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
5 months ago
3 years ago
5 months ago
5 months ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
4 months ago
4 months ago
4 months ago
2 years ago
3 years ago
2 years ago
3 years ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
1 month ago
1 month ago
2 years ago
1 month ago
1 month ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 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
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 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
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
1 year ago
3 months 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
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
4 months ago
6 months ago
6 months ago
6 months ago
5 months ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
  1. using Castle.Core.Logging;
  2. using Microsoft.AspNetCore.Authorization;
  3. using Microsoft.AspNetCore.Mvc;
  4. using Microsoft.EntityFrameworkCore;
  5. using Microsoft.EntityFrameworkCore.Metadata.Internal;
  6. using Microsoft.Extensions.Configuration;
  7. using Microsoft.Extensions.Logging;
  8. using NPOI.POIFS.Properties;
  9. using NPOI.SS.Formula.Functions;
  10. using NPOI.Util;
  11. using NUglify.Helpers;
  12. using Org.BouncyCastle.Asn1.Ocsp;
  13. using Shentun.Peis.AppointPatientRegisters;
  14. using Shentun.Peis.CommonCharTypes;
  15. using Shentun.Peis.CustomerOrgRegisters;
  16. using Shentun.Peis.CustomerOrgs;
  17. using Shentun.Peis.Enums;
  18. using Shentun.Peis.LisRequests;
  19. using Shentun.Peis.Models;
  20. using Shentun.Peis.OcCheckTypeDetails;
  21. using Shentun.Peis.PatientOccupationalDiseases;
  22. using Shentun.Peis.PatientPoisons;
  23. using Shentun.Peis.PatientRegisterExters;
  24. using Shentun.Peis.Patients;
  25. using Shentun.Peis.PeisReports;
  26. using Shentun.Peis.PlugIns.Extensions.ImportLisResults.Dian;
  27. using Shentun.Peis.RegisterAsbitems;
  28. using Shentun.Peis.RegisterCheckAsbitems;
  29. using Shentun.Peis.RegisterChecks;
  30. using Shentun.Peis.Rooms;
  31. using Shentun.Peis.SumSuggestionContents;
  32. using Shentun.Peis.SumSuggestionHeaders;
  33. using Shentun.Peis.SumSummaryContents;
  34. using Shentun.Peis.SumSummaryHeaders;
  35. using Shentun.Peis.SumSummaryReports;
  36. using Shentun.Peis.SysParmValues;
  37. using Shentun.Peis.ThirdBookingPushs;
  38. using Shentun.Utilities;
  39. using SqlSugar;
  40. using System;
  41. using System.Collections.Generic;
  42. using System.Diagnostics;
  43. using System.IO;
  44. using System.Linq;
  45. using System.Linq.Dynamic.Core;
  46. using System.Runtime.CompilerServices;
  47. using System.Security;
  48. using System.Security.Cryptography;
  49. using System.Text;
  50. using System.Threading.Tasks;
  51. using System.Transactions;
  52. using Volo.Abp;
  53. using Volo.Abp.Application.Dtos;
  54. using Volo.Abp.Application.Services;
  55. using Volo.Abp.Domain.Entities;
  56. using Volo.Abp.Domain.Repositories;
  57. using Volo.Abp.Guids;
  58. using Volo.Abp.Identity;
  59. using Volo.Abp.ObjectMapping;
  60. using Volo.Abp.Uow;
  61. using Volo.Abp.Users;
  62. using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
  63. namespace Shentun.Peis.PatientRegisters
  64. {
  65. /// <summary>
  66. /// 人员体检登记
  67. /// </summary>
  68. [ApiExplorerSettings(GroupName = "Work")]
  69. [Authorize]
  70. public class PatientRegisterAppService : CrudAppService<
  71. PatientRegister, //The Book entity
  72. PatientRegisterDto, //Used to show books
  73. Guid, //Primary key of the book entity
  74. PagedAndSortedResultRequestDto, //Used for paging/sorting
  75. CreatePatientRegisterDto,
  76. UpdatePatientRegisterDto>
  77. {
  78. private readonly IRepository<PatientRegister, Guid> _repository;
  79. private readonly IRepository<Patient, Guid> _patientRepository;
  80. private readonly IRepository<IdentityUser, Guid> _userRepository;
  81. private readonly IRepository<Sex> _sexRepository;
  82. private readonly IRepository<BirthPlace, Guid> _birthPlaceRepository;
  83. private readonly IRepository<MaritalStatus> _maritalStatusRepository;
  84. private readonly IRepository<Nation> _nationRepository;
  85. private readonly IRepository<CustomerOrgGroup, Guid> _customerOrgGroupRepository;
  86. private readonly IRepository<CustomerOrgGroupDetail> _customerOrgGroupDetailRepository;
  87. private readonly IRepository<CustomerOrg, Guid> _customerOrgRepository;
  88. private readonly IRepository<PersonnelType, Guid> _personnelTypeRepository;
  89. private readonly IRepository<MedicalType, Guid> _medicalTypeRepository;
  90. private readonly IRepository<SexHormoneTerm, Guid> _sexHormoneTermRepository;
  91. private readonly IRepository<PayMode> _payModeRepository;
  92. private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository;
  93. private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
  94. private readonly IRepository<RegisterCheckItem> _registerCheckItemRepository;
  95. private readonly IRepository<RegisterCheckPicture, Guid> _registerCheckPictureRepository;
  96. private readonly IRepository<Item, Guid> _itemRepository;
  97. private readonly IRepository<Asbitem, Guid> _asbitemRepository;
  98. private readonly IPatientRegisterChargeRepository _patientRegisterChargeRepository;
  99. private readonly IRepository<MedicalPackageDetail> _medicalPackageDetailRepository;
  100. private readonly IRepository<SumSummaryHeader, Guid> _sumSummaryHeaderRepository;
  101. private readonly IRepository<SumSummaryContent, Guid> _sumSummaryContentRepository;
  102. private readonly IRepository<SumSuggestionHeader, Guid> _sumSuggestionHeaderRepository;
  103. private readonly IRepository<SumSuggestionContent, Guid> _sumSuggestionContentRepository;
  104. private readonly IRepository<SumDiagnosis> _sumDiagnosisRepository;
  105. private readonly ILogger<PatientRegisterAppService> _logger;
  106. private readonly CustomerOrgManager _customerOrgManager;
  107. private readonly CustomerOrgRegisterManager _customerOrgRegisterManager;
  108. private readonly PatientManager _patientManager;
  109. private readonly PatientRegisterManager _patientRegisterManager;
  110. private readonly RegisterCheckAsbitemManager _registerAsbitemManager;
  111. private readonly SumSummaryHeaderManager _sumSummaryHeaderManager;
  112. private readonly SumSummaryContentManager _sumSummaryContentManager;
  113. private readonly SumSuggestionHeaderManager _sumSuggestionHeaderManager;
  114. private readonly SumSuggestionContentManager _sumSuggestionContentManager;
  115. //private readonly IRepository<CustomerOrg, Guid> _customerOrgRepository;
  116. //private readonly IRepository<PrimarykeyBuilder> _primarykeyBuilderRepository;
  117. //private readonly IRepository<SysParmValue> _sysParmValueRepository;
  118. private readonly PatientRegisterManager _manager;
  119. private readonly CacheService _cacheService;
  120. private readonly SysParmValueManager _sysParmValueManager;
  121. private readonly IRepository<PatientRegisterExter> _patientRegisterExterRepository;
  122. private readonly PatientRegisterExterManager _patientRegisterExterManager;
  123. private readonly IRepository<LisRequest, Guid> _lisRequestRepository;
  124. private readonly IConfiguration _configuration;
  125. private readonly ICurrentUser _currentUser;
  126. private readonly IRepository<UserItemType> _userItemTypeRepository;
  127. private readonly PatientOccupationalDiseaseManager _patientOccupationalDiseaseManager;
  128. private readonly IRepository<ThirdInterface, Guid> _thirdInterfaceRepository;
  129. private readonly IRepository<CustomerOrgRegister, Guid> _customerOrgRegisterRepository;
  130. private readonly IRepository<OcCheckType, Guid> _ocCheckTypeRepository;
  131. private readonly IRepository<Poison, Guid> _poisonRepository;
  132. private readonly IRepository<OcCheckTypeDetail> _ocCheckTypeDetailRepository;
  133. private readonly IRepository<PatientOccupationalDisease, Guid> _patientOccupationalDiseaseRepository;
  134. private readonly IRepository<PatientPoison> _patientPoisonRepository;
  135. private readonly PatientPoisonManager _patientPoisonManager;
  136. private readonly IRepository<Diagnosis> _diagnosisRepository;
  137. private readonly ThirdBookingPushAppService _thirdBookingPushAppService;
  138. private readonly IRepository<ThirdBooking, Guid> _thirdBookingRepository;
  139. private readonly IRepository<Charge, Guid> _chargeRepository;
  140. private readonly IRepository<ChargePay, Guid> _chargePayRepository;
  141. public PatientRegisterAppService(
  142. IRepository<PatientRegister, Guid> repository,
  143. IRepository<Patient, Guid> patientRepository,
  144. IRepository<IdentityUser, Guid> userRepository,
  145. IRepository<Sex> sexRepository,
  146. IRepository<BirthPlace, Guid> birthPlaceRepository,
  147. IRepository<MaritalStatus> maritalStatusRepository,
  148. IRepository<Nation> nationRepository,
  149. IRepository<CustomerOrgGroup, Guid> customerOrgGroupRepository,
  150. IRepository<CustomerOrgGroupDetail> customerOrgGroupDetailRepository,
  151. IRepository<CustomerOrg, Guid> customerOrgRepository,
  152. IRepository<PersonnelType, Guid> personnelTypeRepository,
  153. IRepository<MedicalType, Guid> medicalTypeRepository,
  154. IRepository<SexHormoneTerm, Guid> sexHormoneTermRepository,
  155. IRepository<PayMode> payModeRepository,
  156. IRepository<RegisterCheckAsbitem, Guid> registerAsbitemRepository,
  157. IRepository<RegisterCheck, Guid> registerCheckRepository,
  158. IRepository<RegisterCheckItem> registerCheckItemRepository,
  159. IRepository<RegisterCheckPicture, Guid> registerCheckPictureRepository,
  160. IRepository<Item, Guid> itemRepository,
  161. IRepository<Asbitem, Guid> asbitemRepository,
  162. IRepository<SumSummaryHeader, Guid> sumSummaryHeaderRepository,
  163. IRepository<SumSummaryContent, Guid> sumSummaryContentRepository,
  164. IRepository<SumSuggestionHeader, Guid> sumSuggestionHeaderRepository,
  165. IRepository<SumSuggestionContent, Guid> sumSuggestionContentRepository,
  166. IRepository<SumDiagnosis> sumDiagnosisRepository,
  167. //IRepository<SysParmValue> sysParmValueRepository,
  168. //IRepository<CustomerOrg, Guid> customerOrgRepository,
  169. //IRepository<PrimarykeyBuilder> primarykeyBuilderRepository,
  170. IPatientRegisterChargeRepository patientRegisterChargeRepository,
  171. IRepository<MedicalPackageDetail> medicalPackageDetailRepository,
  172. ILogger<PatientRegisterAppService> logger,
  173. CustomerOrgManager customerOrgManager,
  174. CustomerOrgRegisterManager customerOrgRegisterManager,
  175. PatientManager patientManager,
  176. PatientRegisterManager patientRegisterManager,
  177. RegisterCheckAsbitemManager registerAsbitemManager,
  178. PatientRegisterManager manager,
  179. CacheService cacheService,
  180. SumSummaryHeaderManager sumSummaryHeaderManager,
  181. SumSummaryContentManager sumSummaryContentManager,
  182. SumSuggestionHeaderManager sumSuggestionHeaderManager,
  183. SumSuggestionContentManager sumSuggestionContentManager,
  184. SysParmValueManager sysParmValueManager,
  185. IRepository<PatientRegisterExter> patientRegisterExterRepository,
  186. PatientRegisterExterManager patientRegisterExterManager,
  187. IRepository<LisRequest, Guid> lisRequestRepository,
  188. IConfiguration configuration,
  189. ICurrentUser currentUser,
  190. IRepository<UserItemType> userItemTypeRepository,
  191. PatientOccupationalDiseaseManager patientOccupationalDiseaseManager,
  192. IRepository<ThirdInterface, Guid> thirdInterfaceRepository,
  193. IRepository<CustomerOrgRegister, Guid> customerOrgRegisterRepository,
  194. IRepository<OcCheckType, Guid> ocCheckTypeRepository,
  195. IRepository<Poison, Guid> poisonRepository,
  196. IRepository<OcCheckTypeDetail> ocCheckTypeDetailRepository,
  197. IRepository<PatientOccupationalDisease, Guid> patientOccupationalDiseaseRepository,
  198. IRepository<PatientPoison> patientPoisonRepository,
  199. PatientPoisonManager patientPoisonManager,
  200. IRepository<Diagnosis> diagnosisRepository,
  201. ThirdBookingPushAppService thirdBookingPushAppService,
  202. IRepository<ThirdBooking, Guid> thirdBookingRepository,
  203. IRepository<Charge, Guid> chargeRepository,
  204. IRepository<ChargePay, Guid> chargePayRepository)
  205. : base(repository)
  206. {
  207. this._repository = repository;
  208. this._patientRepository = patientRepository;
  209. this._userRepository = userRepository;
  210. this._sexRepository = sexRepository;
  211. this._birthPlaceRepository = birthPlaceRepository;
  212. this._maritalStatusRepository = maritalStatusRepository;
  213. this._nationRepository = nationRepository;
  214. this._customerOrgGroupRepository = customerOrgGroupRepository;
  215. this._customerOrgGroupDetailRepository = customerOrgGroupDetailRepository;
  216. this._customerOrgRepository = customerOrgRepository;
  217. this._personnelTypeRepository = personnelTypeRepository;
  218. this._medicalTypeRepository = medicalTypeRepository;
  219. this._sexHormoneTermRepository = sexHormoneTermRepository;
  220. this._payModeRepository = payModeRepository;
  221. this._registerCheckAsbitemRepository = registerAsbitemRepository;
  222. this._registerCheckRepository = registerCheckRepository;
  223. this._registerCheckItemRepository = registerCheckItemRepository;
  224. this._registerCheckPictureRepository = registerCheckPictureRepository;
  225. this._itemRepository = itemRepository;
  226. this._patientRegisterChargeRepository = patientRegisterChargeRepository;
  227. this._logger = logger;
  228. this._customerOrgManager = customerOrgManager;
  229. this._customerOrgRegisterManager = customerOrgRegisterManager;
  230. this._patientManager = patientManager;
  231. this._patientRegisterManager = patientRegisterManager;
  232. this._registerAsbitemManager = registerAsbitemManager;
  233. //this._customerOrgRepository = customerOrgRepository;
  234. //this._primarykeyBuilderRepository = primarykeyBuilderRepository;
  235. //this._sysParmValueRepository = sysParmValueRepository;
  236. _sumSummaryHeaderRepository = sumSummaryHeaderRepository;
  237. _sumSummaryContentRepository = sumSummaryContentRepository;
  238. _sumSuggestionHeaderRepository = sumSuggestionHeaderRepository;
  239. _sumSuggestionContentRepository = sumSuggestionContentRepository;
  240. _sumDiagnosisRepository = sumDiagnosisRepository;
  241. _manager = manager;
  242. _cacheService = cacheService;
  243. _medicalPackageDetailRepository = medicalPackageDetailRepository;
  244. _asbitemRepository = asbitemRepository;
  245. _sumSummaryHeaderManager = sumSummaryHeaderManager;
  246. _sumSummaryContentManager = sumSummaryContentManager;
  247. _sumSuggestionHeaderManager = sumSuggestionHeaderManager;
  248. _sumSuggestionContentManager = sumSuggestionContentManager;
  249. _sysParmValueManager = sysParmValueManager;
  250. _patientRegisterExterRepository = patientRegisterExterRepository;
  251. _patientRegisterExterManager = patientRegisterExterManager;
  252. _lisRequestRepository = lisRequestRepository;
  253. _configuration = configuration;
  254. _currentUser = currentUser;
  255. _userItemTypeRepository = userItemTypeRepository;
  256. _patientOccupationalDiseaseManager = patientOccupationalDiseaseManager;
  257. _thirdInterfaceRepository = thirdInterfaceRepository;
  258. _customerOrgRegisterRepository = customerOrgRegisterRepository;
  259. _ocCheckTypeRepository = ocCheckTypeRepository;
  260. _poisonRepository = poisonRepository;
  261. _ocCheckTypeDetailRepository = ocCheckTypeDetailRepository;
  262. _patientOccupationalDiseaseRepository = patientOccupationalDiseaseRepository;
  263. _patientPoisonRepository = patientPoisonRepository;
  264. _patientPoisonManager = patientPoisonManager;
  265. _diagnosisRepository = diagnosisRepository;
  266. _thirdBookingPushAppService = thirdBookingPushAppService;
  267. _thirdBookingRepository = thirdBookingRepository;
  268. _chargeRepository = chargeRepository;
  269. _chargePayRepository = chargePayRepository;
  270. }
  271. /// <summary>
  272. /// 获取通过主键
  273. /// </summary>
  274. /// <param name="id"></param>
  275. /// <returns></returns>
  276. public override async Task<PatientRegisterDto> GetAsync(Guid id)
  277. {
  278. return await base.GetAsync(id);
  279. }
  280. /// <summary>
  281. /// 根据lis申请单号 获取人员条码号
  282. /// </summary>
  283. /// <param name="input"></param>
  284. /// <returns></returns>
  285. /// <exception cref="UserFriendlyException"></exception>
  286. [HttpPost("api/app/PatientRegister/GetPatientRegisterNoByLisRequestNo")]
  287. public async Task<PatientRegisterSimpleDto> GetPatientRegisterNoByLisRequestNoAsync(LisRequestNoInputDto input)
  288. {
  289. if (input == null)
  290. {
  291. throw new UserFriendlyException("请求参数有误");
  292. }
  293. //0-每个条码打印lis_request_no(即现在使用的模式),1-每个条码打印patient_register_no
  294. var lisRequestNoPrintMode = await _sysParmValueManager.GetSysParmValueAsync(Guid.Empty, "lis_request_no_print_mode");
  295. if (string.IsNullOrWhiteSpace(lisRequestNoPrintMode))
  296. lisRequestNoPrintMode = "0";
  297. if (lisRequestNoPrintMode == "1")
  298. {
  299. return new PatientRegisterSimpleDto
  300. {
  301. PatientRegisterNo = input.LisRequestNo
  302. };
  303. }
  304. var patientRegisterNo = (from lisRequest in await _lisRequestRepository.GetQueryableAsync()
  305. join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on lisRequest.Id equals registerCheckAsbitem.LisRequestId
  306. join registerCheck in await _registerCheckRepository.GetQueryableAsync() on registerCheckAsbitem.RegisterCheckId equals registerCheck.Id
  307. join patientRegister in await Repository.GetQueryableAsync() on registerCheck.PatientRegisterId equals patientRegister.Id
  308. where lisRequest.LisRequestNo == input.LisRequestNo
  309. select patientRegister.PatientRegisterNo).FirstOrDefault();
  310. if (!string.IsNullOrEmpty(patientRegisterNo))
  311. {
  312. return new PatientRegisterSimpleDto
  313. {
  314. PatientRegisterNo = patientRegisterNo
  315. };
  316. }
  317. else
  318. {
  319. throw new UserFriendlyException("Lis申请单有误");
  320. }
  321. }
  322. /// <summary>
  323. /// 根据检查单号 获取人员条码号
  324. /// </summary>
  325. /// <param name="input"></param>
  326. /// <returns></returns>
  327. /// <exception cref="UserFriendlyException"></exception>
  328. [HttpPost("api/app/PatientRegister/GetPatientRegisterNoByCheckRequestNo")]
  329. public async Task<PatientRegisterSimpleDto> GetPatientRegisterNoByCheckRequestNoAsync(CheckRequestNoInputDto input)
  330. {
  331. if (input == null)
  332. {
  333. throw new UserFriendlyException("请求参数有误");
  334. }
  335. var patientRegisterNo = (from registerCheck in await _registerCheckRepository.GetQueryableAsync()
  336. join patientRegister in await Repository.GetQueryableAsync() on registerCheck.PatientRegisterId equals patientRegister.Id
  337. where registerCheck.CheckRequestNo == input.CheckRequestNo
  338. select patientRegister.PatientRegisterNo).FirstOrDefault();
  339. if (!string.IsNullOrEmpty(patientRegisterNo))
  340. {
  341. return new PatientRegisterSimpleDto
  342. {
  343. PatientRegisterNo = patientRegisterNo
  344. };
  345. }
  346. else
  347. {
  348. throw new UserFriendlyException("检查单有误");
  349. }
  350. }
  351. /// <summary>
  352. /// 编辑反写接口,包含档案表跟登记表的信息
  353. /// </summary>
  354. /// <param name="input"></param>
  355. /// <returns></returns>
  356. [HttpPost("api/app/patientregister/getinfoorpatient")]
  357. public async Task<PatientRegisterOrNoDto> GetInfoOrPatientAsync(PatientRegisterIdInputDto input)
  358. {
  359. return await GetPatientRegisterOrNo(input.PatientRegisterId);
  360. //var ent = (await _repository.GetQueryableAsync()).Include(x => x.Patient).Where(m => m.Id == input.PatientRegisterId).FirstOrDefault();
  361. //var entdto = new PatientRegisterOrNoDto();
  362. //if (ent != null)
  363. //{
  364. // //var userList = await _userRepository.GetListAsync();
  365. // //var customerOrgList = await _customerOrgRepository.GetListAsync();
  366. // entdto = new PatientRegisterOrNoDto
  367. // {
  368. // HisPatientId = ent.HisPatientId,
  369. // Age = ent.Age,
  370. // AuditDate = DataHelper.ConversionDateToString(ent.AuditDate),
  371. // Id = ent.Id,
  372. // AuditDoctorId = ent.AuditDoctorId,
  373. // BirthDate = DataHelper.ConversionDateToString(ent.BirthDate),
  374. // CompleteFlag = ent.CompleteFlag,
  375. // CreationTime = ent.CreationTime,
  376. // CreatorId = ent.CreatorId,
  377. // CustomerOrgGroupId = ent.CustomerOrgGroupId,
  378. // CustomerOrgId = ent.CustomerOrgId,
  379. // CustomerOrgRegisterId = ent.CustomerOrgRegisterId,
  380. // GuidePrintTimes = ent.GuidePrintTimes,
  381. // InterposeMeasure = ent.InterposeMeasure,
  382. // IsAudit = ent.IsAudit,
  383. // IsLock = ent.IsLock,
  384. // IsMedicalStart = ent.IsMedicalStart,
  385. // IsNameHide = ent.IsNameHide,
  386. // IsPhoneFollow = ent.IsPhoneFollow,
  387. // IsRecoverGuide = ent.IsRecoverGuide,
  388. // IsUpload = ent.IsUpload,
  389. // IsVip = ent.IsVip,
  390. // JobCardNo = ent.JobCardNo,
  391. // JobPost = ent.JobPost,
  392. // JobTitle = ent.JobTitle,
  393. // LastModificationTime = ent.LastModificationTime,
  394. // LastModifierId = ent.LastModifierId,
  395. // MaritalStatusId = ent.MaritalStatusId,
  396. // MedicalCardNo = ent.MedicalCardNo,
  397. // MedicalConclusionId = ent.MedicalConclusionId,
  398. // MedicalPackageId = ent.MedicalPackageId,
  399. // MedicalStartDate = DataHelper.ConversionDateToString(ent.MedicalStartDate),
  400. // MedicalTimes = ent.MedicalTimes,
  401. // MedicalTypeId = ent.MedicalTypeId,
  402. // MedicalCenterId = ent.MedicalCenterId,
  403. // PatientId = ent.PatientId,
  404. // PatientName = ent.PatientName,
  405. // PatientRegisterNo = ent.PatientRegisterNo,
  406. // PersonnelTypeId = ent.PersonnelTypeId,
  407. // Photo = ent.Photo,
  408. // Remark = ent.Remark,
  409. // ReportPrintTimes = ent.ReportPrintTimes,
  410. // Salesman = ent.Salesman,
  411. // SexHormoneTermId = ent.SexHormoneTermId,
  412. // SexId = ent.SexId,
  413. // SummaryDate = DataHelper.ConversionDateToString(ent.SummaryDate),
  414. // SummaryDoctorId = ent.SummaryDoctorId,
  415. // ThirdInfo = ent.ThirdInfo,
  416. // CreatorName = _cacheService.GetSurnameAsync(ent.CreatorId).Result,
  417. // LastModifierName = _cacheService.GetSurnameAsync(ent.LastModifierId).Result,
  418. // Address = ent.Patient.Address, //档案表信息
  419. // BirthPlaceId = ent.Patient.BirthPlaceId,
  420. // DisplayName = ent.Patient.DisplayName,
  421. // Email = ent.Patient.Email,
  422. // IdNo = ent.Patient.IdNo,
  423. // MobileTelephone = ent.Patient.MobileTelephone,
  424. // NationId = ent.Patient.NationId,
  425. // PatientNo = ent.Patient.PatientNo,
  426. // PatientPassword = ent.Patient.PatientPassword,
  427. // PostalCode = ent.Patient.PostalCode,
  428. // Telephone = ent.Patient.Telephone,
  429. // CustomerOrgName = _cacheService.GetCustomerOrgNameAsync(ent.CustomerOrgId).Result,
  430. // CustomerOrgParentId = _cacheService.GetTopCustomerOrgAsync(ent.CustomerOrgId).Result.Id
  431. // //CustomerOrgParentName = EntityHelper.GetCustomerOrgParentNameNoSql(customerOrgList, ent.CustomerOrgId)
  432. // };
  433. //}
  434. //return entdto;
  435. }
  436. /// <summary>
  437. /// 获取是否总检过
  438. /// </summary>
  439. /// <param name="input"></param>
  440. /// <returns></returns>
  441. [HttpPost("api/app/patientregister/GetHaveSumData")]
  442. public async Task<string> GetHaveSumData(PatientRegisterIdInputDto input)
  443. {
  444. var sumSummaryHeader = await _sumSummaryHeaderRepository.GetListAsync(o => o.PatientRegisterId == input.PatientRegisterId);
  445. if (sumSummaryHeader.Any())
  446. {
  447. return "Y";
  448. }
  449. var sumSuggestionHeader = await _sumSuggestionHeaderRepository.GetListAsync(o => o.PatientRegisterId == input.PatientRegisterId);
  450. if (sumSuggestionHeader.Any())
  451. {
  452. return "Y";
  453. }
  454. return "N";
  455. }
  456. /// <summary>
  457. /// 获取列表 人员体检
  458. /// </summary>
  459. /// <param name="input"></param>
  460. /// <returns></returns>
  461. [RemoteService(false)]
  462. public override async Task<PagedResultDto<PatientRegisterDto>> GetListAsync(PagedAndSortedResultRequestDto input)
  463. {
  464. return await base.GetListAsync(input);
  465. }
  466. ///// <summary>
  467. ///// 获取档案登记列表 带联合搜索条件
  468. ///// </summary>
  469. ///// <param name="input"></param>
  470. ///// <returns></returns>
  471. //[HttpPost("api/app/patientregister/getlistinfilter")]
  472. //public async Task<PagedResultDto<PatientRegisterOrNoDto>> GetListInFilterAsync(GetListInSearchDto input)
  473. //{
  474. // //var customerOrgList = await _customerOrgRepository.GetListAsync();
  475. // #region MyRegion
  476. // var entlist = from patientRegister in (await _repository.GetQueryableAsync()).Include(x => x.Patient).AsQueryable()
  477. // join patientRegisterExter in await _patientRegisterExterRepository.GetQueryableAsync()
  478. // on patientRegister.Id equals patientRegisterExter.PatientRegisterId into patientRegisterExterTemp
  479. // from patientRegisterExterHaveEmpty in patientRegisterExterTemp.DefaultIfEmpty()
  480. // select new
  481. // {
  482. // patientRegister,
  483. // patientRegisterExterHaveEmpty
  484. // };
  485. // if (!string.IsNullOrEmpty(input.PatientNo))
  486. // entlist = entlist.Where(m => m.patientRegister.Patient.PatientNo == input.PatientNo);
  487. // if (!string.IsNullOrEmpty(input.IdNo))
  488. // entlist = entlist.Where(m => m.patientRegister.Patient.IdNo == input.IdNo);
  489. // if (!string.IsNullOrEmpty(input.PatientName))
  490. // entlist = entlist.Where(m => !string.IsNullOrEmpty(m.patientRegister.PatientName) && m.patientRegister.PatientName.Contains(input.PatientName));
  491. // if (!string.IsNullOrEmpty(input.PatientRegisterNo))
  492. // entlist = entlist.Where(m => m.patientRegister.PatientRegisterNo == input.PatientRegisterNo);
  493. // if (!string.IsNullOrEmpty(input.Phone))
  494. // entlist = entlist.Where(m => m.patientRegister.Patient.MobileTelephone == input.Phone || m.patientRegister.Patient.Telephone == input.Phone);
  495. // if (input.SexId != null && input.SexId != ForSexFlag.All)
  496. // entlist = entlist.Where(m => m.patientRegister.SexId == input.SexId);
  497. // if (!string.IsNullOrEmpty(input.StartDate) && !string.IsNullOrEmpty(input.EndDate))
  498. // {
  499. // if (input.DateType == '1')
  500. // {
  501. // entlist = entlist.Where(m => m.patientRegister.CreationTime >= Convert.ToDateTime(input.StartDate) &&
  502. // m.patientRegister.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1));
  503. // }
  504. // else if (input.DateType == '2')
  505. // {
  506. // entlist = entlist.Where(m => m.patientRegister.MedicalStartDate >= Convert.ToDateTime(input.StartDate) &&
  507. // m.patientRegister.MedicalStartDate < Convert.ToDateTime(input.EndDate).AddDays(1));
  508. // }
  509. // else
  510. // {
  511. // entlist = entlist.Where(m => (m.patientRegister.CreationTime >= Convert.ToDateTime(input.StartDate) &&
  512. // m.patientRegister.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1))
  513. // || (m.patientRegister.MedicalStartDate >= Convert.ToDateTime(input.StartDate) &&
  514. // m.patientRegister.MedicalStartDate < Convert.ToDateTime(input.EndDate).AddDays(1))
  515. // );
  516. // }
  517. // }
  518. // if (input.CompleteFlags.Any())
  519. // {
  520. // entlist = entlist.Where(m => input.CompleteFlags.Contains(m.patientRegister.CompleteFlag));
  521. // }
  522. // if (input.MedicalTypeIds.Any())
  523. // {
  524. // entlist = entlist.Where(m => input.MedicalTypeIds.Contains(m.patientRegister.MedicalTypeId));
  525. // }
  526. // if (input.CustomerOrgId != null)
  527. // {
  528. // var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(input.CustomerOrgId.Value);
  529. // entlist = entlist.Where(m => CustomerOrgIds.Contains(m.patientRegister.CustomerOrgId));
  530. // }
  531. // if (input.CustomerOrgRegisterId != null && input.CustomerOrgRegisterId != Guid.Empty)
  532. // {
  533. // entlist = entlist.Where(m => m.patientRegister.CustomerOrgRegisterId == input.CustomerOrgRegisterId);
  534. // }
  535. // if (input.CustomerOrgGroupIds.Any())
  536. // {
  537. // entlist = entlist.Where(m => m.patientRegister.CustomerOrgGroupId != null && input.CustomerOrgGroupIds.Contains(m.patientRegister.CustomerOrgGroupId.Value));
  538. // }
  539. // #endregion
  540. // int totalCount = entlist.Count();
  541. // entlist = entlist.OrderByDescending(o => o.patientRegister.CompleteFlag).ThenBy(o => o.patientRegister.Id).Skip(input.SkipCount * input.MaxResultCount).Take(input.MaxResultCount);
  542. // var ggg = entlist.Select(s => s.patientRegister.CustomerOrgId).ToList();
  543. // var entdto = entlist.Select(s => new PatientRegisterOrNoDto
  544. // {
  545. // CreationTime = s.patientRegister.CreationTime,
  546. // CreatorId = s.patientRegister.CreatorId,
  547. // Id = s.patientRegister.Id,
  548. // LastModificationTime = s.patientRegister.LastModificationTime,
  549. // LastModifierId = s.patientRegister.LastModifierId,
  550. // ThirdInfo = s.patientRegister.ThirdInfo,
  551. // SummaryDoctorId = s.patientRegister.SummaryDoctorId,
  552. // SummaryDate = DataHelper.ConversionDateToString(s.patientRegister.SummaryDate),
  553. // SexId = s.patientRegister.SexId,
  554. // Age = s.patientRegister.Age,
  555. // AuditDate = DataHelper.ConversionDateToString(s.patientRegister.AuditDate),
  556. // AuditDoctorId = s.patientRegister.AuditDoctorId,
  557. // BirthDate = DataHelper.ConversionDateToString(s.patientRegister.BirthDate),
  558. // CompleteFlag = s.patientRegister.CompleteFlag,
  559. // CustomerOrgGroupId = s.patientRegister.CustomerOrgGroupId,
  560. // CustomerOrgId = s.patientRegister.CustomerOrgId,
  561. // CustomerOrgRegisterId = s.patientRegister.CustomerOrgRegisterId,
  562. // GuidePrintTimes = s.patientRegister.GuidePrintTimes,
  563. // InterposeMeasure = s.patientRegister.InterposeMeasure,
  564. // IsAudit = s.patientRegister.IsAudit,
  565. // IsLock = s.patientRegister.IsLock,
  566. // IsMedicalStart = s.patientRegister.IsMedicalStart,
  567. // IsNameHide = s.patientRegister.IsNameHide,
  568. // IsPhoneFollow = s.patientRegister.IsPhoneFollow,
  569. // IsRecoverGuide = s.patientRegister.IsRecoverGuide,
  570. // IsUpload = s.patientRegister.IsUpload,
  571. // IsVip = s.patientRegister.IsVip,
  572. // JobCardNo = s.patientRegister.JobCardNo,
  573. // JobPost = s.patientRegister.JobPost,
  574. // JobTitle = s.patientRegister.JobTitle,
  575. // MaritalStatusId = s.patientRegister.MaritalStatusId,
  576. // MedicalCardNo = s.patientRegister.MedicalCardNo,
  577. // MedicalConclusionId = s.patientRegister.MedicalConclusionId,
  578. // MedicalPackageId = s.patientRegister.MedicalPackageId,
  579. // MedicalStartDate = DataHelper.ConversionDateToString(s.patientRegister.MedicalStartDate),
  580. // MedicalTimes = s.patientRegister.MedicalTimes,
  581. // MedicalTypeId = s.patientRegister.MedicalTypeId,
  582. // MedicalCenterId = s.patientRegister.MedicalCenterId,
  583. // PatientId = s.patientRegister.PatientId,
  584. // PatientName = s.patientRegister.PatientName,
  585. // PatientRegisterNo = s.patientRegister.PatientRegisterNo,
  586. // PersonnelTypeId = s.patientRegister.PersonnelTypeId,
  587. // Photo = s.patientRegister.Photo,
  588. // Remark = s.patientRegister.Remark,
  589. // ReportPrintTimes = s.patientRegister.ReportPrintTimes,
  590. // Salesman = s.patientRegister.Salesman,
  591. // SexHormoneTermId = s.patientRegister.SexHormoneTermId,
  592. // CreatorName = _cacheService.GetSurnameAsync(s.patientRegister.CreatorId).GetAwaiter().GetResult(),
  593. // LastModifierName = _cacheService.GetSurnameAsync(s.patientRegister.LastModifierId).GetAwaiter().GetResult(),
  594. // Address = s.patientRegister.Patient.Address, //档案表信息
  595. // BirthPlaceId = s.patientRegister.Patient.BirthPlaceId,
  596. // DisplayName = s.patientRegister.Patient.DisplayName,
  597. // Email = s.patientRegister.Patient.Email,
  598. // IdNo = s.patientRegister.Patient.IdNo,
  599. // MobileTelephone = s.patientRegister.Patient.MobileTelephone,
  600. // NationId = s.patientRegister.Patient.NationId,
  601. // PatientNo = s.patientRegister.Patient.PatientNo,
  602. // PatientPassword = s.patientRegister.Patient.PatientPassword,
  603. // PostalCode = s.patientRegister.Patient.PostalCode,
  604. // Telephone = s.patientRegister.Patient.Telephone,
  605. // Planuserid = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.Planuserid : "",
  606. // QztlIsCw = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.QztlIsCw : null,
  607. // QztlIsCy = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.QztlIsCy : null,
  608. // QztlIsFj = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.QztlIsFj : null,
  609. // QztlIsGt = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.QztlIsGt : null,
  610. // QztlIsMain = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.QztlIsMain : null,
  611. // QztlIsWh = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.QztlIsWh : null,
  612. // QztlType = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.QztlType : null,
  613. // IsQztlImport = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.IsQztlImport : null,
  614. // Remark2 = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.Remark2 : null,
  615. // Remark3 = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.Remark3 : null,
  616. // Remark4 = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.Remark4 : null,
  617. // UploadQztlFlag = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.UploadQztlFlag : null,
  618. // //CustomerOrgName = EntityHelper.GetCustomerOrgNameNoSql(customerOrgList, s.patientRegister.CustomerOrgId),
  619. // //CustomerOrgParentId = EntityHelper.GetParentNoSql(customerOrgList, s.patientRegister.CustomerOrgId),
  620. // //CustomerOrgParentName = EntityHelper.GetCustomerOrgParentNameNoSql(customerOrgList, s.patientRegister.CustomerOrgId)
  621. // CustomerOrgName = _cacheService.GetCustomerOrgNameAsync(s.patientRegister.CustomerOrgId).GetAwaiter().GetResult(),
  622. // CustomerOrgParentId = _cacheService.GetTopCustomerOrgAsync(s.patientRegister.CustomerOrgId).GetAwaiter().GetResult().Id,
  623. // CustomerOrgParentName = _cacheService.GetTopCustomerOrgNameAsync(s.patientRegister.CustomerOrgId).GetAwaiter().GetResult()
  624. // }).ToList();
  625. // return new PagedResultDto<PatientRegisterOrNoDto>(totalCount, entdto);
  626. //}
  627. /// <summary>
  628. /// 获取档案登记列表 带联合搜索条件
  629. /// </summary>
  630. /// <param name="input"></param>
  631. /// <returns></returns>
  632. [HttpPost("api/app/PatientRegister/GetListInFilter")]
  633. public async Task<PagedResultDto<PatientRegisterOrNoDto>> GetListInFilterAsync(GetListInSearchDto input)
  634. {
  635. string patientRegisterQueryName = await _sysParmValueManager.GetSysParmValueAsync(Guid.Empty, "patient_register_query_name");
  636. #region MyRegion
  637. var entlist = from patientRegister in await _repository.GetQueryableAsync()
  638. join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id
  639. join patientRegisterExter in await _patientRegisterExterRepository.GetQueryableAsync()
  640. on patientRegister.Id equals patientRegisterExter.PatientRegisterId into patientRegisterExterTemp
  641. from patientRegisterExterHaveEmpty in patientRegisterExterTemp.DefaultIfEmpty()
  642. select new
  643. {
  644. patientRegister,
  645. patient,
  646. patientRegisterExterHaveEmpty
  647. };
  648. if (!string.IsNullOrEmpty(input.PatientNo))
  649. entlist = entlist.Where(m => m.patient.PatientNo == input.PatientNo);
  650. if (!string.IsNullOrEmpty(input.IdNo))
  651. entlist = entlist.Where(m => m.patient.IdNo == input.IdNo);
  652. if (!string.IsNullOrEmpty(input.PatientName))
  653. {
  654. if (patientRegisterQueryName == "Y")
  655. {
  656. entlist = entlist.Where(m => m.patientRegister.PatientName == input.PatientName);
  657. }
  658. else
  659. {
  660. entlist = entlist.Where(m => !string.IsNullOrWhiteSpace(input.PatientName) && m.patientRegister.PatientName.Contains(input.PatientName));
  661. }
  662. }
  663. //if (!string.IsNullOrEmpty(input.PatientName))
  664. // entlist = entlist.Where(m => !string.IsNullOrEmpty(m.patientRegister.PatientName) && m.patientRegister.PatientName.Contains(input.PatientName));
  665. if (!string.IsNullOrEmpty(input.PatientRegisterNo))
  666. entlist = entlist.Where(m => m.patientRegister.PatientRegisterNo == input.PatientRegisterNo);
  667. if (!string.IsNullOrEmpty(input.Phone))
  668. entlist = entlist.Where(m => m.patient.MobileTelephone == input.Phone || m.patient.Telephone == input.Phone);
  669. if (input.SexId != null)
  670. entlist = entlist.Where(m => m.patientRegister.SexId == input.SexId);
  671. if (!string.IsNullOrEmpty(input.StartDate) && !string.IsNullOrEmpty(input.EndDate))
  672. {
  673. if (input.DateType == '1')
  674. {
  675. entlist = entlist.Where(m => m.patientRegister.CreationTime >= Convert.ToDateTime(input.StartDate) &&
  676. m.patientRegister.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1));
  677. }
  678. else if (input.DateType == '2')
  679. {
  680. entlist = entlist.Where(m => m.patientRegister.MedicalStartDate >= Convert.ToDateTime(input.StartDate) &&
  681. m.patientRegister.MedicalStartDate < Convert.ToDateTime(input.EndDate).AddDays(1));
  682. }
  683. else
  684. {
  685. entlist = entlist.Where(m => (m.patientRegister.CreationTime >= Convert.ToDateTime(input.StartDate) &&
  686. m.patientRegister.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1))
  687. || (m.patientRegister.MedicalStartDate >= Convert.ToDateTime(input.StartDate) &&
  688. m.patientRegister.MedicalStartDate < Convert.ToDateTime(input.EndDate).AddDays(1))
  689. );
  690. }
  691. }
  692. if (input.CompleteFlags.Any())
  693. {
  694. entlist = entlist.Where(m => input.CompleteFlags.Contains(m.patientRegister.CompleteFlag));
  695. }
  696. if (input.MedicalTypeIds.Any())
  697. {
  698. entlist = entlist.Where(m => m.patientRegister.MedicalTypeId != null && input.MedicalTypeIds.Contains(m.patientRegister.MedicalTypeId.Value));
  699. }
  700. if (input.PersonnelTypeIds.Any())
  701. {
  702. entlist = entlist.Where(m => m.patientRegister.PersonnelTypeId != null && input.PersonnelTypeIds.Contains(m.patientRegister.PersonnelTypeId.Value));
  703. }
  704. if (input.IsRecoverGuide != null)
  705. entlist = entlist.Where(m => m.patientRegister.IsRecoverGuide == input.IsRecoverGuide);
  706. if (input.CustomerOrgId != null)
  707. {
  708. var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(input.CustomerOrgId.Value);
  709. entlist = entlist.Where(m => CustomerOrgIds.Contains(m.patientRegister.CustomerOrgId));
  710. }
  711. if (input.CustomerOrgRegisterId != null && input.CustomerOrgRegisterId != Guid.Empty)
  712. {
  713. entlist = entlist.Where(m => m.patientRegister.CustomerOrgRegisterId == input.CustomerOrgRegisterId);
  714. }
  715. if (input.CustomerOrgGroupIds.Any())
  716. {
  717. entlist = entlist.Where(m => m.patientRegister.CustomerOrgGroupId != null && input.CustomerOrgGroupIds.Contains(m.patientRegister.CustomerOrgGroupId.Value));
  718. }
  719. #endregion
  720. int totalCount = entlist.Count();
  721. entlist = entlist.OrderByDescending(o => o.patientRegister.CompleteFlag).ThenBy(o => o.patientRegister.Id).Skip(input.SkipCount * input.MaxResultCount).Take(input.MaxResultCount);
  722. var entdto = entlist.ToList().Select(s => new PatientRegisterOrNoDto
  723. {
  724. CreationTime = s.patientRegister.CreationTime,
  725. CreatorId = s.patientRegister.CreatorId,
  726. Id = s.patientRegister.Id,
  727. LastModificationTime = s.patientRegister.LastModificationTime,
  728. LastModifierId = s.patientRegister.LastModifierId,
  729. ThirdInfo = s.patientRegister.ThirdInfo,
  730. SummaryDoctorId = s.patientRegister.SummaryDoctorId,
  731. SummaryDate = DataHelper.ConversionDateToString(s.patientRegister.SummaryDate),
  732. SexId = s.patientRegister.SexId,
  733. Age = s.patientRegister.Age,
  734. AuditDate = DataHelper.ConversionDateToString(s.patientRegister.AuditDate),
  735. AuditDoctorId = s.patientRegister.AuditDoctorId,
  736. BirthDate = DataHelper.ConversionDateToString(s.patientRegister.BirthDate),
  737. CompleteFlag = s.patientRegister.CompleteFlag,
  738. CustomerOrgGroupId = s.patientRegister.CustomerOrgGroupId,
  739. CustomerOrgId = s.patientRegister.CustomerOrgId,
  740. CustomerOrgRegisterId = s.patientRegister.CustomerOrgRegisterId,
  741. GuidePrintTimes = s.patientRegister.GuidePrintTimes,
  742. InterposeMeasure = s.patientRegister.InterposeMeasure,
  743. IsAudit = s.patientRegister.IsAudit,
  744. IsLock = s.patientRegister.IsLock,
  745. IsMedicalStart = s.patientRegister.IsMedicalStart,
  746. IsNameHide = s.patientRegister.IsNameHide,
  747. IsPhoneFollow = s.patientRegister.IsPhoneFollow,
  748. IsRecoverGuide = s.patientRegister.IsRecoverGuide,
  749. IsUpload = s.patientRegister.IsUpload,
  750. IsVip = s.patientRegister.IsVip,
  751. JobCardNo = s.patientRegister.JobCardNo,
  752. JobPost = s.patientRegister.JobPost,
  753. JobTitle = s.patientRegister.JobTitle,
  754. MaritalStatusId = s.patientRegister.MaritalStatusId,
  755. MedicalCardNo = s.patientRegister.MedicalCardNo,
  756. MedicalConclusionId = s.patientRegister.MedicalConclusionId,
  757. MedicalPackageId = s.patientRegister.MedicalPackageId,
  758. MedicalStartDate = DataHelper.ConversionDateToString(s.patientRegister.MedicalStartDate),
  759. MedicalTimes = s.patientRegister.MedicalTimes,
  760. MedicalTypeId = s.patientRegister.MedicalTypeId,
  761. MedicalCenterId = s.patientRegister.MedicalCenterId,
  762. PatientId = s.patientRegister.PatientId,
  763. PatientName = s.patientRegister.PatientName,
  764. PatientRegisterNo = s.patientRegister.PatientRegisterNo,
  765. PersonnelTypeId = s.patientRegister.PersonnelTypeId,
  766. Photo = s.patientRegister.Photo,
  767. Remark = s.patientRegister.Remark,
  768. ReportPrintTimes = s.patientRegister.ReportPrintTimes,
  769. Salesman = s.patientRegister.Salesman,
  770. SexHormoneTermId = s.patientRegister.SexHormoneTermId,
  771. CreatorName = _cacheService.GetSurnameAsync(s.patientRegister.CreatorId).GetAwaiter().GetResult(),
  772. LastModifierName = _cacheService.GetSurnameAsync(s.patientRegister.LastModifierId).GetAwaiter().GetResult(),
  773. Address = s.patientRegister.Patient.Address, //档案表信息
  774. BirthPlaceId = s.patientRegister.Patient.BirthPlaceId,
  775. DisplayName = s.patientRegister.Patient.DisplayName,
  776. Email = s.patientRegister.Patient.Email,
  777. IdNo = s.patientRegister.Patient.IdNo,
  778. MobileTelephone = s.patientRegister.Patient.MobileTelephone,
  779. NationId = s.patientRegister.Patient.NationId,
  780. PatientNo = s.patientRegister.Patient.PatientNo,
  781. PatientPassword = s.patientRegister.Patient.PatientPassword,
  782. PostalCode = s.patientRegister.Patient.PostalCode,
  783. Telephone = s.patientRegister.Patient.Telephone,
  784. Planuserid = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.Planuserid : "",
  785. QztlIsCw = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.QztlIsCw : null,
  786. QztlIsCy = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.QztlIsCy : null,
  787. QztlIsFj = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.QztlIsFj : null,
  788. QztlIsGt = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.QztlIsGt : null,
  789. QztlIsMain = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.QztlIsMain : null,
  790. QztlIsWh = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.QztlIsWh : null,
  791. QztlType = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.QztlType : null,
  792. IsQztlImport = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.IsQztlImport : null,
  793. Remark2 = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.Remark2 : null,
  794. Remark3 = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.Remark3 : null,
  795. Remark4 = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.Remark4 : null,
  796. UploadQztlFlag = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.UploadQztlFlag : null,
  797. //CustomerOrgName = EntityHelper.GetCustomerOrgNameNoSql(customerOrgList, s.patientRegister.CustomerOrgId),
  798. //CustomerOrgParentId = EntityHelper.GetParentNoSql(customerOrgList, s.patientRegister.CustomerOrgId),
  799. //CustomerOrgParentName = EntityHelper.GetCustomerOrgParentNameNoSql(customerOrgList, s.patientRegister.CustomerOrgId)
  800. CustomerOrgName = _cacheService.GetCustomerOrgNameAsync(s.patientRegister.CustomerOrgId).GetAwaiter().GetResult(),
  801. CustomerOrgParentId = _cacheService.GetTopCustomerOrgAsync(s.patientRegister.CustomerOrgId).GetAwaiter().GetResult().Id,
  802. CustomerOrgParentName = _cacheService.GetTopCustomerOrgNameAsync(s.patientRegister.CustomerOrgId).GetAwaiter().GetResult(),
  803. MedicalPackageName = s.patientRegister.MedicalPackageId == null ? "" : _cacheService.GetMedicalPackageAsync(s.patientRegister.MedicalPackageId.Value).GetAwaiter().GetResult().DisplayName,
  804. CustomerOrgGroupName = s.patientRegister.CustomerOrgGroupId == null ? "" : _cacheService.GetCustomerOrgGroupAsync(s.patientRegister.CustomerOrgGroupId.Value).GetAwaiter().GetResult().DisplayName,
  805. NationName = _cacheService.GetNationNameAsync(s.patient.NationId).GetAwaiter().GetResult(),
  806. PersonnelTypeName = _cacheService.GetPersonnelTypeNameAsync(s.patientRegister.PersonnelTypeId).GetAwaiter().GetResult(),
  807. MaritalStatusName = _cacheService.GetMaritalStatusNameAsync(s.patientRegister.MaritalStatusId).GetAwaiter().GetResult(),
  808. MedicalTypeName = _cacheService.GetMedicalTypeNameAsync(s.patientRegister.MedicalTypeId).GetAwaiter().GetResult(),
  809. SexName = _cacheService.GetSexNameAsync(s.patientRegister.SexId).GetAwaiter().GetResult()
  810. // SummaryHistoricalReview = s.patientRegister.SummaryHistoricalReview
  811. }).ToList();
  812. return new PagedResultDto<PatientRegisterOrNoDto>(totalCount, entdto);
  813. }
  814. /// <summary>
  815. /// 人员登记列表 带收费信息
  816. /// </summary>
  817. /// <param name="input"></param>
  818. /// <returns></returns>
  819. [HttpPost("api/app/PatientRegister/GetPatientRegisterWithCharge")]
  820. public async Task<PagedResultDto<GetPatientRegisterWithChargeDto>> GetPatientRegisterWithChargeAsync(GetListInSearchDto input)
  821. {
  822. string patientRegisterQueryName = await _sysParmValueManager.GetSysParmValueAsync(Guid.Empty, "patient_register_query_name");
  823. #region MyRegion
  824. var query = from patientRegister in await _repository.GetQueryableAsync()
  825. join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id
  826. select new
  827. {
  828. patientRegister,
  829. patient
  830. };
  831. if (!string.IsNullOrEmpty(input.PatientNo))
  832. query = query.Where(m => m.patient.PatientNo == input.PatientNo);
  833. if (!string.IsNullOrEmpty(input.IdNo))
  834. query = query.Where(m => m.patient.IdNo == input.IdNo);
  835. //if (!string.IsNullOrEmpty(input.PatientName))
  836. // query = query.Where(m => !string.IsNullOrEmpty(m.patientRegister.PatientName) && m.patientRegister.PatientName.Contains(input.PatientName));
  837. if (!string.IsNullOrEmpty(input.PatientName))
  838. {
  839. if (patientRegisterQueryName == "Y")
  840. {
  841. query = query.Where(m => m.patientRegister.PatientName == input.PatientName);
  842. }
  843. else
  844. {
  845. query = query.Where(m => !string.IsNullOrWhiteSpace(input.PatientName) && m.patientRegister.PatientName.Contains(input.PatientName));
  846. }
  847. }
  848. if (!string.IsNullOrEmpty(input.PatientRegisterNo))
  849. query = query.Where(m => m.patientRegister.PatientRegisterNo == input.PatientRegisterNo);
  850. if (!string.IsNullOrEmpty(input.Phone))
  851. query = query.Where(m => m.patient.MobileTelephone == input.Phone || m.patient.Telephone == input.Phone);
  852. if (input.SexId != null)
  853. query = query.Where(m => m.patientRegister.SexId == input.SexId);
  854. if (!string.IsNullOrEmpty(input.StartDate) && !string.IsNullOrEmpty(input.EndDate))
  855. {
  856. if (input.DateType == '1')
  857. {
  858. query = query.Where(m => m.patientRegister.CreationTime >= Convert.ToDateTime(input.StartDate) &&
  859. m.patientRegister.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1));
  860. }
  861. else if (input.DateType == '2')
  862. {
  863. query = query.Where(m => m.patientRegister.MedicalStartDate >= Convert.ToDateTime(input.StartDate) &&
  864. m.patientRegister.MedicalStartDate < Convert.ToDateTime(input.EndDate).AddDays(1));
  865. }
  866. else
  867. {
  868. query = query.Where(m => (m.patientRegister.CreationTime >= Convert.ToDateTime(input.StartDate) &&
  869. m.patientRegister.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1))
  870. || (m.patientRegister.MedicalStartDate >= Convert.ToDateTime(input.StartDate) &&
  871. m.patientRegister.MedicalStartDate < Convert.ToDateTime(input.EndDate).AddDays(1))
  872. );
  873. }
  874. }
  875. if (input.CompleteFlags.Any())
  876. {
  877. query = query.Where(m => input.CompleteFlags.Contains(m.patientRegister.CompleteFlag));
  878. }
  879. if (input.MedicalTypeIds.Any())
  880. {
  881. query = query.Where(m => m.patientRegister.MedicalTypeId != null && input.MedicalTypeIds.Contains(m.patientRegister.MedicalTypeId.Value));
  882. }
  883. if (input.PersonnelTypeIds.Any())
  884. {
  885. query = query.Where(m => m.patientRegister.PersonnelTypeId != null && input.PersonnelTypeIds.Contains(m.patientRegister.PersonnelTypeId.Value));
  886. }
  887. if (input.IsRecoverGuide != null)
  888. query = query.Where(m => m.patientRegister.IsRecoverGuide == input.IsRecoverGuide);
  889. if (input.CustomerOrgId != null)
  890. {
  891. var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(input.CustomerOrgId.Value);
  892. query = query.Where(m => CustomerOrgIds.Contains(m.patientRegister.CustomerOrgId));
  893. }
  894. if (input.CustomerOrgRegisterId != null && input.CustomerOrgRegisterId != Guid.Empty)
  895. {
  896. query = query.Where(m => m.patientRegister.CustomerOrgRegisterId == input.CustomerOrgRegisterId);
  897. }
  898. if (input.CustomerOrgGroupIds.Any())
  899. {
  900. query = query.Where(m => m.patientRegister.CustomerOrgGroupId != null && input.CustomerOrgGroupIds.Contains(m.patientRegister.CustomerOrgGroupId.Value));
  901. }
  902. #endregion
  903. int totalCount = query.Count(); //总数
  904. //分页后的id集合
  905. var patientRegisterIds = query
  906. .OrderByDescending(g => g.patientRegister.CompleteFlag)
  907. .ThenBy(g => g.patientRegister.Id)
  908. .Skip(input.SkipCount * input.MaxResultCount)
  909. .Take(input.MaxResultCount)
  910. .Select(s => s.patientRegister.Id)
  911. .ToList();
  912. var entlist = from patientRegister in await _repository.GetQueryableAsync()
  913. join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id
  914. join patientRegisterExter in await _patientRegisterExterRepository.GetQueryableAsync()
  915. on patientRegister.Id equals patientRegisterExter.PatientRegisterId into patientRegisterExterTemp
  916. from patientRegisterExterHaveEmpty in patientRegisterExterTemp.DefaultIfEmpty()
  917. join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId into registerCheckTemp
  918. from registerCheckHaveEmpty in registerCheckTemp.DefaultIfEmpty()
  919. join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheckHaveEmpty.Id equals registerCheckAsbitem.RegisterCheckId into registerCheckAsbitemTemp
  920. from registerCheckAsbitemHaveEmpty in registerCheckAsbitemTemp.DefaultIfEmpty()
  921. join charge in await _chargeRepository.GetQueryableAsync() on patientRegister.Id equals charge.PatientRegisterId into chargeTemp
  922. from chargeHaveEmpty in chargeTemp.DefaultIfEmpty()
  923. join chargePay in await _chargePayRepository.GetQueryableAsync() on chargeHaveEmpty.Id equals chargePay.ChargeId into chargePayTemp
  924. from chargePayHaveEmpty in chargePayTemp.DefaultIfEmpty()
  925. join payMode in await _payModeRepository.GetQueryableAsync() on chargePayHaveEmpty.PayModeId equals payMode.Id into payModeTemp
  926. from payModePayHaveEmpty in payModeTemp.DefaultIfEmpty()
  927. where patientRegisterIds.Contains(patientRegister.Id)
  928. select new
  929. {
  930. patientRegister,
  931. patient,
  932. patientRegisterExterHaveEmpty,
  933. registerCheckAsbitemHaveEmpty = registerCheckAsbitemHaveEmpty != null ? new
  934. {
  935. registerCheckAsbitemHaveEmpty.Id,
  936. registerCheckAsbitemHaveEmpty.StandardPrice,
  937. registerCheckAsbitemHaveEmpty.Amount,
  938. registerCheckAsbitemHaveEmpty.ChargePrice,
  939. registerCheckAsbitemHaveEmpty.IsCharge,
  940. registerCheckAsbitemHaveEmpty.PayTypeFlag
  941. } : null,
  942. payModePayHaveEmpty = payModePayHaveEmpty != null ? new
  943. {
  944. payModePayHaveEmpty.DisplayName
  945. } : null
  946. };
  947. var queryGroup = entlist.ToList().GroupBy(g => g.patientRegister);
  948. List<GetPatientRegisterWithChargeDto> entListDto = new List<GetPatientRegisterWithChargeDto>();
  949. foreach (var group in queryGroup)
  950. {
  951. var entDto = new GetPatientRegisterWithChargeDto
  952. {
  953. CreationTime = group.Key.CreationTime,
  954. CreatorId = group.Key.CreatorId,
  955. Id = group.Key.Id,
  956. LastModificationTime = group.Key.LastModificationTime,
  957. LastModifierId = group.Key.LastModifierId,
  958. ThirdInfo = group.Key.ThirdInfo,
  959. SummaryDoctorId = group.Key.SummaryDoctorId,
  960. SummaryDate = DataHelper.ConversionDateToString(group.Key.SummaryDate),
  961. SexId = group.Key.SexId,
  962. Age = group.Key.Age,
  963. AuditDate = DataHelper.ConversionDateToString(group.Key.AuditDate),
  964. AuditDoctorId = group.Key.AuditDoctorId,
  965. BirthDate = DataHelper.ConversionDateToString(group.Key.BirthDate),
  966. CompleteFlag = group.Key.CompleteFlag,
  967. CustomerOrgGroupId = group.Key.CustomerOrgGroupId,
  968. CustomerOrgId = group.Key.CustomerOrgId,
  969. CustomerOrgRegisterId = group.Key.CustomerOrgRegisterId,
  970. GuidePrintTimes = group.Key.GuidePrintTimes,
  971. InterposeMeasure = group.Key.InterposeMeasure,
  972. IsAudit = group.Key.IsAudit,
  973. IsLock = group.Key.IsLock,
  974. IsMedicalStart = group.Key.IsMedicalStart,
  975. IsNameHide = group.Key.IsNameHide,
  976. IsPhoneFollow = group.Key.IsPhoneFollow,
  977. IsRecoverGuide = group.Key.IsRecoverGuide,
  978. IsUpload = group.Key.IsUpload,
  979. IsVip = group.Key.IsVip,
  980. JobCardNo = group.Key.JobCardNo,
  981. JobPost = group.Key.JobPost,
  982. JobTitle = group.Key.JobTitle,
  983. MaritalStatusId = group.Key.MaritalStatusId,
  984. MedicalCardNo = group.Key.MedicalCardNo,
  985. MedicalConclusionId = group.Key.MedicalConclusionId,
  986. MedicalPackageId = group.Key.MedicalPackageId,
  987. MedicalStartDate = DataHelper.ConversionDateToString(group.Key.MedicalStartDate),
  988. MedicalTimes = group.Key.MedicalTimes,
  989. MedicalTypeId = group.Key.MedicalTypeId,
  990. MedicalCenterId = group.Key.MedicalCenterId,
  991. PatientId = group.Key.PatientId,
  992. PatientName = group.Key.PatientName,
  993. PatientRegisterNo = group.Key.PatientRegisterNo,
  994. PersonnelTypeId = group.Key.PersonnelTypeId,
  995. Photo = group.Key.Photo,
  996. Remark = group.Key.Remark,
  997. ReportPrintTimes = group.Key.ReportPrintTimes,
  998. Salesman = group.Key.Salesman,
  999. SexHormoneTermId = group.Key.SexHormoneTermId,
  1000. CreatorName = _cacheService.GetSurnameAsync(group.Key.CreatorId).GetAwaiter().GetResult(),
  1001. LastModifierName = _cacheService.GetSurnameAsync(group.Key.LastModifierId).GetAwaiter().GetResult(),
  1002. Address = group.First().patient.Address, //档案表信息
  1003. BirthPlaceId = group.First().patient.BirthPlaceId,
  1004. DisplayName = group.First().patient.DisplayName,
  1005. Email = group.First().patient.Email,
  1006. IdNo = group.First().patient.IdNo,
  1007. MobileTelephone = group.First().patient.MobileTelephone,
  1008. NationId = group.First().patient.NationId,
  1009. PatientNo = group.First().patient.PatientNo,
  1010. PatientPassword = group.First().patient.PatientPassword,
  1011. PostalCode = group.First().patient.PostalCode,
  1012. Telephone = group.First().patient.Telephone,
  1013. Planuserid = group.FirstOrDefault().patientRegisterExterHaveEmpty != null ? group.FirstOrDefault().patientRegisterExterHaveEmpty.Planuserid : "",
  1014. QztlIsCw = group.FirstOrDefault().patientRegisterExterHaveEmpty != null ? group.FirstOrDefault().patientRegisterExterHaveEmpty.QztlIsCw : null,
  1015. QztlIsCy = group.FirstOrDefault().patientRegisterExterHaveEmpty != null ? group.FirstOrDefault().patientRegisterExterHaveEmpty.QztlIsCy : null,
  1016. QztlIsFj = group.FirstOrDefault().patientRegisterExterHaveEmpty != null ? group.FirstOrDefault().patientRegisterExterHaveEmpty.QztlIsFj : null,
  1017. QztlIsGt = group.FirstOrDefault().patientRegisterExterHaveEmpty != null ? group.FirstOrDefault().patientRegisterExterHaveEmpty.QztlIsGt : null,
  1018. QztlIsMain = group.FirstOrDefault().patientRegisterExterHaveEmpty != null ? group.FirstOrDefault().patientRegisterExterHaveEmpty.QztlIsMain : null,
  1019. QztlIsWh = group.FirstOrDefault().patientRegisterExterHaveEmpty != null ? group.FirstOrDefault().patientRegisterExterHaveEmpty.QztlIsWh : null,
  1020. QztlType = group.FirstOrDefault().patientRegisterExterHaveEmpty != null ? group.FirstOrDefault().patientRegisterExterHaveEmpty.QztlType : null,
  1021. IsQztlImport = group.FirstOrDefault().patientRegisterExterHaveEmpty != null ? group.FirstOrDefault().patientRegisterExterHaveEmpty.IsQztlImport : null,
  1022. Remark2 = group.FirstOrDefault().patientRegisterExterHaveEmpty != null ? group.FirstOrDefault().patientRegisterExterHaveEmpty.Remark2 : null,
  1023. Remark3 = group.FirstOrDefault().patientRegisterExterHaveEmpty != null ? group.FirstOrDefault().patientRegisterExterHaveEmpty.Remark3 : null,
  1024. Remark4 = group.FirstOrDefault().patientRegisterExterHaveEmpty != null ? group.FirstOrDefault().patientRegisterExterHaveEmpty.Remark4 : null,
  1025. UploadQztlFlag = group.FirstOrDefault().patientRegisterExterHaveEmpty != null ? group.FirstOrDefault().patientRegisterExterHaveEmpty.UploadQztlFlag : null,
  1026. CustomerOrgName = _cacheService.GetCustomerOrgNameAsync(group.Key.CustomerOrgId).GetAwaiter().GetResult(),
  1027. CustomerOrgParentId = _cacheService.GetTopCustomerOrgAsync(group.Key.CustomerOrgId).GetAwaiter().GetResult().Id,
  1028. CustomerOrgParentName = _cacheService.GetTopCustomerOrgNameAsync(group.Key.CustomerOrgId).GetAwaiter().GetResult(),
  1029. MedicalPackageName = group.Key.MedicalPackageId == null ? "" : _cacheService.GetMedicalPackageAsync(group.Key.MedicalPackageId.Value).GetAwaiter().GetResult().DisplayName,
  1030. CustomerOrgGroupName = group.Key.CustomerOrgGroupId == null ? "" : _cacheService.GetCustomerOrgGroupAsync(group.Key.CustomerOrgGroupId.Value).GetAwaiter().GetResult().DisplayName,
  1031. NationName = _cacheService.GetNationNameAsync(group.FirstOrDefault().patient.NationId).GetAwaiter().GetResult(),
  1032. PersonnelTypeName = _cacheService.GetPersonnelTypeNameAsync(group.Key.PersonnelTypeId).GetAwaiter().GetResult(),
  1033. MaritalStatusName = _cacheService.GetMaritalStatusNameAsync(group.Key.MaritalStatusId).GetAwaiter().GetResult(),
  1034. MedicalTypeName = _cacheService.GetMedicalTypeNameAsync(group.Key.MedicalTypeId).GetAwaiter().GetResult(),
  1035. SexName = _cacheService.GetSexNameAsync(group.Key.SexId).GetAwaiter().GetResult()
  1036. };
  1037. entDto.StandardAmount = 0;
  1038. entDto.ReceivableAmount = 0;
  1039. entDto.ChargeAmount = 0;
  1040. entDto.ChargePayMode = "";
  1041. if (group.Count(m => m.registerCheckAsbitemHaveEmpty != null) > 0)
  1042. {
  1043. entDto.StandardAmount = group.Where(m => m.registerCheckAsbitemHaveEmpty != null).GroupBy(g => g.registerCheckAsbitemHaveEmpty).Sum(s => s.Key.StandardPrice * s.Key.Amount);
  1044. entDto.ReceivableAmount = group.Where(m => m.registerCheckAsbitemHaveEmpty != null && m.registerCheckAsbitemHaveEmpty.PayTypeFlag != RegisterCheckAsbitemPayTypeFlag.Free).GroupBy(g => g.registerCheckAsbitemHaveEmpty).Sum(s => s.Key.ChargePrice * s.Key.Amount);
  1045. entDto.ChargeAmount = group.Where(m => m.registerCheckAsbitemHaveEmpty != null && m.registerCheckAsbitemHaveEmpty.IsCharge == 'Y').GroupBy(g => g.registerCheckAsbitemHaveEmpty).Sum(s => s.Key.ChargePrice * s.Key.Amount);
  1046. }
  1047. if (group.Count(m => m.payModePayHaveEmpty != null) > 0)
  1048. {
  1049. entDto.ChargePayMode = string.Join(",", group.Where(m => m.payModePayHaveEmpty != null).GroupBy(g => g.payModePayHaveEmpty).Select(s => s.Key.DisplayName));
  1050. }
  1051. entListDto.Add(entDto);
  1052. }
  1053. return new PagedResultDto<GetPatientRegisterWithChargeDto>(totalCount, entListDto);
  1054. }
  1055. /// <summary>
  1056. /// 获取档案登记信息 根据档案号或者条码号(档案号条件返回最新的一条)
  1057. /// </summary>
  1058. /// <param name="input"></param>
  1059. /// <returns></returns>
  1060. [HttpPost("api/app/patientregister/getpatientregisterorpatient")]
  1061. public async Task<PatientRegisterOrNoDto> GetPatientRegisterOrPatientAsync(GetPatientRegisterOrPatientDto input)
  1062. {
  1063. var entdto = new PatientRegisterOrNoDto();
  1064. #region MyRegion
  1065. var entlist = (await _repository.GetDbSetAsync()).Include(x => x.Patient).AsQueryable();
  1066. if (input.SType == 1)
  1067. entlist = entlist.Where(m => m.PatientRegisterNo == input.PatientRegisterNo);
  1068. else
  1069. entlist = entlist.Where(m => m.Patient.PatientNo == input.PatientNo).OrderByDescending(o => o.MedicalTimes);
  1070. if (input.IsFilterPreRegistration != null && input.IsFilterPreRegistration == 'Y')
  1071. {
  1072. //直接过滤
  1073. entlist = entlist.Where(m => m.CompleteFlag != PatientRegisterCompleteFlag.PreRegistration);
  1074. }
  1075. var ent = entlist.FirstOrDefault();
  1076. #endregion
  1077. if (ent != null)
  1078. {
  1079. var userList = await _userRepository.GetListAsync();
  1080. var customerOrgList = await _customerOrgRepository.GetListAsync();
  1081. entdto = new PatientRegisterOrNoDto
  1082. {
  1083. CreationTime = ent.CreationTime,
  1084. CreatorId = ent.CreatorId,
  1085. Id = ent.Id,
  1086. LastModificationTime = ent.LastModificationTime,
  1087. LastModifierId = ent.LastModifierId,
  1088. ThirdInfo = ent.ThirdInfo,
  1089. SummaryDoctorId = ent.SummaryDoctorId,
  1090. SummaryDate = DataHelper.ConversionDateToString(ent.SummaryDate),
  1091. SexId = ent.SexId,
  1092. Age = ent.Age,
  1093. AuditDate = DataHelper.ConversionDateToString(ent.AuditDate),
  1094. AuditDoctorId = ent.AuditDoctorId,
  1095. BirthDate = DataHelper.ConversionDateToString(ent.BirthDate),
  1096. CompleteFlag = ent.CompleteFlag,
  1097. CustomerOrgGroupId = ent.CustomerOrgGroupId,
  1098. CustomerOrgId = ent.CustomerOrgId,
  1099. CustomerOrgRegisterId = ent.CustomerOrgRegisterId,
  1100. GuidePrintTimes = ent.GuidePrintTimes,
  1101. InterposeMeasure = ent.InterposeMeasure,
  1102. IsAudit = ent.IsAudit,
  1103. IsLock = ent.IsLock,
  1104. IsMedicalStart = ent.IsMedicalStart,
  1105. IsNameHide = ent.IsNameHide,
  1106. IsPhoneFollow = ent.IsPhoneFollow,
  1107. IsRecoverGuide = ent.IsRecoverGuide,
  1108. IsUpload = ent.IsUpload,
  1109. IsVip = ent.IsVip,
  1110. JobCardNo = ent.JobCardNo,
  1111. JobPost = ent.JobPost,
  1112. JobTitle = ent.JobTitle,
  1113. MaritalStatusId = ent.MaritalStatusId,
  1114. MedicalCardNo = ent.MedicalCardNo,
  1115. MedicalConclusionId = ent.MedicalConclusionId,
  1116. MedicalPackageId = ent.MedicalPackageId,
  1117. MedicalStartDate = DataHelper.ConversionDateToString(ent.MedicalStartDate),
  1118. MedicalTimes = ent.MedicalTimes,
  1119. MedicalTypeId = ent.MedicalTypeId,
  1120. MedicalCenterId = ent.MedicalCenterId,
  1121. PatientId = ent.PatientId,
  1122. PatientName = ent.PatientName,
  1123. PatientRegisterNo = ent.PatientRegisterNo,
  1124. PersonnelTypeId = ent.PersonnelTypeId,
  1125. Photo = ent.Photo,
  1126. Remark = ent.Remark,
  1127. ReportPrintTimes = ent.ReportPrintTimes,
  1128. Salesman = ent.Salesman,
  1129. SexHormoneTermId = ent.SexHormoneTermId,
  1130. CreatorName = EntityHelper.GetSurnameNoSql(userList, ent.CreatorId),
  1131. LastModifierName = EntityHelper.GetSurnameNoSql(userList, ent.LastModifierId),
  1132. Address = ent.Patient.Address, //档案表信息
  1133. BirthPlaceId = ent.Patient.BirthPlaceId,
  1134. DisplayName = ent.Patient.DisplayName,
  1135. Email = ent.Patient.Email,
  1136. IdNo = ent.Patient.IdNo,
  1137. MobileTelephone = ent.Patient.MobileTelephone,
  1138. NationId = ent.Patient.NationId,
  1139. PatientNo = ent.Patient.PatientNo,
  1140. PatientPassword = ent.Patient.PatientPassword,
  1141. PostalCode = ent.Patient.PostalCode,
  1142. Telephone = ent.Patient.Telephone,
  1143. CustomerOrgName = EntityHelper.GetCustomerOrgNameNoSql(customerOrgList, ent.CustomerOrgId),
  1144. CustomerOrgParentId = EntityHelper.GetParentNoSql(customerOrgList, ent.CustomerOrgId),
  1145. CustomerOrgParentName = EntityHelper.GetCustomerOrgParentNameNoSql(customerOrgList, ent.CustomerOrgId)
  1146. };
  1147. }
  1148. else
  1149. {
  1150. entdto = null;
  1151. }
  1152. return entdto;
  1153. }
  1154. /// <summary>
  1155. /// 获取档案登记信息 根据档案号或者条码号(档案号条件返回最新的一条)
  1156. /// </summary>
  1157. /// <param name="input"></param>
  1158. /// <returns></returns>
  1159. /// <exception cref="UserFriendlyException"></exception>
  1160. [HttpPost("api/app/patientregister/GetAlreadyRegisterPatientRegisterByNo")]
  1161. public async Task<PatientRegisterOrNoDto> GetAlreadyRegisterPatientRegisterByNoAsync(PatientRegisterNoInputDto input)
  1162. {
  1163. var query = (await _repository.GetQueryableAsync()).Include(x => x.Patient).AsQueryable();
  1164. var patientRegisterList = new List<PatientRegister>();
  1165. PatientRegister ent = null;
  1166. if (!string.IsNullOrWhiteSpace(input.PatientRegisterNo))
  1167. {
  1168. ent = query.Where(m => m.PatientRegisterNo == input.PatientRegisterNo).FirstOrDefault();
  1169. if (ent == null)
  1170. {
  1171. throw new UserFriendlyException("未找到人员信息");
  1172. }
  1173. }
  1174. else if (!string.IsNullOrWhiteSpace(input.PatientNo))
  1175. {
  1176. patientRegisterList = query.Where(m => m.Patient.PatientNo == input.PatientNo).OrderByDescending(o => o.MedicalTimes).ToList();
  1177. if (patientRegisterList.Count == 0)
  1178. {
  1179. throw new UserFriendlyException("未找到人员信息");
  1180. }
  1181. patientRegisterList = patientRegisterList.Where(m => m.CompleteFlag != PatientRegisterCompleteFlag.PreRegistration).ToList();
  1182. if (patientRegisterList.Count == 0)
  1183. {
  1184. throw new UserFriendlyException("该人未正式登记");
  1185. }
  1186. ent = patientRegisterList.First();
  1187. }
  1188. else if (!string.IsNullOrWhiteSpace(input.IdNo))
  1189. {
  1190. patientRegisterList = query.Where(m => m.Patient.IdNo == input.IdNo).OrderByDescending(o => o.CreationTime).ToList();
  1191. if (patientRegisterList.Count == 0)
  1192. {
  1193. throw new UserFriendlyException("未找到人员信息");
  1194. }
  1195. patientRegisterList = patientRegisterList.Where(m => m.CompleteFlag != PatientRegisterCompleteFlag.PreRegistration).ToList();
  1196. if (patientRegisterList.Count == 0)
  1197. {
  1198. throw new UserFriendlyException("该人未正式登记");
  1199. }
  1200. ent = patientRegisterList.First();
  1201. }
  1202. else
  1203. {
  1204. throw new UserFriendlyException("检索条件不能为空");
  1205. }
  1206. if (ent.CompleteFlag == PatientRegisterCompleteFlag.PreRegistration)
  1207. {
  1208. throw new UserFriendlyException("该人未正式登记");
  1209. }
  1210. var entdto = new PatientRegisterOrNoDto
  1211. {
  1212. CreationTime = ent.CreationTime,
  1213. CreatorId = ent.CreatorId,
  1214. Id = ent.Id,
  1215. LastModificationTime = ent.LastModificationTime,
  1216. LastModifierId = ent.LastModifierId,
  1217. ThirdInfo = ent.ThirdInfo,
  1218. SummaryDoctorId = ent.SummaryDoctorId,
  1219. SummaryDate = DataHelper.ConversionDateToString(ent.SummaryDate),
  1220. SexId = ent.SexId,
  1221. SexName = _cacheService.GetSexNameAsync(ent.SexId).Result,
  1222. Age = ent.Age,
  1223. AuditDate = DataHelper.ConversionDateToString(ent.AuditDate),
  1224. AuditDoctorId = ent.AuditDoctorId,
  1225. BirthDate = DataHelper.ConversionDateToString(ent.BirthDate),
  1226. CompleteFlag = ent.CompleteFlag,
  1227. CustomerOrgGroupId = ent.CustomerOrgGroupId,
  1228. CustomerOrgId = ent.CustomerOrgId,
  1229. CustomerOrgRegisterId = ent.CustomerOrgRegisterId,
  1230. GuidePrintTimes = ent.GuidePrintTimes,
  1231. InterposeMeasure = ent.InterposeMeasure,
  1232. IsAudit = ent.IsAudit,
  1233. IsLock = ent.IsLock,
  1234. IsMedicalStart = ent.IsMedicalStart,
  1235. IsNameHide = ent.IsNameHide,
  1236. IsPhoneFollow = ent.IsPhoneFollow,
  1237. IsRecoverGuide = ent.IsRecoverGuide,
  1238. IsUpload = ent.IsUpload,
  1239. IsVip = ent.IsVip,
  1240. JobCardNo = ent.JobCardNo,
  1241. JobPost = ent.JobPost,
  1242. JobTitle = ent.JobTitle,
  1243. MaritalStatusId = ent.MaritalStatusId,
  1244. MaritalStatusName = _cacheService.GetMaritalStatusNameAsync(ent.MaritalStatusId).GetAwaiter().GetResult(),
  1245. MedicalCardNo = ent.MedicalCardNo,
  1246. MedicalConclusionId = ent.MedicalConclusionId,
  1247. MedicalPackageId = ent.MedicalPackageId,
  1248. MedicalStartDate = DataHelper.ConversionDateToString(ent.MedicalStartDate),
  1249. MedicalTimes = ent.MedicalTimes,
  1250. MedicalTypeId = ent.MedicalTypeId,
  1251. MedicalTypeName = _cacheService.GetMedicalTypeNameAsync(ent.MedicalTypeId).GetAwaiter().GetResult(),
  1252. MedicalCenterId = ent.MedicalCenterId,
  1253. PatientId = ent.PatientId,
  1254. PatientName = ent.PatientName,
  1255. PatientRegisterNo = ent.PatientRegisterNo,
  1256. PersonnelTypeId = ent.PersonnelTypeId,
  1257. PersonnelTypeName = _cacheService.GetPersonnelTypeNameAsync(ent.PersonnelTypeId).GetAwaiter().GetResult(),
  1258. Remark = ent.Remark,
  1259. ReportPrintTimes = ent.ReportPrintTimes,
  1260. Salesman = ent.Salesman,
  1261. SexHormoneTermId = ent.SexHormoneTermId,
  1262. Photo = ent.Photo,
  1263. CreatorName = _cacheService.GetSurnameAsync(ent.CreatorId).GetAwaiter().GetResult(),
  1264. LastModifierName = _cacheService.GetSurnameAsync(ent.LastModifierId).GetAwaiter().GetResult(),
  1265. Address = ent.Patient.Address, //档案表信息
  1266. BirthPlaceId = ent.Patient.BirthPlaceId,
  1267. DisplayName = ent.Patient.DisplayName,
  1268. Email = ent.Patient.Email,
  1269. IdNo = ent.Patient.IdNo,
  1270. MobileTelephone = ent.Patient.MobileTelephone,
  1271. NationId = ent.Patient.NationId,
  1272. NationName = _cacheService.GetNationNameAsync(ent.Patient.NationId).GetAwaiter().GetResult(),
  1273. PatientNo = ent.Patient.PatientNo,
  1274. PostalCode = ent.Patient.PostalCode,
  1275. Telephone = ent.Patient.Telephone,
  1276. CustomerOrgName = _cacheService.GetCustomerOrgNameAsync(ent.CustomerOrgId).GetAwaiter().GetResult(),
  1277. CustomerOrgParentId = _cacheService.GetTopCustomerOrgAsync(ent.CustomerOrgId).GetAwaiter().GetResult().Id,
  1278. CustomerOrgParentName = _cacheService.GetTopCustomerOrgAsync(ent.CustomerOrgId).GetAwaiter().GetResult().DisplayName,
  1279. IsPatientOccupationalDisease = _patientOccupationalDiseaseManager.GetPatientRegisterIsOccupationalDisease(ent.Id).GetAwaiter().GetResult()
  1280. // SummaryHistoricalReview = ent.SummaryHistoricalReview
  1281. };
  1282. return entdto;
  1283. }
  1284. ///// <summary>
  1285. ///// 创建 登记档案 弃用
  1286. ///// </summary>
  1287. ///// <param name="input"></param>
  1288. ///// <returns></returns>
  1289. //[RemoteService(false)]
  1290. //public override async Task<PatientRegisterDto> CreateAsync(CreatePatientRegisterDto input)
  1291. //{
  1292. // var createEntity = ObjectMapper.Map<CreatePatientRegisterDto, PatientRegister>(input);
  1293. // var createPatientEntity = ObjectMapper.Map<CreatePatientRegisterDto, Patient>(input);
  1294. // var entity = await _manager.CreateAsync(createEntity, createPatientEntity);
  1295. // var dto = ObjectMapper.Map<PatientRegister, PatientRegisterDto>(entity);
  1296. // return dto;
  1297. //}
  1298. /// <summary>
  1299. /// 新版人员登记
  1300. /// </summary>
  1301. /// <param name="input"></param>
  1302. /// <returns></returns>
  1303. [HttpPost("api/PatientRegister/CreatePatientRegister")]
  1304. public async Task<PatientRegisterOrNoDto> CreatePatientRegisterAsync(CreatePatientRegisterDto input)
  1305. {
  1306. //总检时特殊处理
  1307. if (input.CompleteFlag == PatientRegisterCompleteFlag.SumCheck)
  1308. {
  1309. return await SumCheckUpdatePatientRegister(input);
  1310. }
  1311. PatientRegisterOrNoDto msg = new PatientRegisterOrNoDto();
  1312. input.RegisterCheckAsbitems.ForEach(o =>
  1313. {
  1314. if (o.Id == null)
  1315. {
  1316. o.Id = Guid.Empty;
  1317. }
  1318. });
  1319. var createPatientRegisterArg = ObjectMapper.Map<CreatePatientRegisterDto, CreatePatientRegisterArg>(input);
  1320. var createPatientRegisterExterArg = ObjectMapper.Map<CreatePatientRegisterDto, CreatePatientRegisterExterArg>(input);
  1321. var updatePatientEntity = ObjectMapper.Map<CreatePatientRegisterDto, Patient>(input);
  1322. var registerAsbitems = ObjectMapper.Map<List<CreatePatientRegisterRegisterCheckAsbitem>, List<RegisterCheckAsbitem>>(input.RegisterCheckAsbitems);
  1323. var updatePatientRegisterArg = ObjectMapper.Map<CreatePatientRegisterDto, UpdatePatientRegisterArg>(input);
  1324. var updatePatientRegisterExterArg = ObjectMapper.Map<CreatePatientRegisterDto, UpdatePatientRegisterExterArg>(input);
  1325. updatePatientEntity.DisplayName = input.PatientName;
  1326. //创建人员信息
  1327. Patient patient = null;
  1328. _patientManager.IsAllowIdNoSexError = input.IsAllowIdNoSexError;
  1329. if (createPatientRegisterArg.PatientId == Guid.Empty)
  1330. {
  1331. patient = await _patientManager.CreateAsync(updatePatientEntity);
  1332. await _patientRepository.InsertAsync(patient);
  1333. }
  1334. else
  1335. {
  1336. patient = await _patientRepository.GetAsync(createPatientRegisterArg.PatientId);
  1337. await _patientManager.UpdateAsync(updatePatientEntity, patient);
  1338. }
  1339. //创建人员登记信息
  1340. createPatientRegisterArg.PatientId = patient.Id;
  1341. if (patient.BirthDate != null)
  1342. {
  1343. createPatientRegisterArg.BirthDate = patient.BirthDate;
  1344. }
  1345. PatientRegister entity = null;
  1346. PatientRegisterExter patientRegisterExterEntity = null;
  1347. CreateRegisterCheckAsbitemEntity createRegisterCheckAsbitemEntity = null;
  1348. if (input.PatientRegisterId == null || input.PatientRegisterId == Guid.Empty)
  1349. {
  1350. entity = await _manager.CreateAsync(createPatientRegisterArg);
  1351. createRegisterCheckAsbitemEntity = await _registerAsbitemManager.UpdateManyAsync(entity, registerAsbitems);
  1352. entity = await _repository.InsertAsync(entity, true);
  1353. createPatientRegisterExterArg.PatientRegisterId = entity.Id;
  1354. #region 扩展表
  1355. patientRegisterExterEntity = _patientRegisterExterManager.CreateAsync(createPatientRegisterExterArg);
  1356. await _patientRegisterExterRepository.InsertAsync(patientRegisterExterEntity);
  1357. #endregion
  1358. }
  1359. else
  1360. {
  1361. entity = await Repository.GetAsync((Guid)input.PatientRegisterId);
  1362. char oldCompleteFlag = entity.CompleteFlag; //更新前状态
  1363. //更新patientId
  1364. updatePatientRegisterArg.PatientId = patient.Id;
  1365. await _manager.UpdateAsync(updatePatientRegisterArg, entity);
  1366. createRegisterCheckAsbitemEntity = await _registerAsbitemManager.UpdateManyAsync(entity, registerAsbitems);
  1367. #region 预登记转正式登记修改登记者ID
  1368. string goRegisterIsUpdateRegisterPerson = await _sysParmValueManager.GetSysParmValueAsync(Guid.Empty, "go_register_is_update_register_person");
  1369. if (goRegisterIsUpdateRegisterPerson == "1")
  1370. {
  1371. if (oldCompleteFlag == PatientRegisterCompleteFlag.PreRegistration
  1372. && entity.CompleteFlag == PatientRegisterCompleteFlag.Registration
  1373. && _currentUser.Id != null)
  1374. {
  1375. //判断是预登记转正式登记
  1376. entity.UpdateCreatorId(_currentUser.Id.Value);
  1377. }
  1378. }
  1379. #endregion
  1380. await _repository.UpdateAsync(entity);
  1381. #region 扩展表
  1382. patientRegisterExterEntity = await _patientRegisterExterRepository.FirstOrDefaultAsync(m => m.PatientRegisterId == entity.Id);
  1383. if (patientRegisterExterEntity != null)
  1384. {
  1385. _patientRegisterExterManager.UpdateAsync(updatePatientRegisterExterArg, patientRegisterExterEntity);
  1386. await _patientRegisterExterRepository.UpdateAsync(patientRegisterExterEntity);
  1387. }
  1388. #endregion
  1389. }
  1390. #region 推送人寿状态
  1391. if (!string.IsNullOrWhiteSpace(entity.ThirdBookingId))
  1392. {
  1393. try
  1394. {
  1395. await _thirdBookingPushAppService.PushRegisterAsync(new PatientRegisterIdInputDto { PatientRegisterId = entity.Id });
  1396. }
  1397. catch (Exception ex)
  1398. {
  1399. _logger.LogError($"推送人寿完成登记=》{ex.Message}");
  1400. }
  1401. }
  1402. #endregion
  1403. //throw new Exception("后续不更新");
  1404. if (createRegisterCheckAsbitemEntity != null)
  1405. {
  1406. await UpdateRegisterChecks(createRegisterCheckAsbitemEntity);
  1407. }
  1408. await CurrentUnitOfWork.SaveChangesAsync();
  1409. msg = await GetPatientRegisterOrNo(entity.Id);
  1410. return msg;
  1411. }
  1412. /// <summary>
  1413. /// 总检时修改人员信息
  1414. /// </summary>
  1415. /// <returns></returns>
  1416. private async Task<PatientRegisterOrNoDto> SumCheckUpdatePatientRegister(CreatePatientRegisterDto input)
  1417. {
  1418. var patientRegister = await _repository.FirstOrDefaultAsync(f => f.Id == input.PatientRegisterId);
  1419. if (patientRegister != null)
  1420. {
  1421. var updatePatientEntity = ObjectMapper.Map<CreatePatientRegisterDto, Patient>(input);
  1422. var updatePatientRegisterArg = ObjectMapper.Map<CreatePatientRegisterDto, UpdatePatientRegisterArg>(input);
  1423. //档案
  1424. updatePatientEntity.DisplayName = input.PatientName;
  1425. //创建人员信息
  1426. Patient patient = null;
  1427. _patientManager.IsAllowIdNoSexError = input.IsAllowIdNoSexError;
  1428. if (updatePatientRegisterArg.PatientId == Guid.Empty)
  1429. {
  1430. patient = await _patientManager.CreateAsync(updatePatientEntity);
  1431. await _patientRepository.InsertAsync(patient, true);
  1432. updatePatientRegisterArg.PatientId = patient.Id;
  1433. }
  1434. else
  1435. {
  1436. patient = await _patientRepository.GetAsync(updatePatientRegisterArg.PatientId);
  1437. await _patientManager.UpdateAsync(updatePatientEntity, patient);
  1438. await _patientRepository.UpdateAsync(patient, true);
  1439. }
  1440. //人员
  1441. var patientRegisterEntity = await _repository.GetAsync((Guid)input.PatientRegisterId);
  1442. await _manager.UpdateAsync(updatePatientRegisterArg, patientRegisterEntity, false);
  1443. await _repository.UpdateAsync(patientRegisterEntity, true);
  1444. return await GetPatientRegisterOrNo((Guid)input.PatientRegisterId);
  1445. }
  1446. else
  1447. {
  1448. throw new UserFriendlyException("人员不存在");
  1449. }
  1450. }
  1451. /// <summary>
  1452. /// 批量增加组合项目
  1453. /// </summary>
  1454. /// <param name="input"></param>
  1455. /// <returns></returns>
  1456. [HttpPost("api/PatientRegister/BatchAddAsbitems")]
  1457. public async Task BatchAddAsbitems(PatientRegisterBatchAddAsbitemsDto input)
  1458. {
  1459. var registerAsbitems = ObjectMapper.Map<List<BatchCreateRegisterCheckAsbitem>, List<RegisterCheckAsbitem>>(input.RegisterCheckAsbitems);
  1460. CreateRegisterCheckAsbitemEntity createRegisterCheckAsbitemEntity = null;
  1461. var entity = await Repository.GetAsync((Guid)input.PatientRegisterId);
  1462. if (input.RegisterCheckAsbitems.Count == 0)
  1463. {
  1464. return;
  1465. }
  1466. var existRegisterChecks = (await _registerCheckRepository.GetQueryableAsync()).Where(o => o.PatientRegisterId == input.PatientRegisterId).AsNoTracking().ToList();
  1467. var existRegisterAsbitems = (await _registerCheckAsbitemRepository.GetQueryableAsync()).Where(o =>
  1468. existRegisterChecks.Select(x => x.Id).Contains(o.RegisterCheckId)).AsNoTracking().ToList();
  1469. foreach (var registerCheckAsbitem in input.RegisterCheckAsbitems)
  1470. {
  1471. if (existRegisterAsbitems.Where(o => o.AsbitemId == registerCheckAsbitem.AsbitemId).Count() > 0)
  1472. {
  1473. continue;
  1474. }
  1475. var asbitem = await _asbitemRepository.GetAsync(registerCheckAsbitem.AsbitemId);
  1476. var newRegisterCheckAsbitem = new RegisterCheckAsbitem()
  1477. {
  1478. AsbitemId = registerCheckAsbitem.AsbitemId,
  1479. Amount = registerCheckAsbitem.Amount,
  1480. StandardPrice = asbitem.Price,
  1481. ChargePrice = registerCheckAsbitem.ChargePrice,
  1482. PayTypeFlag = registerCheckAsbitem.PayTypeFlag,
  1483. IsCharge = 'N'
  1484. };
  1485. existRegisterAsbitems.Add(newRegisterCheckAsbitem);
  1486. }
  1487. createRegisterCheckAsbitemEntity = await _registerAsbitemManager.UpdateManyAsync(entity, existRegisterAsbitems);
  1488. if (createRegisterCheckAsbitemEntity != null)
  1489. {
  1490. await UpdateRegisterChecks(createRegisterCheckAsbitemEntity);
  1491. }
  1492. await CurrentUnitOfWork.SaveChangesAsync();
  1493. return;
  1494. }
  1495. [HttpPost("api/PatientRegister/BatchDeleteAsbitems")]
  1496. public async Task BatchDeleteAsbitems(PatientRegisterBatchDeleteAsbitemsDto input)
  1497. {
  1498. DataHelper.CheckCharIsYOrN(input.IsDeleteGroup, "如果组合项目属于分组删除分组");
  1499. CreateRegisterCheckAsbitemEntity createRegisterCheckAsbitemEntity = null;
  1500. var entity = await Repository.GetAsync((Guid)input.PatientRegisterId);
  1501. if (input.RegisterCheckAsbitems.Count == 0)
  1502. {
  1503. return;
  1504. }
  1505. //删除组合项目时是否删除分组
  1506. bool IsPatientRegisterModified = false;
  1507. if (input.IsDeleteGroup == 'Y')
  1508. {
  1509. if (entity.CustomerOrgGroupId != null && entity.CustomerOrgGroupId != Guid.Empty)
  1510. {
  1511. var customerOrgGroupDetails = (await _customerOrgGroupDetailRepository.GetQueryableAsync()).Where(o => o.CustomerOrgGroupId == entity.CustomerOrgGroupId).ToList();
  1512. foreach (var registerCheckAsbitem in input.RegisterCheckAsbitems)
  1513. {
  1514. if (customerOrgGroupDetails.Where(o => o.AsbitemId == registerCheckAsbitem.AsbitemId).Count() > 0)
  1515. {
  1516. entity.CustomerOrgGroupId = null;
  1517. IsPatientRegisterModified = true;
  1518. break;
  1519. }
  1520. }
  1521. }
  1522. else if (entity.MedicalPackageId != null && entity.MedicalPackageId != Guid.Empty)
  1523. {
  1524. var medicalPackageDetails = (await _medicalPackageDetailRepository.GetQueryableAsync()).Where(o => o.MedicalPackageId == entity.MedicalPackageId).ToList();
  1525. foreach (var registerCheckAsbitem in input.RegisterCheckAsbitems)
  1526. {
  1527. if (medicalPackageDetails.Where(o => o.AsbitemId == registerCheckAsbitem.AsbitemId).Count() > 0)
  1528. {
  1529. entity.CustomerOrgGroupId = null;
  1530. IsPatientRegisterModified = true;
  1531. break;
  1532. }
  1533. }
  1534. }
  1535. }
  1536. if (IsPatientRegisterModified)
  1537. {
  1538. await _repository.UpdateAsync(entity);
  1539. }
  1540. //批量删除项目
  1541. var existRegisterChecks = (await _registerCheckRepository.GetQueryableAsync()).Where(o => o.PatientRegisterId == input.PatientRegisterId).AsNoTracking().ToList();
  1542. var existRegisterAsbitems = (await _registerCheckAsbitemRepository.GetQueryableAsync()).Where(o =>
  1543. existRegisterChecks.Select(x => x.Id).Contains(o.RegisterCheckId)).AsNoTracking().ToList();
  1544. foreach (var registerCheckAsbitem in input.RegisterCheckAsbitems)
  1545. {
  1546. var existRegisterAsbitem = existRegisterAsbitems.Where(o => o.AsbitemId == registerCheckAsbitem.AsbitemId).FirstOrDefault();
  1547. if (existRegisterAsbitem != null)
  1548. {
  1549. existRegisterAsbitems.Remove(existRegisterAsbitem);
  1550. }
  1551. }
  1552. createRegisterCheckAsbitemEntity = await _registerAsbitemManager.UpdateManyAsync(entity, existRegisterAsbitems);
  1553. if (createRegisterCheckAsbitemEntity != null)
  1554. {
  1555. await UpdateRegisterChecks(createRegisterCheckAsbitemEntity);
  1556. }
  1557. await CurrentUnitOfWork.SaveChangesAsync();
  1558. return;
  1559. }
  1560. ///// <summary>
  1561. ///// 体检记录查询 医生诊台
  1562. ///// </summary>
  1563. ///// <param name="input"></param>
  1564. ///// <returns></returns>
  1565. //[HttpPost("api/app/PatientRegister/GetDoctorPeisRecordList")]
  1566. //public async Task<PagedResultDto<PatientRegisterOrNoDto>> GetDoctorPeisRecordListAsync(DoctorPeisRecordListInputDto input)
  1567. //{
  1568. // var query = from a in await _repository.GetQueryableAsync()
  1569. // join b in await _patientRepository.GetQueryableAsync() on a.PatientId equals b.Id into bb
  1570. // from ab in bb.DefaultIfEmpty()
  1571. // join c in await _registerCheckRepository.GetQueryableAsync() on a.Id equals c.PatientRegisterId into cc
  1572. // from ac in cc.DefaultIfEmpty()
  1573. // join d in await _registerCheckAsbitemRepository.GetQueryableAsync() on ac.Id equals d.RegisterCheckId into dd
  1574. // from ad in dd.DefaultIfEmpty()
  1575. // join e in await _asbitemRepository.GetQueryableAsync() on ad.AsbitemId equals e.Id
  1576. // where e.IsCheck == 'Y'
  1577. // select new
  1578. // {
  1579. // a,
  1580. // ab,
  1581. // AsbitemId = ad != null ? ad.AsbitemId : Guid.Empty,
  1582. // RegisterCheckCompleteFlag = ac != null ? ac.CompleteFlag : '9',
  1583. // RegisterCheckIsAudit = ac != null ? ac.IsAudit : '9',
  1584. // CheckDoctorId = ac.CheckDoctorId,
  1585. // CheckDate = ac.CheckDate
  1586. // };
  1587. // var sumquery = query;
  1588. // if (input.CustomerOrgs.Any())
  1589. // {
  1590. // var item = input.CustomerOrgs[0];
  1591. // if (item.CustomerOrgGroupId.Any())
  1592. // {
  1593. // sumquery = sumquery.Where(m => m.a.CustomerOrgGroupId != null && item.CustomerOrgGroupId.Contains(m.a.CustomerOrgGroupId.Value));
  1594. // }
  1595. // if (item.CustomerOrgRegisterId != null && item.CustomerOrgRegisterId != Guid.Empty)
  1596. // {
  1597. // sumquery = sumquery.Where(m => m.a.CustomerOrgRegisterId == item.CustomerOrgRegisterId);
  1598. // }
  1599. // if (item.CustomerOrgId != null)
  1600. // {
  1601. // var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item.CustomerOrgId.Value);
  1602. // sumquery = sumquery.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId));
  1603. // }
  1604. // if (!string.IsNullOrEmpty(item.StartDate) && !string.IsNullOrEmpty(item.EndDate))
  1605. // {
  1606. // if (item.DateType == '1')
  1607. // {
  1608. // sumquery = sumquery.Where(m => m.a.CreationTime >= Convert.ToDateTime(item.StartDate) &&
  1609. // m.a.CreationTime < Convert.ToDateTime(item.EndDate).AddDays(1));
  1610. // }
  1611. // else if (item.DateType == '2')
  1612. // {
  1613. // sumquery = sumquery.Where(m => m.a.MedicalStartDate != null && m.a.MedicalStartDate >= Convert.ToDateTime(item.StartDate) &&
  1614. // m.a.MedicalStartDate.Value < Convert.ToDateTime(item.EndDate).AddDays(1));
  1615. // }
  1616. // else if (item.DateType == '3')
  1617. // {
  1618. // sumquery = sumquery.Where(m => m.a.SummaryDate != null && m.a.SummaryDate.Value >= Convert.ToDateTime(item.StartDate) &&
  1619. // m.a.SummaryDate.Value < Convert.ToDateTime(item.EndDate).AddDays(1));
  1620. // }
  1621. // else if (item.DateType == '4')
  1622. // {
  1623. // sumquery = sumquery.Where(m => m.CheckDate != null && m.CheckDate.Value >= Convert.ToDateTime(item.StartDate) &&
  1624. // m.CheckDate.Value < Convert.ToDateTime(item.EndDate).AddDays(1));
  1625. // }
  1626. // }
  1627. // if (input.CustomerOrgs.Count > 1)
  1628. // {
  1629. // foreach (var item2 in input.CustomerOrgs)
  1630. // {
  1631. // if (input.CustomerOrgs.IndexOf(item2) > 0)
  1632. // {
  1633. // var newquery = query;
  1634. // if (item2.CustomerOrgGroupId.Any())
  1635. // {
  1636. // newquery = newquery.Where(m => m.a.CustomerOrgGroupId != null && item2.CustomerOrgGroupId.Contains(m.a.CustomerOrgGroupId.Value));
  1637. // }
  1638. // if (item2.CustomerOrgRegisterId != null && item2.CustomerOrgRegisterId != Guid.Empty)
  1639. // {
  1640. // newquery = newquery.Where(m => m.a.CustomerOrgRegisterId == item2.CustomerOrgRegisterId);
  1641. // }
  1642. // if (item2.CustomerOrgId != null)
  1643. // {
  1644. // var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item2.CustomerOrgId.Value);
  1645. // newquery = newquery.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId));
  1646. // }
  1647. // if (!string.IsNullOrEmpty(item2.StartDate) && !string.IsNullOrEmpty(item2.EndDate))
  1648. // {
  1649. // if (item2.DateType == '1')
  1650. // {
  1651. // newquery = newquery.Where(m => m.a.CreationTime >= Convert.ToDateTime(item2.StartDate) &&
  1652. // m.a.CreationTime < Convert.ToDateTime(item2.EndDate).AddDays(1));
  1653. // }
  1654. // else if (item2.DateType == '2')
  1655. // {
  1656. // newquery = newquery.Where(m => m.a.MedicalStartDate != null && m.a.MedicalStartDate.Value >= Convert.ToDateTime(item2.StartDate) &&
  1657. // m.a.MedicalStartDate.Value < Convert.ToDateTime(item2.EndDate).AddDays(1));
  1658. // }
  1659. // else if (item2.DateType == '3')
  1660. // {
  1661. // newquery = newquery.Where(m => m.a.SummaryDate != null && m.a.SummaryDate.Value >= Convert.ToDateTime(item2.StartDate) &&
  1662. // m.a.SummaryDate.Value < Convert.ToDateTime(item2.EndDate).AddDays(1));
  1663. // }
  1664. // else if (item2.DateType == '4')
  1665. // {
  1666. // newquery = newquery.Where(m => m.CheckDate != null && m.CheckDate.Value >= Convert.ToDateTime(item2.StartDate) &&
  1667. // m.CheckDate.Value < Convert.ToDateTime(item2.EndDate).AddDays(1));
  1668. // }
  1669. // }
  1670. // sumquery = sumquery.Union(newquery);
  1671. // }
  1672. // }
  1673. // }
  1674. // }
  1675. // if (!string.IsNullOrEmpty(input.PatientName))
  1676. // {
  1677. // sumquery = sumquery.Where(m => m.a.PatientName != null && m.a.PatientName.Contains(input.PatientName));
  1678. // }
  1679. // if (input.SexId != null)
  1680. // {
  1681. // sumquery = sumquery.Where(m => m.a.SexId == input.SexId);
  1682. // }
  1683. // if (input.CheckDoctorIds.Any())
  1684. // {
  1685. // sumquery = sumquery.Where(m => input.CheckDoctorIds.Contains(m.CheckDoctorId));
  1686. // }
  1687. // if (input.CompleteFlag != null)
  1688. // {
  1689. // sumquery = sumquery.Where(m => m.a.CompleteFlag == input.CompleteFlag);
  1690. // }
  1691. // else
  1692. // {
  1693. // //直接过滤
  1694. // sumquery = sumquery.Where(m => m.a.CompleteFlag != PatientRegisterCompleteFlag.PreRegistration);
  1695. // }
  1696. // if (input.IsAudit != null)
  1697. // {
  1698. // sumquery = sumquery.Where(m => m.a.IsAudit == input.IsAudit);
  1699. // }
  1700. // if (input.Asbitems.Any())
  1701. // {
  1702. // sumquery = sumquery.Where(m => input.Asbitems.Contains(m.AsbitemId));
  1703. // }
  1704. // //if (input.IsPicture == 'Y')
  1705. // //{
  1706. // // //查询有图数据
  1707. // // var query_picture = from a in await _registerCheckAsbitemRepository.GetQueryableAsync()
  1708. // // join b in await _registerCheckPictureRepository.GetQueryableAsync() on a.RegisterCheckId equals b.RegisterCheckId
  1709. // // select a.PatientRegisterId;
  1710. // // sumquery = sumquery.Where(m => query_picture.Contains(m.a.Id));
  1711. // //}
  1712. // if (input.AsbitemCompleteFlag != null)
  1713. // {
  1714. // sumquery = sumquery.Where(m => m.RegisterCheckCompleteFlag == input.AsbitemCompleteFlag);
  1715. // }
  1716. // if (input.AsbitemIsAudit != null)
  1717. // {
  1718. // sumquery = sumquery.Where(m => m.RegisterCheckIsAudit == input.AsbitemIsAudit);
  1719. // }
  1720. // if (input.MedicalTypeIds.Any())
  1721. // {
  1722. // sumquery = sumquery.Where(m => m.a.MedicalTypeId != null && input.MedicalTypeIds.Contains(m.a.MedicalTypeId.Value));
  1723. // }
  1724. // if (input.PersonnelTypeIds.Any())
  1725. // {
  1726. // sumquery = sumquery.Where(m => m.a.PersonnelTypeId != null && input.PersonnelTypeIds.Contains(m.a.PersonnelTypeId.Value));
  1727. // }
  1728. // #region 增加项目类别权限
  1729. // List<Guid> asbitemIds = new List<Guid>();
  1730. // string AdminId = _configuration.GetValue<string>("AdminId");
  1731. // if (_currentUser.Id.Value != Guid.Parse(AdminId))
  1732. // {
  1733. // asbitemIds = (from userItemType in await _userItemTypeRepository.GetQueryableAsync()
  1734. // join asbitem in await _asbitemRepository.GetQueryableAsync() on userItemType.ItemTypeId equals asbitem.ItemTypeId
  1735. // where userItemType.UserId == _currentUser.Id.Value
  1736. // select asbitem.Id).ToList();
  1737. // }
  1738. // #endregion
  1739. // var sumqueryGroup = sumquery.ToList().GroupBy(g => g.a.Id);
  1740. // List<PatientRegisterOrNoDto> entlist = new List<PatientRegisterOrNoDto>();
  1741. // foreach (var s in sumqueryGroup.OrderBy(o => o.Key))
  1742. // {
  1743. // bool IsDisplay = false;
  1744. // if (_currentUser.Id.Value == Guid.Parse(AdminId))
  1745. // {
  1746. // IsDisplay = true;
  1747. // }
  1748. // else if (s.Where(m => asbitemIds.Contains(m.AsbitemId)).Count() > 0)
  1749. // {
  1750. // IsDisplay = true;
  1751. // }
  1752. // if (IsDisplay)
  1753. // {
  1754. // entlist.Add(new PatientRegisterOrNoDto
  1755. // {
  1756. // CreationTime = s.FirstOrDefault().a.CreationTime,
  1757. // CreatorId = s.FirstOrDefault().a.CreatorId,
  1758. // Id = s.FirstOrDefault().a.Id,
  1759. // LastModificationTime = s.FirstOrDefault().a.LastModificationTime,
  1760. // LastModifierId = s.FirstOrDefault().a.LastModifierId,
  1761. // ThirdInfo = s.FirstOrDefault().a.ThirdInfo,
  1762. // SummaryDoctorId = s.FirstOrDefault().a.SummaryDoctorId,
  1763. // SummaryDate = DataHelper.ConversionDateToString(s.FirstOrDefault().a.SummaryDate),
  1764. // SexId = s.FirstOrDefault().a.SexId,
  1765. // Age = s.FirstOrDefault().a.Age,
  1766. // AuditDate = DataHelper.ConversionDateToString(s.FirstOrDefault().a.AuditDate),
  1767. // AuditDoctorId = s.FirstOrDefault().a.AuditDoctorId,
  1768. // BirthDate = DataHelper.ConversionDateToString(s.FirstOrDefault().a.BirthDate),
  1769. // CompleteFlag = s.FirstOrDefault().a.CompleteFlag,
  1770. // CustomerOrgGroupId = s.FirstOrDefault().a.CustomerOrgGroupId,
  1771. // CustomerOrgId = s.FirstOrDefault().a.CustomerOrgId,
  1772. // CustomerOrgRegisterId = s.FirstOrDefault().a.CustomerOrgRegisterId,
  1773. // GuidePrintTimes = s.FirstOrDefault().a.GuidePrintTimes,
  1774. // InterposeMeasure = s.FirstOrDefault().a.InterposeMeasure,
  1775. // IsAudit = s.FirstOrDefault().a.IsAudit,
  1776. // IsLock = s.FirstOrDefault().a.IsLock,
  1777. // IsMedicalStart = s.FirstOrDefault().a.IsMedicalStart,
  1778. // IsNameHide = s.FirstOrDefault().a.IsNameHide,
  1779. // IsPhoneFollow = s.FirstOrDefault().a.IsPhoneFollow,
  1780. // IsRecoverGuide = s.FirstOrDefault().a.IsRecoverGuide,
  1781. // IsUpload = s.FirstOrDefault().a.IsUpload,
  1782. // IsVip = s.FirstOrDefault().a.IsVip,
  1783. // JobCardNo = s.FirstOrDefault().a.JobCardNo,
  1784. // JobPost = s.FirstOrDefault().a.JobPost,
  1785. // JobTitle = s.FirstOrDefault().a.JobTitle,
  1786. // MaritalStatusId = s.FirstOrDefault().a.MaritalStatusId,
  1787. // MedicalCardNo = s.FirstOrDefault().a.MedicalCardNo,
  1788. // MedicalConclusionId = s.FirstOrDefault().a.MedicalConclusionId,
  1789. // MedicalPackageId = s.FirstOrDefault().a.MedicalPackageId,
  1790. // MedicalStartDate = DataHelper.ConversionDateToString(s.FirstOrDefault().a.MedicalStartDate),
  1791. // MedicalTimes = s.FirstOrDefault().a.MedicalTimes,
  1792. // MedicalTypeId = s.FirstOrDefault().a.MedicalTypeId,
  1793. // MedicalCenterId = s.FirstOrDefault().a.MedicalCenterId,
  1794. // PatientId = s.FirstOrDefault().a.PatientId,
  1795. // PatientName = s.FirstOrDefault().a.PatientName,
  1796. // PatientRegisterNo = s.FirstOrDefault().a.PatientRegisterNo,
  1797. // PersonnelTypeId = s.FirstOrDefault().a.PersonnelTypeId,
  1798. // Photo = s.FirstOrDefault().a.Photo,
  1799. // Remark = s.FirstOrDefault().a.Remark,
  1800. // ReportPrintTimes = s.FirstOrDefault().a.ReportPrintTimes,
  1801. // Salesman = s.FirstOrDefault().a.Salesman,
  1802. // SexHormoneTermId = s.FirstOrDefault().a.SexHormoneTermId,
  1803. // CreatorName = "",
  1804. // LastModifierName = "",
  1805. // Address = s.FirstOrDefault().ab.Address, //档案表信息
  1806. // BirthPlaceId = s.FirstOrDefault().ab.BirthPlaceId,
  1807. // DisplayName = s.FirstOrDefault().ab.DisplayName,
  1808. // Email = s.FirstOrDefault().ab.Email,
  1809. // IdNo = s.FirstOrDefault().ab.IdNo,
  1810. // MobileTelephone = s.FirstOrDefault().ab.MobileTelephone,
  1811. // NationId = s.FirstOrDefault().ab.NationId,
  1812. // PatientNo = s.FirstOrDefault().ab.PatientNo,
  1813. // PatientPassword = s.FirstOrDefault().ab.PatientPassword,
  1814. // PostalCode = s.FirstOrDefault().ab.PostalCode,
  1815. // Telephone = s.FirstOrDefault().ab.Telephone,
  1816. // CustomerOrgName = _cacheService.GetCustomerOrgNameAsync(s.FirstOrDefault().a.CustomerOrgId).Result,
  1817. // CustomerOrgParentId = _cacheService.GetTopCustomerOrgAsync(s.FirstOrDefault().a.CustomerOrgId).Result.Id,
  1818. // CustomerOrgParentName = _cacheService.GetTopCustomerOrgNameAsync(s.FirstOrDefault().a.CustomerOrgId).Result,
  1819. // MedicalPackageName = s.FirstOrDefault().a.MedicalPackageId == null ? "" : _cacheService.GetMedicalPackageAsync(s.FirstOrDefault().a.MedicalPackageId.Value).GetAwaiter().GetResult().DisplayName,
  1820. // CustomerOrgGroupName = s.FirstOrDefault().a.CustomerOrgGroupId == null ? "" : _cacheService.GetCustomerOrgGroupAsync(s.FirstOrDefault().a.CustomerOrgGroupId.Value).GetAwaiter().GetResult().DisplayName,
  1821. // PersonnelTypeName = _cacheService.GetPersonnelTypeNameAsync(s.FirstOrDefault().a.PersonnelTypeId).GetAwaiter().GetResult(),
  1822. // MaritalStatusName = _cacheService.GetMaritalStatusNameAsync(s.FirstOrDefault().a.MaritalStatusId).GetAwaiter().GetResult(),
  1823. // MedicalTypeName = _cacheService.GetMedicalTypeNameAsync(s.FirstOrDefault().a.MedicalTypeId).GetAwaiter().GetResult(),
  1824. // SexName = _cacheService.GetSexNameAsync(s.FirstOrDefault().a.SexId).GetAwaiter().GetResult()
  1825. // });
  1826. // }
  1827. // }
  1828. // int totalCount = entlist.Count;
  1829. // entlist = entlist.Skip(input.SkipCount * input.MaxResultCount).Take(input.MaxResultCount).ToList();
  1830. // return new PagedResultDto<PatientRegisterOrNoDto>(totalCount, entlist);
  1831. //}
  1832. /// <summary>
  1833. /// 体检记录查询 医生诊台
  1834. /// </summary>
  1835. /// <param name="input"></param>
  1836. /// <returns></returns>
  1837. [HttpPost("api/app/PatientRegister/GetDoctorPeisRecordList")]
  1838. public async Task<GetDoctorPeisRecordListDto> GetDoctorPeisRecordListAsync(DoctorPeisRecordListInputDto input)
  1839. {
  1840. var queryPatientRegisterIds = from patientRegister in await _repository.GetQueryableAsync()
  1841. join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id
  1842. join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId
  1843. join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
  1844. join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id
  1845. where asbitem.IsCheck == 'Y'
  1846. select new
  1847. {
  1848. patientRegister,
  1849. patient,
  1850. registerCheckAsbitem = new
  1851. {
  1852. registerCheckAsbitem.AsbitemId
  1853. },
  1854. registerCheck = new
  1855. {
  1856. registerCheck.CompleteFlag,
  1857. registerCheck.IsAudit,
  1858. registerCheck.CheckDoctorId,
  1859. registerCheck.CheckDate
  1860. }
  1861. };
  1862. var sumquery = queryPatientRegisterIds;
  1863. if (input.CustomerOrgs.Any())
  1864. {
  1865. var item = input.CustomerOrgs[0];
  1866. if (item.CustomerOrgGroupId.Any())
  1867. {
  1868. sumquery = sumquery.Where(m => m.patientRegister.CustomerOrgGroupId != null && item.CustomerOrgGroupId.Contains(m.patientRegister.CustomerOrgGroupId.Value));
  1869. }
  1870. if (item.CustomerOrgRegisterId != null && item.CustomerOrgRegisterId != Guid.Empty)
  1871. {
  1872. sumquery = sumquery.Where(m => m.patientRegister.CustomerOrgRegisterId == item.CustomerOrgRegisterId);
  1873. }
  1874. if (item.CustomerOrgId != null)
  1875. {
  1876. var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item.CustomerOrgId.Value);
  1877. sumquery = sumquery.Where(m => CustomerOrgIds.Contains(m.patientRegister.CustomerOrgId));
  1878. }
  1879. if (!string.IsNullOrEmpty(item.StartDate) && !string.IsNullOrEmpty(item.EndDate))
  1880. {
  1881. if (item.DateType == '1')
  1882. {
  1883. sumquery = sumquery.Where(m => m.patientRegister.CreationTime >= Convert.ToDateTime(item.StartDate) &&
  1884. m.patientRegister.CreationTime < Convert.ToDateTime(item.EndDate).AddDays(1));
  1885. }
  1886. else if (item.DateType == '2')
  1887. {
  1888. sumquery = sumquery.Where(m => m.patientRegister.MedicalStartDate != null && m.patientRegister.MedicalStartDate >= Convert.ToDateTime(item.StartDate) &&
  1889. m.patientRegister.MedicalStartDate.Value < Convert.ToDateTime(item.EndDate).AddDays(1));
  1890. }
  1891. else if (item.DateType == '3')
  1892. {
  1893. sumquery = sumquery.Where(m => m.patientRegister.SummaryDate != null && m.patientRegister.SummaryDate.Value >= Convert.ToDateTime(item.StartDate) &&
  1894. m.patientRegister.SummaryDate.Value < Convert.ToDateTime(item.EndDate).AddDays(1));
  1895. }
  1896. else if (item.DateType == '4')
  1897. {
  1898. sumquery = sumquery.Where(m => m.registerCheck.CheckDate != null && m.registerCheck.CheckDate.Value >= Convert.ToDateTime(item.StartDate) &&
  1899. m.registerCheck.CheckDate.Value < Convert.ToDateTime(item.EndDate).AddDays(1));
  1900. }
  1901. }
  1902. if (input.CustomerOrgs.Count > 1)
  1903. {
  1904. foreach (var item2 in input.CustomerOrgs)
  1905. {
  1906. if (input.CustomerOrgs.IndexOf(item2) > 0)
  1907. {
  1908. var newquery = queryPatientRegisterIds;
  1909. if (item2.CustomerOrgGroupId.Any())
  1910. {
  1911. newquery = newquery.Where(m => m.patientRegister.CustomerOrgGroupId != null && item2.CustomerOrgGroupId.Contains(m.patientRegister.CustomerOrgGroupId.Value));
  1912. }
  1913. if (item2.CustomerOrgRegisterId != null && item2.CustomerOrgRegisterId != Guid.Empty)
  1914. {
  1915. newquery = newquery.Where(m => m.patientRegister.CustomerOrgRegisterId == item2.CustomerOrgRegisterId);
  1916. }
  1917. if (item2.CustomerOrgId != null)
  1918. {
  1919. var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item2.CustomerOrgId.Value);
  1920. newquery = newquery.Where(m => CustomerOrgIds.Contains(m.patientRegister.CustomerOrgId));
  1921. }
  1922. if (!string.IsNullOrEmpty(item2.StartDate) && !string.IsNullOrEmpty(item2.EndDate))
  1923. {
  1924. if (item2.DateType == '1')
  1925. {
  1926. newquery = newquery.Where(m => m.patientRegister.CreationTime >= Convert.ToDateTime(item2.StartDate) &&
  1927. m.patientRegister.CreationTime < Convert.ToDateTime(item2.EndDate).AddDays(1));
  1928. }
  1929. else if (item2.DateType == '2')
  1930. {
  1931. newquery = newquery.Where(m => m.patientRegister.MedicalStartDate != null && m.patientRegister.MedicalStartDate.Value >= Convert.ToDateTime(item2.StartDate) &&
  1932. m.patientRegister.MedicalStartDate.Value < Convert.ToDateTime(item2.EndDate).AddDays(1));
  1933. }
  1934. else if (item2.DateType == '3')
  1935. {
  1936. newquery = newquery.Where(m => m.patientRegister.SummaryDate != null && m.patientRegister.SummaryDate.Value >= Convert.ToDateTime(item2.StartDate) &&
  1937. m.patientRegister.SummaryDate.Value < Convert.ToDateTime(item2.EndDate).AddDays(1));
  1938. }
  1939. else if (item2.DateType == '4')
  1940. {
  1941. newquery = newquery.Where(m => m.registerCheck.CheckDate != null && m.registerCheck.CheckDate.Value >= Convert.ToDateTime(item2.StartDate) &&
  1942. m.registerCheck.CheckDate.Value < Convert.ToDateTime(item2.EndDate).AddDays(1));
  1943. }
  1944. }
  1945. sumquery = sumquery.Union(newquery);
  1946. }
  1947. }
  1948. }
  1949. }
  1950. if (!string.IsNullOrEmpty(input.PatientName))
  1951. {
  1952. sumquery = sumquery.Where(m => m.patientRegister.PatientName != null && m.patientRegister.PatientName.Contains(input.PatientName));
  1953. }
  1954. if (input.SexId != null)
  1955. {
  1956. sumquery = sumquery.Where(m => m.patientRegister.SexId == input.SexId);
  1957. }
  1958. if (input.CheckDoctorIds.Any())
  1959. {
  1960. sumquery = sumquery.Where(m => input.CheckDoctorIds.Contains(m.registerCheck.CheckDoctorId));
  1961. }
  1962. if (input.CompleteFlag != null)
  1963. {
  1964. sumquery = sumquery.Where(m => m.patientRegister.CompleteFlag == input.CompleteFlag);
  1965. }
  1966. else
  1967. {
  1968. //直接过滤
  1969. sumquery = sumquery.Where(m => m.patientRegister.CompleteFlag != PatientRegisterCompleteFlag.PreRegistration);
  1970. }
  1971. if (input.IsAudit != null)
  1972. {
  1973. sumquery = sumquery.Where(m => m.patientRegister.IsAudit == input.IsAudit);
  1974. }
  1975. if (input.Asbitems.Any())
  1976. {
  1977. sumquery = sumquery.Where(m => input.Asbitems.Contains(m.registerCheckAsbitem.AsbitemId));
  1978. }
  1979. if (input.AsbitemCompleteFlag != null)
  1980. {
  1981. sumquery = sumquery.Where(m => m.registerCheck.CompleteFlag == input.AsbitemCompleteFlag);
  1982. }
  1983. if (input.AsbitemIsAudit != null)
  1984. {
  1985. sumquery = sumquery.Where(m => m.registerCheck.IsAudit == input.AsbitemIsAudit);
  1986. }
  1987. if (input.MedicalTypeIds.Any())
  1988. {
  1989. sumquery = sumquery.Where(m => m.patientRegister.MedicalTypeId != null && input.MedicalTypeIds.Contains(m.patientRegister.MedicalTypeId.Value));
  1990. }
  1991. if (input.PersonnelTypeIds.Any())
  1992. {
  1993. sumquery = sumquery.Where(m => m.patientRegister.PersonnelTypeId != null && input.PersonnelTypeIds.Contains(m.patientRegister.PersonnelTypeId.Value));
  1994. }
  1995. #region 增加项目类别权限
  1996. List<Guid> asbitemIds = new List<Guid>();
  1997. string AdminId = _configuration.GetValue<string>("AdminId");
  1998. if (_currentUser.Id.Value != Guid.Parse(AdminId))
  1999. {
  2000. asbitemIds = (from userItemType in await _userItemTypeRepository.GetQueryableAsync()
  2001. join asbitem in await _asbitemRepository.GetQueryableAsync() on userItemType.ItemTypeId equals asbitem.ItemTypeId
  2002. where userItemType.UserId == _currentUser.Id.Value
  2003. select asbitem.Id).ToList();
  2004. sumquery = sumquery.Where(m => asbitemIds.Contains(m.registerCheckAsbitem.AsbitemId));
  2005. }
  2006. #endregion
  2007. List<GetDoctorPeisRecordListCheckStatistics> checkStatisticsList = new List<GetDoctorPeisRecordListCheckStatistics>();
  2008. if (input.Asbitems.Any())
  2009. {
  2010. //统计项目人数
  2011. var checkedPatientRegisterList = sumquery.Where(m => m.registerCheck.CompleteFlag == RegisterCheckCompleteFlag.Checked)
  2012. .Select(s => new { s.patientRegister.Id, s.patientRegister.SexId }).Distinct().ToList();
  2013. var unCheckedPatientRegisterList = sumquery.Where(m => m.registerCheck.CompleteFlag == RegisterCheckCompleteFlag.UnChecked)
  2014. .Select(s => new { s.patientRegister.Id, s.patientRegister.SexId }).Distinct().ToList();
  2015. var giveUpCheckedPatientRegisterList = sumquery.Where(m => m.registerCheck.CompleteFlag == RegisterCheckCompleteFlag.GiveUpChecked)
  2016. .Select(s => new { s.patientRegister.Id, s.patientRegister.SexId }).Distinct().ToList();
  2017. checkStatisticsList.Add(new GetDoctorPeisRecordListCheckStatistics
  2018. {
  2019. CheckStatus = "已检",
  2020. MaleCount = checkedPatientRegisterList.Count(c => c.SexId == SexFlag.Male),
  2021. FemaleCount = checkedPatientRegisterList.Count(c => c.SexId == SexFlag.Female),
  2022. UnknownCount = checkedPatientRegisterList.Count(c => c.SexId == SexFlag.UnKnown)
  2023. });
  2024. checkStatisticsList.Add(new GetDoctorPeisRecordListCheckStatistics
  2025. {
  2026. CheckStatus = "未检",
  2027. MaleCount = unCheckedPatientRegisterList.Count(c => c.SexId == SexFlag.Male),
  2028. FemaleCount = unCheckedPatientRegisterList.Count(c => c.SexId == SexFlag.Female),
  2029. UnknownCount = unCheckedPatientRegisterList.Count(c => c.SexId == SexFlag.UnKnown)
  2030. });
  2031. checkStatisticsList.Add(new GetDoctorPeisRecordListCheckStatistics
  2032. {
  2033. CheckStatus = "弃检",
  2034. MaleCount = giveUpCheckedPatientRegisterList.Count(c => c.SexId == SexFlag.Male),
  2035. FemaleCount = giveUpCheckedPatientRegisterList.Count(c => c.SexId == SexFlag.Female),
  2036. UnknownCount = giveUpCheckedPatientRegisterList.Count(c => c.SexId == SexFlag.UnKnown)
  2037. });
  2038. }
  2039. var patientRegisterIds = sumquery.Select(s => new
  2040. {
  2041. patientRegisterId = s.patientRegister.Id,
  2042. medicalStartDate = s.patientRegister.MedicalStartDate
  2043. }).Distinct();
  2044. int totalCount = patientRegisterIds.Count();
  2045. var pagedIds = patientRegisterIds.OrderBy(o => o.medicalStartDate).Skip(input.SkipCount * input.MaxResultCount).Take(input.MaxResultCount)
  2046. .Select(s => s.patientRegisterId).ToList();
  2047. var queryList = (from patientRegister in await _repository.GetQueryableAsync()
  2048. join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id
  2049. where pagedIds.Contains(patientRegister.Id)
  2050. select new
  2051. {
  2052. patientRegister,
  2053. patient
  2054. }).ToList();
  2055. List<PatientRegisterOrNoDto> entlist = new List<PatientRegisterOrNoDto>();
  2056. foreach (var item in queryList)
  2057. {
  2058. var patientRegisterFirst = item.patientRegister;
  2059. var patientFirst = item.patient;
  2060. entlist.Add(new PatientRegisterOrNoDto
  2061. {
  2062. CreationTime = patientRegisterFirst.CreationTime,
  2063. CreatorId = patientRegisterFirst.CreatorId,
  2064. Id = patientRegisterFirst.Id,
  2065. LastModificationTime = patientRegisterFirst.LastModificationTime,
  2066. LastModifierId = patientRegisterFirst.LastModifierId,
  2067. ThirdInfo = patientRegisterFirst.ThirdInfo,
  2068. SummaryDoctorId = patientRegisterFirst.SummaryDoctorId,
  2069. SummaryDate = DataHelper.ConversionDateToString(patientRegisterFirst.SummaryDate),
  2070. SexId = patientRegisterFirst.SexId,
  2071. Age = patientRegisterFirst.Age,
  2072. AuditDate = DataHelper.ConversionDateToString(patientRegisterFirst.AuditDate),
  2073. AuditDoctorId = patientRegisterFirst.AuditDoctorId,
  2074. BirthDate = DataHelper.ConversionDateToString(patientRegisterFirst.BirthDate),
  2075. CompleteFlag = patientRegisterFirst.CompleteFlag,
  2076. CustomerOrgGroupId = patientRegisterFirst.CustomerOrgGroupId,
  2077. CustomerOrgId = patientRegisterFirst.CustomerOrgId,
  2078. CustomerOrgRegisterId = patientRegisterFirst.CustomerOrgRegisterId,
  2079. GuidePrintTimes = patientRegisterFirst.GuidePrintTimes,
  2080. InterposeMeasure = patientRegisterFirst.InterposeMeasure,
  2081. IsAudit = patientRegisterFirst.IsAudit,
  2082. IsLock = patientRegisterFirst.IsLock,
  2083. IsMedicalStart = patientRegisterFirst.IsMedicalStart,
  2084. IsNameHide = patientRegisterFirst.IsNameHide,
  2085. IsPhoneFollow = patientRegisterFirst.IsPhoneFollow,
  2086. IsRecoverGuide = patientRegisterFirst.IsRecoverGuide,
  2087. IsUpload = patientRegisterFirst.IsUpload,
  2088. IsVip = patientRegisterFirst.IsVip,
  2089. JobCardNo = patientRegisterFirst.JobCardNo,
  2090. JobPost = patientRegisterFirst.JobPost,
  2091. JobTitle = patientRegisterFirst.JobTitle,
  2092. MaritalStatusId = patientRegisterFirst.MaritalStatusId,
  2093. MedicalCardNo = patientRegisterFirst.MedicalCardNo,
  2094. MedicalConclusionId = patientRegisterFirst.MedicalConclusionId,
  2095. MedicalPackageId = patientRegisterFirst.MedicalPackageId,
  2096. MedicalStartDate = DataHelper.ConversionDateToString(patientRegisterFirst.MedicalStartDate),
  2097. MedicalTimes = patientRegisterFirst.MedicalTimes,
  2098. MedicalTypeId = patientRegisterFirst.MedicalTypeId,
  2099. MedicalCenterId = patientRegisterFirst.MedicalCenterId,
  2100. PatientId = patientRegisterFirst.PatientId,
  2101. PatientName = patientRegisterFirst.PatientName,
  2102. PatientRegisterNo = patientRegisterFirst.PatientRegisterNo,
  2103. PersonnelTypeId = patientRegisterFirst.PersonnelTypeId,
  2104. Photo = patientRegisterFirst.Photo,
  2105. Remark = patientRegisterFirst.Remark,
  2106. ReportPrintTimes = patientRegisterFirst.ReportPrintTimes,
  2107. Salesman = patientRegisterFirst.Salesman,
  2108. SexHormoneTermId = patientRegisterFirst.SexHormoneTermId,
  2109. CreatorName = _cacheService.GetSurnameAsync(patientRegisterFirst.CreatorId).GetAwaiter().GetResult(),
  2110. LastModifierName = _cacheService.GetSurnameAsync(patientRegisterFirst.LastModifierId).GetAwaiter().GetResult(),
  2111. Address = patientFirst.Address, //档案表信息
  2112. BirthPlaceId = patientFirst.BirthPlaceId,
  2113. DisplayName = patientFirst.DisplayName,
  2114. Email = patientFirst.Email,
  2115. IdNo = patientFirst.IdNo,
  2116. MobileTelephone = patientFirst.MobileTelephone,
  2117. NationId = patientFirst.NationId,
  2118. PatientNo = patientFirst.PatientNo,
  2119. PatientPassword = patientFirst.PatientPassword,
  2120. PostalCode = patientFirst.PostalCode,
  2121. Telephone = patientFirst.Telephone,
  2122. CustomerOrgName = _cacheService.GetCustomerOrgNameAsync(patientRegisterFirst.CustomerOrgId).Result,
  2123. CustomerOrgParentId = _cacheService.GetTopCustomerOrgAsync(patientRegisterFirst.CustomerOrgId).Result.Id,
  2124. CustomerOrgParentName = _cacheService.GetTopCustomerOrgNameAsync(patientRegisterFirst.CustomerOrgId).Result,
  2125. MedicalPackageName = patientRegisterFirst.MedicalPackageId == null ? "" : _cacheService.GetMedicalPackageAsync(patientRegisterFirst.MedicalPackageId.Value).GetAwaiter().GetResult().DisplayName,
  2126. CustomerOrgGroupName = patientRegisterFirst.CustomerOrgGroupId == null ? "" : _cacheService.GetCustomerOrgGroupAsync(patientRegisterFirst.CustomerOrgGroupId.Value).GetAwaiter().GetResult().DisplayName,
  2127. PersonnelTypeName = _cacheService.GetPersonnelTypeNameAsync(patientRegisterFirst.PersonnelTypeId).GetAwaiter().GetResult(),
  2128. MaritalStatusName = _cacheService.GetMaritalStatusNameAsync(patientRegisterFirst.MaritalStatusId).GetAwaiter().GetResult(),
  2129. MedicalTypeName = _cacheService.GetMedicalTypeNameAsync(patientRegisterFirst.MedicalTypeId).GetAwaiter().GetResult(),
  2130. SexName = _cacheService.GetSexNameAsync(patientRegisterFirst.SexId).GetAwaiter().GetResult(),
  2131. SummaryDoctorName = _cacheService.GetSurnameAsync(patientRegisterFirst.SummaryDoctorId).GetAwaiter().GetResult(),
  2132. AuditDoctorName = _cacheService.GetSurnameAsync(patientRegisterFirst.AuditDoctorId).GetAwaiter().GetResult()
  2133. });
  2134. }
  2135. var pageDto = new PagedResultDto<PatientRegisterOrNoDto>(totalCount, entlist);
  2136. var entDto = new GetDoctorPeisRecordListDto();
  2137. entDto.TotalCount = pageDto.TotalCount;
  2138. entDto.Items = pageDto.Items;
  2139. entDto.CheckStatistics = checkStatisticsList;
  2140. return entDto;
  2141. }
  2142. /// <summary>
  2143. /// 体检记录查询 总症医生诊台
  2144. /// </summary>
  2145. /// <param name="input"></param>
  2146. /// <returns></returns>
  2147. [HttpPost("api/app/PatientRegister/GetSumDoctorPeisRecordList")]
  2148. public async Task<PagedResultDto<PatientRegisterOrNoDto>> GetSumDoctorPeisRecordListAsync(SumDoctorPeisRecordListInputtDto input)
  2149. {
  2150. var query = from a in await _repository.GetQueryableAsync()
  2151. join b in await _patientRepository.GetQueryableAsync() on a.PatientId equals b.Id into bb
  2152. from ab in bb.DefaultIfEmpty()
  2153. join c in await _registerCheckRepository.GetQueryableAsync() on a.Id equals c.PatientRegisterId into cc
  2154. from ac in cc.DefaultIfEmpty()
  2155. join d in await _registerCheckAsbitemRepository.GetQueryableAsync() on ac.Id equals d.RegisterCheckId into dd
  2156. from ad in dd.DefaultIfEmpty()
  2157. join e in await _asbitemRepository.GetQueryableAsync() on ad.AsbitemId equals e.Id
  2158. where e.IsCheck == 'Y'
  2159. select new
  2160. {
  2161. a,
  2162. ab,
  2163. AsbitemId = ad != null ? ad.AsbitemId : Guid.Empty,
  2164. RegisterCheckCompleteFlag = ac != null ? ac.CompleteFlag : '9',
  2165. RegisterCheckIsAudit = ac != null ? ac.IsAudit : '9',
  2166. CheckDoctorId = ac.CheckDoctorId
  2167. };
  2168. var sumquery = query;
  2169. if (input.CustomerOrgs.Any())
  2170. {
  2171. var item = input.CustomerOrgs[0];
  2172. if (item.CustomerOrgGroupId.Any())
  2173. {
  2174. sumquery = sumquery.Where(m => m.a.CustomerOrgGroupId != null && item.CustomerOrgGroupId.Contains(m.a.CustomerOrgGroupId.Value));
  2175. }
  2176. if (item.CustomerOrgRegisterId != null && item.CustomerOrgRegisterId != Guid.Empty)
  2177. {
  2178. sumquery = sumquery.Where(m => m.a.CustomerOrgRegisterId == item.CustomerOrgRegisterId);
  2179. }
  2180. if (item.CustomerOrgId != null)
  2181. {
  2182. var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item.CustomerOrgId.Value);
  2183. sumquery = sumquery.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId));
  2184. }
  2185. if (!string.IsNullOrEmpty(item.StartDate) && !string.IsNullOrEmpty(item.EndDate))
  2186. {
  2187. if (item.DateType == '1')
  2188. {
  2189. sumquery = sumquery.Where(m => m.a.CreationTime >= Convert.ToDateTime(item.StartDate) &&
  2190. m.a.CreationTime < Convert.ToDateTime(item.EndDate).AddDays(1));
  2191. }
  2192. else if (item.DateType == '2')
  2193. {
  2194. sumquery = sumquery.Where(m => m.a.MedicalStartDate != null && m.a.MedicalStartDate >= Convert.ToDateTime(item.StartDate) &&
  2195. m.a.MedicalStartDate.Value < Convert.ToDateTime(item.EndDate).AddDays(1));
  2196. }
  2197. else if (item.DateType == '3')
  2198. {
  2199. sumquery = sumquery.Where(m => m.a.SummaryDate != null && m.a.SummaryDate.Value >= Convert.ToDateTime(item.StartDate) &&
  2200. m.a.SummaryDate.Value < Convert.ToDateTime(item.EndDate).AddDays(1));
  2201. }
  2202. }
  2203. if (input.CustomerOrgs.Count > 1)
  2204. {
  2205. foreach (var item2 in input.CustomerOrgs)
  2206. {
  2207. if (input.CustomerOrgs.IndexOf(item2) > 0)
  2208. {
  2209. var newquery = query;
  2210. if (item2.CustomerOrgGroupId.Any())
  2211. {
  2212. newquery = newquery.Where(m => m.a.CustomerOrgGroupId != null && item2.CustomerOrgGroupId.Contains(m.a.CustomerOrgGroupId.Value));
  2213. }
  2214. if (item2.CustomerOrgRegisterId != null && item2.CustomerOrgRegisterId != Guid.Empty)
  2215. {
  2216. newquery = newquery.Where(m => m.a.CustomerOrgRegisterId == item2.CustomerOrgRegisterId);
  2217. }
  2218. if (item2.CustomerOrgId != null)
  2219. {
  2220. var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item2.CustomerOrgId.Value);
  2221. newquery = newquery.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId));
  2222. }
  2223. if (!string.IsNullOrEmpty(item2.StartDate) && !string.IsNullOrEmpty(item2.EndDate))
  2224. {
  2225. if (item2.DateType == '1')
  2226. {
  2227. newquery = newquery.Where(m => m.a.CreationTime >= Convert.ToDateTime(item2.StartDate) &&
  2228. m.a.CreationTime < Convert.ToDateTime(item2.EndDate).AddDays(1));
  2229. }
  2230. else if (item2.DateType == '2')
  2231. {
  2232. newquery = newquery.Where(m => m.a.MedicalStartDate != null && m.a.MedicalStartDate.Value >= Convert.ToDateTime(item2.StartDate) &&
  2233. m.a.MedicalStartDate.Value < Convert.ToDateTime(item2.EndDate).AddDays(1));
  2234. }
  2235. else if (item2.DateType == '3')
  2236. {
  2237. newquery = newquery.Where(m => m.a.SummaryDate != null && m.a.SummaryDate.Value >= Convert.ToDateTime(item2.StartDate) &&
  2238. m.a.SummaryDate.Value < Convert.ToDateTime(item2.EndDate).AddDays(1));
  2239. }
  2240. }
  2241. sumquery = sumquery.Union(newquery);
  2242. }
  2243. }
  2244. }
  2245. }
  2246. if (!string.IsNullOrEmpty(input.PatientName))
  2247. {
  2248. sumquery = sumquery.Where(m => m.a.PatientName != null && m.a.PatientName.Contains(input.PatientName));
  2249. }
  2250. if (input.SexId != null)
  2251. {
  2252. sumquery = sumquery.Where(m => m.a.SexId == input.SexId);
  2253. }
  2254. if (input.CheckDoctorIds.Any())
  2255. {
  2256. sumquery = sumquery.Where(m => input.CheckDoctorIds.Contains(m.CheckDoctorId));
  2257. }
  2258. if (input.CompleteFlag != null
  2259. && input.CompleteFlag != PatientRegisterCompleteFlag.ItemCheckUnSumCheck)
  2260. {
  2261. sumquery = sumquery.Where(m => m.a.CompleteFlag == input.CompleteFlag);
  2262. }
  2263. else
  2264. {
  2265. //直接过滤
  2266. sumquery = sumquery.Where(m => m.a.CompleteFlag != PatientRegisterCompleteFlag.PreRegistration);
  2267. }
  2268. if (input.IsAudit != null)
  2269. {
  2270. sumquery = sumquery.Where(m => m.a.IsAudit == input.IsAudit);
  2271. }
  2272. if (input.Asbitems.Any())
  2273. {
  2274. sumquery = sumquery.Where(m => input.Asbitems.Contains(m.AsbitemId));
  2275. }
  2276. if (input.AsbitemCompleteFlag != null)
  2277. {
  2278. sumquery = sumquery.Where(m => m.RegisterCheckCompleteFlag == input.AsbitemCompleteFlag);
  2279. }
  2280. if (input.AsbitemIsAudit != null)
  2281. {
  2282. sumquery = sumquery.Where(m => m.RegisterCheckIsAudit == input.AsbitemIsAudit);
  2283. }
  2284. if (input.MedicalTypeIds.Any())
  2285. {
  2286. sumquery = sumquery.Where(m => m.a.MedicalTypeId != null && input.MedicalTypeIds.Contains(m.a.MedicalTypeId.Value));
  2287. }
  2288. if (input.PersonnelTypeIds.Any())
  2289. {
  2290. sumquery = sumquery.Where(m => m.a.PersonnelTypeId != null && input.PersonnelTypeIds.Contains(m.a.PersonnelTypeId.Value));
  2291. }
  2292. if (input.SummaryDoctorIds.Any())
  2293. {
  2294. sumquery = sumquery.Where(m => m.a.SummaryDoctorId != null && input.SummaryDoctorIds.Contains(m.a.SummaryDoctorId.Value));
  2295. }
  2296. if (input.AuditDoctorIds.Any())
  2297. {
  2298. sumquery = sumquery.Where(m => m.a.AuditDoctorId != null && input.AuditDoctorIds.Contains(m.a.AuditDoctorId.Value));
  2299. }
  2300. var sumqueryGroup = sumquery.ToList().GroupBy(g => g.a.Id);
  2301. List<PatientRegisterOrNoDto> entlist = new List<PatientRegisterOrNoDto>();
  2302. foreach (var s in sumqueryGroup.OrderBy(o => o.Key))
  2303. {
  2304. bool IsDisplay = false;
  2305. if (input.CompleteFlag == PatientRegisterCompleteFlag.ItemCheckUnSumCheck)
  2306. {
  2307. if (s.Where(m => m.RegisterCheckCompleteFlag != RegisterCheckCompleteFlag.Checked && m.RegisterCheckCompleteFlag != RegisterCheckCompleteFlag.GiveUpChecked).Count() == 0
  2308. && s.FirstOrDefault().a.CompleteFlag != PatientRegisterCompleteFlag.SumCheck)
  2309. {
  2310. IsDisplay = true;
  2311. }
  2312. else
  2313. {
  2314. IsDisplay = false;
  2315. }
  2316. }
  2317. else
  2318. {
  2319. IsDisplay = true;
  2320. }
  2321. if (IsDisplay)
  2322. {
  2323. entlist.Add(new PatientRegisterOrNoDto
  2324. {
  2325. CreationTime = s.FirstOrDefault().a.CreationTime,
  2326. CreatorId = s.FirstOrDefault().a.CreatorId,
  2327. Id = s.FirstOrDefault().a.Id,
  2328. LastModificationTime = s.FirstOrDefault().a.LastModificationTime,
  2329. LastModifierId = s.FirstOrDefault().a.LastModifierId,
  2330. ThirdInfo = s.FirstOrDefault().a.ThirdInfo,
  2331. SummaryDoctorId = s.FirstOrDefault().a.SummaryDoctorId,
  2332. SummaryDate = DataHelper.ConversionDateToString(s.FirstOrDefault().a.SummaryDate),
  2333. SexId = s.FirstOrDefault().a.SexId,
  2334. Age = s.FirstOrDefault().a.Age,
  2335. AuditDate = DataHelper.ConversionDateToString(s.FirstOrDefault().a.AuditDate),
  2336. AuditDoctorId = s.FirstOrDefault().a.AuditDoctorId,
  2337. BirthDate = DataHelper.ConversionDateToString(s.FirstOrDefault().a.BirthDate),
  2338. CompleteFlag = s.FirstOrDefault().a.CompleteFlag,
  2339. CustomerOrgGroupId = s.FirstOrDefault().a.CustomerOrgGroupId,
  2340. CustomerOrgId = s.FirstOrDefault().a.CustomerOrgId,
  2341. CustomerOrgRegisterId = s.FirstOrDefault().a.CustomerOrgRegisterId,
  2342. GuidePrintTimes = s.FirstOrDefault().a.GuidePrintTimes,
  2343. InterposeMeasure = s.FirstOrDefault().a.InterposeMeasure,
  2344. IsAudit = s.FirstOrDefault().a.IsAudit,
  2345. IsLock = s.FirstOrDefault().a.IsLock,
  2346. IsMedicalStart = s.FirstOrDefault().a.IsMedicalStart,
  2347. IsNameHide = s.FirstOrDefault().a.IsNameHide,
  2348. IsPhoneFollow = s.FirstOrDefault().a.IsPhoneFollow,
  2349. IsRecoverGuide = s.FirstOrDefault().a.IsRecoverGuide,
  2350. IsUpload = s.FirstOrDefault().a.IsUpload,
  2351. IsVip = s.FirstOrDefault().a.IsVip,
  2352. JobCardNo = s.FirstOrDefault().a.JobCardNo,
  2353. JobPost = s.FirstOrDefault().a.JobPost,
  2354. JobTitle = s.FirstOrDefault().a.JobTitle,
  2355. MaritalStatusId = s.FirstOrDefault().a.MaritalStatusId,
  2356. MedicalCardNo = s.FirstOrDefault().a.MedicalCardNo,
  2357. MedicalConclusionId = s.FirstOrDefault().a.MedicalConclusionId,
  2358. MedicalPackageId = s.FirstOrDefault().a.MedicalPackageId,
  2359. MedicalStartDate = DataHelper.ConversionDateToString(s.FirstOrDefault().a.MedicalStartDate),
  2360. MedicalTimes = s.FirstOrDefault().a.MedicalTimes,
  2361. MedicalTypeId = s.FirstOrDefault().a.MedicalTypeId,
  2362. MedicalCenterId = s.FirstOrDefault().a.MedicalCenterId,
  2363. PatientId = s.FirstOrDefault().a.PatientId,
  2364. PatientName = s.FirstOrDefault().a.PatientName,
  2365. PatientRegisterNo = s.FirstOrDefault().a.PatientRegisterNo,
  2366. PersonnelTypeId = s.FirstOrDefault().a.PersonnelTypeId,
  2367. Photo = s.FirstOrDefault().a.Photo,
  2368. Remark = s.FirstOrDefault().a.Remark,
  2369. ReportPrintTimes = s.FirstOrDefault().a.ReportPrintTimes,
  2370. Salesman = s.FirstOrDefault().a.Salesman,
  2371. SexHormoneTermId = s.FirstOrDefault().a.SexHormoneTermId,
  2372. CreatorName = _cacheService.GetSurnameAsync(s.FirstOrDefault().a.CreatorId).GetAwaiter().GetResult(),
  2373. LastModifierName = _cacheService.GetSurnameAsync(s.FirstOrDefault().a.LastModifierId).GetAwaiter().GetResult(),
  2374. Address = s.FirstOrDefault().ab.Address, //档案表信息
  2375. BirthPlaceId = s.FirstOrDefault().ab.BirthPlaceId,
  2376. DisplayName = s.FirstOrDefault().ab.DisplayName,
  2377. Email = s.FirstOrDefault().ab.Email,
  2378. IdNo = s.FirstOrDefault().ab.IdNo,
  2379. MobileTelephone = s.FirstOrDefault().ab.MobileTelephone,
  2380. NationId = s.FirstOrDefault().ab.NationId,
  2381. PatientNo = s.FirstOrDefault().ab.PatientNo,
  2382. PatientPassword = s.FirstOrDefault().ab.PatientPassword,
  2383. PostalCode = s.FirstOrDefault().ab.PostalCode,
  2384. Telephone = s.FirstOrDefault().ab.Telephone,
  2385. CustomerOrgName = _cacheService.GetCustomerOrgNameAsync(s.FirstOrDefault().a.CustomerOrgId).Result,
  2386. CustomerOrgParentId = _cacheService.GetTopCustomerOrgAsync(s.FirstOrDefault().a.CustomerOrgId).Result.Id,
  2387. CustomerOrgParentName = _cacheService.GetTopCustomerOrgNameAsync(s.FirstOrDefault().a.CustomerOrgId).Result,
  2388. MedicalPackageName = s.FirstOrDefault().a.MedicalPackageId == null ? "" : _cacheService.GetMedicalPackageAsync(s.FirstOrDefault().a.MedicalPackageId.Value).GetAwaiter().GetResult().DisplayName,
  2389. CustomerOrgGroupName = s.FirstOrDefault().a.CustomerOrgGroupId == null ? "" : _cacheService.GetCustomerOrgGroupAsync(s.FirstOrDefault().a.CustomerOrgGroupId.Value).GetAwaiter().GetResult().DisplayName,
  2390. AuditDoctorName = _cacheService.GetSurnameAsync(s.FirstOrDefault().a.AuditDoctorId).GetAwaiter().GetResult(),
  2391. SummaryDoctorName = _cacheService.GetSurnameAsync(s.FirstOrDefault().a.SummaryDoctorId).GetAwaiter().GetResult(),
  2392. PersonnelTypeName = _cacheService.GetPersonnelTypeNameAsync(s.FirstOrDefault().a.PersonnelTypeId).GetAwaiter().GetResult(),
  2393. MaritalStatusName = _cacheService.GetMaritalStatusNameAsync(s.FirstOrDefault().a.MaritalStatusId).GetAwaiter().GetResult(),
  2394. MedicalTypeName = _cacheService.GetMedicalTypeNameAsync(s.FirstOrDefault().a.MedicalTypeId).GetAwaiter().GetResult(),
  2395. SexName = _cacheService.GetSexNameAsync(s.FirstOrDefault().a.SexId).GetAwaiter().GetResult()
  2396. });
  2397. }
  2398. }
  2399. int totalCount = entlist.Count;
  2400. entlist = entlist.Skip(input.SkipCount * input.MaxResultCount).Take(input.MaxResultCount).ToList();
  2401. return new PagedResultDto<PatientRegisterOrNoDto>(totalCount, entlist);
  2402. }
  2403. /// <summary>
  2404. /// 更新
  2405. /// </summary>
  2406. /// <param name="PatientRegisterId">登记表ID</param>
  2407. /// <param name="input">更新参数(包含档案跟登记)</param>
  2408. /// <returns></returns>
  2409. [HttpPost("api/patientregister/UpdatePatientRegisterAndAsbitems")]
  2410. public async Task<PatientRegisterDto> UpdatePatientRegisterAndAsbitemsAsync(Guid PatientRegisterId, UpdatePatientRegisterDto input)
  2411. {
  2412. var patientRegisterEnt = await Repository.GetAsync(PatientRegisterId);
  2413. var patientEnt = await _patientRepository.GetAsync(patientRegisterEnt.PatientId);
  2414. var patientRegisterSourceEntity = ObjectMapper.Map<UpdatePatientRegisterDto, UpdatePatientRegisterArg>(input);
  2415. var patientSourceEntity = ObjectMapper.Map<UpdatePatientRegisterDto, Patient>(input);
  2416. patientSourceEntity.DisplayName = input.PatientName;
  2417. await _patientManager.UpdateAsync(patientSourceEntity, patientEnt);
  2418. await _manager.UpdateAsync(patientRegisterSourceEntity, patientRegisterEnt);
  2419. await _patientRepository.UpdateAsync(patientEnt);
  2420. patientRegisterEnt = await Repository.UpdateAsync(patientRegisterEnt);
  2421. return ObjectMapper.Map<PatientRegister, PatientRegisterDto>(patientRegisterEnt);
  2422. }
  2423. /// <summary>
  2424. /// 修改人员照片
  2425. /// </summary>
  2426. /// <param name="input"></param>
  2427. /// <returns></returns>
  2428. [HttpPost]
  2429. public async Task<PatientRegisterDto> UpdatePhotoAsync(UpdatePhotoDto input)
  2430. {
  2431. var ent = await _repository.GetAsync(input.PatientRegisterId);
  2432. if (ent != null)
  2433. {
  2434. ent.Photo = input.Photo;
  2435. var newent = await _repository.UpdateAsync(ent);
  2436. return ObjectMapper.Map<PatientRegister, PatientRegisterDto>(newent);
  2437. }
  2438. else
  2439. {
  2440. return new PatientRegisterDto();
  2441. }
  2442. }
  2443. ///// <summary>
  2444. ///// 修改人员照片 二进制
  2445. ///// </summary>
  2446. ///// <param name="input"></param>
  2447. ///// <returns></returns>
  2448. //[HttpPost]
  2449. //public async Task<PatientRegisterDto> UpdatePhoto2Async(UpdatePhoto2Dto input)
  2450. //{
  2451. // var ent = await _repository.GetAsync(input.PatientRegisterId);
  2452. // if (ent != null)
  2453. // {
  2454. // ent.Photo = input.Photo;
  2455. // var newent = await _repository.UpdateAsync(ent);
  2456. // return ObjectMapper.Map<PatientRegister, PatientRegisterDto>(newent);
  2457. // }
  2458. // else
  2459. // {
  2460. // return new PatientRegisterDto();
  2461. // }
  2462. //}
  2463. //
  2464. /// <summary>
  2465. /// 上传图片 手动拼接"http://81.70.217.145/"
  2466. /// </summary>
  2467. /// <returns></returns>
  2468. public string UpLoadImg(UpdatePhotoDto input)
  2469. {
  2470. //_logger.LogInformation(input.Photo);
  2471. string imgurl = $"photo/{DateTime.Now.Year}/{DateTime.Now.Month}/{DateTime.Now.Day}/{input.PatientRegisterId}";
  2472. var isupload = ImageHelper.Base64StrToImage(input.Photo, imgurl);
  2473. if (!string.IsNullOrEmpty(isupload))
  2474. return isupload;
  2475. else
  2476. return "";
  2477. }
  2478. /// <summary>
  2479. /// 删除
  2480. /// </summary>
  2481. /// <param name="id"></param>
  2482. /// <returns></returns>
  2483. [HttpPost("api/app/PatientRegister/DeleteById")]
  2484. public async Task DeleteByIdAsync(PatientRegisterIdInputDto input)
  2485. {
  2486. if (input == null)
  2487. {
  2488. throw new UserFriendlyException("input参数不能为空");
  2489. }
  2490. await _manager.CheckAndDeleteAsync(input.PatientRegisterId);
  2491. }
  2492. /// <summary>
  2493. /// 批量删除
  2494. /// </summary>
  2495. /// <param name="input"></param>
  2496. /// <returns></returns>
  2497. [HttpPost]
  2498. public async Task DeleteManyAsync(DeletePatientRegisterManyDto input)
  2499. {
  2500. if (input.PatientRegisterIds.Count > 0)
  2501. {
  2502. var entlist = await _repository.GetListAsync(m => input.PatientRegisterIds.Contains(m.Id));
  2503. if (entlist.Count > 0)
  2504. {
  2505. foreach (var ent in entlist)
  2506. {
  2507. await _manager.CheckAndDeleteAsync(ent.Id);
  2508. }
  2509. }
  2510. }
  2511. else
  2512. {
  2513. throw new UserFriendlyException($"无可删除数据");
  2514. }
  2515. }
  2516. /// <summary>
  2517. /// 人员签到 批量
  2518. /// </summary>
  2519. /// <param name="PatientRegisterIds">登记表ID集合</param>
  2520. /// <returns></returns>
  2521. [HttpPost("api/app/patientregister/updatesigninmany")]
  2522. public async Task<List<PatientRegisterDto>> UpdateSignInManyAsync(List<Guid> PatientRegisterIds)
  2523. {
  2524. List<PatientRegisterDto> msg = new List<PatientRegisterDto>();
  2525. if (!PatientRegisterIds.Any())
  2526. throw new UserFriendlyException($"请求参数有误");
  2527. foreach (var PatientRegisterId in PatientRegisterIds)
  2528. {
  2529. var entity = await Repository.FindAsync(f => f.Id == PatientRegisterId && f.IsMedicalStart != 'Y');
  2530. if (entity != null)
  2531. {
  2532. entity.IsMedicalStart = 'Y';
  2533. entity.MedicalStartDate = DateTime.Now;
  2534. var newentity = await Repository.UpdateAsync(entity);
  2535. msg.Add(ObjectMapper.Map<PatientRegister, PatientRegisterDto>(newentity));
  2536. }
  2537. }
  2538. return msg;
  2539. }
  2540. /// <summary>
  2541. /// 批量回收表格,暂时不加是否签到跟是否做完体检的判断
  2542. /// </summary>
  2543. /// <param name="PatientRegisterIds"></param>
  2544. /// <returns></returns>
  2545. [HttpPost("api/app/patientregister/updaterecoverguidemany")]
  2546. public async Task<List<PatientRegisterDto>> UpdateRecoverGuideManyAsync(List<Guid> PatientRegisterIds)
  2547. {
  2548. List<PatientRegisterDto> msg = new List<PatientRegisterDto>();
  2549. if (!PatientRegisterIds.Any())
  2550. throw new UserFriendlyException($"请求参数有误");
  2551. foreach (var PatientRegisterId in PatientRegisterIds)
  2552. {
  2553. var newentity = await _manager.UpdateRecoverGuideAsync(PatientRegisterId);
  2554. msg.Add(ObjectMapper.Map<PatientRegister, PatientRegisterDto>(newentity));
  2555. }
  2556. return msg;
  2557. }
  2558. /// <summary>
  2559. /// 批量回收指引单 多功能
  2560. /// </summary>
  2561. /// <param name="input"></param>
  2562. /// <returns></returns>
  2563. /// <exception cref="UserFriendlyException"></exception>
  2564. [HttpPost("api/app/PatientRegister/BatchRecoverGuide")]
  2565. public async Task BatchRecoverGuideAsync(BatchRecoverGuideInputDto input)
  2566. {
  2567. if (!input.Barcodes.Any())
  2568. throw new UserFriendlyException("条码号不能为空");
  2569. foreach (var barcode in input.Barcodes)
  2570. {
  2571. PatientRegister patientRegisterEntity;
  2572. if (input.RecoverType == '0')
  2573. {
  2574. patientRegisterEntity = await _repository.FirstOrDefaultAsync(f => f.PatientRegisterNo == barcode);
  2575. }
  2576. else
  2577. {
  2578. patientRegisterEntity = (from patientRegister in await _repository.GetQueryableAsync()
  2579. join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id
  2580. where patient.PatientNo == barcode
  2581. orderby patientRegister.MedicalStartDate descending
  2582. select patientRegister).FirstOrDefault();
  2583. }
  2584. if (patientRegisterEntity != null)
  2585. {
  2586. patientRegisterEntity.IsRecoverGuide = input.IsRecoverGuide;
  2587. await _repository.UpdateAsync(patientRegisterEntity);
  2588. }
  2589. }
  2590. }
  2591. /// <summary>
  2592. /// 批量回收指引单 根据条码号
  2593. /// </summary>
  2594. /// <param name="input"></param>
  2595. /// <returns></returns>
  2596. /// <exception cref="UserFriendlyException"></exception>
  2597. [HttpPost("api/app/PatientRegister/BatchRecoverGuideByPatientRegisterNo")]
  2598. public async Task BatchRecoverGuideByPatientRegisterNoAsync(BatchRecoverGuideByPatientRegisterNoInputDto input)
  2599. {
  2600. if (!input.PatientRegisterNos.Any())
  2601. throw new UserFriendlyException("条码号不能为空");
  2602. foreach (var patientRegisterNo in input.PatientRegisterNos)
  2603. {
  2604. var patientRegister = await _repository.FirstOrDefaultAsync(f => f.PatientRegisterNo == patientRegisterNo);
  2605. await _patientRegisterManager.BatchRecoverGuideByPatientRegisterNoAsync(patientRegister);
  2606. }
  2607. }
  2608. ///// <summary>
  2609. ///// 人员签到
  2610. ///// </summary>
  2611. ///// <param name="PatientRegisterId">登记表ID</param>
  2612. ///// <returns></returns>
  2613. //public async Task<PatientRegisterDto> UpdateSignIn(Guid PatientRegisterId)
  2614. //{
  2615. // var entity = await Repository.GetAsync(PatientRegisterId);
  2616. // if (entity == null)
  2617. // {
  2618. // throw new UserFriendlyException($"最后一次体检还未结束,不能新开,请结束最后一次体检");
  2619. // }
  2620. // else
  2621. // {
  2622. // entity.IsMedicalStart = 'N';
  2623. // entity.MedicalStartDate = DateOnly.FromDateTime(DateTime.Now);
  2624. // var newentity = await Repository.UpdateAsync(entity);
  2625. // return ObjectMapper.Map<PatientRegister, PatientRegisterDto>(newentity);
  2626. // }
  2627. //}
  2628. ///// <summary>
  2629. ///// 回收表格,暂时不加是否签到跟是否做完体检的判断
  2630. ///// </summary>
  2631. ///// <param name="PatientRegisterId"></param>
  2632. ///// <returns></returns>
  2633. //public async Task<PatientRegisterDto> UpdateRecoverGuideAsync(Guid PatientRegisterId)
  2634. //{
  2635. // var entity = await _manager.UpdateRecoverGuideAsync(PatientRegisterId);
  2636. // return ObjectMapper.Map<PatientRegister, PatientRegisterDto>(entity);
  2637. //}
  2638. /// <summary>
  2639. /// 修改人员锁定状态
  2640. /// </summary>
  2641. /// <param name="PatientRegisterId">人员登记ID</param>
  2642. /// <param name="IsLock">是否锁住(Y N)</param>
  2643. /// <returns></returns>
  2644. public async Task<PatientRegisterDto> UpdatePatientRegisterIsLockAsync(Guid PatientRegisterId, char IsLock)
  2645. {
  2646. PatientRegisterDto msg = new PatientRegisterDto();
  2647. var ent = await _repository.GetAsync(PatientRegisterId);
  2648. if (ent != null)
  2649. {
  2650. ent.IsLock = IsLock;
  2651. var newent = await _repository.UpdateAsync(ent);
  2652. msg = ObjectMapper.Map<PatientRegister, PatientRegisterDto>(newent);
  2653. }
  2654. return msg;
  2655. }
  2656. /// <summary>
  2657. /// 更改总检审核医生信息(保存时,医生跟日期不传时取默认登录的用户跟当前时间;取消时,如果不传就不更新医生跟日期,只更新状态)
  2658. /// </summary>
  2659. /// <param name="input"></param>
  2660. /// <returns></returns>
  2661. [HttpPost("api/app/patientregister/updatepatientregisterauditordoctor")]
  2662. public async Task<PatientRegisterDto> UpdatePatientRegisterAuditorDoctorAsync(UpdatePatientRegisterAuditorDoctorDto input)
  2663. {
  2664. if (input == null || input.PatientRegisterId == Guid.Empty)
  2665. {
  2666. throw new UserFriendlyException("请求参数有误");
  2667. }
  2668. var entity = await _repository.GetAsync(input.PatientRegisterId);
  2669. var entitydto = ObjectMapper.Map<UpdatePatientRegisterAuditorDoctorDto, PatientRegister>(input);
  2670. var newentity = await _manager.UpdatePatientRegisterAuditorDoctorAsync(entitydto, entity);
  2671. #region 推送人寿体检完成状态
  2672. if (!string.IsNullOrWhiteSpace(entity.ThirdBookingId)
  2673. && input.IsAudit == 'Y')
  2674. {
  2675. try
  2676. {
  2677. await _thirdBookingPushAppService.PushCompletePhysicalAsync(new PatientRegisterIdInputDto { PatientRegisterId = entity.Id });
  2678. }
  2679. catch (Exception ex)
  2680. {
  2681. _logger.LogError($"推送人寿完成体检=》{ex.Message}");
  2682. }
  2683. }
  2684. #endregion
  2685. return ObjectMapper.Map<PatientRegister, PatientRegisterDto>(newentity);
  2686. }
  2687. /// <summary>
  2688. /// 取消总检
  2689. /// </summary>
  2690. /// <param name="input"></param>
  2691. /// <returns></returns>
  2692. [HttpPost("api/app/patientregister/CancelSumCheck")]
  2693. public async Task<PatientRegisterDto> CancelSumCheckAsync(PatientRegisterIdInputDto input)
  2694. {
  2695. if (input == null || input.PatientRegisterId == Guid.Empty)
  2696. {
  2697. throw new UserFriendlyException("请求参数有误");
  2698. }
  2699. var entity = await _repository.GetAsync(input.PatientRegisterId);
  2700. if (entity.CompleteFlag != PatientRegisterCompleteFlag.SumCheck)
  2701. {
  2702. throw new UserFriendlyException("没有总检,无需取消总检");
  2703. }
  2704. if (entity.IsAudit == 'Y')
  2705. {
  2706. throw new UserFriendlyException("已审核,请先取消审核");
  2707. }
  2708. var isSummaryCheckOnlySelfCanCancel = await _sysParmValueManager.GetSysParmValueAsync(entity.MedicalCenterId, "summary_check_only_self_can_cancel");
  2709. if (isSummaryCheckOnlySelfCanCancel == "Y")
  2710. {
  2711. if (entity.SummaryDoctorId != CurrentUser.Id)
  2712. {
  2713. throw new UserFriendlyException("只有本人才能取消总检");
  2714. }
  2715. }
  2716. #region 如果所有检查都没有做 改为正式登记
  2717. var checkedCount = await _registerCheckRepository.CountAsync(c => c.PatientRegisterId == input.PatientRegisterId && c.CompleteFlag == RegisterCheckCompleteFlag.Checked);
  2718. if (checkedCount == 0)
  2719. {
  2720. entity.CompleteFlag = PatientRegisterCompleteFlag.Registration;
  2721. }
  2722. else
  2723. {
  2724. entity.CompleteFlag = PatientRegisterCompleteFlag.PartCheck;
  2725. }
  2726. #endregion
  2727. var cancelClearManAndDate = await _sysParmValueManager.GetSysParmValueAsync(Guid.Empty, "cancel_clear_manAndDate");
  2728. if (string.IsNullOrWhiteSpace(cancelClearManAndDate))
  2729. {
  2730. cancelClearManAndDate = "N";
  2731. }
  2732. if (cancelClearManAndDate == "Y")
  2733. {
  2734. entity.SummaryDate = null;
  2735. }
  2736. var newentity = await _repository.UpdateAsync(entity);
  2737. return ObjectMapper.Map<PatientRegister, PatientRegisterDto>(newentity);
  2738. }
  2739. /// <summary>
  2740. /// 更新病人总检综述建议 总检医生诊台保存
  2741. /// </summary>
  2742. /// <param name="input"></param>
  2743. /// <returns></returns>
  2744. /// <exception cref="UserFriendlyException"></exception>
  2745. [HttpPost("api/app/patientregister/UpdatePatientRegisterSummarySuggestion")]
  2746. public async Task<PatientRegisterDto> UpdatePatientRegisterSummarySuggestionAsync(UpdatePatientRegisterSummarySuggestionDto input)
  2747. {
  2748. if (input == null || input.PatientRegisterId == Guid.Empty)
  2749. {
  2750. throw new UserFriendlyException("请求参数有误");
  2751. }
  2752. if (!input.SumSuggestions.Any())
  2753. throw new UserFriendlyException("请完善总检建议");
  2754. //更新总检
  2755. var entity = await _repository.GetAsync(input.PatientRegisterId);
  2756. var entitydto = ObjectMapper.Map<UpdatePatientRegisterSummarySuggestionDto, PatientRegister>(input);
  2757. var newentity = await _manager.UpdatePatientRegisterSummaryDoctorAsync(entitydto, entity);
  2758. //删除综述题头时通过级联关系删除相应的综述内容
  2759. await _sumSummaryHeaderRepository.DeleteAsync(m => m.PatientRegisterId == input.PatientRegisterId, true);
  2760. //先删除建议内容
  2761. await _sumSuggestionHeaderRepository.DeleteAsync(m => m.PatientRegisterId == input.PatientRegisterId, true);
  2762. //删除对应的诊断数据
  2763. await _sumDiagnosisRepository.DeleteAsync(m => m.PatientRegisterId == input.PatientRegisterId, true);
  2764. //更新综述
  2765. if (input.SumSummarys != null && input.SumSummarys.Any())
  2766. {
  2767. foreach (var item in input.SumSummarys)
  2768. {
  2769. #region 插入SumSummaryHeader
  2770. SumSummaryHeader sumSummaryHeaderEnt = _sumSummaryHeaderManager.CreateAsync(patientRegisterId: input.PatientRegisterId,
  2771. summaryTitle: item.SummaryTitle,
  2772. summaryFlag: null,
  2773. displayOrder: input.SumSummarys.IndexOf(item) + 1);
  2774. var sumSummaryHeaderEnt_New = await _sumSummaryHeaderRepository.InsertAsync(sumSummaryHeaderEnt, true);
  2775. if (sumSummaryHeaderEnt_New != null)
  2776. {
  2777. #region 插入SumSummaryContent
  2778. List<SumSummaryContent> sumSummaryContentList = new List<SumSummaryContent>();
  2779. foreach (var item2 in item.Details)
  2780. {
  2781. SumSummaryContent sumSummaryContentEnt = _sumSummaryContentManager.CreateAsync(sumSummaryHeaderId: sumSummaryHeaderEnt_New.Id,
  2782. summaryContent: item2.SummaryContent,
  2783. displayOrder: item.Details.IndexOf(item2) + 1);
  2784. sumSummaryContentList.Add(sumSummaryContentEnt);
  2785. }
  2786. await _sumSummaryContentRepository.InsertManyAsync(sumSummaryContentList);
  2787. #endregion
  2788. }
  2789. #endregion
  2790. }
  2791. }
  2792. //更新建议和诊断
  2793. if (input.SumSuggestions != null && input.SumSuggestions.Any())
  2794. {
  2795. //判断有没有重复诊断
  2796. List<Guid> diagnosisList = new List<Guid>();
  2797. foreach (var item in input.SumSuggestions)
  2798. {
  2799. if (item.DiagnosisIds != null)
  2800. {
  2801. diagnosisList.AddRange(item.DiagnosisIds);
  2802. }
  2803. }
  2804. if (diagnosisList.Count() != diagnosisList.Distinct().Count())
  2805. {
  2806. throw new UserFriendlyException("不允许有重复诊断");
  2807. }
  2808. foreach (var item in input.SumSuggestions)
  2809. {
  2810. #region 插入SumSuggestionHeader
  2811. SumSuggestionHeader sumSuggestionHeaderEnt = _sumSuggestionHeaderManager.CreateAsync(patientRegisterId: input.PatientRegisterId,
  2812. suggestionTitle: item.SuggestionTitle,
  2813. suggestionFlag: null,
  2814. displayOrder: input.SumSuggestions.IndexOf(item) + 1);
  2815. var sumSuggestionHeaderEnt_New = await _sumSuggestionHeaderRepository.InsertAsync(sumSuggestionHeaderEnt, true);
  2816. if (sumSuggestionHeaderEnt_New != null)
  2817. {
  2818. #region 插入SumDiagnosis
  2819. if (item.DiagnosisIds != null && item.DiagnosisIds.Any())
  2820. {
  2821. foreach (var diagnosisId in item.DiagnosisIds)
  2822. {
  2823. #region 校验诊断性别
  2824. var diagnosisEnt = await _diagnosisRepository.FirstOrDefaultAsync(f => f.Id == diagnosisId);
  2825. if (diagnosisEnt == null)
  2826. throw new UserFriendlyException("诊断不存在");
  2827. if (diagnosisEnt.ForSexId != ForSexFlag.All
  2828. && entity.SexId != SexFlag.UnKnown
  2829. && diagnosisEnt.ForSexId != entity.SexId)
  2830. {
  2831. throw new UserFriendlyException($"诊断:{diagnosisEnt.DisplayName}与性别不符");
  2832. }
  2833. #endregion
  2834. SumDiagnosis sumDiagnosis = new SumDiagnosis
  2835. {
  2836. DiagnosisId = diagnosisId,
  2837. DisplayOrder = item.DiagnosisIds.IndexOf(diagnosisId) + 1,
  2838. PatientRegisterId = input.PatientRegisterId,
  2839. SumSuggestionHeaderId = sumSuggestionHeaderEnt_New.Id
  2840. };
  2841. await _sumDiagnosisRepository.InsertAsync(sumDiagnosis);
  2842. }
  2843. }
  2844. #endregion
  2845. #region 插入SumSuggestionContent
  2846. List<SumSuggestionContent> sumSuggestionContentList = new List<SumSuggestionContent>();
  2847. if (item.MedicalInterpretations != null)
  2848. {
  2849. foreach (var item2 in item.MedicalInterpretations)
  2850. {
  2851. SumSuggestionContent sumSuggestionContentEnt = _sumSuggestionContentManager.CreateAsync(sumSuggestionHeaderId: sumSuggestionHeaderEnt_New.Id,
  2852. suggestionContent: item2.SuggestionContent,
  2853. suggestionType: SuggestionTypeFlag.MedicalInterpretation,
  2854. displayOrder: item.MedicalInterpretations.IndexOf(item2) + 1);
  2855. sumSuggestionContentList.Add(sumSuggestionContentEnt);
  2856. }
  2857. }
  2858. if (item.CommonReasons != null)
  2859. {
  2860. foreach (var item2 in item.CommonReasons)
  2861. {
  2862. SumSuggestionContent sumSuggestionContentEnt = _sumSuggestionContentManager.CreateAsync(sumSuggestionHeaderId: sumSuggestionHeaderEnt_New.Id,
  2863. suggestionContent: item2.SuggestionContent,
  2864. suggestionType: SuggestionTypeFlag.CommonReasons,
  2865. displayOrder: item.CommonReasons.IndexOf(item2) + 1);
  2866. sumSuggestionContentList.Add(sumSuggestionContentEnt);
  2867. }
  2868. }
  2869. if (item.HealthGuidances != null)
  2870. {
  2871. foreach (var item2 in item.HealthGuidances)
  2872. {
  2873. SumSuggestionContent sumSuggestionContentEnt = _sumSuggestionContentManager.CreateAsync(sumSuggestionHeaderId: sumSuggestionHeaderEnt_New.Id,
  2874. suggestionContent: item2.SuggestionContent,
  2875. suggestionType: SuggestionTypeFlag.HealthGuidance,
  2876. displayOrder: item.HealthGuidances.IndexOf(item2) + 1);
  2877. sumSuggestionContentList.Add(sumSuggestionContentEnt);
  2878. }
  2879. }
  2880. await _sumSuggestionContentRepository.InsertManyAsync(sumSuggestionContentList);
  2881. #endregion
  2882. }
  2883. #endregion
  2884. }
  2885. }
  2886. return ObjectMapper.Map<PatientRegister, PatientRegisterDto>(newentity);
  2887. }
  2888. /// <summary>
  2889. /// 批量修改指引单打印次数 原有基础上加1
  2890. /// </summary>
  2891. /// <param name="Ids"></param>
  2892. /// <returns></returns>
  2893. [HttpPost("api/app/patientregister/updatepatientregisterguideprinttimesmany")]
  2894. public async Task UpdatePatientRegisterGuidePrintTimesManyAsync(List<Guid> Ids)
  2895. {
  2896. var entlist = await _repository.GetListAsync(m => Ids.Contains(m.Id));
  2897. entlist.ForEach(f => f.GuidePrintTimes = (short)(f.GuidePrintTimes + 1));
  2898. }
  2899. /// <summary>
  2900. /// 批量修改体检报告打印次数 原有基础上加1
  2901. /// </summary>
  2902. /// <param name="Ids"></param>
  2903. /// <returns></returns>
  2904. [HttpPost("api/app/patientregister/updatepatientregisterreportprinttimesmany")]
  2905. public async Task UpdatePatientRegisterReportPrintTimesManyAsync(List<Guid> Ids)
  2906. {
  2907. var entlist = await _repository.GetListAsync(m => Ids.Contains(m.Id));
  2908. if (entlist.Any())
  2909. {
  2910. foreach (var item in entlist)
  2911. {
  2912. item.ReportPrintTimes = (short)(item.ReportPrintTimes + 1);
  2913. if (_currentUser.Id != null)
  2914. item.ReportPrintOperating = _currentUser.Id;
  2915. }
  2916. await _repository.UpdateManyAsync(entlist);
  2917. }
  2918. }
  2919. /// <summary>
  2920. /// 导入体检名单操作
  2921. /// </summary>
  2922. /// <param name="input"></param>
  2923. /// <returns></returns>
  2924. /// <exception cref="UserFriendlyException"></exception>
  2925. [HttpPost("api/app/patientregister/CreatePatientRegisterFromExcel")]
  2926. public async Task CreatePatientRegisterFromExcelAsync(CreatePatientRegisterExcelRequestDto input)
  2927. {
  2928. if (input == null)
  2929. {
  2930. throw new UserFriendlyException("input参数不能为空");
  2931. }
  2932. if (string.IsNullOrWhiteSpace(input.PatientName))
  2933. {
  2934. throw new UserFriendlyException("姓名不能为空");
  2935. }
  2936. if (!string.IsNullOrWhiteSpace(input.IdNo))
  2937. {
  2938. input.IdNo = input.IdNo.Trim();
  2939. var idInfo = DataHelper.AutoIDCard(input.IdNo);
  2940. if (idInfo != null)
  2941. {
  2942. if (input.Age == null)
  2943. {
  2944. input.Age = idInfo.Age;
  2945. }
  2946. if (string.IsNullOrWhiteSpace(input.BirthDate))
  2947. {
  2948. input.BirthDate = idInfo.BirthDate;
  2949. }
  2950. if (string.IsNullOrWhiteSpace(input.SexName))
  2951. {
  2952. input.SexName = idInfo.SexId == 'M' ? "男" : "女";
  2953. }
  2954. }
  2955. }
  2956. #region 转换职业病信息
  2957. Guid ocCheckTypeId = Guid.Empty;
  2958. List<Guid> poisonIds = new List<Guid>();
  2959. if (input.IsOccupationalDisease == 'Y')
  2960. {
  2961. if (string.IsNullOrWhiteSpace(input.OcCheckTypeName))
  2962. {
  2963. throw new UserFriendlyException("职业病检查类别不能为空");
  2964. }
  2965. if (string.IsNullOrWhiteSpace(input.JobType))
  2966. {
  2967. throw new UserFriendlyException("职业病工种不能为空");
  2968. }
  2969. if (!input.Poisons.Any())
  2970. {
  2971. throw new UserFriendlyException("职业病毒害因素不能为空");
  2972. }
  2973. #region 职业病检查类别
  2974. var ocCheckTypeEnt = await _ocCheckTypeRepository.FirstOrDefaultAsync(f => f.DisplayName == input.OcCheckTypeName);
  2975. if (ocCheckTypeEnt == null)
  2976. {
  2977. throw new UserFriendlyException($"职业病检查类别{input.OcCheckTypeName}名称不正确");
  2978. }
  2979. ocCheckTypeId = ocCheckTypeEnt.Id;
  2980. #endregion
  2981. #region 职业病毒害因素
  2982. foreach (var poisonItem in input.Poisons)
  2983. {
  2984. if (string.IsNullOrWhiteSpace(poisonItem))
  2985. throw new UserFriendlyException($"职业病毒害因素{poisonItem}不能为空");
  2986. var poisonEnt = await _poisonRepository.FirstOrDefaultAsync(f => f.DisplayName == poisonItem);
  2987. if (poisonEnt == null)
  2988. {
  2989. throw new UserFriendlyException($"职业病毒害因素{poisonItem}名称不正确");
  2990. }
  2991. if (!poisonIds.Contains(poisonEnt.Id))
  2992. {
  2993. poisonIds.Add(poisonEnt.Id);
  2994. }
  2995. }
  2996. #endregion
  2997. }
  2998. Guid? medicalTypeId;
  2999. if (input.IsDefaultMedicalType == 'Y' && input.IsOccupationalDisease == 'Y')
  3000. {
  3001. //人员登记检查类别
  3002. var systemMedicalTypeId = await _sysParmValueManager.GetSysParmValueAsync(input.MedicalCenterId, "patient_register_occ_check_id");
  3003. if (string.IsNullOrWhiteSpace(systemMedicalTypeId))
  3004. throw new UserFriendlyException("系统参数中未配置职业病检查的体检类别ID");
  3005. medicalTypeId = Guid.Parse(systemMedicalTypeId);
  3006. }
  3007. else
  3008. {
  3009. medicalTypeId = await GetMedicalTypeIdByName(input.MedicalTypeName);
  3010. }
  3011. #endregion
  3012. //设置人员信息
  3013. Patient patient = null;
  3014. Patient updatePatientEntity = new Patient()
  3015. {
  3016. MedicalCenterId = input.MedicalCenterId,
  3017. DisplayName = input.PatientName,
  3018. MaritalStatusId = await GetMaritalStatusIdByName(input.MaritalStatusName),
  3019. Address = input.Address,
  3020. BirthDate = GetBirthDateByString(input.BirthDate),
  3021. BirthPlaceId = await GetBirthPlaceIdByName(input.BirthPlaceName),
  3022. Email = input.Email,
  3023. IdNo = input.IdNo,
  3024. MobileTelephone = input.MobileTelephone,
  3025. NationId = await GetNationIdByName(input.NationName),
  3026. PostalCode = input.PostalCode,
  3027. SexId = await GetSexIdByName(input.SexName),
  3028. Telephone = input.Telephone
  3029. };
  3030. if (!string.IsNullOrWhiteSpace(input.IdNo))
  3031. {
  3032. var patientList = await _patientRepository.GetListAsync(o => o.IdNo == input.IdNo);
  3033. if (patientList.Count > 0)
  3034. {
  3035. if (patientList.Where(m => m.DisplayName == input.PatientName).Count() == 0)
  3036. throw new UserFriendlyException("系统中已有该身份证号的不同姓名人员");
  3037. else
  3038. {
  3039. //patientList = patientList.Where(m => m.DisplayName == input.PatientName).ToList();
  3040. //if (patientList.Count > 1)
  3041. //{
  3042. // var tPatientRegisterList = await _repository.GetListAsync(m => patientList.Select(s => s.Id).Contains(m.PatientId));
  3043. // if (tPatientRegisterList.Count > 0)
  3044. // {
  3045. // patient = patientList.FirstOrDefault(f => f.Id == tPatientRegisterList.OrderByDescending(o => o.MedicalTimes).Select(s => s.PatientId).FirstOrDefault());
  3046. // }
  3047. // else
  3048. // {
  3049. // patient = patientList.FirstOrDefault(f => f.DisplayName == input.PatientName);
  3050. // }
  3051. //}
  3052. //else
  3053. //{
  3054. // patient = patientList.FirstOrDefault(f => f.DisplayName == input.PatientName);
  3055. //}
  3056. if (patientList.Count > 1)
  3057. {
  3058. var tPatientRegisterList = await _repository.GetListAsync(m => patientList.Select(s => s.Id).Contains(m.PatientId));
  3059. if (tPatientRegisterList.Count > 0)
  3060. {
  3061. patient = patientList.FirstOrDefault(f => f.Id == tPatientRegisterList.OrderByDescending(o => o.MedicalTimes).Select(s => s.PatientId).FirstOrDefault());
  3062. if (patient.DisplayName != input.PatientName)
  3063. {
  3064. throw new UserFriendlyException("最后一次体检的姓名跟当前导入的不一致");
  3065. }
  3066. }
  3067. else
  3068. {
  3069. patient = patientList.FirstOrDefault(f => f.DisplayName == input.PatientName);
  3070. if (patient == null)
  3071. {
  3072. patient = patientList.FirstOrDefault();
  3073. }
  3074. }
  3075. }
  3076. else
  3077. {
  3078. patient = patientList.FirstOrDefault();
  3079. }
  3080. }
  3081. }
  3082. }
  3083. if (!string.IsNullOrWhiteSpace(input.PatientNo))
  3084. {
  3085. patient = await _patientRepository.FirstOrDefaultAsync(o => o.PatientNo == input.PatientNo);
  3086. if (patient.DisplayName != input.PatientName)
  3087. {
  3088. throw new UserFriendlyException("系统中已有该档案号的不同姓名人员");
  3089. }
  3090. }
  3091. if (patient == null)
  3092. {
  3093. patient = await _patientManager.CreateAsync(updatePatientEntity);
  3094. await _patientRepository.InsertAsync(patient, true);
  3095. }
  3096. else
  3097. {
  3098. Patient newUpdatePatientEntity = patient;
  3099. #region 有档案时,导入的信息空的情况,使用档案的信息
  3100. if (!string.IsNullOrWhiteSpace(input.PatientName))
  3101. {
  3102. newUpdatePatientEntity.DisplayName = input.PatientName;
  3103. }
  3104. if (!string.IsNullOrWhiteSpace(input.MaritalStatusName))
  3105. {
  3106. newUpdatePatientEntity.MaritalStatusId = await GetMaritalStatusIdByName(input.MaritalStatusName);
  3107. }
  3108. if (!string.IsNullOrWhiteSpace(input.Address))
  3109. {
  3110. newUpdatePatientEntity.Address = input.Address;
  3111. }
  3112. if (!string.IsNullOrWhiteSpace(input.BirthDate))
  3113. {
  3114. newUpdatePatientEntity.BirthDate = GetBirthDateByString(input.BirthDate);
  3115. }
  3116. if (!string.IsNullOrWhiteSpace(input.BirthPlaceName))
  3117. {
  3118. newUpdatePatientEntity.BirthPlaceId = await GetBirthPlaceIdByName(input.BirthPlaceName);
  3119. }
  3120. if (!string.IsNullOrWhiteSpace(input.Email))
  3121. {
  3122. newUpdatePatientEntity.Email = input.Email;
  3123. }
  3124. if (!string.IsNullOrWhiteSpace(input.IdNo))
  3125. {
  3126. newUpdatePatientEntity.IdNo = input.IdNo;
  3127. }
  3128. if (!string.IsNullOrWhiteSpace(input.MobileTelephone))
  3129. {
  3130. newUpdatePatientEntity.MobileTelephone = input.MobileTelephone;
  3131. }
  3132. if (!string.IsNullOrWhiteSpace(input.NationName))
  3133. {
  3134. newUpdatePatientEntity.NationId = await GetNationIdByName(input.NationName);
  3135. }
  3136. if (!string.IsNullOrWhiteSpace(input.PostalCode))
  3137. {
  3138. newUpdatePatientEntity.PostalCode = input.PostalCode;
  3139. }
  3140. if (!string.IsNullOrWhiteSpace(input.Telephone))
  3141. {
  3142. newUpdatePatientEntity.Telephone = input.Telephone;
  3143. }
  3144. if (!string.IsNullOrWhiteSpace(input.SexName))
  3145. {
  3146. newUpdatePatientEntity.SexId = await GetSexIdByName(input.SexName);
  3147. }
  3148. #endregion
  3149. if (newUpdatePatientEntity != patient)
  3150. {
  3151. await _patientManager.UpdateAsync(newUpdatePatientEntity, patient);
  3152. await _patientRepository.UpdateAsync(patient, true);
  3153. }
  3154. }
  3155. Guid? customerOrgId = await GetCustomerOrgIdByName(input.CustomerOrgId, input.DepartmentName, input.IsAutoCreateDepartment);
  3156. if (customerOrgId == null)
  3157. {
  3158. customerOrgId = input.CustomerOrgId;
  3159. }
  3160. Guid? customerOrgGroupId = await GetCustomerOrgGroupIdByName(input.CustomerOrgRegisterId, input.CustomerOrgGroupName);
  3161. //创建人员登记信息
  3162. var createPatientRegisterArg = new CreatePatientRegisterArg()
  3163. {
  3164. Age = input.Age,
  3165. BirthDate = updatePatientEntity.BirthDate,
  3166. CompleteFlag = input.CompleteFlag,
  3167. CustomerOrgGroupId = customerOrgGroupId,
  3168. CustomerOrgId = (Guid)customerOrgId,
  3169. CustomerOrgRegisterId = input.CustomerOrgRegisterId,
  3170. IsNameHide = 'N',
  3171. IsVip = 'N',
  3172. JobCardNo = input.JobCardNo,
  3173. JobPost = input.JobPost,
  3174. JobTitle = input.JobTitle,
  3175. MaritalStatusId = updatePatientEntity.MaritalStatusId,
  3176. MedicalCardNo = input.MedicalCardNo,
  3177. MedicalPackageId = null,
  3178. MedicalTypeId = medicalTypeId,
  3179. MedicalCenterId = input.MedicalCenterId,
  3180. PatientId = patient.Id,
  3181. PatientName = input.PatientName,
  3182. PersonnelTypeId = await GetPersonnelTypeIdByName(input.PersonnelTypeName),
  3183. Remark = input.Remark,
  3184. Salesman = input.Salesman,
  3185. SexId = updatePatientEntity.SexId,
  3186. ThirdInfo = input.ThirdInfo
  3187. };
  3188. PatientRegister patientRegister = null;
  3189. CreateRegisterCheckAsbitemEntity createRegisterCheckAsbitemEntity = null;
  3190. patientRegister = await _manager.CreateAsync(createPatientRegisterArg);
  3191. #region 人寿的信息生成一个预约ID
  3192. var thirdBookingInterface = await _thirdInterfaceRepository.FirstOrDefaultAsync(o => o.ThirdInterfaceType ==
  3193. ThirdInterfaceTypeFlag.ThirdBooking);
  3194. if (thirdBookingInterface != null && thirdBookingInterface.IsActive == 'Y')
  3195. {
  3196. var parmValue = thirdBookingInterface.ParmValue;
  3197. var configurationBuilder = new ConfigurationBuilder()
  3198. .AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue)));
  3199. var interfaceConfig = configurationBuilder.Build();
  3200. var customerOrgRegisterId = interfaceConfig.GetSection("Interface").GetSection("CustomerOrgRegisterId").Value;
  3201. if (customerOrgRegisterId == input.CustomerOrgRegisterId.ToString())
  3202. {
  3203. var thirdBookingEnt = await _thirdBookingRepository.FirstOrDefaultAsync(f => f.PatientName == input.PatientName
  3204. && f.IdNo == input.IdNo
  3205. && (f.Phone == input.MobileTelephone || f.Phone == input.Telephone)
  3206. && f.MedicalStatus != '3');
  3207. if (thirdBookingEnt != null)
  3208. {
  3209. patientRegister.ThirdBookingId = thirdBookingEnt.Id.ToString();
  3210. }
  3211. else
  3212. {
  3213. throw new UserFriendlyException("该人员未预约,请先预约");
  3214. }
  3215. }
  3216. }
  3217. #endregion
  3218. if (customerOrgGroupId != null)
  3219. await _patientRegisterManager.SetCustomerOrgGroupId(patientRegister, (Guid)customerOrgGroupId);
  3220. await _repository.InsertAsync(patientRegister, true);
  3221. List<RegisterCheckAsbitem> registerAsbitems = new List<RegisterCheckAsbitem>();
  3222. //设置分组有关组合项目
  3223. if (customerOrgGroupId != null)
  3224. {
  3225. registerAsbitems = (await _customerOrgGroupDetailRepository.GetQueryableAsync()).Include(x => x.Asbitem)
  3226. .Where(m => m.CustomerOrgGroupId == customerOrgGroupId)
  3227. .Select(s => new RegisterCheckAsbitem
  3228. {
  3229. Amount = s.Amount,
  3230. AsbitemId = s.AsbitemId,
  3231. ChargePrice = s.Price,
  3232. IsCharge = 'N',
  3233. PatientRegisterId = patientRegister.Id,
  3234. PayTypeFlag = PayTypeFlag.OrgPay,
  3235. StandardPrice = s.Asbitem.Price
  3236. }).ToList();
  3237. }
  3238. #region 职业病业务 检索职业病对应的项目
  3239. if (input.IsOccupationalDisease == 'Y')
  3240. {
  3241. //var ocCheckTypeDetailList = await _ocCheckTypeDetailRepository.GetListAsync(f => f.OcCheckTypeId == ocCheckTypeId && poisonIds.Contains(f.PoisonId));
  3242. var ocCheckTypeDetailList = from ocCheckTypeDetail in await _ocCheckTypeDetailRepository.GetQueryableAsync()
  3243. join asbitem in await _asbitemRepository.GetQueryableAsync() on ocCheckTypeDetail.AsbitemId equals asbitem.Id
  3244. where ocCheckTypeDetail.OcCheckTypeId == ocCheckTypeId && poisonIds.Contains(ocCheckTypeDetail.PoisonId)
  3245. select new
  3246. {
  3247. Amount = ocCheckTypeDetail.Amount,
  3248. AsbitemId = ocCheckTypeDetail.AsbitemId,
  3249. ChargePrice = ocCheckTypeDetail.Price,
  3250. StandardPrice = asbitem.Price
  3251. };
  3252. foreach (var item in ocCheckTypeDetailList)
  3253. {
  3254. if (registerAsbitems.Where(m => m.AsbitemId == item.AsbitemId).Count() == 0)
  3255. {
  3256. registerAsbitems.Add(new RegisterCheckAsbitem
  3257. {
  3258. Amount = item.Amount,
  3259. AsbitemId = item.AsbitemId,
  3260. ChargePrice = item.ChargePrice,
  3261. IsCharge = 'N',
  3262. PatientRegisterId = patientRegister.Id,
  3263. PayTypeFlag = PayTypeFlag.OrgPay,
  3264. StandardPrice = item.StandardPrice
  3265. });
  3266. }
  3267. }
  3268. }
  3269. #endregion
  3270. if (registerAsbitems.Any())
  3271. {
  3272. createRegisterCheckAsbitemEntity = await _registerAsbitemManager.UpdateManyAsync(patientRegister, registerAsbitems);
  3273. if (createRegisterCheckAsbitemEntity != null)
  3274. {
  3275. await UpdateRegisterChecks(createRegisterCheckAsbitemEntity);
  3276. }
  3277. }
  3278. #region 增加职业病信息
  3279. if (input.IsOccupationalDisease == 'Y')
  3280. {
  3281. //基础信息
  3282. var patientOccupationalDiseaseEnt = new PatientOccupationalDisease
  3283. {
  3284. JobType = input.JobType,
  3285. OcCheckTypeId = ocCheckTypeId,
  3286. RiskFactors = string.Join(",", input.Poisons),
  3287. PatientRegisterId = patientRegister.Id,
  3288. DrinkFlag = '0',
  3289. SmokeFlag = '0',
  3290. FamilyGeneticHistory = "无",
  3291. Other = "无"
  3292. };
  3293. patientOccupationalDiseaseEnt = _patientOccupationalDiseaseManager.CreateAsync(patientOccupationalDiseaseEnt);
  3294. await _patientOccupationalDiseaseRepository.InsertAsync(patientOccupationalDiseaseEnt);
  3295. //毒害因素
  3296. List<PatientPoison> patientPoisons = new List<PatientPoison>();
  3297. foreach (var poisonId in poisonIds)
  3298. {
  3299. var patientPoisonEnt = new PatientPoison
  3300. {
  3301. PatientRegisterId = patientRegister.Id,
  3302. PoisonId = poisonId
  3303. };
  3304. patientPoisonEnt = _patientPoisonManager.CreateAsync(patientPoisonEnt);
  3305. patientPoisons.Add(patientPoisonEnt);
  3306. }
  3307. await _patientPoisonRepository.InsertManyAsync(patientPoisons);
  3308. }
  3309. #endregion
  3310. await CurrentUnitOfWork.SaveChangesAsync();
  3311. }
  3312. /// <summary>
  3313. /// 导入人员信息从第三方接口(青藏铁路接口)
  3314. /// </summary>
  3315. /// <param name="input"></param>
  3316. /// <returns></returns>
  3317. /// <exception cref="UserFriendlyException"></exception>
  3318. [HttpPost("api/app/patientregister/CreatePatientRegisterFromCustomerOrgInterface")]
  3319. public async Task<ImportPatientRegisterByCustomerOrgRegisterIdDto> CreatePatientRegisterFromCustomerOrgInterfaceAsync(CustomerOrgRegisterIdInputDto input)
  3320. {
  3321. if (input == null)
  3322. {
  3323. throw new UserFriendlyException("input参数不能为空");
  3324. }
  3325. var thirdInterfaces = await _thirdInterfaceRepository.GetListAsync(o => o.ThirdInterfaceType == ThirdInterfaceTypeFlag.ImportPatientRegister);
  3326. foreach (var thirdInterface in thirdInterfaces)
  3327. {
  3328. if (thirdInterface.IsActive != 'Y')
  3329. {
  3330. continue;
  3331. }
  3332. var parmValue = thirdInterface.ParmValue;
  3333. var configurationBuilder = new ConfigurationBuilder()
  3334. .AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue)));
  3335. var config = configurationBuilder.Build();
  3336. var customerOrgIdStr = config.GetSection("Interface").GetSection("CustomerOrgId").Value;
  3337. if (!Guid.TryParse(customerOrgIdStr, out var customerOrgId))
  3338. {
  3339. throw new UserFriendlyException("接口配置中的CustomerOrgId无法解析成GUID");
  3340. }
  3341. var customerOrgRegister = (await _customerOrgRegisterRepository.GetQueryableAsync())
  3342. .Where(o => o.Id == input.CustomerOrgRegisterId).First();
  3343. if (customerOrgRegister.CustomerOrgId != customerOrgId)
  3344. {
  3345. continue;
  3346. }
  3347. object[] objects = [input.CustomerOrgRegisterId];
  3348. var assemblyName = config.GetSection("Interface").GetSection("AssemblyName").Value;
  3349. var className = config.GetSection("Interface").GetSection("ClassName").Value;
  3350. var pluginsOut = await Utilities.ReflectionHelper.InvokeAsync<ImportPatientRegisterByCustomerOrgRegisterIdDto>(assemblyName,
  3351. className, [thirdInterface.Id], "ImportPatientRegisterByCustomerOrgRegisterIdAsync", objects);
  3352. return pluginsOut;
  3353. }
  3354. return null;
  3355. }
  3356. /// <summary>
  3357. /// 按全部数据查重名数据
  3358. /// </summary>
  3359. /// <param name="getSameNamePatientInputDto"></param>
  3360. /// <returns></returns>
  3361. [HttpPost("api/app/patientregister/GetSameNamePatient")]
  3362. public async Task<List<GetSameNamePatientDto>> GetSameNamePatientAsync(GetSameNamePatientInputDto getSameNamePatientInputDto)
  3363. {
  3364. var patientQuery = await _patientRepository.GetQueryableAsync();
  3365. var patientRegisterQuery = await Repository.GetQueryableAsync();
  3366. var customerOrgQuery = await _customerOrgRepository.GetQueryableAsync();
  3367. var topCustomerOrgQuery = await _customerOrgRepository.GetQueryableAsync();
  3368. var result = (from patient in patientQuery
  3369. join patientRegister in patientRegisterQuery
  3370. on patient.Id equals patientRegister.PatientId
  3371. where patient.DisplayName == getSameNamePatientInputDto.Name
  3372. select new
  3373. {
  3374. PatientName = patient.DisplayName,
  3375. PatientNo = patient.PatientNo,
  3376. SexId = patient.SexId,
  3377. NationId = patient.NationId,
  3378. BirthDate = patient.BirthDate,
  3379. IdNo = patient.IdNo,
  3380. PostalCode = patient.PostalCode,
  3381. Email = patient.Email,
  3382. Telephone = patient.Telephone,
  3383. MobileTelephone = patient.MobileTelephone,
  3384. Address = patient.Address,
  3385. CustomerOrgId = patientRegister.CustomerOrgId,
  3386. MedicalStartDate = patientRegister.MedicalStartDate,
  3387. CustomerOrgGroupId = patientRegister.CustomerOrgGroupId,
  3388. MedicalPackageId = patientRegister.MedicalPackageId
  3389. }).Distinct().ToList();
  3390. var getSameNamePatientDtos = new List<GetSameNamePatientDto>();
  3391. var patientGroup = result.GroupBy(g => g.PatientNo);
  3392. foreach (var itemPatient in patientGroup)
  3393. {
  3394. var item = itemPatient.OrderByDescending(o => o.MedicalStartDate).FirstOrDefault();
  3395. getSameNamePatientDtos.Add(new GetSameNamePatientDto()
  3396. {
  3397. PatientName = item.PatientName,
  3398. PatientNo = item.PatientNo,
  3399. SexName = _cacheService.GetSexNameAsync(item.SexId).Result,
  3400. NationName = _cacheService.GetNationNameAsync(item.NationId).Result,
  3401. BirthDate = DataHelper.ConversionDateToString(item.BirthDate),
  3402. IdNo = item.IdNo,
  3403. PostalCode = item.PostalCode,
  3404. Email = item.Email,
  3405. Telephone = item.Telephone,
  3406. MobileTelephone = item.MobileTelephone,
  3407. Address = item.Address,
  3408. CustomerOrgName = _cacheService.GetTopCustomerOrgNameAsync(item.CustomerOrgId).GetAwaiter().GetResult(),
  3409. DepartmentName = _cacheService.GetCustomerOrgNameAsync(item.CustomerOrgId).GetAwaiter().GetResult(),
  3410. CustomerOrgGroupName = item.CustomerOrgGroupId == null ? "" : _cacheService.GetCustomerOrgGroupAsync(item.CustomerOrgGroupId.Value).GetAwaiter().GetResult().DisplayName,
  3411. MedicalPackageName = _cacheService.GetMedicalTypeNameAsync(item.MedicalPackageId).GetAwaiter().GetResult()
  3412. });
  3413. }
  3414. return getSameNamePatientDtos;
  3415. }
  3416. /// <summary>
  3417. /// 按部门数据查重名数据
  3418. /// </summary>
  3419. /// <param name="getCustomerOrgSameNamePatientInputDto"></param>
  3420. /// <returns></returns>
  3421. [HttpPost("api/app/patientregister/GetCustomerOrgSameNamePatient")]
  3422. public async Task<List<GetSameNamePatientDto>> GetCustomerOrgSameNamePatientAsync(GetCustomerOrgSameNamePatientInputDto getCustomerOrgSameNamePatientInputDto)
  3423. {
  3424. var customerOrgEntity = await _customerOrgManager.GetTopCustomerOrgAsync(getCustomerOrgSameNamePatientInputDto.CustomerOrgId);
  3425. var patientQuery = await _patientRepository.GetQueryableAsync();
  3426. var patientRegisterQuery = await Repository.GetQueryableAsync();
  3427. var customerOrgQuery = await _customerOrgRepository.GetQueryableAsync();
  3428. var topCustomerOrgQuery = await _customerOrgRepository.GetQueryableAsync();
  3429. var result = (from patient in patientQuery
  3430. join patientRegister in patientRegisterQuery
  3431. on patient.Id equals patientRegister.PatientId
  3432. join customerOrg in customerOrgQuery
  3433. on patientRegister.CustomerOrgId equals customerOrg.Id
  3434. where patient.DisplayName == getCustomerOrgSameNamePatientInputDto.Name &&
  3435. customerOrg.PathCode.Substring(0, 5) == customerOrgEntity.PathCode
  3436. select new
  3437. {
  3438. PatientName = patient.DisplayName,
  3439. PatientNo = patient.PatientNo,
  3440. SexId = patient.SexId,
  3441. NationId = patient.NationId,
  3442. BirthDate = patient.BirthDate,
  3443. IdNo = patient.IdNo,
  3444. PostalCode = patient.PostalCode,
  3445. Email = patient.Email,
  3446. Telephone = patient.Telephone,
  3447. MobileTelephone = patient.MobileTelephone,
  3448. Address = patient.Address,
  3449. CustomerOrgId = patientRegister.CustomerOrgId,
  3450. CustomerOrgGroupId = patientRegister.CustomerOrgGroupId,
  3451. MedicalPackageId = patientRegister.MedicalPackageId,
  3452. MedicalStartDate = patientRegister.MedicalStartDate
  3453. }).Distinct().ToList();
  3454. var getSameNamePatientDtos = new List<GetSameNamePatientDto>();
  3455. var patientGroup = result.GroupBy(g => g.PatientNo);
  3456. foreach (var itemPatient in patientGroup)
  3457. {
  3458. var item = itemPatient.OrderByDescending(o => o.MedicalStartDate).FirstOrDefault();
  3459. getSameNamePatientDtos.Add(new GetSameNamePatientDto()
  3460. {
  3461. PatientName = item.PatientName,
  3462. PatientNo = item.PatientNo,
  3463. SexName = _cacheService.GetSexNameAsync(item.SexId).Result,
  3464. NationName = _cacheService.GetNationNameAsync(item.NationId).Result,
  3465. BirthDate = DataHelper.ConversionDateToString(item.BirthDate),
  3466. IdNo = item.IdNo,
  3467. PostalCode = item.PostalCode,
  3468. Email = item.Email,
  3469. Telephone = item.Telephone,
  3470. MobileTelephone = item.MobileTelephone,
  3471. Address = item.Address,
  3472. CustomerOrgName = _cacheService.GetTopCustomerOrgNameAsync(item.CustomerOrgId).GetAwaiter().GetResult(),
  3473. DepartmentName = _cacheService.GetCustomerOrgNameAsync(item.CustomerOrgId).GetAwaiter().GetResult(),
  3474. CustomerOrgGroupName = item.CustomerOrgGroupId == null ? "" : _cacheService.GetCustomerOrgGroupAsync(item.CustomerOrgGroupId.Value).GetAwaiter().GetResult().DisplayName,
  3475. MedicalPackageName = _cacheService.GetMedicalTypeNameAsync(item.MedicalPackageId).GetAwaiter().GetResult()
  3476. });
  3477. }
  3478. return getSameNamePatientDtos;
  3479. }
  3480. /// <summary>
  3481. /// 查询历史登记信息 用做批量导入
  3482. /// </summary>
  3483. /// <param name="input"></param>
  3484. /// <returns></returns>
  3485. [HttpPost("api/patientregister/getpatientregisterimportlist")]
  3486. public async Task<List<PatientRegisterOrNoDto>> GetPatientRegisterImportListAsync(GetPatientRegisterImportListRequestDto input)
  3487. {
  3488. var customerOrgList = await _customerOrgRepository.GetListAsync();
  3489. var query = from a in await _repository.GetQueryableAsync()
  3490. join ab in await _patientRepository.GetQueryableAsync() on a.PatientId equals ab.Id
  3491. select new
  3492. {
  3493. a,
  3494. ab
  3495. };
  3496. //找单位下的所有部门ID 包含本身
  3497. var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(input.CustomerOrgId);
  3498. if (CustomerOrgIds.Any())
  3499. {
  3500. query = query.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId));
  3501. }
  3502. //体检次数
  3503. if (input.CustomerOrgRegisterId != Guid.Empty)
  3504. {
  3505. query = query.Where(m => m.a.CustomerOrgRegisterId == input.CustomerOrgRegisterId);
  3506. }
  3507. //登记日期
  3508. if (!string.IsNullOrEmpty(input.StartDate) && !string.IsNullOrEmpty(input.EndDate))
  3509. {
  3510. query = query.Where(m => m.a.CreationTime >= Convert.ToDateTime(input.StartDate) &&
  3511. m.a.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1));
  3512. }
  3513. //姓名
  3514. if (!string.IsNullOrEmpty(input.PatientName))
  3515. {
  3516. query = query.Where(m => m.a.PatientName != null && m.a.PatientName.Contains(input.PatientName));
  3517. }
  3518. if (input.SexId != null && input.SexId != ForSexFlag.All)
  3519. {
  3520. query = query.Where(m => m.a.SexId == input.SexId);
  3521. }
  3522. if (input.CompleteFlag != null)
  3523. {
  3524. query = query.Where(m => m.a.CompleteFlag == input.CompleteFlag);
  3525. }
  3526. ////档案号区间
  3527. if (!string.IsNullOrEmpty(input.StartPatientNo) && !string.IsNullOrEmpty(input.EndPatientNo))
  3528. {
  3529. query = query.Where(m => String.Compare(m.ab.PatientNo, input.StartPatientNo, StringComparison.OrdinalIgnoreCase) > 0
  3530. && String.Compare(m.ab.PatientNo, input.EndPatientNo, StringComparison.OrdinalIgnoreCase) <= 0).AsQueryable();
  3531. }
  3532. var entlist = query.Select(s => new PatientRegisterOrNoDto
  3533. {
  3534. CreationTime = s.a.CreationTime,
  3535. CreatorId = s.a.CreatorId,
  3536. Id = s.a.Id,
  3537. LastModificationTime = s.a.LastModificationTime,
  3538. LastModifierId = s.a.LastModifierId,
  3539. ThirdInfo = s.a.ThirdInfo,
  3540. SummaryDoctorId = s.a.SummaryDoctorId,
  3541. SummaryDate = DataHelper.ConversionDateToString(s.a.SummaryDate),
  3542. SexId = s.a.SexId,
  3543. Age = s.a.Age,
  3544. AuditDate = DataHelper.ConversionDateToString(s.a.AuditDate),
  3545. AuditDoctorId = s.a.AuditDoctorId,
  3546. BirthDate = DataHelper.ConversionDateToString(s.a.BirthDate),
  3547. CompleteFlag = s.a.CompleteFlag,
  3548. CustomerOrgGroupId = s.a.CustomerOrgGroupId,
  3549. CustomerOrgId = s.a.CustomerOrgId,
  3550. CustomerOrgRegisterId = s.a.CustomerOrgRegisterId,
  3551. GuidePrintTimes = s.a.GuidePrintTimes,
  3552. InterposeMeasure = s.a.InterposeMeasure,
  3553. IsAudit = s.a.IsAudit,
  3554. IsLock = s.a.IsLock,
  3555. IsMedicalStart = s.a.IsMedicalStart,
  3556. IsNameHide = s.a.IsNameHide,
  3557. IsPhoneFollow = s.a.IsPhoneFollow,
  3558. IsRecoverGuide = s.a.IsRecoverGuide,
  3559. IsUpload = s.a.IsUpload,
  3560. IsVip = s.a.IsVip,
  3561. JobCardNo = s.a.JobCardNo,
  3562. JobPost = s.a.JobPost,
  3563. JobTitle = s.a.JobTitle,
  3564. MaritalStatusId = s.a.MaritalStatusId,
  3565. MedicalCardNo = s.a.MedicalCardNo,
  3566. MedicalConclusionId = s.a.MedicalConclusionId,
  3567. MedicalPackageId = s.a.MedicalPackageId,
  3568. MedicalStartDate = DataHelper.ConversionDateToString(s.a.MedicalStartDate),
  3569. MedicalTimes = s.a.MedicalTimes,
  3570. MedicalTypeId = s.a.MedicalTypeId,
  3571. MedicalCenterId = s.a.MedicalCenterId,
  3572. PatientId = s.a.PatientId,
  3573. PatientName = s.a.PatientName,
  3574. PatientRegisterNo = s.a.PatientRegisterNo,
  3575. PersonnelTypeId = s.a.PersonnelTypeId,
  3576. Photo = s.a.Photo,
  3577. Remark = s.a.Remark,
  3578. ReportPrintTimes = s.a.ReportPrintTimes,
  3579. Salesman = s.a.Salesman,
  3580. SexHormoneTermId = s.a.SexHormoneTermId,
  3581. CreatorName = "",
  3582. LastModifierName = "",
  3583. Address = s.ab.Address, //档案表信息
  3584. BirthPlaceId = s.ab.BirthPlaceId,
  3585. DisplayName = s.ab.DisplayName,
  3586. Email = s.ab.Email,
  3587. IdNo = s.ab.IdNo,
  3588. MobileTelephone = s.ab.MobileTelephone,
  3589. NationId = s.ab.NationId,
  3590. PatientNo = s.ab.PatientNo,
  3591. PatientPassword = s.ab.PatientPassword,
  3592. PostalCode = s.ab.PostalCode,
  3593. Telephone = s.ab.Telephone,
  3594. CustomerOrgName = _cacheService.GetCustomerOrgNameAsync(s.a.CustomerOrgId).GetAwaiter().GetResult(),
  3595. CustomerOrgParentId = _cacheService.GetTopCustomerOrgIdAsync(s.a.CustomerOrgId).GetAwaiter().GetResult(),
  3596. CustomerOrgParentName = _cacheService.GetTopCustomerOrgNameAsync(s.a.CustomerOrgId).GetAwaiter().GetResult(),
  3597. CustomerOrgGroupName = s.a.CustomerOrgGroupId == null ? "" : _cacheService.GetCustomerOrgGroupAsync(s.a.CustomerOrgGroupId.Value).GetAwaiter().GetResult().DisplayName,
  3598. MedicalPackageName = _cacheService.GetMedicalTypeNameAsync(s.a.MedicalPackageId).GetAwaiter().GetResult()
  3599. }).ToList();
  3600. return entlist;
  3601. }
  3602. /// <summary>
  3603. /// 按历史登记导入体检名单操作
  3604. /// </summary>
  3605. /// <param name="input"></param>
  3606. /// <returns></returns>
  3607. [HttpPost("api/app/patientregister/CreatePatientRegisterFromHistory")]
  3608. public async Task CreatePatientRegisterFromHistoryAsync(CreatePatientRegisterHistoryRequestDto input)
  3609. {
  3610. if (input == null)
  3611. {
  3612. throw new UserFriendlyException("input参数不能为空");
  3613. }
  3614. var oldPatientRegisterEntity = await _repository.FirstOrDefaultAsync(m => m.Id == input.PatientRegisterId);
  3615. if (oldPatientRegisterEntity == null)
  3616. {
  3617. throw new UserFriendlyException("人员登记ID查找人员登记信息不存在");
  3618. }
  3619. var oldPatientEntity = await _patientRepository.FirstOrDefaultAsync(m => m.Id == oldPatientRegisterEntity.PatientId);
  3620. if (oldPatientEntity == null)
  3621. {
  3622. throw new UserFriendlyException("人员档案信息不存在");
  3623. }
  3624. var createPatientRegisterArg = new CreatePatientRegisterArg()
  3625. {
  3626. BirthDate = oldPatientRegisterEntity.BirthDate,
  3627. CompleteFlag = input.CompleteFlag,
  3628. CustomerOrgGroupId = input.CustomerOrgGroupId,
  3629. CustomerOrgId = input.CustomerOrgId,
  3630. CustomerOrgRegisterId = input.CustomerOrgRegisterId,
  3631. IsNameHide = 'N',
  3632. IsVip = 'N',
  3633. JobCardNo = oldPatientRegisterEntity.JobCardNo,
  3634. JobPost = oldPatientRegisterEntity.JobPost,
  3635. JobTitle = oldPatientRegisterEntity.JobTitle,
  3636. MaritalStatusId = oldPatientRegisterEntity.MaritalStatusId,
  3637. MedicalCardNo = oldPatientRegisterEntity.MedicalCardNo,
  3638. MedicalPackageId = null,
  3639. MedicalTypeId = oldPatientRegisterEntity.MedicalTypeId,
  3640. MedicalCenterId = input.MedicalCenterId,
  3641. PatientId = oldPatientRegisterEntity.PatientId,
  3642. PatientName = oldPatientRegisterEntity.PatientName,
  3643. PersonnelTypeId = oldPatientRegisterEntity.PersonnelTypeId,
  3644. SexId = oldPatientRegisterEntity.SexId
  3645. };
  3646. var patientRegister = await _manager.CreateAsync(createPatientRegisterArg);
  3647. await _patientRegisterManager.SetCustomerOrgGroupId(patientRegister, input.CustomerOrgGroupId);
  3648. await _repository.InsertAsync(patientRegister, true);
  3649. //设置分组有关组合项目
  3650. var registerAsbitems = (await _customerOrgGroupDetailRepository.GetQueryableAsync()).Include(x => x.Asbitem)
  3651. .Where(m => m.CustomerOrgGroupId == input.CustomerOrgGroupId)
  3652. .Select(s => new RegisterCheckAsbitem
  3653. {
  3654. Amount = s.Amount,
  3655. AsbitemId = s.AsbitemId,
  3656. ChargePrice = s.Price,
  3657. IsCharge = 'N',
  3658. PatientRegisterId = patientRegister.Id,
  3659. PayTypeFlag = PayTypeFlag.OrgPay,
  3660. StandardPrice = s.Asbitem.Price
  3661. }).ToList();
  3662. var createRegisterCheckAsbitemEntity = await _registerAsbitemManager.UpdateManyAsync(patientRegister, registerAsbitems);
  3663. if (createRegisterCheckAsbitemEntity != null)
  3664. {
  3665. await UpdateRegisterChecks(createRegisterCheckAsbitemEntity);
  3666. }
  3667. await CurrentUnitOfWork.SaveChangesAsync();
  3668. }
  3669. #region 调整分组
  3670. /// <summary>
  3671. /// 调整体检人员分组
  3672. /// </summary>
  3673. /// <returns></returns>
  3674. [HttpPost("api/app/patientregister/updatepatientregistercustomerorggroup_bak")]
  3675. public async Task UpdatePatientRegisterCustomerOrgGroupAsyncBak(UpdatePatientRegisterCustomerOrgGroupDto input)
  3676. {
  3677. //当前人员信息
  3678. var patientRegisterEnt = (await _repository.GetDbSetAsync())
  3679. .Include(x => x.RegisterCheckAsbitems)
  3680. .ThenInclude(x => x.RegisterCheck)
  3681. .Where(m => m.Id == input.PatientRegisterId).FirstOrDefault();
  3682. if (patientRegisterEnt != null)
  3683. {
  3684. if (patientRegisterEnt.CustomerOrgId == null || patientRegisterEnt.CustomerOrgId == Guid.Empty)
  3685. {
  3686. throw new UserFriendlyException("个人体检不支持调整");
  3687. }
  3688. if (patientRegisterEnt.CompleteFlag == PatientRegisterCompleteFlag.SumCheck)
  3689. {
  3690. throw new UserFriendlyException("当前体检人员已完成总检");
  3691. }
  3692. if (patientRegisterEnt.CustomerOrgGroupId == input.CustomerOrgGroupId)
  3693. {
  3694. throw new UserFriendlyException("当前体检人员已在此分组");
  3695. }
  3696. //原有分组下的组合项目
  3697. //var oldGroupAsbitemList = await _customerOrgGroupDetailRepository.GetListAsync(m => m.CustomerOrgGroupId == patientRegisterEnt.CustomerOrgGroupId);
  3698. var oldGroupAsbitemList = (await _customerOrgGroupDetailRepository.GetDbSetAsync())
  3699. .Include(x => x.Asbitem)
  3700. .Where(m => m.CustomerOrgGroupId == patientRegisterEnt.CustomerOrgGroupId).ToList();
  3701. //需要调整的分组包含的组合项目
  3702. //var newGroupAsbitemList = await _customerOrgGroupDetailRepository.GetListAsync(m => m.CustomerOrgGroupId == input.CustomerOrgGroupId);
  3703. var newGroupAsbitemList = (await _customerOrgGroupDetailRepository.GetDbSetAsync())
  3704. .Include(x => x.Asbitem)
  3705. .Where(m => m.CustomerOrgGroupId == input.CustomerOrgGroupId).ToList();
  3706. var registerAsbitem = patientRegisterEnt.RegisterCheckAsbitems; //当前登记的组合项目
  3707. if (registerAsbitem.Any())
  3708. {
  3709. //删除操作
  3710. List<RegisterCheckAsbitem> ReserveList = new List<RegisterCheckAsbitem>(); //保留项目
  3711. List<RegisterCheckAsbitem> DeleteList = new List<RegisterCheckAsbitem>(); //删除项目
  3712. foreach (var item in registerAsbitem)
  3713. {
  3714. //判断是否为已收费、已检、弃检
  3715. if (item.IsCharge == 'Y' || item.RegisterCheck.CompleteFlag != RegisterCheckCompleteFlag.UnChecked)
  3716. {
  3717. //保留
  3718. ReserveList.Add(item);
  3719. }
  3720. else
  3721. {
  3722. if (input.IsReserveAddAsbitem == 'Y')
  3723. {
  3724. //保留额外项目
  3725. if (oldGroupAsbitemList.Where(m => m.AsbitemId == item.AsbitemId).Count() == 0)
  3726. {
  3727. //额外项目
  3728. ReserveList.Add(item);
  3729. }
  3730. else
  3731. {
  3732. DeleteList.Add(item);
  3733. }
  3734. }
  3735. else
  3736. {
  3737. DeleteList.Add(item);
  3738. }
  3739. }
  3740. }
  3741. await _registerCheckAsbitemRepository.DeleteManyAsync(DeleteList);
  3742. //遍历查询保留的项目是否存在新分组,如果存在,修改新分组的ID,然后list里面剔除项目
  3743. ReserveList.ForEach(reserveitem =>
  3744. {
  3745. var IsnewGroupAsbitem = newGroupAsbitemList.Find(m => m.AsbitemId == reserveitem.AsbitemId); //项目是否存在新分组内
  3746. if (IsnewGroupAsbitem != null)
  3747. {
  3748. //新分组内有需要保留的项目
  3749. reserveitem.GroupPackageId = input.CustomerOrgGroupId; //修改之前项目的分组ID
  3750. //从list里面删除新分组包含的组合项目
  3751. newGroupAsbitemList.Remove(IsnewGroupAsbitem);
  3752. }
  3753. else
  3754. {
  3755. reserveitem.GroupPackageId = null; //不包含,修改为null
  3756. }
  3757. });
  3758. await _registerCheckAsbitemRepository.UpdateManyAsync(ReserveList); //修改保留项目的分组
  3759. }
  3760. if (newGroupAsbitemList.Any())
  3761. {
  3762. //需要处理的新分组下的数据 重复的已剔除
  3763. var newRegisterAsbitemList = newGroupAsbitemList.Select(s => new RegisterCheckAsbitem
  3764. {
  3765. Amount = 1,
  3766. AsbitemId = s.AsbitemId,
  3767. ChargePrice = s.Price,
  3768. GroupPackageId = input.CustomerOrgGroupId,
  3769. IsCharge = 'N',
  3770. PatientRegisterId = input.PatientRegisterId,
  3771. PayTypeFlag = input.PayTypeFlag,
  3772. StandardPrice = s.Asbitem.Price
  3773. }).ToList();
  3774. foreach (var item in newRegisterAsbitemList)
  3775. {
  3776. await _registerAsbitemManager.CreateAsync(patientRegisterEnt.MedicalCenterId, item, true);
  3777. }
  3778. }
  3779. patientRegisterEnt.CustomerOrgGroupId = input.CustomerOrgGroupId;
  3780. await _repository.UpdateAsync(patientRegisterEnt);
  3781. }
  3782. else
  3783. {
  3784. throw new UserFriendlyException("人员不存在");
  3785. }
  3786. }
  3787. #endregion
  3788. /// <summary>
  3789. /// 调整体检人员分组
  3790. /// </summary>
  3791. /// <returns></returns>
  3792. [HttpPost("api/app/patientregister/BatchUpdateCustomerOrgGroup")]
  3793. public async Task BatchUpdateCustomerOrgGroupAsync(UpdatePatientRegisterCustomerOrgGroupDto input)
  3794. {
  3795. DataHelper.CheckCharIsYOrN(input.IsReserveAddAsbitem, "是否保留加做项目");
  3796. //当前人员信息
  3797. var patientRegisterEnt = (await _repository.GetQueryableAsync())
  3798. .Where(m => m.Id == input.PatientRegisterId).AsNoTracking().FirstOrDefault();
  3799. if (patientRegisterEnt == null)
  3800. {
  3801. throw new UserFriendlyException("人员不存在");
  3802. }
  3803. if (patientRegisterEnt.CustomerOrgId == GuidFlag.PersonCustomerOrgId)
  3804. {
  3805. throw new UserFriendlyException("个人体检不支持调整");
  3806. }
  3807. if (patientRegisterEnt.CompleteFlag == PatientRegisterCompleteFlag.SumCheck)
  3808. {
  3809. throw new UserFriendlyException("当前体检人员已完成总检");
  3810. }
  3811. if (patientRegisterEnt.CustomerOrgGroupId == input.CustomerOrgGroupId)
  3812. {
  3813. throw new UserFriendlyException("当前体检人员已在此分组");
  3814. }
  3815. //原有分组下的组合项目
  3816. var oldGroupAsbitemList = (await _customerOrgGroupDetailRepository.GetQueryableAsync())
  3817. .Include(x => x.Asbitem)
  3818. .Where(m => m.CustomerOrgGroupId == patientRegisterEnt.CustomerOrgGroupId).ToList();
  3819. //需要调整的分组包含的组合项目
  3820. var newGroupAsbitemList = (await _customerOrgGroupDetailRepository.GetQueryableAsync())
  3821. .Include(x => x.Asbitem)
  3822. .Where(m => m.CustomerOrgGroupId == input.CustomerOrgGroupId).ToList();
  3823. if (newGroupAsbitemList.Count() == 0)
  3824. {
  3825. throw new UserFriendlyException("分组没有分配组合项目");
  3826. }
  3827. //删除属于原分组而不属于新分组的项目
  3828. var existRegisterChecks = (await _registerCheckRepository.GetQueryableAsync()).Where(o => o.PatientRegisterId == input.PatientRegisterId).AsNoTracking().ToList();
  3829. var existRegisterAsbitems = (await _registerCheckAsbitemRepository.GetQueryableAsync()).Where(o =>
  3830. existRegisterChecks.Select(x => x.Id).Contains(o.RegisterCheckId)).AsNoTracking().ToList();
  3831. for (var i = existRegisterAsbitems.Count - 1; i >= 0; i--)
  3832. {
  3833. if (oldGroupAsbitemList.Where(o => o.AsbitemId == existRegisterAsbitems[i].AsbitemId).Count() > 0)
  3834. {
  3835. if (newGroupAsbitemList.Where(o => o.AsbitemId == existRegisterAsbitems[i].AsbitemId).Count() == 0)
  3836. {
  3837. existRegisterAsbitems.RemoveAt(i);
  3838. }
  3839. }
  3840. }
  3841. //如果不保留加做的组合项目则删除不属于新分组的项目
  3842. if (input.IsReserveAddAsbitem != 'Y')
  3843. {
  3844. for (var i = existRegisterAsbitems.Count - 1; i >= 0; i--)
  3845. {
  3846. if (newGroupAsbitemList.Where(o => o.AsbitemId == existRegisterAsbitems[i].AsbitemId).Count() == 0)
  3847. {
  3848. existRegisterAsbitems.RemoveAt(i);
  3849. }
  3850. }
  3851. }
  3852. //加入新分组中的项目
  3853. foreach (var groupAsbitem in newGroupAsbitemList)
  3854. {
  3855. if (existRegisterAsbitems.Where(o => o.AsbitemId == groupAsbitem.AsbitemId).Count() == 0)
  3856. {
  3857. var asbitem = await _cacheService.GetAsbitemAsync(groupAsbitem.AsbitemId);
  3858. var newRegisterCheckAsbitem = new RegisterCheckAsbitem()
  3859. {
  3860. AsbitemId = groupAsbitem.AsbitemId,
  3861. Amount = groupAsbitem.Amount,
  3862. StandardPrice = asbitem.Price,
  3863. ChargePrice = groupAsbitem.Price,
  3864. PayTypeFlag = input.PayTypeFlag,
  3865. IsCharge = 'N'
  3866. };
  3867. existRegisterAsbitems.Add(newRegisterCheckAsbitem);
  3868. }
  3869. }
  3870. patientRegisterEnt.CustomerOrgGroupId = input.CustomerOrgGroupId;
  3871. await _manager.SetCustomerOrgGroupId(patientRegisterEnt, input.CustomerOrgGroupId);
  3872. await _repository.UpdateAsync(patientRegisterEnt);
  3873. var createRegisterCheckAsbitemEntity = await _registerAsbitemManager.UpdateManyAsync(patientRegisterEnt, existRegisterAsbitems);
  3874. if (createRegisterCheckAsbitemEntity != null)
  3875. {
  3876. await UpdateRegisterChecks(createRegisterCheckAsbitemEntity);
  3877. }
  3878. await CurrentUnitOfWork.SaveChangesAsync();
  3879. }
  3880. #region 登记完返回的数据
  3881. private async Task<PatientRegisterOrNoDto> GetPatientRegisterOrNo(Guid PatientRegisterId)
  3882. {
  3883. // var entold = await _repository.GetAsync(PatientRegisterId);
  3884. var ent = (await _repository.GetQueryableAsync()).Include(x => x.Patient).Where(m => m.Id == PatientRegisterId).FirstOrDefault();
  3885. // var entold = await _repository.FindAsync(m=>m.Id== PatientRegisterId);
  3886. var entdto = new PatientRegisterOrNoDto();
  3887. if (ent != null)
  3888. {
  3889. entdto = new PatientRegisterOrNoDto
  3890. {
  3891. HisPatientId = ent.HisPatientId,
  3892. Age = ent.Age,
  3893. AuditDate = DataHelper.ConversionDateToString(ent.AuditDate),
  3894. Id = ent.Id,
  3895. AuditDoctorId = ent.AuditDoctorId,
  3896. BirthDate = DataHelper.ConversionDateToString(ent.BirthDate),
  3897. CompleteFlag = ent.CompleteFlag,
  3898. CreationTime = ent.CreationTime,
  3899. CreatorId = ent.CreatorId,
  3900. CustomerOrgGroupId = ent.CustomerOrgGroupId,
  3901. CustomerOrgId = ent.CustomerOrgId,
  3902. CustomerOrgRegisterId = ent.CustomerOrgRegisterId,
  3903. GuidePrintTimes = ent.GuidePrintTimes,
  3904. InterposeMeasure = ent.InterposeMeasure,
  3905. IsAudit = ent.IsAudit,
  3906. IsLock = ent.IsLock,
  3907. IsMedicalStart = ent.IsMedicalStart,
  3908. IsNameHide = ent.IsNameHide,
  3909. IsPhoneFollow = ent.IsPhoneFollow,
  3910. IsRecoverGuide = ent.IsRecoverGuide,
  3911. IsUpload = ent.IsUpload,
  3912. IsVip = ent.IsVip,
  3913. JobCardNo = ent.JobCardNo,
  3914. JobPost = ent.JobPost,
  3915. JobTitle = ent.JobTitle,
  3916. LastModificationTime = ent.LastModificationTime,
  3917. LastModifierId = ent.LastModifierId,
  3918. MaritalStatusId = ent.MaritalStatusId,
  3919. MedicalCardNo = ent.MedicalCardNo,
  3920. MedicalConclusionId = ent.MedicalConclusionId,
  3921. MedicalPackageId = ent.MedicalPackageId,
  3922. MedicalStartDate = DataHelper.ConversionDateToString(ent.MedicalStartDate),
  3923. MedicalTimes = ent.MedicalTimes,
  3924. MedicalTypeId = ent.MedicalTypeId,
  3925. MedicalCenterId = ent.MedicalCenterId,
  3926. PatientId = ent.PatientId,
  3927. PatientName = ent.PatientName,
  3928. PatientRegisterNo = ent.PatientRegisterNo,
  3929. PersonnelTypeId = ent.PersonnelTypeId,
  3930. Photo = ent.Photo,
  3931. Remark = ent.Remark,
  3932. ReportPrintTimes = ent.ReportPrintTimes,
  3933. Salesman = ent.Salesman,
  3934. SexHormoneTermId = ent.SexHormoneTermId,
  3935. SexId = ent.SexId,
  3936. SummaryDate = DataHelper.ConversionDateToString(ent.SummaryDate),
  3937. SummaryDoctorId = ent.SummaryDoctorId,
  3938. ThirdInfo = ent.ThirdInfo,
  3939. CreatorName = _cacheService.GetSurnameAsync(ent.CreatorId).GetAwaiter().GetResult(),
  3940. LastModifierName = _cacheService.GetSurnameAsync(ent.LastModifierId).GetAwaiter().GetResult(),
  3941. Address = ent.Patient.Address, //档案表信息
  3942. BirthPlaceId = ent.Patient.BirthPlaceId,
  3943. DisplayName = ent.Patient.DisplayName,
  3944. Email = ent.Patient.Email,
  3945. IdNo = ent.Patient.IdNo,
  3946. MobileTelephone = ent.Patient.MobileTelephone,
  3947. NationId = ent.Patient.NationId,
  3948. PatientNo = ent.Patient.PatientNo,
  3949. PatientPassword = ent.Patient.PatientPassword,
  3950. PostalCode = ent.Patient.PostalCode,
  3951. Telephone = ent.Patient.Telephone,
  3952. CustomerOrgName = _cacheService.GetCustomerOrgNameAsync(ent.CustomerOrgId).GetAwaiter().GetResult(),
  3953. CustomerOrgParentName = _cacheService.GetTopCustomerOrgNameAsync(ent.CustomerOrgId).GetAwaiter().GetResult(),
  3954. CustomerOrgParentId = _cacheService.GetTopCustomerOrgIdAsync(ent.CustomerOrgId).GetAwaiter().GetResult(),
  3955. IsPatientOccupationalDisease = _patientOccupationalDiseaseManager.GetPatientRegisterIsOccupationalDisease(ent.Id).GetAwaiter().GetResult()
  3956. };
  3957. var registerCheckAsbitems = (await _registerCheckAsbitemRepository.GetQueryableAsync())
  3958. .Include(x => x.Asbitem)
  3959. .Include(x => x.Asbitem.ItemType)
  3960. .Include(x => x.RegisterCheck)
  3961. .Where(m => m.PatientRegisterId == PatientRegisterId).ToList().OrderByDescending(o => o.GroupPackageId).ThenBy(o => o.Asbitem.DisplayOrder);
  3962. entdto.RegisterCheckAsbitems = registerCheckAsbitems.Select(s => new RegisterCheckAsbitemOrAsbitemDto
  3963. {
  3964. Discount = s.StandardPrice == 0 ? 100 : Math.Round(Convert.ToDecimal(s.ChargePrice * 100 / s.StandardPrice), 2),
  3965. IsLock = s.RegisterCheck.IsLock,
  3966. CreationTime = s.CreationTime,
  3967. CreatorId = s.CreatorId,
  3968. Id = s.Id,
  3969. LastModificationTime = s.LastModificationTime,
  3970. LastModifierId = s.LastModifierId,
  3971. Amount = s.Amount,
  3972. AsbitemId = s.AsbitemId,
  3973. AsbitemName = s.Asbitem.DisplayName,
  3974. ChargePrice = s.ChargePrice,
  3975. IsBelongGroupPackage = 'N',
  3976. //GroupPackageId = s.GroupPackageId,
  3977. CheckCompleteFlag = s.RegisterCheck.CompleteFlag,
  3978. DeviceTypeName = s.Asbitem.DeviceTypeId != null ? _cacheService.GetDeviceTypeNameAsync(s.Asbitem.DeviceTypeId.Value).Result : "",
  3979. IsCharge = s.IsCharge,
  3980. ItemTypeName = s.Asbitem.ItemType.DisplayName,
  3981. LisRequestId = s.LisRequestId,
  3982. PatientRegisterId = s.PatientRegisterId,
  3983. PayTypeFlag = s.PayTypeFlag,
  3984. SexName = _cacheService.GetForSexNameAsync(s.Asbitem.ForSexId).Result,
  3985. StandardPrice = s.StandardPrice,
  3986. CreatorName = _cacheService.GetSurnameAsync(s.CreatorId).GetAwaiter().GetResult(),
  3987. LastModifierName = _cacheService.GetSurnameAsync(s.LastModifierId).GetAwaiter().GetResult(),
  3988. IsDiscount = s.Asbitem.IsDiscount,
  3989. MedicalCenterId = s.Asbitem.MedicalCenterId
  3990. }).ToList();
  3991. //设置GroupPackageId
  3992. if (entdto.CustomerOrgGroupId != null && entdto.CustomerOrgGroupId != Guid.Empty)
  3993. {
  3994. var groupDetails = (await _customerOrgGroupDetailRepository.GetQueryableAsync()).Where(o => o.CustomerOrgGroupId == entdto.CustomerOrgGroupId).ToList();
  3995. entdto.RegisterCheckAsbitems.ForEach(o =>
  3996. {
  3997. if (groupDetails.Where(x => x.AsbitemId == o.AsbitemId).Count() > 0)
  3998. {
  3999. o.IsBelongGroupPackage = 'Y';
  4000. }
  4001. });
  4002. }
  4003. else if (entdto.MedicalPackageId != null && entdto.MedicalPackageId != Guid.Empty)
  4004. {
  4005. var groupDetails = (await _medicalPackageDetailRepository.GetQueryableAsync()).Where(o => o.MedicalPackageId == entdto.MedicalPackageId).ToList();
  4006. entdto.RegisterCheckAsbitems.ForEach(o =>
  4007. {
  4008. if (groupDetails.Where(x => x.AsbitemId == o.AsbitemId).Count() > 0)
  4009. {
  4010. o.IsBelongGroupPackage = 'Y';
  4011. }
  4012. });
  4013. }
  4014. entdto.RegisterCheckAsbitems = entdto.RegisterCheckAsbitems.OrderByDescending(o => o.IsBelongGroupPackage).
  4015. OrderBy(o => o.Id).ToList();
  4016. #region 扩展信息
  4017. var patientRegisterExterEnt = await _patientRegisterExterRepository.FirstOrDefaultAsync(m => m.PatientRegisterId == PatientRegisterId);
  4018. if (patientRegisterExterEnt != null)
  4019. {
  4020. entdto.QztlIsCw = patientRegisterExterEnt.QztlIsCw;
  4021. entdto.QztlIsCy = patientRegisterExterEnt.QztlIsCy;
  4022. entdto.QztlIsFj = patientRegisterExterEnt.QztlIsFj;
  4023. entdto.QztlIsGt = patientRegisterExterEnt.QztlIsGt;
  4024. entdto.QztlIsMain = patientRegisterExterEnt.QztlIsMain;
  4025. entdto.QztlIsWh = patientRegisterExterEnt.QztlIsWh;
  4026. entdto.QztlType = patientRegisterExterEnt.QztlType;
  4027. entdto.Remark2 = patientRegisterExterEnt.Remark2;
  4028. entdto.Remark3 = patientRegisterExterEnt.Remark3;
  4029. entdto.Remark4 = patientRegisterExterEnt.Remark4;
  4030. entdto.UploadQztlFlag = patientRegisterExterEnt.UploadQztlFlag;
  4031. entdto.IsQztlImport = patientRegisterExterEnt.IsQztlImport;
  4032. entdto.Planuserid = patientRegisterExterEnt.Planuserid;
  4033. }
  4034. #endregion
  4035. }
  4036. return entdto;
  4037. }
  4038. #endregion
  4039. #region 收费、退费、未收费
  4040. /// <summary>
  4041. /// 收费
  4042. /// </summary>
  4043. /// <param name="input"></param>
  4044. /// <returns></returns>
  4045. [HttpPost("api/app/patientregister/getpatientregisterchargelist")]
  4046. public async Task<PagedResultDto<GetPatientRegisterChargeListDto>> GetPatientRegisterChargeListAsync(PatientRegisterChargeRequestDto input)
  4047. {
  4048. PatientRegisterChargeEfCoreDto patientRegisterChargeEfCoreDto = new PatientRegisterChargeEfCoreDto
  4049. {
  4050. EndDate = input.EndDate,
  4051. InvoiceNo = input.InvoiceNo,
  4052. PatientName = input.PatientName,
  4053. PatientNo = input.PatientNo,
  4054. PatientRegisterNo = input.PatientRegisterNo,
  4055. StartDate = input.StartDate
  4056. };
  4057. var patientRegisterChargeList = await _patientRegisterChargeRepository.GetPatientRegisterChargeListAsync(patientRegisterChargeEfCoreDto);
  4058. int totalCount = patientRegisterChargeList.Count;
  4059. patientRegisterChargeList = patientRegisterChargeList.Skip(input.SkipCount * input.MaxResultCount).Take(input.MaxResultCount).ToList();
  4060. return new PagedResultDto<GetPatientRegisterChargeListDto>(totalCount, patientRegisterChargeList);
  4061. }
  4062. /// <summary>
  4063. /// 未收费
  4064. /// </summary>
  4065. /// <param name="input"></param>
  4066. /// <returns></returns>
  4067. [HttpPost("api/app/patientregister/getpatientregisternotchargedlist")]
  4068. public async Task<PagedResultDto<GetPatientRegisterNotChargedListDto>> GetPatientRegisterNotChargedListAsync(PatientRegisterChargeRequestDto input)
  4069. {
  4070. var query = from patientRegister in await _repository.GetQueryableAsync()
  4071. join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id
  4072. join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId
  4073. join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
  4074. where registerCheckAsbitem.IsCharge == 'N' && registerCheckAsbitem.PayTypeFlag == PayTypeFlag.PersonPay
  4075. orderby patientRegister.Id ascending
  4076. select new
  4077. {
  4078. patientRegister,
  4079. patient
  4080. };
  4081. if (!string.IsNullOrEmpty(input.StartDate) && !string.IsNullOrEmpty(input.EndDate))
  4082. {
  4083. query = query.Where(m => m.patientRegister.CreationTime >= Convert.ToDateTime(input.StartDate) &&
  4084. m.patientRegister.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1));
  4085. }
  4086. if (!string.IsNullOrEmpty(input.PatientName))
  4087. {
  4088. query = query.Where(m => !string.IsNullOrEmpty(m.patientRegister.PatientName) && m.patientRegister.PatientName.Contains(input.PatientName));
  4089. }
  4090. if (!string.IsNullOrEmpty(input.PatientNo))
  4091. {
  4092. query = query.Where(m => m.patient.PatientNo == input.PatientNo);
  4093. }
  4094. if (!string.IsNullOrEmpty(input.PatientRegisterNo))
  4095. {
  4096. query = query.Where(m => m.patientRegister.PatientRegisterNo == input.PatientRegisterNo);
  4097. }
  4098. var patientRegisterGroup = query.ToList().GroupBy(g => g.patientRegister);
  4099. int totalCount = patientRegisterGroup.Count();
  4100. patientRegisterGroup = patientRegisterGroup.Skip(input.SkipCount * input.MaxResultCount).Take(input.MaxResultCount);
  4101. var entListDto = patientRegisterGroup.ToList().Select(s => new GetPatientRegisterNotChargedListDto
  4102. {
  4103. PatientRegisterId = s.Key.Id,
  4104. Address = s.FirstOrDefault().patient.Address,
  4105. Age = s.Key.Age,
  4106. CustomerOrgName = _cacheService.GetCustomerOrgAsync(s.Key.CustomerOrgId).GetAwaiter().GetResult().DisplayName,
  4107. CustomerOrgParentName = _cacheService.GetTopCustomerOrgAsync(s.Key.CustomerOrgId).GetAwaiter().GetResult().DisplayName,
  4108. Email = s.FirstOrDefault().patient.Email,
  4109. IdNo = s.FirstOrDefault().patient.IdNo,
  4110. IsVip = s.Key.IsVip,
  4111. MedicalTimes = s.Key.MedicalTimes,
  4112. MobileTelephone = s.FirstOrDefault().patient.MobileTelephone,
  4113. PatientName = s.Key.PatientName,
  4114. PatientNo = s.FirstOrDefault().patient.PatientNo,
  4115. PatientRegisterNo = s.Key.PatientRegisterNo,
  4116. Salesman = s.Key.Salesman,
  4117. SexId = _cacheService.GetSexNameAsync(s.Key.SexId).GetAwaiter().GetResult(),
  4118. Telephone = s.FirstOrDefault().patient.Telephone
  4119. }).ToList();
  4120. return new PagedResultDto<GetPatientRegisterNotChargedListDto>(totalCount, entListDto);
  4121. //PatientRegisterChargeEfCoreDto patientRegisterChargeEfCoreDto = new PatientRegisterChargeEfCoreDto
  4122. //{
  4123. // EndDate = input.EndDate,
  4124. // InvoiceNo = input.InvoiceNo,
  4125. // PatientName = input.PatientName,
  4126. // PatientNo = input.PatientNo,
  4127. // PatientRegisterNo = input.PatientRegisterNo,
  4128. // StartDate = input.StartDate
  4129. //};
  4130. //var patientRegisterNotChargedList = await _patientRegisterChargeRepository.GetPatientRegisterNotChargedListAsync(patientRegisterChargeEfCoreDto);
  4131. //int totalCount = patientRegisterNotChargedList.Count;
  4132. //patientRegisterNotChargedList = patientRegisterNotChargedList.Skip(input.SkipCount * input.MaxResultCount).Take(input.MaxResultCount).ToList();
  4133. //return new PagedResultDto<GetPatientRegisterNotChargedListDto>(totalCount, patientRegisterNotChargedList);
  4134. }
  4135. /// <summary>
  4136. /// 退费
  4137. /// </summary>
  4138. /// <param name="input"></param>
  4139. /// <returns></returns>
  4140. [HttpPost("api/app/patientregister/getpatientregisterchargebacklist")]
  4141. public async Task<PagedResultDto<GetPatientRegisterChargeBackListDto>> GetPatientRegisterChargeBackListAsync(PatientRegisterChargeRequestDto input)
  4142. {
  4143. PatientRegisterChargeEfCoreDto patientRegisterChargeEfCoreDto = new PatientRegisterChargeEfCoreDto
  4144. {
  4145. EndDate = input.EndDate,
  4146. InvoiceNo = input.InvoiceNo,
  4147. PatientName = input.PatientName,
  4148. PatientNo = input.PatientNo,
  4149. PatientRegisterNo = input.PatientRegisterNo,
  4150. StartDate = input.StartDate
  4151. };
  4152. var patientRegisterChargeBackList = await _patientRegisterChargeRepository.GetPatientRegisterChargeBackListAsync(patientRegisterChargeEfCoreDto);
  4153. int totalCount = patientRegisterChargeBackList.Count;
  4154. patientRegisterChargeBackList = patientRegisterChargeBackList.Skip(input.SkipCount * input.MaxResultCount).Take(input.MaxResultCount).ToList();
  4155. return new PagedResultDto<GetPatientRegisterChargeBackListDto>(totalCount, patientRegisterChargeBackList);
  4156. }
  4157. #endregion
  4158. #region 查询体检人员项目情况
  4159. /// <summary>
  4160. /// 查询体检人员的项目状况
  4161. /// </summary>
  4162. /// <returns></returns>
  4163. [HttpGet("api/app/patientregister/getpatientregisteritemstatus")]
  4164. public async Task<GetPatientRegisterItemStatusDto> GetPatientRegisterItemStatusAsync(Guid PatientRegisterId)
  4165. {
  4166. //未检组合项目
  4167. var UnCheckedAsbitem = (await _registerCheckAsbitemRepository.GetQueryableAsync())
  4168. .Include(x => x.Asbitem)
  4169. .Include(x => x.RegisterCheck)
  4170. .Where(m => m.PatientRegisterId == PatientRegisterId
  4171. && m.RegisterCheck.CompleteFlag == RegisterCheckCompleteFlag.UnChecked
  4172. && m.Asbitem.IsCheck == 'Y')
  4173. .OrderBy(o => o.Asbitem.DisplayOrder).Select(s => s.Asbitem.DisplayName).ToList();
  4174. //弃检检组合项目
  4175. var GiveUpAsbitem = (await _registerCheckAsbitemRepository.GetQueryableAsync())
  4176. .Include(x => x.Asbitem)
  4177. .Include(x => x.RegisterCheck)
  4178. .Where(m => m.PatientRegisterId == PatientRegisterId && m.RegisterCheck.CompleteFlag == RegisterCheckCompleteFlag.GiveUpChecked).OrderBy(o => o.Asbitem.DisplayOrder).Select(s => s.Asbitem.DisplayName).ToList();
  4179. //组合项目已检,项目无明细的项目
  4180. var registerAsbItemQueryable = await _registerCheckAsbitemRepository.GetQueryableAsync();
  4181. var registerCheckQueryable = await _registerCheckRepository.GetQueryableAsync();
  4182. var registerCheckItemQueryable = await _registerCheckItemRepository.GetQueryableAsync();
  4183. var itemQueryable = await _itemRepository.GetQueryableAsync();
  4184. var checkedNullValueItem = (from a in registerCheckItemQueryable
  4185. join b in registerCheckQueryable on a.RegisterCheckId equals b.Id
  4186. join d in itemQueryable on a.ItemId equals d.Id into dd
  4187. from ad in dd.DefaultIfEmpty()
  4188. where (b.PatientRegisterId == PatientRegisterId && string.IsNullOrEmpty(a.Result) && b.CompleteFlag == RegisterCheckCompleteFlag.Checked)
  4189. orderby ad.DisplayOrder ascending
  4190. select new { ItemName = ad.DisplayName }).Select(s => s.ItemName).ToList();
  4191. //组合项目已检,项目弃检
  4192. var checkedGiveUpItem = (from a in registerCheckItemQueryable
  4193. join b in registerCheckQueryable on a.RegisterCheckId equals b.Id
  4194. join c in registerAsbItemQueryable on b.Id equals c.RegisterCheckId
  4195. join d in itemQueryable on a.ItemId equals d.Id into dd
  4196. from ad in dd.DefaultIfEmpty()
  4197. where (c.PatientRegisterId == PatientRegisterId && b.CompleteFlag == RegisterCheckCompleteFlag.Checked && !string.IsNullOrEmpty(a.Result) && a.Result.Contains("放弃检查"))
  4198. orderby ad.DisplayOrder ascending
  4199. select new { ItemName = ad.DisplayName }).Select(s => s.ItemName).ToList();
  4200. var entdto = new GetPatientRegisterItemStatusDto
  4201. {
  4202. GiveUpAsbitem = GiveUpAsbitem,
  4203. CheckedGiveUpItem = checkedGiveUpItem,
  4204. CheckedNullValueItem = checkedNullValueItem,
  4205. UnCheckedAsbitem = UnCheckedAsbitem
  4206. };
  4207. return entdto;
  4208. }
  4209. #endregion
  4210. #region 批量修改人员状态、体检日期
  4211. /// <summary>
  4212. /// 批量修改人员状态、体检日期 可以同时修改状态跟日期 也可以单独修改某一个 不用修改的传 null
  4213. /// </summary>
  4214. /// <param name="input"></param>
  4215. /// <returns></returns>
  4216. /// <exception cref="UserFriendlyException"></exception>
  4217. [HttpPost("api/app/patientregister/updatepatientregistercompleteflagormedicalstartdate")]
  4218. public async Task UpdatePatientRegisterCompleteFlagOrMedicalStartDateAsync(UpdatePatientRegisterCompleteFlagOrMedicalStartDateDto input)
  4219. {
  4220. if (input.PatientRegisterIds.Any())
  4221. {
  4222. var patientRegisterList = await _repository.GetListAsync(m => input.PatientRegisterIds.Contains(m.Id) &&
  4223. (m.CompleteFlag == PatientRegisterCompleteFlag.PreRegistration || m.CompleteFlag == PatientRegisterCompleteFlag.Registration));
  4224. if (input.CompleteFlag != PatientRegisterCompleteFlag.PreRegistration && input.CompleteFlag != PatientRegisterCompleteFlag.Registration)
  4225. {
  4226. throw new UserFriendlyException("登记状态只能是预登记或正式登记");
  4227. }
  4228. patientRegisterList.ForEach(f =>
  4229. {
  4230. if (f.CompleteFlag == PatientRegisterCompleteFlag.PreRegistration
  4231. && input.CompleteFlag == PatientRegisterCompleteFlag.Registration)
  4232. {
  4233. f.MedicalStartDate = DateTime.Now;
  4234. f.IsMedicalStart = 'Y';
  4235. if (f.PatientRegisterNo.StartsWith("P"))
  4236. {
  4237. f.PatientRegisterNo = _manager.CreatePatientRegisterNo(f.MedicalCenterId).Result;
  4238. }
  4239. #region 预登记转正式登记修改登记者ID
  4240. string goRegisterIsUpdateRegisterPerson = _sysParmValueManager.GetSysParmValueAsync(Guid.Empty, "go_register_is_update_register_person").GetAwaiter().GetResult();
  4241. if (goRegisterIsUpdateRegisterPerson == "1")
  4242. {
  4243. if (_currentUser.Id != null)
  4244. {
  4245. //判断是预登记转正式登记
  4246. f.UpdateCreatorId(_currentUser.Id.Value);
  4247. }
  4248. }
  4249. #endregion
  4250. }
  4251. f.CompleteFlag = input.CompleteFlag.Value;
  4252. }
  4253. );
  4254. if (!string.IsNullOrEmpty(input.MedicalStartDate))
  4255. {
  4256. patientRegisterList.ForEach(f => f.MedicalStartDate = PageHelper.ConvertDatetimeV(input.MedicalStartDate));
  4257. }
  4258. await _repository.UpdateManyAsync(patientRegisterList);
  4259. }
  4260. else
  4261. {
  4262. throw new UserFriendlyException("参数有误");
  4263. }
  4264. }
  4265. #endregion
  4266. /// <summary>
  4267. /// 修改体检日期
  4268. /// </summary>
  4269. /// <param name="input"></param>
  4270. /// <returns></returns>
  4271. [HttpPost("api/app/PatientRegister/UpdatePatientRegisterMedicalStartDate")]
  4272. public async Task UpdatePatientRegisterMedicalStartDateAsync(UpdatePatientRegisterMedicalStartDateInputDto input)
  4273. {
  4274. if (!input.PatientRegisterIds.Any())
  4275. {
  4276. throw new UserFriendlyException("请选择人员");
  4277. }
  4278. var patientRegisterList = await _repository.GetListAsync(m => input.PatientRegisterIds.Contains(m.Id));
  4279. if (!string.IsNullOrEmpty(input.MedicalStartDate))
  4280. {
  4281. patientRegisterList.ForEach(f => f.MedicalStartDate = PageHelper.ConvertDatetimeV(input.MedicalStartDate));
  4282. await _repository.UpdateManyAsync(patientRegisterList);
  4283. }
  4284. }
  4285. /// <summary>
  4286. /// 总检时修改人员信息
  4287. /// </summary>
  4288. /// <param name="input"></param>
  4289. /// <returns></returns>
  4290. /// <exception cref="UserFriendlyException"></exception>
  4291. [HttpPost("api/app/PatientRegister/UpdatePatientRegisterBySumCheck")]
  4292. public async Task UpdatePatientRegisterBySumCheckAsync(UpdatePatientRegisterBySumCheckInputDto input)
  4293. {
  4294. var patientRegisterEnt = await _repository.FirstOrDefaultAsync(f => f.Id == input.PatientRegisterId);
  4295. if (patientRegisterEnt == null)
  4296. {
  4297. throw new UserFriendlyException("人员ID不正确");
  4298. }
  4299. var patientEnt = await _patientRepository.FirstOrDefaultAsync(f => f.Id == patientRegisterEnt.PatientId);
  4300. if (patientEnt != null)
  4301. {
  4302. patientEnt.DisplayName = input.PatientName;
  4303. patientRegisterEnt.PatientName = input.PatientName;
  4304. patientEnt.IdNo = input.IdNo;
  4305. patientEnt.MobileTelephone = input.MobileTelephone;
  4306. patientRegisterEnt.PersonnelTypeId = input.PersonnelTypeId;
  4307. patientRegisterEnt.MedicalTypeId = input.MedicalTypeId;
  4308. patientRegisterEnt.Remark = input.Remark;
  4309. patientRegisterEnt.SexHormoneTermId = input.SexHormoneTermId;
  4310. await _patientRepository.UpdateAsync(patientEnt);
  4311. await _repository.UpdateAsync(patientRegisterEnt);
  4312. }
  4313. }
  4314. /// <summary>
  4315. /// 修改人员 手机、姓名、身份证 已总检特殊情况修改
  4316. /// </summary>
  4317. /// <param name="input"></param>
  4318. /// <returns></returns>
  4319. [HttpPost("api/app/PatientRegister/UpdatePatientRegisterBaseInfoByPatientRegisterId")]
  4320. public async Task<PatientRegisterOrNoDto> UpdatePatientRegisterBaseInfoByPatientRegisterIdAsync(UpdatePatientRegisterBaseInfoByPatientRegisterIdInputDto input)
  4321. {
  4322. PatientRegisterOrNoDto msg = new PatientRegisterOrNoDto();
  4323. if (input == null ||
  4324. string.IsNullOrWhiteSpace(input.IdNo)
  4325. && string.IsNullOrWhiteSpace(input.PatientName)
  4326. && string.IsNullOrWhiteSpace(input.MobileTelephone))
  4327. throw new UserFriendlyException("请求参数有误");
  4328. var patientRegisterEnt = await _repository.FirstOrDefaultAsync(f => f.Id == input.PatientRegisterId);
  4329. if (patientRegisterEnt == null)
  4330. {
  4331. throw new UserFriendlyException("人员ID不正确");
  4332. }
  4333. var patientEnt = await _patientRepository.FirstOrDefaultAsync(f => f.Id == patientRegisterEnt.PatientId);
  4334. if (patientEnt != null)
  4335. {
  4336. if (!string.IsNullOrWhiteSpace(input.PatientName))
  4337. {
  4338. patientEnt.DisplayName = input.PatientName;
  4339. patientRegisterEnt.PatientName = input.PatientName;
  4340. }
  4341. if (!string.IsNullOrWhiteSpace(input.IdNo))
  4342. {
  4343. patientEnt.IdNo = input.IdNo;
  4344. }
  4345. if (!string.IsNullOrWhiteSpace(input.MobileTelephone))
  4346. {
  4347. patientEnt.MobileTelephone = input.MobileTelephone;
  4348. }
  4349. await _patientRepository.UpdateAsync(patientEnt, true);
  4350. await _repository.UpdateAsync(patientRegisterEnt, true);
  4351. }
  4352. msg = await GetPatientRegisterOrNo(patientRegisterEnt.Id);
  4353. return msg;
  4354. }
  4355. /// <summary>
  4356. /// 批量修改人员 备注、体检类别、人员类别
  4357. /// </summary>
  4358. /// <param name="input"></param>
  4359. /// <returns></returns>
  4360. [HttpPost("api/app/PatientRegister/BatchUpdatePatientRegisterInfoByPatientRegisterId")]
  4361. public async Task BatchUpdatePatientRegisterInfoByPatientRegisterIdAsync(BatchUpdatePatientRegisterInfoByPatientRegisterIdInputDto input)
  4362. {
  4363. if (!input.PatientRegisterIds.Any())
  4364. {
  4365. throw new UserFriendlyException("人员id不能为空");
  4366. }
  4367. foreach (var item in input.PatientRegisterIds)
  4368. {
  4369. var patientRegister = await _repository.FirstOrDefaultAsync(f => f.Id == item);
  4370. if (patientRegister != null)
  4371. {
  4372. if (!string.IsNullOrWhiteSpace(input.Remark))
  4373. {
  4374. patientRegister.Remark = input.Remark;
  4375. }
  4376. if (input.PersonnelTypeId != null)
  4377. {
  4378. patientRegister.PersonnelTypeId = input.PersonnelTypeId;
  4379. }
  4380. if (input.MedicalTypeId != null)
  4381. {
  4382. patientRegister.MedicalTypeId = input.MedicalTypeId;
  4383. }
  4384. await _repository.UpdateAsync(patientRegister);
  4385. }
  4386. }
  4387. }
  4388. /// <summary>
  4389. /// 批量领取报告 取消领取
  4390. /// </summary>
  4391. /// <param name="input"></param>
  4392. /// <returns></returns>
  4393. [HttpPost("api/app/PatientRegister/BatchUpdatePatientRegisterReportReceive")]
  4394. public async Task BatchUpdatePatientRegisterReportReceiveAsync(BatchUpdatePatientRegisterReportReceiveInputDto input)
  4395. {
  4396. if (!input.PatientRegisterIds.Any())
  4397. {
  4398. throw new UserFriendlyException("未选择人员Id");
  4399. }
  4400. List<PatientRegister> patientRegisters = new List<PatientRegister>();
  4401. var idPage = (input.PatientRegisterIds.Count / 200) + 1;
  4402. for (int i = 0; i < idPage; i++)
  4403. {
  4404. List<Guid> ids = input.PatientRegisterIds.Skip(i).Take(200).ToList();
  4405. var patientRegisterList = await _repository.GetListAsync(m => ids.Contains(m.Id));
  4406. patientRegisters.AddRange(patientRegisterList);
  4407. }
  4408. patientRegisters = patientRegisters.Distinct().ToList();
  4409. foreach (var item in patientRegisters)
  4410. {
  4411. if (input.IsReceiveReport == 'Y')
  4412. {
  4413. item.IsReceiveReport = 'Y';
  4414. item.ReportReceiveDate = DateTime.Now;
  4415. item.ReportReceiveName = input.ReportReceiveName;
  4416. }
  4417. else
  4418. {
  4419. item.IsReceiveReport = 'N';
  4420. item.ReportReceiveDate = DateTime.Now;
  4421. item.ReportReceiveName = "";
  4422. }
  4423. }
  4424. await _repository.UpdateManyAsync(patientRegisters);
  4425. }
  4426. private async Task UpdateRegisterChecks(CreateRegisterCheckAsbitemEntity createRegisterCheckAsbitemEntity)
  4427. {
  4428. if (createRegisterCheckAsbitemEntity == null)
  4429. {
  4430. throw new UserFriendlyException("createRegisterCheckAsbitemEntity未赋值");
  4431. }
  4432. await _registerCheckItemRepository.DeleteManyAsync(createRegisterCheckAsbitemEntity.DeleteRegisterCheckItems);
  4433. await _registerCheckAsbitemRepository.DeleteManyAsync(createRegisterCheckAsbitemEntity.DeleteRegisterCheckAsbitems);
  4434. await _registerCheckRepository.DeleteManyAsync(createRegisterCheckAsbitemEntity.DeleteRegisterChecks);
  4435. await _registerCheckItemRepository.UpdateManyAsync(createRegisterCheckAsbitemEntity.UpdateRegisterCheckItems);
  4436. await _registerCheckAsbitemRepository.UpdateManyAsync(createRegisterCheckAsbitemEntity.UpdateRegisterCheckAsbitems);
  4437. await _registerCheckRepository.UpdateManyAsync(createRegisterCheckAsbitemEntity.UpdateRegisterChecks);
  4438. await _registerCheckRepository.InsertManyAsync(createRegisterCheckAsbitemEntity.NewRegisterChecks);
  4439. await _registerCheckAsbitemRepository.InsertManyAsync(createRegisterCheckAsbitemEntity.NewRegisterCheckAsbitems);
  4440. await _registerCheckItemRepository.InsertManyAsync(createRegisterCheckAsbitemEntity.NewRegisterCheckItems);
  4441. }
  4442. private async Task<char> GetMaritalStatusIdByName(string name)
  4443. {
  4444. if (string.IsNullOrWhiteSpace(name))
  4445. {
  4446. return MaritalStatusFlag.UnKnown;
  4447. }
  4448. var entity = await _maritalStatusRepository.FirstOrDefaultAsync(m => m.DisplayName == name.Trim());
  4449. if (entity != null)
  4450. {
  4451. return entity.Id;
  4452. }
  4453. else
  4454. {
  4455. throw new UserFriendlyException($"{name}是无效婚姻状况名称");
  4456. }
  4457. }
  4458. private async Task<Guid?> GetBirthPlaceIdByName(string name)
  4459. {
  4460. if (string.IsNullOrWhiteSpace(name))
  4461. {
  4462. return null;
  4463. }
  4464. var entity = await _birthPlaceRepository.FirstOrDefaultAsync(m => m.DisplayName == name.Trim());
  4465. if (entity != null)
  4466. {
  4467. return entity.Id;
  4468. }
  4469. else
  4470. {
  4471. throw new UserFriendlyException($"{name}是无效出生地名称");
  4472. }
  4473. }
  4474. private async Task<string> GetNationIdByName(string name)
  4475. {
  4476. if (string.IsNullOrWhiteSpace(name))
  4477. {
  4478. return null;
  4479. }
  4480. var entity = await _nationRepository.FirstOrDefaultAsync(m => m.DisplayName == name.Trim());
  4481. if (entity != null)
  4482. {
  4483. return entity.Id;
  4484. }
  4485. else
  4486. {
  4487. throw new UserFriendlyException($"{name}是无效民族名称");
  4488. }
  4489. }
  4490. private async Task<char> GetSexIdByName(string name)
  4491. {
  4492. if (string.IsNullOrWhiteSpace(name))
  4493. {
  4494. return SexFlag.UnKnown;
  4495. }
  4496. var entity = await _sexRepository.FirstOrDefaultAsync(m => m.DisplayName == name.Trim());
  4497. if (entity != null)
  4498. {
  4499. return entity.Id;
  4500. }
  4501. else
  4502. {
  4503. throw new UserFriendlyException($"{name}是无效性别名称");
  4504. }
  4505. }
  4506. private async Task<Guid?> GetMedicalTypeIdByName(string name)
  4507. {
  4508. if (string.IsNullOrWhiteSpace(name))
  4509. {
  4510. return null;
  4511. }
  4512. var entity = await _medicalTypeRepository.FirstOrDefaultAsync(m => m.DisplayName == name.Trim());
  4513. if (entity != null)
  4514. {
  4515. return entity.Id;
  4516. }
  4517. else
  4518. {
  4519. throw new UserFriendlyException($"{name}是无效体检类别名称");
  4520. }
  4521. }
  4522. private async Task<Guid?> GetPersonnelTypeIdByName(string name)
  4523. {
  4524. if (string.IsNullOrWhiteSpace(name))
  4525. {
  4526. return null;
  4527. }
  4528. var entity = await _personnelTypeRepository.FirstOrDefaultAsync(m => m.DisplayName == name.Trim());
  4529. if (entity != null)
  4530. {
  4531. return entity.Id;
  4532. }
  4533. else
  4534. {
  4535. throw new UserFriendlyException($"{name}是无效人员类别名称");
  4536. }
  4537. }
  4538. private async Task<Guid?> GetCustomerOrgIdByName(Guid customerOrgId, string name, char IsAutoCreateDepartment = 'N')
  4539. {
  4540. if (string.IsNullOrWhiteSpace(name))
  4541. {
  4542. return null;
  4543. }
  4544. if (customerOrgId == Guid.Empty)
  4545. {
  4546. throw new UserFriendlyException($"单位不能为空");
  4547. }
  4548. var departmentent = await _customerOrgRepository.FirstOrDefaultAsync(m => m.ParentId == customerOrgId && m.DisplayName == name); //当前单位下一级
  4549. if (departmentent != null)
  4550. {
  4551. return departmentent.Id; //找到部门,单位ID为下级的部门ID
  4552. }
  4553. if (IsAutoCreateDepartment != 'Y')
  4554. {
  4555. throw new UserFriendlyException($"{name}是无效部门名称");
  4556. }
  4557. var parentCustomerOrgEnt = await _customerOrgRepository.FirstOrDefaultAsync(m => m.Id == customerOrgId); //当前单位
  4558. if (parentCustomerOrgEnt == null)
  4559. {
  4560. throw new UserFriendlyException($"根据单位ID未找到单位");
  4561. }
  4562. var customerOrg_Insert = new CustomerOrg
  4563. {
  4564. Accounts = parentCustomerOrgEnt.Accounts,
  4565. Address = parentCustomerOrgEnt.Address,
  4566. Bank = parentCustomerOrgEnt.Bank,
  4567. DisplayName = name,
  4568. Fax = parentCustomerOrgEnt.Fax,
  4569. InvoiceName = parentCustomerOrgEnt.InvoiceName,
  4570. IsActive = parentCustomerOrgEnt.IsActive,
  4571. IsLock = parentCustomerOrgEnt.IsLock,
  4572. MedicalCenterId = parentCustomerOrgEnt.MedicalCenterId,
  4573. OrgTypeId = parentCustomerOrgEnt.OrgTypeId,
  4574. ParentId = parentCustomerOrgEnt.Id,
  4575. PostalCode = parentCustomerOrgEnt.PostalCode,
  4576. Remark = parentCustomerOrgEnt.Remark,
  4577. ShortName = name.Length > 20 ? "" : name,
  4578. Telephone = parentCustomerOrgEnt.Telephone
  4579. };
  4580. var DepartmentEnt = await _customerOrgManager.CreateAsync(customerOrg_Insert);
  4581. var DepartmentReturn = await _customerOrgRepository.InsertAsync(DepartmentEnt, true);
  4582. #region 更新缓存版本
  4583. var versonNo = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
  4584. _cacheService.SetDataVersonCache("customer_three", versonNo);
  4585. #endregion
  4586. return DepartmentReturn.Id;
  4587. }
  4588. private async Task<Guid?> GetCustomerOrgGroupIdByName(Guid customerOrgRegisterId, string name)
  4589. {
  4590. if (string.IsNullOrWhiteSpace(name))
  4591. {
  4592. return null;
  4593. }
  4594. var CustomerOrgGroupEnt = await _customerOrgGroupRepository.FirstOrDefaultAsync(m => m.DisplayName == name && m.CustomerOrgRegisterId == customerOrgRegisterId);
  4595. if (CustomerOrgGroupEnt == null)
  4596. {
  4597. throw new UserFriendlyException($"{name}是无效分组名称");
  4598. }
  4599. return CustomerOrgGroupEnt.Id;
  4600. }
  4601. private DateTime? GetBirthDateByString(string name)
  4602. {
  4603. if (string.IsNullOrWhiteSpace(name))
  4604. {
  4605. return null;
  4606. }
  4607. if (DateTime.TryParse(name, out var date))
  4608. {
  4609. return date;
  4610. }
  4611. return null;
  4612. }
  4613. }
  4614. }