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.

5270 lines
259 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. using log4net.Plugin;
  2. using Microsoft.AspNetCore.Authorization;
  3. using Microsoft.AspNetCore.Identity;
  4. using Microsoft.AspNetCore.Mvc;
  5. using Microsoft.EntityFrameworkCore;
  6. using Microsoft.EntityFrameworkCore.Query;
  7. using Microsoft.Extensions.DependencyModel;
  8. using Microsoft.Extensions.Logging;
  9. using Microsoft.Extensions.Options;
  10. using NPOI.DDF;
  11. using NPOI.SS.Formula.Functions;
  12. using NUglify.Helpers;
  13. using Shentun.Peis.CustomerOrgs;
  14. using Shentun.Peis.Enums;
  15. using Shentun.Peis.ItemTypes;
  16. using Shentun.Peis.Models;
  17. using Shentun.Peis.MyUser;
  18. using Shentun.Peis.PatientRegisters;
  19. using Shentun.Peis.RegisterCheckItems;
  20. using Shentun.Peis.Sexs;
  21. using Shentun.Utilities;
  22. using SqlSugar;
  23. using System;
  24. using System.Collections.Generic;
  25. using System.Data;
  26. using System.Globalization;
  27. using System.IO;
  28. using System.Linq;
  29. using System.Linq.Dynamic.Core;
  30. using System.Reflection;
  31. using System.Runtime.Loader;
  32. using System.Text;
  33. using System.Threading;
  34. using System.Threading.Tasks;
  35. using Volo.Abp;
  36. using Volo.Abp.Application.Services;
  37. using Volo.Abp.Domain.Repositories;
  38. using Volo.Abp.Identity;
  39. using Volo.Abp.Uow;
  40. using Volo.Abp.Users;
  41. using Xceed.Document.NET;
  42. namespace Shentun.Peis.DataMigrations
  43. {
  44. /// <summary>
  45. /// 基础数据处理
  46. /// </summary>
  47. //[Authorize]
  48. //[RemoteService(false)]
  49. public class BaseDataHandleAppService : ApplicationService
  50. {
  51. private readonly SqlSugarClient Db = new SqlSugarClient(new ConnectionConfig()
  52. {
  53. ConnectionString = "server=.;uid=sa;pwd=123;database=mypeis0513;Encrypt=false;",
  54. DbType = SqlSugar.DbType.SqlServer,
  55. IsAutoCloseConnection = true
  56. });
  57. //private readonly SqlSugarClient PgDb = new SqlSugarClient(new ConnectionConfig()
  58. //{
  59. // ConnectionString = "Host=140.143.162.39;Port=5432;Database=ShentunPeis070703;User ID=postgres;Password=shentun123;",
  60. // DbType = SqlSugar.DbType.PostgreSQL,
  61. // IsAutoCloseConnection = true
  62. //});
  63. //修改时间用
  64. private readonly SqlSugarClient PgNWDb = new SqlSugarClient(new ConnectionConfig()
  65. {
  66. ConnectionString = "Host=10.1.12.140;Port=5432;Database=ShentunPeis0508;User ID=postgres;Password=st123;",
  67. DbType = SqlSugar.DbType.PostgreSQL,
  68. IsAutoCloseConnection = true
  69. });
  70. //默认指引类别ID
  71. private readonly char defaultGuidTypeId = '0';
  72. //默认体检报告类别ID
  73. private readonly char defaultMedicalReportTypeId = '0';
  74. //默认体检中心
  75. private readonly Guid defaultMedicalCenterId = Guid.Parse("0de5b78a-731d-4f80-b262-655ebbf04581");
  76. //默认体检结论类别
  77. private readonly string defaultMedicalConclusionType = "01";
  78. //默认容器ID
  79. private readonly Guid defaultSampleContainerId = Guid.Parse("3a126a07-eb42-a369-99e4-114a2629d714");
  80. //默认单位性质ID
  81. private readonly Guid defaultOrgTypeId = Guid.Parse("3a126a08-9607-fe40-e5da-6daa01712468");
  82. private readonly IRepository<DeviceType, Guid> _deviceTypeRepository;
  83. private readonly IRepository<ItemType, Guid> _itemTypeRepository;
  84. private readonly ItemTypeManager _itemTypeManager;
  85. private readonly IRepository<Unit, Guid> _unitRepository;
  86. private readonly IRepository<MedicalType, Guid> _medicalTypeRepository;
  87. private readonly IRepository<PersonnelType, Guid> _personnelTypeRepository;
  88. private readonly IRepository<InvoiceItemType, Guid> _invoiceItemTypeRepository;
  89. private readonly IRepository<FieldComparison, Guid> _fieldComparisonRepository;
  90. private readonly IRepository<SampleType, Guid> _sampleTypeRepository;
  91. private readonly IRepository<Item, Guid> _itemRepository;
  92. private readonly IRepository<ReferenceRange, Guid> _referenceRangeRepository;
  93. private readonly IRepository<Asbitem, Guid> _asbitemRepository;
  94. private readonly IRepository<AsbitemDetail> _asbitemDetailRepository;
  95. private readonly IRepository<MedicalPackage, Guid> _medicalPackageRepository;
  96. private readonly IRepository<MedicalPackageDetail> _medicalPackageDetailRepository;
  97. private readonly IRepository<Diagnosis, Guid> _diagnosisRepository;
  98. private readonly IRepository<Suggestion, Guid> _suggestionRepository;
  99. private readonly IRepository<ItemResultTemplate, Guid> _itemResultTemplateRepository;
  100. private readonly IRepository<ItemResultMatch, Guid> _ItemResultMatchRepository;
  101. private readonly MyUserAppService _myUserAppService;
  102. private readonly IRepository<MenuInfo, Guid> _menuInfoRepository;
  103. private readonly IRepository<CustomerOrg, Guid> _customerOrgRepository;
  104. private readonly CustomerOrgManager _customerOrgManager;
  105. private readonly IRepository<CustomerOrgRegister, Guid> _customerOrgRegisterRepository;
  106. private readonly IRepository<CustomerOrgGroup, Guid> _customerOrgGroupRepository;
  107. private readonly IRepository<CustomerOrgGroupDetail> _customerOrgGroupDetailRepository;
  108. private readonly IRepository<Patient, Guid> _patientRepository;
  109. private readonly IRepository<Nation> _nationRepository;
  110. private readonly ILogger<BaseDataHandleAppService> _logger;
  111. private readonly IRepository<IdentityUser, Guid> _identityUserRepository;
  112. private readonly IRepository<MedicalConclusion, Guid> _medicalConclusionRepository;
  113. private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository;
  114. private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
  115. private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository;
  116. private readonly IRepository<RegisterCheckItem> _registerCheckItemRepository;
  117. private readonly RegisterCheckItemManager _registerCheckItemManager;
  118. private readonly UnitOfWorkManager _unitOfWorkManager;
  119. private readonly IRepository<RegisterCheckSummary, Guid> _registerCheckSummaryRepository;
  120. private readonly IRepository<SumSummaryHeader, Guid> _sumSummaryHeaderRepository;
  121. private readonly IRepository<SumSummaryContent, Guid> _sumSummaryContentRepository;
  122. private readonly IRepository<SumSuggestionHeader, Guid> _sumSuggestionHeaderRepository;
  123. private readonly IRepository<SumSuggestionContent, Guid> _sumSuggestionContentRepository;
  124. private readonly IRepository<SumDiagnosis> _sumDiagnosisRepository;
  125. private readonly IRepository<Report, string> _reportRepository;
  126. private readonly IRepository<ReportFormat, string> _reportFormatRepository;
  127. private readonly IRepository<ReportFormatTemplate, string> _reportFormatTemplateRepository;
  128. private readonly IRepository<SampleGroup, Guid> _sampleGroupRepository;
  129. private readonly IRepository<SampleGroupDetail> _sampleGroupDetailRepository;
  130. private readonly IRepository<SysParmType> _sysParmTypeRepository;
  131. private readonly IRepository<SysParm> _sysParmRepository;
  132. private readonly IRepository<SysParmValue> _sysParmValueRepository;
  133. private readonly IRepository<CollectItemType, Guid> _collectItemTypeRepository;
  134. private readonly IRepository<PatientRegisterExter> _patientRegisterExterRepository;
  135. private readonly IRepository<AsbitemGuide> _asbitemGuideRepository;
  136. private readonly PatientRegisterManager _patientRegisterManager;
  137. private Dictionary<string, string> veryPatientNo = new Dictionary<string, string>();
  138. public BaseDataHandleAppService(
  139. IRepository<DeviceType, Guid> deviceTypeRepository,
  140. IRepository<ItemType, Guid> itemTypeRepository,
  141. ItemTypeManager itemTypeManager,
  142. IRepository<Unit, Guid> unitRepository,
  143. IRepository<MedicalType, Guid> medicalTypeRepository,
  144. IRepository<PersonnelType, Guid> personnelTypeRepository,
  145. IRepository<InvoiceItemType, Guid> invoiceItemTypeRepository,
  146. IRepository<FieldComparison, Guid> fieldComparisonRepository,
  147. IRepository<SampleType, Guid> sampleTypeRepository,
  148. IRepository<Item, Guid> itemRepository,
  149. IRepository<ReferenceRange, Guid> referenceRangeRepository,
  150. IRepository<Asbitem, Guid> asbitemRepository,
  151. IRepository<AsbitemDetail> asbitemDetailRepository,
  152. IRepository<MedicalPackage, Guid> medicalPackageRepository,
  153. IRepository<MedicalPackageDetail> medicalPackageDetailRepository,
  154. IRepository<ItemResultTemplate, Guid> itemResultTemplateRepository,
  155. IRepository<ItemResultMatch, Guid> itemResultMatchRepository,
  156. IRepository<Diagnosis, Guid> diagnosisRepository,
  157. IRepository<Suggestion, Guid> suggestionRepository,
  158. MyUserAppService myUserAppService,
  159. IRepository<MenuInfo, Guid> menuInfoRepository,
  160. IRepository<CustomerOrg, Guid> customerOrgRepository,
  161. CustomerOrgManager customerOrgManager,
  162. IRepository<CustomerOrgRegister, Guid> customerOrgRegisterRepository,
  163. IRepository<CustomerOrgGroup, Guid> customerOrgGroupRepository,
  164. IRepository<CustomerOrgGroupDetail> customerOrgGroupDetailRepository,
  165. IRepository<Nation> nationRepository,
  166. IRepository<Patient, Guid> patientRepository,
  167. ILogger<BaseDataHandleAppService> logger,
  168. IRepository<IdentityUser, Guid> identityUserRepository,
  169. IRepository<MedicalConclusion, Guid> medicalConclusionRepository,
  170. IRepository<PatientRegister, Guid> patientRegisterRepository,
  171. IRepository<RegisterCheck, Guid> registerCheckRepository,
  172. IRepository<RegisterCheckAsbitem, Guid> registerCheckAsbitemRepository,
  173. IRepository<RegisterCheckItem> registerCheckItemRepository,
  174. RegisterCheckItemManager registerCheckItemManager,
  175. UnitOfWorkManager unitOfWorkManager,
  176. IRepository<RegisterCheckSummary, Guid> registerCheckSummaryRepository,
  177. IRepository<SumSummaryHeader, Guid> sumSummaryHeaderRepository,
  178. IRepository<SumSummaryContent, Guid> sumSummaryContentRepository,
  179. IRepository<SumSuggestionHeader, Guid> sumSuggestionHeaderRepository,
  180. IRepository<SumSuggestionContent, Guid> sumSuggestionContentRepository,
  181. IRepository<SumDiagnosis> sumDiagnosisRepository,
  182. IRepository<Report, string> reportRepository,
  183. IRepository<ReportFormat, string> reportFormatRepository,
  184. IRepository<ReportFormatTemplate, string> reportFormatTemplateRepository,
  185. IRepository<SampleGroup, Guid> sampleGroupRepository,
  186. IRepository<SampleGroupDetail> sampleGroupDetailRepository,
  187. IRepository<SysParmType> sysParmTypeRepository,
  188. IRepository<SysParm> sysParmRepository,
  189. IRepository<SysParmValue> sysParmValueRepository,
  190. IRepository<CollectItemType, Guid> collectItemTypeRepository,
  191. IRepository<PatientRegisterExter> patientRegisterExterRepository,
  192. IRepository<AsbitemGuide> asbitemGuideRepository,
  193. PatientRegisterManager patientRegisterManager)
  194. {
  195. _deviceTypeRepository = deviceTypeRepository;
  196. _itemTypeRepository = itemTypeRepository;
  197. _itemTypeManager = itemTypeManager;
  198. _unitRepository = unitRepository;
  199. _medicalTypeRepository = medicalTypeRepository;
  200. _personnelTypeRepository = personnelTypeRepository;
  201. _invoiceItemTypeRepository = invoiceItemTypeRepository;
  202. _fieldComparisonRepository = fieldComparisonRepository;
  203. _sampleTypeRepository = sampleTypeRepository;
  204. _itemRepository = itemRepository;
  205. _referenceRangeRepository = referenceRangeRepository;
  206. _asbitemRepository = asbitemRepository;
  207. _asbitemDetailRepository = asbitemDetailRepository;
  208. _medicalPackageRepository = medicalPackageRepository;
  209. _medicalPackageDetailRepository = medicalPackageDetailRepository;
  210. _itemResultTemplateRepository = itemResultTemplateRepository;
  211. _ItemResultMatchRepository = itemResultMatchRepository;
  212. _diagnosisRepository = diagnosisRepository;
  213. _suggestionRepository = suggestionRepository;
  214. _myUserAppService = myUserAppService;
  215. _menuInfoRepository = menuInfoRepository;
  216. _customerOrgRepository = customerOrgRepository;
  217. _customerOrgManager = customerOrgManager;
  218. _customerOrgRegisterRepository = customerOrgRegisterRepository;
  219. _customerOrgGroupRepository = customerOrgGroupRepository;
  220. _customerOrgGroupDetailRepository = customerOrgGroupDetailRepository;
  221. _nationRepository = nationRepository;
  222. _patientRepository = patientRepository;
  223. _logger = logger;
  224. _identityUserRepository = identityUserRepository;
  225. _medicalConclusionRepository = medicalConclusionRepository;
  226. _patientRegisterRepository = patientRegisterRepository;
  227. _registerCheckRepository = registerCheckRepository;
  228. _registerCheckAsbitemRepository = registerCheckAsbitemRepository;
  229. _registerCheckItemRepository = registerCheckItemRepository;
  230. _registerCheckItemManager = registerCheckItemManager;
  231. _unitOfWorkManager = unitOfWorkManager;
  232. _registerCheckSummaryRepository = registerCheckSummaryRepository;
  233. _sumSummaryHeaderRepository = sumSummaryHeaderRepository;
  234. _sumSummaryContentRepository = sumSummaryContentRepository;
  235. _sumSuggestionHeaderRepository = sumSuggestionHeaderRepository;
  236. _sumSuggestionContentRepository = sumSuggestionContentRepository;
  237. _sumDiagnosisRepository = sumDiagnosisRepository;
  238. _reportRepository = reportRepository;
  239. _reportFormatRepository = reportFormatRepository;
  240. _reportFormatTemplateRepository = reportFormatTemplateRepository;
  241. _sampleGroupRepository = sampleGroupRepository;
  242. _sampleGroupDetailRepository = sampleGroupDetailRepository;
  243. _sysParmTypeRepository = sysParmTypeRepository;
  244. _sysParmRepository = sysParmRepository;
  245. _sysParmValueRepository = sysParmValueRepository;
  246. _collectItemTypeRepository = collectItemTypeRepository;
  247. _patientRegisterExterRepository = patientRegisterExterRepository;
  248. _asbitemGuideRepository = asbitemGuideRepository;
  249. _patientRegisterManager = patientRegisterManager;
  250. }
  251. /// <summary>
  252. /// 手动添加字段对照
  253. /// </summary>
  254. /// <param name="input"></param>
  255. /// <returns></returns>
  256. [HttpPost]
  257. public async Task CreateFieldComparisonAsync(CreateFieldComparisonDto input)
  258. {
  259. FieldComparison fieldComparison = new FieldComparison
  260. {
  261. FieldName = "id",
  262. NewKeyValue = input.NewKeyValue,
  263. OldKeyValue = input.OldKeyValue,
  264. TableName = input.TableName
  265. };
  266. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  267. }
  268. /// <summary>
  269. /// 处理基础数据
  270. /// </summary>
  271. /// <returns></returns>
  272. public async Task HandBaseData()
  273. {
  274. await TransferDeviceTypeData();
  275. await TransferUnitData();
  276. await TransferMedicalTypeData();
  277. await TransferPersonnelTypeData();
  278. await TransferInvoiceItemTypeData();
  279. await TransferCollectItemTypeData();
  280. await TransferItemTypeData();
  281. await TransferSampleTypeData();
  282. await TransferNationData();
  283. await TransferMedicalConclusionData();
  284. }
  285. /// <summary>
  286. /// 处理基础项目相关数据
  287. /// </summary>
  288. /// <returns></returns>
  289. public async Task HandBaseItemData()
  290. {
  291. await TransferItemData();
  292. await TransferAsbitemData();
  293. await TransferAsbitemDetailData();
  294. await TransferMedicalPackageData();
  295. await TransferMedicalPackageDetailData();
  296. await TransferDiagnosisData();
  297. await TransferSuggestionData();
  298. await TransferItemResultTemplateData();
  299. await TransferItemResultMatchData();
  300. await TransferReferenceRangeData();
  301. await TransferSampleGroupData();
  302. await TransferSampleGroupDetailData();
  303. await TransferTopCustomerOrgData();
  304. await TransferTwoCustomerOrgData();
  305. await TransferThreeCustomerOrgData();
  306. await TransferCustomerOrgRegisterData();
  307. await TransferCustomerOrgGroupData();
  308. await TransferCustomerOrgGroupDetailData();
  309. }
  310. #region 基础数据
  311. /// <summary>
  312. /// 迁移仪器类别数据
  313. /// </summary>
  314. /// <returns></returns>
  315. [RemoteService(false)]
  316. public async Task TransferDeviceTypeData()
  317. {
  318. var count = await _deviceTypeRepository.GetCountAsync();
  319. if (count == 0)
  320. {
  321. var oldDeviceTypeList = await Db.Ado.GetDataTableAsync("select device_type_id,device_type_name from device_type order by display_order asc");
  322. if (oldDeviceTypeList.Rows.Count > 0)
  323. {
  324. foreach (DataRow row in oldDeviceTypeList.Rows)
  325. {
  326. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  327. {
  328. Guid deviceTypeId = GuidGenerator.Create();
  329. var data = new DeviceType(deviceTypeId)
  330. {
  331. CheckTypeFlag = '0',
  332. DisplayName = row["device_type_name"].ToString(),
  333. DisplayOrder = oldDeviceTypeList.Rows.IndexOf(row) + 1,
  334. SimpleCode = LanguageConverter.GetPYSimpleCode(row["device_type_name"].ToString())
  335. };
  336. await _deviceTypeRepository.InsertAsync(data);
  337. var fieldComparison = new FieldComparison
  338. {
  339. TableName = "device_type",
  340. FieldName = "id",
  341. NewKeyValue = deviceTypeId.ToString(),
  342. OldKeyValue = row["device_type_id"].ToString()
  343. };
  344. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  345. await uow.CompleteAsync();
  346. }
  347. }
  348. }
  349. _logger.LogInformation($"仪器类别数据处理完毕,处理数量{oldDeviceTypeList.Rows.Count}");
  350. }
  351. else
  352. {
  353. _logger.LogInformation("仪器类别数据已存在,未处理");
  354. }
  355. }
  356. /// <summary>
  357. /// 迁移数值单位数据
  358. /// </summary>
  359. /// <returns></returns>
  360. [RemoteService(false)]
  361. public async Task TransferUnitData()
  362. {
  363. var count = await _unitRepository.GetCountAsync();
  364. if (count == 0)
  365. {
  366. var oldUnitList = await Db.Ado.GetDataTableAsync("select unit_id,unit_name from unit order by display_order asc");
  367. if (oldUnitList.Rows.Count > 0)
  368. {
  369. foreach (DataRow row in oldUnitList.Rows)
  370. {
  371. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  372. {
  373. Guid unitId = GuidGenerator.Create();
  374. var data = new Unit(unitId)
  375. {
  376. DisplayName = row["unit_name"].ToString(),
  377. DisplayOrder = oldUnitList.Rows.IndexOf(row) + 1,
  378. SimpleCode = LanguageConverter.GetPYSimpleCode(row["unit_name"].ToString())
  379. };
  380. await _unitRepository.InsertAsync(data);
  381. var fieldComparison = new FieldComparison
  382. {
  383. TableName = "unit",
  384. FieldName = "id",
  385. NewKeyValue = unitId.ToString(),
  386. OldKeyValue = row["unit_id"].ToString()
  387. };
  388. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  389. await uow.CompleteAsync();
  390. }
  391. }
  392. _logger.LogInformation($"数值单位数据处理完毕,处理数量{oldUnitList.Rows.Count}");
  393. }
  394. else
  395. {
  396. _logger.LogInformation($"数值单位数据已存在,未处理");
  397. }
  398. }
  399. }
  400. /// <summary>
  401. /// 迁移体检类别数据
  402. /// </summary>
  403. /// <returns></returns>
  404. [RemoteService(false)]
  405. public async Task TransferMedicalTypeData()
  406. {
  407. var count = await _medicalTypeRepository.GetCountAsync();
  408. if (count == 0)
  409. {
  410. var oldMedicalTypeList = await Db.Ado.GetDataTableAsync("select medical_type_id,medical_type_name from medical_type order by display_order asc");
  411. if (oldMedicalTypeList.Rows.Count > 0)
  412. {
  413. foreach (DataRow row in oldMedicalTypeList.Rows)
  414. {
  415. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  416. {
  417. Guid medicalTypeId = GuidGenerator.Create();
  418. var data = new MedicalType(medicalTypeId)
  419. {
  420. DisplayName = row["medical_type_name"].ToString(),
  421. DisplayOrder = oldMedicalTypeList.Rows.IndexOf(row) + 1,
  422. SimpleCode = LanguageConverter.GetPYSimpleCode(row["medical_type_name"].ToString())
  423. };
  424. await _medicalTypeRepository.InsertAsync(data);
  425. var fieldComparison = new FieldComparison
  426. {
  427. TableName = "medical_type",
  428. FieldName = "id",
  429. NewKeyValue = medicalTypeId.ToString(),
  430. OldKeyValue = row["medical_type_id"].ToString()
  431. };
  432. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  433. await uow.CompleteAsync();
  434. }
  435. }
  436. _logger.LogInformation($"体检类别数据处理完毕,处理数量{oldMedicalTypeList.Rows.Count}");
  437. }
  438. else
  439. {
  440. _logger.LogInformation($"体检类别数据已存在,未处理");
  441. }
  442. }
  443. }
  444. /// <summary>
  445. /// 迁移人员类别数据
  446. /// </summary>
  447. /// <returns></returns>
  448. [RemoteService(false)]
  449. public async Task TransferPersonnelTypeData()
  450. {
  451. var count = await _personnelTypeRepository.GetCountAsync();
  452. if (count == 0)
  453. {
  454. var oldPersonnelTypeList = await Db.Ado.GetDataTableAsync("select personnel_type_id,personnel_type_name from personnel_type order by display_order asc");
  455. if (oldPersonnelTypeList.Rows.Count > 0)
  456. {
  457. foreach (DataRow row in oldPersonnelTypeList.Rows)
  458. {
  459. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  460. {
  461. Guid personnelTypeId = GuidGenerator.Create();
  462. var data = new PersonnelType(personnelTypeId)
  463. {
  464. DisplayName = row["personnel_type_name"].ToString(),
  465. DisplayOrder = oldPersonnelTypeList.Rows.IndexOf(row) + 1,
  466. SimpleCode = LanguageConverter.GetPYSimpleCode(row["personnel_type_name"].ToString())
  467. };
  468. await _personnelTypeRepository.InsertAsync(data);
  469. var fieldComparison = new FieldComparison
  470. {
  471. TableName = "personnel_type",
  472. FieldName = "id",
  473. NewKeyValue = personnelTypeId.ToString(),
  474. OldKeyValue = row["personnel_type_id"].ToString()
  475. };
  476. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  477. await uow.CompleteAsync();
  478. }
  479. }
  480. }
  481. _logger.LogInformation($"人员类别数据处理完毕,处理数量{oldPersonnelTypeList.Rows.Count}");
  482. }
  483. else
  484. {
  485. _logger.LogInformation($"人员类别数据已存在,未处理");
  486. }
  487. }
  488. /// <summary>
  489. /// 迁移发票项目类别数据
  490. /// </summary>
  491. /// <returns></returns>
  492. [RemoteService(false)]
  493. public async Task TransferInvoiceItemTypeData()
  494. {
  495. var count = await _invoiceItemTypeRepository.GetCountAsync();
  496. if (count == 0)
  497. {
  498. var oldInvoiceItemTypeList = await Db.Ado.GetDataTableAsync("select invoice_item_type_id,invoice_item_type_name from invoice_item_type order by display_order asc");
  499. if (oldInvoiceItemTypeList.Rows.Count > 0)
  500. {
  501. foreach (DataRow row in oldInvoiceItemTypeList.Rows)
  502. {
  503. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  504. {
  505. Guid invoiceItemTypeId = GuidGenerator.Create();
  506. var data = new InvoiceItemType(invoiceItemTypeId)
  507. {
  508. DisplayName = row["invoice_item_type_name"].ToString(),
  509. DisplayOrder = oldInvoiceItemTypeList.Rows.IndexOf(row) + 1,
  510. SimpleCode = LanguageConverter.GetPYSimpleCode(row["invoice_item_type_name"].ToString())
  511. };
  512. await _invoiceItemTypeRepository.InsertAsync(data);
  513. var fieldComparison = new FieldComparison
  514. {
  515. TableName = "invoice_item_type",
  516. FieldName = "id",
  517. NewKeyValue = invoiceItemTypeId.ToString(),
  518. OldKeyValue = row["invoice_item_type_id"].ToString()
  519. };
  520. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  521. await uow.CompleteAsync();
  522. }
  523. }
  524. }
  525. _logger.LogInformation($"发票项目类别数据处理完毕,处理数量{oldInvoiceItemTypeList.Rows.Count}");
  526. }
  527. else
  528. {
  529. _logger.LogInformation($"发票项目类别数据已存在,未处理");
  530. }
  531. }
  532. /// <summary>
  533. /// 迁移汇总项目类别数据
  534. /// </summary>
  535. /// <returns></returns>
  536. [RemoteService(false)]
  537. public async Task TransferCollectItemTypeData()
  538. {
  539. var count = await _collectItemTypeRepository.GetCountAsync();
  540. if (count == 0)
  541. {
  542. var oldCollectItemTypeList = await Db.Ado.GetDataTableAsync("select collect_item_type_id,collect_item_type_name,invoice_item_type_id from collect_item_type order by display_order asc");
  543. if (oldCollectItemTypeList.Rows.Count > 0)
  544. {
  545. foreach (DataRow row in oldCollectItemTypeList.Rows)
  546. {
  547. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  548. {
  549. Guid collectItemTypeId = GuidGenerator.Create();
  550. Guid invoiceItemTypeId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "invoice_item_type" && m.OldKeyValue == row["invoice_item_type_id"].ToString()).FirstOrDefault().NewKeyValue);
  551. var data = new CollectItemType(collectItemTypeId)
  552. {
  553. DisplayName = row["collect_item_type_name"].ToString(),
  554. DisplayOrder = oldCollectItemTypeList.Rows.IndexOf(row) + 1,
  555. SimpleCode = LanguageConverter.GetPYSimpleCode(row["collect_item_type_name"].ToString()),
  556. InvoiceItemTypeId = invoiceItemTypeId
  557. };
  558. await _collectItemTypeRepository.InsertAsync(data);
  559. var fieldComparison = new FieldComparison
  560. {
  561. TableName = "collect_item_type",
  562. FieldName = "id",
  563. NewKeyValue = collectItemTypeId.ToString(),
  564. OldKeyValue = row["collect_item_type_id"].ToString()
  565. };
  566. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  567. await uow.CompleteAsync();
  568. }
  569. }
  570. _logger.LogInformation($"汇总项目类别数据处理完毕,处理数量{oldCollectItemTypeList.Rows.Count}");
  571. }
  572. else
  573. {
  574. _logger.LogInformation($"汇总项目类别数据已存在,未处理");
  575. }
  576. }
  577. }
  578. /// <summary>
  579. /// 迁移项目类别-科室数据
  580. /// </summary>
  581. /// <returns></returns>
  582. [RemoteService(false)]
  583. public async Task TransferItemTypeData()
  584. {
  585. var count = await _itemTypeRepository.GetCountAsync();
  586. if (count == 0)
  587. {
  588. var oldItemTypeList = await Db.Ado.GetDataTableAsync("select department_id,department_type,department_name,merge_asbitem_flag,print_pacs_barcode_flag from department order by display_order asc");
  589. if (oldItemTypeList.Rows.Count > 0)
  590. {
  591. foreach (DataRow row in oldItemTypeList.Rows)
  592. {
  593. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  594. {
  595. Guid itemTypeId = GuidGenerator.Create();
  596. var data = new ItemType(itemTypeId)
  597. {
  598. DisplayName = row["department_name"].ToString(),
  599. DisplayOrder = oldItemTypeList.Rows.IndexOf(row) + 1,
  600. SimpleCode = LanguageConverter.GetPYSimpleCode(row["department_name"].ToString()),
  601. CheckTypeFlag = Convert.ToChar(row["department_type"]),
  602. GuidTypeId = defaultGuidTypeId,
  603. IsMergeAsbitem = Convert.ToChar(row["merge_asbitem_flag"]),
  604. IsWrap = 'N',
  605. MedicalReportTypeId = defaultMedicalReportTypeId,
  606. ParentId = null,
  607. PathCode = _itemTypeManager.CreatePathCode(null).Result,
  608. IsCheckRequest = Convert.ToChar(row["print_pacs_barcode_flag"])
  609. };
  610. await _itemTypeRepository.InsertAsync(data);
  611. var fieldComparison = new FieldComparison
  612. {
  613. TableName = "item_type",
  614. FieldName = "id",
  615. NewKeyValue = itemTypeId.ToString(),
  616. OldKeyValue = row["department_id"].ToString()
  617. };
  618. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  619. await uow.CompleteAsync();
  620. }
  621. }
  622. }
  623. _logger.LogInformation($"项目类别数据处理完毕,处理数量{oldItemTypeList.Rows.Count}");
  624. }
  625. else
  626. {
  627. _logger.LogInformation($"项目类别数据已存在,未处理");
  628. }
  629. }
  630. /// <summary>
  631. /// 迁移标本类型数据
  632. /// </summary>
  633. /// <returns></returns>
  634. [RemoteService(false)]
  635. public async Task TransferSampleTypeData()
  636. {
  637. var count = await _sampleTypeRepository.GetCountAsync();
  638. if (count == 0)
  639. {
  640. var oldSampleTypeList = await Db.Ado.GetDataTableAsync("select specimen_type_id,specimen_type_name from specimen_type order by display_order asc");
  641. if (oldSampleTypeList.Rows.Count > 0)
  642. {
  643. foreach (DataRow row in oldSampleTypeList.Rows)
  644. {
  645. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  646. {
  647. Guid sampleTypeId = GuidGenerator.Create();
  648. var data = new SampleType(sampleTypeId)
  649. {
  650. DisplayName = row["specimen_type_name"].ToString(),
  651. DisplayOrder = oldSampleTypeList.Rows.IndexOf(row) + 1,
  652. SimpleCode = LanguageConverter.GetPYSimpleCode(row["specimen_type_name"].ToString())
  653. };
  654. await _sampleTypeRepository.InsertAsync(data);
  655. var fieldComparison = new FieldComparison
  656. {
  657. TableName = "sample_type",
  658. FieldName = "id",
  659. NewKeyValue = sampleTypeId.ToString(),
  660. OldKeyValue = row["specimen_type_id"].ToString()
  661. };
  662. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  663. await uow.CompleteAsync();
  664. }
  665. }
  666. }
  667. _logger.LogInformation($"标本类型数据处理完毕,处理数量{oldSampleTypeList.Rows.Count}");
  668. }
  669. else
  670. {
  671. _logger.LogInformation($"标本类型数据已存在,未处理");
  672. }
  673. }
  674. /// <summary>
  675. /// 民族数据对照
  676. /// </summary>
  677. /// <returns></returns>
  678. [RemoteService(false)]
  679. public async Task TransferNationData()
  680. {
  681. var newNationList = await _nationRepository.GetListAsync();
  682. var oldNationList = await Db.Ado.GetDataTableAsync("select * from nation");
  683. if (oldNationList.Rows.Count > 0)
  684. {
  685. foreach (DataRow row in oldNationList.Rows)
  686. {
  687. string oldName = row["nation_name"].ToString(); //老系统名称
  688. var newNationEnt = newNationList.Where(m => m.DisplayName.Contains(oldName)).FirstOrDefault();
  689. if (newNationEnt != null)
  690. {
  691. var fieldComparison = new FieldComparison
  692. {
  693. FieldName = "id",
  694. NewKeyValue = newNationEnt.Id.ToString(),
  695. OldKeyValue = row["nation_id"].ToString(),
  696. TableName = "nation"
  697. };
  698. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  699. }
  700. }
  701. _logger.LogInformation($"民族数据处理完毕,处理数量{oldNationList.Rows.Count}");
  702. }
  703. else
  704. {
  705. _logger.LogInformation($"民族数据无需处理");
  706. }
  707. }
  708. /// <summary>
  709. /// 迁移体检结论数据
  710. /// </summary>
  711. /// <returns></returns>
  712. [RemoteService(false)]
  713. public async Task TransferMedicalConclusionData()
  714. {
  715. var count = await _medicalConclusionRepository.GetCountAsync();
  716. if (count == 0)
  717. {
  718. var oldMedicalConclusionList = await Db.Ado.GetDataTableAsync("select medical_conclusion_id,medical_conclusion_name from medical_conclusion order by display_order asc");
  719. if (oldMedicalConclusionList.Rows.Count > 0)
  720. {
  721. foreach (DataRow row in oldMedicalConclusionList.Rows)
  722. {
  723. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  724. {
  725. Guid medicalConclusionId = GuidGenerator.Create();
  726. var data = new MedicalConclusion(medicalConclusionId)
  727. {
  728. DisplayName = row["medical_conclusion_name"].ToString(),
  729. DisplayOrder = oldMedicalConclusionList.Rows.IndexOf(row) + 1,
  730. SimpleCode = LanguageConverter.GetPYSimpleCode(row["medical_conclusion_name"].ToString()),
  731. MedicalConclusionTypeId = defaultMedicalConclusionType
  732. };
  733. await _medicalConclusionRepository.InsertAsync(data);
  734. var fieldComparison = new FieldComparison
  735. {
  736. TableName = "medical_conclusion",
  737. FieldName = "id",
  738. NewKeyValue = medicalConclusionId.ToString(),
  739. OldKeyValue = row["medical_conclusion_id"].ToString()
  740. };
  741. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  742. await uow.CompleteAsync();
  743. }
  744. }
  745. }
  746. _logger.LogInformation($"体检结论数据处理完毕,处理数量{oldMedicalConclusionList.Rows.Count}");
  747. }
  748. else
  749. {
  750. _logger.LogInformation("体检结论数据已存在,未处理");
  751. }
  752. }
  753. #endregion
  754. #region 基础项目相关数据
  755. /// <summary>
  756. /// 迁移项目数据
  757. /// </summary>
  758. /// <returns></returns>
  759. [RemoteService(false)]
  760. public async Task TransferItemData()
  761. {
  762. var count = await _itemRepository.GetCountAsync();
  763. if (count == 0)
  764. {
  765. var oldItemList = await Db.Ado.GetDataTableAsync("select a.* from item as a left join department as b on a.department_id=b.department_id order by b.display_order,a.display_order");
  766. if (oldItemList.Rows.Count > 0)
  767. {
  768. foreach (DataRow row in oldItemList.Rows)
  769. {
  770. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  771. {
  772. #region 根据仪器类别生成二级科室
  773. var itemTypeId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "item_type" && m.OldKeyValue == row["department_id"].ToString()).FirstOrDefault().NewKeyValue);
  774. Guid? deviceTypeId = null;
  775. if (!string.IsNullOrWhiteSpace(row["device_type_id"].ToString()))
  776. {
  777. deviceTypeId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "device_type" && m.OldKeyValue == row["device_type_id"].ToString()).FirstOrDefault().NewKeyValue);
  778. var itemTypeEnt = await _itemTypeRepository.GetAsync(itemTypeId);
  779. var deviceTypeEnt = await _deviceTypeRepository.GetAsync(deviceTypeId.Value);
  780. var itemTypeChildEnt = await _itemTypeRepository.FirstOrDefaultAsync(m => m.ParentId == itemTypeEnt.Id && m.DisplayName == deviceTypeEnt.DisplayName);
  781. if (itemTypeChildEnt == null)
  782. {
  783. Guid autoItemTypeId = GuidGenerator.Create();
  784. #region 排序值
  785. int displayOrder = (await _itemTypeRepository.CountAsync(m => m.ParentId == itemTypeEnt.Id)) + 1;
  786. #endregion
  787. var item_type_data = new ItemType(autoItemTypeId)
  788. {
  789. DisplayName = deviceTypeEnt.DisplayName,
  790. DisplayOrder = displayOrder,
  791. SimpleCode = LanguageConverter.GetPYSimpleCode(deviceTypeEnt.DisplayName),
  792. CheckTypeFlag = itemTypeEnt.CheckTypeFlag,
  793. GuidTypeId = itemTypeEnt.GuidTypeId,
  794. IsMergeAsbitem = itemTypeEnt.IsMergeAsbitem,
  795. IsWrap = itemTypeEnt.IsWrap,
  796. MedicalReportTypeId = itemTypeEnt.MedicalReportTypeId,
  797. ParentId = itemTypeEnt.Id,
  798. PathCode = _itemTypeManager.CreatePathCode(itemTypeEnt.Id).Result,
  799. IsCheckRequest = itemTypeEnt.IsCheckRequest
  800. };
  801. await _itemTypeRepository.InsertAsync(item_type_data);
  802. itemTypeId = autoItemTypeId;
  803. }
  804. else
  805. {
  806. itemTypeId = itemTypeChildEnt.Id;
  807. }
  808. }
  809. #endregion
  810. Guid? unitId = null;
  811. if (!string.IsNullOrWhiteSpace(row["unit_id"].ToString()))
  812. unitId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "unit" && m.OldKeyValue == row["unit_id"].ToString()).FirstOrDefault().NewKeyValue);
  813. Guid itemId = GuidGenerator.Create();
  814. var data = new Item(itemId)
  815. {
  816. DisplayName = row["item_name"].ToString(),
  817. DisplayOrder = oldItemList.Rows.IndexOf(row) + 1,
  818. SimpleCode = LanguageConverter.GetPYSimpleCode(row["item_name"].ToString()),
  819. CalculationFunction = "",
  820. DefaultResult = row["default_result"].ToString(),
  821. DiagnosisFunction = "",
  822. EnglishShortName = row["english_abbreviation"].ToString(),
  823. InputCheck = row["input_check"].ToString(),
  824. IsActive = Convert.ToChar(row["valid_flag"].ToString()),
  825. IsCalculationItem = 'N',
  826. IsContinueProcess = 'N',
  827. IsDiagnosisFunction = 'N',
  828. IsNameIntoSummary = Convert.ToChar(row["name_into_summary_flag"]),
  829. IsProduceSummary = Convert.ToChar(row["produce_summary_flag"]),
  830. ItemTypeId = itemTypeId,
  831. LineModeFlag = '0',
  832. Price = Convert.ToDecimal(row["price"]),
  833. PriceItemId = null,
  834. ReferenceRangeTypeFlag = Convert.ToChar(row["reference_range_type"]),
  835. ResultTemplateTypeFlag = '0',
  836. UnitId = unitId,
  837. DeviceTypeId = deviceTypeId
  838. };
  839. await _itemRepository.InsertAsync(data);
  840. if (row["reference_range_type"].ToString() == "2" && !string.IsNullOrWhiteSpace(row["reference_range_value"].ToString()))
  841. {
  842. //增加字符型参考范围到参考范围表
  843. Guid referenceRangeId = GuidGenerator.Create();
  844. var referenceRange = new ReferenceRange(referenceRangeId)
  845. {
  846. AgeLowerLimit = 0,
  847. AgeUpperLimit = 200,
  848. CriticalRangeValue = "",
  849. ItemId = itemId,
  850. ForSexId = ForSexFlag.All,
  851. LowerDiagnosisId = null,
  852. ReferenceRangeTypeFlag = ItemReferenceRangeTypeFlag.Character,
  853. UpperDiagnosisId = null,
  854. ReferenceRangeValue = row["reference_range_value"].ToString()
  855. };
  856. //referenceRanges.Add(referenceRange);
  857. await _referenceRangeRepository.InsertAsync(referenceRange);
  858. }
  859. var fieldComparison = new FieldComparison
  860. {
  861. TableName = "item",
  862. FieldName = "id",
  863. NewKeyValue = itemId.ToString(),
  864. OldKeyValue = row["item_id"].ToString()
  865. };
  866. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  867. await uow.CompleteAsync();
  868. }
  869. }
  870. }
  871. _logger.LogInformation($"项目数据处理完毕,处理数量{oldItemList.Rows.Count}");
  872. }
  873. else
  874. {
  875. _logger.LogInformation("项目数据已存在,未处理");
  876. }
  877. }
  878. /// <summary>
  879. /// 迁移组合项目数据
  880. /// </summary>
  881. /// <returns></returns>
  882. [RemoteService(false)]
  883. public async Task TransferAsbitemData()
  884. {
  885. var count = await _asbitemRepository.GetCountAsync();
  886. if (count == 0)
  887. {
  888. var oldAsbitemList = await Db.Ado.GetDataTableAsync("select a.* from asbitem as a left join department as b on a.department_id=b.department_id order by b.display_order,a.display_order ");
  889. if (oldAsbitemList.Rows.Count > 0)
  890. {
  891. foreach (DataRow row in oldAsbitemList.Rows)
  892. {
  893. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  894. {
  895. #region 根据仪器类别生成二级科室
  896. var itemTypeId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "item_type" && m.OldKeyValue == row["department_id"].ToString()).FirstOrDefault().NewKeyValue);
  897. Guid? deviceTypeId = null;
  898. if (!string.IsNullOrWhiteSpace(row["device_type_id"].ToString()))
  899. {
  900. deviceTypeId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "device_type" && m.OldKeyValue == row["device_type_id"].ToString()).FirstOrDefault().NewKeyValue);
  901. var itemTypeEnt = await _itemTypeRepository.GetAsync(itemTypeId);
  902. var deviceTypeEnt = await _deviceTypeRepository.GetAsync(deviceTypeId.Value);
  903. var itemTypeChildEnt = await _itemTypeRepository.FirstOrDefaultAsync(m => m.ParentId == itemTypeEnt.Id && m.DisplayName == deviceTypeEnt.DisplayName);
  904. if (itemTypeChildEnt == null)
  905. {
  906. Guid autoItemTypeId = GuidGenerator.Create();
  907. #region 排序值
  908. int displayOrder = (await _itemTypeRepository.CountAsync(m => m.ParentId == itemTypeEnt.Id)) + 1;
  909. #endregion
  910. var item_type_data = new ItemType(autoItemTypeId)
  911. {
  912. DisplayName = deviceTypeEnt.DisplayName,
  913. DisplayOrder = displayOrder,
  914. SimpleCode = LanguageConverter.GetPYSimpleCode(deviceTypeEnt.DisplayName),
  915. CheckTypeFlag = itemTypeEnt.CheckTypeFlag,
  916. GuidTypeId = itemTypeEnt.GuidTypeId,
  917. IsMergeAsbitem = itemTypeEnt.IsMergeAsbitem,
  918. IsWrap = itemTypeEnt.IsWrap,
  919. MedicalReportTypeId = itemTypeEnt.MedicalReportTypeId,
  920. ParentId = itemTypeEnt.Id,
  921. PathCode = _itemTypeManager.CreatePathCode(itemTypeEnt.Id).Result,
  922. IsCheckRequest = itemTypeEnt.IsCheckRequest
  923. };
  924. await _itemTypeRepository.InsertAsync(item_type_data);
  925. itemTypeId = autoItemTypeId;
  926. }
  927. else
  928. {
  929. itemTypeId = itemTypeChildEnt.Id;
  930. }
  931. }
  932. #endregion
  933. Guid collectItemTypeId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "collect_item_type" && m.OldKeyValue == row["collect_item_type_id"].ToString()).FirstOrDefault().NewKeyValue);
  934. Guid asbitemId = GuidGenerator.Create();
  935. var data = new Asbitem(asbitemId)
  936. {
  937. DisplayName = row["asbitem_name"].ToString(),
  938. DisplayOrder = oldAsbitemList.Rows.IndexOf(row) + 1,
  939. SimpleCode = LanguageConverter.GetPYSimpleCode(row["asbitem_name"].ToString()),
  940. DefaultResult = row["default_result"].ToString(),
  941. DiagnosisFunction = "",
  942. IsActive = Convert.ToChar(row["valid_flag"].ToString()),
  943. IsContinueProcess = 'N',
  944. IsDiagnosisFunction = 'N',
  945. ItemTypeId = itemTypeId,
  946. Price = Convert.ToDecimal(row["price"]),
  947. DeviceTypeId = deviceTypeId,
  948. ClinicalMeaning = row["clinical_meaning"].ToString(),
  949. ForSexId = ConvertForSex(row["for_sex_id"].ToString()),
  950. CollectItemTypeId = collectItemTypeId,
  951. //InvoiceItemTypeId = InvoiceItemTypeId,
  952. IsBeforeEat = Convert.ToChar(row["before_eat_flag"].ToString()),
  953. IsCheck = Convert.ToChar(row["check_flag"].ToString()),
  954. IsItemResultMerger = Convert.ToChar(row["item_result_merger_flag"].ToString()),
  955. IsPictureRotate = Convert.ToChar(row["picture_rotate_flag"].ToString()),
  956. QueueTime = string.IsNullOrEmpty(row["queue_time"].ToString()) ? 0 : Convert.ToDecimal(row["queue_time"].ToString()),
  957. ShortName = row["short_name"].ToString()
  958. };
  959. await _asbitemRepository.InsertAsync(data);
  960. #region 指引信息
  961. if (!string.IsNullOrWhiteSpace(row["prompt"].ToString()))
  962. {
  963. var asbitemGuideData = new AsbitemGuide
  964. {
  965. AsbitemId = asbitemId,
  966. ForSexId = ForSexFlag.All,
  967. Guide = row["prompt"].ToString(),
  968. MedicalCenterId = defaultMedicalCenterId
  969. };
  970. await _asbitemGuideRepository.InsertAsync(asbitemGuideData);
  971. }
  972. #endregion
  973. var fieldComparison = new FieldComparison
  974. {
  975. TableName = "asbitem",
  976. FieldName = "id",
  977. NewKeyValue = asbitemId.ToString(),
  978. OldKeyValue = row["asbitem_id"].ToString()
  979. };
  980. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  981. await uow.CompleteAsync();
  982. }
  983. }
  984. }
  985. _logger.LogInformation($"组合项目数据处理完毕,处理数量{oldAsbitemList.Rows.Count}");
  986. }
  987. else
  988. {
  989. _logger.LogInformation("组合项目数据已存在,未处理");
  990. }
  991. }
  992. /// <summary>
  993. /// 迁移组合项目明细数据 无字典
  994. /// </summary>
  995. /// <returns></returns>
  996. [RemoteService(false)]
  997. public async Task TransferAsbitemDetailData()
  998. {
  999. var count = await _asbitemDetailRepository.GetCountAsync();
  1000. if (count == 0)
  1001. {
  1002. var oldAsbitemDetailList = await Db.Ado.GetDataTableAsync("select * from asbitem_detail ");
  1003. if (oldAsbitemDetailList.Rows.Count > 0)
  1004. {
  1005. foreach (DataRow row in oldAsbitemDetailList.Rows)
  1006. {
  1007. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1008. {
  1009. Guid asbitemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "asbitem" && m.OldKeyValue == row["asbitem_id"].ToString()).FirstOrDefault().NewKeyValue);
  1010. Guid itemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "item" && m.OldKeyValue == row["item_id"].ToString()).FirstOrDefault().NewKeyValue);
  1011. var data = new AsbitemDetail
  1012. {
  1013. AsbitemId = asbitemId,
  1014. ItemId = itemId
  1015. };
  1016. await _asbitemDetailRepository.InsertAsync(data);
  1017. await uow.CompleteAsync();
  1018. }
  1019. }
  1020. }
  1021. _logger.LogInformation($"组合项目明细数据处理完毕,处理数量{oldAsbitemDetailList.Rows.Count}");
  1022. }
  1023. else
  1024. {
  1025. _logger.LogInformation("组合项目明细数据已存在,未处理");
  1026. }
  1027. }
  1028. /// <summary>
  1029. /// 迁移体检套餐数据
  1030. /// </summary>
  1031. /// <returns></returns>
  1032. [RemoteService(false)]
  1033. public async Task TransferMedicalPackageData()
  1034. {
  1035. var count = await _medicalPackageRepository.GetCountAsync();
  1036. if (count == 0)
  1037. {
  1038. var oldMedicalPackageList = await Db.Ado.GetDataTableAsync("select * from medical_package order by display_order");
  1039. if (oldMedicalPackageList.Rows.Count > 0)
  1040. {
  1041. foreach (DataRow row in oldMedicalPackageList.Rows)
  1042. {
  1043. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1044. {
  1045. Guid medicalPackageId = GuidGenerator.Create();
  1046. var data = new MedicalPackage(medicalPackageId)
  1047. {
  1048. DisplayName = row["medical_package_name"].ToString(),
  1049. DisplayOrder = oldMedicalPackageList.Rows.IndexOf(row) + 1,
  1050. SimpleCode = LanguageConverter.GetPYSimpleCode(row["medical_package_name"].ToString()),
  1051. ForSexId = ConvertForSex(row["for_sex_id"].ToString()),
  1052. IsActive = Convert.ToChar(row["valid_flag"].ToString()),
  1053. Price = Convert.ToDecimal(row["price"].ToString()),
  1054. Remark = row["remark"].ToString()
  1055. };
  1056. await _medicalPackageRepository.InsertAsync(data);
  1057. var fieldComparison = new FieldComparison
  1058. {
  1059. TableName = "medical_package",
  1060. FieldName = "id",
  1061. NewKeyValue = medicalPackageId.ToString(),
  1062. OldKeyValue = row["medical_package_id"].ToString()
  1063. };
  1064. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  1065. await uow.CompleteAsync();
  1066. }
  1067. }
  1068. }
  1069. _logger.LogInformation($"体检套餐数据处理完毕,处理数量{oldMedicalPackageList.Rows.Count}");
  1070. }
  1071. else
  1072. {
  1073. _logger.LogInformation("体检套餐数据已存在,未处理");
  1074. }
  1075. }
  1076. /// <summary>
  1077. /// 迁移体检套餐明细数据 无字典
  1078. /// </summary>
  1079. /// <returns></returns>
  1080. [RemoteService(false)]
  1081. public async Task TransferMedicalPackageDetailData()
  1082. {
  1083. var count = await _medicalPackageDetailRepository.GetCountAsync();
  1084. if (count == 0)
  1085. {
  1086. var oldMedicalPackageDetailList = await Db.Ado.GetDataTableAsync("select * from medical_package_detail ");
  1087. if (oldMedicalPackageDetailList.Rows.Count > 0)
  1088. {
  1089. foreach (DataRow row in oldMedicalPackageDetailList.Rows)
  1090. {
  1091. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1092. {
  1093. Guid asbitemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "asbitem" && m.OldKeyValue == row["asbitem_id"].ToString()).FirstOrDefault().NewKeyValue);
  1094. Guid MedicalPackageId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "medical_package" && m.OldKeyValue == row["medical_package_id"].ToString()).FirstOrDefault().NewKeyValue);
  1095. var asbitemEnt = await _asbitemRepository.GetAsync(asbitemId);
  1096. var data = new MedicalPackageDetail
  1097. {
  1098. AsbitemId = asbitemId,
  1099. Amount = 1,
  1100. MedicalPackageId = MedicalPackageId,
  1101. Price = asbitemEnt.Price
  1102. };
  1103. await _medicalPackageDetailRepository.InsertAsync(data);
  1104. await uow.CompleteAsync();
  1105. }
  1106. }
  1107. }
  1108. _logger.LogInformation($"体检套餐明细数据处理完毕,处理数量{oldMedicalPackageDetailList.Rows.Count}");
  1109. }
  1110. else
  1111. {
  1112. _logger.LogInformation("体检套餐明细数据已存在,未处理");
  1113. }
  1114. }
  1115. /// <summary>
  1116. /// 迁移诊断设置数据
  1117. /// </summary>
  1118. /// <returns></returns>
  1119. [RemoteService(false)]
  1120. public async Task TransferDiagnosisData()
  1121. {
  1122. var count = await _diagnosisRepository.GetCountAsync();
  1123. if (count == 0)
  1124. {
  1125. var oldDiagnosisList = await Db.Ado.GetDataTableAsync("select a.* from diagnosis as a left join department as b on a.department_id=b.department_id order by b.display_order,a.display_order ");
  1126. if (oldDiagnosisList.Rows.Count > 0)
  1127. {
  1128. foreach (DataRow row in oldDiagnosisList.Rows)
  1129. {
  1130. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1131. {
  1132. #region 根据仪器类别生成二级科室
  1133. var itemTypeId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "item_type" && m.OldKeyValue == row["department_id"].ToString()).FirstOrDefault().NewKeyValue);
  1134. Guid? deviceTypeId = null;
  1135. if (!string.IsNullOrWhiteSpace(row["device_type_id"].ToString()))
  1136. {
  1137. var fieldComparisonEnt = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "device_type" && m.OldKeyValue == row["device_type_id"].ToString()).FirstOrDefault();
  1138. if (fieldComparisonEnt != null)
  1139. {
  1140. deviceTypeId = Guid.Parse(fieldComparisonEnt.NewKeyValue);
  1141. var itemTypeEnt = await _itemTypeRepository.GetAsync(itemTypeId);
  1142. var deviceTypeEnt = await _deviceTypeRepository.GetAsync(deviceTypeId.Value);
  1143. var itemTypeChildEnt = await _itemTypeRepository.FirstOrDefaultAsync(m => m.ParentId == itemTypeEnt.Id && m.DisplayName == deviceTypeEnt.DisplayName);
  1144. if (itemTypeChildEnt == null)
  1145. {
  1146. Guid autoItemTypeId = GuidGenerator.Create();
  1147. #region 排序值
  1148. int displayOrder = (await _itemTypeRepository.CountAsync(m => m.ParentId == itemTypeEnt.Id)) + 1;
  1149. #endregion
  1150. var item_type_data = new ItemType(autoItemTypeId)
  1151. {
  1152. DisplayName = deviceTypeEnt.DisplayName,
  1153. DisplayOrder = displayOrder,
  1154. SimpleCode = LanguageConverter.GetPYSimpleCode(deviceTypeEnt.DisplayName),
  1155. CheckTypeFlag = itemTypeEnt.CheckTypeFlag,
  1156. GuidTypeId = itemTypeEnt.GuidTypeId,
  1157. IsMergeAsbitem = itemTypeEnt.IsMergeAsbitem,
  1158. IsWrap = itemTypeEnt.IsWrap,
  1159. MedicalReportTypeId = itemTypeEnt.MedicalReportTypeId,
  1160. ParentId = itemTypeEnt.Id,
  1161. PathCode = _itemTypeManager.CreatePathCode(itemTypeEnt.Id).Result,
  1162. IsCheckRequest = itemTypeEnt.IsCheckRequest
  1163. };
  1164. await _itemTypeRepository.InsertAsync(item_type_data);
  1165. itemTypeId = autoItemTypeId;
  1166. }
  1167. else
  1168. {
  1169. itemTypeId = itemTypeChildEnt.Id;
  1170. }
  1171. }
  1172. }
  1173. #endregion
  1174. Guid diagnosisId = GuidGenerator.Create();
  1175. var data = new Diagnosis(diagnosisId)
  1176. {
  1177. DisplayName = row["diagnosis_name"].ToString(),
  1178. DisplayOrder = oldDiagnosisList.Rows.IndexOf(row) + 1,
  1179. SimpleCode = LanguageConverter.GetPYSimpleCode(row["diagnosis_name"].ToString()),
  1180. ItemTypeId = itemTypeId,
  1181. DiagnosisLevelId = 1,
  1182. ForSexId = 'A',
  1183. IsIll = Convert.ToChar(row["ill_flag"].ToString()),
  1184. IsSummaryTemplate = Convert.ToChar(row["template_flag"].ToString()),
  1185. SuggestionName = row["suggestion_name"].ToString()
  1186. };
  1187. await _diagnosisRepository.InsertAsync(data);
  1188. var fieldComparison = new FieldComparison
  1189. {
  1190. TableName = "diagnosis",
  1191. FieldName = "id",
  1192. NewKeyValue = diagnosisId.ToString(),
  1193. OldKeyValue = row["diagnosis_id"].ToString()
  1194. };
  1195. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  1196. await uow.CompleteAsync();
  1197. }
  1198. }
  1199. }
  1200. _logger.LogInformation($"诊断设置数据处理完毕,处理数量{oldDiagnosisList.Rows.Count}");
  1201. }
  1202. else
  1203. {
  1204. _logger.LogInformation("诊断设置数据已存在,未处理");
  1205. }
  1206. }
  1207. /// <summary>
  1208. /// 迁移诊断建议数据
  1209. /// </summary>
  1210. /// <returns></returns>
  1211. [RemoteService(false)]
  1212. public async Task TransferSuggestionData()
  1213. {
  1214. var count = await _suggestionRepository.GetCountAsync();
  1215. if (count == 0)
  1216. {
  1217. var oldSuggestionList = await Db.Ado.GetDataTableAsync("select * from suggestion order by display_order,suggestion_id ");
  1218. if (oldSuggestionList.Rows.Count > 0)
  1219. {
  1220. foreach (DataRow row in oldSuggestionList.Rows)
  1221. {
  1222. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1223. {
  1224. Guid DiagnosisId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["diagnosis_id"].ToString()).FirstOrDefault().NewKeyValue);
  1225. Guid suggestionId = GuidGenerator.Create();
  1226. var data = new Suggestion(suggestionId)
  1227. {
  1228. DisplayOrder = oldSuggestionList.Rows.IndexOf(row) + 1,
  1229. DiagnosisId = DiagnosisId,
  1230. SuggestionType = SuggestionTypeFlag.HealthGuidance,
  1231. SuggestionContent = row["suggestion_content"].ToString()
  1232. };
  1233. await _suggestionRepository.InsertAsync(data);
  1234. var fieldComparison = new FieldComparison
  1235. {
  1236. TableName = "suggestion",
  1237. FieldName = "id",
  1238. NewKeyValue = suggestionId.ToString(),
  1239. OldKeyValue = row["suggestion_id"].ToString()
  1240. };
  1241. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  1242. await uow.CompleteAsync();
  1243. }
  1244. }
  1245. }
  1246. _logger.LogInformation($"诊断建议数据处理完毕,处理数量{oldSuggestionList.Rows.Count}");
  1247. }
  1248. else
  1249. {
  1250. _logger.LogInformation("诊断建议数据已存在,未处理");
  1251. }
  1252. }
  1253. /// <summary>
  1254. /// 迁移项目结果模板数据
  1255. /// </summary>
  1256. /// <returns></returns>
  1257. [RemoteService(false)]
  1258. public async Task TransferItemResultTemplateData()
  1259. {
  1260. var count = await _itemResultTemplateRepository.GetCountAsync();
  1261. if (count == 0)
  1262. {
  1263. var oldItemResultTemplateList = await Db.Ado.GetDataTableAsync("select * from item_result_template order by display_order,item_result_template_id ");
  1264. if (oldItemResultTemplateList.Rows.Count > 0)
  1265. {
  1266. foreach (DataRow row in oldItemResultTemplateList.Rows)
  1267. {
  1268. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1269. {
  1270. Guid? DiagnosisId = null;
  1271. if (!string.IsNullOrWhiteSpace(row["diagnosis_id"].ToString()))
  1272. {
  1273. var fieldComparisonDiagnosisEnt = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["diagnosis_id"].ToString()).FirstOrDefault();
  1274. if (fieldComparisonDiagnosisEnt != null)
  1275. {
  1276. DiagnosisId = Guid.Parse(fieldComparisonDiagnosisEnt.NewKeyValue);
  1277. }
  1278. }
  1279. Guid ItemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "item" && m.OldKeyValue == row["item_id"].ToString()).FirstOrDefault().NewKeyValue);
  1280. Guid itemResultTemplateId = GuidGenerator.Create();
  1281. var data = new ItemResultTemplate(itemResultTemplateId)
  1282. {
  1283. DisplayOrder = oldItemResultTemplateList.Rows.IndexOf(row) + 1,
  1284. DiagnosisId = DiagnosisId,
  1285. IsNameIntoSummary = Convert.ToChar(row["name_into_summary_flag"].ToString()),
  1286. IsResultIntoSummary = Convert.ToChar(row["result_into_summary_flag"].ToString()),
  1287. ItemId = ItemId,
  1288. Result = row["result"].ToString(),
  1289. SimpleCode = LanguageConverter.GetPYSimpleCode(row["result"].ToString()),
  1290. ResultStatusId = row["result_status_id"].ToString()
  1291. };
  1292. await _itemResultTemplateRepository.InsertAsync(data);
  1293. var fieldComparison = new FieldComparison
  1294. {
  1295. TableName = "item_result_template",
  1296. FieldName = "id",
  1297. NewKeyValue = itemResultTemplateId.ToString(),
  1298. OldKeyValue = row["item_result_template_id"].ToString()
  1299. };
  1300. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  1301. await uow.CompleteAsync();
  1302. }
  1303. }
  1304. }
  1305. _logger.LogInformation($"项目结果模板数据处理完毕,处理数量{oldItemResultTemplateList.Rows.Count}");
  1306. }
  1307. else
  1308. {
  1309. _logger.LogInformation("项目结果模板数据已存在,未处理");
  1310. }
  1311. }
  1312. /// <summary>
  1313. /// 迁移项目结果匹配数据
  1314. /// </summary>
  1315. /// <returns></returns>
  1316. [RemoteService(false)]
  1317. public async Task TransferItemResultMatchData()
  1318. {
  1319. var count = await _ItemResultMatchRepository.GetCountAsync();
  1320. if (count == 0)
  1321. {
  1322. var oldItemResultMatchList = await Db.Ado.GetDataTableAsync("select * from item_result_match order by display_order,item_result_match_id ");
  1323. if (oldItemResultMatchList.Rows.Count > 0)
  1324. {
  1325. foreach (DataRow row in oldItemResultMatchList.Rows)
  1326. {
  1327. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1328. {
  1329. var fieldComparisonDiagnosisEnt = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["diagnosis_id"].ToString()).FirstOrDefault();
  1330. if (fieldComparisonDiagnosisEnt != null)
  1331. {
  1332. Guid DiagnosisId = Guid.Parse(fieldComparisonDiagnosisEnt.NewKeyValue);
  1333. Guid ItemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "item" && m.OldKeyValue == row["item_id"].ToString()).FirstOrDefault().NewKeyValue);
  1334. Guid itemResultMatchId = GuidGenerator.Create();
  1335. var data = new ItemResultMatch(itemResultMatchId)
  1336. {
  1337. DisplayOrder = oldItemResultMatchList.Rows.IndexOf(row) + 1,
  1338. DiagnosisId = DiagnosisId,
  1339. ItemId = ItemId,
  1340. Result = row["result"].ToString()
  1341. };
  1342. var ent = await _ItemResultMatchRepository.InsertAsync(data, true);
  1343. var fieldComparison = new FieldComparison
  1344. {
  1345. TableName = "item_result_match",
  1346. FieldName = "id",
  1347. NewKeyValue = ent.Id.ToString(),
  1348. OldKeyValue = row["item_result_match_id"].ToString()
  1349. };
  1350. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  1351. }
  1352. await uow.CompleteAsync();
  1353. }
  1354. }
  1355. }
  1356. _logger.LogInformation($"项目结果匹配数据处理完毕,处理数量{oldItemResultMatchList.Rows.Count}");
  1357. }
  1358. else
  1359. {
  1360. _logger.LogInformation("项目结果匹配数据已存在,未处理");
  1361. }
  1362. }
  1363. /// <summary>
  1364. /// 迁移项目参考范围数据 无字典
  1365. /// </summary>
  1366. /// <returns></returns>
  1367. [RemoteService(false)]
  1368. public async Task TransferReferenceRangeData()
  1369. {
  1370. var count = (await _referenceRangeRepository.GetQueryableAsync()).Where(m => m.ReferenceRangeTypeFlag != ItemReferenceRangeTypeFlag.Character).Count();
  1371. if (count == 0)
  1372. {
  1373. var oldReferenceRangeList = await Db.Ado.GetDataTableAsync("select * from reference_range order by reference_range_id ");
  1374. if (oldReferenceRangeList.Rows.Count > 0)
  1375. {
  1376. foreach (DataRow row in oldReferenceRangeList.Rows)
  1377. {
  1378. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1379. {
  1380. Guid? LowerDiagnosisId = null;
  1381. Guid? UpperDiagnosisId = null;
  1382. var fieldComparisonLowerDiagnosisEnt = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["lower_diagnosis_id"].ToString()).FirstOrDefault();
  1383. var fieldComparisonUpperDiagnosisEnt = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["upper_diagnosis_id"].ToString()).FirstOrDefault();
  1384. if (fieldComparisonLowerDiagnosisEnt != null)
  1385. {
  1386. LowerDiagnosisId = Guid.Parse(fieldComparisonLowerDiagnosisEnt.NewKeyValue);
  1387. }
  1388. if (fieldComparisonUpperDiagnosisEnt != null)
  1389. {
  1390. UpperDiagnosisId = Guid.Parse(fieldComparisonUpperDiagnosisEnt.NewKeyValue);
  1391. }
  1392. Guid ItemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "item" && m.OldKeyValue == row["item_id"].ToString()).FirstOrDefault().NewKeyValue);
  1393. Guid referenceRangeId = GuidGenerator.Create();
  1394. var data = new ReferenceRange(referenceRangeId)
  1395. {
  1396. ItemId = ItemId,
  1397. AgeLowerLimit = (short)Convert.ToInt32(row["age_lower_limit"].ToString()),
  1398. AgeUpperLimit = (short)Convert.ToInt32(row["age_upper_limit"].ToString()),
  1399. CriticalRangeValue = string.Empty,
  1400. ForSexId = ConvertForSex(row["for_sex_id"].ToString()),
  1401. LowerDiagnosisId = LowerDiagnosisId,
  1402. ReferenceRangeTypeFlag = ItemReferenceRangeTypeFlag.Number,
  1403. ReferenceRangeValue = Convert.ToDecimal(row["lower_limit"].ToString()).ToString("#0.####") + "-" + Convert.ToDecimal(row["upper_limit"].ToString()).ToString("#0.####"),
  1404. UpperDiagnosisId = UpperDiagnosisId
  1405. };
  1406. await _referenceRangeRepository.InsertAsync(data);
  1407. await uow.CompleteAsync();
  1408. }
  1409. }
  1410. }
  1411. _logger.LogInformation($"项目参考范围数据处理完毕,处理数量{oldReferenceRangeList.Rows.Count}");
  1412. }
  1413. else
  1414. {
  1415. _logger.LogInformation("项目参考范围数据已存在,未处理");
  1416. }
  1417. }
  1418. /// <summary>
  1419. /// 迁移条码分组数据
  1420. /// </summary>
  1421. /// <returns></returns>
  1422. [RemoteService(false)]
  1423. public async Task TransferSampleGroupData()
  1424. {
  1425. var count = await _sampleGroupRepository.GetCountAsync();
  1426. if (count == 0)
  1427. {
  1428. //获取一条条码类型的数据
  1429. Guid defaultSampleTypeId = Guid.Empty;
  1430. var sampleTypeEnt = await _sampleTypeRepository.FirstOrDefaultAsync();
  1431. if (sampleTypeEnt != null)
  1432. {
  1433. defaultSampleTypeId = sampleTypeEnt.Id;
  1434. }
  1435. if (defaultSampleTypeId != Guid.Empty)
  1436. {
  1437. var oldSampleGroupList = await Db.Ado.GetDataTableAsync("select * from vessels_type order by display_order");
  1438. if (oldSampleGroupList.Rows.Count > 0)
  1439. {
  1440. foreach (DataRow row in oldSampleGroupList.Rows)
  1441. {
  1442. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1443. {
  1444. #region 转成成新的标本类型ID
  1445. Guid newSampleTypeId = defaultSampleTypeId; //默认取其他 ID
  1446. if (!string.IsNullOrWhiteSpace(row["specimen_type_id"].ToString()))
  1447. {
  1448. var oldSampleType = (await _fieldComparisonRepository.GetQueryableAsync())
  1449. .Where(m => m.TableName == "sample_type" && m.OldKeyValue == row["specimen_type_id"].ToString()).FirstOrDefault();
  1450. if (oldSampleType != null)
  1451. {
  1452. newSampleTypeId = Guid.Parse(oldSampleType.NewKeyValue);
  1453. }
  1454. }
  1455. #endregion
  1456. Guid sampleGroupId = GuidGenerator.Create();
  1457. var data = new SampleGroup(sampleGroupId)
  1458. {
  1459. DisplayName = row["vessels_type_name"].ToString(),
  1460. DisplayOrder = oldSampleGroupList.Rows.IndexOf(row) + 1,
  1461. SimpleCode = LanguageConverter.GetPYSimpleCode(row["vessels_type_name"].ToString()),
  1462. SampleContainerId = defaultSampleContainerId,
  1463. SampleTypeId = newSampleTypeId
  1464. };
  1465. await _sampleGroupRepository.InsertAsync(data);
  1466. var fieldComparison = new FieldComparison
  1467. {
  1468. TableName = "sample_group",
  1469. FieldName = "id",
  1470. NewKeyValue = sampleGroupId.ToString(),
  1471. OldKeyValue = row["vessels_type_id"].ToString()
  1472. };
  1473. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  1474. await uow.CompleteAsync();
  1475. }
  1476. }
  1477. }
  1478. _logger.LogInformation($"条码分组数据处理完毕,处理数量{oldSampleGroupList.Rows.Count}");
  1479. }
  1480. else
  1481. {
  1482. _logger.LogInformation($"条码类型未获取到默认数据,跳过条码分组数据处理");
  1483. }
  1484. }
  1485. else
  1486. {
  1487. _logger.LogInformation("条码分组数据已存在,未处理");
  1488. }
  1489. }
  1490. /// <summary>
  1491. /// 迁移条码分组明细数据
  1492. /// </summary>
  1493. /// <returns></returns>
  1494. [RemoteService(false)]
  1495. public async Task TransferSampleGroupDetailData()
  1496. {
  1497. var count = await _sampleGroupDetailRepository.GetCountAsync();
  1498. if (count == 0)
  1499. {
  1500. var oldSampleGroupDetailList = await Db.Ado.GetDataTableAsync("select * from vessels_type_detail ");
  1501. if (oldSampleGroupDetailList.Rows.Count > 0)
  1502. {
  1503. foreach (DataRow row in oldSampleGroupDetailList.Rows)
  1504. {
  1505. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1506. {
  1507. Guid newSampleGroupId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
  1508. .Where(m => m.TableName == "sample_group" && m.OldKeyValue == row["vessels_type_id"].ToString()).FirstOrDefault().NewKeyValue);
  1509. Guid newAsbitemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
  1510. .Where(m => m.TableName == "asbitem" && m.OldKeyValue == row["asbitem_id"].ToString()).FirstOrDefault().NewKeyValue);
  1511. var data = new SampleGroupDetail
  1512. {
  1513. AsbitemId = newAsbitemId,
  1514. SampleGroupId = newSampleGroupId
  1515. };
  1516. await _sampleGroupDetailRepository.InsertAsync(data);
  1517. await uow.CompleteAsync();
  1518. }
  1519. }
  1520. }
  1521. _logger.LogInformation($"条码分组明细数据处理完毕,处理数量{oldSampleGroupDetailList.Rows.Count}");
  1522. }
  1523. else
  1524. {
  1525. _logger.LogInformation("条码分组明细数据已存在,未处理");
  1526. }
  1527. }
  1528. /// <summary>
  1529. /// 迁移体检单位数据 一级
  1530. /// </summary>
  1531. /// <returns></returns>
  1532. [RemoteService(false)]
  1533. public async Task TransferTopCustomerOrgData()
  1534. {
  1535. var count = await _customerOrgRepository.GetCountAsync();
  1536. if (count == 0)
  1537. {
  1538. var oldCustomerOrgList = await Db.Ado.GetDataTableAsync("select * from org where len(org_id)=5 order by display_order asc");
  1539. if (oldCustomerOrgList.Rows.Count > 0)
  1540. {
  1541. foreach (DataRow row in oldCustomerOrgList.Rows)
  1542. {
  1543. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1544. {
  1545. Guid customerOrgId = GuidGenerator.Create();
  1546. #region 备注 导入联系人姓名、电话
  1547. string remark = "";
  1548. if (!string.IsNullOrWhiteSpace(row["linkman"].ToString()))
  1549. {
  1550. remark = row["linkman"].ToString();
  1551. }
  1552. if (!string.IsNullOrWhiteSpace(row["telephone"].ToString()))
  1553. {
  1554. if (!string.IsNullOrWhiteSpace(remark))
  1555. {
  1556. remark += "|" + row["telephone"].ToString();
  1557. }
  1558. else
  1559. {
  1560. remark = row["telephone"].ToString();
  1561. }
  1562. }
  1563. #endregion
  1564. var data = new CustomerOrg(customerOrgId)
  1565. {
  1566. Accounts = row["accounts"].ToString(),
  1567. Address = row["address"].ToString(),
  1568. Bank = row["bank"].ToString(),
  1569. DisplayName = row["org_name"].ToString(),
  1570. DisplayOrder = oldCustomerOrgList.Rows.IndexOf(row) + 1,
  1571. Fax = row["fax"].ToString(),
  1572. InvoiceName = row["org_name"].ToString(),
  1573. IsActive = 'Y',
  1574. IsLock = Convert.ToChar(row["lock_flag"].ToString()),
  1575. MedicalCenterId = defaultMedicalCenterId,
  1576. OrgTypeId = defaultOrgTypeId, //默认为私营
  1577. ParentId = null,
  1578. PathCode = (oldCustomerOrgList.Rows.IndexOf(row) + 1).ToString().PadLeft(5, '0'),
  1579. PostalCode = row["postalcode"].ToString(),
  1580. Remark = remark,
  1581. ShortName = row["short_name"].ToString(),
  1582. SimpleCode = LanguageConverter.GetPYSimpleCode(row["org_name"].ToString()),
  1583. Telephone = row["telephone"].ToString(),
  1584. };
  1585. await _customerOrgRepository.InsertAsync(data);
  1586. var fieldComparison = new FieldComparison
  1587. {
  1588. FieldName = "id",
  1589. NewKeyValue = customerOrgId.ToString(),
  1590. OldKeyValue = row["org_id"].ToString(),
  1591. TableName = "customer_org"
  1592. };
  1593. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  1594. await uow.CompleteAsync();
  1595. }
  1596. }
  1597. }
  1598. _logger.LogInformation($"体检单位一级数据处理完毕,处理数量{oldCustomerOrgList.Rows.Count}");
  1599. }
  1600. else
  1601. {
  1602. _logger.LogInformation("体检单位一级数据已存在,未处理");
  1603. }
  1604. }
  1605. /// <summary>
  1606. /// 迁移体检单位数据 二级
  1607. /// </summary>
  1608. /// <returns></returns>
  1609. [RemoteService(false)]
  1610. public async Task TransferTwoCustomerOrgData()
  1611. {
  1612. var count = (await _customerOrgRepository.GetQueryableAsync()).Where(m => m.PathCode.Length > 5).Count();
  1613. if (count == 0)
  1614. {
  1615. var oldCustomerOrgList = await Db.Ado.GetDataTableAsync("select * from [dbo].[org] where len(org_id)=8 order by org_id asc");
  1616. if (oldCustomerOrgList.Rows.Count > 0)
  1617. {
  1618. List<CustomerOrg> customerOrgList = await _customerOrgRepository.GetListAsync(m => m.ParentId == null);
  1619. List<FieldComparison> fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "customer_org");
  1620. foreach (DataRow row in oldCustomerOrgList.Rows)
  1621. {
  1622. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1623. {
  1624. #region 查找上级ID
  1625. string oldId = row["org_id"].ToString();
  1626. string oldParentId = oldId.Substring(0, 5);
  1627. Guid parentId = Guid.Parse(fieldComparisonList.Where(m => m.OldKeyValue == oldParentId).FirstOrDefault().NewKeyValue);
  1628. #endregion
  1629. Guid customerOrgId = GuidGenerator.Create();
  1630. #region 备注 导入联系人姓名、电话
  1631. string remark = "";
  1632. if (!string.IsNullOrWhiteSpace(row["linkman"].ToString()))
  1633. {
  1634. remark = row["linkman"].ToString();
  1635. }
  1636. if (!string.IsNullOrWhiteSpace(row["telephone"].ToString()))
  1637. {
  1638. if (!string.IsNullOrWhiteSpace(remark))
  1639. {
  1640. remark += "|" + row["telephone"].ToString();
  1641. }
  1642. else
  1643. {
  1644. remark = row["telephone"].ToString();
  1645. }
  1646. }
  1647. #endregion
  1648. var data = new CustomerOrg(customerOrgId)
  1649. {
  1650. Accounts = row["accounts"].ToString(),
  1651. Address = row["address"].ToString(),
  1652. Bank = row["bank"].ToString(),
  1653. DisplayName = row["org_name"].ToString(),
  1654. DisplayOrder = oldCustomerOrgList.Rows.IndexOf(row) + 1,
  1655. Fax = row["fax"].ToString(),
  1656. InvoiceName = row["org_name"].ToString(),
  1657. IsActive = 'Y',
  1658. IsLock = Convert.ToChar(row["lock_flag"].ToString()),
  1659. MedicalCenterId = defaultMedicalCenterId,
  1660. OrgTypeId = defaultOrgTypeId, //默认为私营
  1661. ParentId = parentId,
  1662. PathCode = _customerOrgManager.CreatePathCode(parentId).Result,
  1663. PostalCode = row["postalcode"].ToString(),
  1664. Remark = remark,
  1665. ShortName = row["short_name"].ToString(),
  1666. SimpleCode = LanguageConverter.GetPYSimpleCode(row["org_name"].ToString()),
  1667. Telephone = row["telephone"].ToString(),
  1668. };
  1669. await _customerOrgRepository.InsertAsync(data);
  1670. var fieldComparison = new FieldComparison
  1671. {
  1672. FieldName = "id",
  1673. NewKeyValue = customerOrgId.ToString(),
  1674. OldKeyValue = row["org_id"].ToString(),
  1675. TableName = "customer_org"
  1676. };
  1677. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  1678. await uow.CompleteAsync();
  1679. }
  1680. }
  1681. }
  1682. _logger.LogInformation($"体检单位二级数据处理完毕,处理数量{oldCustomerOrgList.Rows.Count}");
  1683. }
  1684. else
  1685. {
  1686. _logger.LogInformation("体检单位二级数据已存在,未处理");
  1687. }
  1688. }
  1689. /// <summary>
  1690. /// 迁移体检单位数据 三级
  1691. /// </summary>
  1692. /// <returns></returns>
  1693. [RemoteService(false)]
  1694. public async Task TransferThreeCustomerOrgData()
  1695. {
  1696. var count = (await _customerOrgRepository.GetQueryableAsync()).Where(m => m.PathCode.Length > 11).Count();
  1697. if (count == 0)
  1698. {
  1699. var oldCustomerOrgList = await Db.Ado.GetDataTableAsync("select * from [dbo].[org] where len(org_id)=11 order by org_id asc");
  1700. if (oldCustomerOrgList.Rows.Count > 0)
  1701. {
  1702. List<CustomerOrg> customerOrgList = await _customerOrgRepository.GetListAsync(m => m.ParentId == null);
  1703. List<FieldComparison> fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "customer_org");
  1704. foreach (DataRow row in oldCustomerOrgList.Rows)
  1705. {
  1706. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1707. {
  1708. #region 查找上级ID
  1709. string oldId = row["org_id"].ToString();
  1710. string oldParentId = oldId.Substring(0, 8);
  1711. Guid parentId = Guid.Parse(fieldComparisonList.Where(m => m.OldKeyValue == oldParentId).FirstOrDefault().NewKeyValue);
  1712. #endregion
  1713. Guid customerOrgId = GuidGenerator.Create();
  1714. #region 备注 导入联系人姓名、电话
  1715. string remark = "";
  1716. if (!string.IsNullOrWhiteSpace(row["linkman"].ToString()))
  1717. {
  1718. remark = row["linkman"].ToString();
  1719. }
  1720. if (!string.IsNullOrWhiteSpace(row["telephone"].ToString()))
  1721. {
  1722. if (!string.IsNullOrWhiteSpace(remark))
  1723. {
  1724. remark += "|" + row["telephone"].ToString();
  1725. }
  1726. else
  1727. {
  1728. remark = row["telephone"].ToString();
  1729. }
  1730. }
  1731. #endregion
  1732. var data = new CustomerOrg(customerOrgId)
  1733. {
  1734. Accounts = row["accounts"].ToString(),
  1735. Address = row["address"].ToString(),
  1736. Bank = row["bank"].ToString(),
  1737. DisplayName = row["org_name"].ToString(),
  1738. DisplayOrder = oldCustomerOrgList.Rows.IndexOf(row) + 1,
  1739. Fax = row["fax"].ToString(),
  1740. InvoiceName = row["org_name"].ToString(),
  1741. IsActive = 'Y',
  1742. IsLock = Convert.ToChar(row["lock_flag"].ToString()),
  1743. MedicalCenterId = defaultMedicalCenterId,
  1744. OrgTypeId = defaultOrgTypeId, //默认为私营
  1745. ParentId = parentId,
  1746. PathCode = _customerOrgManager.CreatePathCode(parentId).Result,
  1747. PostalCode = row["postalcode"].ToString(),
  1748. Remark = remark,
  1749. ShortName = row["short_name"].ToString(),
  1750. SimpleCode = LanguageConverter.GetPYSimpleCode(row["org_name"].ToString()),
  1751. Telephone = row["telephone"].ToString(),
  1752. };
  1753. await _customerOrgRepository.InsertAsync(data);
  1754. var fieldComparison = new FieldComparison
  1755. {
  1756. FieldName = "id",
  1757. NewKeyValue = customerOrgId.ToString(),
  1758. OldKeyValue = row["org_id"].ToString(),
  1759. TableName = "customer_org"
  1760. };
  1761. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  1762. await uow.CompleteAsync();
  1763. }
  1764. }
  1765. }
  1766. _logger.LogInformation($"体检单位三级数据处理完毕,处理数量{oldCustomerOrgList.Rows.Count}");
  1767. }
  1768. else
  1769. {
  1770. _logger.LogInformation("体检单位三级数据已存在,未处理");
  1771. }
  1772. }
  1773. /// <summary>
  1774. /// 迁移单位体检次数数据 无字典
  1775. /// </summary>
  1776. /// <returns></returns>
  1777. [RemoteService(false)]
  1778. public async Task TransferCustomerOrgRegisterData()
  1779. {
  1780. var count = await _customerOrgRegisterRepository.GetCountAsync();
  1781. if (count == 0)
  1782. {
  1783. var oldCustomerOrgRegisterList = await Db.Ado.GetDataTableAsync("select * from org_medical_register order by org_medical_times");
  1784. if (oldCustomerOrgRegisterList.Rows.Count > 0)
  1785. {
  1786. List<FieldComparison> fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "customer_org");
  1787. foreach (DataRow row in oldCustomerOrgRegisterList.Rows)
  1788. {
  1789. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1790. {
  1791. Guid customerOrgId = Guid.Parse(fieldComparisonList.Where(m => m.OldKeyValue == row["org_id"].ToString()).FirstOrDefault().NewKeyValue);
  1792. Guid customerOrgRegisterId = GuidGenerator.Create();
  1793. if (customerOrgId == GuidFlag.PersonCustomerOrgId)
  1794. customerOrgRegisterId = GuidFlag.PersonCustomerOrgRegisterId;
  1795. var data = new CustomerOrgRegister(customerOrgRegisterId)
  1796. {
  1797. BeginTime = Convert.ToDateTime(row["start_time"].ToString()),
  1798. CustomerOrgId = customerOrgId,
  1799. EndTime = !string.IsNullOrWhiteSpace(row["end_time"].ToString()) ? Convert.ToDateTime(row["end_time"].ToString()) : null,
  1800. IsComplete = Convert.ToChar(row["complete_flag"].ToString()),
  1801. MedicalTimes = (short)Convert.ToInt32(row["org_medical_times"].ToString()),
  1802. RegisterName = "",
  1803. RegisterNo = ""
  1804. };
  1805. await _customerOrgRegisterRepository.InsertAsync(data);
  1806. await uow.CompleteAsync();
  1807. }
  1808. }
  1809. }
  1810. _logger.LogInformation($"单位体检次数数据处理完毕,处理数量{oldCustomerOrgRegisterList.Rows.Count}");
  1811. }
  1812. else
  1813. {
  1814. _logger.LogInformation("单位体检次数数据已存在,未处理");
  1815. }
  1816. }
  1817. /// <summary>
  1818. /// 迁移单位分组
  1819. /// </summary>
  1820. /// <returns></returns>
  1821. [RemoteService(false)]
  1822. public async Task TransferCustomerOrgGroupData()
  1823. {
  1824. var count = await _customerOrgGroupRepository.GetCountAsync();
  1825. if (count == 0)
  1826. {
  1827. var oldCustomerOrgGroupList = await Db.Ado.GetDataTableAsync("select * from org_group order by display_order asc");
  1828. if (oldCustomerOrgGroupList.Rows.Count > 0)
  1829. {
  1830. List<FieldComparison> fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "customer_org");
  1831. List<CustomerOrgRegister> customerOrgRegisterList = await _customerOrgRegisterRepository.GetListAsync();
  1832. foreach (DataRow row in oldCustomerOrgGroupList.Rows)
  1833. {
  1834. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1835. {
  1836. //新系统单位ID
  1837. Guid customerOrgId = Guid.Parse(fieldComparisonList.Where(m => m.OldKeyValue == row["org_id"].ToString()).FirstOrDefault().NewKeyValue);
  1838. Guid customerOrgRegisterId = customerOrgRegisterList.Where(m => m.CustomerOrgId == customerOrgId
  1839. && m.MedicalTimes == (short)Convert.ToInt32(row["org_medical_times"].ToString())).FirstOrDefault().Id;
  1840. Guid customerOrgGroupId = GuidGenerator.Create();
  1841. var data = new CustomerOrgGroup(customerOrgGroupId)
  1842. {
  1843. AgeLowerLimit = (short)Convert.ToInt32(row["age_lower_limit"].ToString()),
  1844. AgeUpperLimit = (short)Convert.ToInt32(row["age_upper_limit"].ToString()),
  1845. CustomerOrgRegisterId = customerOrgRegisterId,
  1846. DisplayName = row["org_group_name"].ToString(),
  1847. DisplayOrder = oldCustomerOrgGroupList.Rows.IndexOf(row) + 1,
  1848. ForSexId = ConvertForSex(row["for_sex_id"].ToString()),
  1849. JobPost = row["job_post"].ToString(),
  1850. JobTitle = row["job_title"].ToString(),
  1851. MaritalStatusId = Convert.ToChar(row["marital_status_id"].ToString()),
  1852. Price = Convert.ToDecimal(row["price"].ToString()),
  1853. Remark = row["remark"].ToString()
  1854. };
  1855. await _customerOrgGroupRepository.InsertAsync(data);
  1856. var fieldComparison = new FieldComparison
  1857. {
  1858. FieldName = "id",
  1859. NewKeyValue = customerOrgGroupId.ToString(),
  1860. OldKeyValue = row["org_group_id"].ToString(),
  1861. TableName = "customer_org_group"
  1862. };
  1863. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  1864. await uow.CompleteAsync();
  1865. }
  1866. }
  1867. }
  1868. _logger.LogInformation($"单位分组数据处理完毕,处理数量{oldCustomerOrgGroupList.Rows.Count}");
  1869. }
  1870. else
  1871. {
  1872. _logger.LogInformation("单位分组数据已存在,未处理");
  1873. }
  1874. }
  1875. /// <summary>
  1876. /// 迁移单位分组明细数据
  1877. /// </summary>
  1878. /// <returns></returns>
  1879. [RemoteService(false)]
  1880. public async Task TransferCustomerOrgGroupDetailData()
  1881. {
  1882. var count = await _customerOrgGroupDetailRepository.GetCountAsync();
  1883. if (count == 0)
  1884. {
  1885. var oldCustomerOrgGroupList = await Db.Ado.GetDataTableAsync("select * from org_group_detail ");
  1886. if (oldCustomerOrgGroupList.Rows.Count > 0)
  1887. {
  1888. foreach (DataRow row in oldCustomerOrgGroupList.Rows)
  1889. {
  1890. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1891. {
  1892. //新系统单位分组ID
  1893. Guid customerOrgGroupId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
  1894. .Where(m => m.TableName == "customer_org_group" && m.OldKeyValue == row["org_group_id"].ToString()).FirstOrDefault().NewKeyValue);
  1895. Guid asbitemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
  1896. .Where(m => m.TableName == "asbitem" && m.OldKeyValue == row["asbitem_id"].ToString()).FirstOrDefault().NewKeyValue);
  1897. var data = new CustomerOrgGroupDetail
  1898. {
  1899. AsbitemId = asbitemId,
  1900. CustomerOrgGroupId = customerOrgGroupId,
  1901. Price = Convert.ToDecimal(row["price"].ToString()),
  1902. Amount = 1
  1903. };
  1904. await _customerOrgGroupDetailRepository.InsertAsync(data);
  1905. await uow.CompleteAsync();
  1906. }
  1907. }
  1908. }
  1909. _logger.LogInformation($"单位分组明细数据处理完毕,处理数量{oldCustomerOrgGroupList.Rows.Count}");
  1910. }
  1911. else
  1912. {
  1913. _logger.LogInformation("单位分组明细数据已存在,未处理");
  1914. }
  1915. }
  1916. #endregion
  1917. #region 新版人员登记迁移
  1918. /// <summary>
  1919. /// 迁移人员、检查单、登记项目、项目结果、医生小结、修改人员创建者、创建时间
  1920. /// </summary>
  1921. /// <returns></returns>
  1922. public async Task TransferPatientRegisterWithAsbitemData()
  1923. {
  1924. string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register_new' ");
  1925. List<string> patientRegisterNos = new List<string> { "P23083101999",
  1926. "P23083100427", "P23083101608","P23083100503", "P23083102172",
  1927. "P23083102000", "P23083100563", "P23083100542" };
  1928. var oldPatientRegisterList = await Db.Ado.GetDataTableAsync($"select top 1000 * from patient_register where patient_register_id>'{nextKeyValue}' order by patient_register_id asc");
  1929. if (oldPatientRegisterList.Rows.Count > 0)
  1930. {
  1931. var userList = await _identityUserRepository.GetListAsync();
  1932. List<CustomerOrgRegister> customerOrgRegisterList = await _customerOrgRegisterRepository.GetListAsync();
  1933. foreach (DataRow row in oldPatientRegisterList.Rows)
  1934. {
  1935. if (!patientRegisterNos.Contains(row["barcode_no"].ToString()))
  1936. {
  1937. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1938. {
  1939. //档案ID
  1940. Guid patientId = Guid.Empty;
  1941. #region 处理档案,未找到档案就生成
  1942. var patientEnt = await _patientRepository.FirstOrDefaultAsync(m => m.PatientNo == row["patient_id"].ToString());
  1943. if (patientEnt == null)
  1944. {
  1945. string nationId = null;
  1946. if (!string.IsNullOrWhiteSpace(row["nation_id"].ToString()))
  1947. {
  1948. nationId = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "nation" && m.OldKeyValue == row["nation_id"].ToString()).FirstOrDefault().NewKeyValue;
  1949. }
  1950. Guid autoPatientId = GuidGenerator.Create(); //档案ID
  1951. var dataPatient = new Patient(autoPatientId)
  1952. {
  1953. Address = row["address"].ToString(),
  1954. BirthDate = string.IsNullOrEmpty(row["birth_date"].ToString()) ? null : Convert.ToDateTime(row["birth_date"].ToString()),
  1955. BirthPlaceId = null,
  1956. DisplayName = row["name"].ToString(),
  1957. Email = row["email"].ToString(),
  1958. IdNo = row["id_card_no"].ToString(),
  1959. MaritalStatusId = row["marital_status_id"].ToString() == "2" ? '4' : Convert.ToChar(row["marital_status_id"].ToString()),
  1960. MedicalCenterId = defaultMedicalCenterId,
  1961. MobileTelephone = row["mobile_telephone"].ToString(),
  1962. NationId = nationId,
  1963. PatientNo = row["patient_id"].ToString(),
  1964. PatientPassword = row["patient_password"].ToString(),
  1965. PostalCode = row["postalcode"].ToString(),
  1966. SexId = ConvertSex(row["sex_id"].ToString()),
  1967. SimpleCode = LanguageConverter.GetPYSimpleCode(row["name"].ToString()),
  1968. Telephone = row["telephone"].ToString()
  1969. };
  1970. await _patientRepository.InsertAsync(dataPatient, true);
  1971. patientId = autoPatientId;
  1972. }
  1973. else
  1974. {
  1975. patientId = patientEnt.Id;
  1976. }
  1977. #endregion
  1978. Guid patientRegisterId = GuidGenerator.Create(); //生成登记ID
  1979. #region 转换审核医生ID
  1980. Guid? AuditDoctorId = null;
  1981. if (!string.IsNullOrWhiteSpace(row["audit_doctor"].ToString()))
  1982. {
  1983. var userEnt = userList.Where(m => m.UserName == row["audit_doctor"].ToString().Trim()).FirstOrDefault();
  1984. if (userEnt != null)
  1985. {
  1986. AuditDoctorId = userEnt.Id;
  1987. }
  1988. }
  1989. #endregion
  1990. #region 转换单位分组ID
  1991. Guid? customerOrgGroupId = null;
  1992. if (!string.IsNullOrWhiteSpace(row["org_group_id"].ToString()))
  1993. {
  1994. var customerOrgGroupEnt = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "customer_org_group" && m.OldKeyValue == row["org_group_id"].ToString()).FirstOrDefault();
  1995. if (customerOrgGroupEnt != null)
  1996. {
  1997. customerOrgGroupId = Guid.Parse(customerOrgGroupEnt.NewKeyValue);
  1998. }
  1999. }
  2000. #endregion
  2001. #region 转换单位ID 部门
  2002. Guid customerOrgId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "customer_org" && m.OldKeyValue == row["org_id"].ToString()).FirstOrDefault().NewKeyValue);
  2003. #endregion
  2004. #region 转换单位体检次数ID 没有增加默认值
  2005. Guid customerOrgRegisterId = GuidFlag.PersonCustomerOrgRegisterId;
  2006. if (row["org_id"].ToString() != "00000")
  2007. {
  2008. Guid topCustomerOrgId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "customer_org" && m.OldKeyValue == row["org_id"].ToString().Substring(0, 5)).FirstOrDefault().NewKeyValue);
  2009. var customerOrgRegisterEnt = customerOrgRegisterList.Where(m => m.CustomerOrgId == topCustomerOrgId
  2010. && m.MedicalTimes == (short)Convert.ToInt32(row["org_medical_times"].ToString())).FirstOrDefault();
  2011. if (customerOrgRegisterEnt != null)
  2012. {
  2013. customerOrgRegisterId = customerOrgRegisterEnt.Id;
  2014. }
  2015. }
  2016. #endregion
  2017. #region 转换体检结论ID
  2018. Guid? medicalConclusionId = null;
  2019. if (!string.IsNullOrWhiteSpace(row["medical_conclusion_id"].ToString()))
  2020. {
  2021. var medicalConclusionEnt = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "medical_conclusion"
  2022. && m.OldKeyValue == row["medical_conclusion_id"].ToString()).FirstOrDefault();
  2023. if (medicalConclusionEnt != null)
  2024. {
  2025. medicalConclusionId = Guid.Parse(medicalConclusionEnt.NewKeyValue);
  2026. }
  2027. }
  2028. #endregion
  2029. #region 转换套餐ID
  2030. Guid? medicalPackageId = null;
  2031. if (!string.IsNullOrWhiteSpace(row["medical_package_id"].ToString()))
  2032. {
  2033. var medicalPackageEnt = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "medical_package" && m.OldKeyValue == row["medical_package_id"].ToString()).FirstOrDefault();
  2034. if (medicalPackageEnt != null)
  2035. {
  2036. medicalPackageId = Guid.Parse(medicalPackageEnt.NewKeyValue);
  2037. }
  2038. }
  2039. #endregion
  2040. #region 转换体检类别ID
  2041. Guid? medicalTypeId = null;
  2042. if (!string.IsNullOrWhiteSpace(row["medical_type_id"].ToString()))
  2043. {
  2044. var medicalTypeEnt = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "medical_type" && m.OldKeyValue == row["medical_type_id"].ToString()).FirstOrDefault();
  2045. if (medicalTypeEnt != null)
  2046. {
  2047. medicalTypeId = Guid.Parse(medicalTypeEnt.NewKeyValue);
  2048. }
  2049. }
  2050. #endregion
  2051. #region 转换人员类别ID
  2052. Guid? personnelTypeId = null;
  2053. if (!string.IsNullOrWhiteSpace(row["personnel_type_id"].ToString()))
  2054. {
  2055. var personnelTypeEnt = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "personnel_type" && m.OldKeyValue == row["personnel_type_id"].ToString()).FirstOrDefault();
  2056. if (personnelTypeEnt != null)
  2057. {
  2058. personnelTypeId = Guid.Parse(personnelTypeEnt.NewKeyValue);
  2059. }
  2060. }
  2061. #endregion
  2062. #region 转换总检医生ID
  2063. Guid? summaryDoctorId = null;
  2064. if (!string.IsNullOrWhiteSpace(row["summary_doctor"].ToString()))
  2065. {
  2066. var userEnt = userList.Where(m => m.UserName == row["summary_doctor"].ToString().Trim()).FirstOrDefault();
  2067. if (userEnt != null)
  2068. {
  2069. summaryDoctorId = userEnt.Id;
  2070. }
  2071. }
  2072. #endregion
  2073. #region 上传图片,获取地址
  2074. string photo = "";
  2075. if (!string.IsNullOrEmpty(row["photograph"].ToString()))
  2076. {
  2077. photo = UpLoadImg(patientRegisterId, Convert.ToDateTime(row["register_date"].ToString()), (byte[])row["photograph"]);
  2078. }
  2079. #endregion
  2080. var data = new PatientRegister(patientRegisterId)
  2081. {
  2082. BirthDate = string.IsNullOrEmpty(row["birth_date"].ToString()) ? null : Convert.ToDateTime(row["birth_date"].ToString()),
  2083. MaritalStatusId = row["marital_status_id"].ToString() == "2" ? '4' : Convert.ToChar(row["marital_status_id"].ToString()),
  2084. MedicalCenterId = defaultMedicalCenterId,
  2085. SexId = ConvertSex(row["sex_id"].ToString()),
  2086. Age = string.IsNullOrWhiteSpace(row["age"].ToString()) ? null : Convert.ToInt16(row["age"].ToString()),
  2087. AuditDate = string.IsNullOrWhiteSpace(row["audit_date"].ToString()) ? null : Convert.ToDateTime(row["audit_date"].ToString()),
  2088. AuditDoctorId = AuditDoctorId,
  2089. CompleteFlag = Convert.ToChar(row["complete_flag"].ToString()),
  2090. CustomerOrgGroupId = customerOrgGroupId,
  2091. CustomerOrgId = customerOrgId,
  2092. CustomerOrgRegisterId = customerOrgRegisterId,
  2093. GuidePrintTimes = string.IsNullOrWhiteSpace(row["instruct_print_times"].ToString()) ? (short)0 : Convert.ToInt16(row["instruct_print_times"].ToString()),
  2094. InterposeMeasure = null,
  2095. IsAudit = string.IsNullOrWhiteSpace(row["audit_flag"].ToString()) ? 'N' : Convert.ToChar(row["audit_flag"].ToString()),
  2096. IsLock = string.IsNullOrWhiteSpace(row["lock_flag"].ToString()) ? 'N' : Convert.ToChar(row["lock_flag"].ToString()),
  2097. IsMedicalStart = string.IsNullOrWhiteSpace(row["medical_start_flag"].ToString()) ? 'N' : Convert.ToChar(row["medical_start_flag"].ToString()),
  2098. IsNameHide = string.IsNullOrWhiteSpace(row["name_encrypt_flag"].ToString()) ? 'N' : Convert.ToChar(row["name_encrypt_flag"].ToString()),
  2099. IsPhoneFollow = 'N',
  2100. IsRecoverGuide = string.IsNullOrWhiteSpace(row["recover_form_flag"].ToString()) ? 'N' : Convert.ToChar(row["recover_form_flag"].ToString()),
  2101. IsUpload = string.IsNullOrWhiteSpace(row["upload_flag"].ToString()) ? 'N' : Convert.ToChar(row["upload_flag"].ToString()),
  2102. IsVip = string.IsNullOrWhiteSpace(row["vip_flag"].ToString()) ? 'N' : Convert.ToChar(row["vip_flag"].ToString()),
  2103. JobCardNo = row["job_card_no"].ToString(),
  2104. JobPost = row["job_post"].ToString(),
  2105. JobTitle = row["job_title"].ToString(),
  2106. MedicalCardNo = row["medical_card_no"].ToString(),
  2107. MedicalConclusionId = medicalConclusionId,
  2108. MedicalPackageId = medicalPackageId,
  2109. MedicalStartDate = string.IsNullOrEmpty(row["medical_start_date"].ToString()) ? null : Convert.ToDateTime(row["medical_start_date"].ToString()),
  2110. MedicalTimes = Convert.ToInt16(row["medical_times"].ToString()),
  2111. MedicalTypeId = medicalTypeId,
  2112. PatientId = patientId,
  2113. PatientName = row["name"].ToString(),
  2114. PatientRegisterNo = row["barcode_no"].ToString(),
  2115. PersonnelTypeId = personnelTypeId,
  2116. Photo = photo,
  2117. Remark = row["remark"].ToString(),
  2118. ReportPrintTimes = Convert.ToInt16(row["report_print_times"].ToString()),
  2119. Salesman = row["salesman"].ToString(),
  2120. SexHormoneTermId = null,
  2121. SummaryDate = string.IsNullOrEmpty(row["summary_date"].ToString()) ? null : Convert.ToDateTime(row["summary_date"].ToString()),
  2122. SummaryDoctorId = summaryDoctorId,
  2123. ThirdInfo = row["third_info"].ToString(),
  2124. };
  2125. await _patientRegisterRepository.InsertAsync(data, true);
  2126. #region 人员登记扩展
  2127. var patientRegisterExterData = new PatientRegisterExter
  2128. {
  2129. IsQztlImport = Convert.ToChar(row["is_qztl_import"].ToString()),
  2130. PatientRegisterId = patientRegisterId,
  2131. Planuserid = row["planuserid"].ToString(),
  2132. QztlIsCw = Convert.ToChar(row["qztl_is_cw"].ToString()),
  2133. QztlIsCy = Convert.ToChar(row["qztl_is_cy"].ToString()),
  2134. QztlIsFj = Convert.ToChar(row["qztl_is_fj"].ToString()),
  2135. QztlIsGt = Convert.ToChar(row["qztl_is_gt"].ToString()),
  2136. QztlIsMain = Convert.ToChar(row["qztl_is_main"].ToString()),
  2137. QztlIsWh = Convert.ToChar(row["qztl_is_wh"].ToString()),
  2138. QztlType = string.IsNullOrEmpty(row["qztl_type"].ToString()) ? null : Convert.ToChar(row["qztl_type"].ToString()),
  2139. Remark2 = row["remark2"].ToString(),
  2140. Remark3 = row["remark3"].ToString(),
  2141. Remark4 = row["remark4"].ToString(),
  2142. UploadQztlFlag = Convert.ToChar(row["upload_qztl_flag"].ToString())
  2143. };
  2144. await _patientRegisterExterRepository.InsertAsync(patientRegisterExterData);
  2145. #endregion
  2146. var oldRegisterAsbitemList = await Db.Ado.GetDataTableAsync($"select * from register_asbitem where patient_register_id='{row["patient_register_id"].ToString()}'");
  2147. if (oldRegisterAsbitemList.Rows.Count > 0)
  2148. {
  2149. foreach (DataRow rowAsbitem in oldRegisterAsbitemList.Rows)
  2150. {
  2151. #region 转换审核医生ID
  2152. Guid? auditorUserId = null;
  2153. if (!string.IsNullOrWhiteSpace(rowAsbitem["audit_doctor"].ToString()))
  2154. {
  2155. var userEnt = userList.Where(m => m.UserName == rowAsbitem["audit_doctor"].ToString().Trim()).FirstOrDefault();
  2156. if (userEnt != null)
  2157. {
  2158. auditorUserId = userEnt.Id;
  2159. }
  2160. }
  2161. #endregion
  2162. #region 转换检查医生ID
  2163. string checkDoctorId = null;
  2164. if (!string.IsNullOrWhiteSpace(rowAsbitem["check_doctor"].ToString()))
  2165. {
  2166. var userEnt = userList.Where(m => m.UserName == rowAsbitem["check_doctor"].ToString().Trim()).FirstOrDefault();
  2167. if (userEnt != null)
  2168. {
  2169. checkDoctorId = userEnt.Id.ToString();
  2170. }
  2171. else
  2172. {
  2173. checkDoctorId = rowAsbitem["check_doctor"].ToString().Trim();
  2174. }
  2175. }
  2176. #endregion
  2177. #region 转换组合项目ID
  2178. Guid newAsbitemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
  2179. .Where(m => m.TableName == "asbitem" && m.OldKeyValue == rowAsbitem["asbitem_id"].ToString()).FirstOrDefault().NewKeyValue);
  2180. #endregion
  2181. #region 插入register_check
  2182. Guid registerCheckId = GuidGenerator.Create();
  2183. var dataRegisterCheck = new RegisterCheck(registerCheckId)
  2184. {
  2185. AuditorUserId = auditorUserId,
  2186. AuditTime = string.IsNullOrEmpty(rowAsbitem["audit_date"].ToString()) ? null : Convert.ToDateTime(rowAsbitem["audit_date"].ToString()),
  2187. CheckDate = string.IsNullOrEmpty(rowAsbitem["check_date"].ToString()) ? null : Convert.ToDateTime(rowAsbitem["check_date"].ToString()),
  2188. CheckDoctorId = checkDoctorId,
  2189. CheckRequestNo = "",
  2190. CheckRequestPrintTimes = (short)1,
  2191. CompleteFlag = Convert.ToChar(rowAsbitem["complete_flag"].ToString()),
  2192. CriticalValue = null,
  2193. CriticalValueCreateDate = null,
  2194. CriticalValueFlag = null,
  2195. CriticalValueProcessContent = null,
  2196. CriticalValueProcessDate = null,
  2197. CriticalValueProcessDoctor = null,
  2198. CriticalValueProcessFlag = null,
  2199. IsAudit = string.IsNullOrEmpty(rowAsbitem["audit_flag"].ToString()) ? 'N' : Convert.ToChar(rowAsbitem["audit_flag"].ToString()),
  2200. IsLock = string.IsNullOrEmpty(rowAsbitem["lock_flag"].ToString()) ? 'N' : Convert.ToChar(rowAsbitem["lock_flag"].ToString()),
  2201. PatientRegisterId = patientRegisterId,
  2202. ThirdInfo = rowAsbitem["third_info"].ToString()
  2203. };
  2204. await _registerCheckRepository.InsertAsync(dataRegisterCheck, true);
  2205. #endregion
  2206. #region 插入register_check_asbitem
  2207. Guid registerCheckAsbitemId = GuidGenerator.Create();
  2208. var dataRegisterAsbitem = new RegisterCheckAsbitem(registerCheckAsbitemId)
  2209. {
  2210. Amount = 1,
  2211. IsCharge = Convert.ToChar(rowAsbitem["charge_flag"].ToString()),
  2212. AsbitemId = newAsbitemId,
  2213. ChargePrice = Convert.ToDecimal(rowAsbitem["price"].ToString()),
  2214. GroupPackageId = null,
  2215. LisRequestId = null,
  2216. PatientRegisterId = patientRegisterId,
  2217. PayTypeFlag = Convert.ToChar(rowAsbitem["payment_mode"].ToString()),
  2218. RegisterCheckId = registerCheckId,
  2219. StandardPrice = Convert.ToDecimal(rowAsbitem["standard_price"].ToString())
  2220. };
  2221. await _registerCheckAsbitemRepository.InsertAsync(dataRegisterAsbitem);
  2222. #endregion
  2223. #region 插入医生小结
  2224. var oldSummary = rowAsbitem["summary"].ToString();
  2225. if (!string.IsNullOrWhiteSpace(oldSummary))
  2226. {
  2227. var dataRegisterCheckSummary = new RegisterCheckSummary
  2228. {
  2229. RegisterCheckId = registerCheckId,
  2230. DisplayOrder = 1,
  2231. Summary = oldSummary,
  2232. SummaryFlag = '0'
  2233. };
  2234. await _registerCheckSummaryRepository.InsertAsync(dataRegisterCheckSummary);
  2235. }
  2236. #endregion
  2237. #region 插入明细项目
  2238. var oldRegisterCheckItemList = await Db.Ado.GetDataTableAsync($"select * from register_item where patient_register_id='{row["patient_register_id"].ToString()}' and asbitem_id='{rowAsbitem["asbitem_id"].ToString()}'");
  2239. if (oldRegisterCheckItemList.Rows.Count > 0)
  2240. {
  2241. foreach (DataRow rowRegisterCheckItem in oldRegisterCheckItemList.Rows)
  2242. {
  2243. #region 转换项目ID 老转新
  2244. Guid newItemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
  2245. .Where(m => m.TableName == "item" && m.OldKeyValue == rowRegisterCheckItem["item_id"].ToString()).FirstOrDefault().NewKeyValue);
  2246. #endregion
  2247. var dataRegisterCheckItem = new RegisterCheckItem
  2248. {
  2249. CheckDate = string.IsNullOrEmpty(rowRegisterCheckItem["check_date"].ToString()) ? null : Convert.ToDateTime(rowRegisterCheckItem["check_date"].ToString()),
  2250. CriticalValue = null,
  2251. CheckDoctorName = rowRegisterCheckItem["check_doctor"].ToString().Trim(),
  2252. CriticalRangeValue = null,
  2253. ItemId = newItemId,
  2254. ReferenceRangeValue = rowRegisterCheckItem["reference_range_value"].ToString(),
  2255. RegisterCheckId = registerCheckId,
  2256. Result = rowRegisterCheckItem["result"].ToString(),
  2257. ResultStatusId = _registerCheckItemManager.GetResultStatusId(rowRegisterCheckItem["result"].ToString(), rowRegisterCheckItem["reference_range_value"].ToString()),
  2258. Unit = rowRegisterCheckItem["Unit"].ToString()
  2259. };
  2260. await _registerCheckItemRepository.InsertAsync(dataRegisterCheckItem);
  2261. }
  2262. }
  2263. #endregion
  2264. }
  2265. }
  2266. var fieldComparison = new FieldComparison
  2267. {
  2268. FieldName = "id",
  2269. NewKeyValue = patientRegisterId.ToString(),
  2270. OldKeyValue = row["patient_register_id"].ToString(),
  2271. TableName = "patient_register"
  2272. };
  2273. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  2274. await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{row["patient_register_id"].ToString()}',addtime=getdate(),handlecount+=1 where tablename='patient_register_new' ");
  2275. await uow.CompleteAsync();
  2276. #region 修改创建者日期跟id
  2277. Guid registerDoctorId = Guid.Parse("3a11fe49-5719-0e9e-dd44-0c4aff0900b0");
  2278. var registerDoctorEnt = userList.Where(m => m.UserName == row["register_doctor"].ToString().Trim()).FirstOrDefault();
  2279. if (registerDoctorEnt != null)
  2280. {
  2281. registerDoctorId = registerDoctorEnt.Id;
  2282. }
  2283. string sql_update = $"update patient_register set creator_id='{registerDoctorId}',creation_time='{Convert.ToDateTime(row["register_date"]).ToString("yyyy-MM-dd HH:mm:ss")}'";
  2284. sql_update += $" where id='{patientRegisterId}' ";
  2285. await PgNWDb.Ado.ExecuteCommandAsync(sql_update);
  2286. #endregion
  2287. }
  2288. }
  2289. }
  2290. _logger.LogInformation($"新版人员数据处理{oldPatientRegisterList.Rows.Count}条");
  2291. await TransferPatientRegisterWithAsbitemData();
  2292. }
  2293. else
  2294. {
  2295. _logger.LogInformation("新版人员数据已处理完");
  2296. }
  2297. }
  2298. /// <summary>
  2299. /// 迁移总症 建议、综述、诊断数据
  2300. /// </summary>
  2301. /// <returns></returns>
  2302. public async Task TransferSumData()
  2303. {
  2304. string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='sum_summary'");
  2305. var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id)
  2306. .Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(1000).ToList();
  2307. if (patientRegisterList.Any())
  2308. {
  2309. List<string> patientRegisterNos = new List<string> { "P23083101999",
  2310. "P23083100427", "P23083101608","P23083100503", "P23083102172",
  2311. "P23083102000", "P23083100563", "P23083100542" };
  2312. foreach (var item in patientRegisterList)
  2313. {
  2314. if (!patientRegisterNos.Contains(item.PatientRegisterNo))
  2315. {
  2316. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  2317. {
  2318. #region 转换成老系统PatientRegisterId
  2319. string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
  2320. .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.Id.ToString()).FirstOrDefault().OldKeyValue;
  2321. #endregion
  2322. #region 综述、建议
  2323. var oldSum = await Db.Ado.GetDataTableAsync($"select summary,suggestion,barcode_no from patient_register where patient_register_id='{oldPatientRegisterId}' ");
  2324. if (oldSum.Rows.Count == 1)
  2325. {
  2326. string oldSummary = oldSum.Rows[0][0].ToString();
  2327. string oldSuggestion = oldSum.Rows[0][1].ToString();
  2328. if (!string.IsNullOrWhiteSpace(oldSummary))
  2329. {
  2330. Guid sumSummaryHeaderId = GuidGenerator.Create();
  2331. var dataSumSummaryHeader = new SumSummaryHeader(sumSummaryHeaderId)
  2332. {
  2333. DisplayOrder = 1,
  2334. SummaryFlag = '0',
  2335. PatientRegisterId = item.Id,
  2336. SummaryTitle = "综述"
  2337. };
  2338. await _sumSummaryHeaderRepository.InsertAsync(dataSumSummaryHeader);
  2339. Guid sumSummaryContentId = GuidGenerator.Create();
  2340. var dataSumSummaryContent = new SumSummaryContent(sumSummaryContentId)
  2341. {
  2342. DisplayOrder = 1,
  2343. SumSummaryHeaderId = sumSummaryHeaderId,
  2344. SummaryContent = oldSummary
  2345. };
  2346. await _sumSummaryContentRepository.InsertAsync(dataSumSummaryContent);
  2347. }
  2348. if (!string.IsNullOrWhiteSpace(oldSuggestion))
  2349. {
  2350. Guid sumSuggestionHeaderId = GuidGenerator.Create();
  2351. var dataSumSuggestionHeader = new SumSuggestionHeader(sumSuggestionHeaderId)
  2352. {
  2353. DisplayOrder = 1,
  2354. SuggestionFlag = '0',
  2355. PatientRegisterId = item.Id,
  2356. SuggestionTitle = "建议"
  2357. };
  2358. await _sumSuggestionHeaderRepository.InsertAsync(dataSumSuggestionHeader);
  2359. Guid sumSuggestionContentId = GuidGenerator.Create();
  2360. var dataSumSuggestionContent = new SumSuggestionContent(sumSuggestionContentId)
  2361. {
  2362. DisplayOrder = 1,
  2363. SuggestionContent = oldSuggestion,
  2364. SuggestionType = SuggestionTypeFlag.HealthGuidance,
  2365. SumSuggestionHeaderId = sumSuggestionHeaderId
  2366. };
  2367. await _sumSuggestionContentRepository.InsertAsync(dataSumSuggestionContent);
  2368. #region 总症诊断
  2369. var oldSummaryDiagnosis = await Db.Ado.GetDataTableAsync($"select diagnosis_id from summary_diagnosis where patient_register_id='{oldPatientRegisterId}' order by display_order asc ");
  2370. if (oldSummaryDiagnosis.Rows.Count > 0)
  2371. {
  2372. List<SumDiagnosis> sumDiagnosisInsert = new List<SumDiagnosis>();
  2373. foreach (DataRow row in oldSummaryDiagnosis.Rows)
  2374. {
  2375. var diagnosisEnt = (await _fieldComparisonRepository.GetQueryableAsync())
  2376. .Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["diagnosis_id"].ToString()).FirstOrDefault();
  2377. if (diagnosisEnt != null)
  2378. {
  2379. var dataSumDiagnosis = new SumDiagnosis
  2380. {
  2381. DisplayOrder = oldSummaryDiagnosis.Rows.IndexOf(row) + 1,
  2382. PatientRegisterId = item.Id,
  2383. DiagnosisId = Guid.Parse(diagnosisEnt.NewKeyValue),
  2384. SumSuggestionHeaderId = sumSuggestionContentId
  2385. };
  2386. sumDiagnosisInsert.Add(dataSumDiagnosis);
  2387. }
  2388. }
  2389. if (sumDiagnosisInsert.Any())
  2390. await _sumDiagnosisRepository.InsertManyAsync(sumDiagnosisInsert);
  2391. }
  2392. #endregion
  2393. }
  2394. }
  2395. #endregion
  2396. await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='sum_summary' ");
  2397. }
  2398. }
  2399. }
  2400. await TransferSumSummaryData();
  2401. }
  2402. else
  2403. {
  2404. _logger.LogInformation("总检综述已处理完");
  2405. }
  2406. }
  2407. /// <summary>
  2408. /// 迁移全部总检数据20240601
  2409. /// </summary>
  2410. /// <returns></returns>
  2411. public async Task TransferAllSumData()
  2412. {
  2413. string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register_new' ");
  2414. List<PatientRegister> TempDate = (await _patientRegisterRepository.GetQueryableAsync())
  2415. .Include(x => x.SumDiagnoses)
  2416. .Include(x => x.SumSuggestionHeaders)
  2417. .Include(x => x.SumSummaryHeaders)
  2418. .OrderBy(o => o.Id)
  2419. .Where(m => m.CreationTime < Convert.ToDateTime("2024-05-20")
  2420. && m.SumDiagnoses.Count == 0
  2421. && m.SumSuggestionHeaders.Count == 0
  2422. && m.SumSummaryHeaders.Count == 0
  2423. && string.Compare(m.Id.ToString(), nextKeyValue) > 0)
  2424. .Take(100).ToList();
  2425. if (TempDate.Any())
  2426. {
  2427. foreach (var item in TempDate)
  2428. {
  2429. #region 转换成老系统PatientRegisterId
  2430. var oldPatientRegisterEnt = (await _fieldComparisonRepository.GetQueryableAsync())
  2431. .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.Id.ToString()).FirstOrDefault();
  2432. if (oldPatientRegisterEnt != null)
  2433. {
  2434. string oldPatientRegisterId = oldPatientRegisterEnt.OldKeyValue; //老系统ID
  2435. await TransferSumByPatientRegisterIdData(item.Id, oldPatientRegisterId);
  2436. }
  2437. #endregion
  2438. await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='patient_register_new' ");
  2439. }
  2440. await TransferAllSumData();
  2441. }
  2442. else
  2443. {
  2444. _logger.LogInformation("总检数据已处理完");
  2445. }
  2446. }
  2447. /// <summary>
  2448. /// 迁移总检数据20240601
  2449. /// </summary>
  2450. /// <returns></returns>
  2451. public async Task TransferSumByPatientRegisterIdData(Guid newPatientRegisterId, string oldPatientRegisterId)
  2452. {
  2453. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  2454. {
  2455. #region 综述、建议
  2456. var oldSum = await Db.Ado.GetDataTableAsync($"select summary,suggestion,barcode_no from patient_register where patient_register_id='{oldPatientRegisterId}' ");
  2457. if (oldSum.Rows.Count == 1)
  2458. {
  2459. string oldSummary = oldSum.Rows[0][0].ToString();
  2460. string oldSuggestion = oldSum.Rows[0][1].ToString();
  2461. if (!string.IsNullOrWhiteSpace(oldSummary))
  2462. {
  2463. Guid sumSummaryHeaderId = GuidGenerator.Create();
  2464. var dataSumSummaryHeader = new SumSummaryHeader(sumSummaryHeaderId)
  2465. {
  2466. DisplayOrder = 1,
  2467. SummaryFlag = '0',
  2468. PatientRegisterId = newPatientRegisterId,
  2469. SummaryTitle = "异常结果如下"
  2470. };
  2471. await _sumSummaryHeaderRepository.InsertAsync(dataSumSummaryHeader);
  2472. Guid sumSummaryContentId = GuidGenerator.Create();
  2473. var dataSumSummaryContent = new SumSummaryContent(sumSummaryContentId)
  2474. {
  2475. DisplayOrder = 1,
  2476. SumSummaryHeaderId = sumSummaryHeaderId,
  2477. SummaryContent = oldSummary
  2478. };
  2479. await _sumSummaryContentRepository.InsertAsync(dataSumSummaryContent);
  2480. }
  2481. if (!string.IsNullOrWhiteSpace(oldSuggestion))
  2482. {
  2483. Guid sumSuggestionHeaderId = GuidGenerator.Create();
  2484. var dataSumSuggestionHeader = new SumSuggestionHeader(sumSuggestionHeaderId)
  2485. {
  2486. DisplayOrder = 1,
  2487. SuggestionFlag = '0',
  2488. PatientRegisterId = newPatientRegisterId,
  2489. SuggestionTitle = "健康建议如下"
  2490. };
  2491. await _sumSuggestionHeaderRepository.InsertAsync(dataSumSuggestionHeader);
  2492. Guid sumSuggestionContentId = GuidGenerator.Create();
  2493. var dataSumSuggestionContent = new SumSuggestionContent(sumSuggestionContentId)
  2494. {
  2495. DisplayOrder = 1,
  2496. SuggestionContent = oldSuggestion,
  2497. SuggestionType = SuggestionTypeFlag.HealthGuidance,
  2498. SumSuggestionHeaderId = sumSuggestionHeaderId
  2499. };
  2500. await _sumSuggestionContentRepository.InsertAsync(dataSumSuggestionContent);
  2501. #region 总症诊断
  2502. var oldSummaryDiagnosis = await Db.Ado.GetDataTableAsync($"select diagnosis_id from summary_diagnosis where patient_register_id='{oldPatientRegisterId}' order by display_order asc ");
  2503. if (oldSummaryDiagnosis.Rows.Count > 0)
  2504. {
  2505. List<SumDiagnosis> sumDiagnosisInsert = new List<SumDiagnosis>();
  2506. foreach (DataRow row in oldSummaryDiagnosis.Rows)
  2507. {
  2508. var diagnosisEnt = (await _fieldComparisonRepository.GetQueryableAsync())
  2509. .Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["diagnosis_id"].ToString()).FirstOrDefault();
  2510. if (diagnosisEnt != null)
  2511. {
  2512. var dataSumDiagnosis = new SumDiagnosis
  2513. {
  2514. DisplayOrder = oldSummaryDiagnosis.Rows.IndexOf(row) + 1,
  2515. PatientRegisterId = newPatientRegisterId,
  2516. DiagnosisId = Guid.Parse(diagnosisEnt.NewKeyValue),
  2517. SumSuggestionHeaderId = sumSuggestionHeaderId
  2518. };
  2519. sumDiagnosisInsert.Add(dataSumDiagnosis);
  2520. }
  2521. }
  2522. if (sumDiagnosisInsert.Any())
  2523. await _sumDiagnosisRepository.InsertManyAsync(sumDiagnosisInsert);
  2524. }
  2525. #endregion
  2526. }
  2527. }
  2528. #endregion
  2529. await uow.CompleteAsync();
  2530. await Db.Ado.ExecuteCommandAsync($"insert into tb_handle_patient_register (new_patient_register_id,old_patient_register_id,addtime) " +
  2531. $"values ('{newPatientRegisterId.ToString()}','{oldPatientRegisterId}',getdate())");
  2532. }
  2533. }
  2534. /// <summary>
  2535. /// 修复总检诊断绑定的建议头ID
  2536. /// </summary>
  2537. /// <returns></returns>
  2538. public async Task TransferUpdateSumSuggestionHeaderIdData()
  2539. {
  2540. string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='sum_diagnosis' ");
  2541. List<PatientRegister> TempDate = (await _patientRegisterRepository.GetQueryableAsync())
  2542. .OrderBy(o => o.Id)
  2543. .Where(m => m.CreationTime < Convert.ToDateTime("2024-05-20")
  2544. && string.Compare(m.Id.ToString(), nextKeyValue) > 0)
  2545. .Take(1000).ToList();
  2546. if (TempDate.Any())
  2547. {
  2548. foreach (var item in TempDate)
  2549. {
  2550. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  2551. {
  2552. #region 修复建议头ID
  2553. var sumDiagnosisList = await _sumDiagnosisRepository.GetListAsync(m => m.PatientRegisterId == item.Id);
  2554. foreach (var sumDiagnosis in sumDiagnosisList)
  2555. {
  2556. var isSumSuggestionHeaderId = await _sumSuggestionHeaderRepository.CountAsync(c => c.Id == sumDiagnosis.SumSuggestionHeaderId);
  2557. if (isSumSuggestionHeaderId == 0)
  2558. {
  2559. var sumSuggestionContentEnt = await _sumSuggestionContentRepository.FirstOrDefaultAsync(m => m.Id == sumDiagnosis.SumSuggestionHeaderId);
  2560. if (sumSuggestionContentEnt != null)
  2561. {
  2562. sumDiagnosis.SumSuggestionHeaderId = sumSuggestionContentEnt.SumSuggestionHeaderId;
  2563. }
  2564. }
  2565. }
  2566. await _sumDiagnosisRepository.UpdateManyAsync(sumDiagnosisList);
  2567. #endregion
  2568. await uow.CompleteAsync();
  2569. }
  2570. await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='sum_diagnosis' ");
  2571. }
  2572. await TransferUpdateSumSuggestionHeaderIdData();
  2573. }
  2574. else
  2575. {
  2576. _logger.LogInformation("修复总检诊断绑定的建议头ID已处理完");
  2577. }
  2578. }
  2579. //20170706010013
  2580. #endregion
  2581. #region 青藏公司对比
  2582. /// <summary>
  2583. /// 对比青藏公司
  2584. /// </summary>
  2585. /// <returns></returns>
  2586. public async Task QZTLDB()
  2587. {
  2588. List<string> qsIdCard = new List<string>();
  2589. var oldDate = await Db.Ado.GetDataTableAsync($"select top 1000 * from patient_register where patient_register_id>'20240513010001' order by patient_register_id asc");
  2590. var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(Guid.Parse("3a126b36-831f-aa9f-ddfe-a82f660fc485"));
  2591. foreach (DataRow item in oldDate.Rows)
  2592. {
  2593. var isIdNo = (from a in await _patientRegisterRepository.GetQueryableAsync()
  2594. join b in await _patientRepository.GetQueryableAsync() on a.PatientId equals b.Id
  2595. where CustomerOrgIds.Contains(a.CustomerOrgId) && !string.IsNullOrEmpty(b.IdNo) && b.IdNo == item["id_card_no"].ToString()
  2596. select b.IdNo).FirstOrDefault();
  2597. if (string.IsNullOrEmpty(isIdNo))
  2598. {
  2599. qsIdCard.Add(item["id_card_no"].ToString());
  2600. }
  2601. }
  2602. }
  2603. #endregion
  2604. #region 青藏公司剩余数据
  2605. /// <summary>
  2606. /// 迁移人员、检查单、登记项目、项目结果、医生小结、修改人员创建者、创建时间
  2607. /// </summary>
  2608. /// <returns></returns>
  2609. public async Task TransferPatientRegisterQZTLData()
  2610. {
  2611. string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register_qztl' ");
  2612. var oldPatientRegisterList = await Db.Ado.GetDataTableAsync($"select top 1000 * from patient_register where patient_register_id>'20240513010001' order by patient_register_id asc");
  2613. if (oldPatientRegisterList.Rows.Count > 0)
  2614. {
  2615. List<string> planuserids = new List<string>();
  2616. var userList = await _identityUserRepository.GetListAsync();
  2617. List<CustomerOrgRegister> customerOrgRegisterList = await _customerOrgRegisterRepository.GetListAsync();
  2618. foreach (DataRow row in oldPatientRegisterList.Rows)
  2619. {
  2620. var isPlanuserid = await _patientRegisterExterRepository.FirstOrDefaultAsync(m => m.Planuserid == row["planuserid"].ToString());
  2621. if (isPlanuserid == null)
  2622. {
  2623. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  2624. {
  2625. //档案ID
  2626. Guid patientId = Guid.Empty;
  2627. #region 处理档案,未找到档案就生成
  2628. var patientEnt = await _patientRepository.FirstOrDefaultAsync(m => m.PatientNo == row["patient_id"].ToString());
  2629. if (patientEnt == null)
  2630. {
  2631. string nationId = null;
  2632. if (!string.IsNullOrWhiteSpace(row["nation_id"].ToString()))
  2633. {
  2634. nationId = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "nation" && m.OldKeyValue == row["nation_id"].ToString()).FirstOrDefault().NewKeyValue;
  2635. }
  2636. Guid autoPatientId = GuidGenerator.Create(); //档案ID
  2637. var dataPatient = new Patient(autoPatientId)
  2638. {
  2639. Address = row["address"].ToString(),
  2640. BirthDate = string.IsNullOrEmpty(row["birth_date"].ToString()) ? null : Convert.ToDateTime(row["birth_date"].ToString()),
  2641. BirthPlaceId = null,
  2642. DisplayName = row["name"].ToString(),
  2643. Email = row["email"].ToString(),
  2644. IdNo = row["id_card_no"].ToString(),
  2645. MaritalStatusId = row["marital_status_id"].ToString() == "2" ? '4' : Convert.ToChar(row["marital_status_id"].ToString()),
  2646. MedicalCenterId = defaultMedicalCenterId,
  2647. MobileTelephone = row["mobile_telephone"].ToString(),
  2648. NationId = nationId,
  2649. PatientNo = row["patient_id"].ToString(),
  2650. PatientPassword = row["patient_password"].ToString(),
  2651. PostalCode = row["postalcode"].ToString(),
  2652. SexId = ConvertSex(row["sex_id"].ToString()),
  2653. SimpleCode = LanguageConverter.GetPYSimpleCode(row["name"].ToString()),
  2654. Telephone = row["telephone"].ToString()
  2655. };
  2656. await _patientRepository.InsertAsync(dataPatient, true);
  2657. patientId = autoPatientId;
  2658. }
  2659. else
  2660. {
  2661. patientId = patientEnt.Id;
  2662. }
  2663. #endregion
  2664. Guid patientRegisterId = GuidGenerator.Create(); //生成登记ID
  2665. #region 转换审核医生ID
  2666. Guid? AuditDoctorId = null;
  2667. if (!string.IsNullOrWhiteSpace(row["audit_doctor"].ToString()))
  2668. {
  2669. var userEnt = userList.Where(m => m.UserName == row["audit_doctor"].ToString().Trim()).FirstOrDefault();
  2670. if (userEnt != null)
  2671. {
  2672. AuditDoctorId = userEnt.Id;
  2673. }
  2674. }
  2675. #endregion
  2676. #region 转换单位分组ID
  2677. Guid? customerOrgGroupId = null;
  2678. if (!string.IsNullOrWhiteSpace(row["org_group_id"].ToString()))
  2679. {
  2680. var customerOrgGroupEnt = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "customer_org_group" && m.OldKeyValue == row["org_group_id"].ToString()).FirstOrDefault();
  2681. if (customerOrgGroupEnt != null)
  2682. {
  2683. customerOrgGroupId = Guid.Parse(customerOrgGroupEnt.NewKeyValue);
  2684. }
  2685. }
  2686. #endregion
  2687. #region 转换单位ID 部门
  2688. Guid customerOrgId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "customer_org" && m.OldKeyValue == row["org_id"].ToString()).FirstOrDefault().NewKeyValue);
  2689. #endregion
  2690. #region 转换单位体检次数ID 没有增加默认值
  2691. Guid customerOrgRegisterId = GuidFlag.PersonCustomerOrgRegisterId;
  2692. if (row["org_id"].ToString() != "00000")
  2693. {
  2694. Guid topCustomerOrgId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "customer_org" && m.OldKeyValue == row["org_id"].ToString().Substring(0, 5)).FirstOrDefault().NewKeyValue);
  2695. var customerOrgRegisterEnt = customerOrgRegisterList.Where(m => m.CustomerOrgId == topCustomerOrgId
  2696. && m.MedicalTimes == (short)Convert.ToInt32(row["org_medical_times"].ToString())).FirstOrDefault();
  2697. if (customerOrgRegisterEnt != null)
  2698. {
  2699. customerOrgRegisterId = customerOrgRegisterEnt.Id;
  2700. }
  2701. }
  2702. #endregion
  2703. #region 转换体检结论ID
  2704. Guid? medicalConclusionId = null;
  2705. if (!string.IsNullOrWhiteSpace(row["medical_conclusion_id"].ToString()))
  2706. {
  2707. var medicalConclusionEnt = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "medical_conclusion"
  2708. && m.OldKeyValue == row["medical_conclusion_id"].ToString()).FirstOrDefault();
  2709. if (medicalConclusionEnt != null)
  2710. {
  2711. medicalConclusionId = Guid.Parse(medicalConclusionEnt.NewKeyValue);
  2712. }
  2713. }
  2714. #endregion
  2715. #region 转换套餐ID
  2716. Guid? medicalPackageId = null;
  2717. if (!string.IsNullOrWhiteSpace(row["medical_package_id"].ToString()))
  2718. {
  2719. var medicalPackageEnt = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "medical_package" && m.OldKeyValue == row["medical_package_id"].ToString()).FirstOrDefault();
  2720. if (medicalPackageEnt != null)
  2721. {
  2722. medicalPackageId = Guid.Parse(medicalPackageEnt.NewKeyValue);
  2723. }
  2724. }
  2725. #endregion
  2726. #region 转换体检类别ID
  2727. Guid? medicalTypeId = null;
  2728. if (!string.IsNullOrWhiteSpace(row["medical_type_id"].ToString()))
  2729. {
  2730. var medicalTypeEnt = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "medical_type" && m.OldKeyValue == row["medical_type_id"].ToString()).FirstOrDefault();
  2731. if (medicalTypeEnt != null)
  2732. {
  2733. medicalTypeId = Guid.Parse(medicalTypeEnt.NewKeyValue);
  2734. }
  2735. }
  2736. #endregion
  2737. #region 转换人员类别ID
  2738. Guid? personnelTypeId = null;
  2739. if (!string.IsNullOrWhiteSpace(row["personnel_type_id"].ToString()))
  2740. {
  2741. var personnelTypeEnt = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "personnel_type" && m.OldKeyValue == row["personnel_type_id"].ToString()).FirstOrDefault();
  2742. if (personnelTypeEnt != null)
  2743. {
  2744. personnelTypeId = Guid.Parse(personnelTypeEnt.NewKeyValue);
  2745. }
  2746. }
  2747. #endregion
  2748. #region 转换总检医生ID
  2749. Guid? summaryDoctorId = null;
  2750. if (!string.IsNullOrWhiteSpace(row["summary_doctor"].ToString()))
  2751. {
  2752. var userEnt = userList.Where(m => m.UserName == row["summary_doctor"].ToString().Trim()).FirstOrDefault();
  2753. if (userEnt != null)
  2754. {
  2755. summaryDoctorId = userEnt.Id;
  2756. }
  2757. }
  2758. #endregion
  2759. #region 上传图片,获取地址
  2760. string photo = "";
  2761. if (!string.IsNullOrEmpty(row["photograph"].ToString()))
  2762. {
  2763. photo = UpLoadImg(patientRegisterId, Convert.ToDateTime(row["register_date"].ToString()), (byte[])row["photograph"]);
  2764. }
  2765. #endregion
  2766. var data = new PatientRegister(patientRegisterId)
  2767. {
  2768. BirthDate = string.IsNullOrEmpty(row["birth_date"].ToString()) ? null : Convert.ToDateTime(row["birth_date"].ToString()),
  2769. MaritalStatusId = row["marital_status_id"].ToString() == "2" ? '4' : Convert.ToChar(row["marital_status_id"].ToString()),
  2770. MedicalCenterId = defaultMedicalCenterId,
  2771. SexId = ConvertSex(row["sex_id"].ToString()),
  2772. Age = string.IsNullOrWhiteSpace(row["age"].ToString()) ? null : Convert.ToInt16(row["age"].ToString()),
  2773. AuditDate = string.IsNullOrWhiteSpace(row["audit_date"].ToString()) ? null : Convert.ToDateTime(row["audit_date"].ToString()),
  2774. AuditDoctorId = AuditDoctorId,
  2775. CompleteFlag = Convert.ToChar(row["complete_flag"].ToString()),
  2776. CustomerOrgGroupId = customerOrgGroupId,
  2777. CustomerOrgId = customerOrgId,
  2778. CustomerOrgRegisterId = customerOrgRegisterId,
  2779. GuidePrintTimes = string.IsNullOrWhiteSpace(row["instruct_print_times"].ToString()) ? (short)0 : Convert.ToInt16(row["instruct_print_times"].ToString()),
  2780. InterposeMeasure = null,
  2781. IsAudit = string.IsNullOrWhiteSpace(row["audit_flag"].ToString()) ? 'N' : Convert.ToChar(row["audit_flag"].ToString()),
  2782. IsLock = string.IsNullOrWhiteSpace(row["lock_flag"].ToString()) ? 'N' : Convert.ToChar(row["lock_flag"].ToString()),
  2783. IsMedicalStart = string.IsNullOrWhiteSpace(row["medical_start_flag"].ToString()) ? 'N' : Convert.ToChar(row["medical_start_flag"].ToString()),
  2784. IsNameHide = string.IsNullOrWhiteSpace(row["name_encrypt_flag"].ToString()) ? 'N' : Convert.ToChar(row["name_encrypt_flag"].ToString()),
  2785. IsPhoneFollow = 'N',
  2786. IsRecoverGuide = string.IsNullOrWhiteSpace(row["recover_form_flag"].ToString()) ? 'N' : Convert.ToChar(row["recover_form_flag"].ToString()),
  2787. IsUpload = string.IsNullOrWhiteSpace(row["upload_flag"].ToString()) ? 'N' : Convert.ToChar(row["upload_flag"].ToString()),
  2788. IsVip = string.IsNullOrWhiteSpace(row["vip_flag"].ToString()) ? 'N' : Convert.ToChar(row["vip_flag"].ToString()),
  2789. JobCardNo = row["job_card_no"].ToString(),
  2790. JobPost = row["job_post"].ToString(),
  2791. JobTitle = row["job_title"].ToString(),
  2792. MedicalCardNo = row["medical_card_no"].ToString(),
  2793. MedicalConclusionId = medicalConclusionId,
  2794. MedicalPackageId = medicalPackageId,
  2795. MedicalStartDate = string.IsNullOrEmpty(row["medical_start_date"].ToString()) ? null : Convert.ToDateTime(row["medical_start_date"].ToString()),
  2796. MedicalTimes = Convert.ToInt16(row["medical_times"].ToString()),
  2797. MedicalTypeId = medicalTypeId,
  2798. PatientId = patientId,
  2799. PatientName = row["name"].ToString(),
  2800. PatientRegisterNo = _patientRegisterManager.CreatePrePatientRegisterNo().Result,
  2801. PersonnelTypeId = personnelTypeId,
  2802. Photo = photo,
  2803. Remark = row["remark"].ToString(),
  2804. ReportPrintTimes = Convert.ToInt16(row["report_print_times"].ToString()),
  2805. Salesman = row["salesman"].ToString(),
  2806. SexHormoneTermId = null,
  2807. SummaryDate = string.IsNullOrEmpty(row["summary_date"].ToString()) ? null : Convert.ToDateTime(row["summary_date"].ToString()),
  2808. SummaryDoctorId = summaryDoctorId,
  2809. ThirdInfo = row["third_info"].ToString(),
  2810. };
  2811. await _patientRegisterRepository.InsertAsync(data, true);
  2812. #region 人员登记扩展
  2813. var patientRegisterExterData = new PatientRegisterExter
  2814. {
  2815. IsQztlImport = Convert.ToChar(row["is_qztl_import"].ToString()),
  2816. PatientRegisterId = patientRegisterId,
  2817. Planuserid = row["planuserid"].ToString(),
  2818. QztlIsCw = Convert.ToChar(row["qztl_is_cw"].ToString()),
  2819. QztlIsCy = Convert.ToChar(row["qztl_is_cy"].ToString()),
  2820. QztlIsFj = Convert.ToChar(row["qztl_is_fj"].ToString()),
  2821. QztlIsGt = Convert.ToChar(row["qztl_is_gt"].ToString()),
  2822. QztlIsMain = Convert.ToChar(row["qztl_is_main"].ToString()),
  2823. QztlIsWh = Convert.ToChar(row["qztl_is_wh"].ToString()),
  2824. QztlType = string.IsNullOrEmpty(row["qztl_type"].ToString()) ? null : Convert.ToChar(row["qztl_type"].ToString()),
  2825. Remark2 = row["remark2"].ToString(),
  2826. Remark3 = row["remark3"].ToString(),
  2827. Remark4 = row["remark4"].ToString(),
  2828. UploadQztlFlag = Convert.ToChar(row["upload_qztl_flag"].ToString())
  2829. };
  2830. await _patientRegisterExterRepository.InsertAsync(patientRegisterExterData);
  2831. #endregion
  2832. var oldRegisterAsbitemList = await Db.Ado.GetDataTableAsync($"select * from register_asbitem where patient_register_id='{row["patient_register_id"].ToString()}'");
  2833. if (oldRegisterAsbitemList.Rows.Count > 0)
  2834. {
  2835. foreach (DataRow rowAsbitem in oldRegisterAsbitemList.Rows)
  2836. {
  2837. #region 转换审核医生ID
  2838. Guid? auditorUserId = null;
  2839. if (!string.IsNullOrWhiteSpace(rowAsbitem["audit_doctor"].ToString()))
  2840. {
  2841. var userEnt = userList.Where(m => m.UserName == rowAsbitem["audit_doctor"].ToString().Trim()).FirstOrDefault();
  2842. if (userEnt != null)
  2843. {
  2844. auditorUserId = userEnt.Id;
  2845. }
  2846. }
  2847. #endregion
  2848. #region 转换检查医生ID
  2849. string checkDoctorId = null;
  2850. if (!string.IsNullOrWhiteSpace(rowAsbitem["check_doctor"].ToString()))
  2851. {
  2852. var userEnt = userList.Where(m => m.UserName == rowAsbitem["check_doctor"].ToString().Trim()).FirstOrDefault();
  2853. if (userEnt != null)
  2854. {
  2855. checkDoctorId = userEnt.Id.ToString();
  2856. }
  2857. else
  2858. {
  2859. checkDoctorId = rowAsbitem["check_doctor"].ToString().Trim();
  2860. }
  2861. }
  2862. #endregion
  2863. #region 转换组合项目ID
  2864. Guid newAsbitemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
  2865. .Where(m => m.TableName == "asbitem" && m.OldKeyValue == rowAsbitem["asbitem_id"].ToString()).FirstOrDefault().NewKeyValue);
  2866. #endregion
  2867. #region 插入register_check
  2868. Guid registerCheckId = GuidGenerator.Create();
  2869. var dataRegisterCheck = new RegisterCheck(registerCheckId)
  2870. {
  2871. AuditorUserId = auditorUserId,
  2872. AuditTime = string.IsNullOrEmpty(rowAsbitem["audit_date"].ToString()) ? null : Convert.ToDateTime(rowAsbitem["audit_date"].ToString()),
  2873. CheckDate = string.IsNullOrEmpty(rowAsbitem["check_date"].ToString()) ? null : Convert.ToDateTime(rowAsbitem["check_date"].ToString()),
  2874. CheckDoctorId = checkDoctorId,
  2875. CheckRequestNo = "",
  2876. CheckRequestPrintTimes = (short)1,
  2877. CompleteFlag = Convert.ToChar(rowAsbitem["complete_flag"].ToString()),
  2878. CriticalValue = null,
  2879. CriticalValueCreateDate = null,
  2880. CriticalValueFlag = null,
  2881. CriticalValueProcessContent = null,
  2882. CriticalValueProcessDate = null,
  2883. CriticalValueProcessDoctor = null,
  2884. CriticalValueProcessFlag = null,
  2885. IsAudit = string.IsNullOrEmpty(rowAsbitem["audit_flag"].ToString()) ? 'N' : Convert.ToChar(rowAsbitem["audit_flag"].ToString()),
  2886. IsLock = string.IsNullOrEmpty(rowAsbitem["lock_flag"].ToString()) ? 'N' : Convert.ToChar(rowAsbitem["lock_flag"].ToString()),
  2887. PatientRegisterId = patientRegisterId,
  2888. ThirdInfo = rowAsbitem["third_info"].ToString()
  2889. };
  2890. await _registerCheckRepository.InsertAsync(dataRegisterCheck, true);
  2891. #endregion
  2892. #region 插入register_check_asbitem
  2893. Guid registerCheckAsbitemId = GuidGenerator.Create();
  2894. var dataRegisterAsbitem = new RegisterCheckAsbitem(registerCheckAsbitemId)
  2895. {
  2896. Amount = 1,
  2897. IsCharge = Convert.ToChar(rowAsbitem["charge_flag"].ToString()),
  2898. AsbitemId = newAsbitemId,
  2899. ChargePrice = Convert.ToDecimal(rowAsbitem["price"].ToString()),
  2900. GroupPackageId = null,
  2901. LisRequestId = null,
  2902. PatientRegisterId = patientRegisterId,
  2903. PayTypeFlag = Convert.ToChar(rowAsbitem["payment_mode"].ToString()),
  2904. RegisterCheckId = registerCheckId,
  2905. StandardPrice = Convert.ToDecimal(rowAsbitem["standard_price"].ToString())
  2906. };
  2907. await _registerCheckAsbitemRepository.InsertAsync(dataRegisterAsbitem);
  2908. #endregion
  2909. #region 插入医生小结
  2910. var oldSummary = rowAsbitem["summary"].ToString();
  2911. if (!string.IsNullOrWhiteSpace(oldSummary))
  2912. {
  2913. var dataRegisterCheckSummary = new RegisterCheckSummary
  2914. {
  2915. RegisterCheckId = registerCheckId,
  2916. DisplayOrder = 1,
  2917. Summary = oldSummary,
  2918. SummaryFlag = '0'
  2919. };
  2920. await _registerCheckSummaryRepository.InsertAsync(dataRegisterCheckSummary);
  2921. }
  2922. #endregion
  2923. #region 插入明细项目
  2924. var oldRegisterCheckItemList = await Db.Ado.GetDataTableAsync($"select * from register_item where patient_register_id='{row["patient_register_id"].ToString()}' and asbitem_id='{rowAsbitem["asbitem_id"].ToString()}'");
  2925. if (oldRegisterCheckItemList.Rows.Count > 0)
  2926. {
  2927. foreach (DataRow rowRegisterCheckItem in oldRegisterCheckItemList.Rows)
  2928. {
  2929. #region 转换项目ID 老转新
  2930. Guid newItemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
  2931. .Where(m => m.TableName == "item" && m.OldKeyValue == rowRegisterCheckItem["item_id"].ToString()).FirstOrDefault().NewKeyValue);
  2932. #endregion
  2933. var dataRegisterCheckItem = new RegisterCheckItem
  2934. {
  2935. CheckDate = string.IsNullOrEmpty(rowRegisterCheckItem["check_date"].ToString()) ? null : Convert.ToDateTime(rowRegisterCheckItem["check_date"].ToString()),
  2936. CriticalValue = null,
  2937. CheckDoctorName = rowRegisterCheckItem["check_doctor"].ToString().Trim(),
  2938. CriticalRangeValue = null,
  2939. ItemId = newItemId,
  2940. ReferenceRangeValue = rowRegisterCheckItem["reference_range_value"].ToString(),
  2941. RegisterCheckId = registerCheckId,
  2942. Result = rowRegisterCheckItem["result"].ToString(),
  2943. ResultStatusId = _registerCheckItemManager.GetResultStatusId(rowRegisterCheckItem["result"].ToString(), rowRegisterCheckItem["reference_range_value"].ToString()),
  2944. Unit = rowRegisterCheckItem["Unit"].ToString()
  2945. };
  2946. await _registerCheckItemRepository.InsertAsync(dataRegisterCheckItem);
  2947. }
  2948. }
  2949. #endregion
  2950. }
  2951. }
  2952. var fieldComparison = new FieldComparison
  2953. {
  2954. FieldName = "id",
  2955. NewKeyValue = patientRegisterId.ToString(),
  2956. OldKeyValue = row["patient_register_id"].ToString(),
  2957. TableName = "patient_register"
  2958. };
  2959. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  2960. await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{row["patient_register_id"].ToString()}',addtime=getdate(),handlecount+=1 where tablename='patient_register_qztl' ");
  2961. await uow.CompleteAsync();
  2962. #region 修改创建者日期跟id
  2963. Guid registerDoctorId = Guid.Parse("3a11fe49-5719-0e9e-dd44-0c4aff0900b0");
  2964. var registerDoctorEnt = userList.Where(m => m.UserName == row["register_doctor"].ToString().Trim()).FirstOrDefault();
  2965. if (registerDoctorEnt != null)
  2966. {
  2967. registerDoctorId = registerDoctorEnt.Id;
  2968. }
  2969. string sql_update = $"update patient_register set creator_id='{registerDoctorId}',creation_time='{Convert.ToDateTime(row["register_date"]).ToString("yyyy-MM-dd HH:mm:ss")}'";
  2970. sql_update += $" where id='{patientRegisterId}' ";
  2971. await PgNWDb.Ado.ExecuteCommandAsync(sql_update);
  2972. #endregion
  2973. }
  2974. }
  2975. else
  2976. {
  2977. planuserids.Add(row["planuserid"].ToString());
  2978. }
  2979. }
  2980. _logger.LogInformation($"青藏公司剩余数据查询{oldPatientRegisterList.Rows.Count}条");
  2981. _logger.LogInformation($"青藏公司剩余数据跳过{planuserids.Count}条");
  2982. _logger.LogInformation($"青藏公司剩余数据导入{oldPatientRegisterList.Rows.Count - planuserids.Count}条");
  2983. // await TransferPatientRegisterWithAsbitemData();
  2984. }
  2985. else
  2986. {
  2987. _logger.LogInformation("青藏公司剩余数据已处理完");
  2988. }
  2989. }
  2990. #endregion
  2991. #region 人员登记
  2992. /// <summary>
  2993. /// 迁移人员登记数据
  2994. /// </summary>
  2995. /// <returns></returns>
  2996. public async Task TransferPatientRegisterData()
  2997. {
  2998. string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register' ");
  2999. var oldPatientRegisterList = await Db.Ado.GetDataTableAsync($"select top 1000 * from patient_register where patient_register_id>'{nextKeyValue}' order by patient_register_id asc");
  3000. if (oldPatientRegisterList.Rows.Count > 0)
  3001. {
  3002. await Db.Ado.ExecuteCommandAsync($"update tb_export_key set starttime=getdate() where tablename='patient_register' ");
  3003. List<FieldComparison> fieldComparisonList = await _fieldComparisonRepository.GetListAsync();
  3004. var userList = await _identityUserRepository.GetListAsync();
  3005. List<CustomerOrgRegister> customerOrgRegisterList = await _customerOrgRegisterRepository.GetListAsync();
  3006. foreach (DataRow row in oldPatientRegisterList.Rows)
  3007. {
  3008. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  3009. {
  3010. //档案ID
  3011. Guid patientId = Guid.Empty;
  3012. #region 处理档案,未找到档案就生成
  3013. var patientEnt = await _patientRepository.FirstOrDefaultAsync(m => m.PatientNo == row["patient_id"].ToString());
  3014. if (patientEnt == null)
  3015. {
  3016. string nationId = null;
  3017. if (!string.IsNullOrWhiteSpace(row["nation_id"].ToString()))
  3018. {
  3019. nationId = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "nation" && m.OldKeyValue == row["nation_id"].ToString()).FirstOrDefault().NewKeyValue;
  3020. }
  3021. Guid autoPatientId = GuidGenerator.Create(); //档案ID
  3022. var dataPatient = new Patient(autoPatientId)
  3023. {
  3024. Address = row["address"].ToString(),
  3025. BirthDate = string.IsNullOrEmpty(row["birth_date"].ToString()) ? null : Convert.ToDateTime(row["birth_date"].ToString()),
  3026. BirthPlaceId = null,
  3027. DisplayName = row["name"].ToString(),
  3028. Email = row["email"].ToString(),
  3029. IdNo = row["id_card_no"].ToString(),
  3030. MaritalStatusId = row["marital_status_id"].ToString() == "2" ? '4' : Convert.ToChar(row["marital_status_id"].ToString()),
  3031. MedicalCenterId = defaultMedicalCenterId,
  3032. MobileTelephone = row["mobile_telephone"].ToString(),
  3033. NationId = nationId,
  3034. PatientNo = row["patient_id"].ToString(),
  3035. PatientPassword = row["patient_password"].ToString(),
  3036. PostalCode = row["postalcode"].ToString(),
  3037. SexId = ConvertSex(row["sex_id"].ToString()),
  3038. SimpleCode = LanguageConverter.GetPYSimpleCode(row["name"].ToString()),
  3039. Telephone = row["telephone"].ToString()
  3040. };
  3041. await _patientRepository.InsertAsync(dataPatient, true);
  3042. patientId = autoPatientId;
  3043. }
  3044. else
  3045. {
  3046. patientId = patientEnt.Id;
  3047. }
  3048. #endregion
  3049. Guid patientRegisterId = GuidGenerator.Create(); //生成登记ID
  3050. #region 转换审核医生ID
  3051. Guid? AuditDoctorId = null;
  3052. if (!string.IsNullOrWhiteSpace(row["audit_doctor"].ToString()))
  3053. {
  3054. var userEnt = userList.Where(m => m.UserName == row["audit_doctor"].ToString().Trim()).FirstOrDefault();
  3055. if (userEnt != null)
  3056. {
  3057. AuditDoctorId = userEnt.Id;
  3058. }
  3059. }
  3060. #endregion
  3061. #region 转换单位分组ID
  3062. Guid? customerOrgGroupId = null;
  3063. if (!string.IsNullOrWhiteSpace(row["org_group_id"].ToString()))
  3064. {
  3065. var customerOrgGroupEnt = fieldComparisonList.Where(m => m.TableName == "customer_org_group" && m.OldKeyValue == row["org_group_id"].ToString()).FirstOrDefault();
  3066. if (customerOrgGroupEnt != null)
  3067. {
  3068. customerOrgGroupId = Guid.Parse(customerOrgGroupEnt.NewKeyValue);
  3069. }
  3070. }
  3071. #endregion
  3072. #region 转换单位ID 部门
  3073. Guid customerOrgId = Guid.Parse(fieldComparisonList.Where(m => m.TableName == "customer_org" && m.OldKeyValue == row["org_id"].ToString()).FirstOrDefault().NewKeyValue);
  3074. #endregion
  3075. #region 转换单位体检次数ID 没有增加默认值
  3076. Guid customerOrgRegisterId = GuidFlag.PersonCustomerOrgRegisterId;
  3077. if (row["org_id"].ToString() != "00000")
  3078. {
  3079. Guid topCustomerOrgId = Guid.Parse(fieldComparisonList.Where(m => m.TableName == "customer_org" && m.OldKeyValue == row["org_id"].ToString().Substring(0, 5)).FirstOrDefault().NewKeyValue);
  3080. var customerOrgRegisterEnt = customerOrgRegisterList.Where(m => m.CustomerOrgId == topCustomerOrgId
  3081. && m.MedicalTimes == (short)Convert.ToInt32(row["org_medical_times"].ToString())).FirstOrDefault();
  3082. if (customerOrgRegisterEnt != null)
  3083. {
  3084. customerOrgRegisterId = customerOrgRegisterEnt.Id;
  3085. }
  3086. }
  3087. #endregion
  3088. #region 转换体检结论ID
  3089. Guid? medicalConclusionId = null;
  3090. if (!string.IsNullOrWhiteSpace(row["medical_conclusion_id"].ToString()))
  3091. {
  3092. var medicalConclusionEnt = fieldComparisonList.Where(m => m.TableName == "medical_conclusion"
  3093. && m.OldKeyValue == row["medical_conclusion_id"].ToString()).FirstOrDefault();
  3094. if (medicalConclusionEnt != null)
  3095. {
  3096. medicalConclusionId = Guid.Parse(medicalConclusionEnt.NewKeyValue);
  3097. }
  3098. }
  3099. #endregion
  3100. #region 转换套餐ID
  3101. Guid? medicalPackageId = null;
  3102. if (!string.IsNullOrWhiteSpace(row["medical_package_id"].ToString()))
  3103. {
  3104. var medicalPackageEnt = fieldComparisonList.Where(m => m.TableName == "medical_package" && m.OldKeyValue == row["medical_package_id"].ToString()).FirstOrDefault();
  3105. if (medicalPackageEnt != null)
  3106. {
  3107. medicalPackageId = Guid.Parse(medicalPackageEnt.NewKeyValue);
  3108. }
  3109. }
  3110. #endregion
  3111. #region 转换体检类别ID
  3112. Guid? medicalTypeId = null;
  3113. if (!string.IsNullOrWhiteSpace(row["medical_type_id"].ToString()))
  3114. {
  3115. var medicalTypeEnt = fieldComparisonList.Where(m => m.TableName == "medical_type" && m.OldKeyValue == row["medical_type_id"].ToString()).FirstOrDefault();
  3116. if (medicalTypeEnt != null)
  3117. {
  3118. medicalTypeId = Guid.Parse(medicalTypeEnt.NewKeyValue);
  3119. }
  3120. }
  3121. #endregion
  3122. #region 转换人员类别ID
  3123. Guid? personnelTypeId = null;
  3124. if (!string.IsNullOrWhiteSpace(row["personnel_type_id"].ToString()))
  3125. {
  3126. var personnelTypeEnt = fieldComparisonList.Where(m => m.TableName == "personnel_type" && m.OldKeyValue == row["personnel_type_id"].ToString()).FirstOrDefault();
  3127. if (personnelTypeEnt != null)
  3128. {
  3129. personnelTypeId = Guid.Parse(personnelTypeEnt.NewKeyValue);
  3130. }
  3131. }
  3132. #endregion
  3133. #region 转换总检医生ID
  3134. Guid? summaryDoctorId = null;
  3135. if (!string.IsNullOrWhiteSpace(row["summary_doctor"].ToString()))
  3136. {
  3137. var userEnt = userList.Where(m => m.UserName == row["summary_doctor"].ToString().Trim()).FirstOrDefault();
  3138. if (userEnt != null)
  3139. {
  3140. summaryDoctorId = userEnt.Id;
  3141. }
  3142. }
  3143. #endregion
  3144. #region 上传图片,获取地址
  3145. string photo = "";
  3146. if (!string.IsNullOrEmpty(row["photograph"].ToString()))
  3147. {
  3148. photo = UpLoadImg(patientRegisterId, Convert.ToDateTime(row["register_date"].ToString()), (byte[])row["photograph"]);
  3149. }
  3150. #endregion
  3151. var data = new PatientRegister(patientRegisterId)
  3152. {
  3153. BirthDate = string.IsNullOrEmpty(row["birth_date"].ToString()) ? null : Convert.ToDateTime(row["birth_date"].ToString()),
  3154. MaritalStatusId = row["marital_status_id"].ToString() == "2" ? '4' : Convert.ToChar(row["marital_status_id"].ToString()),
  3155. MedicalCenterId = defaultMedicalCenterId,
  3156. SexId = ConvertSex(row["sex_id"].ToString()),
  3157. Age = string.IsNullOrWhiteSpace(row["age"].ToString()) ? null : Convert.ToInt16(row["age"].ToString()),
  3158. AuditDate = string.IsNullOrWhiteSpace(row["audit_date"].ToString()) ? null : Convert.ToDateTime(row["audit_date"].ToString()),
  3159. AuditDoctorId = AuditDoctorId,
  3160. CompleteFlag = Convert.ToChar(row["complete_flag"].ToString()),
  3161. CustomerOrgGroupId = customerOrgGroupId,
  3162. CustomerOrgId = customerOrgId,
  3163. CustomerOrgRegisterId = customerOrgRegisterId,
  3164. GuidePrintTimes = string.IsNullOrWhiteSpace(row["instruct_print_times"].ToString()) ? (short)0 : Convert.ToInt16(row["instruct_print_times"].ToString()),
  3165. InterposeMeasure = null,
  3166. IsAudit = string.IsNullOrWhiteSpace(row["audit_flag"].ToString()) ? 'N' : Convert.ToChar(row["audit_flag"].ToString()),
  3167. IsLock = string.IsNullOrWhiteSpace(row["lock_flag"].ToString()) ? 'N' : Convert.ToChar(row["lock_flag"].ToString()),
  3168. IsMedicalStart = string.IsNullOrWhiteSpace(row["medical_start_flag"].ToString()) ? 'N' : Convert.ToChar(row["medical_start_flag"].ToString()),
  3169. IsNameHide = string.IsNullOrWhiteSpace(row["name_encrypt_flag"].ToString()) ? 'N' : Convert.ToChar(row["name_encrypt_flag"].ToString()),
  3170. IsPhoneFollow = 'N',
  3171. IsRecoverGuide = string.IsNullOrWhiteSpace(row["recover_form_flag"].ToString()) ? 'N' : Convert.ToChar(row["recover_form_flag"].ToString()),
  3172. IsUpload = string.IsNullOrWhiteSpace(row["upload_flag"].ToString()) ? 'N' : Convert.ToChar(row["upload_flag"].ToString()),
  3173. IsVip = string.IsNullOrWhiteSpace(row["vip_flag"].ToString()) ? 'N' : Convert.ToChar(row["vip_flag"].ToString()),
  3174. JobCardNo = row["job_card_no"].ToString(),
  3175. JobPost = row["job_post"].ToString(),
  3176. JobTitle = row["job_title"].ToString(),
  3177. MedicalCardNo = row["medical_card_no"].ToString(),
  3178. MedicalConclusionId = medicalConclusionId,
  3179. MedicalPackageId = medicalPackageId,
  3180. MedicalStartDate = string.IsNullOrEmpty(row["medical_start_date"].ToString()) ? null : Convert.ToDateTime(row["medical_start_date"].ToString()),
  3181. MedicalTimes = Convert.ToInt16(row["medical_times"].ToString()),
  3182. MedicalTypeId = medicalTypeId,
  3183. PatientId = patientId,
  3184. PatientName = row["name"].ToString(),
  3185. PatientRegisterNo = row["barcode_no"].ToString(),
  3186. PersonnelTypeId = personnelTypeId,
  3187. Photo = photo,
  3188. Remark = row["remark"].ToString(),
  3189. ReportPrintTimes = Convert.ToInt16(row["report_print_times"].ToString()),
  3190. Salesman = row["salesman"].ToString(),
  3191. SexHormoneTermId = null,
  3192. SummaryDate = string.IsNullOrEmpty(row["summary_date"].ToString()) ? null : Convert.ToDateTime(row["summary_date"].ToString()),
  3193. SummaryDoctorId = summaryDoctorId,
  3194. ThirdInfo = row["third_info"].ToString(),
  3195. };
  3196. await _patientRegisterRepository.InsertAsync(data);
  3197. #region 人员登记扩展
  3198. var patientRegisterExterData = new PatientRegisterExter
  3199. {
  3200. IsQztlImport = Convert.ToChar(row["is_qztl_import"].ToString()),
  3201. PatientRegisterId = patientRegisterId,
  3202. Planuserid = row["planuserid"].ToString(),
  3203. QztlIsCw = Convert.ToChar(row["qztl_is_cw"].ToString()),
  3204. QztlIsCy = Convert.ToChar(row["qztl_is_cy"].ToString()),
  3205. QztlIsFj = Convert.ToChar(row["qztl_is_fj"].ToString()),
  3206. QztlIsGt = Convert.ToChar(row["qztl_is_gt"].ToString()),
  3207. QztlIsMain = Convert.ToChar(row["qztl_is_main"].ToString()),
  3208. QztlIsWh = Convert.ToChar(row["qztl_is_wh"].ToString()),
  3209. QztlType = string.IsNullOrEmpty(row["qztl_type"].ToString()) ? null : Convert.ToChar(row["qztl_type"].ToString()),
  3210. Remark2 = row["remark2"].ToString(),
  3211. Remark3 = row["remark3"].ToString(),
  3212. Remark4 = row["remark4"].ToString(),
  3213. UploadQztlFlag = Convert.ToChar(row["upload_qztl_flag"].ToString())
  3214. };
  3215. await _patientRegisterExterRepository.InsertAsync(patientRegisterExterData);
  3216. #endregion
  3217. var fieldComparison = new FieldComparison
  3218. {
  3219. FieldName = "id",
  3220. NewKeyValue = patientRegisterId.ToString(),
  3221. OldKeyValue = row["patient_register_id"].ToString(),
  3222. TableName = "patient_register"
  3223. };
  3224. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  3225. await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{row["patient_register_id"].ToString()}',addtime=getdate(),handlecount+=1 where tablename='patient_register' ");
  3226. await uow.CompleteAsync();
  3227. }
  3228. }
  3229. _logger.LogInformation($"人员数据处理{oldPatientRegisterList.Rows.Count}条");
  3230. await TransferPatientRegisterData();
  3231. }
  3232. else
  3233. {
  3234. _logger.LogInformation("人员数据已处理完");
  3235. }
  3236. }
  3237. /// <summary>
  3238. /// 迁移检查单 组合项目 查询register_asbitem
  3239. /// </summary>
  3240. /// <returns></returns>
  3241. public async Task TransferRegisterCheckData()
  3242. {
  3243. //记录patient_register Id
  3244. string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='register_check'");
  3245. var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id)
  3246. .Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(1000).ToList();
  3247. if (patientRegisterList.Any())
  3248. {
  3249. var userList = await _identityUserRepository.GetListAsync();
  3250. foreach (var item in patientRegisterList)
  3251. {
  3252. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  3253. {
  3254. List<RegisterCheck> registerCheckInsert = new List<RegisterCheck>();
  3255. List<RegisterCheckAsbitem> registerCheckAsbitemInsert = new List<RegisterCheckAsbitem>();
  3256. #region 转换成老系统ID
  3257. string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
  3258. .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.Id.ToString()).FirstOrDefault().OldKeyValue;
  3259. #endregion
  3260. var oldRegisterAsbitemList = await Db.Ado.GetDataTableAsync($"select * from register_asbitem where patient_register_id='{oldPatientRegisterId}'");
  3261. if (oldRegisterAsbitemList.Rows.Count > 0)
  3262. {
  3263. foreach (DataRow row in oldRegisterAsbitemList.Rows)
  3264. {
  3265. #region 转换审核医生ID
  3266. Guid? auditorUserId = null;
  3267. if (!string.IsNullOrWhiteSpace(row["audit_doctor"].ToString()))
  3268. {
  3269. var userEnt = userList.Where(m => m.UserName == row["audit_doctor"].ToString().Trim()).FirstOrDefault();
  3270. if (userEnt != null)
  3271. {
  3272. auditorUserId = userEnt.Id;
  3273. }
  3274. }
  3275. #endregion
  3276. #region 转换检查医生ID
  3277. string checkDoctorId = null;
  3278. if (!string.IsNullOrWhiteSpace(row["check_doctor"].ToString()))
  3279. {
  3280. var userEnt = userList.Where(m => m.UserName == row["check_doctor"].ToString().Trim()).FirstOrDefault();
  3281. if (userEnt != null)
  3282. {
  3283. checkDoctorId = userEnt.Id.ToString();
  3284. }
  3285. else
  3286. {
  3287. checkDoctorId = row["check_doctor"].ToString().Trim();
  3288. }
  3289. }
  3290. #endregion
  3291. Guid registerCheckId = GuidGenerator.Create();
  3292. var data = new RegisterCheck(registerCheckId)
  3293. {
  3294. AuditorUserId = auditorUserId,
  3295. AuditTime = string.IsNullOrEmpty(row["audit_date"].ToString()) ? null : Convert.ToDateTime(row["audit_date"].ToString()),
  3296. CheckDate = string.IsNullOrEmpty(row["check_date"].ToString()) ? null : Convert.ToDateTime(row["check_date"].ToString()),
  3297. CheckDoctorId = checkDoctorId,
  3298. CheckRequestNo = "",
  3299. CheckRequestPrintTimes = (short)1,
  3300. CompleteFlag = Convert.ToChar(row["complete_flag"].ToString()),
  3301. CriticalValue = null,
  3302. CriticalValueCreateDate = null,
  3303. CriticalValueFlag = null,
  3304. CriticalValueProcessContent = null,
  3305. CriticalValueProcessDate = null,
  3306. CriticalValueProcessDoctor = null,
  3307. CriticalValueProcessFlag = null,
  3308. IsAudit = string.IsNullOrEmpty(row["audit_flag"].ToString()) ? 'N' : Convert.ToChar(row["audit_flag"].ToString()),
  3309. IsLock = string.IsNullOrEmpty(row["lock_flag"].ToString()) ? 'N' : Convert.ToChar(row["lock_flag"].ToString()),
  3310. PatientRegisterId = item.Id,
  3311. ThirdInfo = row["third_info"].ToString()
  3312. };
  3313. registerCheckInsert.Add(data);
  3314. Guid registerCheckAsbitemId = GuidGenerator.Create();
  3315. #region 转换组合项目ID
  3316. Guid newAsbitemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
  3317. .Where(m => m.TableName == "asbitem" && m.OldKeyValue == row["asbitem_id"].ToString()).FirstOrDefault().NewKeyValue);
  3318. #endregion
  3319. var dataRegisterAsbitem = new RegisterCheckAsbitem(registerCheckAsbitemId)
  3320. {
  3321. Amount = 1,
  3322. IsCharge = Convert.ToChar(row["charge_flag"].ToString()),
  3323. AsbitemId = newAsbitemId,
  3324. ChargePrice = Convert.ToDecimal(row["price"].ToString()),
  3325. GroupPackageId = null,
  3326. LisRequestId = null,
  3327. PatientRegisterId = item.Id,
  3328. PayTypeFlag = Convert.ToChar(row["payment_mode"].ToString()),
  3329. RegisterCheckId = registerCheckId,
  3330. StandardPrice = Convert.ToDecimal(row["standard_price"].ToString())
  3331. };
  3332. registerCheckAsbitemInsert.Add(dataRegisterAsbitem);
  3333. }
  3334. }
  3335. if (registerCheckInsert.Any())
  3336. await _registerCheckRepository.InsertManyAsync(registerCheckInsert);
  3337. if (registerCheckAsbitemInsert.Any())
  3338. await _registerCheckAsbitemRepository.InsertManyAsync(registerCheckAsbitemInsert);
  3339. await uow.CompleteAsync();
  3340. await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='register_check' ");
  3341. }
  3342. }
  3343. await TransferRegisterCheckData();
  3344. }
  3345. else
  3346. {
  3347. _logger.LogInformation("检查单、登记组合项目已处理完");
  3348. }
  3349. }
  3350. /// <summary>
  3351. /// 迁移明细项目 查询register_item
  3352. /// </summary>
  3353. /// <returns></returns>
  3354. public async Task TransferRegisterCheckItemData()
  3355. {
  3356. //记录register_check_asbitem Id
  3357. string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='register_check_item'");
  3358. var registerCheckAsbitemList = (await _registerCheckAsbitemRepository.GetQueryableAsync()).OrderBy(o => o.Id)
  3359. .Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(1000).ToList();
  3360. if (registerCheckAsbitemList.Any())
  3361. {
  3362. foreach (var item in registerCheckAsbitemList)
  3363. {
  3364. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  3365. {
  3366. List<RegisterCheckItem> registerCheckItemInsert = new List<RegisterCheckItem>();
  3367. #region 转换成老系统PatientRegisterId
  3368. string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
  3369. .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.PatientRegisterId.ToString()).FirstOrDefault().OldKeyValue;
  3370. #endregion
  3371. #region 转换成老系统AsbitemId
  3372. string oldAsbitemId = (await _fieldComparisonRepository.GetQueryableAsync())
  3373. .Where(m => m.TableName == "asbitem" && m.NewKeyValue == item.AsbitemId.ToString()).FirstOrDefault().OldKeyValue;
  3374. #endregion
  3375. var oldRegisterCheckItemList = await Db.Ado.GetDataTableAsync($"select * from register_item where patient_register_id='{oldPatientRegisterId}' and asbitem_id='{oldAsbitemId}'");
  3376. if (oldRegisterCheckItemList.Rows.Count > 0)
  3377. {
  3378. foreach (DataRow row in oldRegisterCheckItemList.Rows)
  3379. {
  3380. #region 转换项目ID 老转新
  3381. Guid newItemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
  3382. .Where(m => m.TableName == "item" && m.OldKeyValue == row["item_id"].ToString()).FirstOrDefault().NewKeyValue);
  3383. #endregion
  3384. var data = new RegisterCheckItem
  3385. {
  3386. CheckDate = string.IsNullOrEmpty(row["check_date"].ToString()) ? null : Convert.ToDateTime(row["check_date"].ToString()),
  3387. CriticalValue = null,
  3388. CheckDoctorName = row["check_doctor"].ToString().Trim(),
  3389. CriticalRangeValue = null,
  3390. ItemId = newItemId,
  3391. ReferenceRangeValue = row["reference_range_value"].ToString(),
  3392. RegisterCheckId = item.RegisterCheckId,
  3393. Result = row["result"].ToString(),
  3394. ResultStatusId = _registerCheckItemManager.GetResultStatusId(row["result"].ToString(), row["reference_range_value"].ToString()),
  3395. Unit = row["Unit"].ToString()
  3396. };
  3397. registerCheckItemInsert.Add(data);
  3398. }
  3399. }
  3400. if (registerCheckItemInsert.Any())
  3401. await _registerCheckItemRepository.InsertManyAsync(registerCheckItemInsert);
  3402. await uow.CompleteAsync();
  3403. await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='register_check_item' ");
  3404. }
  3405. }
  3406. await TransferRegisterCheckItemData();
  3407. }
  3408. else
  3409. {
  3410. _logger.LogInformation("明细项目已处理完");
  3411. }
  3412. }
  3413. /// <summary>
  3414. /// 迁移医生小结 查询register_asbitem
  3415. /// </summary>
  3416. /// <returns></returns>
  3417. public async Task TransferRegisterCheckSummaryData()
  3418. {
  3419. //记录register_check id
  3420. string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='register_check_summary'");
  3421. var registerCheckAsbitemList = (from registerCheckQuery in await _registerCheckRepository.GetQueryableAsync()
  3422. join registerCheckAsbitemQuery in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheckQuery.Id equals registerCheckAsbitemQuery.RegisterCheckId
  3423. orderby registerCheckQuery.Id ascending
  3424. where string.Compare(registerCheckQuery.Id.ToString(), nextKeyValue) > 0
  3425. select new
  3426. {
  3427. PatientRegisterId = registerCheckQuery.PatientRegisterId,
  3428. RegisterCheckId = registerCheckQuery.Id,
  3429. AsbitemId = registerCheckAsbitemQuery.AsbitemId
  3430. }).ToList();
  3431. if (registerCheckAsbitemList.Any())
  3432. {
  3433. foreach (var item in registerCheckAsbitemList)
  3434. {
  3435. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  3436. {
  3437. #region 转换成老系统PatientRegisterId
  3438. string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
  3439. .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.PatientRegisterId.ToString()).FirstOrDefault().OldKeyValue;
  3440. #endregion
  3441. #region 转换成老系统AsbitemId
  3442. string oldAsbitemId = (await _fieldComparisonRepository.GetQueryableAsync())
  3443. .Where(m => m.TableName == "asbitem" && m.NewKeyValue == item.AsbitemId.ToString()).FirstOrDefault().OldKeyValue;
  3444. #endregion
  3445. var oldSummary = await Db.Ado.GetStringAsync($"select summary from register_asbitem where patient_register_id='{oldPatientRegisterId}' and asbitem_id='{oldAsbitemId}'");
  3446. if (!string.IsNullOrWhiteSpace(oldSummary))
  3447. {
  3448. var data = new RegisterCheckSummary
  3449. {
  3450. RegisterCheckId = item.RegisterCheckId,
  3451. DisplayOrder = 1,
  3452. Summary = oldSummary,
  3453. SummaryFlag = '0'
  3454. };
  3455. await _registerCheckSummaryRepository.InsertAsync(data);
  3456. await uow.CompleteAsync();
  3457. }
  3458. await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.RegisterCheckId}',addtime=getdate(),handlecount+=1 where tablename='register_check_summary' ");
  3459. }
  3460. }
  3461. await TransferRegisterCheckSummaryData();
  3462. }
  3463. else
  3464. {
  3465. _logger.LogInformation("医生小结已处理完");
  3466. }
  3467. }
  3468. /// <summary>
  3469. /// 迁移总检综述 查询patient_register
  3470. /// </summary>
  3471. /// <returns></returns>
  3472. public async Task TransferSumSummaryData()
  3473. {
  3474. string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='sum_summary'");
  3475. var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id)
  3476. .Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(1000).ToList();
  3477. if (patientRegisterList.Any())
  3478. {
  3479. foreach (var item in patientRegisterList)
  3480. {
  3481. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  3482. {
  3483. #region 转换成老系统PatientRegisterId
  3484. string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
  3485. .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.Id.ToString()).FirstOrDefault().OldKeyValue;
  3486. #endregion
  3487. var oldSummary = await Db.Ado.GetStringAsync($"select summary from patient_register where patient_register_id='{oldPatientRegisterId}' ");
  3488. if (!string.IsNullOrWhiteSpace(oldSummary))
  3489. {
  3490. Guid sumSummaryHeaderId = GuidGenerator.Create();
  3491. var dataSumSummaryHeader = new SumSummaryHeader(sumSummaryHeaderId)
  3492. {
  3493. DisplayOrder = 1,
  3494. SummaryFlag = '0',
  3495. PatientRegisterId = item.Id,
  3496. SummaryTitle = "."
  3497. };
  3498. await _sumSummaryHeaderRepository.InsertAsync(dataSumSummaryHeader);
  3499. Guid sumSummaryContentId = GuidGenerator.Create();
  3500. var dataSumSummaryContent = new SumSummaryContent(sumSummaryContentId)
  3501. {
  3502. DisplayOrder = 1,
  3503. SumSummaryHeaderId = sumSummaryHeaderId,
  3504. SummaryContent = oldSummary
  3505. };
  3506. await _sumSummaryContentRepository.InsertAsync(dataSumSummaryContent);
  3507. await uow.CompleteAsync();
  3508. }
  3509. await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='sum_summary' ");
  3510. }
  3511. }
  3512. await TransferSumSummaryData();
  3513. }
  3514. else
  3515. {
  3516. _logger.LogInformation("总检综述已处理完");
  3517. }
  3518. }
  3519. /// <summary>
  3520. /// 迁移总检建议 查询patient_register
  3521. /// </summary>
  3522. /// <returns></returns>
  3523. public async Task TransferSumSuggestionData()
  3524. {
  3525. string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='sum_suggestion'");
  3526. var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id)
  3527. .Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(1000).ToList();
  3528. if (patientRegisterList.Any())
  3529. {
  3530. foreach (var item in patientRegisterList)
  3531. {
  3532. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  3533. {
  3534. #region 转换成老系统PatientRegisterId
  3535. string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
  3536. .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.Id.ToString()).FirstOrDefault().OldKeyValue;
  3537. #endregion
  3538. var oldSuggestion = await Db.Ado.GetStringAsync($"select suggestion from patient_register where patient_register_id='{oldPatientRegisterId}' ");
  3539. if (!string.IsNullOrWhiteSpace(oldSuggestion))
  3540. {
  3541. Guid sumSuggestionHeaderId = GuidGenerator.Create();
  3542. var dataSumSuggestionHeader = new SumSuggestionHeader(sumSuggestionHeaderId)
  3543. {
  3544. DisplayOrder = 1,
  3545. SuggestionFlag = '0',
  3546. PatientRegisterId = item.Id,
  3547. SuggestionTitle = "."
  3548. };
  3549. await _sumSuggestionHeaderRepository.InsertAsync(dataSumSuggestionHeader);
  3550. Guid sumSuggestionContentId = GuidGenerator.Create();
  3551. var dataSumSuggestionContent = new SumSuggestionContent(sumSuggestionContentId)
  3552. {
  3553. DisplayOrder = 1,
  3554. SuggestionContent = oldSuggestion,
  3555. SuggestionType = SuggestionTypeFlag.HealthGuidance,
  3556. SumSuggestionHeaderId = sumSuggestionHeaderId
  3557. };
  3558. await _sumSuggestionContentRepository.InsertAsync(dataSumSuggestionContent);
  3559. await uow.CompleteAsync();
  3560. }
  3561. await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='sum_suggestion' ");
  3562. }
  3563. }
  3564. await TransferSumSuggestionData();
  3565. }
  3566. else
  3567. {
  3568. _logger.LogInformation("总检建议已处理完");
  3569. }
  3570. }
  3571. /// <summary>
  3572. /// 迁移总症诊断 查询summary_diagnosis
  3573. /// </summary>
  3574. /// <returns></returns>
  3575. public async Task TransferSumDiagnosisData()
  3576. {
  3577. string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='sum_diagnosis'");
  3578. var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id)
  3579. .Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(1000).ToList();
  3580. if (patientRegisterList.Any())
  3581. {
  3582. foreach (var item in patientRegisterList)
  3583. {
  3584. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  3585. {
  3586. #region 转换成老系统PatientRegisterId
  3587. string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
  3588. .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.Id.ToString()).FirstOrDefault().OldKeyValue;
  3589. #endregion
  3590. var oldSummaryDiagnosis = await Db.Ado.GetDataTableAsync($"select diagnosis_id from summary_diagnosis where patient_register_id='{oldPatientRegisterId}' order by display_order asc ");
  3591. if (oldSummaryDiagnosis.Rows.Count > 0)
  3592. {
  3593. //获取建议头
  3594. var sumSuggestionHeaderEnt = await _sumSuggestionHeaderRepository.FirstOrDefaultAsync(m => m.PatientRegisterId == item.Id);
  3595. if (sumSuggestionHeaderEnt != null)
  3596. {
  3597. List<SumDiagnosis> sumDiagnosisInsert = new List<SumDiagnosis>();
  3598. foreach (DataRow row in oldSummaryDiagnosis.Rows)
  3599. {
  3600. var diagnosisEnt = (await _fieldComparisonRepository.GetQueryableAsync())
  3601. .Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["diagnosis_id"].ToString()).FirstOrDefault();
  3602. if (diagnosisEnt != null)
  3603. {
  3604. var dataSumDiagnosis = new SumDiagnosis
  3605. {
  3606. DisplayOrder = oldSummaryDiagnosis.Rows.IndexOf(row) + 1,
  3607. PatientRegisterId = item.Id,
  3608. DiagnosisId = Guid.Parse(diagnosisEnt.NewKeyValue),
  3609. SumSuggestionHeaderId = sumSuggestionHeaderEnt.Id
  3610. };
  3611. sumDiagnosisInsert.Add(dataSumDiagnosis);
  3612. }
  3613. }
  3614. if (sumDiagnosisInsert.Any())
  3615. await _sumDiagnosisRepository.InsertManyAsync(sumDiagnosisInsert);
  3616. await uow.CompleteAsync();
  3617. }
  3618. }
  3619. await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='sum_diagnosis' ");
  3620. }
  3621. }
  3622. await TransferSumDiagnosisData();
  3623. }
  3624. else
  3625. {
  3626. _logger.LogInformation("总症诊断已处理完");
  3627. }
  3628. }
  3629. /// <summary>
  3630. /// 爆改人员登记创建日期跟创建者
  3631. /// </summary>
  3632. /// <returns></returns>
  3633. public async Task HandPatientRegisterDoctor()
  3634. {
  3635. string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='hand_patient_register'");
  3636. var oldPatientRegisterList = await Db.Ado.GetDataTableAsync($"select top 1000 patient_register_id,register_doctor,register_date from patient_register where patient_register_id>'{nextKeyValue}' order by patient_register_id asc ");
  3637. if (oldPatientRegisterList.Rows.Count > 0)
  3638. {
  3639. var userList = await _identityUserRepository.GetListAsync();
  3640. List<FieldComparison> fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "patient_register");
  3641. StringBuilder sb = new StringBuilder();
  3642. foreach (DataRow row in oldPatientRegisterList.Rows)
  3643. {
  3644. Guid patientRegisterId = Guid.Parse(fieldComparisonList.Where(m => m.OldKeyValue == row["patient_register_id"].ToString()).FirstOrDefault().NewKeyValue);
  3645. Guid registerDoctorId = Guid.Parse("3a11fe49-5719-0e9e-dd44-0c4aff0900b0");
  3646. var registerDoctorEnt = userList.Where(m => m.UserName == row["register_doctor"].ToString().Trim()).FirstOrDefault();
  3647. if (registerDoctorEnt != null)
  3648. {
  3649. registerDoctorId = registerDoctorEnt.Id;
  3650. }
  3651. string sql_update = $"update patient_register set creator_id='{registerDoctorId}',creation_time='{Convert.ToDateTime(row["register_date"]).ToString("yyyy-MM-dd HH:mm:ss")}'";
  3652. sql_update += $" where id='{patientRegisterId}' ";
  3653. await PgNWDb.Ado.ExecuteCommandAsync(sql_update);
  3654. await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{row["patient_register_id"].ToString()}',addtime=getdate(),handlecount+=1 where tablename='hand_patient_register' ");
  3655. }
  3656. await HandPatientRegisterDoctor();
  3657. }
  3658. else
  3659. {
  3660. _logger.LogInformation("爆改人员登记创建日期跟创建者已处理完");
  3661. }
  3662. }
  3663. #endregion
  3664. #region 暂时不用
  3665. ///// <summary>
  3666. ///// 处理人员体检次数
  3667. ///// </summary>
  3668. ///// <returns></returns>
  3669. //public async Task TransferPersonPhohoData(int handcount)
  3670. //{
  3671. // string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register_customer_org_register'");
  3672. // var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id)
  3673. // .Where(m => m.CustomerOrgRegisterId == GuidFlag.PersonCustomerOrgRegisterId && m.CustomerOrgId != GuidFlag.PersonCustomerOrgId
  3674. // && string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(handcount).ToList();
  3675. // if (patientRegisterList.Any())
  3676. // {
  3677. // List<CustomerOrgRegister> customerOrgRegisterList = await _customerOrgRegisterRepository.GetListAsync();
  3678. // foreach (var item in patientRegisterList)
  3679. // {
  3680. // using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  3681. // {
  3682. // #region 转换成老系统PatientRegisterId
  3683. // string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
  3684. // .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.Id.ToString()).FirstOrDefault().OldKeyValue;
  3685. // #endregion
  3686. // //老系统数据
  3687. // var oldPatientRegisterEnt = Db.Ado.GetDataTable($"select org_medical_times,org_id from patient_register where patient_register_id='{oldPatientRegisterId}'");
  3688. // string oldTopCustomerOrgId = oldPatientRegisterEnt.Rows[0][1].ToString().Substring(0, 5);
  3689. // //一级单位ID
  3690. // Guid customerOrgId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
  3691. // .Where(m => m.TableName == "customer_org" && m.OldKeyValue == oldTopCustomerOrgId).FirstOrDefault().NewKeyValue);
  3692. // short orgMedicalTimes = Convert.ToInt16(oldPatientRegisterEnt.Rows[0][0].ToString());
  3693. // #region 转换单位体检次数ID 没有增加默认值
  3694. // Guid customerOrgRegisterId = GuidFlag.PersonCustomerOrgRegisterId;
  3695. // var customerOrgRegisterEnt = customerOrgRegisterList.Where(m => m.CustomerOrgId == customerOrgId
  3696. // && m.MedicalTimes == orgMedicalTimes).FirstOrDefault();
  3697. // if (customerOrgRegisterEnt != null)
  3698. // {
  3699. // customerOrgRegisterId = customerOrgRegisterEnt.Id;
  3700. // item.CustomerOrgRegisterId = customerOrgRegisterId;
  3701. // await _patientRegisterRepository.UpdateAsync(item);
  3702. // }
  3703. // #endregion
  3704. // await uow.CompleteAsync();
  3705. // await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='patient_register_customer_org_register' ");
  3706. // }
  3707. // }
  3708. // }
  3709. //}
  3710. ///// <summary>
  3711. ///// 迁移档案数据
  3712. ///// </summary>
  3713. ///// <returns></returns>
  3714. //public async Task TransferPatientData()
  3715. //{
  3716. // List<Patient> dataList = new List<Patient>();
  3717. // var oldPatientList = await Db.Ado.GetDataTableAsync("select top 500 patient_id,nation_id,address," +
  3718. // "birth_date,name,email,id_card_no,marital_status_id,mobile_telephone,patient_password,postalcode,telephone,sex_id " +
  3719. // "from patient_register where is_hand is null order by patient_register_id asc");
  3720. // List<string> tempPatientNos = new List<string>();
  3721. // if (oldPatientList.Rows.Count > 0)
  3722. // {
  3723. // List<FieldComparison> fieldComparisons = new List<FieldComparison>();
  3724. // List<FieldComparison> fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "nation");
  3725. // foreach (DataRow row in oldPatientList.Rows)
  3726. // {
  3727. // if (!tempPatientNos.Contains(row["patient_id"].ToString()))
  3728. // {
  3729. // string nationId = null;
  3730. // if (!string.IsNullOrWhiteSpace(row["nation_id"].ToString()))
  3731. // {
  3732. // nationId = fieldComparisonList.Where(m => m.OldKeyValue == row["nation_id"].ToString()).FirstOrDefault().NewKeyValue;
  3733. // }
  3734. // Guid PatientId = GuidGenerator.Create(); //档案ID
  3735. // var data = new Patient(PatientId)
  3736. // {
  3737. // Address = row["address"].ToString(),
  3738. // BirthDate = string.IsNullOrEmpty(row["birth_date"].ToString()) ? null : Convert.ToDateTime(row["birth_date"].ToString()),
  3739. // BirthPlaceId = null,
  3740. // DisplayName = row["name"].ToString(),
  3741. // Email = row["email"].ToString(),
  3742. // IdNo = row["id_card_no"].ToString(),
  3743. // MaritalStatusId = Convert.ToChar(row["marital_status_id"].ToString()),
  3744. // MedicalCenterId = defaultMedicalCenterId,
  3745. // MobileTelephone = row["mobile_telephone"].ToString(),
  3746. // NationId = nationId,
  3747. // PatientNo = row["patient_id"].ToString(),
  3748. // PatientPassword = row["patient_password"].ToString(),
  3749. // PostalCode = row["postalcode"].ToString(),
  3750. // SexId = ConvertSex(row["sex_id"].ToString()),
  3751. // SimpleCode = LanguageConverter.GetPYSimpleCode(row["name"].ToString()),
  3752. // Telephone = row["telephone"].ToString()
  3753. // };
  3754. // dataList.Add(data);
  3755. // fieldComparisons.Add(new FieldComparison
  3756. // {
  3757. // FieldName = "id",
  3758. // NewKeyValue = PatientId.ToString(),
  3759. // OldKeyValue = row["patient_id"].ToString(),
  3760. // TableName = "patient"
  3761. // });
  3762. // #region 增加标识
  3763. // veryPatientNo.Add(row["patient_id"].ToString(), row["patient_id"].ToString());
  3764. // #endregion
  3765. // }
  3766. // tempPatientNos.Add(row["patient_id"].ToString());
  3767. // }
  3768. // if (dataList.Any())
  3769. // await _patientRepository.InsertManyAsync(dataList);
  3770. // if (fieldComparisons.Any())
  3771. // await _fieldComparisonRepository.InsertManyAsync(fieldComparisons);
  3772. // #region 修改状态
  3773. // Thread.Sleep(100);
  3774. // await Db.Ado.ExecuteCommandAsync("update patient_register set is_hand='Y' where patient_id in (@ids) ", new { ids = tempPatientNos });
  3775. // #endregion
  3776. // _logger.LogInformation($"当前时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")},迁移数据{dataList.Count}");
  3777. // }
  3778. //}
  3779. ///// <summary>
  3780. ///// 迁移后台用户数据
  3781. ///// </summary>
  3782. ///// <returns></returns>
  3783. //[RemoteService(false)]
  3784. //public async Task TransferUserData()
  3785. //{
  3786. // var oldUserList = await Db.Ado.GetDataTableAsync("select * from users");
  3787. // if (oldUserList.Rows.Count > 0)
  3788. // {
  3789. // foreach (DataRow row in oldUserList.Rows)
  3790. // {
  3791. // var userEnt = new IdentityUserCreateNoEmailDto
  3792. // {
  3793. // Email = "",
  3794. // IsActive = row["valid_flag"].ToString() == "Y" ? true : false,
  3795. // LockoutEnabled = false,
  3796. // Name = row["user_name"].ToString(),
  3797. // Password = row["password"].ToString(),
  3798. // PhoneNumber = "",
  3799. // RoleNames = new string[] { "admin" },
  3800. // Surname = "",
  3801. // UserName = row["user_id"].ToString()
  3802. // };
  3803. // await _myUserAppService.CreateAsync(userEnt);
  3804. // }
  3805. // }
  3806. //}
  3807. ///// <summary>
  3808. ///// 迁移菜单
  3809. ///// </summary>
  3810. ///// <returns></returns>
  3811. //[RemoteService(false)]
  3812. //public async Task TransferMenuInfoData()
  3813. //{
  3814. // var oldMenuInfoList = await PgDb.Ado.GetDataTableAsync("select * from menu_info");
  3815. // if (oldMenuInfoList.Rows.Count > 0)
  3816. // {
  3817. // List<MenuInfo> dataList = new List<MenuInfo>();
  3818. // foreach (DataRow menuInfo in oldMenuInfoList.Rows)
  3819. // {
  3820. // var data = new MenuInfo(Guid.Parse(menuInfo["id"].ToString()))
  3821. // {
  3822. // DisplayName = menuInfo["display_name"].ToString(),
  3823. // DisplayOrder = Convert.ToInt32(menuInfo["display_order"].ToString()),
  3824. // IconName = menuInfo["icon_name"].ToString(),
  3825. // IsActive = Convert.ToChar(menuInfo["is_active"].ToString()),
  3826. // MenuType = Convert.ToChar(menuInfo["menu_type"].ToString()),
  3827. // ParentId = !string.IsNullOrWhiteSpace(menuInfo["parent_id"].ToString()) ? Guid.Parse(menuInfo["parent_id"].ToString()) : null,
  3828. // RouteUrl = menuInfo["route_url"].ToString(),
  3829. // SimpleCode = menuInfo["simple_code"].ToString()
  3830. // };
  3831. // dataList.Add(data);
  3832. // }
  3833. // if (dataList.Any())
  3834. // await _menuInfoRepository.InsertManyAsync(dataList);
  3835. // }
  3836. //}
  3837. //#region 迁移报表数据
  3838. ///// <summary>
  3839. ///// 迁移云端报表数据
  3840. ///// </summary>
  3841. ///// <returns></returns>
  3842. //public async Task TransferReportData()
  3843. //{
  3844. // var oldReportList = await PgDb.Ado.GetDataTableAsync("select id,display_name,is_active from report ");
  3845. // if (oldReportList.Rows.Count > 0)
  3846. // {
  3847. // foreach (DataRow row in oldReportList.Rows)
  3848. // {
  3849. // Report reportEntity = new Report
  3850. // {
  3851. // DisplayName = row["display_name"].ToString(),
  3852. // IsActive = Convert.ToChar(row["is_active"].ToString())
  3853. // };
  3854. // reportEntity.SetId(row["id"].ToString());
  3855. // await _reportRepository.InsertAsync(reportEntity, true);
  3856. // }
  3857. // }
  3858. // var oldReportFormatList = await PgDb.Ado.GetDataTableAsync("select id,display_name,is_default,report_id from report_format ");
  3859. // if (oldReportFormatList.Rows.Count > 0)
  3860. // {
  3861. // foreach (DataRow row in oldReportFormatList.Rows)
  3862. // {
  3863. // ReportFormat reportFormatEntity = new ReportFormat
  3864. // {
  3865. // DisplayName = row["display_name"].ToString(),
  3866. // IsDefault = Convert.ToChar(row["is_default"].ToString()),
  3867. // ReportId = row["report_id"].ToString()
  3868. // };
  3869. // reportFormatEntity.SetId(row["id"].ToString());
  3870. // await _reportFormatRepository.InsertAsync(reportFormatEntity, true);
  3871. // }
  3872. // }
  3873. // var oldReportFormatTemplateList = await PgDb.Ado.GetDataTableAsync("select id,display_name,report_format_id,template_file_type,template_file,data_set_json,is_system,is_default from report_format_template ");
  3874. // if (oldReportFormatTemplateList.Rows.Count > 0)
  3875. // {
  3876. // foreach (DataRow row in oldReportFormatTemplateList.Rows)
  3877. // {
  3878. // ReportFormatTemplate reportFormatTemplateEntity = new ReportFormatTemplate
  3879. // {
  3880. // DisplayName = row["display_name"].ToString(),
  3881. // IsDefault = Convert.ToChar(row["is_default"].ToString()),
  3882. // DataSetJson = row["data_set_json"].ToString(),
  3883. // IsSystem = Convert.ToChar(row["is_system"].ToString()),
  3884. // ReportFormatId = row["report_format_id"].ToString(),
  3885. // TemplateFile = row["template_file"].ToString(),
  3886. // TemplateFileType = Convert.ToChar(row["template_file_type"].ToString())
  3887. // };
  3888. // reportFormatTemplateEntity.SetId(row["id"].ToString());
  3889. // await _reportFormatTemplateRepository.InsertAsync(reportFormatTemplateEntity, true);
  3890. // }
  3891. // }
  3892. //}
  3893. //#endregion
  3894. //#region 迁移系统参数
  3895. ///// <summary>
  3896. ///// 迁移系统参数类别数据
  3897. ///// </summary>
  3898. ///// <returns></returns>
  3899. //public async Task TransferSysParmTypeData()
  3900. //{
  3901. // var oldSysParmType = await PgDb.Ado.GetDataTableAsync("select * from sys_parm_type ");
  3902. // if (oldSysParmType.Rows.Count > 0)
  3903. // {
  3904. // foreach (DataRow row in oldSysParmType.Rows)
  3905. // {
  3906. // using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  3907. // {
  3908. // SysParmType data = new SysParmType
  3909. // {
  3910. // Id = row["id"].ToString(),
  3911. // DisplayName = row["display_name"].ToString(),
  3912. // DisplayOrder = Convert.ToInt32(row["display_order"].ToString()),
  3913. // ParentId = row["parent_id"].ToString(),
  3914. // SimpleCode = row["simple_code"].ToString()
  3915. // };
  3916. // await _sysParmTypeRepository.InsertAsync(data, true);
  3917. // await uow.CompleteAsync();
  3918. // }
  3919. // }
  3920. // }
  3921. //}
  3922. ///// <summary>
  3923. ///// 迁移系统参数数据
  3924. ///// </summary>
  3925. ///// <returns></returns>
  3926. //public async Task TransferSysParmData()
  3927. //{
  3928. // var oldSysParm = await PgDb.Ado.GetDataTableAsync("select * from sys_parm ");
  3929. // if (oldSysParm.Rows.Count > 0)
  3930. // {
  3931. // foreach (DataRow row in oldSysParm.Rows)
  3932. // {
  3933. // using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  3934. // {
  3935. // SysParm data = new SysParm
  3936. // {
  3937. // Id = row["id"].ToString(),
  3938. // DisplayName = row["display_name"].ToString(),
  3939. // DisplayOrder = Convert.ToInt32(row["display_order"].ToString()),
  3940. // IsPublic = Convert.ToChar(row["is_public"].ToString()),
  3941. // Remark = row["remark"].ToString(),
  3942. // ValueType = Convert.ToChar(row["value_type"].ToString()),
  3943. // SysParmTypeId = row["sys_parm_type_id"].ToString(),
  3944. // SimpleCode = row["simple_code"].ToString()
  3945. // };
  3946. // await _sysParmRepository.InsertAsync(data, true);
  3947. // await uow.CompleteAsync();
  3948. // }
  3949. // }
  3950. // }
  3951. //}
  3952. ///// <summary>
  3953. ///// 迁移系统参数值数据
  3954. ///// </summary>
  3955. ///// <returns></returns>
  3956. //public async Task TransferSysParmValueData()
  3957. //{
  3958. // var oldSysParmValue = await PgDb.Ado.GetDataTableAsync("select * from sys_parm_value where medical_center_id='00000000-0000-0000-0000-000000000000' ");
  3959. // if (oldSysParmValue.Rows.Count > 0)
  3960. // {
  3961. // foreach (DataRow row in oldSysParmValue.Rows)
  3962. // {
  3963. // using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  3964. // {
  3965. // SysParmValue data = new SysParmValue
  3966. // {
  3967. // SysParmId = row["sys_parm_id"].ToString(),
  3968. // Remark = row["remark"].ToString(),
  3969. // MedicalCenterId = Guid.Empty,
  3970. // ParmValue = row["parm_value"].ToString()
  3971. // };
  3972. // await _sysParmValueRepository.InsertAsync(data, true);
  3973. // await uow.CompleteAsync();
  3974. // }
  3975. // }
  3976. // }
  3977. //}
  3978. //#endregion
  3979. ///// <summary>
  3980. ///// 迁移人员图片数据
  3981. ///// </summary>
  3982. ///// <returns></returns>
  3983. //public async Task TransferPersonPhohoData(int handcount)
  3984. //{
  3985. // string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register_photo'");
  3986. // var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id)
  3987. // .Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(handcount).ToList();
  3988. // if (patientRegisterList.Any())
  3989. // {
  3990. // foreach (var item in patientRegisterList)
  3991. // {
  3992. // using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  3993. // {
  3994. // #region 转换成老系统PatientRegisterId
  3995. // string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
  3996. // .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.Id.ToString()).FirstOrDefault().OldKeyValue;
  3997. // #endregion
  3998. // var photograph = await Db.Ado.GetScalarAsync($"select photograph from patient_register where patient_register_id='{oldPatientRegisterId}' ");
  3999. // #region 上传图片,获取地址
  4000. // if (photograph != null && !string.IsNullOrEmpty(photograph.ToString()))
  4001. // {
  4002. // string photo = UpLoadImg(item.Id, item.CreationTime, (byte[])photograph);
  4003. // item.Photo = photo;
  4004. // await _patientRegisterRepository.UpdateAsync(item);
  4005. // }
  4006. // #endregion
  4007. // await uow.CompleteAsync();
  4008. // await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='patient_register_photo' ");
  4009. // }
  4010. // }
  4011. // }
  4012. //}
  4013. ///// <summary>
  4014. ///// 纠正登记项目明细数据
  4015. ///// </summary>
  4016. ///// <returns></returns>
  4017. //public async Task CorrectRegisterCheckItemData()
  4018. //{
  4019. // string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='register_check_asbitem_2'");
  4020. // //var registerCheckAsbitemList = (await _registerCheckAsbitemRepository.GetQueryableAsync()).OrderBy(o => o.Id)
  4021. // // .Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).ToList();
  4022. // var registerCheckAsbitemList = (from registerCheckQuery in (await _registerCheckRepository.GetQueryableAsync()).Include(x => x.RegisterCheckItems)
  4023. // join registerCheckAsbitemQuery in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheckQuery.Id equals registerCheckAsbitemQuery.RegisterCheckId
  4024. // orderby registerCheckQuery.Id ascending
  4025. // where (registerCheckQuery.RegisterCheckItems.Count == 0 && string.Compare(registerCheckQuery.Id.ToString(), nextKeyValue) > 0)
  4026. // select registerCheckAsbitemQuery).ToList();
  4027. // if (registerCheckAsbitemList.Any())
  4028. // {
  4029. // foreach (var item in registerCheckAsbitemList)
  4030. // {
  4031. // using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  4032. // {
  4033. // List<RegisterCheckItem> registerCheckItemInsert = new List<RegisterCheckItem>();
  4034. // #region 转换成老系统PatientRegisterId
  4035. // string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
  4036. // .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.PatientRegisterId.ToString()).FirstOrDefault().OldKeyValue;
  4037. // #endregion
  4038. // #region 转换成老系统AsbitemId
  4039. // string oldAsbitemId = (await _fieldComparisonRepository.GetQueryableAsync())
  4040. // .Where(m => m.TableName == "asbitem" && m.NewKeyValue == item.AsbitemId.ToString()).FirstOrDefault().OldKeyValue;
  4041. // #endregion
  4042. // var oldRegisterCheckItemList = await Db.Ado.GetDataTableAsync($"select * from register_item where patient_register_id='{oldPatientRegisterId}' and asbitem_id='{oldAsbitemId}'");
  4043. // if (oldRegisterCheckItemList.Rows.Count > 0)
  4044. // {
  4045. // foreach (DataRow row in oldRegisterCheckItemList.Rows)
  4046. // {
  4047. // #region 转换项目ID 老转新
  4048. // Guid newItemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
  4049. // .Where(m => m.TableName == "item" && m.OldKeyValue == row["item_id"].ToString()).FirstOrDefault().NewKeyValue);
  4050. // #endregion
  4051. // var data = new RegisterCheckItem
  4052. // {
  4053. // CheckDate = string.IsNullOrEmpty(row["check_date"].ToString()) ? null : Convert.ToDateTime(row["check_date"].ToString()),
  4054. // CriticalValue = null,
  4055. // CheckDoctorName = row["check_doctor"].ToString().Trim(),
  4056. // CriticalRangeValue = null,
  4057. // ItemId = newItemId,
  4058. // ReferenceRangeValue = row["reference_range_value"].ToString(),
  4059. // RegisterCheckId = item.RegisterCheckId,
  4060. // Result = row["result"].ToString(),
  4061. // ResultStatusId = _registerCheckItemManager.GetResultStatusId(row["result"].ToString(), row["reference_range_value"].ToString()),
  4062. // Unit = row["Unit"].ToString()
  4063. // };
  4064. // registerCheckItemInsert.Add(data);
  4065. // }
  4066. // }
  4067. // if (registerCheckItemInsert.Any())
  4068. // await _registerCheckItemRepository.InsertManyAsync(registerCheckItemInsert);
  4069. // await uow.CompleteAsync();
  4070. // await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='register_check_asbitem_2' ");
  4071. // }
  4072. // }
  4073. // }
  4074. //}
  4075. ///// <summary>
  4076. ///// 纠正医生小结数据
  4077. ///// </summary>
  4078. ///// <returns></returns>
  4079. //public async Task CorrectRegisterCheckSummaryData()
  4080. //{
  4081. // string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='register_check_summary_2'");
  4082. // //var registerCheckAsbitemList = (from registerCheckQuery in await _registerCheckRepository.GetQueryableAsync()
  4083. // // join registerCheckAsbitemQuery in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheckQuery.Id equals registerCheckAsbitemQuery.RegisterCheckId
  4084. // // orderby registerCheckQuery.Id ascending
  4085. // // where string.Compare(registerCheckQuery.Id.ToString(), nextKeyValue) > 0
  4086. // // select new
  4087. // // {
  4088. // // PatientRegisterId = registerCheckQuery.PatientRegisterId,
  4089. // // RegisterCheckId = registerCheckQuery.Id,
  4090. // // AsbitemId = registerCheckAsbitemQuery.AsbitemId
  4091. // // }).ToList();
  4092. // var registerCheckAsbitemList = (from registerCheckQuery in (await _registerCheckRepository.GetQueryableAsync()).Include(x => x.RegisterCheckSummaries).AsQueryable()
  4093. // join registerCheckAsbitemQuery in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheckQuery.Id equals registerCheckAsbitemQuery.RegisterCheckId
  4094. // orderby registerCheckQuery.Id ascending
  4095. // where (registerCheckQuery.RegisterCheckSummaries.Count == 0 && string.Compare(registerCheckQuery.Id.ToString(), nextKeyValue) > 0)
  4096. // select new
  4097. // {
  4098. // PatientRegisterId = registerCheckQuery.PatientRegisterId,
  4099. // RegisterCheckId = registerCheckQuery.Id,
  4100. // AsbitemId = registerCheckAsbitemQuery.AsbitemId
  4101. // }).ToList();
  4102. // if (registerCheckAsbitemList.Any())
  4103. // {
  4104. // foreach (var item in registerCheckAsbitemList)
  4105. // {
  4106. // using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  4107. // {
  4108. // #region 转换成老系统PatientRegisterId
  4109. // string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
  4110. // .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.PatientRegisterId.ToString()).FirstOrDefault().OldKeyValue;
  4111. // #endregion
  4112. // #region 转换成老系统AsbitemId
  4113. // string oldAsbitemId = (await _fieldComparisonRepository.GetQueryableAsync())
  4114. // .Where(m => m.TableName == "asbitem" && m.NewKeyValue == item.AsbitemId.ToString()).FirstOrDefault().OldKeyValue;
  4115. // #endregion
  4116. // var oldSummary = await Db.Ado.GetStringAsync($"select summary from register_asbitem where patient_register_id='{oldPatientRegisterId}' and asbitem_id='{oldAsbitemId}'");
  4117. // if (!string.IsNullOrWhiteSpace(oldSummary))
  4118. // {
  4119. // var data = new RegisterCheckSummary
  4120. // {
  4121. // RegisterCheckId = item.RegisterCheckId,
  4122. // DisplayOrder = 1,
  4123. // Summary = oldSummary,
  4124. // SummaryFlag = '0'
  4125. // };
  4126. // await _registerCheckSummaryRepository.InsertAsync(data);
  4127. // await uow.CompleteAsync();
  4128. // }
  4129. // await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.RegisterCheckId}',addtime=getdate(),handlecount+=1 where tablename='register_check_summary_2' ");
  4130. // }
  4131. // }
  4132. // }
  4133. //}
  4134. #endregion
  4135. private void LoadDLL()
  4136. {
  4137. // 定义dll文件夹路径
  4138. string dllFolderPath = Path.Combine(AppContext.BaseDirectory, "MyPlugs");
  4139. DirectoryInfo directoryInfo = new DirectoryInfo(dllFolderPath);
  4140. FileInfo[] files = directoryInfo.GetFiles("*.dll", SearchOption.AllDirectories);
  4141. foreach (FileInfo file in files)
  4142. {
  4143. Assembly assembly = AssemblyLoadContext.Default.LoadFromAssemblyPath(file.FullName);
  4144. Type interfaceType = assembly.GetTypes().Where(m => m.IsInterface == true && m.Name == "ITestHello").FirstOrDefault();
  4145. Type classType = assembly.GetTypes().Where(m => m.IsInterface == false && m.Name == "TestHello").FirstOrDefault();
  4146. if (interfaceType != null && classType != null)
  4147. {
  4148. object instance = Activator.CreateInstance(classType);
  4149. // 获取方法信息
  4150. MethodInfo method = classType.GetMethod("PrintMsg");
  4151. // 执行方法
  4152. var ss = method.Invoke(instance, null);
  4153. }
  4154. }
  4155. }
  4156. /// <summary>
  4157. /// 转换老系统适用性别
  4158. /// </summary>
  4159. /// <param name="forSexId"></param>
  4160. /// <returns></returns>
  4161. private char ConvertForSex(string forSexId)
  4162. {
  4163. if (forSexId == "0")
  4164. {
  4165. return 'M';
  4166. }
  4167. else if (forSexId == "1")
  4168. {
  4169. return 'F';
  4170. }
  4171. else
  4172. {
  4173. return 'A';
  4174. }
  4175. }
  4176. /// <summary>
  4177. /// 转换老系统性别
  4178. /// </summary>
  4179. /// <param name="SexId"></param>
  4180. /// <returns></returns>
  4181. private char ConvertSex(string SexId)
  4182. {
  4183. if (SexId == "0")
  4184. {
  4185. return 'M';
  4186. }
  4187. else if (SexId == "1")
  4188. {
  4189. return 'F';
  4190. }
  4191. else
  4192. {
  4193. return 'U';
  4194. }
  4195. }
  4196. private string UpLoadImg(Guid PatientRegisterId, DateTime time, byte[] Photo)
  4197. {
  4198. string imgurl = $"photo/{time.Year}/{time.Month}/{time.Day}/" + PatientRegisterId;
  4199. var isupload = ImageHelper.ByteToImage(Photo, imgurl);
  4200. if (!string.IsNullOrEmpty(isupload))
  4201. return isupload;
  4202. else
  4203. return "";
  4204. }
  4205. /// <summary>
  4206. /// 同步单位编号
  4207. /// </summary>
  4208. /// <returns></returns>
  4209. public async Task UpdateCustomerOrgData()
  4210. {
  4211. var customerOrgs = await _customerOrgRepository.GetListAsync();
  4212. foreach (var item in customerOrgs)
  4213. {
  4214. var oldKeyEnt = await _fieldComparisonRepository.FirstOrDefaultAsync(m => m.TableName == "customer_org" && m.NewKeyValue == item.Id.ToString());
  4215. if (oldKeyEnt != null)
  4216. {
  4217. item.CustomerOrgCode = oldKeyEnt.OldKeyValue;
  4218. }
  4219. else
  4220. {
  4221. item.CustomerOrgCode = "";
  4222. }
  4223. await _customerOrgRepository.UpdateAsync(item);
  4224. }
  4225. }
  4226. }
  4227. }