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.

1632 lines
93 KiB

2 years ago
2 years ago
11 months ago
2 years ago
2 years ago
2 years ago
12 months ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
11 months ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
11 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
8 months ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
8 months ago
2 years ago
8 months ago
2 years ago
2 years ago
8 months ago
2 years ago
8 months ago
2 years ago
2 years ago
2 years ago
2 years ago
8 months ago
2 years ago
11 months ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
11 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
12 months ago
2 years ago
2 years ago
11 months ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
11 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
11 months ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
8 months ago
2 years ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
8 months ago
1 year ago
1 year ago
1 year ago
1 year ago
8 months ago
1 year ago
2 years ago
11 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
11 months ago
1 year ago
2 years ago
2 years ago
2 years ago
11 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
11 months ago
2 years ago
11 months ago
2 years ago
11 months ago
2 years ago
11 months ago
12 months ago
2 years ago
11 months ago
12 months ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
11 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
11 months ago
11 months ago
11 months ago
11 months ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
11 months ago
2 years ago
2 years ago
2 years ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 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
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
12 months ago
12 months ago
2 years ago
  1. using IdentityModel.Client;
  2. using Microsoft.AspNetCore.Authorization;
  3. using Microsoft.AspNetCore.Mvc;
  4. using Microsoft.EntityFrameworkCore;
  5. using Microsoft.Extensions.Configuration;
  6. using Npgsql.Internal.TypeHandlers.DateTimeHandlers;
  7. using NPOI.POIFS.Properties;
  8. using NUglify.Helpers;
  9. using Shentun.Peis.AsbitemGuides;
  10. using Shentun.Peis.DiagnosisFunctions;
  11. using Shentun.Peis.Enums;
  12. using Shentun.Peis.LisRequests;
  13. using Shentun.Peis.Models;
  14. using Shentun.Peis.OcCheckTypes;
  15. using Shentun.Peis.OccupationalDiseases;
  16. using Shentun.Peis.PatientRegisters;
  17. using Shentun.Peis.Reports;
  18. using Shentun.Peis.Reports.ConvertRpt;
  19. using Shentun.Peis.SumSuggestionContents;
  20. using Shentun.Peis.SumSuggestionHeaders;
  21. using Shentun.Peis.SumSummaryContents;
  22. using Shentun.Peis.SumSummaryHeaders;
  23. using Shentun.Peis.SumSummaryReports;
  24. using Shentun.Peis.SysParmValues;
  25. using SqlSugar.Extensions;
  26. using System;
  27. using System.Collections.Generic;
  28. using System.Linq;
  29. using System.Text;
  30. using System.Threading.Tasks;
  31. using Volo.Abp;
  32. using Volo.Abp.Application.Services;
  33. using Volo.Abp.Domain.Repositories;
  34. using Volo.Abp.Identity;
  35. using Volo.Abp.ObjectMapping;
  36. using Volo.Abp.Uow;
  37. using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
  38. namespace Shentun.Peis.PrintReports
  39. {
  40. /// <summary>
  41. /// 打印报告服务
  42. /// </summary>
  43. [ApiExplorerSettings(GroupName = "Work")]
  44. [Authorize]
  45. public class PrintReportAppService : ApplicationService
  46. {
  47. private readonly IRepository<CustomerOrg, Guid> _customerOrgRepository;
  48. private readonly IRepository<CustomerOrgGroup, Guid> _customerOrgGroupRepository;
  49. private readonly IRepository<Patient, Guid> _patientRepository;
  50. private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository;
  51. private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository;
  52. private static IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemStaticRepository;
  53. private readonly IRepository<RegisterCheckItem> _registerCheckItemRepository;
  54. private readonly IRepository<RegisterCheckSummary> _registerCheckSummaryRepository;
  55. private readonly IRepository<RegisterCheckPicture, Guid> _registerCheckPictureRepository;
  56. private readonly IRepository<Asbitem, Guid> _asbitemRepository;
  57. private readonly IRepository<Item, Guid> _itemRepository;
  58. private readonly IRepository<MedicalPackage, Guid> _medicalPackageRepository;
  59. private readonly IRepository<MedicalReportType, char> _medicalReportTypeRepository;
  60. private readonly IRepository<ItemType, Guid> _itemTypeRepository;
  61. private readonly IRepository<LisRequest, Guid> _lisRequestRepository;
  62. private readonly IRepository<SampleGroup, Guid> _sampleGroupRepository;
  63. private readonly IRepository<SampleGroupDetail> _sampleGroupDetailRepository;
  64. private readonly IRepository<SampleContainer, Guid> _sampleContainerRepository;
  65. private readonly IRepository<SampleType, Guid> _sampleTypeRepository;
  66. private readonly IRepository<Sex> _sexRegisterRepository;
  67. private readonly IRepository<ResultStatus> _resultStatusRepository;
  68. private readonly IRepository<SumSummaryHeader, Guid> _sumSummaryHeaderRepository;
  69. private readonly IRepository<IdentityUser, Guid> _identityUserRepository;
  70. private readonly IRepository<SumSuggestionHeader, Guid> _sumSuggestionHeaderRepository;
  71. private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
  72. private readonly IRepository<PersonnelType, Guid> _personnelTypeRepository;
  73. //private readonly IOrganizationUnitRepository _organizationUnitRepository;
  74. private readonly IRepository<OrganizationUnit, Guid> _organizationUnitRepository;
  75. private readonly IPatientRegisterGuideReportRepository _patientRegisterGuideReportRepository;
  76. private readonly ILisRequestReportRepository _lisRequestReportRepository;
  77. //private readonly ICheckRequestNoReportRepository _checkRequestNoReportRepository;
  78. private readonly IChargeReportRepository _chargeReportRepository;
  79. private readonly SysParmValueManager _sysParmValueManager;
  80. private readonly CacheService _cacheService;
  81. private readonly LisRequestManager _lisRequestManager;
  82. private readonly IUnitOfWorkManager _unitOfWorkManager;
  83. private static AsbitemGuideManager _asbitemGuideManager;
  84. private readonly IConfiguration _configuration;
  85. private readonly IRepository<PatientOccupationalDisease, Guid> _patientOccupationalDiseaseRepository;
  86. private readonly IRepository<PatientOccupationalHistory, Guid> _patientOccupationalHistoryRepository;
  87. private readonly IRepository<PatientPoison> _patientPoisonRepository;
  88. private readonly IRepository<PatientSymptom> _patientSymptomRepository;
  89. private readonly IRepository<PatientOccupationalMedicalHistory, Guid> _patientOccupationalMedicalHistoryRepository;
  90. private readonly IRepository<PatientPastMedicalHistory, Guid> _patientPastMedicalHistoryRepository;
  91. private readonly IRepository<OcCheckType, Guid> _ocCheckTypeRepository;
  92. private readonly IRepository<Poison, Guid> _poisonRepository;
  93. private readonly IRepository<OccupationalAbnormal, Guid> _occupationalAbnormalRepository;
  94. private readonly IRepository<Symptom, Guid> _symptomRepository;
  95. public PrintReportAppService(
  96. IRepository<Patient, Guid> patientRepository,
  97. IRepository<CustomerOrg, Guid> customerOrgRepository,
  98. IRepository<CustomerOrgGroup, Guid> customerOrgGroupRepository,
  99. IRepository<PatientRegister, Guid> patientRegisterRepository,
  100. IRepository<RegisterCheckAsbitem, Guid> registerCheckAsbitemRepository,
  101. IRepository<RegisterCheckItem> registerCheckItemRepository,
  102. IRepository<RegisterCheckSummary> registerCheckSummaryRepository,
  103. IRepository<RegisterCheckPicture, Guid> registerCheckPictureRepository,
  104. IRepository<Asbitem, Guid> asbitemRepository,
  105. IRepository<Item, Guid> itemRepository,
  106. IRepository<MedicalPackage, Guid> medicalPackageRepository,
  107. IRepository<MedicalReportType, char> medicalReportTypeRepository,
  108. IRepository<ItemType, Guid> itemTypeRepository,
  109. IRepository<LisRequest, Guid> lisRequestRepository,
  110. IRepository<SampleGroup, Guid> sampleGroupRepository,
  111. IRepository<SampleContainer, Guid> sampleContainerRepository,
  112. IRepository<SampleType, Guid> sampleTypeRepository,
  113. IRepository<Sex> sexRegisterRepository,
  114. IRepository<PersonnelType, Guid> personnelTypeRepository,
  115. IRepository<ResultStatus> resultStatusRepository,
  116. IRepository<SumSummaryHeader, Guid> sumSummaryHeaderRepository,
  117. IRepository<IdentityUser, Guid> identityUserRepository,
  118. IRepository<SumSuggestionHeader, Guid> sumSuggestionHeaderRepository,
  119. IRepository<RegisterCheck, Guid> registerCheckRepository,
  120. //IOrganizationUnitRepository organizationUnitRepository,
  121. IRepository<OrganizationUnit, Guid> organizationUnitRepository,
  122. IPatientRegisterGuideReportRepository patientRegisterGuideReportRepository,
  123. ILisRequestReportRepository lisRequestReportRepository,
  124. //ICheckRequestNoReportRepository checkRequestNoReportRepository,
  125. IChargeReportRepository chargeReportRepository,
  126. SysParmValueManager sysParmValueManager,
  127. CacheService cacheService,
  128. LisRequestManager lisRequestManager,
  129. IUnitOfWorkManager unitOfWorkManager,
  130. AsbitemGuideManager asbitemGuideManager,
  131. IConfiguration configuration,
  132. IRepository<PatientOccupationalDisease, Guid> patientOccupationalDiseaseRepository,
  133. IRepository<PatientOccupationalHistory, Guid> patientOccupationalHistoryRepository,
  134. IRepository<PatientPoison> patientPoisonRepository,
  135. IRepository<PatientSymptom> patientSymptomRepository,
  136. IRepository<PatientOccupationalMedicalHistory, Guid> patientOccupationalMedicalHistoryRepository,
  137. IRepository<PatientPastMedicalHistory, Guid> patientPastMedicalHistoryRepository
  138. ,
  139. IRepository<OcCheckType, Guid> ocCheckTypeRepository,
  140. IRepository<Poison, Guid> poisonRepository,
  141. IRepository<OccupationalAbnormal, Guid> occupationalAbnormalRepository,
  142. IRepository<Symptom, Guid> symptomRepository,
  143. IRepository<SampleGroupDetail> sampleGroupDetailRepository)
  144. {
  145. this._customerOrgRepository = customerOrgRepository;
  146. this._patientRegisterRepository = patientRegisterRepository;
  147. this._sexRegisterRepository = sexRegisterRepository;
  148. this._resultStatusRepository = resultStatusRepository;
  149. this._sumSummaryHeaderRepository = sumSummaryHeaderRepository;
  150. this._identityUserRepository = identityUserRepository;
  151. this._sumSuggestionHeaderRepository = sumSuggestionHeaderRepository;
  152. this._registerCheckRepository = registerCheckRepository;
  153. this._organizationUnitRepository = organizationUnitRepository;
  154. this._patientRegisterGuideReportRepository = patientRegisterGuideReportRepository;
  155. this._lisRequestReportRepository = lisRequestReportRepository;
  156. //this._checkRequestNoReportRepository = checkRequestNoReportRepository;
  157. this._chargeReportRepository = chargeReportRepository;
  158. this._sysParmValueManager = sysParmValueManager;
  159. _registerCheckAsbitemRepository = registerCheckAsbitemRepository;
  160. _registerCheckAsbitemStaticRepository = registerCheckAsbitemRepository;
  161. _registerCheckItemRepository = registerCheckItemRepository;
  162. _registerCheckSummaryRepository = registerCheckSummaryRepository;
  163. _registerCheckPictureRepository = registerCheckPictureRepository;
  164. _asbitemRepository = asbitemRepository;
  165. _itemRepository = itemRepository;
  166. _medicalReportTypeRepository = medicalReportTypeRepository;
  167. _itemTypeRepository = itemTypeRepository;
  168. _lisRequestRepository = lisRequestRepository;
  169. _sampleGroupRepository = sampleGroupRepository;
  170. _sampleContainerRepository = sampleContainerRepository;
  171. _sampleTypeRepository = sampleTypeRepository;
  172. _cacheService = cacheService;
  173. _lisRequestManager = lisRequestManager;
  174. _unitOfWorkManager = unitOfWorkManager;
  175. _patientRepository = patientRepository;
  176. _asbitemGuideManager = asbitemGuideManager;
  177. _customerOrgGroupRepository = customerOrgGroupRepository;
  178. _medicalPackageRepository = medicalPackageRepository;
  179. _personnelTypeRepository = personnelTypeRepository;
  180. _configuration = configuration;
  181. _organizationUnitRepository = organizationUnitRepository;
  182. _patientOccupationalDiseaseRepository = patientOccupationalDiseaseRepository;
  183. _patientOccupationalHistoryRepository = patientOccupationalHistoryRepository;
  184. _patientPoisonRepository = patientPoisonRepository;
  185. _patientSymptomRepository = patientSymptomRepository;
  186. _patientOccupationalMedicalHistoryRepository = patientOccupationalMedicalHistoryRepository;
  187. _patientPastMedicalHistoryRepository = patientPastMedicalHistoryRepository;
  188. _ocCheckTypeRepository = ocCheckTypeRepository;
  189. _poisonRepository = poisonRepository;
  190. _occupationalAbnormalRepository = occupationalAbnormalRepository;
  191. _symptomRepository = symptomRepository;
  192. _sampleGroupDetailRepository = sampleGroupDetailRepository;
  193. }
  194. /// <summary>
  195. /// 获取体检人员指引单报告数据
  196. /// </summary>
  197. /// <param name="PatientRegisterId"></param>
  198. /// <returns></returns>
  199. [HttpPost("api/app/PrintReport/getpatientregisterguidereport")]
  200. public async Task<PatientRegisterGuideReportDto> GetPatientRegisterGuideReportAsync(Guid PatientRegisterId)
  201. {
  202. //return await _patientRegisterGuideReportRepository.GetPatientRegisterGuideReportAsync(PatientRegisterId);
  203. //_cacheService.GetMedicalTypeNameAsync
  204. var apiUrl = _configuration.GetValue<string>("HostUrl:ApiUrl") + "/";
  205. var patientRegister = await _patientRegisterRepository.GetAsync(o => o.Id == PatientRegisterId);
  206. Guid medicalCenterId = patientRegister.MedicalCenterId;
  207. #region 系统参数配置
  208. var MedicalCenterAddress = await _sysParmValueManager.GetSysParmValueAsync(medicalCenterId, "medical_center_address");
  209. var MedicalCenterFax = await _sysParmValueManager.GetSysParmValueAsync(medicalCenterId, "medical_center_fax");
  210. var MedicalCenterTelphone = await _sysParmValueManager.GetSysParmValueAsync(medicalCenterId, "medical_center_telphone");
  211. #endregion
  212. //var customerOrgList = await _customerOrgRepository.GetListAsync();
  213. var query = from a in await _patientRegisterRepository.GetQueryableAsync()
  214. join b in await _sexRegisterRepository.GetQueryableAsync()
  215. on a.SexId equals b.Id
  216. join c in await _customerOrgGroupRepository.GetQueryableAsync()
  217. on a.CustomerOrgGroupId equals c.Id into cc
  218. from ac in cc.DefaultIfEmpty()
  219. join d in await _medicalPackageRepository.GetQueryableAsync()
  220. on a.MedicalPackageId equals d.Id into dd
  221. from ad in dd.DefaultIfEmpty()
  222. join e in await _patientRepository.GetQueryableAsync()
  223. on a.PatientId equals e.Id
  224. join f in await _personnelTypeRepository.GetQueryableAsync()
  225. on a.PersonnelTypeId equals f.Id into ff
  226. from af in ff.DefaultIfEmpty()
  227. join g in await _organizationUnitRepository.GetQueryableAsync()
  228. on a.MedicalCenterId equals g.Id into gg
  229. from ag in gg.DefaultIfEmpty()
  230. where (a.Id == PatientRegisterId)
  231. select new PatientRegisterGuideReportDto
  232. {
  233. Age = a.Age,
  234. PatientRegisterId = a.Id,
  235. CustomerOrgGroupName = ac.DisplayName,
  236. CustomerOrgName = _cacheService.GetTopCustomerOrgNameAsync(a.CustomerOrgId).GetAwaiter().GetResult(),
  237. CustomerOrgShortName = _cacheService.GetTopCustomerOrgAsync(a.CustomerOrgId).GetAwaiter().GetResult().ShortName,
  238. DepartmentName = _cacheService.GetAllDepartmentNameAsync(a.CustomerOrgId).GetAwaiter().GetResult(),
  239. IdNo = e.IdNo,
  240. JobCardNo = a.JobCardNo,
  241. MedicalCardNo = a.MedicalCardNo,
  242. MedicalCenterAddress = MedicalCenterAddress,
  243. MedicalCenterFax = MedicalCenterFax,
  244. MedicalCenterTelphone = MedicalCenterTelphone,
  245. MedicalPackageName = ad.DisplayName,
  246. MedicalTimes = a.MedicalTimes,
  247. MobileTelephone = e.MobileTelephone,
  248. PatientName = a.PatientName,
  249. PatientNo = e.PatientNo,
  250. PatientRegisterNo = a.PatientRegisterNo,
  251. PersonnelTypeName = af.DisplayName,
  252. SexName = b.DisplayName,
  253. // Photo = string.IsNullOrEmpty(a.Photo) ? "" : ImageHelper.GetImageBase64StringAsync( a.Photo),
  254. Photo = string.IsNullOrEmpty(a.Photo) ? "" : apiUrl + a.Photo,
  255. MedicalStartDate = Convert.ToDateTime(a.MedicalStartDate.ToString()).ToString("yyyy-MM-dd"),
  256. OrganizationUnitId = a.MedicalCenterId,
  257. OrganizationUnitName = ag.DisplayName,
  258. Detail = PatientRegisterGuideAsbitem(a.Id, a.PatientRegisterNo, medicalCenterId, a.SexId),
  259. HisPatientId = a.HisPatientId,
  260. MedicalTypeName = _cacheService.GetMedicalTypeNameAsync(a.MedicalTypeId).Result,
  261. };
  262. return query.FirstOrDefault();
  263. }
  264. /// <summary>
  265. /// 获取体检人员指引单报告数据 不需要转换版本
  266. /// </summary>
  267. /// <param name="PatientRegisterId"></param>
  268. /// <returns></returns>
  269. [HttpPost("api/app/PrintReport/GetPatientRegisterGuideReportConvertToReport")]
  270. public async Task<Rpt0001Dto> GetPatientRegisterGuideReportConvertToReportAsync(Guid PatientRegisterId)
  271. {
  272. var oldDto = await GetPatientRegisterGuideReportAsync(PatientRegisterId);
  273. var entDto = await ConvertToReport.ToPatientGuideReportDataAsync(oldDto);
  274. return entDto;
  275. }
  276. /// <summary>
  277. /// 批量获取体检人员指引单报告数据
  278. /// </summary>
  279. /// <param name="PatientRegisterIds"></param>
  280. /// <returns></returns>
  281. [HttpPost("api/app/printreport/getpatientregisterguidereportmany")]
  282. public async Task<List<PatientRegisterGuideReportDto>> GetPatientRegisterGuideReportManyAsync(List<Guid> PatientRegisterIds)
  283. {
  284. return await _patientRegisterGuideReportRepository.GetPatientRegisterGuideReportManyAsync(PatientRegisterIds);
  285. }
  286. /// <summary>
  287. /// 打印检验申请单
  288. /// </summary>
  289. /// <returns></returns>
  290. [HttpPost("api/app/PrintReport/GetLisRequestReportByPatientRegisterId")]
  291. public async Task<List<LisRequestReportDto>> GetLisRequestReportByPatientRegisterIdAsync(PatientRegisterIdInputDto input)
  292. {
  293. //生成LIS条码
  294. var lisRequests = await _lisRequestManager.SetLisRequestAsync(input.PatientRegisterId);
  295. await _unitOfWorkManager.Current.SaveChangesAsync();
  296. await _unitOfWorkManager.Current.CompleteAsync();
  297. var entlist = new List<LisRequestReportDto>();
  298. //检索条码数据
  299. using (var uow = _unitOfWorkManager.Begin(
  300. requiresNew: false, isTransactional: false
  301. ))
  302. {
  303. var query = (from patient in await _patientRepository.GetQueryableAsync()
  304. join patientRegister in await _patientRegisterRepository.GetQueryableAsync()
  305. on patient.Id equals patientRegister.PatientId
  306. join sex in await _sexRegisterRepository.GetQueryableAsync() on patientRegister.SexId equals sex.Id
  307. join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on patientRegister.Id equals registerCheckAsbitem.PatientRegisterId
  308. join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id
  309. join lisRequest in await _lisRequestRepository.GetQueryableAsync() on registerCheckAsbitem.LisRequestId equals lisRequest.Id
  310. join sampleContainer in await _sampleContainerRepository.GetQueryableAsync() on lisRequest.SampleContainerId equals sampleContainer.Id into dd
  311. from sampleContainerHaveEmpty in dd.DefaultIfEmpty()
  312. join sampleType in await _sampleTypeRepository.GetQueryableAsync() on lisRequest.SampleTypeId equals sampleType.Id into ee
  313. from sampleTypeHaveEmpty in ee.DefaultIfEmpty()
  314. join sampleGroupDetail in await _sampleGroupDetailRepository.GetQueryableAsync() on asbitem.Id equals sampleGroupDetail.AsbitemId into sampleGroupDetailTemp
  315. from sampleTypeHaveEmptyHaveEmpty in sampleGroupDetailTemp.DefaultIfEmpty()
  316. join sampleGroup in await _sampleGroupRepository.GetQueryableAsync()
  317. on sampleTypeHaveEmptyHaveEmpty.SampleGroupId equals sampleGroup.Id into sampleGroupTemp
  318. from sampleGroupHaveEmpty in sampleGroupTemp.DefaultIfEmpty()
  319. where (patientRegister.Id == input.PatientRegisterId && registerCheckAsbitem.LisRequestId != null)
  320. select new
  321. {
  322. patient,
  323. patientRegister,
  324. sex,
  325. registerCheckAsbitem,
  326. asbitem,
  327. lisRequest,
  328. sampleContainerHaveEmpty,
  329. sampleTypeHaveEmpty,
  330. sampleGroupName = sampleGroupHaveEmpty != null ? sampleGroupHaveEmpty.DisplayName : "",
  331. samplePrintCount = sampleGroupHaveEmpty != null ? sampleGroupHaveEmpty.SamplePrintCount : 0
  332. }
  333. ).ToList();
  334. if (query.Count == 0)
  335. {
  336. return new List<LisRequestReportDto>();
  337. }
  338. lisRequests = query.Select(o => o.lisRequest).Distinct().ToList();
  339. //发送第三方LIS申请
  340. if (lisRequests != null)
  341. {
  342. foreach (var lisRequest in lisRequests)
  343. {
  344. await _lisRequestManager.SendThirdLisRequestAsync(lisRequest.Id);
  345. }
  346. }
  347. var lisRequestReportDtoList = query.Select(o => new LisRequestReportDto
  348. {
  349. LisRequestId = o.lisRequest.Id,
  350. PatientNo = o.patient.PatientNo,
  351. Age = o.patientRegister.Age,
  352. AsbitemNames = string.IsNullOrEmpty(o.asbitem.ShortName) ? o.asbitem.DisplayName : o.asbitem.ShortName,
  353. LisRequestNo = o.lisRequest.LisRequestNo,
  354. PatientName = o.patientRegister.PatientName,
  355. PatientRegisterNo = o.patientRegister.PatientRegisterNo,
  356. SampleContainerName = (o.sampleContainerHaveEmpty == null) ? "" : o.sampleContainerHaveEmpty.DisplayName,
  357. ContainerColor = (o.sampleContainerHaveEmpty == null) ? 16777215 : o.sampleContainerHaveEmpty.ContainerColor,
  358. SampleContainerRemark = (o.sampleContainerHaveEmpty == null) ? "" : o.sampleContainerHaveEmpty.ContainerRemark,
  359. SampleTypeName = (o.sampleTypeHaveEmpty == null) ? "" : o.sampleTypeHaveEmpty.DisplayName,
  360. SexName = o.sex.DisplayName,
  361. CustomerOrgName = _cacheService.GetTopCustomerOrgShortNameAsync(o.patientRegister.CustomerOrgId).Result,
  362. DepartmentName = _cacheService.GetAllDepartmentNameAsync(o.patientRegister.CustomerOrgId).Result,
  363. IsPrint = o.lisRequest.IsPrint,
  364. IsSignIn = o.lisRequest.IsSignIn,
  365. SamplingTime = o.lisRequest.SamplingTime,
  366. SignInOrder = o.lisRequest.SignInOrder,
  367. SignInPerson = o.lisRequest.SignInPerson,
  368. SignInTime = o.lisRequest.SignInTime,
  369. SampleGroupName = o.sampleGroupName,
  370. MobileTelephone = o.patient.MobileTelephone,
  371. SamplePrintCount = o.samplePrintCount,
  372. DeviceLisRequestPrintTimes = o.lisRequest.DeviceLisRequestPrintTimes
  373. }).ToList();
  374. var lisRequestNoPrintMode = await _sysParmValueManager.GetSysParmValueAsync(query.FirstOrDefault().patientRegister.MedicalCenterId, "lis_request_no_print_mode");
  375. if (string.IsNullOrWhiteSpace(lisRequestNoPrintMode))
  376. lisRequestNoPrintMode = "0";
  377. //var entlist = lisRequestReportDtoList.GroupBy(g => new
  378. //{
  379. // g.LisRequestNo,
  380. // g.SampleGroupName
  381. //})
  382. // .Select(s => new LisRequestReportDto
  383. // {
  384. // PatientNo = s.FirstOrDefault().PatientNo,
  385. // LisRequestId = s.FirstOrDefault().LisRequestId,
  386. // SexName = s.FirstOrDefault().SexName,
  387. // SampleTypeName = s.FirstOrDefault().SampleTypeName,
  388. // SampleContainerRemark = s.FirstOrDefault().SampleContainerRemark,
  389. // SampleContainerName = s.FirstOrDefault().SampleContainerName,
  390. // ContainerColor = s.FirstOrDefault().ContainerColor,
  391. // PatientRegisterNo = s.FirstOrDefault().PatientRegisterNo,
  392. // PatientName = s.FirstOrDefault().PatientName,
  393. // Age = s.FirstOrDefault().Age,
  394. // LisRequestNo = lisRequestNoPrintMode == "0" ? s.Key.LisRequestNo : s.FirstOrDefault().PatientRegisterNo,
  395. // CustomerOrgName = s.FirstOrDefault().CustomerOrgName,
  396. // DepartmentName = s.FirstOrDefault().DepartmentName,
  397. // AsbitemNames = string.Join(",", s.Select(d => d.AsbitemNames)),
  398. // IsPrint = s.FirstOrDefault().IsPrint,
  399. // IsSignIn = s.FirstOrDefault().IsSignIn,
  400. // SamplingTime = s.FirstOrDefault().SamplingTime,
  401. // SignInOrder = s.FirstOrDefault().SignInOrder,
  402. // SignInPerson = s.FirstOrDefault().SignInPerson,
  403. // SignInTime = s.FirstOrDefault().SignInTime,
  404. // SampleGroupName = s.Key.SampleGroupName,
  405. // MobileTelephone = s.FirstOrDefault().MobileTelephone,
  406. // SamplePrintCount = s.FirstOrDefault().SamplePrintCount
  407. // }).ToList();
  408. entlist = lisRequestReportDtoList.GroupBy(g => new
  409. {
  410. g.PatientNo,
  411. g.LisRequestId,
  412. g.LisRequestNo,
  413. g.Age,
  414. g.PatientName,
  415. g.PatientRegisterNo,
  416. g.SampleContainerName,
  417. g.ContainerColor,
  418. g.SampleContainerRemark,
  419. g.SampleTypeName,
  420. g.SexName,
  421. g.CustomerOrgName,
  422. g.DepartmentName,
  423. g.IsPrint,
  424. g.IsSignIn,
  425. g.SamplingTime,
  426. g.SignInOrder,
  427. g.SignInPerson,
  428. g.SignInTime,
  429. g.MobileTelephone,
  430. g.SampleGroupName
  431. })
  432. .Select(s => new LisRequestReportDto
  433. {
  434. PatientNo = s.Key.PatientNo,
  435. LisRequestId = s.Key.LisRequestId,
  436. SexName = s.Key.SexName,
  437. SampleTypeName = s.Key.SampleTypeName,
  438. SampleContainerRemark = s.Key.SampleContainerRemark,
  439. SampleContainerName = s.Key.SampleContainerName,
  440. ContainerColor = s.Key.ContainerColor,
  441. PatientRegisterNo = s.Key.PatientRegisterNo,
  442. PatientName = s.Key.PatientName,
  443. Age = s.Key.Age,
  444. LisRequestNo = lisRequestNoPrintMode == "0" ? s.Key.LisRequestNo : s.Key.PatientRegisterNo,
  445. CustomerOrgName = s.Key.CustomerOrgName,
  446. DepartmentName = s.Key.DepartmentName,
  447. AsbitemNames = string.Join(",", s.Select(d => d.AsbitemNames)),
  448. IsPrint = s.Key.IsPrint,
  449. IsSignIn = s.Key.IsSignIn,
  450. SamplingTime = s.Key.SamplingTime,
  451. SignInOrder = s.Key.SignInOrder,
  452. SignInPerson = s.Key.SignInPerson,
  453. SignInTime = s.Key.SignInTime,
  454. SampleGroupName = s.Key.SampleGroupName,
  455. MobileTelephone = s.Key.MobileTelephone,
  456. SamplePrintCount = s.FirstOrDefault().SamplePrintCount,
  457. DeviceLisRequestPrintTimes = s.FirstOrDefault().DeviceLisRequestPrintTimes
  458. }).ToList();
  459. await uow.CompleteAsync();
  460. }
  461. return entlist;
  462. }
  463. /// <summary>
  464. /// 打印检验申请单 不需要转换版本
  465. /// </summary>
  466. /// <returns></returns>
  467. [HttpPost("api/app/PrintReport/GetLisRequestReportByPatientRegisterIdConvertToReport")]
  468. public async Task<Rpt0002Dto> GetLisRequestReportByPatientRegisterIdConvertToReportAsync(PatientRegisterIdInputDto input)
  469. {
  470. var oldDto = await GetLisRequestReportByPatientRegisterIdAsync(input);
  471. var entDto = await ConvertToReport.ToLisRequestReportDataAsync(oldDto);
  472. return entDto;
  473. }
  474. /// <summary>
  475. /// 单个打印检验条码
  476. /// </summary>
  477. /// <param name="input"></param>
  478. /// <returns></returns>
  479. [HttpPost("api/app/PrintReport/GetLisRequestReportByLisRequestId")]
  480. public async Task<LisRequestReportDto> GetLisRequestReportByLisRequestIdAsync(LisRequestIdInputDto input)
  481. {
  482. var lisRequestNoPrintMode = await _sysParmValueManager.GetSysParmValueAsync(Guid.Empty, "lis_request_no_print_mode");
  483. if (string.IsNullOrWhiteSpace(lisRequestNoPrintMode))
  484. lisRequestNoPrintMode = "0";
  485. var list = (from patient in await _patientRepository.GetQueryableAsync()
  486. join patientRegister in await _patientRegisterRepository.GetQueryableAsync()
  487. on patient.Id equals patientRegister.PatientId
  488. join registerCheck in await _registerCheckRepository.GetQueryableAsync()
  489. on patientRegister.Id equals registerCheck.PatientRegisterId
  490. join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync()
  491. on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
  492. join asbitem in await _asbitemRepository.GetQueryableAsync()
  493. on registerCheckAsbitem.AsbitemId equals asbitem.Id
  494. join lisRequest in await _lisRequestReportRepository.GetQueryableAsync()
  495. on registerCheckAsbitem.LisRequestId equals lisRequest.Id
  496. join sampleContainer in await _sampleContainerRepository.GetQueryableAsync()
  497. on lisRequest.SampleContainerId equals sampleContainer.Id
  498. join sampleType in await _sampleTypeRepository.GetQueryableAsync()
  499. on lisRequest.SampleTypeId equals sampleType.Id
  500. join sampleGroupDetail in await _sampleGroupDetailRepository.GetQueryableAsync() on asbitem.Id equals sampleGroupDetail.AsbitemId into sampleGroupDetailTemp
  501. from sampleTypeHaveEmptyHaveEmpty in sampleGroupDetailTemp.DefaultIfEmpty()
  502. join sampleGroup in await _sampleGroupRepository.GetQueryableAsync() on sampleTypeHaveEmptyHaveEmpty.SampleGroupId equals sampleGroup.Id into sampleGroupTemp
  503. from sampleGroupHaveEmpty in sampleGroupTemp.DefaultIfEmpty()
  504. where lisRequest.Id == input.LisRequestId
  505. select new
  506. {
  507. patient,
  508. patientRegister,
  509. asbitem,
  510. lisRequest,
  511. sampleContainer,
  512. sampleType,
  513. sampleGroupName = sampleGroupHaveEmpty != null ? sampleGroupHaveEmpty.DisplayName : "",
  514. samplePrintCount = sampleGroupHaveEmpty != null ? sampleGroupHaveEmpty.SamplePrintCount : 1
  515. }).Distinct().ToList();
  516. if (!list.Any())
  517. {
  518. return null;
  519. }
  520. var lisRequestDtoList = new List<LisRequestReportDto>();
  521. var lisRequestInfo = list.First();
  522. var lisRequestDto = new LisRequestReportDto()
  523. {
  524. LisRequestId = input.LisRequestId,
  525. LisRequestNo = lisRequestNoPrintMode == "0" ? lisRequestInfo.lisRequest.LisRequestNo : lisRequestInfo.patientRegister.PatientRegisterNo,
  526. PatientNo = lisRequestInfo.patient.PatientNo,
  527. PatientRegisterNo = lisRequestInfo.patientRegister.PatientRegisterNo,
  528. PatientName = lisRequestInfo.patientRegister.PatientName,
  529. SexName = _cacheService.GetSexNameAsync(lisRequestInfo.patientRegister.SexId).Result,
  530. Age = lisRequestInfo.patientRegister.Age,
  531. IsPrint = lisRequestInfo.lisRequest.IsPrint,
  532. IsSignIn = lisRequestInfo.lisRequest.IsSignIn,
  533. SamplingTime = lisRequestInfo.lisRequest.SamplingTime,
  534. SignInOrder = lisRequestInfo.lisRequest.SignInOrder,
  535. SignInPerson = lisRequestInfo.lisRequest.SignInPerson,
  536. SignInTime = lisRequestInfo.lisRequest.SignInTime,
  537. SampleTypeName = lisRequestInfo.sampleType.DisplayName,
  538. SampleContainerName = lisRequestInfo.sampleContainer.DisplayName,
  539. ContainerColor = lisRequestInfo.sampleContainer.ContainerColor,
  540. SampleContainerRemark = lisRequestInfo.sampleContainer.ContainerRemark,
  541. AsbitemNames = string.Join(",", list.OrderBy(o => o.asbitem.DisplayOrder).Select(o => o.asbitem.DisplayName).Distinct()),
  542. CustomerOrgName = _cacheService.GetTopCustomerOrgShortNameAsync(lisRequestInfo.patientRegister.CustomerOrgId).Result,
  543. DepartmentName = _cacheService.GetAllDepartmentNameAsync(lisRequestInfo.patientRegister.CustomerOrgId).Result,
  544. SampleGroupName = lisRequestInfo.sampleGroupName,
  545. MobileTelephone = lisRequestInfo.patient.MobileTelephone,
  546. SamplePrintCount = lisRequestInfo.samplePrintCount
  547. };
  548. return lisRequestDto;
  549. }
  550. /// <summary>
  551. /// 单个打印检验条码 不需要转换版本
  552. /// </summary>
  553. /// <param name="input"></param>
  554. /// <returns></returns>
  555. [HttpPost("api/app/PrintReport/GetLisRequestReportByLisRequestIdConvertToReport")]
  556. public async Task<Rpt0002Dto> GetLisRequestReportByLisRequestIdConvertToReportAsync(LisRequestIdInputDto input)
  557. {
  558. var oldDto = await GetLisRequestReportByLisRequestIdAsync(input);
  559. var entDto = await ConvertToReport.ToLisRequestReportDataAsync(new List<LisRequestReportDto> { oldDto });
  560. return entDto;
  561. }
  562. /// <summary>
  563. /// 打印体检报告
  564. /// </summary>
  565. /// <returns></returns>
  566. [HttpPost("api/app/PrintReport/GetMedicalReport")]
  567. public async Task<MedicalReportDto> GetMedicalReportAsync(PatientRegisterIdInputDto input)
  568. {
  569. var patientRegister = (await _patientRegisterRepository.GetQueryableAsync())
  570. .Include(x => x.Patient)
  571. .Where(m => m.Id == input.PatientRegisterId).FirstOrDefault();
  572. if (patientRegister == null)
  573. {
  574. throw new UserFriendlyException("人员登记信息不存在");
  575. }
  576. var medicalReportDto = await GetMedicalReportDto(patientRegister);
  577. //获取综述
  578. medicalReportDto.SumSummarys = await GetMedicalReportSummaryDtos(patientRegister);
  579. //获取建议
  580. medicalReportDto.SumSuggestions = await GetMedicalReportSuggestinoDtos(patientRegister);
  581. //设置明细结果
  582. await SetMedicalReportRegisterChecks(patientRegister, medicalReportDto);
  583. //项目对比结果
  584. medicalReportDto.ItemContrasts = await GetMedicalReportItemContrastListAsync(patientRegister);
  585. return medicalReportDto;
  586. }
  587. /// <summary>
  588. /// 打印体检报告 不需要转换版本
  589. /// </summary>
  590. /// <returns></returns>
  591. [HttpPost("api/app/PrintReport/GetMedicalReportConvertToReport")]
  592. public async Task<Rpt0005Dto> GetMedicalReportConvertToReportAsync(PatientRegisterIdInputDto input)
  593. {
  594. var oldDto = await GetMedicalReportAsync(input);
  595. var entDto = await ConvertToReport.ToHealthReportDataAsync(oldDto);
  596. return entDto;
  597. }
  598. /// <summary>
  599. /// 获取职业病体检报告
  600. /// </summary>
  601. /// <param name="input"></param>
  602. /// <returns></returns>
  603. [HttpPost("api/app/PrintReport/GetOccupationalDiseaseMedicalReport")]
  604. public async Task<OccupationalDiseaseMedicalReportDto> GetOccupationalDiseaseMedicalReportAsync(PatientRegisterIdInputDto input)
  605. {
  606. var result = new OccupationalDiseaseMedicalReportDto();
  607. var patientOccupationalDiseaseEnt = (from patientOccupationalDisease in await _patientOccupationalDiseaseRepository.GetQueryableAsync()
  608. join ocCheckType in await _ocCheckTypeRepository.GetQueryableAsync() on patientOccupationalDisease.OcCheckTypeId equals ocCheckType.Id
  609. where patientOccupationalDisease.PatientRegisterId == input.PatientRegisterId
  610. select new
  611. {
  612. ocCheckTypeName = ocCheckType.DisplayName,
  613. patientOccupationalDisease
  614. }).FirstOrDefault();
  615. if (patientOccupationalDiseaseEnt == null)
  616. {
  617. throw new UserFriendlyException("当前人员无职业病信息");
  618. }
  619. //基础报告信息
  620. var medicalReportDto = await GetMedicalReportAsync(input);
  621. result = ObjectMapper.Map<MedicalReportDto, OccupationalDiseaseMedicalReportDto>(medicalReportDto);
  622. #region 检查类别
  623. var ocCheckTypeList = (await _ocCheckTypeRepository.GetQueryableAsync()).OrderBy(o => o.DisplayOrder);
  624. if (ocCheckTypeList.Any())
  625. {
  626. result.OcCheckTypeDtos = ocCheckTypeList.Select(s => new OccupationalDiseaseMedicalReport_OcCheckTypeDto
  627. {
  628. DisplayName = s.DisplayName,
  629. DisplayOrder = s.DisplayOrder,
  630. OcCheckTypeId = s.Id,
  631. SimpleCode = s.SimpleCode
  632. }).ToList();
  633. }
  634. #endregion
  635. #region 职业病基本信息
  636. result.PatientOccupationalDisease = new OccupationalDiseaseMedicalReport_PatientOccupationalDiseaseDto
  637. {
  638. OcCheckTypeName = patientOccupationalDiseaseEnt.ocCheckTypeName,
  639. AbnormalTimes = patientOccupationalDiseaseEnt.patientOccupationalDisease.AbnormalTimes,
  640. AbortionTimes = patientOccupationalDiseaseEnt.patientOccupationalDisease.AbortionTimes,
  641. ChildrenNum = patientOccupationalDiseaseEnt.patientOccupationalDisease.ChildrenNum,
  642. DrinkFlag = patientOccupationalDiseaseEnt.patientOccupationalDisease.DrinkFlag,
  643. DrinkNum = patientOccupationalDiseaseEnt.patientOccupationalDisease.DrinkNum,
  644. DrinkNumMax = patientOccupationalDiseaseEnt.patientOccupationalDisease.DrinkNum != null ? patientOccupationalDiseaseEnt.patientOccupationalDisease.DrinkNum.Value + 50 : null,
  645. DrinkYears = patientOccupationalDiseaseEnt.patientOccupationalDisease.DrinkYears,
  646. FirstMenstruation = patientOccupationalDiseaseEnt.patientOccupationalDisease.FirstMenstruation,
  647. HandleSuggestion = patientOccupationalDiseaseEnt.patientOccupationalDisease.HandleSuggestion,
  648. JobType = patientOccupationalDiseaseEnt.patientOccupationalDisease.JobType,
  649. LastMenstrualPeriodDate = DataHelper.ConversionDateShortToString(patientOccupationalDiseaseEnt.patientOccupationalDisease.LastMenstrualPeriodDate),
  650. MenstruationCycle = patientOccupationalDiseaseEnt.patientOccupationalDisease.MenstruationCycle,
  651. MenstruationEndAge = patientOccupationalDiseaseEnt.patientOccupationalDisease.MenstruationEndAge,
  652. MenstruationFlag = patientOccupationalDiseaseEnt.patientOccupationalDisease.MenstruationFlag,
  653. MenstruationTimeLength = patientOccupationalDiseaseEnt.patientOccupationalDisease.MenstruationTimeLength,
  654. NoOccupAbSuggestion = patientOccupationalDiseaseEnt.patientOccupationalDisease.NoOccupAbSuggestion,
  655. NoOccupationalAbnormal = patientOccupationalDiseaseEnt.patientOccupationalDisease.NoOccupationalAbnormal,
  656. OcCheckTypeId = patientOccupationalDiseaseEnt.patientOccupationalDisease.OcCheckTypeId,
  657. OccupationalAbnormal = patientOccupationalDiseaseEnt.patientOccupationalDisease.OccupationalAbnormal,
  658. OccupationalAbSuggestion = patientOccupationalDiseaseEnt.patientOccupationalDisease.OccupationalAbSuggestion,
  659. Other = patientOccupationalDiseaseEnt.patientOccupationalDisease.Other,
  660. PoisonWorkTime = patientOccupationalDiseaseEnt.patientOccupationalDisease.PoisonWorkTime,
  661. PrematureBirthTimes = patientOccupationalDiseaseEnt.patientOccupationalDisease.PrematureBirthTimes,
  662. FamilyGeneticHistory = patientOccupationalDiseaseEnt.patientOccupationalDisease.FamilyGeneticHistory,
  663. RiskFactors = patientOccupationalDiseaseEnt.patientOccupationalDisease.RiskFactors,
  664. SmokeFlag = patientOccupationalDiseaseEnt.patientOccupationalDisease.SmokeFlag,
  665. SmokeNum = patientOccupationalDiseaseEnt.patientOccupationalDisease.SmokeNum,
  666. SmokeNumMax = patientOccupationalDiseaseEnt.patientOccupationalDisease.SmokeNum != null ? patientOccupationalDiseaseEnt.patientOccupationalDisease.SmokeNum + 5 : null,
  667. SmokeYears = patientOccupationalDiseaseEnt.patientOccupationalDisease.SmokeYears,
  668. StillbirthTimes = patientOccupationalDiseaseEnt.patientOccupationalDisease.StillbirthTimes,
  669. TotalWorkTime = patientOccupationalDiseaseEnt.patientOccupationalDisease.TotalWorkTime,
  670. OccupationalDiseaseNumber = patientOccupationalDiseaseEnt.patientOccupationalDisease.OccupationalDiseaseNumber
  671. };
  672. #endregion
  673. #region 职业史
  674. var patientOccupationalHistoryList = (await _patientOccupationalHistoryRepository.GetQueryableAsync()).Where(m => m.PatientRegisterId == input.PatientRegisterId)
  675. .OrderBy(o => o.CreationTime).ToList();
  676. result.PatientOccupationalHistoryDtos = patientOccupationalHistoryList.Select(s => new OccupationalDiseaseMedicalReport_PatientOccupationalHistoryDto
  677. {
  678. BeginDate = DataHelper.ConversionDateShortToString(s.BeginDate),
  679. EndDate = DataHelper.ConversionDateShortToString(s.EndDate),
  680. Org = s.Org,
  681. Poison = s.Poison,
  682. ProtectiveMeasures = s.ProtectiveMeasures,
  683. WorkShop = s.WorkShop,
  684. WorkType = s.WorkType,
  685. DisplayOrder = patientOccupationalHistoryList.IndexOf(s) + 1
  686. }).ToList();
  687. #endregion
  688. #region 毒害因素
  689. var patientPoisonDtoList = (from patientPoison in await _patientPoisonRepository.GetQueryableAsync()
  690. join poison in await _poisonRepository.GetQueryableAsync() on patientPoison.PoisonId equals poison.Id into poisonTemp
  691. from poisonHaveEmpty in poisonTemp.DefaultIfEmpty()
  692. join occupationalAbnormal in await _occupationalAbnormalRepository.GetQueryableAsync() on patientPoison.OccupationalAbnormalId equals occupationalAbnormal.Id into occupationalAbnormalTemp
  693. from occupationalAbnormalHaveEmpty in occupationalAbnormalTemp.DefaultIfEmpty()
  694. where patientPoison.PatientRegisterId == input.PatientRegisterId
  695. orderby patientPoison.CreationTime ascending
  696. select new
  697. {
  698. OccupationalAbnormalName = occupationalAbnormalHaveEmpty != null ? occupationalAbnormalHaveEmpty.DisplayName : "",
  699. PoisonName = poisonHaveEmpty != null ? poisonHaveEmpty.DisplayName : ""
  700. }).ToList();
  701. result.PatientPoisonDtos = patientPoisonDtoList.Select(s => new OccupationalDiseaseMedicalReport_PatientPoisonDto
  702. {
  703. OccupationalAbnormalName = s.OccupationalAbnormalName,
  704. PoisonName = s.PoisonName,
  705. DisplayOrder = patientPoisonDtoList.IndexOf(s) + 1
  706. }).ToList();
  707. #endregion
  708. #region 职业病症状
  709. var patientSymptomList = (from patientSymptom in await _patientSymptomRepository.GetQueryableAsync()
  710. join symptom in await _symptomRepository.GetQueryableAsync() on patientSymptom.SymptomId equals symptom.Id into symptomTemp
  711. from symptomHaveEmpty in symptomTemp.DefaultIfEmpty()
  712. where patientSymptom.PatientRegisterId == input.PatientRegisterId
  713. orderby patientSymptom.CreationTime ascending
  714. select new
  715. {
  716. patientSymptom,
  717. SymptomName = symptomHaveEmpty != null ? symptomHaveEmpty.DisplayName : ""
  718. }).ToList();
  719. result.PatientSymptomDtos = patientSymptomList.Select(s => new OccupationalDiseaseMedicalReport_PatientSymptomDto
  720. {
  721. Degree = s.patientSymptom.Degree,
  722. SymptomName = s.SymptomName,
  723. TimeLength = s.patientSymptom.TimeLength,
  724. DisplayOrder = patientSymptomList.IndexOf(s) + 1
  725. }).ToList();
  726. #endregion
  727. #region 职业病史
  728. var patientOccupationalMedicalHistoryList = (await _patientOccupationalMedicalHistoryRepository.GetQueryableAsync())
  729. .Where(m => m.PatientRegisterId == input.PatientRegisterId).OrderBy(o => o.CreationTime).ToList();
  730. result.PatientOccupationalMedicalHistoryDtos = patientOccupationalMedicalHistoryList.Select(s => new OccupationalDiseaseMedicalReport_PatientOccupationalMedicalHistoryDto
  731. {
  732. DiagnosisDate = DataHelper.ConversionDateShortToString(s.DiagnosisDate),
  733. DiagnosisHospital = s.DiagnosisHospital,
  734. IsRecovery = s.IsRecovery == 'Y' ? "治愈" : "未愈",
  735. OccupationalDisease = s.OccupationalDisease,
  736. TreatmentMethods = s.TreatmentMethods,
  737. DisplayOrder = patientOccupationalMedicalHistoryList.IndexOf(s) + 1
  738. }).ToList();
  739. #endregion
  740. #region 既往病史
  741. var patientPastMedicalHistoryList = (await _patientPastMedicalHistoryRepository.GetQueryableAsync())
  742. .Where(m => m.PatientRegisterId == input.PatientRegisterId).OrderBy(o => o.CreationTime).ToList();
  743. result.PatientPastMedicalHistoryDtos = patientPastMedicalHistoryList.Select(s => new OccupationalDiseaseMedicalReport_PatientOccupationalMedicalHistoryDto
  744. {
  745. DiagnosisDate = DataHelper.ConversionDateShortToString(s.DiagnosisDate),
  746. DiagnosisHospital = s.DiagnosisHospital,
  747. IsRecovery = s.IsRecovery == 'Y' ? "治愈" : "未愈",
  748. OccupationalDisease = s.OccupationalDisease,
  749. TreatmentMethods = s.TreatmentMethods,
  750. DisplayOrder = patientPastMedicalHistoryList.IndexOf(s) + 1
  751. }).ToList();
  752. #endregion
  753. return result;
  754. }
  755. /// <summary>
  756. /// 获取职业病体检报告 不需要转换版本
  757. /// </summary>
  758. /// <param name="input"></param>
  759. /// <returns></returns>
  760. [HttpPost("api/app/PrintReport/GetOccupationalDiseaseMedicalReportConvertToReport")]
  761. public async Task<Rpt0006Dto> GetOccupationalDiseaseMedicalReportConvertToReportAsync(PatientRegisterIdInputDto input)
  762. {
  763. var oldDto = await GetOccupationalDiseaseMedicalReportAsync(input);
  764. var entDto = await ConvertToReport.ToOccupationalDiseaseReportDataAsync(oldDto);
  765. return entDto;
  766. }
  767. /// <summary>
  768. /// 打印Pacs条码数据
  769. /// </summary>
  770. /// <param name="input"></param>
  771. /// <returns></returns>
  772. [HttpPost("api/app/PrintReport/getpacsnoreport")]
  773. public async Task<List<PacsNoReportDto>> GetPacsNoReportAsync(PatientRegisterIdInputDto input)
  774. {
  775. var query = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
  776. join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id
  777. join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId
  778. join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
  779. join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id into asbitemTemp
  780. from asbitemHaveEmpty in asbitemTemp.DefaultIfEmpty()
  781. join itemType in await _itemTypeRepository.GetQueryableAsync() on asbitemHaveEmpty.ItemTypeId equals itemType.Id into itemTypeTemp
  782. from itemTypeHaveEmpty in itemTypeTemp.DefaultIfEmpty()
  783. where (patientRegister.Id == input.PatientRegisterId
  784. && !string.IsNullOrEmpty(registerCheck.CheckRequestNo)
  785. && asbitemHaveEmpty.BarcodeMode != BarcodeModeFlag.NoPrint
  786. )
  787. select new
  788. {
  789. Age = patientRegister.Age,
  790. AsbitemName = asbitemHaveEmpty.DisplayName,
  791. CheckRequestNo = registerCheck.CheckRequestNo,
  792. RegisterCheckId = registerCheck.Id,
  793. PatientName = patientRegister.PatientName,
  794. PatientRegisterNo = patientRegister.PatientRegisterNo,
  795. SexName = _cacheService.GetSexNameAsync(patientRegister.SexId).Result,
  796. IsCheckRequest = itemTypeHaveEmpty != null ? itemTypeHaveEmpty.IsCheckRequest : 'N',
  797. BarcodeMode = asbitemHaveEmpty != null ? asbitemHaveEmpty.BarcodeMode : '0',
  798. CustomerOrgId = patientRegister.CustomerOrgId,
  799. MobileTelephone = patient.MobileTelephone,
  800. DeviceCheckRequestPrintTimes = registerCheck.DeviceCheckRequestPrintTimes
  801. }).ToList();
  802. var queryGroup = query.GroupBy(g => g.CheckRequestNo);
  803. List<PacsNoReportDto> pacsNoReportDtos = new List<PacsNoReportDto>();
  804. foreach (var s in queryGroup)
  805. {
  806. if (s.Where(m => m.BarcodeMode == '0' && m.IsCheckRequest == 'Y').Count() > 0)
  807. {
  808. pacsNoReportDtos.Add(new PacsNoReportDto
  809. {
  810. Age = s.FirstOrDefault().Age,
  811. AsbitemName = string.Join(',', s.Select(s => s.AsbitemName)),
  812. CheckRequestNo = s.FirstOrDefault().CheckRequestNo,
  813. RegisterCheckId = s.FirstOrDefault().RegisterCheckId,
  814. PatientName = s.FirstOrDefault().PatientName,
  815. PatientRegisterNo = s.FirstOrDefault().PatientRegisterNo,
  816. SexName = s.FirstOrDefault().SexName,
  817. CustomerOrgName = _cacheService.GetTopCustomerOrgShortNameAsync(s.FirstOrDefault().CustomerOrgId).Result,
  818. DepartmentName = _cacheService.GetAllDepartmentNameAsync(s.FirstOrDefault().CustomerOrgId).Result,
  819. MobileTelephone = s.FirstOrDefault().MobileTelephone,
  820. DeviceCheckRequestPrintTimes = s.FirstOrDefault().DeviceCheckRequestPrintTimes
  821. });
  822. }
  823. else if (s.Where(m => m.BarcodeMode == '1').Count() > 0)
  824. {
  825. pacsNoReportDtos.Add(new PacsNoReportDto
  826. {
  827. Age = s.FirstOrDefault().Age,
  828. AsbitemName = string.Join(',', s.Select(s => s.AsbitemName)),
  829. CheckRequestNo = s.FirstOrDefault().PatientRegisterNo,
  830. RegisterCheckId = s.FirstOrDefault().RegisterCheckId,
  831. PatientName = s.FirstOrDefault().PatientName,
  832. PatientRegisterNo = s.FirstOrDefault().PatientRegisterNo,
  833. SexName = s.FirstOrDefault().SexName,
  834. CustomerOrgName = _cacheService.GetTopCustomerOrgShortNameAsync(s.FirstOrDefault().CustomerOrgId).Result,
  835. DepartmentName = _cacheService.GetAllDepartmentNameAsync(s.FirstOrDefault().CustomerOrgId).Result,
  836. MobileTelephone = s.FirstOrDefault().MobileTelephone,
  837. DeviceCheckRequestPrintTimes = s.FirstOrDefault().DeviceCheckRequestPrintTimes
  838. });
  839. }
  840. }
  841. return pacsNoReportDtos;
  842. }
  843. /// <summary>
  844. /// 打印Pacs条码数据 不需要转换版本
  845. /// </summary>
  846. /// <param name="input"></param>
  847. /// <returns></returns>
  848. [HttpPost("api/app/PrintReport/GetPacsNoReportConvertToReport")]
  849. public async Task<Rpt0004Dto> GetPacsNoReportConvertToReportAsync(PatientRegisterIdInputDto input)
  850. {
  851. var oldDto = await GetPacsNoReportAsync(input);
  852. var entDto = await ConvertToReport.ToExamRequestReportDataAsync(oldDto);
  853. return entDto;
  854. }
  855. /// <summary>
  856. /// 打印Pacs条码数据 单个条码打印
  857. /// </summary>
  858. /// <param name="input"></param>
  859. /// <returns></returns>
  860. [HttpPost("api/app/PrintReport/GetPacsNoReportByCheckRequestNo")]
  861. public async Task<PacsNoReportDto> GetPacsNoReportByCheckRequestNoAsync(RegisterCheckIdInputDto input)
  862. {
  863. PacsNoReportDto pacsNoReportDto = new PacsNoReportDto();
  864. if (input.RegisterCheckId != Guid.Empty)
  865. {
  866. var query = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
  867. join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId
  868. join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
  869. join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id into asbitemTemp
  870. from asbitemHaveEmpty in asbitemTemp.DefaultIfEmpty()
  871. join itemType in await _itemTypeRepository.GetQueryableAsync() on asbitemHaveEmpty.ItemTypeId equals itemType.Id into itemTypeTemp
  872. from itemTypeHaveEmpty in itemTypeTemp.DefaultIfEmpty()
  873. where registerCheck.Id == input.RegisterCheckId
  874. && !string.IsNullOrEmpty(registerCheck.CheckRequestNo)
  875. && asbitemHaveEmpty.BarcodeMode != '2'
  876. select new
  877. {
  878. Age = patientRegister.Age,
  879. AsbitemName = asbitemHaveEmpty.DisplayName,
  880. CheckRequestNo = registerCheck.CheckRequestNo,
  881. PatientName = patientRegister.PatientName,
  882. PatientRegisterNo = patientRegister.PatientRegisterNo,
  883. SexName = _cacheService.GetSexNameAsync(patientRegister.SexId).Result,
  884. IsCheckRequest = itemTypeHaveEmpty != null ? itemTypeHaveEmpty.IsCheckRequest : 'N',
  885. BarcodeMode = asbitemHaveEmpty != null ? asbitemHaveEmpty.BarcodeMode : '0',
  886. CustomerOrgId = patientRegister.CustomerOrgId,
  887. }).ToList();
  888. if (query.Count > 0)
  889. {
  890. var queryGroup = query.GroupBy(g => g.CheckRequestNo).FirstOrDefault();
  891. if (queryGroup.Where(m => m.BarcodeMode == '0' && m.IsCheckRequest == 'Y').Count() > 0)
  892. {
  893. pacsNoReportDto = new PacsNoReportDto
  894. {
  895. Age = queryGroup.FirstOrDefault().Age,
  896. AsbitemName = string.Join(',', queryGroup.Select(s => s.AsbitemName)),
  897. CheckRequestNo = queryGroup.FirstOrDefault().CheckRequestNo,
  898. PatientName = queryGroup.FirstOrDefault().PatientName,
  899. PatientRegisterNo = queryGroup.FirstOrDefault().PatientRegisterNo,
  900. SexName = queryGroup.FirstOrDefault().SexName,
  901. CustomerOrgName = _cacheService.GetTopCustomerOrgShortNameAsync(queryGroup.FirstOrDefault().CustomerOrgId).Result,
  902. DepartmentName = _cacheService.GetAllDepartmentNameAsync(queryGroup.FirstOrDefault().CustomerOrgId).Result
  903. };
  904. }
  905. else if (queryGroup.Where(m => m.BarcodeMode == '1').Count() > 0)
  906. {
  907. pacsNoReportDto = new PacsNoReportDto
  908. {
  909. Age = queryGroup.FirstOrDefault().Age,
  910. AsbitemName = string.Join(',', queryGroup.Select(s => s.AsbitemName)),
  911. CheckRequestNo = queryGroup.FirstOrDefault().PatientRegisterNo,
  912. PatientName = queryGroup.FirstOrDefault().PatientName,
  913. PatientRegisterNo = queryGroup.FirstOrDefault().PatientRegisterNo,
  914. SexName = queryGroup.FirstOrDefault().SexName,
  915. CustomerOrgName = _cacheService.GetTopCustomerOrgShortNameAsync(queryGroup.FirstOrDefault().CustomerOrgId).Result,
  916. DepartmentName = _cacheService.GetAllDepartmentNameAsync(queryGroup.FirstOrDefault().CustomerOrgId).Result
  917. };
  918. }
  919. }
  920. }
  921. return pacsNoReportDto;
  922. }
  923. /// <summary>
  924. /// 打印Pacs条码数据 单个条码打印
  925. /// </summary>
  926. /// <param name="input"></param>
  927. /// <returns></returns>
  928. [HttpPost("api/app/PrintReport/GetPacsNoReportByCheckRequestNoConvertToReport")]
  929. public async Task<Rpt0004Dto> GetPacsNoReportByCheckRequestNoConvertToReportAsync(RegisterCheckIdInputDto input)
  930. {
  931. var oldDto = await GetPacsNoReportByCheckRequestNoAsync(input);
  932. var entDto = await ConvertToReport.ToExamRequestReportDataAsync(new List<PacsNoReportDto> { oldDto });
  933. return entDto;
  934. }
  935. ///// <summary>
  936. ///// 打印Pacs条码数据
  937. ///// </summary>
  938. ///// <param name="PatientRegisterId"></param>
  939. ///// <returns></returns>
  940. //[HttpPost("api/app/PrintReport/getpacsnoreport")]
  941. //public async Task<List<PacsNoReportDto>> GetPacsNoReportAsync(Guid PatientRegisterId)
  942. //{
  943. // var query = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
  944. // join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId
  945. // join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
  946. // join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id into asbitemTemp
  947. // from asbitemHaveEmpty in asbitemTemp.DefaultIfEmpty()
  948. // join itemType in await _itemTypeRepository.GetQueryableAsync() on asbitemHaveEmpty.ItemTypeId equals itemType.Id into itemTypeTemp
  949. // from itemTypeHaveEmpty in itemTypeTemp.DefaultIfEmpty()
  950. // where (patientRegister.Id == PatientRegisterId && itemTypeHaveEmpty.IsCheckRequest == 'Y')
  951. // select new PacsNoReportDto
  952. // {
  953. // Age = patientRegister.Age,
  954. // AsbitemName = asbitemHaveEmpty.DisplayName,
  955. // CheckRequestNo = registerCheck.CheckRequestNo,
  956. // PatientName = patientRegister.PatientName,
  957. // PatientRegisterNo = patientRegister.PatientRegisterNo,
  958. // SexName = _cacheService.GetSexNameAsync(patientRegister.SexId).Result,
  959. // CustomerOrgName = _cacheService.GetTopCustomerOrgNameAsync(patientRegister.CustomerOrgId).Result,
  960. // DepartmentName = _cacheService.GetCustomerOrgNameAsync(patientRegister.CustomerOrgId).Result
  961. // }).ToList();
  962. // var entList = query.GroupBy(g => g.CheckRequestNo).Select(s => new PacsNoReportDto
  963. // {
  964. // Age = s.FirstOrDefault().Age,
  965. // AsbitemName = string.Join(',', s.Select(s => s.AsbitemName)),
  966. // CheckRequestNo = s.FirstOrDefault().CheckRequestNo,
  967. // PatientName = s.FirstOrDefault().PatientName,
  968. // PatientRegisterNo = s.FirstOrDefault().PatientRegisterNo,
  969. // SexName = s.FirstOrDefault().SexName,
  970. // CustomerOrgName = s.FirstOrDefault().CustomerOrgName,
  971. // DepartmentName = s.FirstOrDefault().DepartmentName
  972. // }).ToList();
  973. // return entList;
  974. //}
  975. /// <summary>
  976. /// 打印收费单
  977. /// </summary>
  978. /// <param name="ChargeId">收费主表ID</param>
  979. /// <returns></returns>
  980. [HttpPost("api/app/PrintReport/getchargereport")]
  981. public async Task<ChargeReportDto> GetChargeReportAsync(Guid ChargeId)
  982. {
  983. return await _chargeReportRepository.GetChargeReportAsync(ChargeId);
  984. }
  985. /// <summary>
  986. /// 打印收费单 不需要转换版本
  987. /// </summary>
  988. /// <param name="ChargeId">收费主表ID</param>
  989. /// <returns></returns>
  990. [HttpPost("api/app/PrintReport/GetChargeReportConvertToReport")]
  991. public async Task<Rpt0007Dto> GetChargeReportConvertToReportAsync(Guid ChargeId)
  992. {
  993. var oldDto = await GetChargeReportAsync(ChargeId);
  994. var entDto = await ConvertToReport.ToPayBillReportDataAsync(oldDto);
  995. return entDto;
  996. }
  997. /// <summary>
  998. /// 获取体检报告人员信息
  999. /// </summary>
  1000. /// <param name="patientRegister"></param>
  1001. /// <returns></returns>
  1002. private async Task<MedicalReportDto> GetMedicalReportDto(PatientRegister patientRegister)
  1003. {
  1004. #region 系统参数配置
  1005. var medicalCenterAddress = await _sysParmValueManager.GetSysParmValueAsync(patientRegister.MedicalCenterId, "medical_center_address");
  1006. var medicalCenterFax = await _sysParmValueManager.GetSysParmValueAsync(patientRegister.MedicalCenterId, "medical_center_fax");
  1007. var medicalCenterTelphone = await _sysParmValueManager.GetSysParmValueAsync(patientRegister.MedicalCenterId, "medical_center_telphone");
  1008. #endregion
  1009. #region 人员信息
  1010. var medicalReportDto = new MedicalReportDto
  1011. {
  1012. //个人信息
  1013. PatientRegisterId = patientRegister.Id,
  1014. IsPersonal = 'N',
  1015. CustomerOrgName = _cacheService.GetTopCustomerOrgAsync(patientRegister.CustomerOrgId).Result.DisplayName,
  1016. DepartmentName = _cacheService.GetCustomerOrgAsync(patientRegister.CustomerOrgId).Result.DisplayName,
  1017. PatientRegisterNo = patientRegister.PatientRegisterNo,
  1018. PatientNo = patientRegister.Patient.PatientNo,
  1019. PatientName = patientRegister.PatientName,
  1020. IdNo = patientRegister.Patient.IdNo,
  1021. MedicalTimes = patientRegister.MedicalTimes,
  1022. SexName = _cacheService.GetSexNameAsync(patientRegister.SexId).GetAwaiter().GetResult(),
  1023. BirthDate = patientRegister.BirthDate,
  1024. Age = patientRegister.Age,
  1025. MaritalStatusName = _cacheService.GetMaritalStatusNameAsync(patientRegister.MaritalStatusId).GetAwaiter().GetResult(),
  1026. NationName = _cacheService.GetNationNameAsync(patientRegister.Patient.NationId).GetAwaiter().GetResult(),
  1027. MobileTelephone = patientRegister.Patient.MobileTelephone,
  1028. IsVip = patientRegister.IsVip,
  1029. MedicalTypeName = _cacheService.GetMedicalTypeNameAsync(patientRegister.MedicalTypeId).GetAwaiter().GetResult(),
  1030. PersonnelTypeName = _cacheService.GetPersonnelTypeNameAsync(patientRegister.PersonnelTypeId).GetAwaiter().GetResult(),
  1031. MedicalStartDate = patientRegister.MedicalStartDate,
  1032. SummaryDoctorName = _cacheService.GetSurnameAsync(patientRegister.SummaryDoctorId).GetAwaiter().GetResult(),
  1033. SummaryDoctorSignUrl = _cacheService.GetUserSignAsync(patientRegister.SummaryDoctorId).GetAwaiter().GetResult(),
  1034. SummaryDate = patientRegister.SummaryDate,
  1035. AuditDoctorName = _cacheService.GetSurnameAsync(patientRegister.AuditDoctorId).GetAwaiter().GetResult(),
  1036. AuditDoctorSignUrl = _cacheService.GetUserSignAsync(patientRegister.AuditDoctorId).GetAwaiter().GetResult(),
  1037. AuditDate = patientRegister.AuditDate,
  1038. //体检中心信息
  1039. MedicalCenterTelphone = medicalCenterTelphone,
  1040. MedicalCenterAddress = medicalCenterAddress,
  1041. MedicalCenterId = patientRegister.MedicalCenterId,
  1042. MedicalCenterName = (await _organizationUnitRepository.GetAsync(patientRegister.MedicalCenterId)).DisplayName,
  1043. };
  1044. if (patientRegister.CustomerOrgId == GuidFlag.PersonCustomerOrgId)
  1045. {
  1046. medicalReportDto.IsPersonal = 'Y';
  1047. }
  1048. if (patientRegister.MedicalPackageId != null)
  1049. {
  1050. var medicalPackageEnt = await _medicalPackageRepository.FirstOrDefaultAsync(f => f.Id == patientRegister.MedicalPackageId);
  1051. if (medicalPackageEnt != null)
  1052. {
  1053. medicalReportDto.MedicalPackageOrCustomerOrgGroupName = medicalPackageEnt.DisplayName;
  1054. }
  1055. }
  1056. else
  1057. {
  1058. var customerOrgGroupEnt = await _customerOrgGroupRepository.FirstOrDefaultAsync(f => f.Id == patientRegister.CustomerOrgGroupId);
  1059. if (customerOrgGroupEnt != null)
  1060. {
  1061. medicalReportDto.MedicalPackageOrCustomerOrgGroupName = customerOrgGroupEnt.DisplayName;
  1062. }
  1063. }
  1064. #endregion
  1065. return medicalReportDto;
  1066. }
  1067. /// <summary>
  1068. /// 获取体检报告综述
  1069. /// </summary>
  1070. /// <param name="patientRegister"></param>
  1071. /// <returns></returns>
  1072. private async Task<List<MedicalReportSumSummaryDto>> GetMedicalReportSummaryDtos(PatientRegister patientRegister)
  1073. {
  1074. var sumSummarylist = (await _sumSummaryHeaderRepository.GetQueryableAsync())
  1075. .Include(x => x.SumSummaryContents)
  1076. .Where(m => m.PatientRegisterId == patientRegister.Id).OrderBy(o => o.DisplayOrder).ToList();
  1077. var medicalReportSumSummaryDtos = new List<MedicalReportSumSummaryDto>();
  1078. if (sumSummarylist.Any())
  1079. {
  1080. medicalReportSumSummaryDtos = sumSummarylist.Select(s => new MedicalReportSumSummaryDto
  1081. {
  1082. SummaryTitle = s.SummaryTitle,
  1083. SummaryFlag = s.SummaryFlag,
  1084. DisplayOrder = s.DisplayOrder,
  1085. SummaryContents = s.SumSummaryContents.OrderBy(o => o.DisplayOrder).Select(sa => new MedicalReportSumSummaryContentDto
  1086. {
  1087. SummaryContent = sa.SummaryContent,
  1088. DisplayOrder = sa.DisplayOrder,
  1089. }).OrderBy(o => o.DisplayOrder).ToList()
  1090. }).OrderBy(o => o.DisplayOrder).ToList();
  1091. }
  1092. return medicalReportSumSummaryDtos;
  1093. }
  1094. /// <summary>
  1095. /// 获取体检报告建议
  1096. /// </summary>
  1097. /// <param name="patientRegister"></param>
  1098. /// <returns></returns>
  1099. private async Task<List<MedicalReportSumSuggestionDto>> GetMedicalReportSuggestinoDtos(PatientRegister patientRegister)
  1100. {
  1101. var sumSuggestionlist = (await _sumSuggestionHeaderRepository.GetQueryableAsync())
  1102. .Include(x => x.SumSuggestionContents)
  1103. .Where(m => m.PatientRegisterId == patientRegister.Id).OrderBy(o => o.DisplayOrder).ToList();
  1104. var medicalReportSumSuggestionDtos = new List<MedicalReportSumSuggestionDto>();
  1105. if (sumSuggestionlist.Any())
  1106. {
  1107. medicalReportSumSuggestionDtos = sumSuggestionlist.Select(s => new MedicalReportSumSuggestionDto
  1108. {
  1109. SuggestionTitle = s.SuggestionTitle,
  1110. SuggestionFlag = s.SuggestionFlag,
  1111. DisplayOrder = s.DisplayOrder,
  1112. MedicalInterpretations = s.SumSuggestionContents.
  1113. Where(o => o.SuggestionType == SuggestionTypeFlag.MedicalInterpretation && !string.IsNullOrWhiteSpace(o.SuggestionContent))
  1114. .OrderBy(o => o.DisplayOrder)
  1115. .Select(sa => new MedicalReportSumSuggestionContentDto
  1116. {
  1117. SuggestionContent = sa.SuggestionContent,
  1118. DisplayOrder = sa.DisplayOrder,
  1119. }).OrderBy(o => o.DisplayOrder).ToList(),
  1120. CommonReasons = s.SumSuggestionContents.
  1121. Where(o => o.SuggestionType == SuggestionTypeFlag.CommonReasons && !string.IsNullOrWhiteSpace(o.SuggestionContent))
  1122. .OrderBy(o => o.DisplayOrder)
  1123. .Select(sa => new MedicalReportSumSuggestionContentDto
  1124. {
  1125. SuggestionContent = sa.SuggestionContent,
  1126. DisplayOrder = sa.DisplayOrder,
  1127. }).OrderBy(o => o.DisplayOrder).ToList(),
  1128. HealthGuidances = s.SumSuggestionContents.
  1129. Where(o => o.SuggestionType == SuggestionTypeFlag.HealthGuidance && !string.IsNullOrWhiteSpace(o.SuggestionContent))
  1130. .OrderBy(o => o.DisplayOrder)
  1131. .Select(sa => new MedicalReportSumSuggestionContentDto
  1132. {
  1133. SuggestionContent = sa.SuggestionContent,
  1134. DisplayOrder = sa.DisplayOrder,
  1135. }).OrderBy(o => o.DisplayOrder).ToList()
  1136. })
  1137. .OrderBy(o => o.DisplayOrder).ToList();
  1138. }
  1139. return medicalReportSumSuggestionDtos;
  1140. }
  1141. /// <summary>
  1142. /// 获取体检报告明细结果
  1143. /// </summary>
  1144. /// <param name="patientRegister"></param>
  1145. /// <param name="medicalReportDto"></param>
  1146. /// <returns></returns>
  1147. private async Task SetMedicalReportRegisterChecks(PatientRegister patientRegister, MedicalReportDto medicalReportDto)
  1148. {
  1149. var resultStatusList = (await _resultStatusRepository.GetListAsync());
  1150. //获取体检报告类别
  1151. medicalReportDto.MedicalReportTypes = await GetMedicalReportTypeList();
  1152. //获取项目类别
  1153. medicalReportDto.ItemTypes = await GetItemTypeList();
  1154. var registerChecklist = (from registerCheck in await _registerCheckRepository.GetQueryableAsync()
  1155. join registerAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync()
  1156. on registerCheck.Id equals registerAsbitem.RegisterCheckId
  1157. join registerCheckItem in await _registerCheckItemRepository.GetQueryableAsync()
  1158. on registerCheck.Id equals registerCheckItem.RegisterCheckId
  1159. join registerCheckPicture in await _registerCheckPictureRepository.GetQueryableAsync()
  1160. on registerCheck.Id equals registerCheckPicture.RegisterCheckId into registerCheckPictureExist
  1161. from registerCheckPictureHaveEmpty in registerCheckPictureExist.DefaultIfEmpty()
  1162. join registerCheckSummary in await _registerCheckSummaryRepository.GetQueryableAsync()
  1163. on registerCheck.Id equals registerCheckSummary.RegisterCheckId into registerCheckSummaryExist
  1164. from registerCheckSummaryHaveEmpty in registerCheckSummaryExist.DefaultIfEmpty()
  1165. join asbitem in await _asbitemRepository.GetQueryableAsync()
  1166. on registerAsbitem.AsbitemId equals asbitem.Id
  1167. join item in await _itemRepository.GetQueryableAsync()
  1168. on registerCheckItem.ItemId equals item.Id
  1169. join itemType in await _itemTypeRepository.GetQueryableAsync()
  1170. on asbitem.ItemTypeId equals itemType.Id
  1171. join medicalReportType in await _medicalReportTypeRepository.GetQueryableAsync()
  1172. on itemType.MedicalReportTypeId equals medicalReportType.Id
  1173. where (registerCheck.PatientRegisterId == patientRegister.Id
  1174. && registerCheck.CompleteFlag == RegisterCheckCompleteFlag.Checked)
  1175. select new
  1176. {
  1177. registerCheck,
  1178. registerAsbitem,
  1179. registerCheckItem,
  1180. registerCheckPictureHaveEmpty,
  1181. registerCheckSummaryHaveEmpty,
  1182. asbitem,
  1183. item,
  1184. itemType,
  1185. medicalReportType
  1186. })
  1187. .OrderBy(o => o.registerCheck.Id)
  1188. .ToList();
  1189. var registerCheckIds = registerChecklist.Select(o => o.registerCheck.Id).Distinct().ToList();
  1190. #region 获取采样时间
  1191. var samplerList = (from registerCheck in await _registerCheckRepository.GetQueryableAsync()
  1192. join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
  1193. join lisRequest in await _lisRequestRepository.GetQueryableAsync() on registerCheckAsbitem.LisRequestId equals lisRequest.Id
  1194. where registerCheckIds.Contains(registerCheck.Id)
  1195. select new
  1196. {
  1197. registerCheckId = registerCheck.Id,
  1198. samplerId = lisRequest.SamplerId,
  1199. samplingTime = lisRequest.SamplingTime
  1200. }).ToList();
  1201. #endregion
  1202. foreach (var registerCheckId in registerCheckIds)
  1203. {
  1204. var registerCheckRows = registerChecklist.Where(o => o.registerCheck.Id == registerCheckId).ToList();
  1205. //隐藏隐私项目
  1206. if (registerCheckRows.Where(m => m.asbitem.IsPrivacy == 'Y').Count() > 0)
  1207. {
  1208. continue;
  1209. }
  1210. var registerCheckRow = registerCheckRows.First();
  1211. var medicalReportRegisterCheckDto = new MedicalReportRegisterCheckDto()
  1212. {
  1213. ItemTypeId = registerCheckRow.itemType.Id,
  1214. AsbitemNames = string.Join(",", registerCheckRows.
  1215. GroupBy(o => o.asbitem.Id).
  1216. Select(d => d.First().asbitem.DisplayName
  1217. )
  1218. .ToList()
  1219. ),
  1220. CheckDate = (DateTime)registerCheckRow.registerCheck.CheckDate,
  1221. };
  1222. #region 采样信息
  1223. var sampler = samplerList.FirstOrDefault(f => f.registerCheckId == registerCheckId);
  1224. if (sampler != null)
  1225. {
  1226. medicalReportRegisterCheckDto.SamplerName = _cacheService.GetSurnameAsync(sampler.samplerId).GetAwaiter().GetResult();
  1227. medicalReportRegisterCheckDto.SamplingTime = DataHelper.ConversionDateToString(sampler.samplingTime);
  1228. }
  1229. #endregion
  1230. //检查医生
  1231. var checkDoctorId = registerCheckRow.registerCheck.CheckDoctorId;
  1232. if (!string.IsNullOrWhiteSpace(checkDoctorId))
  1233. {
  1234. if (Guid.TryParse(checkDoctorId, out var checkDoctorIdGuid))
  1235. {
  1236. medicalReportRegisterCheckDto.CheckDoctorName = _cacheService.GetSurnameAsync(checkDoctorIdGuid).GetAwaiter().GetResult();
  1237. medicalReportRegisterCheckDto.CheckDoctorSignUrl = _cacheService.GetUserSignAsync(checkDoctorIdGuid).GetAwaiter().GetResult();
  1238. }
  1239. else
  1240. {
  1241. medicalReportRegisterCheckDto.CheckDoctorName = checkDoctorId;
  1242. medicalReportRegisterCheckDto.CheckDoctorSignUrl = "";
  1243. }
  1244. }
  1245. #region 体检审核信息
  1246. medicalReportRegisterCheckDto.IsAudit = registerCheckRow.registerCheck.IsAudit;
  1247. medicalReportRegisterCheckDto.AuditTime = DataHelper.ConversionDateToString(registerCheckRow.registerCheck.AuditTime);
  1248. var auditorUserId = registerCheckRow.registerCheck.AuditorUserId;
  1249. if (auditorUserId != null && auditorUserId != Guid.Empty)
  1250. {
  1251. medicalReportRegisterCheckDto.AuditorUserName = _cacheService.GetSurnameAsync(auditorUserId).GetAwaiter().GetResult();
  1252. medicalReportRegisterCheckDto.AuditorUserSignUrl = _cacheService.GetUserSignAsync(auditorUserId).GetAwaiter().GetResult();
  1253. }
  1254. #endregion
  1255. #region 第三方传过来的审核信息
  1256. //lis审核医生+标本号
  1257. medicalReportRegisterCheckDto.LisSampleNo = registerCheckRow.registerCheck.LisSampleNo;
  1258. medicalReportRegisterCheckDto.SubmissionTime = DataHelper.ConversionDateToString(registerCheckRow.registerCheck.SubmissionTime);
  1259. medicalReportRegisterCheckDto.AuditorTime = DataHelper.ConversionDateToString(registerCheckRow.registerCheck.AuditorTime);
  1260. // medicalReportRegisterCheckDto.LisAuditorDoctorName = registerCheckRow.registerCheck.LisAuditorDoctorName;
  1261. //lis审核医生
  1262. var auditorNameId = registerCheckRow.registerCheck.AuditorName;
  1263. if (!string.IsNullOrWhiteSpace(auditorNameId))
  1264. {
  1265. if (Guid.TryParse(auditorNameId, out var auditorNameIdGuid))
  1266. {
  1267. medicalReportRegisterCheckDto.AuditorName = _cacheService.GetSurnameAsync(auditorNameIdGuid).GetAwaiter().GetResult();
  1268. medicalReportRegisterCheckDto.AuditorNameSignUrl = _cacheService.GetUserSignAsync(auditorNameIdGuid).GetAwaiter().GetResult();
  1269. }
  1270. else
  1271. {
  1272. medicalReportRegisterCheckDto.AuditorName = auditorNameId;
  1273. medicalReportRegisterCheckDto.AuditorNameSignUrl = "";
  1274. }
  1275. }
  1276. #endregion
  1277. //显示顺序
  1278. medicalReportRegisterCheckDto.DisplayOrder = registerCheckRow.asbitem.DisplayOrder;
  1279. //明细结果
  1280. foreach (var registerCheckItemRow in registerCheckRows)
  1281. {
  1282. if (medicalReportRegisterCheckDto.Items.
  1283. Where(o => o.ItemId == registerCheckItemRow.registerCheckItem.ItemId).Count() > 0)
  1284. {
  1285. continue;
  1286. }
  1287. var resultStatus = resultStatusList.Where(o => o.Id == registerCheckItemRow.registerCheckItem.ResultStatusId).FirstOrDefault();
  1288. var medicalReportCheckItemDto = new MedicalReportCheckItemDto()
  1289. {
  1290. ItemId = registerCheckItemRow.registerCheckItem.ItemId,
  1291. ItemName = registerCheckItemRow.item.DisplayName,
  1292. Result = registerCheckItemRow.registerCheckItem.Result,
  1293. ReferenceRangeValue = registerCheckItemRow.registerCheckItem.ReferenceRangeValue,
  1294. CriticalRangeValue = registerCheckItemRow.registerCheckItem.CriticalRangeValue,
  1295. Unit = registerCheckItemRow.registerCheckItem.Unit,
  1296. ReportFontColor = (resultStatus == null) ? 0 : resultStatus.ReportFontColor,
  1297. ReportBackgroundColor = (resultStatus == null) ? 16579836 : resultStatus.ReportBackgroundColor,
  1298. ReportPrompt = (resultStatus == null) ? null : resultStatus.ReportPrompt,
  1299. DisplayOrder = registerCheckItemRow.item.DisplayOrder,
  1300. };
  1301. medicalReportRegisterCheckDto.Items.Add(medicalReportCheckItemDto);
  1302. }
  1303. //小结
  1304. //medicalReportRegisterCheckDto.Summarys = registerCheckRows.Select(o => new MedicalReportCheckAsbitemSummaryDto()
  1305. //{
  1306. // Summary = o.registerCheckSummaryHaveEmpty.Summary,
  1307. // DisplayOrder = o.registerCheckSummaryHaveEmpty.DisplayOrder
  1308. //}).OrderBy(o => o.DisplayOrder).Distinct().ToList();
  1309. medicalReportRegisterCheckDto.Summarys = registerCheckRows.Where(o => o.registerCheckSummaryHaveEmpty != null)
  1310. .GroupBy(g => g.registerCheckSummaryHaveEmpty.Id)
  1311. .Select(o => new MedicalReportCheckAsbitemSummaryDto()
  1312. {
  1313. Summary = o.FirstOrDefault().registerCheckSummaryHaveEmpty.Summary,
  1314. DisplayOrder = o.FirstOrDefault().registerCheckSummaryHaveEmpty.DisplayOrder
  1315. }).OrderBy(o => o.DisplayOrder).Distinct().ToList();
  1316. //图片
  1317. var registerCheckPictures = registerCheckRows.Where(o => o.registerCheckPictureHaveEmpty != null &&
  1318. o.registerCheckPictureHaveEmpty.IsPrint == 'Y')
  1319. .Select(o => new
  1320. {
  1321. PictureFilename = o.registerCheckPictureHaveEmpty.PictureFilename,
  1322. DisplayOrder = o.registerCheckPictureHaveEmpty.DisplayOrder,
  1323. PictureFileType = o.registerCheckPictureHaveEmpty.PictureFileType,
  1324. ItemTypeName = o.itemType.DisplayName
  1325. }).OrderBy(o => o.DisplayOrder).Distinct().ToList();
  1326. foreach (var registerCheckPicture in registerCheckPictures)
  1327. {
  1328. var medicalReportCheckPictureDto = new MedicalReportCheckPictureDto();
  1329. medicalReportCheckPictureDto.PictureFileName = registerCheckPicture.PictureFilename;
  1330. //medicalReportCheckPictureDto.PictureBase64 =
  1331. // Shentun.Utilities.FileHelper.ToBase64(registerCheckPicture.PictureFilename);
  1332. medicalReportCheckPictureDto.DisplayOrder = registerCheckPicture.DisplayOrder;
  1333. medicalReportCheckPictureDto.PictureFileType = registerCheckPicture.PictureFileType;
  1334. medicalReportCheckPictureDto.ItemTypeName = registerCheckPicture.ItemTypeName;
  1335. medicalReportRegisterCheckDto.Pictures.Add(medicalReportCheckPictureDto);
  1336. }
  1337. medicalReportDto.RegisterChecks.Add(medicalReportRegisterCheckDto);
  1338. }
  1339. }
  1340. /// <summary>
  1341. /// 获取项目类别
  1342. /// </summary>
  1343. /// <returns></returns>
  1344. private async Task<List<MedicalReportItemTypeDto>> GetItemTypeList()
  1345. {
  1346. var itemTypes = await _itemTypeRepository.GetListAsync();
  1347. var medicalReportItemTypeDtos = new List<MedicalReportItemTypeDto>();
  1348. foreach (var itemType in itemTypes)
  1349. {
  1350. var medicalReportItemTypeDto = new MedicalReportItemTypeDto()
  1351. {
  1352. MedicalReportTypeId = itemType.MedicalReportTypeId,
  1353. ItemTypeId = itemType.Id,
  1354. ItemTypeName = itemType.DisplayName,
  1355. ItemTypePathCode = itemType.PathCode,
  1356. DisplayOrder = itemType.DisplayOrder,
  1357. };
  1358. medicalReportItemTypeDtos.Add(medicalReportItemTypeDto);
  1359. }
  1360. return medicalReportItemTypeDtos;
  1361. }
  1362. /// <summary>
  1363. /// 获取体检报告类别
  1364. /// </summary>
  1365. /// <returns></returns>
  1366. private async Task<List<MedicalReportMedicalReportTypeDto>> GetMedicalReportTypeList()
  1367. {
  1368. var medicalReportTypes = (await _medicalReportTypeRepository.GetListAsync()).OrderBy(o => o.DisplayOrder);
  1369. var MedicalReportMedicalReportTypeDtos = new List<MedicalReportMedicalReportTypeDto>();
  1370. foreach (var medicalReportType in medicalReportTypes)
  1371. {
  1372. MedicalReportMedicalReportTypeDtos.Add(new MedicalReportMedicalReportTypeDto()
  1373. {
  1374. MedicalReportTypeId = medicalReportType.Id,
  1375. MedicalReportTypeName = medicalReportType.DisplayName,
  1376. DisplayOrder = medicalReportType.DisplayOrder,
  1377. });
  1378. }
  1379. return MedicalReportMedicalReportTypeDtos;
  1380. }
  1381. private static List<PatientRegisterGuideReport_Detail> PatientRegisterGuideAsbitem(Guid PatientRegisterId, string PatientRegisterNo, Guid medicalCenterId, char SexId)
  1382. {
  1383. var entlist = _registerCheckAsbitemStaticRepository.GetQueryableAsync().Result
  1384. .Include(x => x.Asbitem.ItemType)
  1385. .Include(x => x.Asbitem.ItemType.GuidType)
  1386. .Include(x => x.RegisterCheck)
  1387. .Where(m => m.PatientRegisterId == PatientRegisterId && m.Asbitem.IsCheck == 'Y')
  1388. .Select(s => new PatientRegisterGuideReport_Asbitem_Temp
  1389. {
  1390. AsbitemName = s.Asbitem.DisplayName,
  1391. AsbitemGuide = _asbitemGuideManager.GetAsbitemGuideConvertSexId(medicalCenterId, s.AsbitemId, SexId),
  1392. AsbitemDisplayOrder = s.Asbitem.DisplayOrder,
  1393. ItemTypeDisplayOrder = s.Asbitem.ItemType.DisplayOrder,
  1394. GuideDisplayOrder = s.Asbitem.ItemType.GuidType.DisplayOrder,
  1395. GuideName = s.Asbitem.ItemType.GuidType.DisplayName,
  1396. CheckRequestNo = GetCheckRequestNobyAsbitem(s.Asbitem, PatientRegisterNo, s.RegisterCheck.CheckRequestNo, s.Asbitem.ItemType.IsCheckRequest)
  1397. })
  1398. .OrderBy(o => o.GuideDisplayOrder)
  1399. .GroupBy(g => new { g.GuideName, g.GuideDisplayOrder })
  1400. .Select(s => new PatientRegisterGuideReport_Detail
  1401. {
  1402. GuideName = s.Key.GuideName,
  1403. AsbitemCount = s.Count(),
  1404. DisplayOrder = s.Key.GuideDisplayOrder,
  1405. Detail_Name = s.ToList().Select(ss => new PatientRegisterGuideReport_Detail_Asbitem
  1406. {
  1407. AsbitemName = ss.AsbitemName,
  1408. AsbitemGuide = ss.AsbitemGuide,
  1409. DisplayOrder = (ss.ItemTypeDisplayOrder * 3000) + ss.AsbitemDisplayOrder,
  1410. CheckRequestNo = ss.CheckRequestNo
  1411. }).OrderBy(o => o.DisplayOrder).ToList()
  1412. }).OrderBy(o => o.DisplayOrder).ToList();
  1413. return entlist;
  1414. }
  1415. /// <summary>
  1416. /// 获取检查单号
  1417. /// </summary>
  1418. /// <returns></returns>
  1419. private static string GetCheckRequestNobyAsbitem(Asbitem asbitem, string PatientRegisterNo, string CheckRequestNo, char IsCheckRequest)
  1420. {
  1421. string result = "";
  1422. if (asbitem.BarcodeMode == BarcodeModeFlag.UsingItemType && IsCheckRequest == 'Y')
  1423. {
  1424. result = CheckRequestNo;
  1425. }
  1426. else if (asbitem.BarcodeMode == BarcodeModeFlag.PrintPatientRegisterNumber)
  1427. {
  1428. result = PatientRegisterNo;
  1429. }
  1430. return result;
  1431. }
  1432. /// <summary>
  1433. /// 获取项目结果对比
  1434. /// </summary>
  1435. /// <param name="newPatientRegister"></param>
  1436. /// <returns></returns>
  1437. private async Task<List<MedicalReportItemContrastDto>> GetMedicalReportItemContrastListAsync(PatientRegister newPatientRegister)
  1438. {
  1439. var query = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
  1440. join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId
  1441. join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
  1442. join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id
  1443. join registerCheckItem in await _registerCheckItemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckItem.RegisterCheckId
  1444. join item in await _itemRepository.GetQueryableAsync() on registerCheckItem.ItemId equals item.Id
  1445. where patientRegister.PatientId == newPatientRegister.PatientId
  1446. && item.IsReportContrast == 'Y'
  1447. && patientRegister.MedicalStartDate != null
  1448. && patientRegister.MedicalStartDate >= newPatientRegister.MedicalStartDate.Value.AddYears(-3)
  1449. select new
  1450. {
  1451. registerCheckItem,
  1452. itemName = item.DisplayName,
  1453. medicalStartDate = patientRegister.MedicalStartDate,
  1454. asbitemName = asbitem.DisplayName
  1455. }).ToList();
  1456. var entListDto = query.GroupBy(g => g.registerCheckItem)
  1457. .Select(s => new MedicalReportItemContrastDto
  1458. {
  1459. AsbitemName = string.Join(",", s.Select(s => s.asbitemName).Distinct()),
  1460. ItemName = s.FirstOrDefault().itemName,
  1461. ItemReferenceRange = s.Key.ReferenceRangeValue,
  1462. ItemResult = s.Key.Result,
  1463. MedicalStartDate = DataHelper.ConversionDateShortToString(s.FirstOrDefault().medicalStartDate)
  1464. }).ToList();
  1465. foreach (var item in entListDto)
  1466. {
  1467. decimal resultDecimal;
  1468. if (!decimal.TryParse(item.ItemResult, out resultDecimal))
  1469. {
  1470. item.ItemResult = "0";
  1471. }
  1472. }
  1473. return entListDto;
  1474. }
  1475. }
  1476. }