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.

3861 lines
182 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
  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.RegisterCheckItems;
  19. using Shentun.Peis.Sexs;
  20. using Shentun.Utilities;
  21. using SqlSugar;
  22. using System;
  23. using System.Collections.Generic;
  24. using System.Data;
  25. using System.Globalization;
  26. using System.IO;
  27. using System.Linq;
  28. using System.Reflection;
  29. using System.Runtime.Loader;
  30. using System.Text;
  31. using System.Threading;
  32. using System.Threading.Tasks;
  33. using Volo.Abp;
  34. using Volo.Abp.Application.Services;
  35. using Volo.Abp.Domain.Repositories;
  36. using Volo.Abp.Identity;
  37. using Volo.Abp.Uow;
  38. using Volo.Abp.Users;
  39. using Xceed.Document.NET;
  40. namespace Shentun.Peis.DataMigrations
  41. {
  42. /// <summary>
  43. /// 基础数据处理
  44. /// </summary>
  45. //[Authorize]
  46. //[RemoteService(false)]
  47. public class BaseDataHandleAppService : ApplicationService
  48. {
  49. private readonly SqlSugarClient Db = new SqlSugarClient(new ConnectionConfig()
  50. {
  51. ConnectionString = "server=.;uid=sa;pwd=123;database=mypeis;Encrypt=false;",
  52. DbType = SqlSugar.DbType.SqlServer,
  53. IsAutoCloseConnection = true
  54. });
  55. //private readonly SqlSugarClient PgDb = new SqlSugarClient(new ConnectionConfig()
  56. //{
  57. // ConnectionString = "Host=140.143.162.39;Port=5432;Database=ShentunPeis070703;User ID=postgres;Password=shentun123;",
  58. // DbType = SqlSugar.DbType.PostgreSQL,
  59. // IsAutoCloseConnection = true
  60. //});
  61. //修改时间用
  62. private readonly SqlSugarClient PgNWDb = new SqlSugarClient(new ConnectionConfig()
  63. {
  64. ConnectionString = "Host=10.1.12.140;Port=5432;Database=ShentunPeis0508;User ID=postgres;Password=st123;",
  65. DbType = SqlSugar.DbType.PostgreSQL,
  66. IsAutoCloseConnection = true
  67. });
  68. //默认指引类别ID
  69. private readonly char defaultGuidTypeId = '0';
  70. //默认体检报告类别ID
  71. private readonly char defaultMedicalReportTypeId = '0';
  72. //默认体检中心
  73. private readonly Guid defaultMedicalCenterId = Guid.Parse("0de5b78a-731d-4f80-b262-655ebbf04581");
  74. //默认体检结论类别
  75. private readonly string defaultMedicalConclusionType = "01";
  76. //默认容器ID
  77. private readonly Guid defaultSampleContainerId = Guid.Parse("3a126a07-eb42-a369-99e4-114a2629d714");
  78. //默认单位性质ID
  79. private readonly Guid defaultOrgTypeId = Guid.Parse("3a126a08-9607-fe40-e5da-6daa01712468");
  80. private readonly IRepository<DeviceType, Guid> _deviceTypeRepository;
  81. private readonly IRepository<ItemType, Guid> _itemTypeRepository;
  82. private readonly ItemTypeManager _itemTypeManager;
  83. private readonly IRepository<Unit, Guid> _unitRepository;
  84. private readonly IRepository<MedicalType, Guid> _medicalTypeRepository;
  85. private readonly IRepository<PersonnelType, Guid> _personnelTypeRepository;
  86. private readonly IRepository<InvoiceItemType, Guid> _invoiceItemTypeRepository;
  87. private readonly IRepository<FieldComparison, Guid> _fieldComparisonRepository;
  88. private readonly IRepository<SampleType, Guid> _sampleTypeRepository;
  89. private readonly IRepository<Item, Guid> _itemRepository;
  90. private readonly IRepository<ReferenceRange, Guid> _referenceRangeRepository;
  91. private readonly IRepository<Asbitem, Guid> _asbitemRepository;
  92. private readonly IRepository<AsbitemDetail> _asbitemDetailRepository;
  93. private readonly IRepository<MedicalPackage, Guid> _medicalPackageRepository;
  94. private readonly IRepository<MedicalPackageDetail> _medicalPackageDetailRepository;
  95. private readonly IRepository<Diagnosis, Guid> _diagnosisRepository;
  96. private readonly IRepository<Suggestion, Guid> _suggestionRepository;
  97. private readonly IRepository<ItemResultTemplate, Guid> _itemResultTemplateRepository;
  98. private readonly IRepository<ItemResultMatch, Guid> _ItemResultMatchRepository;
  99. private readonly MyUserAppService _myUserAppService;
  100. private readonly IRepository<MenuInfo, Guid> _menuInfoRepository;
  101. private readonly IRepository<CustomerOrg, Guid> _customerOrgRepository;
  102. private readonly CustomerOrgManager _customerOrgManager;
  103. private readonly IRepository<CustomerOrgRegister, Guid> _customerOrgRegisterRepository;
  104. private readonly IRepository<CustomerOrgGroup, Guid> _customerOrgGroupRepository;
  105. private readonly IRepository<CustomerOrgGroupDetail> _customerOrgGroupDetailRepository;
  106. private readonly IRepository<Patient, Guid> _patientRepository;
  107. private readonly IRepository<Nation> _nationRepository;
  108. private readonly ILogger<BaseDataHandleAppService> _logger;
  109. private readonly IRepository<IdentityUser, Guid> _identityUserRepository;
  110. private readonly IRepository<MedicalConclusion, Guid> _medicalConclusionRepository;
  111. private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository;
  112. private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
  113. private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository;
  114. private readonly IRepository<RegisterCheckItem> _registerCheckItemRepository;
  115. private readonly RegisterCheckItemManager _registerCheckItemManager;
  116. private readonly UnitOfWorkManager _unitOfWorkManager;
  117. private readonly IRepository<RegisterCheckSummary, Guid> _registerCheckSummaryRepository;
  118. private readonly IRepository<SumSummaryHeader, Guid> _sumSummaryHeaderRepository;
  119. private readonly IRepository<SumSummaryContent, Guid> _sumSummaryContentRepository;
  120. private readonly IRepository<SumSuggestionHeader, Guid> _sumSuggestionHeaderRepository;
  121. private readonly IRepository<SumSuggestionContent, Guid> _sumSuggestionContentRepository;
  122. private readonly IRepository<SumDiagnosis> _sumDiagnosisRepository;
  123. private readonly IRepository<Report, string> _reportRepository;
  124. private readonly IRepository<ReportFormat, string> _reportFormatRepository;
  125. private readonly IRepository<ReportFormatTemplate, string> _reportFormatTemplateRepository;
  126. private readonly IRepository<SampleGroup, Guid> _sampleGroupRepository;
  127. private readonly IRepository<SampleGroupDetail> _sampleGroupDetailRepository;
  128. private readonly IRepository<SysParmType> _sysParmTypeRepository;
  129. private readonly IRepository<SysParm> _sysParmRepository;
  130. private readonly IRepository<SysParmValue> _sysParmValueRepository;
  131. private readonly IRepository<CollectItemType, Guid> _collectItemTypeRepository;
  132. private readonly IRepository<PatientRegisterExter> _patientRegisterExterRepository;
  133. private readonly IRepository<AsbitemGuide> _asbitemGuideRepository;
  134. private Dictionary<string, string> veryPatientNo = new Dictionary<string, string>();
  135. public BaseDataHandleAppService(
  136. IRepository<DeviceType, Guid> deviceTypeRepository,
  137. IRepository<ItemType, Guid> itemTypeRepository,
  138. ItemTypeManager itemTypeManager,
  139. IRepository<Unit, Guid> unitRepository,
  140. IRepository<MedicalType, Guid> medicalTypeRepository,
  141. IRepository<PersonnelType, Guid> personnelTypeRepository,
  142. IRepository<InvoiceItemType, Guid> invoiceItemTypeRepository,
  143. IRepository<FieldComparison, Guid> fieldComparisonRepository,
  144. IRepository<SampleType, Guid> sampleTypeRepository,
  145. IRepository<Item, Guid> itemRepository,
  146. IRepository<ReferenceRange, Guid> referenceRangeRepository,
  147. IRepository<Asbitem, Guid> asbitemRepository,
  148. IRepository<AsbitemDetail> asbitemDetailRepository,
  149. IRepository<MedicalPackage, Guid> medicalPackageRepository,
  150. IRepository<MedicalPackageDetail> medicalPackageDetailRepository,
  151. IRepository<ItemResultTemplate, Guid> itemResultTemplateRepository,
  152. IRepository<ItemResultMatch, Guid> itemResultMatchRepository,
  153. IRepository<Diagnosis, Guid> diagnosisRepository,
  154. IRepository<Suggestion, Guid> suggestionRepository,
  155. MyUserAppService myUserAppService,
  156. IRepository<MenuInfo, Guid> menuInfoRepository,
  157. IRepository<CustomerOrg, Guid> customerOrgRepository,
  158. CustomerOrgManager customerOrgManager,
  159. IRepository<CustomerOrgRegister, Guid> customerOrgRegisterRepository,
  160. IRepository<CustomerOrgGroup, Guid> customerOrgGroupRepository,
  161. IRepository<CustomerOrgGroupDetail> customerOrgGroupDetailRepository,
  162. IRepository<Nation> nationRepository,
  163. IRepository<Patient, Guid> patientRepository,
  164. ILogger<BaseDataHandleAppService> logger,
  165. IRepository<IdentityUser, Guid> identityUserRepository,
  166. IRepository<MedicalConclusion, Guid> medicalConclusionRepository,
  167. IRepository<PatientRegister, Guid> patientRegisterRepository,
  168. IRepository<RegisterCheck, Guid> registerCheckRepository,
  169. IRepository<RegisterCheckAsbitem, Guid> registerCheckAsbitemRepository,
  170. IRepository<RegisterCheckItem> registerCheckItemRepository,
  171. RegisterCheckItemManager registerCheckItemManager,
  172. UnitOfWorkManager unitOfWorkManager,
  173. IRepository<RegisterCheckSummary, Guid> registerCheckSummaryRepository,
  174. IRepository<SumSummaryHeader, Guid> sumSummaryHeaderRepository,
  175. IRepository<SumSummaryContent, Guid> sumSummaryContentRepository,
  176. IRepository<SumSuggestionHeader, Guid> sumSuggestionHeaderRepository,
  177. IRepository<SumSuggestionContent, Guid> sumSuggestionContentRepository,
  178. IRepository<SumDiagnosis> sumDiagnosisRepository,
  179. IRepository<Report, string> reportRepository,
  180. IRepository<ReportFormat, string> reportFormatRepository,
  181. IRepository<ReportFormatTemplate, string> reportFormatTemplateRepository,
  182. IRepository<SampleGroup, Guid> sampleGroupRepository,
  183. IRepository<SampleGroupDetail> sampleGroupDetailRepository,
  184. IRepository<SysParmType> sysParmTypeRepository,
  185. IRepository<SysParm> sysParmRepository,
  186. IRepository<SysParmValue> sysParmValueRepository,
  187. IRepository<CollectItemType, Guid> collectItemTypeRepository,
  188. IRepository<PatientRegisterExter> patientRegisterExterRepository,
  189. IRepository<AsbitemGuide> asbitemGuideRepository)
  190. {
  191. _deviceTypeRepository = deviceTypeRepository;
  192. _itemTypeRepository = itemTypeRepository;
  193. _itemTypeManager = itemTypeManager;
  194. _unitRepository = unitRepository;
  195. _medicalTypeRepository = medicalTypeRepository;
  196. _personnelTypeRepository = personnelTypeRepository;
  197. _invoiceItemTypeRepository = invoiceItemTypeRepository;
  198. _fieldComparisonRepository = fieldComparisonRepository;
  199. _sampleTypeRepository = sampleTypeRepository;
  200. _itemRepository = itemRepository;
  201. _referenceRangeRepository = referenceRangeRepository;
  202. _asbitemRepository = asbitemRepository;
  203. _asbitemDetailRepository = asbitemDetailRepository;
  204. _medicalPackageRepository = medicalPackageRepository;
  205. _medicalPackageDetailRepository = medicalPackageDetailRepository;
  206. _itemResultTemplateRepository = itemResultTemplateRepository;
  207. _ItemResultMatchRepository = itemResultMatchRepository;
  208. _diagnosisRepository = diagnosisRepository;
  209. _suggestionRepository = suggestionRepository;
  210. _myUserAppService = myUserAppService;
  211. _menuInfoRepository = menuInfoRepository;
  212. _customerOrgRepository = customerOrgRepository;
  213. _customerOrgManager = customerOrgManager;
  214. _customerOrgRegisterRepository = customerOrgRegisterRepository;
  215. _customerOrgGroupRepository = customerOrgGroupRepository;
  216. _customerOrgGroupDetailRepository = customerOrgGroupDetailRepository;
  217. _nationRepository = nationRepository;
  218. _patientRepository = patientRepository;
  219. _logger = logger;
  220. _identityUserRepository = identityUserRepository;
  221. _medicalConclusionRepository = medicalConclusionRepository;
  222. _patientRegisterRepository = patientRegisterRepository;
  223. _registerCheckRepository = registerCheckRepository;
  224. _registerCheckAsbitemRepository = registerCheckAsbitemRepository;
  225. _registerCheckItemRepository = registerCheckItemRepository;
  226. _registerCheckItemManager = registerCheckItemManager;
  227. _unitOfWorkManager = unitOfWorkManager;
  228. _registerCheckSummaryRepository = registerCheckSummaryRepository;
  229. _sumSummaryHeaderRepository = sumSummaryHeaderRepository;
  230. _sumSummaryContentRepository = sumSummaryContentRepository;
  231. _sumSuggestionHeaderRepository = sumSuggestionHeaderRepository;
  232. _sumSuggestionContentRepository = sumSuggestionContentRepository;
  233. _sumDiagnosisRepository = sumDiagnosisRepository;
  234. _reportRepository = reportRepository;
  235. _reportFormatRepository = reportFormatRepository;
  236. _reportFormatTemplateRepository = reportFormatTemplateRepository;
  237. _sampleGroupRepository = sampleGroupRepository;
  238. _sampleGroupDetailRepository = sampleGroupDetailRepository;
  239. _sysParmTypeRepository = sysParmTypeRepository;
  240. _sysParmRepository = sysParmRepository;
  241. _sysParmValueRepository = sysParmValueRepository;
  242. _collectItemTypeRepository = collectItemTypeRepository;
  243. _patientRegisterExterRepository = patientRegisterExterRepository;
  244. _asbitemGuideRepository = asbitemGuideRepository;
  245. }
  246. /// <summary>
  247. /// 手动添加字段对照
  248. /// </summary>
  249. /// <param name="input"></param>
  250. /// <returns></returns>
  251. [HttpPost]
  252. public async Task CreateFieldComparisonAsync(CreateFieldComparisonDto input)
  253. {
  254. FieldComparison fieldComparison = new FieldComparison
  255. {
  256. FieldName = "id",
  257. NewKeyValue = input.NewKeyValue,
  258. OldKeyValue = input.OldKeyValue,
  259. TableName = input.TableName
  260. };
  261. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  262. }
  263. /// <summary>
  264. /// 处理基础数据
  265. /// </summary>
  266. /// <returns></returns>
  267. public async Task HandBaseData()
  268. {
  269. await TransferDeviceTypeData();
  270. await TransferUnitData();
  271. await TransferMedicalTypeData();
  272. await TransferPersonnelTypeData();
  273. await TransferInvoiceItemTypeData();
  274. await TransferCollectItemTypeData();
  275. await TransferItemTypeData();
  276. await TransferSampleTypeData();
  277. await TransferNationData();
  278. await TransferMedicalConclusionData();
  279. }
  280. /// <summary>
  281. /// 处理基础项目相关数据
  282. /// </summary>
  283. /// <returns></returns>
  284. public async Task HandBaseItemData()
  285. {
  286. await TransferItemData();
  287. await TransferAsbitemData();
  288. await TransferAsbitemDetailData();
  289. await TransferMedicalPackageData();
  290. await TransferMedicalPackageDetailData();
  291. await TransferDiagnosisData();
  292. await TransferSuggestionData();
  293. await TransferItemResultTemplateData();
  294. await TransferItemResultMatchData();
  295. await TransferReferenceRangeData();
  296. await TransferSampleGroupData();
  297. await TransferSampleGroupDetailData();
  298. await TransferTopCustomerOrgData();
  299. await TransferTwoCustomerOrgData();
  300. await TransferThreeCustomerOrgData();
  301. await TransferCustomerOrgRegisterData();
  302. await TransferCustomerOrgGroupData();
  303. await TransferCustomerOrgGroupDetailData();
  304. }
  305. #region 基础数据
  306. /// <summary>
  307. /// 迁移仪器类别数据
  308. /// </summary>
  309. /// <returns></returns>
  310. [RemoteService(false)]
  311. public async Task TransferDeviceTypeData()
  312. {
  313. var count = await _deviceTypeRepository.GetCountAsync();
  314. if (count == 0)
  315. {
  316. var oldDeviceTypeList = await Db.Ado.GetDataTableAsync("select device_type_id,device_type_name from device_type order by display_order asc");
  317. if (oldDeviceTypeList.Rows.Count > 0)
  318. {
  319. foreach (DataRow row in oldDeviceTypeList.Rows)
  320. {
  321. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  322. {
  323. Guid deviceTypeId = GuidGenerator.Create();
  324. var data = new DeviceType(deviceTypeId)
  325. {
  326. CheckTypeFlag = '0',
  327. DisplayName = row["device_type_name"].ToString(),
  328. DisplayOrder = oldDeviceTypeList.Rows.IndexOf(row) + 1,
  329. SimpleCode = LanguageConverter.GetPYSimpleCode(row["device_type_name"].ToString())
  330. };
  331. await _deviceTypeRepository.InsertAsync(data);
  332. var fieldComparison = new FieldComparison
  333. {
  334. TableName = "device_type",
  335. FieldName = "id",
  336. NewKeyValue = deviceTypeId.ToString(),
  337. OldKeyValue = row["device_type_id"].ToString()
  338. };
  339. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  340. await uow.CompleteAsync();
  341. }
  342. }
  343. }
  344. _logger.LogInformation($"仪器类别数据处理完毕,处理数量{oldDeviceTypeList.Rows.Count}");
  345. }
  346. else
  347. {
  348. _logger.LogInformation("仪器类别数据已存在,未处理");
  349. }
  350. }
  351. /// <summary>
  352. /// 迁移数值单位数据
  353. /// </summary>
  354. /// <returns></returns>
  355. [RemoteService(false)]
  356. public async Task TransferUnitData()
  357. {
  358. var count = await _unitRepository.GetCountAsync();
  359. if (count == 0)
  360. {
  361. var oldUnitList = await Db.Ado.GetDataTableAsync("select unit_id,unit_name from unit order by display_order asc");
  362. if (oldUnitList.Rows.Count > 0)
  363. {
  364. foreach (DataRow row in oldUnitList.Rows)
  365. {
  366. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  367. {
  368. Guid unitId = GuidGenerator.Create();
  369. var data = new Unit(unitId)
  370. {
  371. DisplayName = row["unit_name"].ToString(),
  372. DisplayOrder = oldUnitList.Rows.IndexOf(row) + 1,
  373. SimpleCode = LanguageConverter.GetPYSimpleCode(row["unit_name"].ToString())
  374. };
  375. await _unitRepository.InsertAsync(data);
  376. var fieldComparison = new FieldComparison
  377. {
  378. TableName = "unit",
  379. FieldName = "id",
  380. NewKeyValue = unitId.ToString(),
  381. OldKeyValue = row["unit_id"].ToString()
  382. };
  383. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  384. await uow.CompleteAsync();
  385. }
  386. }
  387. _logger.LogInformation($"数值单位数据处理完毕,处理数量{oldUnitList.Rows.Count}");
  388. }
  389. else
  390. {
  391. _logger.LogInformation($"数值单位数据已存在,未处理");
  392. }
  393. }
  394. }
  395. /// <summary>
  396. /// 迁移体检类别数据
  397. /// </summary>
  398. /// <returns></returns>
  399. [RemoteService(false)]
  400. public async Task TransferMedicalTypeData()
  401. {
  402. var count = await _medicalTypeRepository.GetCountAsync();
  403. if (count == 0)
  404. {
  405. var oldMedicalTypeList = await Db.Ado.GetDataTableAsync("select medical_type_id,medical_type_name from medical_type order by display_order asc");
  406. if (oldMedicalTypeList.Rows.Count > 0)
  407. {
  408. foreach (DataRow row in oldMedicalTypeList.Rows)
  409. {
  410. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  411. {
  412. Guid medicalTypeId = GuidGenerator.Create();
  413. var data = new MedicalType(medicalTypeId)
  414. {
  415. DisplayName = row["medical_type_name"].ToString(),
  416. DisplayOrder = oldMedicalTypeList.Rows.IndexOf(row) + 1,
  417. SimpleCode = LanguageConverter.GetPYSimpleCode(row["medical_type_name"].ToString())
  418. };
  419. await _medicalTypeRepository.InsertAsync(data);
  420. var fieldComparison = new FieldComparison
  421. {
  422. TableName = "medical_type",
  423. FieldName = "id",
  424. NewKeyValue = medicalTypeId.ToString(),
  425. OldKeyValue = row["medical_type_id"].ToString()
  426. };
  427. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  428. await uow.CompleteAsync();
  429. }
  430. }
  431. _logger.LogInformation($"体检类别数据处理完毕,处理数量{oldMedicalTypeList.Rows.Count}");
  432. }
  433. else
  434. {
  435. _logger.LogInformation($"体检类别数据已存在,未处理");
  436. }
  437. }
  438. }
  439. /// <summary>
  440. /// 迁移人员类别数据
  441. /// </summary>
  442. /// <returns></returns>
  443. [RemoteService(false)]
  444. public async Task TransferPersonnelTypeData()
  445. {
  446. var count = await _personnelTypeRepository.GetCountAsync();
  447. if (count == 0)
  448. {
  449. var oldPersonnelTypeList = await Db.Ado.GetDataTableAsync("select personnel_type_id,personnel_type_name from personnel_type order by display_order asc");
  450. if (oldPersonnelTypeList.Rows.Count > 0)
  451. {
  452. foreach (DataRow row in oldPersonnelTypeList.Rows)
  453. {
  454. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  455. {
  456. Guid personnelTypeId = GuidGenerator.Create();
  457. var data = new PersonnelType(personnelTypeId)
  458. {
  459. DisplayName = row["personnel_type_name"].ToString(),
  460. DisplayOrder = oldPersonnelTypeList.Rows.IndexOf(row) + 1,
  461. SimpleCode = LanguageConverter.GetPYSimpleCode(row["personnel_type_name"].ToString())
  462. };
  463. await _personnelTypeRepository.InsertAsync(data);
  464. var fieldComparison = new FieldComparison
  465. {
  466. TableName = "personnel_type",
  467. FieldName = "id",
  468. NewKeyValue = personnelTypeId.ToString(),
  469. OldKeyValue = row["personnel_type_id"].ToString()
  470. };
  471. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  472. await uow.CompleteAsync();
  473. }
  474. }
  475. }
  476. _logger.LogInformation($"人员类别数据处理完毕,处理数量{oldPersonnelTypeList.Rows.Count}");
  477. }
  478. else
  479. {
  480. _logger.LogInformation($"人员类别数据已存在,未处理");
  481. }
  482. }
  483. /// <summary>
  484. /// 迁移发票项目类别数据
  485. /// </summary>
  486. /// <returns></returns>
  487. [RemoteService(false)]
  488. public async Task TransferInvoiceItemTypeData()
  489. {
  490. var count = await _invoiceItemTypeRepository.GetCountAsync();
  491. if (count == 0)
  492. {
  493. var oldInvoiceItemTypeList = await Db.Ado.GetDataTableAsync("select invoice_item_type_id,invoice_item_type_name from invoice_item_type order by display_order asc");
  494. if (oldInvoiceItemTypeList.Rows.Count > 0)
  495. {
  496. foreach (DataRow row in oldInvoiceItemTypeList.Rows)
  497. {
  498. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  499. {
  500. Guid invoiceItemTypeId = GuidGenerator.Create();
  501. var data = new InvoiceItemType(invoiceItemTypeId)
  502. {
  503. DisplayName = row["invoice_item_type_name"].ToString(),
  504. DisplayOrder = oldInvoiceItemTypeList.Rows.IndexOf(row) + 1,
  505. SimpleCode = LanguageConverter.GetPYSimpleCode(row["invoice_item_type_name"].ToString())
  506. };
  507. await _invoiceItemTypeRepository.InsertAsync(data);
  508. var fieldComparison = new FieldComparison
  509. {
  510. TableName = "invoice_item_type",
  511. FieldName = "id",
  512. NewKeyValue = invoiceItemTypeId.ToString(),
  513. OldKeyValue = row["invoice_item_type_id"].ToString()
  514. };
  515. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  516. await uow.CompleteAsync();
  517. }
  518. }
  519. }
  520. _logger.LogInformation($"发票项目类别数据处理完毕,处理数量{oldInvoiceItemTypeList.Rows.Count}");
  521. }
  522. else
  523. {
  524. _logger.LogInformation($"发票项目类别数据已存在,未处理");
  525. }
  526. }
  527. /// <summary>
  528. /// 迁移汇总项目类别数据
  529. /// </summary>
  530. /// <returns></returns>
  531. [RemoteService(false)]
  532. public async Task TransferCollectItemTypeData()
  533. {
  534. var count = await _collectItemTypeRepository.GetCountAsync();
  535. if (count == 0)
  536. {
  537. 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");
  538. if (oldCollectItemTypeList.Rows.Count > 0)
  539. {
  540. foreach (DataRow row in oldCollectItemTypeList.Rows)
  541. {
  542. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  543. {
  544. Guid collectItemTypeId = GuidGenerator.Create();
  545. Guid invoiceItemTypeId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "invoice_item_type" && m.OldKeyValue == row["invoice_item_type_id"].ToString()).FirstOrDefault().NewKeyValue);
  546. var data = new CollectItemType(collectItemTypeId)
  547. {
  548. DisplayName = row["collect_item_type_name"].ToString(),
  549. DisplayOrder = oldCollectItemTypeList.Rows.IndexOf(row) + 1,
  550. SimpleCode = LanguageConverter.GetPYSimpleCode(row["collect_item_type_name"].ToString()),
  551. InvoiceItemTypeId = invoiceItemTypeId
  552. };
  553. await _collectItemTypeRepository.InsertAsync(data);
  554. var fieldComparison = new FieldComparison
  555. {
  556. TableName = "collect_item_type",
  557. FieldName = "id",
  558. NewKeyValue = collectItemTypeId.ToString(),
  559. OldKeyValue = row["collect_item_type_id"].ToString()
  560. };
  561. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  562. await uow.CompleteAsync();
  563. }
  564. }
  565. _logger.LogInformation($"汇总项目类别数据处理完毕,处理数量{oldCollectItemTypeList.Rows.Count}");
  566. }
  567. else
  568. {
  569. _logger.LogInformation($"汇总项目类别数据已存在,未处理");
  570. }
  571. }
  572. }
  573. /// <summary>
  574. /// 迁移项目类别-科室数据
  575. /// </summary>
  576. /// <returns></returns>
  577. [RemoteService(false)]
  578. public async Task TransferItemTypeData()
  579. {
  580. var count = await _itemTypeRepository.GetCountAsync();
  581. if (count == 0)
  582. {
  583. 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");
  584. if (oldItemTypeList.Rows.Count > 0)
  585. {
  586. foreach (DataRow row in oldItemTypeList.Rows)
  587. {
  588. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  589. {
  590. Guid itemTypeId = GuidGenerator.Create();
  591. var data = new ItemType(itemTypeId)
  592. {
  593. DisplayName = row["department_name"].ToString(),
  594. DisplayOrder = oldItemTypeList.Rows.IndexOf(row) + 1,
  595. SimpleCode = LanguageConverter.GetPYSimpleCode(row["department_name"].ToString()),
  596. CheckTypeFlag = Convert.ToChar(row["department_type"]),
  597. GuidTypeId = defaultGuidTypeId,
  598. IsMergeAsbitem = Convert.ToChar(row["merge_asbitem_flag"]),
  599. IsWrap = 'N',
  600. MedicalReportTypeId = defaultMedicalReportTypeId,
  601. ParentId = null,
  602. PathCode = _itemTypeManager.CreatePathCode(null).Result,
  603. IsCheckRequest = Convert.ToChar(row["print_pacs_barcode_flag"])
  604. };
  605. await _itemTypeRepository.InsertAsync(data);
  606. var fieldComparison = new FieldComparison
  607. {
  608. TableName = "item_type",
  609. FieldName = "id",
  610. NewKeyValue = itemTypeId.ToString(),
  611. OldKeyValue = row["department_id"].ToString()
  612. };
  613. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  614. await uow.CompleteAsync();
  615. }
  616. }
  617. }
  618. _logger.LogInformation($"项目类别数据处理完毕,处理数量{oldItemTypeList.Rows.Count}");
  619. }
  620. else
  621. {
  622. _logger.LogInformation($"项目类别数据已存在,未处理");
  623. }
  624. }
  625. /// <summary>
  626. /// 迁移标本类型数据
  627. /// </summary>
  628. /// <returns></returns>
  629. [RemoteService(false)]
  630. public async Task TransferSampleTypeData()
  631. {
  632. var count = await _sampleTypeRepository.GetCountAsync();
  633. if (count == 0)
  634. {
  635. var oldSampleTypeList = await Db.Ado.GetDataTableAsync("select specimen_type_id,specimen_type_name from specimen_type order by display_order asc");
  636. if (oldSampleTypeList.Rows.Count > 0)
  637. {
  638. foreach (DataRow row in oldSampleTypeList.Rows)
  639. {
  640. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  641. {
  642. Guid sampleTypeId = GuidGenerator.Create();
  643. var data = new SampleType(sampleTypeId)
  644. {
  645. DisplayName = row["specimen_type_name"].ToString(),
  646. DisplayOrder = oldSampleTypeList.Rows.IndexOf(row) + 1,
  647. SimpleCode = LanguageConverter.GetPYSimpleCode(row["specimen_type_name"].ToString())
  648. };
  649. await _sampleTypeRepository.InsertAsync(data);
  650. var fieldComparison = new FieldComparison
  651. {
  652. TableName = "sample_type",
  653. FieldName = "id",
  654. NewKeyValue = sampleTypeId.ToString(),
  655. OldKeyValue = row["specimen_type_id"].ToString()
  656. };
  657. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  658. await uow.CompleteAsync();
  659. }
  660. }
  661. }
  662. _logger.LogInformation($"标本类型数据处理完毕,处理数量{oldSampleTypeList.Rows.Count}");
  663. }
  664. else
  665. {
  666. _logger.LogInformation($"标本类型数据已存在,未处理");
  667. }
  668. }
  669. /// <summary>
  670. /// 民族数据对照
  671. /// </summary>
  672. /// <returns></returns>
  673. [RemoteService(false)]
  674. public async Task TransferNationData()
  675. {
  676. var newNationList = await _nationRepository.GetListAsync();
  677. var oldNationList = await Db.Ado.GetDataTableAsync("select * from nation");
  678. if (oldNationList.Rows.Count > 0)
  679. {
  680. foreach (DataRow row in oldNationList.Rows)
  681. {
  682. string oldName = row["nation_name"].ToString(); //老系统名称
  683. var newNationEnt = newNationList.Where(m => m.DisplayName.Contains(oldName)).FirstOrDefault();
  684. if (newNationEnt != null)
  685. {
  686. var fieldComparison = new FieldComparison
  687. {
  688. FieldName = "id",
  689. NewKeyValue = newNationEnt.Id.ToString(),
  690. OldKeyValue = row["nation_id"].ToString(),
  691. TableName = "nation"
  692. };
  693. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  694. }
  695. }
  696. _logger.LogInformation($"民族数据处理完毕,处理数量{oldNationList.Rows.Count}");
  697. }
  698. else
  699. {
  700. _logger.LogInformation($"民族数据无需处理");
  701. }
  702. }
  703. /// <summary>
  704. /// 迁移体检结论数据
  705. /// </summary>
  706. /// <returns></returns>
  707. [RemoteService(false)]
  708. public async Task TransferMedicalConclusionData()
  709. {
  710. var count = await _medicalConclusionRepository.GetCountAsync();
  711. if (count == 0)
  712. {
  713. var oldMedicalConclusionList = await Db.Ado.GetDataTableAsync("select medical_conclusion_id,medical_conclusion_name from medical_conclusion order by display_order asc");
  714. if (oldMedicalConclusionList.Rows.Count > 0)
  715. {
  716. foreach (DataRow row in oldMedicalConclusionList.Rows)
  717. {
  718. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  719. {
  720. Guid medicalConclusionId = GuidGenerator.Create();
  721. var data = new MedicalConclusion(medicalConclusionId)
  722. {
  723. DisplayName = row["medical_conclusion_name"].ToString(),
  724. DisplayOrder = oldMedicalConclusionList.Rows.IndexOf(row) + 1,
  725. SimpleCode = LanguageConverter.GetPYSimpleCode(row["medical_conclusion_name"].ToString()),
  726. MedicalConclusionTypeId = defaultMedicalConclusionType
  727. };
  728. await _medicalConclusionRepository.InsertAsync(data);
  729. var fieldComparison = new FieldComparison
  730. {
  731. TableName = "medical_conclusion",
  732. FieldName = "id",
  733. NewKeyValue = medicalConclusionId.ToString(),
  734. OldKeyValue = row["medical_conclusion_id"].ToString()
  735. };
  736. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  737. await uow.CompleteAsync();
  738. }
  739. }
  740. }
  741. _logger.LogInformation($"体检结论数据处理完毕,处理数量{oldMedicalConclusionList.Rows.Count}");
  742. }
  743. else
  744. {
  745. _logger.LogInformation("体检结论数据已存在,未处理");
  746. }
  747. }
  748. #endregion
  749. #region 基础项目相关数据
  750. /// <summary>
  751. /// 迁移项目数据
  752. /// </summary>
  753. /// <returns></returns>
  754. [RemoteService(false)]
  755. public async Task TransferItemData()
  756. {
  757. var count = await _itemRepository.GetCountAsync();
  758. if (count == 0)
  759. {
  760. 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");
  761. if (oldItemList.Rows.Count > 0)
  762. {
  763. foreach (DataRow row in oldItemList.Rows)
  764. {
  765. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  766. {
  767. #region 根据仪器类别生成二级科室
  768. var itemTypeId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "item_type" && m.OldKeyValue == row["department_id"].ToString()).FirstOrDefault().NewKeyValue);
  769. Guid? deviceTypeId = null;
  770. if (!string.IsNullOrWhiteSpace(row["device_type_id"].ToString()))
  771. {
  772. deviceTypeId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "device_type" && m.OldKeyValue == row["device_type_id"].ToString()).FirstOrDefault().NewKeyValue);
  773. var itemTypeEnt = await _itemTypeRepository.GetAsync(itemTypeId);
  774. var deviceTypeEnt = await _deviceTypeRepository.GetAsync(deviceTypeId.Value);
  775. var itemTypeChildEnt = await _itemTypeRepository.FirstOrDefaultAsync(m => m.ParentId == itemTypeEnt.Id && m.DisplayName == deviceTypeEnt.DisplayName);
  776. if (itemTypeChildEnt == null)
  777. {
  778. Guid autoItemTypeId = GuidGenerator.Create();
  779. #region 排序值
  780. int displayOrder = (await _itemTypeRepository.CountAsync(m => m.ParentId == itemTypeEnt.Id)) + 1;
  781. #endregion
  782. var item_type_data = new ItemType(autoItemTypeId)
  783. {
  784. DisplayName = deviceTypeEnt.DisplayName,
  785. DisplayOrder = displayOrder,
  786. SimpleCode = LanguageConverter.GetPYSimpleCode(deviceTypeEnt.DisplayName),
  787. CheckTypeFlag = itemTypeEnt.CheckTypeFlag,
  788. GuidTypeId = itemTypeEnt.GuidTypeId,
  789. IsMergeAsbitem = itemTypeEnt.IsMergeAsbitem,
  790. IsWrap = itemTypeEnt.IsWrap,
  791. MedicalReportTypeId = itemTypeEnt.MedicalReportTypeId,
  792. ParentId = itemTypeEnt.Id,
  793. PathCode = _itemTypeManager.CreatePathCode(itemTypeEnt.Id).Result,
  794. IsCheckRequest = itemTypeEnt.IsCheckRequest
  795. };
  796. await _itemTypeRepository.InsertAsync(item_type_data);
  797. itemTypeId = autoItemTypeId;
  798. }
  799. else
  800. {
  801. itemTypeId = itemTypeChildEnt.Id;
  802. }
  803. }
  804. #endregion
  805. Guid? unitId = null;
  806. if (!string.IsNullOrWhiteSpace(row["unit_id"].ToString()))
  807. unitId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "unit" && m.OldKeyValue == row["unit_id"].ToString()).FirstOrDefault().NewKeyValue);
  808. Guid itemId = GuidGenerator.Create();
  809. var data = new Item(itemId)
  810. {
  811. DisplayName = row["item_name"].ToString(),
  812. DisplayOrder = oldItemList.Rows.IndexOf(row) + 1,
  813. SimpleCode = LanguageConverter.GetPYSimpleCode(row["item_name"].ToString()),
  814. CalculationFunction = "",
  815. DefaultResult = row["default_result"].ToString(),
  816. DiagnosisFunction = "",
  817. EnglishShortName = row["english_abbreviation"].ToString(),
  818. InputCheck = row["input_check"].ToString(),
  819. IsActive = Convert.ToChar(row["valid_flag"].ToString()),
  820. IsCalculationItem = 'N',
  821. IsContinueProcess = 'N',
  822. IsDiagnosisFunction = 'N',
  823. IsNameIntoSummary = Convert.ToChar(row["name_into_summary_flag"]),
  824. IsProduceSummary = Convert.ToChar(row["produce_summary_flag"]),
  825. ItemTypeId = itemTypeId,
  826. LineModeFlag = '0',
  827. Price = Convert.ToDecimal(row["price"]),
  828. PriceItemId = null,
  829. ReferenceRangeTypeFlag = Convert.ToChar(row["reference_range_type"]),
  830. ResultTemplateTypeFlag = '0',
  831. UnitId = unitId,
  832. DeviceTypeId = deviceTypeId
  833. };
  834. await _itemRepository.InsertAsync(data);
  835. if (row["reference_range_type"].ToString() == "2" && !string.IsNullOrWhiteSpace(row["reference_range_value"].ToString()))
  836. {
  837. //增加字符型参考范围到参考范围表
  838. Guid referenceRangeId = GuidGenerator.Create();
  839. var referenceRange = new ReferenceRange(referenceRangeId)
  840. {
  841. AgeLowerLimit = 0,
  842. AgeUpperLimit = 200,
  843. CriticalRangeValue = "",
  844. ItemId = itemId,
  845. ForSexId = ForSexFlag.All,
  846. LowerDiagnosisId = null,
  847. ReferenceRangeTypeFlag = ItemReferenceRangeTypeFlag.Character,
  848. UpperDiagnosisId = null,
  849. ReferenceRangeValue = row["reference_range_value"].ToString()
  850. };
  851. //referenceRanges.Add(referenceRange);
  852. await _referenceRangeRepository.InsertAsync(referenceRange);
  853. }
  854. var fieldComparison = new FieldComparison
  855. {
  856. TableName = "item",
  857. FieldName = "id",
  858. NewKeyValue = itemId.ToString(),
  859. OldKeyValue = row["item_id"].ToString()
  860. };
  861. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  862. await uow.CompleteAsync();
  863. }
  864. }
  865. }
  866. _logger.LogInformation($"项目数据处理完毕,处理数量{oldItemList.Rows.Count}");
  867. }
  868. else
  869. {
  870. _logger.LogInformation("项目数据已存在,未处理");
  871. }
  872. }
  873. /// <summary>
  874. /// 迁移组合项目数据
  875. /// </summary>
  876. /// <returns></returns>
  877. [RemoteService(false)]
  878. public async Task TransferAsbitemData()
  879. {
  880. var count = await _asbitemRepository.GetCountAsync();
  881. if (count == 0)
  882. {
  883. 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 ");
  884. if (oldAsbitemList.Rows.Count > 0)
  885. {
  886. foreach (DataRow row in oldAsbitemList.Rows)
  887. {
  888. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  889. {
  890. #region 根据仪器类别生成二级科室
  891. var itemTypeId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "item_type" && m.OldKeyValue == row["department_id"].ToString()).FirstOrDefault().NewKeyValue);
  892. Guid? deviceTypeId = null;
  893. if (!string.IsNullOrWhiteSpace(row["device_type_id"].ToString()))
  894. {
  895. deviceTypeId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "device_type" && m.OldKeyValue == row["device_type_id"].ToString()).FirstOrDefault().NewKeyValue);
  896. var itemTypeEnt = await _itemTypeRepository.GetAsync(itemTypeId);
  897. var deviceTypeEnt = await _deviceTypeRepository.GetAsync(deviceTypeId.Value);
  898. var itemTypeChildEnt = await _itemTypeRepository.FirstOrDefaultAsync(m => m.ParentId == itemTypeEnt.Id && m.DisplayName == deviceTypeEnt.DisplayName);
  899. if (itemTypeChildEnt == null)
  900. {
  901. Guid autoItemTypeId = GuidGenerator.Create();
  902. #region 排序值
  903. int displayOrder = (await _itemTypeRepository.CountAsync(m => m.ParentId == itemTypeEnt.Id)) + 1;
  904. #endregion
  905. var item_type_data = new ItemType(autoItemTypeId)
  906. {
  907. DisplayName = deviceTypeEnt.DisplayName,
  908. DisplayOrder = displayOrder,
  909. SimpleCode = LanguageConverter.GetPYSimpleCode(deviceTypeEnt.DisplayName),
  910. CheckTypeFlag = itemTypeEnt.CheckTypeFlag,
  911. GuidTypeId = itemTypeEnt.GuidTypeId,
  912. IsMergeAsbitem = itemTypeEnt.IsMergeAsbitem,
  913. IsWrap = itemTypeEnt.IsWrap,
  914. MedicalReportTypeId = itemTypeEnt.MedicalReportTypeId,
  915. ParentId = itemTypeEnt.Id,
  916. PathCode = _itemTypeManager.CreatePathCode(itemTypeEnt.Id).Result,
  917. IsCheckRequest = itemTypeEnt.IsCheckRequest
  918. };
  919. await _itemTypeRepository.InsertAsync(item_type_data);
  920. itemTypeId = autoItemTypeId;
  921. }
  922. else
  923. {
  924. itemTypeId = itemTypeChildEnt.Id;
  925. }
  926. }
  927. #endregion
  928. Guid collectItemTypeId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "collect_item_type" && m.OldKeyValue == row["collect_item_type_id"].ToString()).FirstOrDefault().NewKeyValue);
  929. Guid asbitemId = GuidGenerator.Create();
  930. var data = new Asbitem(asbitemId)
  931. {
  932. DisplayName = row["asbitem_name"].ToString(),
  933. DisplayOrder = oldAsbitemList.Rows.IndexOf(row) + 1,
  934. SimpleCode = LanguageConverter.GetPYSimpleCode(row["asbitem_name"].ToString()),
  935. DefaultResult = row["default_result"].ToString(),
  936. DiagnosisFunction = "",
  937. IsActive = Convert.ToChar(row["valid_flag"].ToString()),
  938. IsContinueProcess = 'N',
  939. IsDiagnosisFunction = 'N',
  940. ItemTypeId = itemTypeId,
  941. Price = Convert.ToDecimal(row["price"]),
  942. DeviceTypeId = deviceTypeId,
  943. ClinicalMeaning = row["clinical_meaning"].ToString(),
  944. ForSexId = ConvertForSex(row["for_sex_id"].ToString()),
  945. CollectItemTypeId = collectItemTypeId,
  946. //InvoiceItemTypeId = InvoiceItemTypeId,
  947. IsBeforeEat = Convert.ToChar(row["before_eat_flag"].ToString()),
  948. IsCheck = Convert.ToChar(row["check_flag"].ToString()),
  949. IsItemResultMerger = Convert.ToChar(row["item_result_merger_flag"].ToString()),
  950. IsPictureRotate = Convert.ToChar(row["picture_rotate_flag"].ToString()),
  951. QueueTime = string.IsNullOrEmpty(row["queue_time"].ToString()) ? 0 : Convert.ToDecimal(row["queue_time"].ToString()),
  952. ShortName = row["short_name"].ToString()
  953. };
  954. await _asbitemRepository.InsertAsync(data);
  955. #region 指引信息
  956. if (!string.IsNullOrWhiteSpace(row["prompt"].ToString()))
  957. {
  958. var asbitemGuideData = new AsbitemGuide
  959. {
  960. AsbitemId = asbitemId,
  961. ForSexId = ForSexFlag.All,
  962. Guide = row["prompt"].ToString(),
  963. MedicalCenterId = defaultMedicalCenterId
  964. };
  965. await _asbitemGuideRepository.InsertAsync(asbitemGuideData);
  966. }
  967. #endregion
  968. var fieldComparison = new FieldComparison
  969. {
  970. TableName = "asbitem",
  971. FieldName = "id",
  972. NewKeyValue = asbitemId.ToString(),
  973. OldKeyValue = row["asbitem_id"].ToString()
  974. };
  975. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  976. await uow.CompleteAsync();
  977. }
  978. }
  979. }
  980. _logger.LogInformation($"组合项目数据处理完毕,处理数量{oldAsbitemList.Rows.Count}");
  981. }
  982. else
  983. {
  984. _logger.LogInformation("组合项目数据已存在,未处理");
  985. }
  986. }
  987. /// <summary>
  988. /// 迁移组合项目明细数据 无字典
  989. /// </summary>
  990. /// <returns></returns>
  991. [RemoteService(false)]
  992. public async Task TransferAsbitemDetailData()
  993. {
  994. var count = await _asbitemDetailRepository.GetCountAsync();
  995. if (count == 0)
  996. {
  997. var oldAsbitemDetailList = await Db.Ado.GetDataTableAsync("select * from asbitem_detail ");
  998. if (oldAsbitemDetailList.Rows.Count > 0)
  999. {
  1000. foreach (DataRow row in oldAsbitemDetailList.Rows)
  1001. {
  1002. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1003. {
  1004. Guid asbitemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "asbitem" && m.OldKeyValue == row["asbitem_id"].ToString()).FirstOrDefault().NewKeyValue);
  1005. Guid itemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "item" && m.OldKeyValue == row["item_id"].ToString()).FirstOrDefault().NewKeyValue);
  1006. var data = new AsbitemDetail
  1007. {
  1008. AsbitemId = asbitemId,
  1009. ItemId = itemId
  1010. };
  1011. await _asbitemDetailRepository.InsertAsync(data);
  1012. await uow.CompleteAsync();
  1013. }
  1014. }
  1015. }
  1016. _logger.LogInformation($"组合项目明细数据处理完毕,处理数量{oldAsbitemDetailList.Rows.Count}");
  1017. }
  1018. else
  1019. {
  1020. _logger.LogInformation("组合项目明细数据已存在,未处理");
  1021. }
  1022. }
  1023. /// <summary>
  1024. /// 迁移体检套餐数据
  1025. /// </summary>
  1026. /// <returns></returns>
  1027. [RemoteService(false)]
  1028. public async Task TransferMedicalPackageData()
  1029. {
  1030. var count = await _medicalPackageRepository.GetCountAsync();
  1031. if (count == 0)
  1032. {
  1033. var oldMedicalPackageList = await Db.Ado.GetDataTableAsync("select * from medical_package order by display_order");
  1034. if (oldMedicalPackageList.Rows.Count > 0)
  1035. {
  1036. foreach (DataRow row in oldMedicalPackageList.Rows)
  1037. {
  1038. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1039. {
  1040. Guid medicalPackageId = GuidGenerator.Create();
  1041. var data = new MedicalPackage(medicalPackageId)
  1042. {
  1043. DisplayName = row["medical_package_name"].ToString(),
  1044. DisplayOrder = oldMedicalPackageList.Rows.IndexOf(row) + 1,
  1045. SimpleCode = LanguageConverter.GetPYSimpleCode(row["medical_package_name"].ToString()),
  1046. ForSexId = ConvertForSex(row["for_sex_id"].ToString()),
  1047. IsActive = Convert.ToChar(row["valid_flag"].ToString()),
  1048. Price = Convert.ToDecimal(row["price"].ToString()),
  1049. Remark = row["remark"].ToString()
  1050. };
  1051. await _medicalPackageRepository.InsertAsync(data);
  1052. var fieldComparison = new FieldComparison
  1053. {
  1054. TableName = "medical_package",
  1055. FieldName = "id",
  1056. NewKeyValue = medicalPackageId.ToString(),
  1057. OldKeyValue = row["medical_package_id"].ToString()
  1058. };
  1059. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  1060. await uow.CompleteAsync();
  1061. }
  1062. }
  1063. }
  1064. _logger.LogInformation($"体检套餐数据处理完毕,处理数量{oldMedicalPackageList.Rows.Count}");
  1065. }
  1066. else
  1067. {
  1068. _logger.LogInformation("体检套餐数据已存在,未处理");
  1069. }
  1070. }
  1071. /// <summary>
  1072. /// 迁移体检套餐明细数据 无字典
  1073. /// </summary>
  1074. /// <returns></returns>
  1075. [RemoteService(false)]
  1076. public async Task TransferMedicalPackageDetailData()
  1077. {
  1078. var count = await _medicalPackageDetailRepository.GetCountAsync();
  1079. if (count == 0)
  1080. {
  1081. var oldMedicalPackageDetailList = await Db.Ado.GetDataTableAsync("select * from medical_package_detail ");
  1082. if (oldMedicalPackageDetailList.Rows.Count > 0)
  1083. {
  1084. foreach (DataRow row in oldMedicalPackageDetailList.Rows)
  1085. {
  1086. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1087. {
  1088. Guid asbitemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "asbitem" && m.OldKeyValue == row["asbitem_id"].ToString()).FirstOrDefault().NewKeyValue);
  1089. Guid MedicalPackageId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "medical_package" && m.OldKeyValue == row["medical_package_id"].ToString()).FirstOrDefault().NewKeyValue);
  1090. var asbitemEnt = await _asbitemRepository.GetAsync(asbitemId);
  1091. var data = new MedicalPackageDetail
  1092. {
  1093. AsbitemId = asbitemId,
  1094. Amount = 1,
  1095. MedicalPackageId = MedicalPackageId,
  1096. Price = asbitemEnt.Price
  1097. };
  1098. await _medicalPackageDetailRepository.InsertAsync(data);
  1099. await uow.CompleteAsync();
  1100. }
  1101. }
  1102. }
  1103. _logger.LogInformation($"体检套餐明细数据处理完毕,处理数量{oldMedicalPackageDetailList.Rows.Count}");
  1104. }
  1105. else
  1106. {
  1107. _logger.LogInformation("体检套餐明细数据已存在,未处理");
  1108. }
  1109. }
  1110. /// <summary>
  1111. /// 迁移诊断设置数据
  1112. /// </summary>
  1113. /// <returns></returns>
  1114. [RemoteService(false)]
  1115. public async Task TransferDiagnosisData()
  1116. {
  1117. var count = await _diagnosisRepository.GetCountAsync();
  1118. if (count == 0)
  1119. {
  1120. 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 ");
  1121. if (oldDiagnosisList.Rows.Count > 0)
  1122. {
  1123. foreach (DataRow row in oldDiagnosisList.Rows)
  1124. {
  1125. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1126. {
  1127. #region 根据仪器类别生成二级科室
  1128. var itemTypeId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "item_type" && m.OldKeyValue == row["department_id"].ToString()).FirstOrDefault().NewKeyValue);
  1129. Guid? deviceTypeId = null;
  1130. if (!string.IsNullOrWhiteSpace(row["device_type_id"].ToString()))
  1131. {
  1132. var fieldComparisonEnt = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "device_type" && m.OldKeyValue == row["device_type_id"].ToString()).FirstOrDefault();
  1133. if (fieldComparisonEnt != null)
  1134. {
  1135. deviceTypeId = Guid.Parse(fieldComparisonEnt.NewKeyValue);
  1136. var itemTypeEnt = await _itemTypeRepository.GetAsync(itemTypeId);
  1137. var deviceTypeEnt = await _deviceTypeRepository.GetAsync(deviceTypeId.Value);
  1138. var itemTypeChildEnt = await _itemTypeRepository.FirstOrDefaultAsync(m => m.ParentId == itemTypeEnt.Id && m.DisplayName == deviceTypeEnt.DisplayName);
  1139. if (itemTypeChildEnt == null)
  1140. {
  1141. Guid autoItemTypeId = GuidGenerator.Create();
  1142. #region 排序值
  1143. int displayOrder = (await _itemTypeRepository.CountAsync(m => m.ParentId == itemTypeEnt.Id)) + 1;
  1144. #endregion
  1145. var item_type_data = new ItemType(autoItemTypeId)
  1146. {
  1147. DisplayName = deviceTypeEnt.DisplayName,
  1148. DisplayOrder = displayOrder,
  1149. SimpleCode = LanguageConverter.GetPYSimpleCode(deviceTypeEnt.DisplayName),
  1150. CheckTypeFlag = itemTypeEnt.CheckTypeFlag,
  1151. GuidTypeId = itemTypeEnt.GuidTypeId,
  1152. IsMergeAsbitem = itemTypeEnt.IsMergeAsbitem,
  1153. IsWrap = itemTypeEnt.IsWrap,
  1154. MedicalReportTypeId = itemTypeEnt.MedicalReportTypeId,
  1155. ParentId = itemTypeEnt.Id,
  1156. PathCode = _itemTypeManager.CreatePathCode(itemTypeEnt.Id).Result,
  1157. IsCheckRequest = itemTypeEnt.IsCheckRequest
  1158. };
  1159. await _itemTypeRepository.InsertAsync(item_type_data);
  1160. itemTypeId = autoItemTypeId;
  1161. }
  1162. else
  1163. {
  1164. itemTypeId = itemTypeChildEnt.Id;
  1165. }
  1166. }
  1167. }
  1168. #endregion
  1169. Guid diagnosisId = GuidGenerator.Create();
  1170. var data = new Diagnosis(diagnosisId)
  1171. {
  1172. DisplayName = row["diagnosis_name"].ToString(),
  1173. DisplayOrder = oldDiagnosisList.Rows.IndexOf(row) + 1,
  1174. SimpleCode = LanguageConverter.GetPYSimpleCode(row["diagnosis_name"].ToString()),
  1175. ItemTypeId = itemTypeId,
  1176. DiagnosisLevelId = 1,
  1177. ForSexId = 'A',
  1178. IsIll = Convert.ToChar(row["ill_flag"].ToString()),
  1179. IsSummaryTemplate = Convert.ToChar(row["template_flag"].ToString()),
  1180. SuggestionName = row["suggestion_name"].ToString()
  1181. };
  1182. await _diagnosisRepository.InsertAsync(data);
  1183. var fieldComparison = new FieldComparison
  1184. {
  1185. TableName = "diagnosis",
  1186. FieldName = "id",
  1187. NewKeyValue = diagnosisId.ToString(),
  1188. OldKeyValue = row["diagnosis_id"].ToString()
  1189. };
  1190. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  1191. await uow.CompleteAsync();
  1192. }
  1193. }
  1194. }
  1195. _logger.LogInformation($"诊断设置数据处理完毕,处理数量{oldDiagnosisList.Rows.Count}");
  1196. }
  1197. else
  1198. {
  1199. _logger.LogInformation("诊断设置数据已存在,未处理");
  1200. }
  1201. }
  1202. /// <summary>
  1203. /// 迁移诊断建议数据
  1204. /// </summary>
  1205. /// <returns></returns>
  1206. [RemoteService(false)]
  1207. public async Task TransferSuggestionData()
  1208. {
  1209. var count = await _suggestionRepository.GetCountAsync();
  1210. if (count == 0)
  1211. {
  1212. var oldSuggestionList = await Db.Ado.GetDataTableAsync("select * from suggestion order by display_order,suggestion_id ");
  1213. if (oldSuggestionList.Rows.Count > 0)
  1214. {
  1215. foreach (DataRow row in oldSuggestionList.Rows)
  1216. {
  1217. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1218. {
  1219. Guid DiagnosisId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["diagnosis_id"].ToString()).FirstOrDefault().NewKeyValue);
  1220. Guid suggestionId = GuidGenerator.Create();
  1221. var data = new Suggestion(suggestionId)
  1222. {
  1223. DisplayOrder = oldSuggestionList.Rows.IndexOf(row) + 1,
  1224. DiagnosisId = DiagnosisId,
  1225. SuggestionType = SuggestionTypeFlag.HealthGuidance,
  1226. SuggestionContent = row["suggestion_content"].ToString()
  1227. };
  1228. await _suggestionRepository.InsertAsync(data);
  1229. var fieldComparison = new FieldComparison
  1230. {
  1231. TableName = "suggestion",
  1232. FieldName = "id",
  1233. NewKeyValue = suggestionId.ToString(),
  1234. OldKeyValue = row["suggestion_id"].ToString()
  1235. };
  1236. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  1237. await uow.CompleteAsync();
  1238. }
  1239. }
  1240. }
  1241. _logger.LogInformation($"诊断建议数据处理完毕,处理数量{oldSuggestionList.Rows.Count}");
  1242. }
  1243. else
  1244. {
  1245. _logger.LogInformation("诊断建议数据已存在,未处理");
  1246. }
  1247. }
  1248. /// <summary>
  1249. /// 迁移项目结果模板数据
  1250. /// </summary>
  1251. /// <returns></returns>
  1252. [RemoteService(false)]
  1253. public async Task TransferItemResultTemplateData()
  1254. {
  1255. var count = await _itemResultTemplateRepository.GetCountAsync();
  1256. if (count == 0)
  1257. {
  1258. var oldItemResultTemplateList = await Db.Ado.GetDataTableAsync("select * from item_result_template order by display_order,item_result_template_id ");
  1259. if (oldItemResultTemplateList.Rows.Count > 0)
  1260. {
  1261. foreach (DataRow row in oldItemResultTemplateList.Rows)
  1262. {
  1263. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1264. {
  1265. Guid? DiagnosisId = null;
  1266. if (!string.IsNullOrWhiteSpace(row["diagnosis_id"].ToString()))
  1267. {
  1268. var fieldComparisonDiagnosisEnt = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["diagnosis_id"].ToString()).FirstOrDefault();
  1269. if (fieldComparisonDiagnosisEnt != null)
  1270. {
  1271. DiagnosisId = Guid.Parse(fieldComparisonDiagnosisEnt.NewKeyValue);
  1272. }
  1273. }
  1274. Guid ItemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "item" && m.OldKeyValue == row["item_id"].ToString()).FirstOrDefault().NewKeyValue);
  1275. Guid itemResultTemplateId = GuidGenerator.Create();
  1276. var data = new ItemResultTemplate(itemResultTemplateId)
  1277. {
  1278. DisplayOrder = oldItemResultTemplateList.Rows.IndexOf(row) + 1,
  1279. DiagnosisId = DiagnosisId,
  1280. IsNameIntoSummary = Convert.ToChar(row["name_into_summary_flag"].ToString()),
  1281. IsResultIntoSummary = Convert.ToChar(row["result_into_summary_flag"].ToString()),
  1282. ItemId = ItemId,
  1283. Result = row["result"].ToString(),
  1284. SimpleCode = LanguageConverter.GetPYSimpleCode(row["result"].ToString()),
  1285. ResultStatusId = row["result_status_id"].ToString()
  1286. };
  1287. await _itemResultTemplateRepository.InsertAsync(data);
  1288. var fieldComparison = new FieldComparison
  1289. {
  1290. TableName = "item_result_template",
  1291. FieldName = "id",
  1292. NewKeyValue = itemResultTemplateId.ToString(),
  1293. OldKeyValue = row["item_result_template_id"].ToString()
  1294. };
  1295. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  1296. await uow.CompleteAsync();
  1297. }
  1298. }
  1299. }
  1300. _logger.LogInformation($"项目结果模板数据处理完毕,处理数量{oldItemResultTemplateList.Rows.Count}");
  1301. }
  1302. else
  1303. {
  1304. _logger.LogInformation("项目结果模板数据已存在,未处理");
  1305. }
  1306. }
  1307. /// <summary>
  1308. /// 迁移项目结果匹配数据
  1309. /// </summary>
  1310. /// <returns></returns>
  1311. [RemoteService(false)]
  1312. public async Task TransferItemResultMatchData()
  1313. {
  1314. var count = await _ItemResultMatchRepository.GetCountAsync();
  1315. if (count == 0)
  1316. {
  1317. var oldItemResultMatchList = await Db.Ado.GetDataTableAsync("select * from item_result_match order by display_order,item_result_match_id ");
  1318. if (oldItemResultMatchList.Rows.Count > 0)
  1319. {
  1320. foreach (DataRow row in oldItemResultMatchList.Rows)
  1321. {
  1322. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1323. {
  1324. var fieldComparisonDiagnosisEnt = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["diagnosis_id"].ToString()).FirstOrDefault();
  1325. if (fieldComparisonDiagnosisEnt != null)
  1326. {
  1327. Guid DiagnosisId = Guid.Parse(fieldComparisonDiagnosisEnt.NewKeyValue);
  1328. Guid ItemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "item" && m.OldKeyValue == row["item_id"].ToString()).FirstOrDefault().NewKeyValue);
  1329. Guid itemResultMatchId = GuidGenerator.Create();
  1330. var data = new ItemResultMatch(itemResultMatchId)
  1331. {
  1332. DisplayOrder = oldItemResultMatchList.Rows.IndexOf(row) + 1,
  1333. DiagnosisId = DiagnosisId,
  1334. ItemId = ItemId,
  1335. Result = row["result"].ToString()
  1336. };
  1337. var ent = await _ItemResultMatchRepository.InsertAsync(data, true);
  1338. var fieldComparison = new FieldComparison
  1339. {
  1340. TableName = "item_result_match",
  1341. FieldName = "id",
  1342. NewKeyValue = ent.Id.ToString(),
  1343. OldKeyValue = row["item_result_match_id"].ToString()
  1344. };
  1345. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  1346. }
  1347. await uow.CompleteAsync();
  1348. }
  1349. }
  1350. }
  1351. _logger.LogInformation($"项目结果匹配数据处理完毕,处理数量{oldItemResultMatchList.Rows.Count}");
  1352. }
  1353. else
  1354. {
  1355. _logger.LogInformation("项目结果匹配数据已存在,未处理");
  1356. }
  1357. }
  1358. /// <summary>
  1359. /// 迁移项目参考范围数据 无字典
  1360. /// </summary>
  1361. /// <returns></returns>
  1362. [RemoteService(false)]
  1363. public async Task TransferReferenceRangeData()
  1364. {
  1365. var count = (await _referenceRangeRepository.GetQueryableAsync()).Where(m => m.ReferenceRangeTypeFlag != ItemReferenceRangeTypeFlag.Character).Count();
  1366. if (count == 0)
  1367. {
  1368. var oldReferenceRangeList = await Db.Ado.GetDataTableAsync("select * from reference_range order by reference_range_id ");
  1369. if (oldReferenceRangeList.Rows.Count > 0)
  1370. {
  1371. foreach (DataRow row in oldReferenceRangeList.Rows)
  1372. {
  1373. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1374. {
  1375. Guid? LowerDiagnosisId = null;
  1376. Guid? UpperDiagnosisId = null;
  1377. var fieldComparisonLowerDiagnosisEnt = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["lower_diagnosis_id"].ToString()).FirstOrDefault();
  1378. var fieldComparisonUpperDiagnosisEnt = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["upper_diagnosis_id"].ToString()).FirstOrDefault();
  1379. if (fieldComparisonLowerDiagnosisEnt != null)
  1380. {
  1381. LowerDiagnosisId = Guid.Parse(fieldComparisonLowerDiagnosisEnt.NewKeyValue);
  1382. }
  1383. if (fieldComparisonUpperDiagnosisEnt != null)
  1384. {
  1385. UpperDiagnosisId = Guid.Parse(fieldComparisonUpperDiagnosisEnt.NewKeyValue);
  1386. }
  1387. Guid ItemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "item" && m.OldKeyValue == row["item_id"].ToString()).FirstOrDefault().NewKeyValue);
  1388. Guid referenceRangeId = GuidGenerator.Create();
  1389. var data = new ReferenceRange(referenceRangeId)
  1390. {
  1391. ItemId = ItemId,
  1392. AgeLowerLimit = (short)Convert.ToInt32(row["age_lower_limit"].ToString()),
  1393. AgeUpperLimit = (short)Convert.ToInt32(row["age_upper_limit"].ToString()),
  1394. CriticalRangeValue = string.Empty,
  1395. ForSexId = ConvertForSex(row["for_sex_id"].ToString()),
  1396. LowerDiagnosisId = LowerDiagnosisId,
  1397. ReferenceRangeTypeFlag = ItemReferenceRangeTypeFlag.Number,
  1398. ReferenceRangeValue = Convert.ToDecimal(row["lower_limit"].ToString()).ToString("#0.####") + "-" + Convert.ToDecimal(row["upper_limit"].ToString()).ToString("#0.####"),
  1399. UpperDiagnosisId = UpperDiagnosisId
  1400. };
  1401. await _referenceRangeRepository.InsertAsync(data);
  1402. await uow.CompleteAsync();
  1403. }
  1404. }
  1405. }
  1406. _logger.LogInformation($"项目参考范围数据处理完毕,处理数量{oldReferenceRangeList.Rows.Count}");
  1407. }
  1408. else
  1409. {
  1410. _logger.LogInformation("项目参考范围数据已存在,未处理");
  1411. }
  1412. }
  1413. /// <summary>
  1414. /// 迁移条码分组数据
  1415. /// </summary>
  1416. /// <returns></returns>
  1417. [RemoteService(false)]
  1418. public async Task TransferSampleGroupData()
  1419. {
  1420. var count = await _sampleGroupRepository.GetCountAsync();
  1421. if (count == 0)
  1422. {
  1423. //获取一条条码类型的数据
  1424. Guid defaultSampleTypeId = Guid.Empty;
  1425. var sampleTypeEnt = await _sampleTypeRepository.FirstOrDefaultAsync();
  1426. if (sampleTypeEnt != null)
  1427. {
  1428. defaultSampleTypeId = sampleTypeEnt.Id;
  1429. }
  1430. if (defaultSampleTypeId != Guid.Empty)
  1431. {
  1432. var oldSampleGroupList = await Db.Ado.GetDataTableAsync("select * from vessels_type order by display_order");
  1433. if (oldSampleGroupList.Rows.Count > 0)
  1434. {
  1435. foreach (DataRow row in oldSampleGroupList.Rows)
  1436. {
  1437. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1438. {
  1439. #region 转成成新的标本类型ID
  1440. Guid newSampleTypeId = defaultSampleTypeId; //默认取其他 ID
  1441. if (!string.IsNullOrWhiteSpace(row["specimen_type_id"].ToString()))
  1442. {
  1443. var oldSampleType = (await _fieldComparisonRepository.GetQueryableAsync())
  1444. .Where(m => m.TableName == "sample_type" && m.OldKeyValue == row["specimen_type_id"].ToString()).FirstOrDefault();
  1445. if (oldSampleType != null)
  1446. {
  1447. newSampleTypeId = Guid.Parse(oldSampleType.NewKeyValue);
  1448. }
  1449. }
  1450. #endregion
  1451. Guid sampleGroupId = GuidGenerator.Create();
  1452. var data = new SampleGroup(sampleGroupId)
  1453. {
  1454. DisplayName = row["vessels_type_name"].ToString(),
  1455. DisplayOrder = oldSampleGroupList.Rows.IndexOf(row) + 1,
  1456. SimpleCode = LanguageConverter.GetPYSimpleCode(row["vessels_type_name"].ToString()),
  1457. SampleContainerId = defaultSampleContainerId,
  1458. SampleTypeId = newSampleTypeId
  1459. };
  1460. await _sampleGroupRepository.InsertAsync(data);
  1461. var fieldComparison = new FieldComparison
  1462. {
  1463. TableName = "sample_group",
  1464. FieldName = "id",
  1465. NewKeyValue = sampleGroupId.ToString(),
  1466. OldKeyValue = row["vessels_type_id"].ToString()
  1467. };
  1468. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  1469. await uow.CompleteAsync();
  1470. }
  1471. }
  1472. }
  1473. _logger.LogInformation($"条码分组数据处理完毕,处理数量{oldSampleGroupList.Rows.Count}");
  1474. }
  1475. else
  1476. {
  1477. _logger.LogInformation($"条码类型未获取到默认数据,跳过条码分组数据处理");
  1478. }
  1479. }
  1480. else
  1481. {
  1482. _logger.LogInformation("条码分组数据已存在,未处理");
  1483. }
  1484. }
  1485. /// <summary>
  1486. /// 迁移条码分组明细数据
  1487. /// </summary>
  1488. /// <returns></returns>
  1489. [RemoteService(false)]
  1490. public async Task TransferSampleGroupDetailData()
  1491. {
  1492. var count = await _sampleGroupDetailRepository.GetCountAsync();
  1493. if (count == 0)
  1494. {
  1495. var oldSampleGroupDetailList = await Db.Ado.GetDataTableAsync("select * from vessels_type_detail ");
  1496. if (oldSampleGroupDetailList.Rows.Count > 0)
  1497. {
  1498. foreach (DataRow row in oldSampleGroupDetailList.Rows)
  1499. {
  1500. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1501. {
  1502. Guid newSampleGroupId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
  1503. .Where(m => m.TableName == "sample_group" && m.OldKeyValue == row["vessels_type_id"].ToString()).FirstOrDefault().NewKeyValue);
  1504. Guid newAsbitemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
  1505. .Where(m => m.TableName == "asbitem" && m.OldKeyValue == row["asbitem_id"].ToString()).FirstOrDefault().NewKeyValue);
  1506. var data = new SampleGroupDetail
  1507. {
  1508. AsbitemId = newAsbitemId,
  1509. SampleGroupId = newSampleGroupId
  1510. };
  1511. await _sampleGroupDetailRepository.InsertAsync(data);
  1512. await uow.CompleteAsync();
  1513. }
  1514. }
  1515. }
  1516. _logger.LogInformation($"条码分组明细数据处理完毕,处理数量{oldSampleGroupDetailList.Rows.Count}");
  1517. }
  1518. else
  1519. {
  1520. _logger.LogInformation("条码分组明细数据已存在,未处理");
  1521. }
  1522. }
  1523. /// <summary>
  1524. /// 迁移体检单位数据 一级
  1525. /// </summary>
  1526. /// <returns></returns>
  1527. [RemoteService(false)]
  1528. public async Task TransferTopCustomerOrgData()
  1529. {
  1530. var count = await _customerOrgRepository.GetCountAsync();
  1531. if (count == 0)
  1532. {
  1533. var oldCustomerOrgList = await Db.Ado.GetDataTableAsync("select * from org where len(org_id)=5 order by display_order asc");
  1534. if (oldCustomerOrgList.Rows.Count > 0)
  1535. {
  1536. foreach (DataRow row in oldCustomerOrgList.Rows)
  1537. {
  1538. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1539. {
  1540. Guid customerOrgId = GuidGenerator.Create();
  1541. #region 备注 导入联系人姓名、电话
  1542. string remark = "";
  1543. if (!string.IsNullOrWhiteSpace(row["linkman"].ToString()))
  1544. {
  1545. remark = row["linkman"].ToString();
  1546. }
  1547. if (!string.IsNullOrWhiteSpace(row["telephone"].ToString()))
  1548. {
  1549. if (!string.IsNullOrWhiteSpace(remark))
  1550. {
  1551. remark += "|" + row["telephone"].ToString();
  1552. }
  1553. else
  1554. {
  1555. remark = row["telephone"].ToString();
  1556. }
  1557. }
  1558. #endregion
  1559. var data = new CustomerOrg(customerOrgId)
  1560. {
  1561. Accounts = row["accounts"].ToString(),
  1562. Address = row["address"].ToString(),
  1563. Bank = row["bank"].ToString(),
  1564. DisplayName = row["org_name"].ToString(),
  1565. DisplayOrder = oldCustomerOrgList.Rows.IndexOf(row) + 1,
  1566. Fax = row["fax"].ToString(),
  1567. InvoiceName = row["org_name"].ToString(),
  1568. IsActive = 'Y',
  1569. IsLock = Convert.ToChar(row["lock_flag"].ToString()),
  1570. MedicalCenterId = defaultMedicalCenterId,
  1571. OrgTypeId = defaultOrgTypeId, //默认为私营
  1572. ParentId = null,
  1573. PathCode = (oldCustomerOrgList.Rows.IndexOf(row) + 1).ToString().PadLeft(5, '0'),
  1574. PostalCode = row["postalcode"].ToString(),
  1575. Remark = remark,
  1576. ShortName = row["short_name"].ToString(),
  1577. SimpleCode = LanguageConverter.GetPYSimpleCode(row["org_name"].ToString()),
  1578. Telephone = row["telephone"].ToString(),
  1579. };
  1580. await _customerOrgRepository.InsertAsync(data);
  1581. var fieldComparison = new FieldComparison
  1582. {
  1583. FieldName = "id",
  1584. NewKeyValue = customerOrgId.ToString(),
  1585. OldKeyValue = row["org_id"].ToString(),
  1586. TableName = "customer_org"
  1587. };
  1588. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  1589. await uow.CompleteAsync();
  1590. }
  1591. }
  1592. }
  1593. _logger.LogInformation($"体检单位一级数据处理完毕,处理数量{oldCustomerOrgList.Rows.Count}");
  1594. }
  1595. else
  1596. {
  1597. _logger.LogInformation("体检单位一级数据已存在,未处理");
  1598. }
  1599. }
  1600. /// <summary>
  1601. /// 迁移体检单位数据 二级
  1602. /// </summary>
  1603. /// <returns></returns>
  1604. [RemoteService(false)]
  1605. public async Task TransferTwoCustomerOrgData()
  1606. {
  1607. var count = (await _customerOrgRepository.GetQueryableAsync()).Where(m => m.PathCode.Length > 5).Count();
  1608. if (count == 0)
  1609. {
  1610. var oldCustomerOrgList = await Db.Ado.GetDataTableAsync("select * from [dbo].[org] where len(org_id)=8 order by org_id asc");
  1611. if (oldCustomerOrgList.Rows.Count > 0)
  1612. {
  1613. List<CustomerOrg> customerOrgList = await _customerOrgRepository.GetListAsync(m => m.ParentId == null);
  1614. List<FieldComparison> fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "customer_org");
  1615. foreach (DataRow row in oldCustomerOrgList.Rows)
  1616. {
  1617. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1618. {
  1619. #region 查找上级ID
  1620. string oldId = row["org_id"].ToString();
  1621. string oldParentId = oldId.Substring(0, 5);
  1622. Guid parentId = Guid.Parse(fieldComparisonList.Where(m => m.OldKeyValue == oldParentId).FirstOrDefault().NewKeyValue);
  1623. #endregion
  1624. Guid customerOrgId = GuidGenerator.Create();
  1625. #region 备注 导入联系人姓名、电话
  1626. string remark = "";
  1627. if (!string.IsNullOrWhiteSpace(row["linkman"].ToString()))
  1628. {
  1629. remark = row["linkman"].ToString();
  1630. }
  1631. if (!string.IsNullOrWhiteSpace(row["telephone"].ToString()))
  1632. {
  1633. if (!string.IsNullOrWhiteSpace(remark))
  1634. {
  1635. remark += "|" + row["telephone"].ToString();
  1636. }
  1637. else
  1638. {
  1639. remark = row["telephone"].ToString();
  1640. }
  1641. }
  1642. #endregion
  1643. var data = new CustomerOrg(customerOrgId)
  1644. {
  1645. Accounts = row["accounts"].ToString(),
  1646. Address = row["address"].ToString(),
  1647. Bank = row["bank"].ToString(),
  1648. DisplayName = row["org_name"].ToString(),
  1649. DisplayOrder = oldCustomerOrgList.Rows.IndexOf(row) + 1,
  1650. Fax = row["fax"].ToString(),
  1651. InvoiceName = row["org_name"].ToString(),
  1652. IsActive = 'Y',
  1653. IsLock = Convert.ToChar(row["lock_flag"].ToString()),
  1654. MedicalCenterId = defaultMedicalCenterId,
  1655. OrgTypeId = defaultOrgTypeId, //默认为私营
  1656. ParentId = parentId,
  1657. PathCode = _customerOrgManager.CreatePathCode(parentId).Result,
  1658. PostalCode = row["postalcode"].ToString(),
  1659. Remark = remark,
  1660. ShortName = row["short_name"].ToString(),
  1661. SimpleCode = LanguageConverter.GetPYSimpleCode(row["org_name"].ToString()),
  1662. Telephone = row["telephone"].ToString(),
  1663. };
  1664. await _customerOrgRepository.InsertAsync(data);
  1665. var fieldComparison = new FieldComparison
  1666. {
  1667. FieldName = "id",
  1668. NewKeyValue = customerOrgId.ToString(),
  1669. OldKeyValue = row["org_id"].ToString(),
  1670. TableName = "customer_org"
  1671. };
  1672. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  1673. await uow.CompleteAsync();
  1674. }
  1675. }
  1676. }
  1677. _logger.LogInformation($"体检单位二级数据处理完毕,处理数量{oldCustomerOrgList.Rows.Count}");
  1678. }
  1679. else
  1680. {
  1681. _logger.LogInformation("体检单位二级数据已存在,未处理");
  1682. }
  1683. }
  1684. /// <summary>
  1685. /// 迁移体检单位数据 三级
  1686. /// </summary>
  1687. /// <returns></returns>
  1688. [RemoteService(false)]
  1689. public async Task TransferThreeCustomerOrgData()
  1690. {
  1691. var count = (await _customerOrgRepository.GetQueryableAsync()).Where(m => m.PathCode.Length > 11).Count();
  1692. if (count == 0)
  1693. {
  1694. var oldCustomerOrgList = await Db.Ado.GetDataTableAsync("select * from [dbo].[org] where len(org_id)=11 order by org_id asc");
  1695. if (oldCustomerOrgList.Rows.Count > 0)
  1696. {
  1697. List<CustomerOrg> customerOrgList = await _customerOrgRepository.GetListAsync(m => m.ParentId == null);
  1698. List<FieldComparison> fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "customer_org");
  1699. foreach (DataRow row in oldCustomerOrgList.Rows)
  1700. {
  1701. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1702. {
  1703. #region 查找上级ID
  1704. string oldId = row["org_id"].ToString();
  1705. string oldParentId = oldId.Substring(0, 8);
  1706. Guid parentId = Guid.Parse(fieldComparisonList.Where(m => m.OldKeyValue == oldParentId).FirstOrDefault().NewKeyValue);
  1707. #endregion
  1708. Guid customerOrgId = GuidGenerator.Create();
  1709. #region 备注 导入联系人姓名、电话
  1710. string remark = "";
  1711. if (!string.IsNullOrWhiteSpace(row["linkman"].ToString()))
  1712. {
  1713. remark = row["linkman"].ToString();
  1714. }
  1715. if (!string.IsNullOrWhiteSpace(row["telephone"].ToString()))
  1716. {
  1717. if (!string.IsNullOrWhiteSpace(remark))
  1718. {
  1719. remark += "|" + row["telephone"].ToString();
  1720. }
  1721. else
  1722. {
  1723. remark = row["telephone"].ToString();
  1724. }
  1725. }
  1726. #endregion
  1727. var data = new CustomerOrg(customerOrgId)
  1728. {
  1729. Accounts = row["accounts"].ToString(),
  1730. Address = row["address"].ToString(),
  1731. Bank = row["bank"].ToString(),
  1732. DisplayName = row["org_name"].ToString(),
  1733. DisplayOrder = oldCustomerOrgList.Rows.IndexOf(row) + 1,
  1734. Fax = row["fax"].ToString(),
  1735. InvoiceName = row["org_name"].ToString(),
  1736. IsActive = 'Y',
  1737. IsLock = Convert.ToChar(row["lock_flag"].ToString()),
  1738. MedicalCenterId = defaultMedicalCenterId,
  1739. OrgTypeId = defaultOrgTypeId, //默认为私营
  1740. ParentId = parentId,
  1741. PathCode = _customerOrgManager.CreatePathCode(parentId).Result,
  1742. PostalCode = row["postalcode"].ToString(),
  1743. Remark = remark,
  1744. ShortName = row["short_name"].ToString(),
  1745. SimpleCode = LanguageConverter.GetPYSimpleCode(row["org_name"].ToString()),
  1746. Telephone = row["telephone"].ToString(),
  1747. };
  1748. await _customerOrgRepository.InsertAsync(data);
  1749. var fieldComparison = new FieldComparison
  1750. {
  1751. FieldName = "id",
  1752. NewKeyValue = customerOrgId.ToString(),
  1753. OldKeyValue = row["org_id"].ToString(),
  1754. TableName = "customer_org"
  1755. };
  1756. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  1757. await uow.CompleteAsync();
  1758. }
  1759. }
  1760. }
  1761. _logger.LogInformation($"体检单位三级数据处理完毕,处理数量{oldCustomerOrgList.Rows.Count}");
  1762. }
  1763. else
  1764. {
  1765. _logger.LogInformation("体检单位三级数据已存在,未处理");
  1766. }
  1767. }
  1768. /// <summary>
  1769. /// 迁移单位体检次数数据 无字典
  1770. /// </summary>
  1771. /// <returns></returns>
  1772. [RemoteService(false)]
  1773. public async Task TransferCustomerOrgRegisterData()
  1774. {
  1775. var count = await _customerOrgRegisterRepository.GetCountAsync();
  1776. if (count == 0)
  1777. {
  1778. var oldCustomerOrgRegisterList = await Db.Ado.GetDataTableAsync("select * from org_medical_register order by org_medical_times");
  1779. if (oldCustomerOrgRegisterList.Rows.Count > 0)
  1780. {
  1781. List<FieldComparison> fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "customer_org");
  1782. foreach (DataRow row in oldCustomerOrgRegisterList.Rows)
  1783. {
  1784. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1785. {
  1786. Guid customerOrgId = Guid.Parse(fieldComparisonList.Where(m => m.OldKeyValue == row["org_id"].ToString()).FirstOrDefault().NewKeyValue);
  1787. Guid customerOrgRegisterId = GuidGenerator.Create();
  1788. if (customerOrgId == GuidFlag.PersonCustomerOrgId)
  1789. customerOrgRegisterId = GuidFlag.PersonCustomerOrgRegisterId;
  1790. var data = new CustomerOrgRegister(customerOrgRegisterId)
  1791. {
  1792. BeginTime = Convert.ToDateTime(row["start_time"].ToString()),
  1793. CustomerOrgId = customerOrgId,
  1794. EndTime = !string.IsNullOrWhiteSpace(row["end_time"].ToString()) ? Convert.ToDateTime(row["end_time"].ToString()) : null,
  1795. IsComplete = Convert.ToChar(row["complete_flag"].ToString()),
  1796. MedicalTimes = (short)Convert.ToInt32(row["org_medical_times"].ToString()),
  1797. RegisterName = "",
  1798. RegisterNo = ""
  1799. };
  1800. await _customerOrgRegisterRepository.InsertAsync(data);
  1801. await uow.CompleteAsync();
  1802. }
  1803. }
  1804. }
  1805. _logger.LogInformation($"单位体检次数数据处理完毕,处理数量{oldCustomerOrgRegisterList.Rows.Count}");
  1806. }
  1807. else
  1808. {
  1809. _logger.LogInformation("单位体检次数数据已存在,未处理");
  1810. }
  1811. }
  1812. /// <summary>
  1813. /// 迁移单位分组
  1814. /// </summary>
  1815. /// <returns></returns>
  1816. [RemoteService(false)]
  1817. public async Task TransferCustomerOrgGroupData()
  1818. {
  1819. var count = await _customerOrgGroupRepository.GetCountAsync();
  1820. if (count == 0)
  1821. {
  1822. var oldCustomerOrgGroupList = await Db.Ado.GetDataTableAsync("select * from org_group order by display_order asc");
  1823. if (oldCustomerOrgGroupList.Rows.Count > 0)
  1824. {
  1825. List<FieldComparison> fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "customer_org");
  1826. List<CustomerOrgRegister> customerOrgRegisterList = await _customerOrgRegisterRepository.GetListAsync();
  1827. foreach (DataRow row in oldCustomerOrgGroupList.Rows)
  1828. {
  1829. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1830. {
  1831. //新系统单位ID
  1832. Guid customerOrgId = Guid.Parse(fieldComparisonList.Where(m => m.OldKeyValue == row["org_id"].ToString()).FirstOrDefault().NewKeyValue);
  1833. Guid customerOrgRegisterId = customerOrgRegisterList.Where(m => m.CustomerOrgId == customerOrgId
  1834. && m.MedicalTimes == (short)Convert.ToInt32(row["org_medical_times"].ToString())).FirstOrDefault().Id;
  1835. Guid customerOrgGroupId = GuidGenerator.Create();
  1836. var data = new CustomerOrgGroup(customerOrgGroupId)
  1837. {
  1838. AgeLowerLimit = (short)Convert.ToInt32(row["age_lower_limit"].ToString()),
  1839. AgeUpperLimit = (short)Convert.ToInt32(row["age_upper_limit"].ToString()),
  1840. CustomerOrgRegisterId = customerOrgRegisterId,
  1841. DisplayName = row["org_group_name"].ToString(),
  1842. DisplayOrder = oldCustomerOrgGroupList.Rows.IndexOf(row) + 1,
  1843. ForSexId = ConvertForSex(row["for_sex_id"].ToString()),
  1844. JobPost = row["job_post"].ToString(),
  1845. JobTitle = row["job_title"].ToString(),
  1846. MaritalStatusId = Convert.ToChar(row["marital_status_id"].ToString()),
  1847. Price = Convert.ToDecimal(row["price"].ToString()),
  1848. Remark = row["remark"].ToString()
  1849. };
  1850. await _customerOrgGroupRepository.InsertAsync(data);
  1851. var fieldComparison = new FieldComparison
  1852. {
  1853. FieldName = "id",
  1854. NewKeyValue = customerOrgGroupId.ToString(),
  1855. OldKeyValue = row["org_group_id"].ToString(),
  1856. TableName = "customer_org_group"
  1857. };
  1858. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  1859. await uow.CompleteAsync();
  1860. }
  1861. }
  1862. }
  1863. _logger.LogInformation($"单位分组数据处理完毕,处理数量{oldCustomerOrgGroupList.Rows.Count}");
  1864. }
  1865. else
  1866. {
  1867. _logger.LogInformation("单位分组数据已存在,未处理");
  1868. }
  1869. }
  1870. /// <summary>
  1871. /// 迁移单位分组明细数据
  1872. /// </summary>
  1873. /// <returns></returns>
  1874. [RemoteService(false)]
  1875. public async Task TransferCustomerOrgGroupDetailData()
  1876. {
  1877. var count = await _customerOrgGroupDetailRepository.GetCountAsync();
  1878. if (count == 0)
  1879. {
  1880. var oldCustomerOrgGroupList = await Db.Ado.GetDataTableAsync("select * from org_group_detail ");
  1881. if (oldCustomerOrgGroupList.Rows.Count > 0)
  1882. {
  1883. foreach (DataRow row in oldCustomerOrgGroupList.Rows)
  1884. {
  1885. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1886. {
  1887. //新系统单位分组ID
  1888. Guid customerOrgGroupId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
  1889. .Where(m => m.TableName == "customer_org_group" && m.OldKeyValue == row["org_group_id"].ToString()).FirstOrDefault().NewKeyValue);
  1890. Guid asbitemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
  1891. .Where(m => m.TableName == "asbitem" && m.OldKeyValue == row["asbitem_id"].ToString()).FirstOrDefault().NewKeyValue);
  1892. var data = new CustomerOrgGroupDetail
  1893. {
  1894. AsbitemId = asbitemId,
  1895. CustomerOrgGroupId = customerOrgGroupId,
  1896. Price = Convert.ToDecimal(row["price"].ToString()),
  1897. Amount = 1
  1898. };
  1899. await _customerOrgGroupDetailRepository.InsertAsync(data);
  1900. await uow.CompleteAsync();
  1901. }
  1902. }
  1903. }
  1904. _logger.LogInformation($"单位分组明细数据处理完毕,处理数量{oldCustomerOrgGroupList.Rows.Count}");
  1905. }
  1906. else
  1907. {
  1908. _logger.LogInformation("单位分组明细数据已存在,未处理");
  1909. }
  1910. }
  1911. #endregion
  1912. #region 人员登记
  1913. /// <summary>
  1914. /// 迁移人员登记数据
  1915. /// </summary>
  1916. /// <returns></returns>
  1917. public async Task TransferPatientRegisterData()
  1918. {
  1919. string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register' ");
  1920. var oldPatientRegisterList = await Db.Ado.GetDataTableAsync($"select top 1000 * from patient_register where patient_register_id>'{nextKeyValue}' order by patient_register_id asc");
  1921. if (oldPatientRegisterList.Rows.Count > 0)
  1922. {
  1923. await Db.Ado.ExecuteCommandAsync($"update tb_export_key set starttime=getdate() where tablename='patient_register' ");
  1924. List<FieldComparison> fieldComparisonList = await _fieldComparisonRepository.GetListAsync();
  1925. var userList = await _identityUserRepository.GetListAsync();
  1926. List<CustomerOrgRegister> customerOrgRegisterList = await _customerOrgRegisterRepository.GetListAsync();
  1927. foreach (DataRow row in oldPatientRegisterList.Rows)
  1928. {
  1929. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1930. {
  1931. //档案ID
  1932. Guid patientId = Guid.Empty;
  1933. #region 处理档案,未找到档案就生成
  1934. var patientEnt = await _patientRepository.FirstOrDefaultAsync(m => m.PatientNo == row["patient_id"].ToString());
  1935. if (patientEnt == null)
  1936. {
  1937. string nationId = null;
  1938. if (!string.IsNullOrWhiteSpace(row["nation_id"].ToString()))
  1939. {
  1940. nationId = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "nation" && m.OldKeyValue == row["nation_id"].ToString()).FirstOrDefault().NewKeyValue;
  1941. }
  1942. Guid autoPatientId = GuidGenerator.Create(); //档案ID
  1943. var dataPatient = new Patient(autoPatientId)
  1944. {
  1945. Address = row["address"].ToString(),
  1946. BirthDate = string.IsNullOrEmpty(row["birth_date"].ToString()) ? null : Convert.ToDateTime(row["birth_date"].ToString()),
  1947. BirthPlaceId = null,
  1948. DisplayName = row["name"].ToString(),
  1949. Email = row["email"].ToString(),
  1950. IdNo = row["id_card_no"].ToString(),
  1951. MaritalStatusId = Convert.ToChar(row["marital_status_id"].ToString()),
  1952. MedicalCenterId = defaultMedicalCenterId,
  1953. MobileTelephone = row["mobile_telephone"].ToString(),
  1954. NationId = nationId,
  1955. PatientNo = row["patient_id"].ToString(),
  1956. PatientPassword = row["patient_password"].ToString(),
  1957. PostalCode = row["postalcode"].ToString(),
  1958. SexId = ConvertSex(row["sex_id"].ToString()),
  1959. SimpleCode = LanguageConverter.GetPYSimpleCode(row["name"].ToString()),
  1960. Telephone = row["telephone"].ToString()
  1961. };
  1962. await _patientRepository.InsertAsync(dataPatient, true);
  1963. patientId = autoPatientId;
  1964. }
  1965. else
  1966. {
  1967. patientId = patientEnt.Id;
  1968. }
  1969. #endregion
  1970. Guid patientRegisterId = GuidGenerator.Create(); //生成登记ID
  1971. #region 转换审核医生ID
  1972. Guid? AuditDoctorId = null;
  1973. if (!string.IsNullOrWhiteSpace(row["audit_doctor"].ToString()))
  1974. {
  1975. var userEnt = userList.Where(m => m.UserName == row["audit_doctor"].ToString().Trim()).FirstOrDefault();
  1976. if (userEnt != null)
  1977. {
  1978. AuditDoctorId = userEnt.Id;
  1979. }
  1980. }
  1981. #endregion
  1982. #region 转换单位分组ID
  1983. Guid? customerOrgGroupId = null;
  1984. if (!string.IsNullOrWhiteSpace(row["org_group_id"].ToString()))
  1985. {
  1986. var customerOrgGroupEnt = fieldComparisonList.Where(m => m.TableName == "customer_org_group" && m.OldKeyValue == row["org_group_id"].ToString()).FirstOrDefault();
  1987. if (customerOrgGroupEnt != null)
  1988. {
  1989. customerOrgGroupId = Guid.Parse(customerOrgGroupEnt.NewKeyValue);
  1990. }
  1991. }
  1992. #endregion
  1993. #region 转换单位ID 部门
  1994. Guid customerOrgId = Guid.Parse(fieldComparisonList.Where(m => m.TableName == "customer_org" && m.OldKeyValue == row["org_id"].ToString()).FirstOrDefault().NewKeyValue);
  1995. #endregion
  1996. #region 转换单位体检次数ID 没有增加默认值
  1997. Guid customerOrgRegisterId = GuidFlag.PersonCustomerOrgRegisterId;
  1998. if (row["org_id"].ToString() != "00000")
  1999. {
  2000. Guid topCustomerOrgId = Guid.Parse(fieldComparisonList.Where(m => m.TableName == "customer_org" && m.OldKeyValue == row["org_id"].ToString().Substring(0, 5)).FirstOrDefault().NewKeyValue);
  2001. var customerOrgRegisterEnt = customerOrgRegisterList.Where(m => m.CustomerOrgId == topCustomerOrgId
  2002. && m.MedicalTimes == (short)Convert.ToInt32(row["org_medical_times"].ToString())).FirstOrDefault();
  2003. if (customerOrgRegisterEnt != null)
  2004. {
  2005. customerOrgRegisterId = customerOrgRegisterEnt.Id;
  2006. }
  2007. }
  2008. #endregion
  2009. #region 转换体检结论ID
  2010. Guid? medicalConclusionId = null;
  2011. if (!string.IsNullOrWhiteSpace(row["medical_conclusion_id"].ToString()))
  2012. {
  2013. var medicalConclusionEnt = fieldComparisonList.Where(m => m.TableName == "medical_conclusion"
  2014. && m.OldKeyValue == row["medical_conclusion_id"].ToString()).FirstOrDefault();
  2015. if (medicalConclusionEnt != null)
  2016. {
  2017. medicalConclusionId = Guid.Parse(medicalConclusionEnt.NewKeyValue);
  2018. }
  2019. }
  2020. #endregion
  2021. #region 转换套餐ID
  2022. Guid? medicalPackageId = null;
  2023. if (!string.IsNullOrWhiteSpace(row["medical_package_id"].ToString()))
  2024. {
  2025. var medicalPackageEnt = fieldComparisonList.Where(m => m.TableName == "medical_package" && m.OldKeyValue == row["medical_package_id"].ToString()).FirstOrDefault();
  2026. if (medicalPackageEnt != null)
  2027. {
  2028. medicalPackageId = Guid.Parse(medicalPackageEnt.NewKeyValue);
  2029. }
  2030. }
  2031. #endregion
  2032. #region 转换体检类别ID
  2033. Guid? medicalTypeId = null;
  2034. if (!string.IsNullOrWhiteSpace(row["medical_type_id"].ToString()))
  2035. {
  2036. var medicalTypeEnt = fieldComparisonList.Where(m => m.TableName == "medical_type" && m.OldKeyValue == row["medical_type_id"].ToString()).FirstOrDefault();
  2037. if (medicalTypeEnt != null)
  2038. {
  2039. medicalTypeId = Guid.Parse(medicalTypeEnt.NewKeyValue);
  2040. }
  2041. }
  2042. #endregion
  2043. #region 转换人员类别ID
  2044. Guid? personnelTypeId = null;
  2045. if (!string.IsNullOrWhiteSpace(row["personnel_type_id"].ToString()))
  2046. {
  2047. var personnelTypeEnt = fieldComparisonList.Where(m => m.TableName == "personnel_type" && m.OldKeyValue == row["personnel_type_id"].ToString()).FirstOrDefault();
  2048. if (personnelTypeEnt != null)
  2049. {
  2050. personnelTypeId = Guid.Parse(personnelTypeEnt.NewKeyValue);
  2051. }
  2052. }
  2053. #endregion
  2054. #region 转换总检医生ID
  2055. Guid? summaryDoctorId = null;
  2056. if (!string.IsNullOrWhiteSpace(row["summary_doctor"].ToString()))
  2057. {
  2058. var userEnt = userList.Where(m => m.UserName == row["summary_doctor"].ToString().Trim()).FirstOrDefault();
  2059. if (userEnt != null)
  2060. {
  2061. summaryDoctorId = userEnt.Id;
  2062. }
  2063. }
  2064. #endregion
  2065. #region 上传图片,获取地址
  2066. string photo = "";
  2067. if (!string.IsNullOrEmpty(row["photograph"].ToString()))
  2068. {
  2069. photo = UpLoadImg(patientRegisterId, Convert.ToDateTime(row["register_date"].ToString()), (byte[])row["photograph"]);
  2070. }
  2071. #endregion
  2072. var data = new PatientRegister(patientRegisterId)
  2073. {
  2074. BirthDate = string.IsNullOrEmpty(row["birth_date"].ToString()) ? null : Convert.ToDateTime(row["birth_date"].ToString()),
  2075. MaritalStatusId = Convert.ToChar(row["marital_status_id"].ToString()),
  2076. MedicalCenterId = defaultMedicalCenterId,
  2077. SexId = ConvertSex(row["sex_id"].ToString()),
  2078. Age = string.IsNullOrWhiteSpace(row["age"].ToString()) ? null : Convert.ToInt16(row["age"].ToString()),
  2079. AuditDate = string.IsNullOrWhiteSpace(row["audit_date"].ToString()) ? null : Convert.ToDateTime(row["audit_date"].ToString()),
  2080. AuditDoctorId = AuditDoctorId,
  2081. CompleteFlag = Convert.ToChar(row["complete_flag"].ToString()),
  2082. CustomerOrgGroupId = customerOrgGroupId,
  2083. CustomerOrgId = customerOrgId,
  2084. CustomerOrgRegisterId = customerOrgRegisterId,
  2085. GuidePrintTimes = string.IsNullOrWhiteSpace(row["instruct_print_times"].ToString()) ? (short)0 : Convert.ToInt16(row["instruct_print_times"].ToString()),
  2086. InterposeMeasure = null,
  2087. IsAudit = string.IsNullOrWhiteSpace(row["audit_flag"].ToString()) ? 'N' : Convert.ToChar(row["audit_flag"].ToString()),
  2088. IsLock = string.IsNullOrWhiteSpace(row["lock_flag"].ToString()) ? 'N' : Convert.ToChar(row["lock_flag"].ToString()),
  2089. IsMedicalStart = string.IsNullOrWhiteSpace(row["medical_start_flag"].ToString()) ? 'N' : Convert.ToChar(row["medical_start_flag"].ToString()),
  2090. IsNameHide = string.IsNullOrWhiteSpace(row["name_encrypt_flag"].ToString()) ? 'N' : Convert.ToChar(row["name_encrypt_flag"].ToString()),
  2091. IsPhoneFollow = 'N',
  2092. IsRecoverGuide = string.IsNullOrWhiteSpace(row["recover_form_flag"].ToString()) ? 'N' : Convert.ToChar(row["recover_form_flag"].ToString()),
  2093. IsUpload = string.IsNullOrWhiteSpace(row["upload_flag"].ToString()) ? 'N' : Convert.ToChar(row["upload_flag"].ToString()),
  2094. IsVip = string.IsNullOrWhiteSpace(row["vip_flag"].ToString()) ? 'N' : Convert.ToChar(row["vip_flag"].ToString()),
  2095. JobCardNo = row["job_card_no"].ToString(),
  2096. JobPost = row["job_post"].ToString(),
  2097. JobTitle = row["job_title"].ToString(),
  2098. MedicalCardNo = row["medical_card_no"].ToString(),
  2099. MedicalConclusionId = medicalConclusionId,
  2100. MedicalPackageId = medicalPackageId,
  2101. MedicalStartDate = string.IsNullOrEmpty(row["medical_start_date"].ToString()) ? null : Convert.ToDateTime(row["medical_start_date"].ToString()),
  2102. MedicalTimes = Convert.ToInt16(row["medical_times"].ToString()),
  2103. MedicalTypeId = medicalTypeId,
  2104. PatientId = patientId,
  2105. PatientName = row["name"].ToString(),
  2106. PatientRegisterNo = row["barcode_no"].ToString(),
  2107. PersonnelTypeId = personnelTypeId,
  2108. Photo = photo,
  2109. Remark = row["remark"].ToString(),
  2110. ReportPrintTimes = Convert.ToInt16(row["report_print_times"].ToString()),
  2111. Salesman = row["salesman"].ToString(),
  2112. SexHormoneTermId = null,
  2113. SummaryDate = string.IsNullOrEmpty(row["summary_date"].ToString()) ? null : Convert.ToDateTime(row["summary_date"].ToString()),
  2114. SummaryDoctorId = summaryDoctorId,
  2115. ThirdInfo = row["third_info"].ToString(),
  2116. };
  2117. await _patientRegisterRepository.InsertAsync(data);
  2118. #region 人员登记扩展
  2119. var patientRegisterExterData = new PatientRegisterExter
  2120. {
  2121. IsQztlImport = Convert.ToChar(row["is_qztl_import"].ToString()),
  2122. PatientRegisterId = patientRegisterId,
  2123. Planuserid = row["planuserid"].ToString(),
  2124. QztlIsCw = Convert.ToChar(row["qztl_is_cw"].ToString()),
  2125. QztlIsCy = Convert.ToChar(row["qztl_is_cy"].ToString()),
  2126. QztlIsFj = Convert.ToChar(row["qztl_is_fj"].ToString()),
  2127. QztlIsGt = Convert.ToChar(row["qztl_is_gt"].ToString()),
  2128. QztlIsMain = Convert.ToChar(row["qztl_is_main"].ToString()),
  2129. QztlIsWh = Convert.ToChar(row["qztl_is_wh"].ToString()),
  2130. QztlType = string.IsNullOrEmpty(row["qztl_type"].ToString()) ? null : Convert.ToChar(row["qztl_type"].ToString()),
  2131. Remark2 = row["remark2"].ToString(),
  2132. Remark3 = row["remark3"].ToString(),
  2133. Remark4 = row["remark4"].ToString(),
  2134. UploadQztlFlag = Convert.ToChar(row["upload_qztl_flag"].ToString())
  2135. };
  2136. await _patientRegisterExterRepository.InsertAsync(patientRegisterExterData);
  2137. #endregion
  2138. var fieldComparison = new FieldComparison
  2139. {
  2140. FieldName = "id",
  2141. NewKeyValue = patientRegisterId.ToString(),
  2142. OldKeyValue = row["patient_register_id"].ToString(),
  2143. TableName = "patient_register"
  2144. };
  2145. await _fieldComparisonRepository.InsertAsync(fieldComparison);
  2146. await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{row["patient_register_id"].ToString()}',addtime=getdate(),handlecount+=1 where tablename='patient_register' ");
  2147. await uow.CompleteAsync();
  2148. }
  2149. }
  2150. _logger.LogInformation($"人员数据处理{oldPatientRegisterList.Rows.Count}条");
  2151. await TransferPatientRegisterData();
  2152. }
  2153. else
  2154. {
  2155. _logger.LogInformation("人员数据已处理完");
  2156. }
  2157. }
  2158. /// <summary>
  2159. /// 迁移检查单 组合项目 查询register_asbitem
  2160. /// </summary>
  2161. /// <returns></returns>
  2162. public async Task TransferRegisterCheckData()
  2163. {
  2164. //记录patient_register Id
  2165. string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='register_check'");
  2166. var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id)
  2167. .Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(1000).ToList();
  2168. if (patientRegisterList.Any())
  2169. {
  2170. var userList = await _identityUserRepository.GetListAsync();
  2171. foreach (var item in patientRegisterList)
  2172. {
  2173. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  2174. {
  2175. List<RegisterCheck> registerCheckInsert = new List<RegisterCheck>();
  2176. List<RegisterCheckAsbitem> registerCheckAsbitemInsert = new List<RegisterCheckAsbitem>();
  2177. #region 转换成老系统ID
  2178. string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
  2179. .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.Id.ToString()).FirstOrDefault().OldKeyValue;
  2180. #endregion
  2181. var oldRegisterAsbitemList = await Db.Ado.GetDataTableAsync($"select * from register_asbitem where patient_register_id='{oldPatientRegisterId}'");
  2182. if (oldRegisterAsbitemList.Rows.Count > 0)
  2183. {
  2184. foreach (DataRow row in oldRegisterAsbitemList.Rows)
  2185. {
  2186. #region 转换审核医生ID
  2187. Guid? auditorUserId = null;
  2188. if (!string.IsNullOrWhiteSpace(row["audit_doctor"].ToString()))
  2189. {
  2190. var userEnt = userList.Where(m => m.UserName == row["audit_doctor"].ToString().Trim()).FirstOrDefault();
  2191. if (userEnt != null)
  2192. {
  2193. auditorUserId = userEnt.Id;
  2194. }
  2195. }
  2196. #endregion
  2197. #region 转换检查医生ID
  2198. string checkDoctorId = null;
  2199. if (!string.IsNullOrWhiteSpace(row["check_doctor"].ToString()))
  2200. {
  2201. var userEnt = userList.Where(m => m.UserName == row["check_doctor"].ToString().Trim()).FirstOrDefault();
  2202. if (userEnt != null)
  2203. {
  2204. checkDoctorId = userEnt.Id.ToString();
  2205. }
  2206. else
  2207. {
  2208. checkDoctorId = row["check_doctor"].ToString().Trim();
  2209. }
  2210. }
  2211. #endregion
  2212. Guid registerCheckId = GuidGenerator.Create();
  2213. var data = new RegisterCheck(registerCheckId)
  2214. {
  2215. AuditorUserId = auditorUserId,
  2216. AuditTime = string.IsNullOrEmpty(row["audit_date"].ToString()) ? null : Convert.ToDateTime(row["audit_date"].ToString()),
  2217. CheckDate = string.IsNullOrEmpty(row["check_date"].ToString()) ? null : Convert.ToDateTime(row["check_date"].ToString()),
  2218. CheckDoctorId = checkDoctorId,
  2219. CheckRequestNo = "",
  2220. CheckRequestPrintTimes = (short)1,
  2221. CompleteFlag = Convert.ToChar(row["complete_flag"].ToString()),
  2222. CriticalValue = null,
  2223. CriticalValueCreateDate = null,
  2224. CriticalValueFlag = null,
  2225. CriticalValueProcessContent = null,
  2226. CriticalValueProcessDate = null,
  2227. CriticalValueProcessDoctor = null,
  2228. CriticalValueProcessFlag = null,
  2229. IsAudit = string.IsNullOrEmpty(row["audit_flag"].ToString()) ? 'N' : Convert.ToChar(row["audit_flag"].ToString()),
  2230. IsLock = string.IsNullOrEmpty(row["lock_flag"].ToString()) ? 'N' : Convert.ToChar(row["lock_flag"].ToString()),
  2231. PatientRegisterId = item.Id,
  2232. ThirdInfo = row["third_info"].ToString()
  2233. };
  2234. registerCheckInsert.Add(data);
  2235. Guid registerCheckAsbitemId = GuidGenerator.Create();
  2236. #region 转换组合项目ID
  2237. Guid newAsbitemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
  2238. .Where(m => m.TableName == "asbitem" && m.OldKeyValue == row["asbitem_id"].ToString()).FirstOrDefault().NewKeyValue);
  2239. #endregion
  2240. var dataRegisterAsbitem = new RegisterCheckAsbitem(registerCheckAsbitemId)
  2241. {
  2242. Amount = 1,
  2243. IsCharge = Convert.ToChar(row["charge_flag"].ToString()),
  2244. AsbitemId = newAsbitemId,
  2245. ChargePrice = Convert.ToDecimal(row["price"].ToString()),
  2246. GroupPackageId = null,
  2247. LisRequestId = null,
  2248. PatientRegisterId = item.Id,
  2249. PayTypeFlag = Convert.ToChar(row["payment_mode"].ToString()),
  2250. RegisterCheckId = registerCheckId,
  2251. StandardPrice = Convert.ToDecimal(row["standard_price"].ToString())
  2252. };
  2253. registerCheckAsbitemInsert.Add(dataRegisterAsbitem);
  2254. }
  2255. }
  2256. if (registerCheckInsert.Any())
  2257. await _registerCheckRepository.InsertManyAsync(registerCheckInsert);
  2258. if (registerCheckAsbitemInsert.Any())
  2259. await _registerCheckAsbitemRepository.InsertManyAsync(registerCheckAsbitemInsert);
  2260. await uow.CompleteAsync();
  2261. await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='register_check' ");
  2262. }
  2263. }
  2264. await TransferRegisterCheckData();
  2265. }
  2266. else
  2267. {
  2268. _logger.LogInformation("检查单、登记组合项目已处理完");
  2269. }
  2270. }
  2271. /// <summary>
  2272. /// 迁移明细项目 查询register_item
  2273. /// </summary>
  2274. /// <returns></returns>
  2275. public async Task TransferRegisterCheckItemData()
  2276. {
  2277. //记录register_check_asbitem Id
  2278. string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='register_check_item'");
  2279. var registerCheckAsbitemList = (await _registerCheckAsbitemRepository.GetQueryableAsync()).OrderBy(o => o.Id)
  2280. .Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(1000).ToList();
  2281. if (registerCheckAsbitemList.Any())
  2282. {
  2283. foreach (var item in registerCheckAsbitemList)
  2284. {
  2285. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  2286. {
  2287. List<RegisterCheckItem> registerCheckItemInsert = new List<RegisterCheckItem>();
  2288. #region 转换成老系统PatientRegisterId
  2289. string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
  2290. .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.PatientRegisterId.ToString()).FirstOrDefault().OldKeyValue;
  2291. #endregion
  2292. #region 转换成老系统AsbitemId
  2293. string oldAsbitemId = (await _fieldComparisonRepository.GetQueryableAsync())
  2294. .Where(m => m.TableName == "asbitem" && m.NewKeyValue == item.AsbitemId.ToString()).FirstOrDefault().OldKeyValue;
  2295. #endregion
  2296. var oldRegisterCheckItemList = await Db.Ado.GetDataTableAsync($"select * from register_item where patient_register_id='{oldPatientRegisterId}' and asbitem_id='{oldAsbitemId}'");
  2297. if (oldRegisterCheckItemList.Rows.Count > 0)
  2298. {
  2299. foreach (DataRow row in oldRegisterCheckItemList.Rows)
  2300. {
  2301. #region 转换项目ID 老转新
  2302. Guid newItemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
  2303. .Where(m => m.TableName == "item" && m.OldKeyValue == row["item_id"].ToString()).FirstOrDefault().NewKeyValue);
  2304. #endregion
  2305. var data = new RegisterCheckItem
  2306. {
  2307. CheckDate = string.IsNullOrEmpty(row["check_date"].ToString()) ? null : Convert.ToDateTime(row["check_date"].ToString()),
  2308. CriticalValue = null,
  2309. CheckDoctorName = row["check_doctor"].ToString().Trim(),
  2310. CriticalRangeValue = null,
  2311. ItemId = newItemId,
  2312. ReferenceRangeValue = row["reference_range_value"].ToString(),
  2313. RegisterCheckId = item.RegisterCheckId,
  2314. Result = row["result"].ToString(),
  2315. ResultStatusId = _registerCheckItemManager.GetResultStatusId(row["result"].ToString(), row["reference_range_value"].ToString()),
  2316. Unit = row["Unit"].ToString()
  2317. };
  2318. registerCheckItemInsert.Add(data);
  2319. }
  2320. }
  2321. if (registerCheckItemInsert.Any())
  2322. await _registerCheckItemRepository.InsertManyAsync(registerCheckItemInsert);
  2323. await uow.CompleteAsync();
  2324. await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='register_check_item' ");
  2325. }
  2326. }
  2327. await TransferRegisterCheckItemData();
  2328. }
  2329. else
  2330. {
  2331. _logger.LogInformation("明细项目已处理完");
  2332. }
  2333. }
  2334. /// <summary>
  2335. /// 迁移医生小结 查询register_asbitem
  2336. /// </summary>
  2337. /// <returns></returns>
  2338. public async Task TransferRegisterCheckSummaryData()
  2339. {
  2340. //记录register_check id
  2341. string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='register_check_summary'");
  2342. var registerCheckAsbitemList = (from registerCheckQuery in await _registerCheckRepository.GetQueryableAsync()
  2343. join registerCheckAsbitemQuery in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheckQuery.Id equals registerCheckAsbitemQuery.RegisterCheckId
  2344. orderby registerCheckQuery.Id ascending
  2345. where string.Compare(registerCheckQuery.Id.ToString(), nextKeyValue) > 0
  2346. select new
  2347. {
  2348. PatientRegisterId = registerCheckQuery.PatientRegisterId,
  2349. RegisterCheckId = registerCheckQuery.Id,
  2350. AsbitemId = registerCheckAsbitemQuery.AsbitemId
  2351. }).ToList();
  2352. if (registerCheckAsbitemList.Any())
  2353. {
  2354. foreach (var item in registerCheckAsbitemList)
  2355. {
  2356. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  2357. {
  2358. #region 转换成老系统PatientRegisterId
  2359. string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
  2360. .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.PatientRegisterId.ToString()).FirstOrDefault().OldKeyValue;
  2361. #endregion
  2362. #region 转换成老系统AsbitemId
  2363. string oldAsbitemId = (await _fieldComparisonRepository.GetQueryableAsync())
  2364. .Where(m => m.TableName == "asbitem" && m.NewKeyValue == item.AsbitemId.ToString()).FirstOrDefault().OldKeyValue;
  2365. #endregion
  2366. var oldSummary = await Db.Ado.GetStringAsync($"select summary from register_asbitem where patient_register_id='{oldPatientRegisterId}' and asbitem_id='{oldAsbitemId}'");
  2367. if (!string.IsNullOrWhiteSpace(oldSummary))
  2368. {
  2369. var data = new RegisterCheckSummary
  2370. {
  2371. RegisterCheckId = item.RegisterCheckId,
  2372. DisplayOrder = 1,
  2373. Summary = oldSummary,
  2374. SummaryFlag = '0'
  2375. };
  2376. await _registerCheckSummaryRepository.InsertAsync(data);
  2377. await uow.CompleteAsync();
  2378. }
  2379. await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.RegisterCheckId}',addtime=getdate(),handlecount+=1 where tablename='register_check_summary' ");
  2380. }
  2381. }
  2382. await TransferRegisterCheckSummaryData();
  2383. }
  2384. else
  2385. {
  2386. _logger.LogInformation("医生小结已处理完");
  2387. }
  2388. }
  2389. /// <summary>
  2390. /// 迁移总检综述 查询patient_register
  2391. /// </summary>
  2392. /// <returns></returns>
  2393. public async Task TransferSumSummaryData()
  2394. {
  2395. string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='sum_summary'");
  2396. var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id)
  2397. .Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(1000).ToList();
  2398. if (patientRegisterList.Any())
  2399. {
  2400. foreach (var item in patientRegisterList)
  2401. {
  2402. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  2403. {
  2404. #region 转换成老系统PatientRegisterId
  2405. string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
  2406. .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.Id.ToString()).FirstOrDefault().OldKeyValue;
  2407. #endregion
  2408. var oldSummary = await Db.Ado.GetStringAsync($"select summary from patient_register where patient_register_id='{oldPatientRegisterId}' ");
  2409. if (!string.IsNullOrWhiteSpace(oldSummary))
  2410. {
  2411. Guid sumSummaryHeaderId = GuidGenerator.Create();
  2412. var dataSumSummaryHeader = new SumSummaryHeader(sumSummaryHeaderId)
  2413. {
  2414. DisplayOrder = 1,
  2415. SummaryFlag = '0',
  2416. PatientRegisterId = item.Id,
  2417. SummaryTitle = "."
  2418. };
  2419. await _sumSummaryHeaderRepository.InsertAsync(dataSumSummaryHeader);
  2420. Guid sumSummaryContentId = GuidGenerator.Create();
  2421. var dataSumSummaryContent = new SumSummaryContent(sumSummaryContentId)
  2422. {
  2423. DisplayOrder = 1,
  2424. SumSummaryHeaderId = sumSummaryHeaderId,
  2425. SummaryContent = oldSummary
  2426. };
  2427. await _sumSummaryContentRepository.InsertAsync(dataSumSummaryContent);
  2428. await uow.CompleteAsync();
  2429. }
  2430. await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='sum_summary' ");
  2431. }
  2432. }
  2433. await TransferSumSummaryData();
  2434. }
  2435. else
  2436. {
  2437. _logger.LogInformation("总检综述已处理完");
  2438. }
  2439. }
  2440. /// <summary>
  2441. /// 迁移总检建议 查询patient_register
  2442. /// </summary>
  2443. /// <returns></returns>
  2444. public async Task TransferSumSuggestionData()
  2445. {
  2446. string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='sum_suggestion'");
  2447. var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id)
  2448. .Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(1000).ToList();
  2449. if (patientRegisterList.Any())
  2450. {
  2451. foreach (var item in patientRegisterList)
  2452. {
  2453. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  2454. {
  2455. #region 转换成老系统PatientRegisterId
  2456. string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
  2457. .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.Id.ToString()).FirstOrDefault().OldKeyValue;
  2458. #endregion
  2459. var oldSuggestion = await Db.Ado.GetStringAsync($"select suggestion from patient_register where patient_register_id='{oldPatientRegisterId}' ");
  2460. if (!string.IsNullOrWhiteSpace(oldSuggestion))
  2461. {
  2462. Guid sumSuggestionHeaderId = GuidGenerator.Create();
  2463. var dataSumSuggestionHeader = new SumSuggestionHeader(sumSuggestionHeaderId)
  2464. {
  2465. DisplayOrder = 1,
  2466. SuggestionFlag = '0',
  2467. PatientRegisterId = item.Id,
  2468. SuggestionTitle = "."
  2469. };
  2470. await _sumSuggestionHeaderRepository.InsertAsync(dataSumSuggestionHeader);
  2471. Guid sumSuggestionContentId = GuidGenerator.Create();
  2472. var dataSumSuggestionContent = new SumSuggestionContent(sumSuggestionContentId)
  2473. {
  2474. DisplayOrder = 1,
  2475. SuggestionContent = oldSuggestion,
  2476. SuggestionType = SuggestionTypeFlag.HealthGuidance,
  2477. SumSuggestionHeaderId = sumSuggestionHeaderId
  2478. };
  2479. await _sumSuggestionContentRepository.InsertAsync(dataSumSuggestionContent);
  2480. await uow.CompleteAsync();
  2481. }
  2482. await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='sum_suggestion' ");
  2483. }
  2484. }
  2485. await TransferSumSuggestionData();
  2486. }
  2487. else
  2488. {
  2489. _logger.LogInformation("总检建议已处理完");
  2490. }
  2491. }
  2492. /// <summary>
  2493. /// 迁移总症诊断 查询summary_diagnosis
  2494. /// </summary>
  2495. /// <returns></returns>
  2496. public async Task TransferSumDiagnosisData()
  2497. {
  2498. string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='sum_diagnosis'");
  2499. var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id)
  2500. .Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(1000).ToList();
  2501. if (patientRegisterList.Any())
  2502. {
  2503. foreach (var item in patientRegisterList)
  2504. {
  2505. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  2506. {
  2507. #region 转换成老系统PatientRegisterId
  2508. string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
  2509. .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.Id.ToString()).FirstOrDefault().OldKeyValue;
  2510. #endregion
  2511. var oldSummaryDiagnosis = await Db.Ado.GetDataTableAsync($"select diagnosis_id from summary_diagnosis where patient_register_id='{oldPatientRegisterId}' order by display_order asc ");
  2512. if (oldSummaryDiagnosis.Rows.Count > 0)
  2513. {
  2514. //获取建议头
  2515. var sumSuggestionHeaderEnt = await _sumSuggestionHeaderRepository.FirstOrDefaultAsync(m => m.PatientRegisterId == item.Id);
  2516. if (sumSuggestionHeaderEnt != null)
  2517. {
  2518. List<SumDiagnosis> sumDiagnosisInsert = new List<SumDiagnosis>();
  2519. foreach (DataRow row in oldSummaryDiagnosis.Rows)
  2520. {
  2521. var diagnosisEnt = (await _fieldComparisonRepository.GetQueryableAsync())
  2522. .Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["diagnosis_id"].ToString()).FirstOrDefault();
  2523. if (diagnosisEnt != null)
  2524. {
  2525. var dataSumDiagnosis = new SumDiagnosis
  2526. {
  2527. DisplayOrder = oldSummaryDiagnosis.Rows.IndexOf(row) + 1,
  2528. PatientRegisterId = item.Id,
  2529. DiagnosisId = Guid.Parse(diagnosisEnt.NewKeyValue),
  2530. SumSuggestionHeaderId = sumSuggestionHeaderEnt.Id
  2531. };
  2532. sumDiagnosisInsert.Add(dataSumDiagnosis);
  2533. }
  2534. }
  2535. if (sumDiagnosisInsert.Any())
  2536. await _sumDiagnosisRepository.InsertManyAsync(sumDiagnosisInsert);
  2537. await uow.CompleteAsync();
  2538. }
  2539. }
  2540. await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='sum_diagnosis' ");
  2541. }
  2542. }
  2543. await TransferSumDiagnosisData();
  2544. }
  2545. else
  2546. {
  2547. _logger.LogInformation("总症诊断已处理完");
  2548. }
  2549. }
  2550. /// <summary>
  2551. /// 爆改人员登记创建日期跟创建者
  2552. /// </summary>
  2553. /// <returns></returns>
  2554. public async Task HandPatientRegisterDoctor()
  2555. {
  2556. string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='hand_patient_register'");
  2557. 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 ");
  2558. if (oldPatientRegisterList.Rows.Count > 0)
  2559. {
  2560. var userList = await _identityUserRepository.GetListAsync();
  2561. List<FieldComparison> fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "patient_register");
  2562. StringBuilder sb = new StringBuilder();
  2563. foreach (DataRow row in oldPatientRegisterList.Rows)
  2564. {
  2565. Guid patientRegisterId = Guid.Parse(fieldComparisonList.Where(m => m.OldKeyValue == row["patient_register_id"].ToString()).FirstOrDefault().NewKeyValue);
  2566. Guid registerDoctorId = Guid.Parse("3a11fe49-5719-0e9e-dd44-0c4aff0900b0");
  2567. var registerDoctorEnt = userList.Where(m => m.UserName == row["register_doctor"].ToString().Trim()).FirstOrDefault();
  2568. if (registerDoctorEnt != null)
  2569. {
  2570. registerDoctorId = registerDoctorEnt.Id;
  2571. }
  2572. string sql_update = $"update patient_register set creator_id='{registerDoctorId}',creation_time='{Convert.ToDateTime(row["register_date"]).ToString("yyyy-MM-dd HH:mm:ss")}'";
  2573. sql_update += $" where id='{patientRegisterId}' ";
  2574. await PgNWDb.Ado.ExecuteCommandAsync(sql_update);
  2575. await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{row["patient_register_id"].ToString()}',addtime=getdate(),handlecount+=1 where tablename='hand_patient_register' ");
  2576. }
  2577. await HandPatientRegisterDoctor();
  2578. }
  2579. else
  2580. {
  2581. _logger.LogInformation("爆改人员登记创建日期跟创建者已处理完");
  2582. }
  2583. }
  2584. #endregion
  2585. #region 暂时不用
  2586. ///// <summary>
  2587. ///// 处理人员体检次数
  2588. ///// </summary>
  2589. ///// <returns></returns>
  2590. //public async Task TransferPersonPhohoData(int handcount)
  2591. //{
  2592. // string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register_customer_org_register'");
  2593. // var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id)
  2594. // .Where(m => m.CustomerOrgRegisterId == GuidFlag.PersonCustomerOrgRegisterId && m.CustomerOrgId != GuidFlag.PersonCustomerOrgId
  2595. // && string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(handcount).ToList();
  2596. // if (patientRegisterList.Any())
  2597. // {
  2598. // List<CustomerOrgRegister> customerOrgRegisterList = await _customerOrgRegisterRepository.GetListAsync();
  2599. // foreach (var item in patientRegisterList)
  2600. // {
  2601. // using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  2602. // {
  2603. // #region 转换成老系统PatientRegisterId
  2604. // string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
  2605. // .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.Id.ToString()).FirstOrDefault().OldKeyValue;
  2606. // #endregion
  2607. // //老系统数据
  2608. // var oldPatientRegisterEnt = Db.Ado.GetDataTable($"select org_medical_times,org_id from patient_register where patient_register_id='{oldPatientRegisterId}'");
  2609. // string oldTopCustomerOrgId = oldPatientRegisterEnt.Rows[0][1].ToString().Substring(0, 5);
  2610. // //一级单位ID
  2611. // Guid customerOrgId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
  2612. // .Where(m => m.TableName == "customer_org" && m.OldKeyValue == oldTopCustomerOrgId).FirstOrDefault().NewKeyValue);
  2613. // short orgMedicalTimes = Convert.ToInt16(oldPatientRegisterEnt.Rows[0][0].ToString());
  2614. // #region 转换单位体检次数ID 没有增加默认值
  2615. // Guid customerOrgRegisterId = GuidFlag.PersonCustomerOrgRegisterId;
  2616. // var customerOrgRegisterEnt = customerOrgRegisterList.Where(m => m.CustomerOrgId == customerOrgId
  2617. // && m.MedicalTimes == orgMedicalTimes).FirstOrDefault();
  2618. // if (customerOrgRegisterEnt != null)
  2619. // {
  2620. // customerOrgRegisterId = customerOrgRegisterEnt.Id;
  2621. // item.CustomerOrgRegisterId = customerOrgRegisterId;
  2622. // await _patientRegisterRepository.UpdateAsync(item);
  2623. // }
  2624. // #endregion
  2625. // await uow.CompleteAsync();
  2626. // await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='patient_register_customer_org_register' ");
  2627. // }
  2628. // }
  2629. // }
  2630. //}
  2631. ///// <summary>
  2632. ///// 迁移档案数据
  2633. ///// </summary>
  2634. ///// <returns></returns>
  2635. //public async Task TransferPatientData()
  2636. //{
  2637. // List<Patient> dataList = new List<Patient>();
  2638. // var oldPatientList = await Db.Ado.GetDataTableAsync("select top 500 patient_id,nation_id,address," +
  2639. // "birth_date,name,email,id_card_no,marital_status_id,mobile_telephone,patient_password,postalcode,telephone,sex_id " +
  2640. // "from patient_register where is_hand is null order by patient_register_id asc");
  2641. // List<string> tempPatientNos = new List<string>();
  2642. // if (oldPatientList.Rows.Count > 0)
  2643. // {
  2644. // List<FieldComparison> fieldComparisons = new List<FieldComparison>();
  2645. // List<FieldComparison> fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "nation");
  2646. // foreach (DataRow row in oldPatientList.Rows)
  2647. // {
  2648. // if (!tempPatientNos.Contains(row["patient_id"].ToString()))
  2649. // {
  2650. // string nationId = null;
  2651. // if (!string.IsNullOrWhiteSpace(row["nation_id"].ToString()))
  2652. // {
  2653. // nationId = fieldComparisonList.Where(m => m.OldKeyValue == row["nation_id"].ToString()).FirstOrDefault().NewKeyValue;
  2654. // }
  2655. // Guid PatientId = GuidGenerator.Create(); //档案ID
  2656. // var data = new Patient(PatientId)
  2657. // {
  2658. // Address = row["address"].ToString(),
  2659. // BirthDate = string.IsNullOrEmpty(row["birth_date"].ToString()) ? null : Convert.ToDateTime(row["birth_date"].ToString()),
  2660. // BirthPlaceId = null,
  2661. // DisplayName = row["name"].ToString(),
  2662. // Email = row["email"].ToString(),
  2663. // IdNo = row["id_card_no"].ToString(),
  2664. // MaritalStatusId = Convert.ToChar(row["marital_status_id"].ToString()),
  2665. // MedicalCenterId = defaultMedicalCenterId,
  2666. // MobileTelephone = row["mobile_telephone"].ToString(),
  2667. // NationId = nationId,
  2668. // PatientNo = row["patient_id"].ToString(),
  2669. // PatientPassword = row["patient_password"].ToString(),
  2670. // PostalCode = row["postalcode"].ToString(),
  2671. // SexId = ConvertSex(row["sex_id"].ToString()),
  2672. // SimpleCode = LanguageConverter.GetPYSimpleCode(row["name"].ToString()),
  2673. // Telephone = row["telephone"].ToString()
  2674. // };
  2675. // dataList.Add(data);
  2676. // fieldComparisons.Add(new FieldComparison
  2677. // {
  2678. // FieldName = "id",
  2679. // NewKeyValue = PatientId.ToString(),
  2680. // OldKeyValue = row["patient_id"].ToString(),
  2681. // TableName = "patient"
  2682. // });
  2683. // #region 增加标识
  2684. // veryPatientNo.Add(row["patient_id"].ToString(), row["patient_id"].ToString());
  2685. // #endregion
  2686. // }
  2687. // tempPatientNos.Add(row["patient_id"].ToString());
  2688. // }
  2689. // if (dataList.Any())
  2690. // await _patientRepository.InsertManyAsync(dataList);
  2691. // if (fieldComparisons.Any())
  2692. // await _fieldComparisonRepository.InsertManyAsync(fieldComparisons);
  2693. // #region 修改状态
  2694. // Thread.Sleep(100);
  2695. // await Db.Ado.ExecuteCommandAsync("update patient_register set is_hand='Y' where patient_id in (@ids) ", new { ids = tempPatientNos });
  2696. // #endregion
  2697. // _logger.LogInformation($"当前时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")},迁移数据{dataList.Count}");
  2698. // }
  2699. //}
  2700. ///// <summary>
  2701. ///// 迁移后台用户数据
  2702. ///// </summary>
  2703. ///// <returns></returns>
  2704. //[RemoteService(false)]
  2705. //public async Task TransferUserData()
  2706. //{
  2707. // var oldUserList = await Db.Ado.GetDataTableAsync("select * from users");
  2708. // if (oldUserList.Rows.Count > 0)
  2709. // {
  2710. // foreach (DataRow row in oldUserList.Rows)
  2711. // {
  2712. // var userEnt = new IdentityUserCreateNoEmailDto
  2713. // {
  2714. // Email = "",
  2715. // IsActive = row["valid_flag"].ToString() == "Y" ? true : false,
  2716. // LockoutEnabled = false,
  2717. // Name = row["user_name"].ToString(),
  2718. // Password = row["password"].ToString(),
  2719. // PhoneNumber = "",
  2720. // RoleNames = new string[] { "admin" },
  2721. // Surname = "",
  2722. // UserName = row["user_id"].ToString()
  2723. // };
  2724. // await _myUserAppService.CreateAsync(userEnt);
  2725. // }
  2726. // }
  2727. //}
  2728. ///// <summary>
  2729. ///// 迁移菜单
  2730. ///// </summary>
  2731. ///// <returns></returns>
  2732. //[RemoteService(false)]
  2733. //public async Task TransferMenuInfoData()
  2734. //{
  2735. // var oldMenuInfoList = await PgDb.Ado.GetDataTableAsync("select * from menu_info");
  2736. // if (oldMenuInfoList.Rows.Count > 0)
  2737. // {
  2738. // List<MenuInfo> dataList = new List<MenuInfo>();
  2739. // foreach (DataRow menuInfo in oldMenuInfoList.Rows)
  2740. // {
  2741. // var data = new MenuInfo(Guid.Parse(menuInfo["id"].ToString()))
  2742. // {
  2743. // DisplayName = menuInfo["display_name"].ToString(),
  2744. // DisplayOrder = Convert.ToInt32(menuInfo["display_order"].ToString()),
  2745. // IconName = menuInfo["icon_name"].ToString(),
  2746. // IsActive = Convert.ToChar(menuInfo["is_active"].ToString()),
  2747. // MenuType = Convert.ToChar(menuInfo["menu_type"].ToString()),
  2748. // ParentId = !string.IsNullOrWhiteSpace(menuInfo["parent_id"].ToString()) ? Guid.Parse(menuInfo["parent_id"].ToString()) : null,
  2749. // RouteUrl = menuInfo["route_url"].ToString(),
  2750. // SimpleCode = menuInfo["simple_code"].ToString()
  2751. // };
  2752. // dataList.Add(data);
  2753. // }
  2754. // if (dataList.Any())
  2755. // await _menuInfoRepository.InsertManyAsync(dataList);
  2756. // }
  2757. //}
  2758. //#region 迁移报表数据
  2759. ///// <summary>
  2760. ///// 迁移云端报表数据
  2761. ///// </summary>
  2762. ///// <returns></returns>
  2763. //public async Task TransferReportData()
  2764. //{
  2765. // var oldReportList = await PgDb.Ado.GetDataTableAsync("select id,display_name,is_active from report ");
  2766. // if (oldReportList.Rows.Count > 0)
  2767. // {
  2768. // foreach (DataRow row in oldReportList.Rows)
  2769. // {
  2770. // Report reportEntity = new Report
  2771. // {
  2772. // DisplayName = row["display_name"].ToString(),
  2773. // IsActive = Convert.ToChar(row["is_active"].ToString())
  2774. // };
  2775. // reportEntity.SetId(row["id"].ToString());
  2776. // await _reportRepository.InsertAsync(reportEntity, true);
  2777. // }
  2778. // }
  2779. // var oldReportFormatList = await PgDb.Ado.GetDataTableAsync("select id,display_name,is_default,report_id from report_format ");
  2780. // if (oldReportFormatList.Rows.Count > 0)
  2781. // {
  2782. // foreach (DataRow row in oldReportFormatList.Rows)
  2783. // {
  2784. // ReportFormat reportFormatEntity = new ReportFormat
  2785. // {
  2786. // DisplayName = row["display_name"].ToString(),
  2787. // IsDefault = Convert.ToChar(row["is_default"].ToString()),
  2788. // ReportId = row["report_id"].ToString()
  2789. // };
  2790. // reportFormatEntity.SetId(row["id"].ToString());
  2791. // await _reportFormatRepository.InsertAsync(reportFormatEntity, true);
  2792. // }
  2793. // }
  2794. // 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 ");
  2795. // if (oldReportFormatTemplateList.Rows.Count > 0)
  2796. // {
  2797. // foreach (DataRow row in oldReportFormatTemplateList.Rows)
  2798. // {
  2799. // ReportFormatTemplate reportFormatTemplateEntity = new ReportFormatTemplate
  2800. // {
  2801. // DisplayName = row["display_name"].ToString(),
  2802. // IsDefault = Convert.ToChar(row["is_default"].ToString()),
  2803. // DataSetJson = row["data_set_json"].ToString(),
  2804. // IsSystem = Convert.ToChar(row["is_system"].ToString()),
  2805. // ReportFormatId = row["report_format_id"].ToString(),
  2806. // TemplateFile = row["template_file"].ToString(),
  2807. // TemplateFileType = Convert.ToChar(row["template_file_type"].ToString())
  2808. // };
  2809. // reportFormatTemplateEntity.SetId(row["id"].ToString());
  2810. // await _reportFormatTemplateRepository.InsertAsync(reportFormatTemplateEntity, true);
  2811. // }
  2812. // }
  2813. //}
  2814. //#endregion
  2815. //#region 迁移系统参数
  2816. ///// <summary>
  2817. ///// 迁移系统参数类别数据
  2818. ///// </summary>
  2819. ///// <returns></returns>
  2820. //public async Task TransferSysParmTypeData()
  2821. //{
  2822. // var oldSysParmType = await PgDb.Ado.GetDataTableAsync("select * from sys_parm_type ");
  2823. // if (oldSysParmType.Rows.Count > 0)
  2824. // {
  2825. // foreach (DataRow row in oldSysParmType.Rows)
  2826. // {
  2827. // using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  2828. // {
  2829. // SysParmType data = new SysParmType
  2830. // {
  2831. // Id = row["id"].ToString(),
  2832. // DisplayName = row["display_name"].ToString(),
  2833. // DisplayOrder = Convert.ToInt32(row["display_order"].ToString()),
  2834. // ParentId = row["parent_id"].ToString(),
  2835. // SimpleCode = row["simple_code"].ToString()
  2836. // };
  2837. // await _sysParmTypeRepository.InsertAsync(data, true);
  2838. // await uow.CompleteAsync();
  2839. // }
  2840. // }
  2841. // }
  2842. //}
  2843. ///// <summary>
  2844. ///// 迁移系统参数数据
  2845. ///// </summary>
  2846. ///// <returns></returns>
  2847. //public async Task TransferSysParmData()
  2848. //{
  2849. // var oldSysParm = await PgDb.Ado.GetDataTableAsync("select * from sys_parm ");
  2850. // if (oldSysParm.Rows.Count > 0)
  2851. // {
  2852. // foreach (DataRow row in oldSysParm.Rows)
  2853. // {
  2854. // using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  2855. // {
  2856. // SysParm data = new SysParm
  2857. // {
  2858. // Id = row["id"].ToString(),
  2859. // DisplayName = row["display_name"].ToString(),
  2860. // DisplayOrder = Convert.ToInt32(row["display_order"].ToString()),
  2861. // IsPublic = Convert.ToChar(row["is_public"].ToString()),
  2862. // Remark = row["remark"].ToString(),
  2863. // ValueType = Convert.ToChar(row["value_type"].ToString()),
  2864. // SysParmTypeId = row["sys_parm_type_id"].ToString(),
  2865. // SimpleCode = row["simple_code"].ToString()
  2866. // };
  2867. // await _sysParmRepository.InsertAsync(data, true);
  2868. // await uow.CompleteAsync();
  2869. // }
  2870. // }
  2871. // }
  2872. //}
  2873. ///// <summary>
  2874. ///// 迁移系统参数值数据
  2875. ///// </summary>
  2876. ///// <returns></returns>
  2877. //public async Task TransferSysParmValueData()
  2878. //{
  2879. // var oldSysParmValue = await PgDb.Ado.GetDataTableAsync("select * from sys_parm_value where medical_center_id='00000000-0000-0000-0000-000000000000' ");
  2880. // if (oldSysParmValue.Rows.Count > 0)
  2881. // {
  2882. // foreach (DataRow row in oldSysParmValue.Rows)
  2883. // {
  2884. // using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  2885. // {
  2886. // SysParmValue data = new SysParmValue
  2887. // {
  2888. // SysParmId = row["sys_parm_id"].ToString(),
  2889. // Remark = row["remark"].ToString(),
  2890. // MedicalCenterId = Guid.Empty,
  2891. // ParmValue = row["parm_value"].ToString()
  2892. // };
  2893. // await _sysParmValueRepository.InsertAsync(data, true);
  2894. // await uow.CompleteAsync();
  2895. // }
  2896. // }
  2897. // }
  2898. //}
  2899. //#endregion
  2900. ///// <summary>
  2901. ///// 迁移人员图片数据
  2902. ///// </summary>
  2903. ///// <returns></returns>
  2904. //public async Task TransferPersonPhohoData(int handcount)
  2905. //{
  2906. // string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register_photo'");
  2907. // var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id)
  2908. // .Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(handcount).ToList();
  2909. // if (patientRegisterList.Any())
  2910. // {
  2911. // foreach (var item in patientRegisterList)
  2912. // {
  2913. // using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  2914. // {
  2915. // #region 转换成老系统PatientRegisterId
  2916. // string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
  2917. // .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.Id.ToString()).FirstOrDefault().OldKeyValue;
  2918. // #endregion
  2919. // var photograph = await Db.Ado.GetScalarAsync($"select photograph from patient_register where patient_register_id='{oldPatientRegisterId}' ");
  2920. // #region 上传图片,获取地址
  2921. // if (photograph != null && !string.IsNullOrEmpty(photograph.ToString()))
  2922. // {
  2923. // string photo = UpLoadImg(item.Id, item.CreationTime, (byte[])photograph);
  2924. // item.Photo = photo;
  2925. // await _patientRegisterRepository.UpdateAsync(item);
  2926. // }
  2927. // #endregion
  2928. // await uow.CompleteAsync();
  2929. // await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='patient_register_photo' ");
  2930. // }
  2931. // }
  2932. // }
  2933. //}
  2934. ///// <summary>
  2935. ///// 纠正登记项目明细数据
  2936. ///// </summary>
  2937. ///// <returns></returns>
  2938. //public async Task CorrectRegisterCheckItemData()
  2939. //{
  2940. // string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='register_check_asbitem_2'");
  2941. // //var registerCheckAsbitemList = (await _registerCheckAsbitemRepository.GetQueryableAsync()).OrderBy(o => o.Id)
  2942. // // .Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).ToList();
  2943. // var registerCheckAsbitemList = (from registerCheckQuery in (await _registerCheckRepository.GetQueryableAsync()).Include(x => x.RegisterCheckItems)
  2944. // join registerCheckAsbitemQuery in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheckQuery.Id equals registerCheckAsbitemQuery.RegisterCheckId
  2945. // orderby registerCheckQuery.Id ascending
  2946. // where (registerCheckQuery.RegisterCheckItems.Count == 0 && string.Compare(registerCheckQuery.Id.ToString(), nextKeyValue) > 0)
  2947. // select registerCheckAsbitemQuery).ToList();
  2948. // if (registerCheckAsbitemList.Any())
  2949. // {
  2950. // foreach (var item in registerCheckAsbitemList)
  2951. // {
  2952. // using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  2953. // {
  2954. // List<RegisterCheckItem> registerCheckItemInsert = new List<RegisterCheckItem>();
  2955. // #region 转换成老系统PatientRegisterId
  2956. // string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
  2957. // .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.PatientRegisterId.ToString()).FirstOrDefault().OldKeyValue;
  2958. // #endregion
  2959. // #region 转换成老系统AsbitemId
  2960. // string oldAsbitemId = (await _fieldComparisonRepository.GetQueryableAsync())
  2961. // .Where(m => m.TableName == "asbitem" && m.NewKeyValue == item.AsbitemId.ToString()).FirstOrDefault().OldKeyValue;
  2962. // #endregion
  2963. // var oldRegisterCheckItemList = await Db.Ado.GetDataTableAsync($"select * from register_item where patient_register_id='{oldPatientRegisterId}' and asbitem_id='{oldAsbitemId}'");
  2964. // if (oldRegisterCheckItemList.Rows.Count > 0)
  2965. // {
  2966. // foreach (DataRow row in oldRegisterCheckItemList.Rows)
  2967. // {
  2968. // #region 转换项目ID 老转新
  2969. // Guid newItemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
  2970. // .Where(m => m.TableName == "item" && m.OldKeyValue == row["item_id"].ToString()).FirstOrDefault().NewKeyValue);
  2971. // #endregion
  2972. // var data = new RegisterCheckItem
  2973. // {
  2974. // CheckDate = string.IsNullOrEmpty(row["check_date"].ToString()) ? null : Convert.ToDateTime(row["check_date"].ToString()),
  2975. // CriticalValue = null,
  2976. // CheckDoctorName = row["check_doctor"].ToString().Trim(),
  2977. // CriticalRangeValue = null,
  2978. // ItemId = newItemId,
  2979. // ReferenceRangeValue = row["reference_range_value"].ToString(),
  2980. // RegisterCheckId = item.RegisterCheckId,
  2981. // Result = row["result"].ToString(),
  2982. // ResultStatusId = _registerCheckItemManager.GetResultStatusId(row["result"].ToString(), row["reference_range_value"].ToString()),
  2983. // Unit = row["Unit"].ToString()
  2984. // };
  2985. // registerCheckItemInsert.Add(data);
  2986. // }
  2987. // }
  2988. // if (registerCheckItemInsert.Any())
  2989. // await _registerCheckItemRepository.InsertManyAsync(registerCheckItemInsert);
  2990. // await uow.CompleteAsync();
  2991. // await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='register_check_asbitem_2' ");
  2992. // }
  2993. // }
  2994. // }
  2995. //}
  2996. ///// <summary>
  2997. ///// 纠正医生小结数据
  2998. ///// </summary>
  2999. ///// <returns></returns>
  3000. //public async Task CorrectRegisterCheckSummaryData()
  3001. //{
  3002. // string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='register_check_summary_2'");
  3003. // //var registerCheckAsbitemList = (from registerCheckQuery in await _registerCheckRepository.GetQueryableAsync()
  3004. // // join registerCheckAsbitemQuery in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheckQuery.Id equals registerCheckAsbitemQuery.RegisterCheckId
  3005. // // orderby registerCheckQuery.Id ascending
  3006. // // where string.Compare(registerCheckQuery.Id.ToString(), nextKeyValue) > 0
  3007. // // select new
  3008. // // {
  3009. // // PatientRegisterId = registerCheckQuery.PatientRegisterId,
  3010. // // RegisterCheckId = registerCheckQuery.Id,
  3011. // // AsbitemId = registerCheckAsbitemQuery.AsbitemId
  3012. // // }).ToList();
  3013. // var registerCheckAsbitemList = (from registerCheckQuery in (await _registerCheckRepository.GetQueryableAsync()).Include(x => x.RegisterCheckSummaries).AsQueryable()
  3014. // join registerCheckAsbitemQuery in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheckQuery.Id equals registerCheckAsbitemQuery.RegisterCheckId
  3015. // orderby registerCheckQuery.Id ascending
  3016. // where (registerCheckQuery.RegisterCheckSummaries.Count == 0 && string.Compare(registerCheckQuery.Id.ToString(), nextKeyValue) > 0)
  3017. // select new
  3018. // {
  3019. // PatientRegisterId = registerCheckQuery.PatientRegisterId,
  3020. // RegisterCheckId = registerCheckQuery.Id,
  3021. // AsbitemId = registerCheckAsbitemQuery.AsbitemId
  3022. // }).ToList();
  3023. // if (registerCheckAsbitemList.Any())
  3024. // {
  3025. // foreach (var item in registerCheckAsbitemList)
  3026. // {
  3027. // using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  3028. // {
  3029. // #region 转换成老系统PatientRegisterId
  3030. // string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
  3031. // .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.PatientRegisterId.ToString()).FirstOrDefault().OldKeyValue;
  3032. // #endregion
  3033. // #region 转换成老系统AsbitemId
  3034. // string oldAsbitemId = (await _fieldComparisonRepository.GetQueryableAsync())
  3035. // .Where(m => m.TableName == "asbitem" && m.NewKeyValue == item.AsbitemId.ToString()).FirstOrDefault().OldKeyValue;
  3036. // #endregion
  3037. // var oldSummary = await Db.Ado.GetStringAsync($"select summary from register_asbitem where patient_register_id='{oldPatientRegisterId}' and asbitem_id='{oldAsbitemId}'");
  3038. // if (!string.IsNullOrWhiteSpace(oldSummary))
  3039. // {
  3040. // var data = new RegisterCheckSummary
  3041. // {
  3042. // RegisterCheckId = item.RegisterCheckId,
  3043. // DisplayOrder = 1,
  3044. // Summary = oldSummary,
  3045. // SummaryFlag = '0'
  3046. // };
  3047. // await _registerCheckSummaryRepository.InsertAsync(data);
  3048. // await uow.CompleteAsync();
  3049. // }
  3050. // await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.RegisterCheckId}',addtime=getdate(),handlecount+=1 where tablename='register_check_summary_2' ");
  3051. // }
  3052. // }
  3053. // }
  3054. //}
  3055. #endregion
  3056. private void LoadDLL()
  3057. {
  3058. // 定义dll文件夹路径
  3059. string dllFolderPath = Path.Combine(AppContext.BaseDirectory, "MyPlugs");
  3060. DirectoryInfo directoryInfo = new DirectoryInfo(dllFolderPath);
  3061. FileInfo[] files = directoryInfo.GetFiles("*.dll", SearchOption.AllDirectories);
  3062. foreach (FileInfo file in files)
  3063. {
  3064. Assembly assembly = AssemblyLoadContext.Default.LoadFromAssemblyPath(file.FullName);
  3065. Type interfaceType = assembly.GetTypes().Where(m => m.IsInterface == true && m.Name == "ITestHello").FirstOrDefault();
  3066. Type classType = assembly.GetTypes().Where(m => m.IsInterface == false && m.Name == "TestHello").FirstOrDefault();
  3067. if (interfaceType != null && classType != null)
  3068. {
  3069. object instance = Activator.CreateInstance(classType);
  3070. // 获取方法信息
  3071. MethodInfo method = classType.GetMethod("PrintMsg");
  3072. // 执行方法
  3073. var ss = method.Invoke(instance, null);
  3074. }
  3075. }
  3076. }
  3077. /// <summary>
  3078. /// 转换老系统适用性别
  3079. /// </summary>
  3080. /// <param name="forSexId"></param>
  3081. /// <returns></returns>
  3082. private char ConvertForSex(string forSexId)
  3083. {
  3084. if (forSexId == "0")
  3085. {
  3086. return 'M';
  3087. }
  3088. else if (forSexId == "1")
  3089. {
  3090. return 'F';
  3091. }
  3092. else
  3093. {
  3094. return 'A';
  3095. }
  3096. }
  3097. /// <summary>
  3098. /// 转换老系统性别
  3099. /// </summary>
  3100. /// <param name="SexId"></param>
  3101. /// <returns></returns>
  3102. private char ConvertSex(string SexId)
  3103. {
  3104. if (SexId == "0")
  3105. {
  3106. return 'M';
  3107. }
  3108. else if (SexId == "1")
  3109. {
  3110. return 'F';
  3111. }
  3112. else
  3113. {
  3114. return 'U';
  3115. }
  3116. }
  3117. private string UpLoadImg(Guid PatientRegisterId, DateTime time, byte[] Photo)
  3118. {
  3119. string imgurl = $"photo/{time.Year}/{time.Month}/{time.Day}/" + PatientRegisterId;
  3120. var isupload = ImageHelper.ByteToImage(Photo, imgurl);
  3121. if (!string.IsNullOrEmpty(isupload))
  3122. return isupload;
  3123. else
  3124. return "";
  3125. }
  3126. }
  3127. }