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.

1158 lines
78 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
  1. using Microsoft.AspNetCore.Authorization;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Microsoft.EntityFrameworkCore;
  4. using Microsoft.Extensions.Configuration;
  5. using Microsoft.Extensions.Logging;
  6. using Org.BouncyCastle.Utilities;
  7. using Shentun.Peis.CustomerOrgs;
  8. using Shentun.Peis.DataMigrations;
  9. using Shentun.Peis.Enums;
  10. using Shentun.Peis.ItemTypes;
  11. using Shentun.Peis.Models;
  12. using Shentun.Peis.MyUser;
  13. using Shentun.Peis.PatientRegisters;
  14. using Shentun.Peis.PlugIns;
  15. using Shentun.Peis.RegisterCheckItems;
  16. using Shentun.Peis.TransToWebPeiss;
  17. using SqlSugar;
  18. using System;
  19. using System.Collections.Generic;
  20. using System.IO;
  21. using System.Linq;
  22. using System.Text;
  23. using System.Threading.Tasks;
  24. using Volo.Abp;
  25. using Volo.Abp.Application.Services;
  26. using Volo.Abp.Domain.Repositories;
  27. using Volo.Abp.Identity;
  28. using Volo.Abp.Uow;
  29. namespace Shentun.Peis.TransToWebPeis
  30. {
  31. [ApiExplorerSettings(GroupName = "Work")]
  32. [Authorize]
  33. public class TransToWebPeisAppService : ApplicationService
  34. {
  35. private readonly IRepository<DeviceType, Guid> _deviceTypeRepository;
  36. private readonly IRepository<ItemType, Guid> _itemTypeRepository;
  37. private readonly IRepository<Item, Guid> _itemRepository;
  38. private readonly IRepository<Asbitem, Guid> _asbitemRepository;
  39. private readonly IRepository<MedicalPackage, Guid> _medicalPackageRepository;
  40. private readonly IRepository<Diagnosis, Guid> _diagnosisRepository;
  41. private readonly IRepository<DiagnosisLevel> _diagnosisLevelRepository;
  42. private readonly ILogger<TransToWebPeisAppService> _logger;
  43. private readonly IRepository<ThirdInterface, Guid> _thirdInterfaceRepository;
  44. private readonly IRepository<CustomerOrg, Guid> _customerOrgRepository;
  45. private readonly IRepository<CustomerOrgRegister, Guid> _customerOrgRegisterRepository;
  46. private readonly IRepository<CustomerOrgGroup, Guid> _customerOrgGroupRepository;
  47. private readonly IRepository<CustomerOrgGroupDetail> _customerOrgGroupDetailRepository;
  48. private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository;
  49. private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
  50. private readonly IRepository<PatientRegisterExter> _patientRegisterExterRepository;
  51. public TransToWebPeisAppService(
  52. IRepository<ItemType, Guid> itemTypeRepository,
  53. ILogger<TransToWebPeisAppService> logger,
  54. IRepository<ThirdInterface, Guid> thirdInterfaceRepository,
  55. IRepository<Item, Guid> itemRepository,
  56. IRepository<Asbitem, Guid> asbitemRepository,
  57. IRepository<MedicalPackage, Guid> medicalPackageRepository,
  58. IRepository<Diagnosis, Guid> diagnosisRepository,
  59. IRepository<DiagnosisLevel> diagnosisLevelRepository,
  60. IRepository<CustomerOrg, Guid> customerOrgRepository,
  61. IRepository<CustomerOrgRegister, Guid> customerOrgRegisterRepository,
  62. IRepository<CustomerOrgGroup, Guid> customerOrgGroupRepository,
  63. IRepository<CustomerOrgGroupDetail> customerOrgGroupDetailRepository,
  64. IRepository<PatientRegister, Guid> patientRegisterRepository,
  65. IRepository<RegisterCheck, Guid> registerCheckRepository,
  66. IRepository<PatientRegisterExter> patientRegisterExterRepository)
  67. {
  68. _itemTypeRepository = itemTypeRepository;
  69. _logger = logger;
  70. _thirdInterfaceRepository = thirdInterfaceRepository;
  71. _itemRepository = itemRepository;
  72. _asbitemRepository = asbitemRepository;
  73. _medicalPackageRepository = medicalPackageRepository;
  74. _diagnosisRepository = diagnosisRepository;
  75. _diagnosisLevelRepository = diagnosisLevelRepository;
  76. _customerOrgRepository = customerOrgRepository;
  77. _customerOrgRegisterRepository = customerOrgRegisterRepository;
  78. _customerOrgGroupRepository = customerOrgGroupRepository;
  79. _customerOrgGroupDetailRepository = customerOrgGroupDetailRepository;
  80. _patientRegisterRepository = patientRegisterRepository;
  81. _registerCheckRepository = registerCheckRepository;
  82. _patientRegisterExterRepository = patientRegisterExterRepository;
  83. }
  84. /// <summary>
  85. /// 上传基础资料
  86. /// </summary>
  87. /// <returns></returns>
  88. [HttpPost("api/app/TransToWebPeis/TransBaseData")]
  89. public async Task TransBaseDataAsync()
  90. {
  91. var thirdInterfaces = await _thirdInterfaceRepository.GetListAsync(o => o.ThirdInterfaceType ==
  92. ThirdInterfaceTypeFlag.TranToWebPeis);
  93. foreach (var thirdInterface in thirdInterfaces)
  94. {
  95. var connectString = GetConnectionStrings(thirdInterface.ParmValue);
  96. SqlSugarClient WebDb = new SqlSugarClient(new ConnectionConfig()
  97. {
  98. ConnectionString = connectString,
  99. DbType = SqlSugar.DbType.PostgreSQL,
  100. IsAutoCloseConnection = true
  101. });
  102. #region 清理基础数据
  103. //删除
  104. await WebDb.Ado.ExecuteCommandAsync("delete from medical_package_detail;");
  105. await WebDb.Ado.ExecuteCommandAsync("delete from medical_package;");
  106. await WebDb.Ado.ExecuteCommandAsync("delete from customer_org_group_detail;");
  107. await WebDb.Ado.ExecuteCommandAsync("delete from customer_org_group;");
  108. await WebDb.Ado.ExecuteCommandAsync("delete from customer_org_register;");
  109. await WebDb.Ado.ExecuteCommandAsync("delete from customer_org;");
  110. await WebDb.Ado.ExecuteCommandAsync("delete from diagnosis;");
  111. await WebDb.Ado.ExecuteCommandAsync("delete from diagnosis_level;");
  112. await WebDb.Ado.ExecuteCommandAsync("delete from asbitem_detail;");
  113. await WebDb.Ado.ExecuteCommandAsync("delete from asbitem;");
  114. await WebDb.Ado.ExecuteCommandAsync("delete from item");
  115. await WebDb.Ado.ExecuteCommandAsync("delete from item_type");
  116. #endregion
  117. await TransItemType(WebDb);
  118. await TransItem(WebDb);
  119. await TransAsbitem(WebDb);
  120. await TransMedicalPackage(WebDb);
  121. await TransDiagnosis(WebDb);
  122. await TransCustomerOrgAsync(WebDb);
  123. await TransCustomerOrgRegisterAsync(WebDb);
  124. await TransCustomerOrgGroupAsync(WebDb);
  125. await TransCustomerOrgGroupDetailAsync(WebDb);
  126. }
  127. //var connectString = "Host=10.1.12.140;Port=5432;Database=WebPeis;User ID=postgres;Password=st123;";
  128. //SqlSugarClient WebDb = new SqlSugarClient(new ConnectionConfig()
  129. //{
  130. // ConnectionString = connectString,
  131. // DbType = SqlSugar.DbType.PostgreSQL,
  132. // IsAutoCloseConnection = true
  133. //});
  134. }
  135. /// <summary>
  136. /// 上传体检报告
  137. /// </summary>
  138. /// <returns></returns>
  139. [HttpPost("api/app/TransToWebPeis/UploadPeisReport")]
  140. public async Task UploadPeisReportAsync(UploadPeisReportIuputDto input)
  141. {
  142. //同步数据
  143. await TransPatientRegisterByPatientRegisterIdAsync(new PatientRegisterIdInputDto { PatientRegisterId = input.PatientRegisterId });
  144. //上传报告
  145. }
  146. /// <summary>
  147. /// 根据人员登记ID上传人员体检信息
  148. /// </summary>
  149. /// <param name="input"></param>
  150. /// <returns></returns>
  151. [HttpPost("api/app/TransToWebPeis/TransPatientRegisterByPatientRegisterId")]
  152. public async Task TransPatientRegisterByPatientRegisterIdAsync(PatientRegisterIdInputDto input)
  153. {
  154. var thirdInterfaces = await _thirdInterfaceRepository.GetListAsync(o => o.ThirdInterfaceType ==
  155. ThirdInterfaceTypeFlag.TranToWebPeis);
  156. foreach (var thirdInterface in thirdInterfaces)
  157. {
  158. var connectString = GetConnectionStrings(thirdInterface.ParmValue);
  159. SqlSugarClient WebDb = new SqlSugarClient(new ConnectionConfig()
  160. {
  161. ConnectionString = connectString,
  162. DbType = SqlSugar.DbType.PostgreSQL,
  163. IsAutoCloseConnection = true
  164. });
  165. var IsPatient = (await WebDb.Ado.GetDataTableAsync($"select patient_register_id from patient_register where patient_register_id='{input.PatientRegisterId}'")).Rows.Count;
  166. if (IsPatient > 0)
  167. {
  168. await DeletePatientRegisterWithDetailAsync(WebDb, input.PatientRegisterId);
  169. }
  170. await TransPatientRegisterWithDetailAsync(WebDb, input.PatientRegisterId);
  171. }
  172. }
  173. /// <summary>
  174. /// 撤销上传人员体检信息
  175. /// </summary>
  176. /// <param name="input"></param>
  177. /// <returns></returns>
  178. [HttpPost("api/app/TransToWebPeis/CancelTransPatientRegisterByPatientRegisterId")]
  179. public async Task CancelTransPatientRegisterByPatientRegisterIdAsync(PatientRegisterIdInputDto input)
  180. {
  181. var thirdInterfaces = await _thirdInterfaceRepository.GetListAsync(o => o.ThirdInterfaceType ==
  182. ThirdInterfaceTypeFlag.TranToWebPeis);
  183. foreach (var thirdInterface in thirdInterfaces)
  184. {
  185. var connectString = GetConnectionStrings(thirdInterface.ParmValue);
  186. SqlSugarClient WebDb = new SqlSugarClient(new ConnectionConfig()
  187. {
  188. ConnectionString = connectString,
  189. DbType = SqlSugar.DbType.PostgreSQL,
  190. IsAutoCloseConnection = true
  191. });
  192. await DeletePatientRegisterWithDetailAsync(WebDb, input.PatientRegisterId);
  193. }
  194. }
  195. /// <summary>
  196. /// 获取数据库连接地址
  197. /// </summary>
  198. /// <param name="parmValue"></param>
  199. /// <returns></returns>
  200. /// <exception cref="UserFriendlyException"></exception>
  201. private string GetConnectionStrings(string parmValue)
  202. {
  203. var configurationBuilder = new ConfigurationBuilder()
  204. .AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue)));
  205. var interfaceConfig = configurationBuilder.Build();
  206. var interfaceConnctionStr = interfaceConfig.GetSection("Interface").GetSection("ConnectionStrings").Value;
  207. if (!interfaceConnctionStr.ToUpper().Contains("WEBPEIS"))
  208. throw new UserFriendlyException("请检查配置的数据库地址");
  209. return interfaceConnctionStr;
  210. }
  211. #region 基础数据
  212. /// <summary>
  213. /// 项目类别
  214. /// </summary>
  215. /// <param name="WebDb"></param>
  216. /// <returns></returns>
  217. private async Task TransItemType(SqlSugarClient WebDb)
  218. {
  219. var itemTypes = await _itemTypeRepository.GetListAsync();
  220. if (itemTypes.Count > 0)
  221. {
  222. foreach (var itemType in itemTypes)
  223. {
  224. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.item_type(item_type_id,item_type_name,simple_code,parent_id,path_code,check_type_flag,display_order,is_wrap, concurrency_stamp,creation_time,creator_id,last_modification_time,last_modifier_id) " +
  225. "VALUES (@item_type_id,@item_type_name,@simple_code,@parent_id::uuid,@path_code,@check_type_flag,@display_order,@is_wrap,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  226. new List<SugarParameter>() {
  227. new SugarParameter("@item_type_id",itemType.Id),
  228. new SugarParameter("@item_type_name",itemType.DisplayName),
  229. new SugarParameter("@simple_code",itemType.SimpleCode),
  230. new SugarParameter("@parent_id",itemType.ParentId),
  231. new SugarParameter("@path_code",itemType.PathCode),
  232. new SugarParameter("@check_type_flag",itemType.CheckTypeFlag),
  233. new SugarParameter("@display_order",itemType.DisplayOrder),
  234. new SugarParameter("@is_wrap",itemType.IsWrap),
  235. new SugarParameter("@concurrency_stamp",itemType.ConcurrencyStamp),
  236. new SugarParameter("@creation_time",itemType.CreationTime),
  237. new SugarParameter("@creator_id",itemType.CreatorId),
  238. new SugarParameter("@last_modification_time",itemType.LastModificationTime),
  239. new SugarParameter("@last_modifier_id",itemType.LastModifierId)
  240. });
  241. }
  242. _logger.LogInformation($"项目类别数据处理完毕,数量{itemTypes.Count}");
  243. }
  244. }
  245. /// <summary>
  246. /// 项目数据
  247. /// </summary>
  248. /// <param name="WebDb"></param>
  249. /// <returns></returns>
  250. private async Task TransItem(SqlSugarClient WebDb)
  251. {
  252. var items = await _itemRepository.GetListAsync();
  253. if (items.Count > 0)
  254. {
  255. foreach (var item in items)
  256. {
  257. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.item(item_id, item_name, english_short_name, item_type_id, price, unit_id, default_result, reference_range_type_flag, is_calculation_item, " +
  258. "is_active,simple_code, display_order,line_mode_flag, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id, device_type_id) values " +
  259. "(@item_id,@item_name,@english_short_name,@item_type_id,@price,@unit_id::uuid,@default_result,@reference_range_type_flag,@is_calculation_item,@is_active,@simple_code,@display_order," +
  260. "@line_mode_flag,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id,@device_type_id::uuid);",
  261. new List<SugarParameter>() {
  262. new SugarParameter("@item_id",item.Id),
  263. new SugarParameter("@item_name",item.DisplayName),
  264. new SugarParameter("@english_short_name",item.EnglishShortName),
  265. new SugarParameter("@item_type_id",item.ItemTypeId),
  266. new SugarParameter("@price",item.Price),
  267. new SugarParameter("@unit_id",item.UnitId),
  268. new SugarParameter("@default_result",item.DefaultResult),
  269. new SugarParameter("@reference_range_type_flag",item.ReferenceRangeTypeFlag),
  270. new SugarParameter("@is_calculation_item",item.IsCalculationItem),
  271. new SugarParameter("@is_active",item.IsActive),
  272. new SugarParameter("@simple_code",item.SimpleCode),
  273. new SugarParameter("@display_order",item.DisplayOrder),
  274. new SugarParameter("@line_mode_flag",item.LineModeFlag),
  275. new SugarParameter("@concurrency_stamp",item.ConcurrencyStamp),
  276. new SugarParameter("@device_type_id",item.DeviceTypeId),
  277. new SugarParameter("@creation_time",item.CreationTime),
  278. new SugarParameter("@creator_id",item.CreatorId),
  279. new SugarParameter("@last_modification_time",item.LastModificationTime),
  280. new SugarParameter("@last_modifier_id",item.LastModifierId)
  281. });
  282. }
  283. _logger.LogInformation($"项目数据处理完毕,数量{items.Count}");
  284. }
  285. }
  286. /// <summary>
  287. /// 组合项目、明细
  288. /// </summary>
  289. /// <param name="WebDb"></param>
  290. /// <returns></returns>
  291. private async Task TransAsbitem(SqlSugarClient WebDb)
  292. {
  293. var asbitemWithDetails = (await _asbitemRepository.GetQueryableAsync()).Include(x => x.AsbitemDetails).ToList();
  294. if (asbitemWithDetails.Count > 0)
  295. {
  296. foreach (var asbitem in asbitemWithDetails)
  297. {
  298. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.asbitem(asbitem_id, asbitem_name, short_name, for_sex_id, item_type_id," +
  299. "price, device_type_id, is_before_eat, clinical_meaning, default_result," +
  300. "is_picture_rotate, is_check, is_active, simple_code, display_order, concurrency_stamp," +
  301. "creation_time, creator_id, last_modification_time, last_modifier_id, is_web_appoint,warn,disease_screening_type_id) values " +
  302. "(@asbitem_id,@asbitem_name,@short_name,@for_sex_id,@item_type_id,@price,@device_type_id::uuid,@is_before_eat,@clinical_meaning," +
  303. "@default_result,@is_picture_rotate,@is_check,@is_active,@simple_code,@display_order,@concurrency_stamp,@creation_time," +
  304. "@creator_id,@last_modification_time,@last_modifier_id,@is_web_appoint,@warn,@disease_screening_type_id::uuid)",
  305. new List<SugarParameter>() {
  306. new SugarParameter("asbitem_id",asbitem.Id),
  307. new SugarParameter("asbitem_name",asbitem.DisplayName),
  308. new SugarParameter("short_name",asbitem.ShortName),
  309. new SugarParameter("for_sex_id",asbitem.ForSexId),
  310. new SugarParameter("item_type_id",asbitem.ItemTypeId),
  311. new SugarParameter("price",asbitem.Price),
  312. new SugarParameter("device_type_id",asbitem.DeviceTypeId),
  313. new SugarParameter("is_before_eat",asbitem.IsBeforeEat),
  314. new SugarParameter("clinical_meaning",asbitem.ClinicalMeaning),
  315. new SugarParameter("default_result",asbitem.DefaultResult),
  316. new SugarParameter("is_picture_rotate",asbitem.IsPictureRotate),
  317. new SugarParameter("is_check",asbitem.IsCheck),
  318. new SugarParameter("is_active",asbitem.IsActive),
  319. new SugarParameter("simple_code",asbitem.SimpleCode),
  320. new SugarParameter("display_order",asbitem.DisplayOrder),
  321. new SugarParameter("concurrency_stamp",asbitem.ConcurrencyStamp),
  322. new SugarParameter("creation_time",asbitem.CreationTime),
  323. new SugarParameter("creator_id",asbitem.CreatorId),
  324. new SugarParameter("last_modification_time",asbitem.LastModificationTime),
  325. new SugarParameter("last_modifier_id",asbitem.LastModifierId),
  326. new SugarParameter("is_web_appoint",asbitem.IsWebAppoint),
  327. new SugarParameter("warn",asbitem.Warn),
  328. new SugarParameter("disease_screening_type_id",asbitem.DiseaseScreeningTypeId)
  329. });
  330. //插入明细
  331. foreach (var asbitemDetail in asbitem.AsbitemDetails)
  332. {
  333. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.asbitem_detail(asbitem_id, item_id, concurrency_stamp) values " +
  334. "(@asbitem_id,@item_id,@concurrency_stamp)",
  335. new List<SugarParameter>() {
  336. new SugarParameter("asbitem_id",asbitemDetail.AsbitemId),
  337. new SugarParameter("item_id",asbitemDetail.ItemId),
  338. new SugarParameter("concurrency_stamp",asbitemDetail.ConcurrencyStamp)
  339. });
  340. }
  341. }
  342. _logger.LogInformation($"组合项目、明细项目数据处理完毕,数量{asbitemWithDetails.Count}");
  343. }
  344. }
  345. /// <summary>
  346. /// 套餐
  347. /// </summary>
  348. /// <param name="WebDb"></param>
  349. /// <returns></returns>
  350. private async Task TransMedicalPackage(SqlSugarClient WebDb)
  351. {
  352. var medicalPackageWithDetails = (await _medicalPackageRepository.GetQueryableAsync()).Include(x => x.MedicalPackageDetails).ToList();
  353. if (medicalPackageWithDetails.Count > 0)
  354. {
  355. foreach (var medicalPackage in medicalPackageWithDetails)
  356. {
  357. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.medical_package(medical_package_id, medical_package_name, price, for_sex_id, is_active, remark, display_order, simple_code," +
  358. "concurrency_stamp,creation_time, creator_id, last_modification_time, last_modifier_id, is_web_appoint) values " +
  359. "(@medical_package_id,@medical_package_name,@price,@for_sex_id,@is_active,@remark,@display_order,@simple_code, " +
  360. "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id,@is_web_appoint)",
  361. new List<SugarParameter>() {
  362. new SugarParameter("medical_package_id",medicalPackage.Id),
  363. new SugarParameter("medical_package_name",medicalPackage.DisplayName),
  364. new SugarParameter("price",medicalPackage.Price),
  365. new SugarParameter("for_sex_id",medicalPackage.ForSexId),
  366. new SugarParameter("is_active",medicalPackage.IsActive),
  367. new SugarParameter("remark",medicalPackage.Remark),
  368. new SugarParameter("display_order",medicalPackage.DisplayOrder),
  369. new SugarParameter("simple_code",medicalPackage.SimpleCode),
  370. new SugarParameter("concurrency_stamp",medicalPackage.ConcurrencyStamp),
  371. new SugarParameter("creation_time",medicalPackage.CreationTime),
  372. new SugarParameter("creator_id",medicalPackage.CreatorId),
  373. new SugarParameter("last_modification_time",medicalPackage.LastModificationTime),
  374. new SugarParameter("last_modifier_id",medicalPackage.LastModifierId),
  375. new SugarParameter("is_web_appoint",medicalPackage.IsWebAppoint)
  376. });
  377. //插入明细
  378. foreach (var medicalPackageDetail in medicalPackage.MedicalPackageDetails)
  379. {
  380. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.medical_package_detail(medical_package_id, asbitem_id,price,amount,concurrency_stamp) values " +
  381. "(@medical_package_id,@asbitem_id,@price,@amount,@concurrency_stamp)",
  382. new List<SugarParameter>() {
  383. new SugarParameter("medical_package_id",medicalPackageDetail.MedicalPackageId),
  384. new SugarParameter("asbitem_id",medicalPackageDetail.AsbitemId),
  385. new SugarParameter("price",medicalPackageDetail.Price),
  386. new SugarParameter("amount",medicalPackageDetail.Amount),
  387. new SugarParameter("concurrency_stamp",medicalPackageDetail.ConcurrencyStamp)
  388. });
  389. }
  390. }
  391. _logger.LogInformation($"套餐数据、套餐明细处理完毕,数量{medicalPackageWithDetails.Count}");
  392. }
  393. }
  394. /// <summary>
  395. /// 诊断
  396. /// </summary>
  397. /// <param name="WebDb"></param>
  398. /// <returns></returns>
  399. private async Task TransDiagnosis(SqlSugarClient WebDb)
  400. {
  401. //诊断级别
  402. var diagnosisLevels = await _diagnosisLevelRepository.GetListAsync();
  403. if (diagnosisLevels.Count > 0)
  404. {
  405. foreach (var diagnosisLevel in diagnosisLevels)
  406. {
  407. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.diagnosis_level(diagnosis_level_id, display_name, display_order, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) " +
  408. "VALUES (@diagnosis_level_id,@display_name,@display_order,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  409. new List<SugarParameter>() {
  410. new SugarParameter("diagnosis_level_id",diagnosisLevel.Id),
  411. new SugarParameter("display_name",diagnosisLevel.DisplayName),
  412. new SugarParameter("display_order",diagnosisLevel.DisplayOrder),
  413. new SugarParameter("concurrency_stamp",diagnosisLevel.ConcurrencyStamp),
  414. new SugarParameter("creation_time",diagnosisLevel.CreationTime),
  415. new SugarParameter("creator_id",diagnosisLevel.CreatorId),
  416. new SugarParameter("last_modification_time",diagnosisLevel.LastModificationTime),
  417. new SugarParameter("last_modifier_id",diagnosisLevel.LastModifierId)
  418. });
  419. }
  420. _logger.LogInformation($"诊断级别数据处理完毕,数量{diagnosisLevels.Count}");
  421. }
  422. //诊断
  423. var diagnosiss = await _diagnosisRepository.GetListAsync();
  424. if (diagnosiss.Count > 0)
  425. {
  426. foreach (var diagnosis in diagnosiss)
  427. {
  428. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.diagnosis(diagnosis_id, diagnosis_name, item_type_id, suggestion_name, is_ill, for_sex_id, diagnosis_level_id, " +
  429. "simple_code,display_order,concurrency_stamp, creation_time, creator_id,last_modification_time,last_modifier_id) " +
  430. "VALUES (@diagnosis_id,@diagnosis_name,@item_type_id,@suggestion_name,@is_ill,@for_sex_id,@diagnosis_level_id," +
  431. "@simple_code,@display_order,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  432. new List<SugarParameter>() {
  433. new SugarParameter("diagnosis_id",diagnosis.Id),
  434. new SugarParameter("diagnosis_name",diagnosis.DisplayName),
  435. new SugarParameter("item_type_id",diagnosis.ItemTypeId),
  436. new SugarParameter("suggestion_name",diagnosis.SuggestionName),
  437. new SugarParameter("is_ill",diagnosis.IsIll),
  438. new SugarParameter("for_sex_id",diagnosis.ForSexId),
  439. new SugarParameter("diagnosis_level_id",diagnosis.DiagnosisLevelId),
  440. new SugarParameter("simple_code",diagnosis.SimpleCode),
  441. new SugarParameter("display_order",diagnosis.DisplayOrder),
  442. new SugarParameter("concurrency_stamp",diagnosis.ConcurrencyStamp),
  443. new SugarParameter("creation_time",diagnosis.CreationTime),
  444. new SugarParameter("creator_id",diagnosis.CreatorId),
  445. new SugarParameter("last_modification_time",diagnosis.LastModificationTime),
  446. new SugarParameter("last_modifier_id",diagnosis.LastModifierId)
  447. });
  448. }
  449. _logger.LogInformation($"诊断数据处理完毕,数量{diagnosiss.Count}");
  450. }
  451. }
  452. #endregion
  453. #region 单位相关
  454. /// <summary>
  455. /// 单位数据
  456. /// </summary>
  457. /// <param name="WebDb"></param>
  458. /// <returns></returns>
  459. private async Task TransCustomerOrgAsync(SqlSugarClient WebDb)
  460. {
  461. var customerOrgs = await _customerOrgRepository.GetListAsync();
  462. if (customerOrgs.Count > 0)
  463. {
  464. foreach (var customerOrg in customerOrgs)
  465. {
  466. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.customer_org(customer_org_id, customer_org_name, short_name, parent_id, path_code, simple_code, remark, is_active, display_order," +
  467. "concurrency_stamp, medical_center_id, creation_time, creator_id, last_modification_time, last_modifier_id, country_org_code) " +
  468. "VALUES (@customer_org_id,@customer_org_name,@short_name,@parent_id::uuid,@path_code,@simple_code,@remark,@is_active,@display_order," +
  469. "@concurrency_stamp,@medical_center_id,@creation_time,@creator_id,@last_modification_time,@last_modifier_id,@country_org_code);",
  470. new List<SugarParameter>() {
  471. new SugarParameter("customer_org_id",customerOrg.Id),
  472. new SugarParameter("customer_org_name",customerOrg.DisplayName),
  473. new SugarParameter("short_name",customerOrg.ShortName),
  474. new SugarParameter("parent_id",customerOrg.ParentId),
  475. new SugarParameter("path_code",customerOrg.PathCode),
  476. new SugarParameter("simple_code",customerOrg.SimpleCode),
  477. new SugarParameter("remark",customerOrg.Remark),
  478. new SugarParameter("is_active",customerOrg.IsActive),
  479. new SugarParameter("display_order",customerOrg.DisplayOrder),
  480. new SugarParameter("concurrency_stamp",customerOrg.ConcurrencyStamp),
  481. new SugarParameter("medical_center_id",customerOrg.MedicalCenterId),
  482. new SugarParameter("creation_time",customerOrg.CreationTime),
  483. new SugarParameter("creator_id",customerOrg.CreatorId),
  484. new SugarParameter("last_modification_time",customerOrg.LastModificationTime),
  485. new SugarParameter("last_modifier_id",customerOrg.LastModifierId),
  486. new SugarParameter("country_org_code",customerOrg.CountryOrgCode)
  487. });
  488. }
  489. _logger.LogInformation($"单位数据处理完毕,数量{customerOrgs.Count}");
  490. }
  491. }
  492. /// <summary>
  493. /// 单位体检次数
  494. /// </summary>
  495. /// <param name="WebDb"></param>
  496. /// <returns></returns>
  497. private async Task TransCustomerOrgRegisterAsync(SqlSugarClient WebDb)
  498. {
  499. var customerOrgRegisters = await _customerOrgRegisterRepository.GetListAsync();
  500. if (customerOrgRegisters.Count > 0)
  501. {
  502. foreach (var customerOrgRegister in customerOrgRegisters)
  503. {
  504. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.customer_org_register(customer_org_register_id, customer_org_id, medical_times, register_no, register_name, begin_time," +
  505. "end_time, is_complete, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) " +
  506. "VALUES (@customer_org_register_id,@customer_org_id,@medical_times,@register_no,@register_name,@begin_time," +
  507. "CAST(@end_time as timestamp),@is_complete,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  508. new List<SugarParameter>() {
  509. new SugarParameter("customer_org_register_id",customerOrgRegister.Id),
  510. new SugarParameter("customer_org_id",customerOrgRegister.CustomerOrgId),
  511. new SugarParameter("medical_times",customerOrgRegister.MedicalTimes),
  512. new SugarParameter("register_no",customerOrgRegister.RegisterNo),
  513. new SugarParameter("register_name",customerOrgRegister.RegisterName),
  514. new SugarParameter("begin_time",customerOrgRegister.BeginTime),
  515. new SugarParameter("end_time",customerOrgRegister.EndTime),
  516. new SugarParameter("is_complete",customerOrgRegister.IsComplete),
  517. new SugarParameter("concurrency_stamp",customerOrgRegister.ConcurrencyStamp),
  518. new SugarParameter("creation_time",customerOrgRegister.CreationTime),
  519. new SugarParameter("creator_id",customerOrgRegister.CreatorId),
  520. new SugarParameter("last_modification_time",customerOrgRegister.LastModificationTime),
  521. new SugarParameter("last_modifier_id",customerOrgRegister.LastModifierId)
  522. });
  523. }
  524. _logger.LogInformation($"单位体检次数数据处理完毕,数量{customerOrgRegisters.Count}");
  525. }
  526. }
  527. /// <summary>
  528. /// 单位分组
  529. /// </summary>
  530. /// <param name="WebDb"></param>
  531. /// <returns></returns>
  532. private async Task TransCustomerOrgGroupAsync(SqlSugarClient WebDb)
  533. {
  534. var customerOrgGroups = await _customerOrgGroupRepository.GetListAsync();
  535. if (customerOrgGroups.Count > 0)
  536. {
  537. foreach (var customerOrgGroup in customerOrgGroups)
  538. {
  539. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.customer_org_group(customer_org_group_id, display_name, price, for_sex_id, marital_status_id, age_lower_limit, age_upper_limit," +
  540. "job_post, job_title, remark, display_order, customer_org_register_id, concurrency_stamp, creation_time, creator_id,last_modification_time, last_modifier_id) " +
  541. "VALUES (@customer_org_group_id,@display_name,@price,@for_sex_id,@marital_status_id,@age_lower_limit,@age_upper_limit," +
  542. "@job_post,@job_title,@remark,@display_order,@customer_org_register_id,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  543. new List<SugarParameter>() {
  544. new SugarParameter("customer_org_group_id",customerOrgGroup.Id),
  545. new SugarParameter("display_name",customerOrgGroup.DisplayName),
  546. new SugarParameter("price",customerOrgGroup.Price),
  547. new SugarParameter("for_sex_id",customerOrgGroup.ForSexId),
  548. new SugarParameter("marital_status_id",customerOrgGroup.MaritalStatusId),
  549. new SugarParameter("age_lower_limit",customerOrgGroup.AgeLowerLimit),
  550. new SugarParameter("age_upper_limit",customerOrgGroup.AgeUpperLimit),
  551. new SugarParameter("job_post",customerOrgGroup.JobPost),
  552. new SugarParameter("job_title",customerOrgGroup.JobTitle),
  553. new SugarParameter("remark",customerOrgGroup.Remark),
  554. new SugarParameter("display_order",customerOrgGroup.DisplayOrder),
  555. new SugarParameter("customer_org_register_id",customerOrgGroup.CustomerOrgRegisterId),
  556. new SugarParameter("concurrency_stamp",customerOrgGroup.ConcurrencyStamp),
  557. new SugarParameter("creation_time",customerOrgGroup.CreationTime),
  558. new SugarParameter("creator_id",customerOrgGroup.CreatorId),
  559. new SugarParameter("last_modification_time",customerOrgGroup.LastModificationTime),
  560. new SugarParameter("last_modifier_id",customerOrgGroup.LastModifierId)
  561. });
  562. }
  563. _logger.LogInformation($"单位分组数据处理完毕,数量{customerOrgGroups.Count}");
  564. }
  565. }
  566. /// <summary>
  567. /// 单位分组明细
  568. /// </summary>
  569. /// <param name="WebDb"></param>
  570. /// <returns></returns>
  571. private async Task TransCustomerOrgGroupDetailAsync(SqlSugarClient WebDb)
  572. {
  573. var customerOrgGroupDetails = await _customerOrgGroupDetailRepository.GetListAsync();
  574. if (customerOrgGroupDetails.Count > 0)
  575. {
  576. foreach (var customerOrgGroupDetail in customerOrgGroupDetails)
  577. {
  578. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.customer_org_group_detail(customer_org_group_id, asbitem_id, price, amount, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) " +
  579. "VALUES (@customer_org_group_id,@asbitem_id,@price,@amount,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  580. new List<SugarParameter>() {
  581. new SugarParameter("customer_org_group_id",customerOrgGroupDetail.CustomerOrgGroupId),
  582. new SugarParameter("asbitem_id",customerOrgGroupDetail.AsbitemId),
  583. new SugarParameter("price",customerOrgGroupDetail.Price),
  584. new SugarParameter("amount",customerOrgGroupDetail.Amount),
  585. new SugarParameter("concurrency_stamp",customerOrgGroupDetail.ConcurrencyStamp),
  586. new SugarParameter("creation_time",customerOrgGroupDetail.CreationTime),
  587. new SugarParameter("creator_id",customerOrgGroupDetail.CreatorId),
  588. new SugarParameter("last_modification_time",customerOrgGroupDetail.LastModificationTime),
  589. new SugarParameter("last_modifier_id",customerOrgGroupDetail.LastModifierId)
  590. });
  591. }
  592. _logger.LogInformation($"单位分组明细数据处理完毕,数量{customerOrgGroupDetails.Count}");
  593. }
  594. }
  595. #endregion
  596. #region 人员导入
  597. /// <summary>
  598. /// 人员导入
  599. /// </summary>
  600. /// <param name="WebDb"></param>
  601. /// <param name="PatientRegisterId"></param>
  602. /// <returns></returns>
  603. private async Task TransPatientRegisterWithDetailAsync(SqlSugarClient WebDb, Guid PatientRegisterId)
  604. {
  605. try
  606. {
  607. await WebDb.Ado.BeginTranAsync();
  608. //人员登记信息
  609. var patientRegisterEnt = (await _patientRegisterRepository.GetQueryableAsync())
  610. .Include(x => x.Patient)
  611. .Include(x => x.SumDiagnoses)
  612. .Include(x => x.SumSuggestionHeaders).ThenInclude(x => x.SumSuggestionContents)
  613. .Include(x => x.SumSummaryHeaders).ThenInclude(x => x.SumSummaryContents)
  614. .Where(m => m.Id == PatientRegisterId).FirstOrDefault();
  615. if (patientRegisterEnt != null)
  616. {
  617. if (patientRegisterEnt.CompleteFlag != PatientRegisterCompleteFlag.SumCheck)
  618. throw new UserFriendlyException("人员未总检,不能同步");
  619. var IsPatient = (await WebDb.Ado.GetDataTableAsync($"select patient_id from patient where patient_id='{patientRegisterEnt.PatientId}'")).Rows.Count;
  620. if (IsPatient == 0)
  621. {
  622. #region 插入档案
  623. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.patient(patient_id, patient_no, medical_center_id, patient_name, sex_id, marital_status_id," +
  624. " birth_date, nation_id, birth_place_id, id_no, postal_code, email, telephone, mobile_telephone, address, simple_code, concurrency_stamp, creation_time," +
  625. " creator_id, last_modification_time, last_modifier_id) VALUES (@patient_id,@patient_no,@medical_center_id,@patient_name,@sex_id,@marital_status_id," +
  626. "CAST(@birth_date as timestamp),@nation_id,@birth_place_id::uuid,@id_no,@postal_code,@email,@telephone,@mobile_telephone,@address,@simple_code,@concurrency_stamp,@creation_time," +
  627. "@creator_id,@last_modification_time,@last_modifier_id);",
  628. new List<SugarParameter>() {
  629. new SugarParameter("patient_id",patientRegisterEnt.Patient.Id),
  630. new SugarParameter("patient_no",patientRegisterEnt.Patient.PatientNo),
  631. new SugarParameter("medical_center_id",patientRegisterEnt.Patient.MedicalCenterId),
  632. new SugarParameter("patient_name",patientRegisterEnt.Patient.DisplayName),
  633. new SugarParameter("sex_id",patientRegisterEnt.Patient.SexId),
  634. new SugarParameter("marital_status_id",patientRegisterEnt.Patient.MaritalStatusId),
  635. new SugarParameter("birth_date",patientRegisterEnt.Patient.BirthDate),
  636. new SugarParameter("nation_id",patientRegisterEnt.Patient.NationId),
  637. new SugarParameter("birth_place_id",patientRegisterEnt.Patient.BirthPlaceId),
  638. new SugarParameter("id_no",patientRegisterEnt.Patient.IdNo),
  639. new SugarParameter("postal_code",patientRegisterEnt.Patient.PostalCode),
  640. new SugarParameter("email",patientRegisterEnt.Patient.Email),
  641. new SugarParameter("telephone",patientRegisterEnt.Patient.Telephone),
  642. new SugarParameter("mobile_telephone",patientRegisterEnt.Patient.MobileTelephone),
  643. new SugarParameter("address",patientRegisterEnt.Patient.Address),
  644. new SugarParameter("simple_code",patientRegisterEnt.Patient.SimpleCode),
  645. new SugarParameter("concurrency_stamp",patientRegisterEnt.Patient.ConcurrencyStamp),
  646. new SugarParameter("creation_time",patientRegisterEnt.Patient.CreationTime),
  647. new SugarParameter("creator_id",patientRegisterEnt.Patient.CreatorId),
  648. new SugarParameter("last_modification_time",patientRegisterEnt.Patient.LastModificationTime),
  649. new SugarParameter("last_modifier_id",patientRegisterEnt.Patient.LastModifierId)
  650. });
  651. #endregion
  652. }
  653. #region 插入人员登记信息
  654. string third_register_id = "";
  655. var patientRegisterExterEnt = await _patientRegisterExterRepository.FirstOrDefaultAsync(f => f.PatientRegisterId == PatientRegisterId);
  656. if (patientRegisterExterEnt != null && !string.IsNullOrWhiteSpace(patientRegisterExterEnt.Planuserid))
  657. third_register_id = patientRegisterExterEnt.Planuserid;
  658. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.patient_register(patient_register_id, patient_register_no, patient_id, medical_times, customer_org_id, customer_org_group_id, medical_package_id," +
  659. "patient_name,sex_id, birth_date, age, job_card_no, medical_card_no, marital_status_id, medical_type_id, personnel_type_id, job_post, job_title, photo," +
  660. " sex_hormone_term_id, interpose_measure, medical_conclusion_id, complete_flag, is_medical_start, medical_start_date, summary_date, is_audit, audit_date, is_vip, third_info,remark,medical_center_id," +
  661. "customer_org_register_id, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id, audit_doctor_id,summary_doctor_id, his_patient_id,third_register_id) VALUES " +
  662. "(@patient_register_id,@patient_register_no,@patient_id,@medical_times,@customer_org_id,@customer_org_group_id::uuid,@medical_package_id::uuid," +
  663. "@patient_name,@sex_id,CAST(@birth_date as timestamp),@age,@job_card_no,@medical_card_no,@marital_status_id,@medical_type_id::uuid,@personnel_type_id::uuid,@job_post,@job_title,@photo," +
  664. "@sex_hormone_term_id::uuid,@interpose_measure,@medical_conclusion_id::uuid,@complete_flag,@is_medical_start,@medical_start_date,CAST(@summary_date as timestamp),@is_audit,CAST(@audit_date as timestamp),@is_vip,@third_info,@remark,@medical_center_id," +
  665. "@customer_org_register_id,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id,@audit_doctor_id::uuid,@summary_doctor_id::uuid,@his_patient_id,@third_register_id);",
  666. new List<SugarParameter>() {
  667. new SugarParameter("patient_register_id",patientRegisterEnt.Id),
  668. new SugarParameter("patient_register_no",patientRegisterEnt.PatientRegisterNo),
  669. new SugarParameter("patient_id",patientRegisterEnt.PatientId),
  670. new SugarParameter("medical_times",patientRegisterEnt.MedicalTimes),
  671. new SugarParameter("customer_org_id",patientRegisterEnt.CustomerOrgId),
  672. new SugarParameter("customer_org_group_id",patientRegisterEnt.CustomerOrgGroupId),
  673. new SugarParameter("medical_package_id",patientRegisterEnt.MedicalPackageId),
  674. new SugarParameter("patient_name",patientRegisterEnt.PatientName),
  675. new SugarParameter("sex_id",patientRegisterEnt.SexId),
  676. new SugarParameter("birth_date",patientRegisterEnt.BirthDate),
  677. new SugarParameter("age",patientRegisterEnt.Age),
  678. new SugarParameter("job_card_no",patientRegisterEnt.JobCardNo),
  679. new SugarParameter("medical_card_no",patientRegisterEnt.MedicalCardNo),
  680. new SugarParameter("marital_status_id",patientRegisterEnt.MaritalStatusId),
  681. new SugarParameter("medical_type_id",patientRegisterEnt.MedicalTypeId),
  682. new SugarParameter("personnel_type_id",patientRegisterEnt.PersonnelTypeId),
  683. new SugarParameter("job_post",patientRegisterEnt.JobPost),
  684. new SugarParameter("job_title",patientRegisterEnt.JobTitle),
  685. new SugarParameter("photo",patientRegisterEnt.Photo),
  686. new SugarParameter("sex_hormone_term_id",patientRegisterEnt.SexHormoneTermId),
  687. new SugarParameter("interpose_measure",patientRegisterEnt.InterposeMeasure),
  688. new SugarParameter("medical_conclusion_id",patientRegisterEnt.MedicalConclusionId),
  689. new SugarParameter("complete_flag",patientRegisterEnt.CompleteFlag),
  690. new SugarParameter("is_medical_start",patientRegisterEnt.IsMedicalStart),
  691. new SugarParameter("medical_start_date",patientRegisterEnt.MedicalStartDate),
  692. new SugarParameter("summary_date",patientRegisterEnt.SummaryDate),
  693. new SugarParameter("is_audit",patientRegisterEnt.IsAudit),
  694. new SugarParameter("audit_date",patientRegisterEnt.AuditDate),
  695. new SugarParameter("is_vip",patientRegisterEnt.IsVip),
  696. new SugarParameter("third_info",patientRegisterEnt.ThirdInfo),
  697. new SugarParameter("remark",patientRegisterEnt.Remark),
  698. new SugarParameter("medical_center_id",patientRegisterEnt.MedicalCenterId),
  699. new SugarParameter("customer_org_register_id",patientRegisterEnt.CustomerOrgRegisterId),
  700. new SugarParameter("concurrency_stamp",patientRegisterEnt.ConcurrencyStamp),
  701. new SugarParameter("creation_time",patientRegisterEnt.CreationTime),
  702. new SugarParameter("creator_id",patientRegisterEnt.CreatorId),
  703. new SugarParameter("last_modification_time",patientRegisterEnt.LastModificationTime),
  704. new SugarParameter("last_modifier_id",patientRegisterEnt.LastModifierId),
  705. new SugarParameter("audit_doctor_id",patientRegisterEnt.AuditDoctorId),
  706. new SugarParameter("summary_doctor_id",patientRegisterEnt.SummaryDoctorId),
  707. new SugarParameter("his_patient_id",patientRegisterEnt.HisPatientId),
  708. new SugarParameter("third_register_id",third_register_id)
  709. });
  710. #endregion
  711. #region 插入registercheck、以及相关
  712. var registerCheckWithDetails = (await _registerCheckRepository.GetQueryableAsync())
  713. .Include(x => x.RegisterCheckAsbitems)
  714. .Include(x => x.RegisterCheckItems)
  715. .Include(x => x.RegisterCheckPictures)
  716. .Include(x => x.RegisterCheckSuggestions)
  717. .Include(x => x.RegisterCheckSummaries)
  718. .Where(m => m.PatientRegisterId == patientRegisterEnt.Id).ToList();
  719. foreach (var registerCheckWithDetail in registerCheckWithDetails)
  720. {
  721. #region register_check
  722. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.register_check(register_check_id, patient_register_id, check_request_no, third_info, complete_flag, critical_value, critical_value_flag, critical_value_process_content," +
  723. "critical_value_process_flag, critical_value_process_doctor, critical_value_process_date, critical_value_create_date, check_doctor_id, check_date, is_audit," +
  724. " auditor_user_id, audit_time, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id, exec_organization_unit_id) VALUES " +
  725. "(@register_check_id,@patient_register_id,@check_request_no,@third_info,@complete_flag,@critical_value,@critical_value_flag,@critical_value_process_content," +
  726. "@critical_value_process_flag,@critical_value_process_doctor,CAST(@critical_value_process_date as timestamp),CAST(@critical_value_create_date as timestamp),@check_doctor_id,CAST(@check_date as timestamp),@is_audit," +
  727. "@auditor_user_id::uuid,CAST(@audit_time as timestamp),@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id,@exec_organization_unit_id::uuid);",
  728. new List<SugarParameter>() {
  729. new SugarParameter("register_check_id",registerCheckWithDetail.Id),
  730. new SugarParameter("patient_register_id",registerCheckWithDetail.PatientRegisterId),
  731. new SugarParameter("check_request_no",registerCheckWithDetail.CheckRequestNo),
  732. new SugarParameter("third_info",registerCheckWithDetail.ThirdInfo),
  733. new SugarParameter("complete_flag",registerCheckWithDetail.CompleteFlag),
  734. new SugarParameter("critical_value",registerCheckWithDetail.CriticalValue),
  735. new SugarParameter("critical_value_flag",registerCheckWithDetail.CriticalValueFlag),
  736. new SugarParameter("critical_value_process_content",registerCheckWithDetail.CriticalValueProcessContent),
  737. new SugarParameter("critical_value_process_flag",registerCheckWithDetail.CriticalValueProcessFlag),
  738. new SugarParameter("critical_value_process_doctor",registerCheckWithDetail.CriticalValueProcessDoctor),
  739. new SugarParameter("critical_value_process_date",registerCheckWithDetail.CriticalValueProcessDate),
  740. new SugarParameter("critical_value_create_date",registerCheckWithDetail.CriticalValueCreateDate),
  741. new SugarParameter("check_doctor_id",registerCheckWithDetail.CheckDoctorId),
  742. new SugarParameter("check_date",registerCheckWithDetail.CheckDate),
  743. new SugarParameter("is_audit",registerCheckWithDetail.IsAudit),
  744. new SugarParameter("auditor_user_id",registerCheckWithDetail.AuditorUserId),
  745. new SugarParameter("audit_time",registerCheckWithDetail.AuditTime),
  746. new SugarParameter("concurrency_stamp",registerCheckWithDetail.ConcurrencyStamp),
  747. new SugarParameter("creation_time",registerCheckWithDetail.CreationTime),
  748. new SugarParameter("creator_id",registerCheckWithDetail.CreatorId),
  749. new SugarParameter("last_modification_time",registerCheckWithDetail.LastModificationTime),
  750. new SugarParameter("last_modifier_id",registerCheckWithDetail.LastModifierId),
  751. new SugarParameter("exec_organization_unit_id",registerCheckWithDetail.ExecOrganizationUnitId),
  752. });
  753. #endregion
  754. #region register_check_asbitem
  755. foreach (var registerCheckAsbitem in registerCheckWithDetail.RegisterCheckAsbitems)
  756. {
  757. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.register_check_asbitem" +
  758. "(register_check_asbitem_id, register_check_id, asbitem_id, patient_register_id, standard_price, charge_price," +
  759. "pay_type_flag, is_charge, amount, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " +
  760. "(@register_check_asbitem_id,@register_check_id,@asbitem_id,@patient_register_id,@standard_price,@charge_price," +
  761. "@pay_type_flag,@is_charge,@amount,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  762. new List<SugarParameter>() {
  763. new SugarParameter("register_check_asbitem_id",registerCheckAsbitem.Id),
  764. new SugarParameter("register_check_id",registerCheckAsbitem.RegisterCheckId),
  765. new SugarParameter("asbitem_id",registerCheckAsbitem.AsbitemId),
  766. new SugarParameter("patient_register_id",registerCheckAsbitem.PatientRegisterId),
  767. new SugarParameter("standard_price",registerCheckAsbitem.StandardPrice),
  768. new SugarParameter("charge_price",registerCheckAsbitem.ChargePrice),
  769. new SugarParameter("pay_type_flag",registerCheckAsbitem.PayTypeFlag),
  770. new SugarParameter("is_charge",registerCheckAsbitem.IsCharge),
  771. new SugarParameter("amount",registerCheckAsbitem.Amount),
  772. new SugarParameter("concurrency_stamp",registerCheckAsbitem.ConcurrencyStamp),
  773. new SugarParameter("creation_time",registerCheckAsbitem.CreationTime),
  774. new SugarParameter("creator_id",registerCheckAsbitem.CreatorId),
  775. new SugarParameter("last_modification_time",registerCheckAsbitem.LastModificationTime),
  776. new SugarParameter("last_modifier_id",registerCheckAsbitem.LastModifierId),
  777. });
  778. }
  779. #endregion
  780. #region register_check_item
  781. foreach (var registerCheckItem in registerCheckWithDetail.RegisterCheckItems)
  782. {
  783. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.register_check_item(register_check_id, item_id, result, unit, reference_range_value, critical_range_value, critical_value, result_status_id, check_doctor_name, " +
  784. "check_date, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " +
  785. "(@register_check_id,@item_id,@result,@unit,@reference_range_value,@critical_range_value,@critical_value,@result_status_id,@check_doctor_name," +
  786. "CAST(@check_date as timestamp),@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  787. new List<SugarParameter>() {
  788. new SugarParameter("register_check_id",registerCheckItem.RegisterCheckId),
  789. new SugarParameter("item_id",registerCheckItem.ItemId),
  790. new SugarParameter("result",registerCheckItem.Result),
  791. new SugarParameter("unit",registerCheckItem.Unit),
  792. new SugarParameter("reference_range_value",registerCheckItem.ReferenceRangeValue),
  793. new SugarParameter("critical_range_value",registerCheckItem.CriticalRangeValue),
  794. new SugarParameter("critical_value",registerCheckItem.CriticalValue),
  795. new SugarParameter("result_status_id",registerCheckItem.ResultStatusId),
  796. new SugarParameter("check_doctor_name",registerCheckItem.CheckDoctorName),
  797. new SugarParameter("check_date",registerCheckItem.CheckDate),
  798. new SugarParameter("concurrency_stamp",registerCheckItem.ConcurrencyStamp),
  799. new SugarParameter("creation_time",registerCheckItem.CreationTime),
  800. new SugarParameter("creator_id",registerCheckItem.CreatorId),
  801. new SugarParameter("last_modification_time",registerCheckItem.LastModificationTime),
  802. new SugarParameter("last_modifier_id",registerCheckItem.LastModifierId)
  803. });
  804. }
  805. #endregion
  806. #region register_check_picture
  807. foreach (var registerCheckPicture in registerCheckWithDetail.RegisterCheckPictures)
  808. {
  809. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.register_check_picture" +
  810. "(register_check_picture_id, register_check_id, picture_filename, is_print, display_order," +
  811. "concurrency_stamp, creation_time,creator_id, last_modification_time, last_modifier_id, picture_file_type) VALUES " +
  812. "(@register_check_picture_id,@register_check_id,@picture_filename,@is_print,@display_order," +
  813. "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id,@picture_file_type);",
  814. new List<SugarParameter>() {
  815. new SugarParameter("register_check_picture_id",registerCheckPicture.Id),
  816. new SugarParameter("register_check_id",registerCheckPicture.RegisterCheckId),
  817. new SugarParameter("picture_filename",registerCheckPicture.PictureFilename),
  818. new SugarParameter("is_print",registerCheckPicture.IsPrint),
  819. new SugarParameter("display_order",registerCheckPicture.DisplayOrder),
  820. new SugarParameter("concurrency_stamp",registerCheckPicture.ConcurrencyStamp),
  821. new SugarParameter("creation_time",registerCheckPicture.CreationTime),
  822. new SugarParameter("creator_id",registerCheckPicture.CreatorId),
  823. new SugarParameter("last_modification_time",registerCheckPicture.LastModificationTime),
  824. new SugarParameter("last_modifier_id",registerCheckPicture.LastModifierId),
  825. new SugarParameter("picture_file_type",registerCheckPicture.PictureFileType)
  826. });
  827. }
  828. #endregion
  829. #region register_check_suggestion
  830. foreach (var registerCheckSuggestion in registerCheckWithDetail.RegisterCheckSuggestions)
  831. {
  832. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.register_check_suggestion" +
  833. "(register_check_suggestion_id, register_check_id, suggestion, display_order," +
  834. "concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " +
  835. "(@register_check_suggestion_id,@register_check_id,@suggestion,@display_order," +
  836. "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  837. new List<SugarParameter>() {
  838. new SugarParameter("register_check_suggestion_id",registerCheckSuggestion.Id),
  839. new SugarParameter("register_check_id",registerCheckSuggestion.RegisterCheckId),
  840. new SugarParameter("suggestion",registerCheckSuggestion.Suggestion),
  841. new SugarParameter("display_order",registerCheckSuggestion.DisplayOrder),
  842. new SugarParameter("concurrency_stamp",registerCheckSuggestion.ConcurrencyStamp),
  843. new SugarParameter("creation_time",registerCheckSuggestion.CreationTime),
  844. new SugarParameter("creator_id",registerCheckSuggestion.CreatorId),
  845. new SugarParameter("last_modification_time",registerCheckSuggestion.LastModificationTime),
  846. new SugarParameter("last_modifier_id",registerCheckSuggestion.LastModifierId)
  847. });
  848. }
  849. #endregion
  850. #region register_check_summary
  851. foreach (var registerCheckSummarie in registerCheckWithDetail.RegisterCheckSummaries)
  852. {
  853. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.register_check_summary" +
  854. "(register_check_summary_id, register_check_id, summary, display_order, summary_flag," +
  855. "concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " +
  856. "(@register_check_summary_id,@register_check_id,@summary,@display_order,@summary_flag," +
  857. "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  858. new List<SugarParameter>() {
  859. new SugarParameter("register_check_summary_id",registerCheckSummarie.Id),
  860. new SugarParameter("register_check_id",registerCheckSummarie.RegisterCheckId),
  861. new SugarParameter("summary",registerCheckSummarie.Summary),
  862. new SugarParameter("display_order",registerCheckSummarie.DisplayOrder),
  863. new SugarParameter("summary_flag",registerCheckSummarie.SummaryFlag),
  864. new SugarParameter("concurrency_stamp",registerCheckSummarie.ConcurrencyStamp),
  865. new SugarParameter("creation_time",registerCheckSummarie.CreationTime),
  866. new SugarParameter("creator_id",registerCheckSummarie.CreatorId),
  867. new SugarParameter("last_modification_time",registerCheckSummarie.LastModificationTime),
  868. new SugarParameter("last_modifier_id",registerCheckSummarie.LastModifierId),
  869. });
  870. }
  871. #endregion
  872. }
  873. #endregion
  874. #region 插入总检综述
  875. foreach (var sumSummaryHeader in patientRegisterEnt.SumSummaryHeaders)
  876. {
  877. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.sum_summary_header" +
  878. "(sum_summary_header_id, patient_register_id, summary_title, summary_flag, display_order," +
  879. "concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " +
  880. "(@sum_summary_header_id,@patient_register_id,@summary_title,@summary_flag,@display_order," +
  881. "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  882. new List<SugarParameter>() {
  883. new SugarParameter("sum_summary_header_id",sumSummaryHeader.Id),
  884. new SugarParameter("patient_register_id",sumSummaryHeader.PatientRegisterId),
  885. new SugarParameter("summary_title",sumSummaryHeader.SummaryTitle),
  886. new SugarParameter("summary_flag",sumSummaryHeader.SummaryFlag),
  887. new SugarParameter("display_order",sumSummaryHeader.DisplayOrder),
  888. new SugarParameter("concurrency_stamp",sumSummaryHeader.ConcurrencyStamp),
  889. new SugarParameter("creation_time",sumSummaryHeader.CreationTime),
  890. new SugarParameter("creator_id",sumSummaryHeader.CreatorId),
  891. new SugarParameter("last_modification_time",sumSummaryHeader.LastModificationTime),
  892. new SugarParameter("last_modifier_id",sumSummaryHeader.LastModifierId)
  893. });
  894. foreach (var sumSummaryContent in sumSummaryHeader.SumSummaryContents)
  895. {
  896. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.sum_summary_content" +
  897. "(sum_summary_content_id, sum_summary_header_id, summary_content, display_order, " +
  898. "concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " +
  899. "(@sum_summary_content_id,@sum_summary_header_id,@summary_content,@display_order," +
  900. "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  901. new List<SugarParameter>() {
  902. new SugarParameter("sum_summary_content_id",sumSummaryContent.Id),
  903. new SugarParameter("sum_summary_header_id",sumSummaryContent.SumSummaryHeaderId),
  904. new SugarParameter("summary_content",sumSummaryContent.SummaryContent),
  905. new SugarParameter("display_order",sumSummaryContent.DisplayOrder),
  906. new SugarParameter("concurrency_stamp",sumSummaryContent.ConcurrencyStamp),
  907. new SugarParameter("creation_time",sumSummaryContent.CreationTime),
  908. new SugarParameter("creator_id",sumSummaryContent.CreatorId),
  909. new SugarParameter("last_modification_time",sumSummaryContent.LastModificationTime),
  910. new SugarParameter("last_modifier_id",sumSummaryContent.LastModifierId)
  911. });
  912. }
  913. }
  914. #endregion
  915. #region 插入总检建议
  916. foreach (var sumSuggestionHeader in patientRegisterEnt.SumSuggestionHeaders)
  917. {
  918. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.sum_suggestion_header" +
  919. "(sum_suggestion_header_id, patient_register_id, suggestion_title, suggestion_flag, display_order," +
  920. "concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " +
  921. "(@sum_suggestion_header_id,@patient_register_id,@suggestion_title,@suggestion_flag,@display_order," +
  922. "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  923. new List<SugarParameter>() {
  924. new SugarParameter("sum_suggestion_header_id",sumSuggestionHeader.Id),
  925. new SugarParameter("patient_register_id",sumSuggestionHeader.PatientRegisterId),
  926. new SugarParameter("suggestion_title",sumSuggestionHeader.SuggestionTitle),
  927. new SugarParameter("suggestion_flag",sumSuggestionHeader.SuggestionFlag),
  928. new SugarParameter("display_order",sumSuggestionHeader.DisplayOrder),
  929. new SugarParameter("concurrency_stamp",sumSuggestionHeader.ConcurrencyStamp),
  930. new SugarParameter("creation_time",sumSuggestionHeader.CreationTime),
  931. new SugarParameter("creator_id",sumSuggestionHeader.CreatorId),
  932. new SugarParameter("last_modification_time",sumSuggestionHeader.LastModificationTime),
  933. new SugarParameter("last_modifier_id",sumSuggestionHeader.LastModifierId)
  934. });
  935. foreach (var sumSuggestionContent in sumSuggestionHeader.SumSuggestionContents)
  936. {
  937. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.sum_suggestion_content" +
  938. "(sum_suggestion_content_id, sum_suggestion_header_id, suggestion_type, suggestion_content, display_order, " +
  939. "concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " +
  940. "(@sum_suggestion_content_id,@sum_suggestion_header_id,@suggestion_type,@suggestion_content,@display_order, " +
  941. "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  942. new List<SugarParameter>() {
  943. new SugarParameter("sum_suggestion_content_id",sumSuggestionContent.Id),
  944. new SugarParameter("sum_suggestion_header_id",sumSuggestionContent.SumSuggestionHeaderId),
  945. new SugarParameter("suggestion_type",sumSuggestionContent.SuggestionType),
  946. new SugarParameter("suggestion_content",sumSuggestionContent.SuggestionContent),
  947. new SugarParameter("display_order",sumSuggestionContent.DisplayOrder),
  948. new SugarParameter("concurrency_stamp",sumSuggestionContent.ConcurrencyStamp),
  949. new SugarParameter("creation_time",sumSuggestionContent.CreationTime),
  950. new SugarParameter("creator_id",sumSuggestionContent.CreatorId),
  951. new SugarParameter("last_modification_time",sumSuggestionContent.LastModificationTime),
  952. new SugarParameter("last_modifier_id",sumSuggestionContent.LastModifierId)
  953. });
  954. }
  955. }
  956. #endregion
  957. #region 插入总检诊断
  958. foreach (var sumDiagnoses in patientRegisterEnt.SumDiagnoses)
  959. {
  960. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.sum_diagnosis" +
  961. "(patient_register_id, diagnosis_id, sum_suggestion_header_id, display_order, concurrency_stamp) VALUES " +
  962. "(@patient_register_id,@diagnosis_id,@sum_suggestion_header_id,@display_order,@concurrency_stamp);",
  963. new List<SugarParameter>() {
  964. new SugarParameter("patient_register_id",sumDiagnoses.PatientRegisterId),
  965. new SugarParameter("diagnosis_id",sumDiagnoses.DiagnosisId),
  966. new SugarParameter("sum_suggestion_header_id",sumDiagnoses.SumSuggestionHeaderId),
  967. new SugarParameter("display_order",sumDiagnoses.DisplayOrder),
  968. new SugarParameter("concurrency_stamp",sumDiagnoses.ConcurrencyStamp)
  969. });
  970. }
  971. #endregion
  972. }
  973. else
  974. {
  975. throw new UserFriendlyException("数据不存在");
  976. }
  977. await WebDb.Ado.CommitTranAsync();
  978. }
  979. catch (Exception ex)
  980. {
  981. await WebDb.Ado.RollbackTranAsync();
  982. throw new UserFriendlyException(ex.ToString());
  983. }
  984. }
  985. #endregion
  986. #region 撤销、删除
  987. /// <summary>
  988. /// 人员导入
  989. /// </summary>
  990. /// <param name="WebDb"></param>
  991. /// <param name="PatientRegisterId"></param>
  992. /// <returns></returns>
  993. private async Task DeletePatientRegisterWithDetailAsync(SqlSugarClient WebDb, Guid PatientRegisterId)
  994. {
  995. try
  996. {
  997. await WebDb.Ado.BeginTranAsync();
  998. await WebDb.Ado.ExecuteCommandAsync($"delete from sum_diagnosis where patient_register_id='{PatientRegisterId}'");
  999. await WebDb.Ado.ExecuteCommandAsync($"delete from sum_summary_content where sum_summary_header_id in (select sum_summary_header_id from sum_summary_header where patient_register_id='{PatientRegisterId}')");
  1000. await WebDb.Ado.ExecuteCommandAsync($"delete from sum_summary_header where patient_register_id='{PatientRegisterId}'");
  1001. await WebDb.Ado.ExecuteCommandAsync($"delete from sum_suggestion_content where sum_suggestion_header_id in (select sum_suggestion_header_id from sum_suggestion_header where patient_register_id='{PatientRegisterId}')");
  1002. await WebDb.Ado.ExecuteCommandAsync($"delete from sum_suggestion_header where patient_register_id='{PatientRegisterId}'");
  1003. await WebDb.Ado.ExecuteCommandAsync($"delete from register_check_asbitem where register_check_id in (select register_check_id from register_check where patient_register_id='{PatientRegisterId}')");
  1004. await WebDb.Ado.ExecuteCommandAsync($"delete from register_check_item where register_check_id in (select register_check_id from register_check where patient_register_id='{PatientRegisterId}')");
  1005. await WebDb.Ado.ExecuteCommandAsync($"delete from register_check_picture where register_check_id in (select register_check_id from register_check where patient_register_id='{PatientRegisterId}')");
  1006. await WebDb.Ado.ExecuteCommandAsync($"delete from register_check_suggestion where register_check_id in (select register_check_id from register_check where patient_register_id='{PatientRegisterId}')");
  1007. await WebDb.Ado.ExecuteCommandAsync($"delete from register_check_summary where register_check_id in (select register_check_id from register_check where patient_register_id='{PatientRegisterId}')");
  1008. await WebDb.Ado.ExecuteCommandAsync($"delete from register_check where patient_register_id='{PatientRegisterId}'");
  1009. await WebDb.Ado.ExecuteCommandAsync($"delete from patient_register where patient_register_id='{PatientRegisterId}'");
  1010. await WebDb.Ado.CommitTranAsync();
  1011. }
  1012. catch (Exception ex)
  1013. {
  1014. await WebDb.Ado.RollbackTranAsync();
  1015. throw new UserFriendlyException(ex.ToString());
  1016. }
  1017. }
  1018. #endregion
  1019. }
  1020. }