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.

1535 lines
95 KiB

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
  1. using Azure.Core;
  2. using Microsoft.AspNetCore.Authorization;
  3. using Microsoft.AspNetCore.Mvc;
  4. using Microsoft.EntityFrameworkCore;
  5. using Microsoft.Extensions.Configuration;
  6. using Microsoft.Extensions.Logging;
  7. using Newtonsoft.Json.Converters;
  8. using Newtonsoft.Json;
  9. using Org.BouncyCastle.Utilities;
  10. using Shentun.Peis.CustomerOrgs;
  11. using Shentun.Peis.DataMigrations;
  12. using Shentun.Peis.Enums;
  13. using Shentun.Peis.ItemTypes;
  14. using Shentun.Peis.Models;
  15. using Shentun.Peis.MyUser;
  16. using Shentun.Peis.PatientRegisters;
  17. using Shentun.Peis.PlugIns;
  18. using Shentun.Peis.RegisterCheckItems;
  19. using Shentun.Peis.TransToWebPeiss;
  20. using SqlSugar;
  21. using System;
  22. using System.Collections.Generic;
  23. using System.IO;
  24. using System.Linq;
  25. using System.Net.Http.Headers;
  26. using System.Net.Http;
  27. using System.Text;
  28. using System.Threading.Tasks;
  29. using Volo.Abp;
  30. using Volo.Abp.Application.Services;
  31. using Volo.Abp.Domain.Repositories;
  32. using Volo.Abp.Identity;
  33. using Volo.Abp.Uow;
  34. using Shentun.Peis.PrintReports;
  35. using System.Threading;
  36. using NPOI.HSSF.Record.Chart;
  37. namespace Shentun.Peis.TransToWebPeis
  38. {
  39. [ApiExplorerSettings(GroupName = "Work")]
  40. [Authorize]
  41. public class TransToWebPeisAppService : ApplicationService
  42. {
  43. private readonly IRepository<DeviceType, Guid> _deviceTypeRepository;
  44. private readonly IRepository<ItemType, Guid> _itemTypeRepository;
  45. private readonly IRepository<Item, Guid> _itemRepository;
  46. private readonly IRepository<Asbitem, Guid> _asbitemRepository;
  47. private readonly IRepository<MedicalPackage, Guid> _medicalPackageRepository;
  48. private readonly IRepository<Diagnosis, Guid> _diagnosisRepository;
  49. private readonly IRepository<DiagnosisLevel> _diagnosisLevelRepository;
  50. private readonly ILogger<TransToWebPeisAppService> _logger;
  51. private readonly IRepository<ThirdInterface, Guid> _thirdInterfaceRepository;
  52. private readonly IRepository<CustomerOrg, Guid> _customerOrgRepository;
  53. private readonly IRepository<CustomerOrgRegister, Guid> _customerOrgRegisterRepository;
  54. private readonly IRepository<CustomerOrgGroup, Guid> _customerOrgGroupRepository;
  55. private readonly IRepository<CustomerOrgGroupDetail> _customerOrgGroupDetailRepository;
  56. private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository;
  57. private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
  58. private readonly IRepository<PatientRegisterExter> _patientRegisterExterRepository;
  59. private readonly UnitOfWorkManager _unitOfWorkManager;
  60. private readonly PrintReportAppService _printReportAppService;
  61. private readonly SqlSugarClient Db = new SqlSugarClient(new ConnectionConfig()
  62. {
  63. ConnectionString = "server=135.191.65.102;uid=sa;pwd=123;database=mypeis0513;Encrypt=false;",
  64. DbType = SqlSugar.DbType.SqlServer,
  65. IsAutoCloseConnection = true
  66. });
  67. private readonly SqlSugarClient WebDb0520 = new SqlSugarClient(new ConnectionConfig()
  68. {
  69. ConnectionString = "Host=10.1.12.138;Port=5432;Database=WebPeis0520;User ID=postgres;Password=st123;",
  70. DbType = SqlSugar.DbType.PostgreSQL,
  71. IsAutoCloseConnection = true
  72. });
  73. public TransToWebPeisAppService(
  74. IRepository<ItemType, Guid> itemTypeRepository,
  75. ILogger<TransToWebPeisAppService> logger,
  76. IRepository<ThirdInterface, Guid> thirdInterfaceRepository,
  77. IRepository<Item, Guid> itemRepository,
  78. IRepository<Asbitem, Guid> asbitemRepository,
  79. IRepository<MedicalPackage, Guid> medicalPackageRepository,
  80. IRepository<Diagnosis, Guid> diagnosisRepository,
  81. IRepository<DiagnosisLevel> diagnosisLevelRepository,
  82. IRepository<CustomerOrg, Guid> customerOrgRepository,
  83. IRepository<CustomerOrgRegister, Guid> customerOrgRegisterRepository,
  84. IRepository<CustomerOrgGroup, Guid> customerOrgGroupRepository,
  85. IRepository<CustomerOrgGroupDetail> customerOrgGroupDetailRepository,
  86. IRepository<PatientRegister, Guid> patientRegisterRepository,
  87. IRepository<RegisterCheck, Guid> registerCheckRepository,
  88. IRepository<PatientRegisterExter> patientRegisterExterRepository,
  89. UnitOfWorkManager unitOfWorkManager,
  90. PrintReportAppService printReportAppService)
  91. {
  92. _itemTypeRepository = itemTypeRepository;
  93. _logger = logger;
  94. _thirdInterfaceRepository = thirdInterfaceRepository;
  95. _itemRepository = itemRepository;
  96. _asbitemRepository = asbitemRepository;
  97. _medicalPackageRepository = medicalPackageRepository;
  98. _diagnosisRepository = diagnosisRepository;
  99. _diagnosisLevelRepository = diagnosisLevelRepository;
  100. _customerOrgRepository = customerOrgRepository;
  101. _customerOrgRegisterRepository = customerOrgRegisterRepository;
  102. _customerOrgGroupRepository = customerOrgGroupRepository;
  103. _customerOrgGroupDetailRepository = customerOrgGroupDetailRepository;
  104. _patientRegisterRepository = patientRegisterRepository;
  105. _registerCheckRepository = registerCheckRepository;
  106. _patientRegisterExterRepository = patientRegisterExterRepository;
  107. _unitOfWorkManager = unitOfWorkManager;
  108. _printReportAppService = printReportAppService;
  109. }
  110. /// <summary>
  111. /// 上传体检报告 并同步业务数据
  112. /// </summary>
  113. /// <returns></returns>
  114. [HttpPost("api/app/TransToWebPeis/UploadPeisReport")]
  115. public async Task UploadPeisReportAsync(UploadPeisReportIuputDto input)
  116. {
  117. var isPatientRegister = await _patientRegisterRepository.FirstOrDefaultAsync(f => f.Id == input.PatientRegisterId);
  118. if (isPatientRegister == null)
  119. throw new UserFriendlyException("人员不存在");
  120. if (isPatientRegister.CompleteFlag != PatientRegisterCompleteFlag.SumCheck)
  121. throw new UserFriendlyException("人员未总检,无法上传");
  122. //同步数据
  123. await TransPatientRegisterByPatientRegisterIdAsync(new PatientRegisterIdInputDto { PatientRegisterId = input.PatientRegisterId });
  124. //上传报告
  125. var thirdInterfaces = await _thirdInterfaceRepository.GetListAsync(o => o.ThirdInterfaceType ==
  126. ThirdInterfaceTypeFlag.TranToWebPeis);
  127. foreach (var thirdInterface in thirdInterfaces)
  128. {
  129. var parmValue = thirdInterface.ParmValue;
  130. var configurationBuilder = new ConfigurationBuilder()
  131. .AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue)));
  132. var interfaceConfig = configurationBuilder.Build();
  133. var url = interfaceConfig.GetSection("Interface").GetSection("Url").Value;
  134. var user = interfaceConfig.GetSection("Interface").GetSection("User").Value;
  135. var password = interfaceConfig.GetSection("Interface").GetSection("Password").Value;
  136. var result = await CallAppServiceAsync<UploadPeisReportIuputDto, object>(url, "", input);
  137. }
  138. //更新上传状态
  139. var patientRegisterEnt = await _patientRegisterRepository.GetAsync(input.PatientRegisterId);
  140. patientRegisterEnt.IsUpload = 'Y';
  141. await _patientRegisterRepository.UpdateAsync(patientRegisterEnt);
  142. }
  143. /// <summary>
  144. /// 根据人员登记ID上传人员体检信息
  145. /// </summary>
  146. /// <param name="input"></param>
  147. /// <returns></returns>
  148. [HttpPost("api/app/TransToWebPeis/TransPatientRegisterByPatientRegisterId")]
  149. public async Task TransPatientRegisterByPatientRegisterIdAsync(PatientRegisterIdInputDto input)
  150. {
  151. var thirdInterfaces = await _thirdInterfaceRepository.GetListAsync(o => o.ThirdInterfaceType ==
  152. ThirdInterfaceTypeFlag.TranToWebPeis);
  153. foreach (var thirdInterface in thirdInterfaces)
  154. {
  155. var connectString = GetConnectionStrings(thirdInterface.ParmValue);
  156. SqlSugarClient WebDb = new SqlSugarClient(new ConnectionConfig()
  157. {
  158. ConnectionString = connectString,
  159. DbType = SqlSugar.DbType.PostgreSQL,
  160. IsAutoCloseConnection = true
  161. });
  162. var IsPatient = (await WebDb.Ado.GetDataTableAsync($"select patient_register_id from patient_register where patient_register_id='{input.PatientRegisterId}'")).Rows.Count;
  163. if (IsPatient > 0)
  164. {
  165. await DeletePatientRegisterWithDetailAsync(WebDb, input.PatientRegisterId);
  166. }
  167. await TransPatientRegisterWithDetailAsync(WebDb, input.PatientRegisterId);
  168. }
  169. }
  170. /// <summary>
  171. /// 撤销上传人员体检信息
  172. /// </summary>
  173. /// <param name="input"></param>
  174. /// <returns></returns>
  175. [HttpPost("api/app/TransToWebPeis/CancelTransPatientRegisterByPatientRegisterId")]
  176. public async Task CancelTransPatientRegisterByPatientRegisterIdAsync(PatientRegisterIdInputDto input)
  177. {
  178. var thirdInterfaces = await _thirdInterfaceRepository.GetListAsync(o => o.ThirdInterfaceType ==
  179. ThirdInterfaceTypeFlag.TranToWebPeis);
  180. foreach (var thirdInterface in thirdInterfaces)
  181. {
  182. var connectString = GetConnectionStrings(thirdInterface.ParmValue);
  183. SqlSugarClient WebDb = new SqlSugarClient(new ConnectionConfig()
  184. {
  185. ConnectionString = connectString,
  186. DbType = SqlSugar.DbType.PostgreSQL,
  187. IsAutoCloseConnection = true
  188. });
  189. await DeletePatientRegisterWithDetailAsync(WebDb, input.PatientRegisterId);
  190. }
  191. }
  192. /// <summary>
  193. /// 导入数据 任务计划用
  194. /// </summary>
  195. /// <param name="input"></param>
  196. /// <returns></returns>
  197. /// <exception cref="Exception"></exception>
  198. [HttpPost("api/app/TransToWebPeis/SyncPatientRegisterReportByPatientRegisterId")]
  199. public async Task SyncPatientRegisterReportByPatientRegisterIdAsync(PatientRegisterIdInputDto input)
  200. {
  201. var thirdInterface = await _thirdInterfaceRepository.FirstOrDefaultAsync(f => f.ThirdInterfaceType == ThirdInterfaceTypeFlag.TranToWebPeis);
  202. if (thirdInterface.IsActive != 'Y')
  203. {
  204. throw new UserFriendlyException("该接口已禁用");
  205. }
  206. var parmValue = thirdInterface.ParmValue;
  207. var configurationBuilder = new ConfigurationBuilder()
  208. .AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue)));
  209. var config = configurationBuilder.Build();
  210. var reportApiBaseAddress = config.GetSection("Interface").GetSection("ReportApiBaseAddress").Value;
  211. var reportApiUrl = config.GetSection("Interface").GetSection("ReportApiUrl").Value;
  212. string reportBase64 = "";
  213. #region 获取报告地址
  214. var printReportData = await _printReportAppService.GetMedicalReportAsync(new PatientRegisterIdInputDto
  215. {
  216. PatientRegisterId = input.PatientRegisterId
  217. });
  218. using (var httpClientHandler = new HttpClientHandler())
  219. {
  220. using (var httpClient = new HttpClient(httpClientHandler))
  221. {
  222. httpClient.BaseAddress = new Uri(reportApiBaseAddress);
  223. httpClient.DefaultRequestHeaders.Accept.Add(
  224. new MediaTypeWithQualityHeaderValue("application/json"));//设置accept标头,告诉JSON是可接受的响应类型
  225. var sendData = JsonConvert.SerializeObject(printReportData);
  226. using (HttpContent httpContent = new StringContent(sendData))
  227. {
  228. httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
  229. HttpResponseMessage response = null;
  230. response = await httpClient.PostAsync(reportApiUrl, httpContent);
  231. string result;
  232. if (!response.IsSuccessStatusCode)
  233. {
  234. result = response.Content.ReadAsStringAsync().Result;
  235. throw new Exception("http通信错误:" + response.StatusCode + ",结果:" + result);
  236. }
  237. result = await response.Content.ReadAsStringAsync();
  238. var resultDto = JsonConvert.DeserializeObject<WebApiClientOutDto>(result);
  239. if (resultDto != null)
  240. {
  241. if (resultDto.code != 1)
  242. {
  243. throw new Exception($"调用WebApi失败,返回-1,消息:" + result);
  244. }
  245. reportBase64 = resultDto.data;
  246. }
  247. }
  248. }
  249. }
  250. Thread.Sleep(1000);
  251. #endregion
  252. if (!string.IsNullOrWhiteSpace(reportBase64))
  253. {
  254. await UploadPeisReportAsync(new UploadPeisReportIuputDto
  255. {
  256. PatientRegisterId = input.PatientRegisterId,
  257. ReportBase64 = reportBase64
  258. });
  259. }
  260. }
  261. #region MyRegion
  262. /// <summary>
  263. /// 上传基础资料
  264. /// </summary>
  265. /// <returns></returns>
  266. [HttpPost("api/app/TransToWebPeis/TransBaseData")]
  267. public async Task TransBaseDataAsync()
  268. {
  269. var thirdInterfaces = await _thirdInterfaceRepository.GetListAsync(o => o.ThirdInterfaceType ==
  270. ThirdInterfaceTypeFlag.TranToWebPeis);
  271. foreach (var thirdInterface in thirdInterfaces)
  272. {
  273. var connectString = GetConnectionStrings(thirdInterface.ParmValue);
  274. SqlSugarClient WebDb = new SqlSugarClient(new ConnectionConfig()
  275. {
  276. ConnectionString = connectString,
  277. DbType = SqlSugar.DbType.PostgreSQL,
  278. IsAutoCloseConnection = true
  279. });
  280. try
  281. {
  282. await WebDb.Ado.BeginTranAsync();
  283. #region 清理基础数据
  284. //删除
  285. await WebDb.Ado.ExecuteCommandAsync("delete from medical_package_detail;");
  286. await WebDb.Ado.ExecuteCommandAsync("delete from medical_package;");
  287. await WebDb.Ado.ExecuteCommandAsync("delete from customer_org_group_detail;");
  288. await WebDb.Ado.ExecuteCommandAsync("delete from customer_org_group;");
  289. await WebDb.Ado.ExecuteCommandAsync("delete from customer_org_register;");
  290. await WebDb.Ado.ExecuteCommandAsync("delete from customer_org;");
  291. await WebDb.Ado.ExecuteCommandAsync("delete from diagnosis;");
  292. await WebDb.Ado.ExecuteCommandAsync("delete from diagnosis_level;");
  293. await WebDb.Ado.ExecuteCommandAsync("delete from asbitem_detail;");
  294. await WebDb.Ado.ExecuteCommandAsync("delete from asbitem;");
  295. await WebDb.Ado.ExecuteCommandAsync("delete from item;");
  296. await WebDb.Ado.ExecuteCommandAsync("delete from item_type;");
  297. #endregion
  298. await TransItemType(WebDb);
  299. await TransItem(WebDb);
  300. await TransAsbitem(WebDb);
  301. await TransMedicalPackage(WebDb);
  302. await TransDiagnosis(WebDb);
  303. await TransCustomerOrgAsync(WebDb);
  304. await TransCustomerOrgRegisterAsync(WebDb);
  305. await TransCustomerOrgGroupAsync(WebDb);
  306. await TransCustomerOrgGroupDetailAsync(WebDb);
  307. await WebDb.Ado.CommitTranAsync();
  308. }
  309. catch (Exception ex)
  310. {
  311. await WebDb.Ado.RollbackTranAsync();
  312. _logger.LogError($"上传基础数据异常:{ex.Message}");
  313. }
  314. }
  315. //var connectString = "Host=10.1.12.140;Port=5432;Database=WebPeis;User ID=postgres;Password=st123;";
  316. //SqlSugarClient WebDb = new SqlSugarClient(new ConnectionConfig()
  317. //{
  318. // ConnectionString = connectString,
  319. // DbType = SqlSugar.DbType.PostgreSQL,
  320. // IsAutoCloseConnection = true
  321. //});
  322. }
  323. /// <summary>
  324. /// 获取数据库连接地址
  325. /// </summary>
  326. /// <param name="parmValue"></param>
  327. /// <returns></returns>
  328. /// <exception cref="UserFriendlyException"></exception>
  329. private string GetConnectionStrings(string parmValue)
  330. {
  331. var configurationBuilder = new ConfigurationBuilder()
  332. .AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue)));
  333. var interfaceConfig = configurationBuilder.Build();
  334. var interfaceConnctionStr = interfaceConfig.GetSection("Interface").GetSection("ConnectionStrings").Value;
  335. if (!interfaceConnctionStr.ToUpper().Contains("WEBPEIS"))
  336. throw new UserFriendlyException("请检查配置的数据库地址");
  337. return interfaceConnctionStr;
  338. }
  339. private async Task<TOut> CallAppServiceAsync<TInput, TOut>(string appBaseAddress, string url, TInput data)
  340. {
  341. string baseAddress = appBaseAddress;
  342. using (var httpClientHandler = new HttpClientHandler())
  343. {
  344. using (var httpClient = new HttpClient(httpClientHandler))
  345. {
  346. httpClient.BaseAddress = new Uri(baseAddress);
  347. httpClient.DefaultRequestHeaders.Accept.Add(
  348. new MediaTypeWithQualityHeaderValue("application/json"));//设置accept标头,告诉JSON是可接受的响应类型
  349. //httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _accesToken);
  350. string sendData = "";
  351. if (data != null)
  352. {
  353. IsoDateTimeConverter timeFormat = new IsoDateTimeConverter();
  354. timeFormat.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
  355. sendData = JsonConvert.SerializeObject(data, Newtonsoft.Json.Formatting.Indented, timeFormat);
  356. }
  357. using (HttpContent httpContent = new StringContent(sendData))
  358. {
  359. httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
  360. HttpResponseMessage response = await httpClient.PostAsync(url, httpContent);
  361. string result;
  362. if (!response.IsSuccessStatusCode)
  363. {
  364. result = response.Content.ReadAsStringAsync().Result;
  365. throw new Exception("http通信错误:" + response.StatusCode + ",结果:" + result);
  366. }
  367. result = await response.Content.ReadAsStringAsync();
  368. var resultDto = JsonConvert.DeserializeObject<WebApiOutDto<TOut>>(result);
  369. if (resultDto.Code == -1)
  370. {
  371. throw new Exception($"调用服务失败{resultDto.Message}");
  372. }
  373. return resultDto.Data;
  374. }
  375. }
  376. }
  377. }
  378. #endregion
  379. #region 基础数据
  380. /// <summary>
  381. /// 项目类别
  382. /// </summary>
  383. /// <param name="WebDb"></param>
  384. /// <returns></returns>
  385. private async Task TransItemType(SqlSugarClient WebDb)
  386. {
  387. var itemTypes = await _itemTypeRepository.GetListAsync();
  388. if (itemTypes.Count > 0)
  389. {
  390. foreach (var itemType in itemTypes)
  391. {
  392. 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) " +
  393. "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);",
  394. new List<SugarParameter>() {
  395. new SugarParameter("@item_type_id",itemType.Id),
  396. new SugarParameter("@item_type_name",itemType.DisplayName),
  397. new SugarParameter("@simple_code",itemType.SimpleCode),
  398. new SugarParameter("@parent_id",itemType.ParentId),
  399. new SugarParameter("@path_code",itemType.PathCode),
  400. new SugarParameter("@check_type_flag",itemType.CheckTypeFlag),
  401. new SugarParameter("@display_order",itemType.DisplayOrder),
  402. new SugarParameter("@is_wrap",itemType.IsWrap),
  403. new SugarParameter("@concurrency_stamp",itemType.ConcurrencyStamp),
  404. new SugarParameter("@creation_time",itemType.CreationTime),
  405. new SugarParameter("@creator_id",itemType.CreatorId),
  406. new SugarParameter("@last_modification_time",itemType.LastModificationTime),
  407. new SugarParameter("@last_modifier_id",itemType.LastModifierId)
  408. });
  409. }
  410. _logger.LogInformation($"项目类别数据处理完毕,数量{itemTypes.Count}");
  411. }
  412. }
  413. /// <summary>
  414. /// 项目数据
  415. /// </summary>
  416. /// <param name="WebDb"></param>
  417. /// <returns></returns>
  418. private async Task TransItem(SqlSugarClient WebDb)
  419. {
  420. var items = await _itemRepository.GetListAsync();
  421. if (items.Count > 0)
  422. {
  423. foreach (var item in items)
  424. {
  425. 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, " +
  426. "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 " +
  427. "(@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," +
  428. "@line_mode_flag,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id,@device_type_id::uuid);",
  429. new List<SugarParameter>() {
  430. new SugarParameter("@item_id",item.Id),
  431. new SugarParameter("@item_name",item.DisplayName),
  432. new SugarParameter("@english_short_name",item.EnglishShortName),
  433. new SugarParameter("@item_type_id",item.ItemTypeId),
  434. new SugarParameter("@price",item.Price),
  435. new SugarParameter("@unit_id",item.UnitId),
  436. new SugarParameter("@default_result",item.DefaultResult),
  437. new SugarParameter("@reference_range_type_flag",item.ReferenceRangeTypeFlag),
  438. new SugarParameter("@is_calculation_item",item.IsCalculationItem),
  439. new SugarParameter("@is_active",item.IsActive),
  440. new SugarParameter("@simple_code",item.SimpleCode),
  441. new SugarParameter("@display_order",item.DisplayOrder),
  442. new SugarParameter("@line_mode_flag",item.LineModeFlag),
  443. new SugarParameter("@concurrency_stamp",item.ConcurrencyStamp),
  444. new SugarParameter("@device_type_id",item.DeviceTypeId),
  445. new SugarParameter("@creation_time",item.CreationTime),
  446. new SugarParameter("@creator_id",item.CreatorId),
  447. new SugarParameter("@last_modification_time",item.LastModificationTime),
  448. new SugarParameter("@last_modifier_id",item.LastModifierId)
  449. });
  450. }
  451. _logger.LogInformation($"项目数据处理完毕,数量{items.Count}");
  452. }
  453. }
  454. /// <summary>
  455. /// 组合项目、明细
  456. /// </summary>
  457. /// <param name="WebDb"></param>
  458. /// <returns></returns>
  459. private async Task TransAsbitem(SqlSugarClient WebDb)
  460. {
  461. var asbitemWithDetails = (await _asbitemRepository.GetQueryableAsync()).Include(x => x.AsbitemDetails).ToList();
  462. if (asbitemWithDetails.Count > 0)
  463. {
  464. foreach (var asbitem in asbitemWithDetails)
  465. {
  466. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.asbitem(asbitem_id, asbitem_name, short_name, for_sex_id, item_type_id," +
  467. "price, device_type_id, is_before_eat, clinical_meaning, default_result," +
  468. "is_picture_rotate, is_check, is_active, simple_code, display_order, concurrency_stamp," +
  469. "creation_time, creator_id, last_modification_time, last_modifier_id, is_web_appoint,warn,disease_screening_type_id,for_pregnant_flag,marital_status_id) values " +
  470. "(@asbitem_id,@asbitem_name,@short_name,@for_sex_id,@item_type_id,@price,@device_type_id::uuid,@is_before_eat,@clinical_meaning," +
  471. "@default_result,@is_picture_rotate,@is_check,@is_active,@simple_code,@display_order,@concurrency_stamp,@creation_time," +
  472. "@creator_id,@last_modification_time,@last_modifier_id,@is_web_appoint,@warn,@disease_screening_type_id::uuid,@for_pregnant_flag,@marital_status_id)",
  473. new List<SugarParameter>() {
  474. new SugarParameter("asbitem_id",asbitem.Id),
  475. new SugarParameter("asbitem_name",asbitem.DisplayName),
  476. new SugarParameter("short_name",asbitem.ShortName),
  477. new SugarParameter("for_sex_id",asbitem.ForSexId),
  478. new SugarParameter("item_type_id",asbitem.ItemTypeId),
  479. new SugarParameter("price",asbitem.Price),
  480. new SugarParameter("device_type_id",asbitem.DeviceTypeId),
  481. new SugarParameter("is_before_eat",asbitem.IsBeforeEat),
  482. new SugarParameter("clinical_meaning",asbitem.ClinicalMeaning),
  483. new SugarParameter("default_result",asbitem.DefaultResult),
  484. new SugarParameter("is_picture_rotate",asbitem.IsPictureRotate),
  485. new SugarParameter("is_check",asbitem.IsCheck),
  486. new SugarParameter("is_active",asbitem.IsActive),
  487. new SugarParameter("simple_code",asbitem.SimpleCode),
  488. new SugarParameter("display_order",asbitem.DisplayOrder),
  489. new SugarParameter("concurrency_stamp",asbitem.ConcurrencyStamp),
  490. new SugarParameter("creation_time",asbitem.CreationTime),
  491. new SugarParameter("creator_id",asbitem.CreatorId),
  492. new SugarParameter("last_modification_time",asbitem.LastModificationTime),
  493. new SugarParameter("last_modifier_id",asbitem.LastModifierId),
  494. new SugarParameter("is_web_appoint",asbitem.IsWebAppoint),
  495. new SugarParameter("warn",asbitem.Warn),
  496. new SugarParameter("disease_screening_type_id",asbitem.DiseaseScreeningTypeId),
  497. new SugarParameter("for_pregnant_flag",asbitem.ForPregnantFlag),
  498. new SugarParameter("marital_status_id",asbitem.MaritalStatusId)
  499. });
  500. //插入明细
  501. foreach (var asbitemDetail in asbitem.AsbitemDetails)
  502. {
  503. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.asbitem_detail(asbitem_id, item_id, concurrency_stamp) values " +
  504. "(@asbitem_id,@item_id,@concurrency_stamp)",
  505. new List<SugarParameter>() {
  506. new SugarParameter("asbitem_id",asbitemDetail.AsbitemId),
  507. new SugarParameter("item_id",asbitemDetail.ItemId),
  508. new SugarParameter("concurrency_stamp",asbitemDetail.ConcurrencyStamp)
  509. });
  510. }
  511. }
  512. _logger.LogInformation($"组合项目、明细项目数据处理完毕,数量{asbitemWithDetails.Count}");
  513. }
  514. }
  515. /// <summary>
  516. /// 套餐
  517. /// </summary>
  518. /// <param name="WebDb"></param>
  519. /// <returns></returns>
  520. private async Task TransMedicalPackage(SqlSugarClient WebDb)
  521. {
  522. var medicalPackageWithDetails = (await _medicalPackageRepository.GetQueryableAsync()).Include(x => x.MedicalPackageDetails).ToList();
  523. if (medicalPackageWithDetails.Count > 0)
  524. {
  525. foreach (var medicalPackage in medicalPackageWithDetails)
  526. {
  527. 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," +
  528. "concurrency_stamp,creation_time, creator_id, last_modification_time, last_modifier_id, is_web_appoint, marital_status_id,is_basic_recommend,age_lower_limit,age_upper_limit) values " +
  529. "(@medical_package_id,@medical_package_name,@price,@for_sex_id,@is_active,@remark,@display_order,@simple_code, " +
  530. "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id,@is_web_appoint,@marital_status_id,@is_basic_recommend,@age_lower_limit,@age_upper_limit)",
  531. new List<SugarParameter>() {
  532. new SugarParameter("medical_package_id",medicalPackage.Id),
  533. new SugarParameter("medical_package_name",medicalPackage.DisplayName),
  534. new SugarParameter("price",medicalPackage.Price),
  535. new SugarParameter("for_sex_id",medicalPackage.ForSexId),
  536. new SugarParameter("is_active",medicalPackage.IsActive),
  537. new SugarParameter("remark",medicalPackage.Remark),
  538. new SugarParameter("display_order",medicalPackage.DisplayOrder),
  539. new SugarParameter("simple_code",medicalPackage.SimpleCode),
  540. new SugarParameter("concurrency_stamp",medicalPackage.ConcurrencyStamp),
  541. new SugarParameter("creation_time",medicalPackage.CreationTime),
  542. new SugarParameter("creator_id",medicalPackage.CreatorId),
  543. new SugarParameter("last_modification_time",medicalPackage.LastModificationTime),
  544. new SugarParameter("last_modifier_id",medicalPackage.LastModifierId),
  545. new SugarParameter("is_web_appoint",medicalPackage.IsWebAppoint),
  546. new SugarParameter("marital_status_id",medicalPackage.MaritalStatusId),
  547. new SugarParameter("is_basic_recommend",medicalPackage.IsBasicRecommend),
  548. new SugarParameter("age_lower_limit",medicalPackage.AgeLowerLimit),
  549. new SugarParameter("age_upper_limit",medicalPackage.AgeUpperLimit)
  550. });
  551. //插入明细
  552. foreach (var medicalPackageDetail in medicalPackage.MedicalPackageDetails)
  553. {
  554. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.medical_package_detail(medical_package_id, asbitem_id,price,amount,concurrency_stamp) values " +
  555. "(@medical_package_id,@asbitem_id,@price,@amount,@concurrency_stamp)",
  556. new List<SugarParameter>() {
  557. new SugarParameter("medical_package_id",medicalPackageDetail.MedicalPackageId),
  558. new SugarParameter("asbitem_id",medicalPackageDetail.AsbitemId),
  559. new SugarParameter("price",medicalPackageDetail.Price),
  560. new SugarParameter("amount",medicalPackageDetail.Amount),
  561. new SugarParameter("concurrency_stamp",medicalPackageDetail.ConcurrencyStamp)
  562. });
  563. }
  564. }
  565. _logger.LogInformation($"套餐数据、套餐明细处理完毕,数量{medicalPackageWithDetails.Count}");
  566. }
  567. }
  568. /// <summary>
  569. /// 诊断
  570. /// </summary>
  571. /// <param name="WebDb"></param>
  572. /// <returns></returns>
  573. private async Task TransDiagnosis(SqlSugarClient WebDb)
  574. {
  575. //诊断级别
  576. var diagnosisLevels = await _diagnosisLevelRepository.GetListAsync();
  577. if (diagnosisLevels.Count > 0)
  578. {
  579. foreach (var diagnosisLevel in diagnosisLevels)
  580. {
  581. 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) " +
  582. "VALUES (@diagnosis_level_id,@display_name,@display_order,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  583. new List<SugarParameter>() {
  584. new SugarParameter("diagnosis_level_id",diagnosisLevel.Id),
  585. new SugarParameter("display_name",diagnosisLevel.DisplayName),
  586. new SugarParameter("display_order",diagnosisLevel.DisplayOrder),
  587. new SugarParameter("concurrency_stamp",diagnosisLevel.ConcurrencyStamp),
  588. new SugarParameter("creation_time",diagnosisLevel.CreationTime),
  589. new SugarParameter("creator_id",diagnosisLevel.CreatorId),
  590. new SugarParameter("last_modification_time",diagnosisLevel.LastModificationTime),
  591. new SugarParameter("last_modifier_id",diagnosisLevel.LastModifierId)
  592. });
  593. }
  594. _logger.LogInformation($"诊断级别数据处理完毕,数量{diagnosisLevels.Count}");
  595. }
  596. //诊断
  597. var diagnosiss = await _diagnosisRepository.GetListAsync();
  598. if (diagnosiss.Count > 0)
  599. {
  600. foreach (var diagnosis in diagnosiss)
  601. {
  602. 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, " +
  603. "simple_code,display_order,concurrency_stamp, creation_time, creator_id,last_modification_time,last_modifier_id) " +
  604. "VALUES (@diagnosis_id,@diagnosis_name,@item_type_id,@suggestion_name,@is_ill,@for_sex_id,@diagnosis_level_id," +
  605. "@simple_code,@display_order,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  606. new List<SugarParameter>() {
  607. new SugarParameter("diagnosis_id",diagnosis.Id),
  608. new SugarParameter("diagnosis_name",diagnosis.DisplayName),
  609. new SugarParameter("item_type_id",diagnosis.ItemTypeId),
  610. new SugarParameter("suggestion_name",diagnosis.SuggestionName),
  611. new SugarParameter("is_ill",diagnosis.IsIll),
  612. new SugarParameter("for_sex_id",diagnosis.ForSexId),
  613. new SugarParameter("diagnosis_level_id",diagnosis.DiagnosisLevelId),
  614. new SugarParameter("simple_code",diagnosis.SimpleCode),
  615. new SugarParameter("display_order",diagnosis.DisplayOrder),
  616. new SugarParameter("concurrency_stamp",diagnosis.ConcurrencyStamp),
  617. new SugarParameter("creation_time",diagnosis.CreationTime),
  618. new SugarParameter("creator_id",diagnosis.CreatorId),
  619. new SugarParameter("last_modification_time",diagnosis.LastModificationTime),
  620. new SugarParameter("last_modifier_id",diagnosis.LastModifierId)
  621. });
  622. }
  623. _logger.LogInformation($"诊断数据处理完毕,数量{diagnosiss.Count}");
  624. }
  625. }
  626. #endregion
  627. #region 单位相关
  628. /// <summary>
  629. /// 单位数据
  630. /// </summary>
  631. /// <param name="WebDb"></param>
  632. /// <returns></returns>
  633. private async Task TransCustomerOrgAsync(SqlSugarClient WebDb)
  634. {
  635. var customerOrgs = await _customerOrgRepository.GetListAsync();
  636. if (customerOrgs.Count > 0)
  637. {
  638. foreach (var customerOrg in customerOrgs)
  639. {
  640. 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," +
  641. "concurrency_stamp, medical_center_id, creation_time, creator_id, last_modification_time, last_modifier_id, country_org_code) " +
  642. "VALUES (@customer_org_id,@customer_org_name,@short_name,@parent_id::uuid,@path_code,@simple_code,@remark,@is_active,@display_order," +
  643. "@concurrency_stamp,@medical_center_id,@creation_time,@creator_id,@last_modification_time,@last_modifier_id,@country_org_code);",
  644. new List<SugarParameter>() {
  645. new SugarParameter("customer_org_id",customerOrg.Id),
  646. new SugarParameter("customer_org_name",customerOrg.DisplayName),
  647. new SugarParameter("short_name",customerOrg.ShortName),
  648. new SugarParameter("parent_id",customerOrg.ParentId),
  649. new SugarParameter("path_code",customerOrg.PathCode),
  650. new SugarParameter("simple_code",customerOrg.SimpleCode),
  651. new SugarParameter("remark",customerOrg.Remark),
  652. new SugarParameter("is_active",customerOrg.IsActive),
  653. new SugarParameter("display_order",customerOrg.DisplayOrder),
  654. new SugarParameter("concurrency_stamp",customerOrg.ConcurrencyStamp),
  655. new SugarParameter("medical_center_id",customerOrg.MedicalCenterId),
  656. new SugarParameter("creation_time",customerOrg.CreationTime),
  657. new SugarParameter("creator_id",customerOrg.CreatorId),
  658. new SugarParameter("last_modification_time",customerOrg.LastModificationTime),
  659. new SugarParameter("last_modifier_id",customerOrg.LastModifierId),
  660. new SugarParameter("country_org_code",customerOrg.CountryOrgCode)
  661. });
  662. }
  663. _logger.LogInformation($"单位数据处理完毕,数量{customerOrgs.Count}");
  664. }
  665. }
  666. /// <summary>
  667. /// 单位体检次数
  668. /// </summary>
  669. /// <param name="WebDb"></param>
  670. /// <returns></returns>
  671. private async Task TransCustomerOrgRegisterAsync(SqlSugarClient WebDb)
  672. {
  673. var customerOrgRegisters = await _customerOrgRegisterRepository.GetListAsync();
  674. if (customerOrgRegisters.Count > 0)
  675. {
  676. foreach (var customerOrgRegister in customerOrgRegisters)
  677. {
  678. 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," +
  679. "end_time, is_complete, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) " +
  680. "VALUES (@customer_org_register_id,@customer_org_id,@medical_times,@register_no,@register_name,@begin_time," +
  681. "CAST(@end_time as timestamp),@is_complete,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  682. new List<SugarParameter>() {
  683. new SugarParameter("customer_org_register_id",customerOrgRegister.Id),
  684. new SugarParameter("customer_org_id",customerOrgRegister.CustomerOrgId),
  685. new SugarParameter("medical_times",customerOrgRegister.MedicalTimes),
  686. new SugarParameter("register_no",customerOrgRegister.RegisterNo),
  687. new SugarParameter("register_name",customerOrgRegister.RegisterName),
  688. new SugarParameter("begin_time",customerOrgRegister.BeginTime),
  689. new SugarParameter("end_time",customerOrgRegister.EndTime),
  690. new SugarParameter("is_complete",customerOrgRegister.IsComplete),
  691. new SugarParameter("concurrency_stamp",customerOrgRegister.ConcurrencyStamp),
  692. new SugarParameter("creation_time",customerOrgRegister.CreationTime),
  693. new SugarParameter("creator_id",customerOrgRegister.CreatorId),
  694. new SugarParameter("last_modification_time",customerOrgRegister.LastModificationTime),
  695. new SugarParameter("last_modifier_id",customerOrgRegister.LastModifierId)
  696. });
  697. }
  698. _logger.LogInformation($"单位体检次数数据处理完毕,数量{customerOrgRegisters.Count}");
  699. }
  700. }
  701. /// <summary>
  702. /// 单位分组
  703. /// </summary>
  704. /// <param name="WebDb"></param>
  705. /// <returns></returns>
  706. private async Task TransCustomerOrgGroupAsync(SqlSugarClient WebDb)
  707. {
  708. var customerOrgGroups = await _customerOrgGroupRepository.GetListAsync();
  709. if (customerOrgGroups.Count > 0)
  710. {
  711. foreach (var customerOrgGroup in customerOrgGroups)
  712. {
  713. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.customer_org_group(customer_org_group_id, customer_org_group_name, price, for_sex_id, marital_status_id, age_lower_limit, age_upper_limit," +
  714. "job_post, job_title, remark, display_order, customer_org_register_id, concurrency_stamp, creation_time, creator_id,last_modification_time, last_modifier_id,can_add_money) " +
  715. "VALUES (@customer_org_group_id,@customer_org_group_name,@price,@for_sex_id,@marital_status_id,@age_lower_limit,@age_upper_limit," +
  716. "@job_post,@job_title,@remark,@display_order,@customer_org_register_id,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id,@can_add_money);",
  717. new List<SugarParameter>() {
  718. new SugarParameter("customer_org_group_id",customerOrgGroup.Id),
  719. new SugarParameter("customer_org_group_name",customerOrgGroup.DisplayName),
  720. new SugarParameter("price",customerOrgGroup.Price),
  721. new SugarParameter("for_sex_id",customerOrgGroup.ForSexId),
  722. new SugarParameter("marital_status_id",customerOrgGroup.MaritalStatusId),
  723. new SugarParameter("age_lower_limit",customerOrgGroup.AgeLowerLimit),
  724. new SugarParameter("age_upper_limit",customerOrgGroup.AgeUpperLimit),
  725. new SugarParameter("job_post",customerOrgGroup.JobPost),
  726. new SugarParameter("job_title",customerOrgGroup.JobTitle),
  727. new SugarParameter("remark",customerOrgGroup.Remark),
  728. new SugarParameter("display_order",customerOrgGroup.DisplayOrder),
  729. new SugarParameter("customer_org_register_id",customerOrgGroup.CustomerOrgRegisterId),
  730. new SugarParameter("concurrency_stamp",customerOrgGroup.ConcurrencyStamp),
  731. new SugarParameter("creation_time",customerOrgGroup.CreationTime),
  732. new SugarParameter("creator_id",customerOrgGroup.CreatorId),
  733. new SugarParameter("last_modification_time",customerOrgGroup.LastModificationTime),
  734. new SugarParameter("last_modifier_id",customerOrgGroup.LastModifierId),
  735. new SugarParameter("can_add_money",customerOrgGroup.CanAddMoney),
  736. });
  737. }
  738. _logger.LogInformation($"单位分组数据处理完毕,数量{customerOrgGroups.Count}");
  739. }
  740. }
  741. /// <summary>
  742. /// 单位分组明细
  743. /// </summary>
  744. /// <param name="WebDb"></param>
  745. /// <returns></returns>
  746. private async Task TransCustomerOrgGroupDetailAsync(SqlSugarClient WebDb)
  747. {
  748. var customerOrgGroupDetails = await _customerOrgGroupDetailRepository.GetListAsync();
  749. if (customerOrgGroupDetails.Count > 0)
  750. {
  751. foreach (var customerOrgGroupDetail in customerOrgGroupDetails)
  752. {
  753. 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) " +
  754. "VALUES (@customer_org_group_id,@asbitem_id,@price,@amount,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  755. new List<SugarParameter>() {
  756. new SugarParameter("customer_org_group_id",customerOrgGroupDetail.CustomerOrgGroupId),
  757. new SugarParameter("asbitem_id",customerOrgGroupDetail.AsbitemId),
  758. new SugarParameter("price",customerOrgGroupDetail.Price),
  759. new SugarParameter("amount",customerOrgGroupDetail.Amount),
  760. new SugarParameter("concurrency_stamp",customerOrgGroupDetail.ConcurrencyStamp),
  761. new SugarParameter("creation_time",customerOrgGroupDetail.CreationTime),
  762. new SugarParameter("creator_id",customerOrgGroupDetail.CreatorId),
  763. new SugarParameter("last_modification_time",customerOrgGroupDetail.LastModificationTime),
  764. new SugarParameter("last_modifier_id",customerOrgGroupDetail.LastModifierId)
  765. });
  766. }
  767. _logger.LogInformation($"单位分组明细数据处理完毕,数量{customerOrgGroupDetails.Count}");
  768. }
  769. }
  770. #endregion
  771. #region 人员导入
  772. /// <summary>
  773. /// 人员导入
  774. /// </summary>
  775. /// <param name="WebDb"></param>
  776. /// <param name="PatientRegisterId"></param>
  777. /// <returns></returns>
  778. private async Task TransPatientRegisterWithDetailAsync(SqlSugarClient WebDb, Guid PatientRegisterId)
  779. {
  780. try
  781. {
  782. await WebDb.Ado.BeginTranAsync();
  783. //人员登记信息
  784. var patientRegisterEnt = (await _patientRegisterRepository.GetQueryableAsync())
  785. .Include(x => x.Patient)
  786. .Include(x => x.SumDiagnoses)
  787. .Include(x => x.SumSuggestionHeaders).ThenInclude(x => x.SumSuggestionContents)
  788. .Include(x => x.SumSummaryHeaders).ThenInclude(x => x.SumSummaryContents)
  789. .Where(m => m.Id == PatientRegisterId).FirstOrDefault();
  790. if (patientRegisterEnt != null)
  791. {
  792. //if (patientRegisterEnt.CompleteFlag != PatientRegisterCompleteFlag.SumCheck)
  793. // throw new UserFriendlyException("人员未总检,不能同步");
  794. short newMedicalTimes = patientRegisterEnt.MedicalTimes;
  795. var IsPatient = (await WebDb.Ado.GetDataTableAsync($"select patient_id from patient where patient_id='{patientRegisterEnt.PatientId}'")).Rows.Count;
  796. if (IsPatient == 0)
  797. {
  798. #region 插入档案
  799. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.patient(patient_id, patient_no, medical_center_id, patient_name, sex_id, marital_status_id," +
  800. " birth_date, nation_id, birth_place_id, id_no, postal_code, email, telephone, mobile_telephone, address, simple_code, concurrency_stamp, creation_time," +
  801. " creator_id, last_modification_time, last_modifier_id) VALUES (@patient_id,@patient_no,@medical_center_id,@patient_name,@sex_id,@marital_status_id," +
  802. "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," +
  803. "@creator_id,@last_modification_time,@last_modifier_id);",
  804. new List<SugarParameter>() {
  805. new SugarParameter("patient_id",patientRegisterEnt.Patient.Id),
  806. new SugarParameter("patient_no",patientRegisterEnt.Patient.PatientNo),
  807. new SugarParameter("medical_center_id",patientRegisterEnt.Patient.MedicalCenterId),
  808. new SugarParameter("patient_name",patientRegisterEnt.Patient.DisplayName),
  809. new SugarParameter("sex_id",patientRegisterEnt.Patient.SexId),
  810. new SugarParameter("marital_status_id",patientRegisterEnt.Patient.MaritalStatusId),
  811. new SugarParameter("birth_date",patientRegisterEnt.Patient.BirthDate),
  812. new SugarParameter("nation_id",patientRegisterEnt.Patient.NationId),
  813. new SugarParameter("birth_place_id",patientRegisterEnt.Patient.BirthPlaceId),
  814. new SugarParameter("id_no",patientRegisterEnt.Patient.IdNo),
  815. new SugarParameter("postal_code",patientRegisterEnt.Patient.PostalCode),
  816. new SugarParameter("email",patientRegisterEnt.Patient.Email),
  817. new SugarParameter("telephone",patientRegisterEnt.Patient.Telephone),
  818. new SugarParameter("mobile_telephone",patientRegisterEnt.Patient.MobileTelephone),
  819. new SugarParameter("address",patientRegisterEnt.Patient.Address),
  820. new SugarParameter("simple_code",patientRegisterEnt.Patient.SimpleCode),
  821. new SugarParameter("concurrency_stamp",patientRegisterEnt.Patient.ConcurrencyStamp),
  822. new SugarParameter("creation_time",patientRegisterEnt.Patient.CreationTime),
  823. new SugarParameter("creator_id",patientRegisterEnt.Patient.CreatorId),
  824. new SugarParameter("last_modification_time",patientRegisterEnt.Patient.LastModificationTime),
  825. new SugarParameter("last_modifier_id",patientRegisterEnt.Patient.LastModifierId)
  826. });
  827. #endregion
  828. }
  829. else
  830. {
  831. newMedicalTimes = (short)((short)(await WebDb.Ado.GetScalarAsync($"select max(medical_times) from patient_register where patient_id='{patientRegisterEnt.PatientId}'")) + 1);
  832. }
  833. #region 插入人员登记信息
  834. string third_register_id = "";
  835. var patientRegisterExterEnt = await _patientRegisterExterRepository.FirstOrDefaultAsync(f => f.PatientRegisterId == PatientRegisterId);
  836. if (patientRegisterExterEnt != null && !string.IsNullOrWhiteSpace(patientRegisterExterEnt.Planuserid))
  837. third_register_id = patientRegisterExterEnt.Planuserid;
  838. 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," +
  839. "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," +
  840. " 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," +
  841. "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 " +
  842. "(@patient_register_id,@patient_register_no,@patient_id,@medical_times,@customer_org_id,@customer_org_group_id::uuid,@medical_package_id::uuid," +
  843. "@patient_name,@sex_id,CAST(@birth_date as timestamp),@age::smallint,@job_card_no,@medical_card_no,@marital_status_id,@medical_type_id::uuid,@personnel_type_id::uuid,@job_post,@job_title,@photo," +
  844. "@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," +
  845. "@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);",
  846. new List<SugarParameter>() {
  847. new SugarParameter("patient_register_id",patientRegisterEnt.Id),
  848. new SugarParameter("patient_register_no",patientRegisterEnt.PatientRegisterNo),
  849. new SugarParameter("patient_id",patientRegisterEnt.PatientId),
  850. new SugarParameter("medical_times",newMedicalTimes),
  851. new SugarParameter("customer_org_id",patientRegisterEnt.CustomerOrgId),
  852. new SugarParameter("customer_org_group_id",patientRegisterEnt.CustomerOrgGroupId),
  853. new SugarParameter("medical_package_id",patientRegisterEnt.MedicalPackageId),
  854. new SugarParameter("patient_name",patientRegisterEnt.PatientName),
  855. new SugarParameter("sex_id",patientRegisterEnt.SexId),
  856. new SugarParameter("birth_date",patientRegisterEnt.BirthDate),
  857. new SugarParameter("age",patientRegisterEnt.Age),
  858. new SugarParameter("job_card_no",patientRegisterEnt.JobCardNo),
  859. new SugarParameter("medical_card_no",patientRegisterEnt.MedicalCardNo),
  860. new SugarParameter("marital_status_id",patientRegisterEnt.MaritalStatusId),
  861. new SugarParameter("medical_type_id",patientRegisterEnt.MedicalTypeId),
  862. new SugarParameter("personnel_type_id",patientRegisterEnt.PersonnelTypeId),
  863. new SugarParameter("job_post",patientRegisterEnt.JobPost),
  864. new SugarParameter("job_title",patientRegisterEnt.JobTitle),
  865. new SugarParameter("photo",patientRegisterEnt.Photo),
  866. new SugarParameter("sex_hormone_term_id",patientRegisterEnt.SexHormoneTermId),
  867. new SugarParameter("interpose_measure",patientRegisterEnt.InterposeMeasure),
  868. new SugarParameter("medical_conclusion_id",patientRegisterEnt.MedicalConclusionId),
  869. new SugarParameter("complete_flag",patientRegisterEnt.CompleteFlag),
  870. new SugarParameter("is_medical_start",patientRegisterEnt.IsMedicalStart),
  871. new SugarParameter("medical_start_date",patientRegisterEnt.MedicalStartDate),
  872. new SugarParameter("summary_date",patientRegisterEnt.SummaryDate),
  873. new SugarParameter("is_audit",patientRegisterEnt.IsAudit),
  874. new SugarParameter("audit_date",patientRegisterEnt.AuditDate),
  875. new SugarParameter("is_vip",patientRegisterEnt.IsVip),
  876. new SugarParameter("third_info",patientRegisterEnt.ThirdInfo),
  877. new SugarParameter("remark",patientRegisterEnt.Remark),
  878. new SugarParameter("medical_center_id",patientRegisterEnt.MedicalCenterId),
  879. new SugarParameter("customer_org_register_id",patientRegisterEnt.CustomerOrgRegisterId),
  880. new SugarParameter("concurrency_stamp",patientRegisterEnt.ConcurrencyStamp),
  881. // new SugarParameter("creation_time",patientRegisterEnt.CreationTime),
  882. new SugarParameter("creation_time",patientRegisterEnt.CreationTime),
  883. new SugarParameter("creator_id",patientRegisterEnt.CreatorId),
  884. new SugarParameter("last_modification_time",patientRegisterEnt.LastModificationTime),
  885. new SugarParameter("last_modifier_id",patientRegisterEnt.LastModifierId),
  886. new SugarParameter("audit_doctor_id",patientRegisterEnt.AuditDoctorId),
  887. new SugarParameter("summary_doctor_id",patientRegisterEnt.SummaryDoctorId),
  888. new SugarParameter("his_patient_id",patientRegisterEnt.HisPatientId),
  889. new SugarParameter("third_register_id",third_register_id)
  890. });
  891. #endregion
  892. #region 插入registercheck、以及相关
  893. var registerCheckWithDetails = (await _registerCheckRepository.GetQueryableAsync())
  894. .Include(x => x.RegisterCheckAsbitems)
  895. .Include(x => x.RegisterCheckItems)
  896. .Include(x => x.RegisterCheckPictures)
  897. .Include(x => x.RegisterCheckSuggestions)
  898. .Include(x => x.RegisterCheckSummaries)
  899. .Where(m => m.PatientRegisterId == patientRegisterEnt.Id).ToList();
  900. foreach (var registerCheckWithDetail in registerCheckWithDetails)
  901. {
  902. #region register_check
  903. 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," +
  904. "critical_value_process_flag, critical_value_process_doctor, critical_value_process_date, critical_value_create_date, check_doctor_id, check_date, is_audit," +
  905. " auditor_user_id, audit_time, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id, exec_organization_unit_id) VALUES " +
  906. "(@register_check_id,@patient_register_id,@check_request_no,@third_info,@complete_flag,@critical_value,@critical_value_flag,@critical_value_process_content," +
  907. "@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," +
  908. "@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);",
  909. new List<SugarParameter>() {
  910. new SugarParameter("register_check_id",registerCheckWithDetail.Id),
  911. new SugarParameter("patient_register_id",registerCheckWithDetail.PatientRegisterId),
  912. new SugarParameter("check_request_no",registerCheckWithDetail.CheckRequestNo),
  913. new SugarParameter("third_info",registerCheckWithDetail.ThirdInfo),
  914. new SugarParameter("complete_flag",registerCheckWithDetail.CompleteFlag),
  915. new SugarParameter("critical_value",registerCheckWithDetail.CriticalRangeValue),
  916. new SugarParameter("critical_value_flag",registerCheckWithDetail.IsCriticalValue),
  917. new SugarParameter("critical_value_process_content",registerCheckWithDetail.CriticalValueContent),
  918. new SugarParameter("critical_value_process_flag",null),
  919. new SugarParameter("critical_value_process_doctor",""),
  920. new SugarParameter("critical_value_process_date",null),
  921. new SugarParameter("critical_value_create_date",null),
  922. new SugarParameter("check_doctor_id",registerCheckWithDetail.CheckDoctorId),
  923. new SugarParameter("check_date",registerCheckWithDetail.CheckDate),
  924. new SugarParameter("is_audit",registerCheckWithDetail.IsAudit),
  925. new SugarParameter("auditor_user_id",registerCheckWithDetail.AuditorUserId),
  926. new SugarParameter("audit_time",registerCheckWithDetail.AuditTime),
  927. new SugarParameter("concurrency_stamp",registerCheckWithDetail.ConcurrencyStamp),
  928. new SugarParameter("creation_time",registerCheckWithDetail.CreationTime),
  929. new SugarParameter("creator_id",registerCheckWithDetail.CreatorId),
  930. new SugarParameter("last_modification_time",registerCheckWithDetail.LastModificationTime),
  931. new SugarParameter("last_modifier_id",registerCheckWithDetail.LastModifierId),
  932. new SugarParameter("exec_organization_unit_id",registerCheckWithDetail.ExecOrganizationUnitId)
  933. });
  934. #endregion
  935. #region register_check_asbitem
  936. foreach (var registerCheckAsbitem in registerCheckWithDetail.RegisterCheckAsbitems)
  937. {
  938. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.register_check_asbitem" +
  939. "(register_check_asbitem_id, register_check_id, asbitem_id, patient_register_id, standard_price, charge_price," +
  940. "pay_type_flag, is_charge, amount, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " +
  941. "(@register_check_asbitem_id,@register_check_id,@asbitem_id,@patient_register_id,@standard_price,@charge_price," +
  942. "@pay_type_flag,@is_charge,@amount,@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  943. new List<SugarParameter>() {
  944. new SugarParameter("register_check_asbitem_id",registerCheckAsbitem.Id),
  945. new SugarParameter("register_check_id",registerCheckAsbitem.RegisterCheckId),
  946. new SugarParameter("asbitem_id",registerCheckAsbitem.AsbitemId),
  947. new SugarParameter("patient_register_id",registerCheckAsbitem.PatientRegisterId),
  948. new SugarParameter("standard_price",registerCheckAsbitem.StandardPrice),
  949. new SugarParameter("charge_price",registerCheckAsbitem.ChargePrice),
  950. new SugarParameter("pay_type_flag",registerCheckAsbitem.PayTypeFlag),
  951. new SugarParameter("is_charge",registerCheckAsbitem.IsCharge),
  952. new SugarParameter("amount",registerCheckAsbitem.Amount),
  953. new SugarParameter("concurrency_stamp",registerCheckAsbitem.ConcurrencyStamp),
  954. new SugarParameter("creation_time",registerCheckAsbitem.CreationTime),
  955. new SugarParameter("creator_id",registerCheckAsbitem.CreatorId),
  956. new SugarParameter("last_modification_time",registerCheckAsbitem.LastModificationTime),
  957. new SugarParameter("last_modifier_id",registerCheckAsbitem.LastModifierId),
  958. });
  959. }
  960. #endregion
  961. #region register_check_item
  962. foreach (var registerCheckItem in registerCheckWithDetail.RegisterCheckItems)
  963. {
  964. 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, " +
  965. "check_date, concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " +
  966. "(@register_check_id,@item_id,@result,@unit,@reference_range_value,@critical_range_value,@critical_value,@result_status_id,@check_doctor_name," +
  967. "CAST(@check_date as timestamp),@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  968. new List<SugarParameter>() {
  969. new SugarParameter("register_check_id",registerCheckItem.RegisterCheckId),
  970. new SugarParameter("item_id",registerCheckItem.ItemId),
  971. new SugarParameter("result",registerCheckItem.Result),
  972. new SugarParameter("unit",registerCheckItem.Unit),
  973. new SugarParameter("reference_range_value",registerCheckItem.ReferenceRangeValue),
  974. new SugarParameter("critical_range_value",registerCheckItem.CriticalRangeValue),
  975. new SugarParameter("critical_value",registerCheckItem.CriticalValue),
  976. new SugarParameter("result_status_id",registerCheckItem.ResultStatusId),
  977. new SugarParameter("check_doctor_name",registerCheckItem.CheckDoctorName),
  978. new SugarParameter("check_date",registerCheckItem.CheckDate),
  979. new SugarParameter("concurrency_stamp",registerCheckItem.ConcurrencyStamp),
  980. new SugarParameter("creation_time",registerCheckItem.CreationTime),
  981. new SugarParameter("creator_id",registerCheckItem.CreatorId),
  982. new SugarParameter("last_modification_time",registerCheckItem.LastModificationTime),
  983. new SugarParameter("last_modifier_id",registerCheckItem.LastModifierId)
  984. });
  985. }
  986. #endregion
  987. #region register_check_picture
  988. foreach (var registerCheckPicture in registerCheckWithDetail.RegisterCheckPictures)
  989. {
  990. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.register_check_picture" +
  991. "(register_check_picture_id, register_check_id, picture_filename, is_print, display_order," +
  992. "concurrency_stamp, creation_time,creator_id, last_modification_time, last_modifier_id, picture_file_type) VALUES " +
  993. "(@register_check_picture_id,@register_check_id,@picture_filename,@is_print,@display_order," +
  994. "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id,@picture_file_type);",
  995. new List<SugarParameter>() {
  996. new SugarParameter("register_check_picture_id",registerCheckPicture.Id),
  997. new SugarParameter("register_check_id",registerCheckPicture.RegisterCheckId),
  998. new SugarParameter("picture_filename",registerCheckPicture.PictureFilename),
  999. new SugarParameter("is_print",registerCheckPicture.IsPrint),
  1000. new SugarParameter("display_order",registerCheckPicture.DisplayOrder),
  1001. new SugarParameter("concurrency_stamp",registerCheckPicture.ConcurrencyStamp),
  1002. new SugarParameter("creation_time",registerCheckPicture.CreationTime),
  1003. new SugarParameter("creator_id",registerCheckPicture.CreatorId),
  1004. new SugarParameter("last_modification_time",registerCheckPicture.LastModificationTime),
  1005. new SugarParameter("last_modifier_id",registerCheckPicture.LastModifierId),
  1006. new SugarParameter("picture_file_type",registerCheckPicture.PictureFileType)
  1007. });
  1008. }
  1009. #endregion
  1010. #region register_check_suggestion
  1011. foreach (var registerCheckSuggestion in registerCheckWithDetail.RegisterCheckSuggestions)
  1012. {
  1013. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.register_check_suggestion" +
  1014. "(register_check_suggestion_id, register_check_id, suggestion, display_order," +
  1015. "concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " +
  1016. "(@register_check_suggestion_id,@register_check_id,@suggestion,@display_order," +
  1017. "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  1018. new List<SugarParameter>() {
  1019. new SugarParameter("register_check_suggestion_id",registerCheckSuggestion.Id),
  1020. new SugarParameter("register_check_id",registerCheckSuggestion.RegisterCheckId),
  1021. new SugarParameter("suggestion",registerCheckSuggestion.Suggestion),
  1022. new SugarParameter("display_order",registerCheckSuggestion.DisplayOrder),
  1023. new SugarParameter("concurrency_stamp",registerCheckSuggestion.ConcurrencyStamp),
  1024. new SugarParameter("creation_time",registerCheckSuggestion.CreationTime),
  1025. new SugarParameter("creator_id",registerCheckSuggestion.CreatorId),
  1026. new SugarParameter("last_modification_time",registerCheckSuggestion.LastModificationTime),
  1027. new SugarParameter("last_modifier_id",registerCheckSuggestion.LastModifierId)
  1028. });
  1029. }
  1030. #endregion
  1031. #region register_check_summary
  1032. foreach (var registerCheckSummarie in registerCheckWithDetail.RegisterCheckSummaries)
  1033. {
  1034. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.register_check_summary" +
  1035. "(register_check_summary_id, register_check_id, summary, display_order, summary_flag," +
  1036. "concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " +
  1037. "(@register_check_summary_id,@register_check_id,@summary,@display_order,@summary_flag," +
  1038. "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  1039. new List<SugarParameter>() {
  1040. new SugarParameter("register_check_summary_id",registerCheckSummarie.Id),
  1041. new SugarParameter("register_check_id",registerCheckSummarie.RegisterCheckId),
  1042. new SugarParameter("summary",registerCheckSummarie.Summary),
  1043. new SugarParameter("display_order",registerCheckSummarie.DisplayOrder),
  1044. new SugarParameter("summary_flag",registerCheckSummarie.SummaryFlag),
  1045. new SugarParameter("concurrency_stamp",registerCheckSummarie.ConcurrencyStamp),
  1046. new SugarParameter("creation_time",registerCheckSummarie.CreationTime),
  1047. new SugarParameter("creator_id",registerCheckSummarie.CreatorId),
  1048. new SugarParameter("last_modification_time",registerCheckSummarie.LastModificationTime),
  1049. new SugarParameter("last_modifier_id",registerCheckSummarie.LastModifierId),
  1050. });
  1051. }
  1052. #endregion
  1053. }
  1054. #endregion
  1055. #region 插入总检综述
  1056. foreach (var sumSummaryHeader in patientRegisterEnt.SumSummaryHeaders)
  1057. {
  1058. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.sum_summary_header" +
  1059. "(sum_summary_header_id, patient_register_id, summary_title, summary_flag, display_order," +
  1060. "concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " +
  1061. "(@sum_summary_header_id,@patient_register_id,@summary_title,@summary_flag,@display_order," +
  1062. "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  1063. new List<SugarParameter>() {
  1064. new SugarParameter("sum_summary_header_id",sumSummaryHeader.Id),
  1065. new SugarParameter("patient_register_id",sumSummaryHeader.PatientRegisterId),
  1066. new SugarParameter("summary_title",sumSummaryHeader.SummaryTitle),
  1067. new SugarParameter("summary_flag",sumSummaryHeader.SummaryFlag),
  1068. new SugarParameter("display_order",sumSummaryHeader.DisplayOrder),
  1069. new SugarParameter("concurrency_stamp",sumSummaryHeader.ConcurrencyStamp),
  1070. new SugarParameter("creation_time",sumSummaryHeader.CreationTime),
  1071. new SugarParameter("creator_id",sumSummaryHeader.CreatorId),
  1072. new SugarParameter("last_modification_time",sumSummaryHeader.LastModificationTime),
  1073. new SugarParameter("last_modifier_id",sumSummaryHeader.LastModifierId)
  1074. });
  1075. foreach (var sumSummaryContent in sumSummaryHeader.SumSummaryContents)
  1076. {
  1077. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.sum_summary_content" +
  1078. "(sum_summary_content_id, sum_summary_header_id, summary_content, display_order, " +
  1079. "concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " +
  1080. "(@sum_summary_content_id,@sum_summary_header_id,@summary_content,@display_order," +
  1081. "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  1082. new List<SugarParameter>() {
  1083. new SugarParameter("sum_summary_content_id",sumSummaryContent.Id),
  1084. new SugarParameter("sum_summary_header_id",sumSummaryContent.SumSummaryHeaderId),
  1085. new SugarParameter("summary_content",sumSummaryContent.SummaryContent),
  1086. new SugarParameter("display_order",sumSummaryContent.DisplayOrder),
  1087. new SugarParameter("concurrency_stamp",sumSummaryContent.ConcurrencyStamp),
  1088. new SugarParameter("creation_time",sumSummaryContent.CreationTime),
  1089. new SugarParameter("creator_id",sumSummaryContent.CreatorId),
  1090. new SugarParameter("last_modification_time",sumSummaryContent.LastModificationTime),
  1091. new SugarParameter("last_modifier_id",sumSummaryContent.LastModifierId)
  1092. });
  1093. }
  1094. }
  1095. #endregion
  1096. #region 插入总检建议
  1097. foreach (var sumSuggestionHeader in patientRegisterEnt.SumSuggestionHeaders)
  1098. {
  1099. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.sum_suggestion_header" +
  1100. "(sum_suggestion_header_id, patient_register_id, suggestion_title, suggestion_flag, display_order," +
  1101. "concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " +
  1102. "(@sum_suggestion_header_id,@patient_register_id,@suggestion_title,@suggestion_flag,@display_order," +
  1103. "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  1104. new List<SugarParameter>() {
  1105. new SugarParameter("sum_suggestion_header_id",sumSuggestionHeader.Id),
  1106. new SugarParameter("patient_register_id",sumSuggestionHeader.PatientRegisterId),
  1107. new SugarParameter("suggestion_title",sumSuggestionHeader.SuggestionTitle),
  1108. new SugarParameter("suggestion_flag",sumSuggestionHeader.SuggestionFlag),
  1109. new SugarParameter("display_order",sumSuggestionHeader.DisplayOrder),
  1110. new SugarParameter("concurrency_stamp",sumSuggestionHeader.ConcurrencyStamp),
  1111. new SugarParameter("creation_time",sumSuggestionHeader.CreationTime),
  1112. new SugarParameter("creator_id",sumSuggestionHeader.CreatorId),
  1113. new SugarParameter("last_modification_time",sumSuggestionHeader.LastModificationTime),
  1114. new SugarParameter("last_modifier_id",sumSuggestionHeader.LastModifierId)
  1115. });
  1116. foreach (var sumSuggestionContent in sumSuggestionHeader.SumSuggestionContents)
  1117. {
  1118. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.sum_suggestion_content" +
  1119. "(sum_suggestion_content_id, sum_suggestion_header_id, suggestion_type, suggestion_content, display_order, " +
  1120. "concurrency_stamp, creation_time, creator_id, last_modification_time, last_modifier_id) VALUES " +
  1121. "(@sum_suggestion_content_id,@sum_suggestion_header_id,@suggestion_type,@suggestion_content,@display_order, " +
  1122. "@concurrency_stamp,@creation_time,@creator_id,@last_modification_time,@last_modifier_id);",
  1123. new List<SugarParameter>() {
  1124. new SugarParameter("sum_suggestion_content_id",sumSuggestionContent.Id),
  1125. new SugarParameter("sum_suggestion_header_id",sumSuggestionContent.SumSuggestionHeaderId),
  1126. new SugarParameter("suggestion_type",sumSuggestionContent.SuggestionType),
  1127. new SugarParameter("suggestion_content",sumSuggestionContent.SuggestionContent),
  1128. new SugarParameter("display_order",sumSuggestionContent.DisplayOrder),
  1129. new SugarParameter("concurrency_stamp",sumSuggestionContent.ConcurrencyStamp),
  1130. new SugarParameter("creation_time",sumSuggestionContent.CreationTime),
  1131. new SugarParameter("creator_id",sumSuggestionContent.CreatorId),
  1132. new SugarParameter("last_modification_time",sumSuggestionContent.LastModificationTime),
  1133. new SugarParameter("last_modifier_id",sumSuggestionContent.LastModifierId)
  1134. });
  1135. }
  1136. }
  1137. #endregion
  1138. #region 插入总检诊断
  1139. foreach (var sumDiagnoses in patientRegisterEnt.SumDiagnoses)
  1140. {
  1141. await WebDb.Ado.ExecuteCommandAsync("INSERT INTO public.sum_diagnosis" +
  1142. "(patient_register_id, diagnosis_id, sum_suggestion_header_id, display_order, concurrency_stamp) VALUES " +
  1143. "(@patient_register_id,@diagnosis_id,@sum_suggestion_header_id,@display_order,@concurrency_stamp);",
  1144. new List<SugarParameter>() {
  1145. new SugarParameter("patient_register_id",sumDiagnoses.PatientRegisterId),
  1146. new SugarParameter("diagnosis_id",sumDiagnoses.DiagnosisId),
  1147. new SugarParameter("sum_suggestion_header_id",sumDiagnoses.SumSuggestionHeaderId),
  1148. new SugarParameter("display_order",sumDiagnoses.DisplayOrder),
  1149. new SugarParameter("concurrency_stamp",sumDiagnoses.ConcurrencyStamp)
  1150. });
  1151. }
  1152. #endregion
  1153. patientRegisterEnt.IsUploadAppoint = 'Y';
  1154. await _patientRegisterRepository.UpdateAsync(patientRegisterEnt);
  1155. }
  1156. else
  1157. {
  1158. throw new UserFriendlyException("数据不存在");
  1159. }
  1160. await WebDb.Ado.CommitTranAsync();
  1161. }
  1162. catch (Exception ex)
  1163. {
  1164. await WebDb.Ado.RollbackTranAsync();
  1165. throw new UserFriendlyException(ex.ToString());
  1166. }
  1167. }
  1168. #endregion
  1169. #region 撤销、删除
  1170. /// <summary>
  1171. /// 人员导入
  1172. /// </summary>
  1173. /// <param name="WebDb"></param>
  1174. /// <param name="PatientRegisterId"></param>
  1175. /// <returns></returns>
  1176. private async Task DeletePatientRegisterWithDetailAsync(SqlSugarClient WebDb, Guid PatientRegisterId)
  1177. {
  1178. try
  1179. {
  1180. await WebDb.Ado.BeginTranAsync();
  1181. await WebDb.Ado.ExecuteCommandAsync($"delete from sum_diagnosis where patient_register_id='{PatientRegisterId}'");
  1182. 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}')");
  1183. await WebDb.Ado.ExecuteCommandAsync($"delete from sum_summary_header where patient_register_id='{PatientRegisterId}'");
  1184. 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}')");
  1185. await WebDb.Ado.ExecuteCommandAsync($"delete from sum_suggestion_header where patient_register_id='{PatientRegisterId}'");
  1186. 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}')");
  1187. 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}')");
  1188. 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}')");
  1189. 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}')");
  1190. 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}')");
  1191. await WebDb.Ado.ExecuteCommandAsync($"delete from register_check where patient_register_id='{PatientRegisterId}'");
  1192. await WebDb.Ado.ExecuteCommandAsync($"delete from patient where patient_id in (select patient_id from patient_register where patient_register_id='{PatientRegisterId}')");
  1193. await WebDb.Ado.ExecuteCommandAsync($"delete from patient_register where patient_register_id='{PatientRegisterId}'");
  1194. await WebDb.Ado.CommitTranAsync();
  1195. }
  1196. catch (Exception ex)
  1197. {
  1198. await WebDb.Ado.RollbackTranAsync();
  1199. throw new UserFriendlyException(ex.ToString());
  1200. }
  1201. }
  1202. #endregion
  1203. #region 临时导数据
  1204. int sumCount = 0;
  1205. int handCount = 0;
  1206. /// <summary>
  1207. /// 导入体检数据到web 全部导入 2024-06-06
  1208. /// </summary>
  1209. /// <returns></returns>
  1210. [RemoteService(false)]
  1211. public async Task ExportPatientRegisterWithDetailData()
  1212. {
  1213. var connectString = @"Host=10.1.12.138;Port=5432;Database=WebPeis0520;User ID=postgres;Password=st123;";
  1214. SqlSugarClient WebDb = new SqlSugarClient(new ConnectionConfig()
  1215. {
  1216. ConnectionString = connectString,
  1217. DbType = SqlSugar.DbType.PostgreSQL,
  1218. IsAutoCloseConnection = true
  1219. });
  1220. string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register_web' ");
  1221. var patientRegisterIds = (await _patientRegisterRepository.GetQueryableAsync())
  1222. .Where(m => string.Compare(m.Id.ToString(), string.IsNullOrEmpty(nextKeyValue) ? "" : nextKeyValue) > 0).OrderBy(o => o.Id).Select(s => s.Id).Take(1000).ToList();
  1223. if (patientRegisterIds.Any())
  1224. {
  1225. foreach (var patientRegisterId in patientRegisterIds)
  1226. {
  1227. sumCount++;
  1228. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1229. {
  1230. var IsPatient = (await WebDb.Ado.GetDataTableAsync($"select patient_register_id from patient_register where patient_register_id='{patientRegisterId}'")).Rows.Count;
  1231. if (IsPatient == 0)
  1232. {
  1233. await TransPatientRegisterWithDetailAsync(WebDb, patientRegisterId);
  1234. handCount++;
  1235. }
  1236. nextKeyValue = patientRegisterId.ToString();
  1237. }
  1238. await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{patientRegisterId}',addtime=getdate(),handlecount+=1 where tablename='patient_register_web' ");
  1239. }
  1240. }
  1241. _logger.LogInformation($"当前查询数据:{sumCount},新增数据:{handCount}");
  1242. if (patientRegisterIds.Any())
  1243. await ExportPatientRegisterWithDetailData();
  1244. }
  1245. /// <summary>
  1246. /// 反向导入 导入体检数据到web 全部导入 2024-06-07
  1247. /// </summary>
  1248. /// <returns></returns>
  1249. [RemoteService(false)]
  1250. public async Task ExportPatientRegisterWithDetailReverseData()
  1251. {
  1252. //var connectString = @"Host=10.1.12.138;Port=5432;Database=WebPeis0520;User ID=postgres;Password=st123;";
  1253. var connectString = @"Host=62.156.10.86;Port=5432;Database=WebPeis0520;User ID=postgres;Password=st123;";
  1254. SqlSugarClient WebDb = new SqlSugarClient(new ConnectionConfig()
  1255. {
  1256. ConnectionString = connectString,
  1257. DbType = SqlSugar.DbType.PostgreSQL,
  1258. IsAutoCloseConnection = true
  1259. });
  1260. string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register_web_reverse' ");
  1261. var patientRegisterIds = (await _patientRegisterRepository.GetQueryableAsync())
  1262. .Where(m => string.Compare(string.IsNullOrEmpty(nextKeyValue) ? "" : nextKeyValue, m.Id.ToString()) > 0).OrderByDescending(o => o.Id).Select(s => s.Id).Take(1000).ToList();
  1263. if (patientRegisterIds.Any())
  1264. {
  1265. foreach (var patientRegisterId in patientRegisterIds)
  1266. {
  1267. sumCount++;
  1268. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1269. {
  1270. var IsPatient = (await WebDb.Ado.GetDataTableAsync($"select patient_register_id from patient_register where patient_register_id='{patientRegisterId}'")).Rows.Count;
  1271. if (IsPatient == 0)
  1272. {
  1273. await TransPatientRegisterWithDetailAsync(WebDb, patientRegisterId);
  1274. handCount++;
  1275. }
  1276. nextKeyValue = patientRegisterId.ToString();
  1277. }
  1278. await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{patientRegisterId}',addtime=getdate(),handlecount+=1 where tablename='patient_register_web_reverse' ");
  1279. }
  1280. }
  1281. _logger.LogInformation($"当前降序查询数据:{sumCount},新增数据:{handCount}");
  1282. if (patientRegisterIds.Any())
  1283. await ExportPatientRegisterWithDetailReverseData();
  1284. }
  1285. #endregion
  1286. #region 临时导报告
  1287. /// <summary>
  1288. /// 临时导入2024年报告
  1289. /// </summary>
  1290. /// <returns></returns>
  1291. [RemoteService(false)]
  1292. public async Task TempExportReportAsync()
  1293. {
  1294. var patientRegisterIds = (await _patientRegisterRepository.GetQueryableAsync())
  1295. .Where(m => m.CompleteFlag == PatientRegisterCompleteFlag.SumCheck
  1296. && m.SummaryDate > Convert.ToDateTime("2024-01-01 00:00:00"))
  1297. .OrderBy(o => o.SummaryDate)
  1298. .Select(s => s.Id).ToList();
  1299. foreach (var item in patientRegisterIds)
  1300. {
  1301. using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
  1302. {
  1303. var isUploadReport = WebDb0520.Ado.GetDataTable($"select patient_register_id,report_file from patient_register where patient_register_id='{item}' and report_file is null ").Rows.Count;
  1304. if (isUploadReport == 1)
  1305. {
  1306. await SyncPatientRegisterReportByPatientRegisterIdAsync(new PatientRegisterIdInputDto
  1307. {
  1308. PatientRegisterId = item
  1309. });
  1310. }
  1311. await uow.CompleteAsync();
  1312. }
  1313. }
  1314. }
  1315. #endregion
  1316. }
  1317. }