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.

725 lines
28 KiB

4 weeks ago
  1. using Dapper;
  2. using Microsoft.Extensions.Configuration;
  3. using Newtonsoft.Json;
  4. using Npgsql;
  5. using ServiceReferenceYinHai;
  6. using Shentun.Peis.ChargeRequests;
  7. using Shentun.Peis.Enums;
  8. using Shentun.Peis.LisRequests;
  9. using Shentun.Peis.PlugIns.ChargeRequests;
  10. using Shentun.Peis.PlugIns.Extensions.ChargeRequests.YinHai;
  11. using Shentun.Peis.PlugIns.Extensions.ChargeRequests.YinHai.FeeBacks;
  12. using Shentun.Peis.PlugIns.Extensions.LisRequests.YinHai;
  13. using Shentun.Peis.PlugIns.Extensions.LisRequests.YinHai.Dto;
  14. using Shentun.Peis.PlugIns.Extensions.PacsRequests.YinHai.Dto;
  15. using Shentun.Peis.PlugIns.LisRequests;
  16. using Shentun.Peis.PlugIns.PatientRegisters;
  17. using Shentun.Peis.PrintReports;
  18. using Shentun.Peis.ThirdInterfaces;
  19. using Shentun.Utilities;
  20. using System;
  21. using System.Collections.Generic;
  22. using System.Data.Common;
  23. using System.Linq;
  24. using System.ServiceModel;
  25. using System.Text;
  26. using System.Threading.Tasks;
  27. using System.Xml;
  28. namespace Shentun.Peis.PlugIns.Extensions.PacsRequests.YinHai
  29. {
  30. public class PacsRequestPlugInsYinHai
  31. {
  32. protected IConfiguration? AppConfig;
  33. private readonly string AppConnctionStr;
  34. private readonly IConfiguration? InterfaceConfig;
  35. private readonly ThirdInterfaceDto? _thirdInterfaceDto;
  36. private readonly PluginLogger _logger; // 添加日志实例
  37. static PacsRequestPlugInsYinHai()
  38. {
  39. Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true;
  40. }
  41. public PacsRequestPlugInsYinHai(Guid thirdInterfaceId)
  42. {
  43. _logger = new PluginLogger();
  44. AppConfig = new ConfigurationBuilder()
  45. .SetBasePath(DirectoryHelper.GetAppDirectory()) // 设置基础路径为当前目录
  46. .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
  47. .Build();
  48. AppConnctionStr = AppConfig.GetSection("ConnectionStrings")
  49. .GetSection("Default").Value;
  50. using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
  51. {
  52. string sql;
  53. sql = @"
  54. SELECT *
  55. from third_interface
  56. where id =@ThirdInterfaceId
  57. ";
  58. _thirdInterfaceDto = (conn.Query<ThirdInterfaceDto>(sql,
  59. new { ThirdInterfaceId = thirdInterfaceId })).Single();
  60. }
  61. var configurationBuilder = new ConfigurationBuilder()
  62. .AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(_thirdInterfaceDto.ParmValue)));
  63. InterfaceConfig = configurationBuilder.Build();
  64. }
  65. public PacsRequestPlugInsYinHai(string parmValue)
  66. {
  67. _logger = new PluginLogger();
  68. AppConfig = new ConfigurationBuilder()
  69. .SetBasePath(DirectoryHelper.GetAppDirectory()) // 设置基础路径为当前目录
  70. .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
  71. .Build();
  72. AppConnctionStr = AppConfig.GetSection("ConnectionStrings")
  73. .GetSection("Default").Value;
  74. var configurationBuilder = new ConfigurationBuilder()
  75. .AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue)));
  76. InterfaceConfig = configurationBuilder.Build();
  77. }
  78. /// <summary>
  79. /// 发送Pacs申请
  80. /// </summary>
  81. /// <param name="input"></param>
  82. /// <returns></returns>
  83. /// <exception cref="Exception"></exception>
  84. public async Task<PacsRequestPlugInsOut> SendRequestAsync(RegisterCheckIdInputDto input)
  85. {
  86. _logger.Log("银海发送Pacs申请", $"Pacs申请Id:{input.RegisterCheckId}");
  87. try
  88. {
  89. //建立人员档案
  90. var patientRegisterForPlugIns = await GetPatientRegisterAsync(input.RegisterCheckId);
  91. var pacsRequestForPlugIns = await GetPacsRequestForPlugInsAsync(input.RegisterCheckId);
  92. if (pacsRequestForPlugIns == null)
  93. {
  94. throw new Exception("没有申请单信息");
  95. }
  96. if (patientRegisterForPlugIns.BirthDate == null)
  97. {
  98. throw new Exception("出生日期不能为空");
  99. }
  100. var endpointAddress = InterfaceConfig.GetValue("Interface:EndpointAddress", "");
  101. if (string.IsNullOrWhiteSpace(endpointAddress))
  102. {
  103. throw new Exception("接口地址不能为空");
  104. }
  105. string actionName = "request_call";
  106. string codeName = "pacs_server";
  107. using (var client = new WebServiceClient(new BasicHttpBinding(),
  108. new EndpointAddress(endpointAddress)))
  109. {
  110. //// 添加消息拦截器行为
  111. //var behavior = new SoapEndpointBehavior();
  112. //client.Endpoint.EndpointBehaviors.Add(behavior);
  113. var request = new PacsRequestCallDto();
  114. #region head
  115. string requestId = new Random().Next(100000, 999999).ToString();
  116. string timestamp = DateTime.Now.ToString("yyyyMMddHHmmss");
  117. request.Head = new PacsRequestCallHeadDto
  118. {
  119. Action = actionName,
  120. Code = codeName,
  121. ObjectSystem = "pacs",
  122. RequestId = requestId,
  123. Sign = "",
  124. SourceSystem = "peis",
  125. Timestamp = timestamp,
  126. Version = "1"
  127. };
  128. string headString = $"version={request.Head.Version}&timestamp={request.Head.Timestamp}&request_id={request.Head.RequestId}&source_system={request.Head.SourceSystem}&object_system={request.Head.ObjectSystem}&action={request.Head.Action}";
  129. string sign = Convert.ToBase64String(Encoding.UTF8.GetBytes(headString));
  130. request.Head.Sign = sign;
  131. #endregion
  132. var orgCode = InterfaceConfig.GetValue("Interface:OrgCode", "");
  133. var orgName = InterfaceConfig.GetValue("Interface:OrgName", "");
  134. var systemSource = InterfaceConfig.GetValue("Interface:SystemSource", "");
  135. var billingDeptCode = InterfaceConfig.GetValue("Interface:BillingDeptCode", "");
  136. var billingDeptName = InterfaceConfig.GetValue("Interface:BillingDeptName", "");
  137. var commonTableTypeId = InterfaceConfig.GetValue("Interface:CommonTableTypeId", "");
  138. var execDoctorUser = InterfaceConfig.GetValue("Interface:ExecDoctorUser", "");
  139. var createUser = await GetUserInfo(patientRegisterForPlugIns.CreatorId);
  140. var dataDetails = new List<PacsRequestCallBodyDataDetailDto>();
  141. var dataRequest = new PacsRequestCallBodyDataRequestDto
  142. {
  143. Age = patientRegisterForPlugIns.Age?.ToString() ?? "0",
  144. AgeUnit = "岁",
  145. RequestNo = pacsRequestForPlugIns.CheckRequestNo,
  146. PatientType = "4",
  147. OrgCode = orgCode,
  148. OrgName = orgName,
  149. SystemSource = "04.01",
  150. VisitId = patientRegisterForPlugIns.PatientRegisterNo,
  151. VisitNo = patientRegisterForPlugIns.PatientRegisterNo,
  152. PatientId = patientRegisterForPlugIns.PatientNo,
  153. PatientNo = patientRegisterForPlugIns.PatientNo,
  154. IsBaby = "0",
  155. PatientName = patientRegisterForPlugIns.PatientName,
  156. GenderCode = ConvertSex(patientRegisterForPlugIns.SexId),
  157. IdCard = patientRegisterForPlugIns.IdNo,
  158. RequestorCode = createUser.UserName,
  159. Requestor = createUser.Surname,
  160. RequestDeptCode = billingDeptCode,
  161. RequestDeptName = billingDeptName,
  162. Birthday = patientRegisterForPlugIns.BirthDate?.ToString("yyyy-MM-dd") ?? "",
  163. IsEmergency = "0",
  164. SumCost = pacsRequestForPlugIns.ChargePrice.ToString(),
  165. PayFlag = "0",
  166. ExecDeptCode = "",
  167. ExecDeptName = "",
  168. CancelFlag = "0",
  169. ExecFlag = "0",
  170. GcFlag = "0",
  171. AppointmentFlag = "0",
  172. BillingDate = patientRegisterForPlugIns.CreationTime.ToString("yyyy-MM-dd HH:mm:ss"),
  173. DeviceType = "DR",
  174. PrintFlag = "0",
  175. PresentAddress = "",
  176. HealthCardNo = "",
  177. HealthFileNo = "",
  178. Purpose = "",
  179. Telphone = "",
  180. NationCode = "",
  181. NationName = "",
  182. NationalityCode = "",
  183. NationalityName = "",
  184. MarriageCode = "",
  185. PresentHistory = "",
  186. Complanit = "",
  187. SymptomsInfo = "",
  188. DiagCode = "",
  189. DiagName = "",
  190. WardCode = "",
  191. WardName = "",
  192. RoomNo = "",
  193. BedNo = "",
  194. IdentyNo = "",
  195. DeptCode = "",
  196. DeptName = "",
  197. VisitCount = "",
  198. MaxitemId = "",
  199. MaxitemCode = "",
  200. MaxitemName = "",
  201. SpecimenType = "",
  202. SpecimenStatus = "",
  203. SpecimenFixer = "",
  204. CheckSpecimenNo = "",
  205. PrintCount = "",
  206. MedCardNo = ""
  207. };
  208. #region 对照关系
  209. var yinHaiAsbitemCommonTableList = await GetCommonTableByTypeId(commonTableTypeId);
  210. #endregion
  211. var dzFirst = yinHaiAsbitemCommonTableList.FirstOrDefault(f => f.DisplayName == pacsRequestForPlugIns.AsbitemId.ToString());
  212. if (dzFirst == null)
  213. {
  214. throw new Exception($"项目【{pacsRequestForPlugIns.AsbitemName},Id:{pacsRequestForPlugIns.AsbitemId}】没有对照");
  215. }
  216. dataDetails.Add(new PacsRequestCallBodyDataDetailDto
  217. {
  218. RequestNo = pacsRequestForPlugIns.CheckRequestNo,
  219. PatientType = "4",
  220. ItemSerialNo = $"{pacsRequestForPlugIns.CheckRequestNo}{dzFirst.ThirdCode}",
  221. OrgCode = orgCode,
  222. OrgName = orgName,
  223. SystemSource = systemSource,
  224. PatientId = patientRegisterForPlugIns.PatientNo,
  225. VisitId = patientRegisterForPlugIns.PatientRegisterNo,
  226. OrderId = "-",
  227. ItemId = pacsRequestForPlugIns.AsbitemId.ToString(),
  228. ItemCode = dzFirst.ThirdCode,
  229. ItemName = pacsRequestForPlugIns.AsbitemName,
  230. Cost = pacsRequestForPlugIns.ChargePrice.ToString(),
  231. ExecFlag = "0",
  232. CancelFlag = "0",
  233. IsEmergency = "0",
  234. AnestheisaTcmModernCode = "",
  235. AnesthesiaObserveResult = "",
  236. AnesthesiaPhysicianCode = "",
  237. AnesthesiaPhysicianSign = "",
  238. AnesthesiaWayCode = "",
  239. DeviceName = "",
  240. DeviceTypeName = "",
  241. DeviceWayName = "",
  242. DiagPeocessInfo = "",
  243. ExecDeptCode = "",
  244. ExecDeptName = "",
  245. InvolvedName = "",
  246. OpeartionCode = "",
  247. OperationCount = "",
  248. OperationDate = "",
  249. OperationName = "",
  250. OperationPositionCode = "",
  251. OperationPositionName = "",
  252. OperationWayInfo = ""
  253. });
  254. var requestBody = new PacsRequestCallBodyDto
  255. {
  256. Data = new PacsRequestCallBodyDataDto
  257. {
  258. Request = dataRequest,
  259. RequestDetails = new PacsRequestCallBodyDataDetailsDto
  260. {
  261. Details = dataDetails
  262. }
  263. }
  264. };
  265. request.Body = requestBody;
  266. var requestXml = XmlHelper.SerializeToXmlEmpty(request);
  267. var resultP = await client.callBussinessAsync(requestXml);
  268. if (resultP.data.status_code == "1")
  269. {
  270. //成功 更新lis申请表 执行状态
  271. await UpdatePacsRequestExecFlag(pacsRequestForPlugIns.RegisterCheckId, '1');
  272. }
  273. var returnValue = JsonConvert.SerializeObject(resultP.data, Newtonsoft.Json.Formatting.Indented);
  274. _logger.Log("银海发送Pacs申请", $"发送结果:{returnValue}");
  275. var yinHaiSendInterfaceLogDto = new YinHaiSendInterfaceLogDto
  276. {
  277. LogName = "发送Pacs申请",
  278. ExecDoctorUser = Guid.Parse(execDoctorUser),
  279. InterfaceName = $"{codeName}_{actionName}",
  280. ParaValue = requestXml,
  281. RequestNo = dataRequest.RequestNo,
  282. ReturnParaValue = returnValue
  283. };
  284. await AddSendLog(yinHaiSendInterfaceLogDto);
  285. }
  286. }
  287. catch (Exception ex)
  288. {
  289. // Console.WriteLine(ex.Message);
  290. _logger.Log("银海发送Pacs申请", ex, $"发送Pacs申请异常");
  291. }
  292. return new PacsRequestPlugInsOut();
  293. }
  294. /// <summary>
  295. /// 取消Pacs申请
  296. /// </summary>
  297. /// <param name="input"></param>
  298. /// <returns></returns>
  299. /// <exception cref="Exception"></exception>
  300. public async Task<PacsRequestPlugInsOut> CancelRequestAsync(RegisterCheckIdInputDto input)
  301. {
  302. _logger.Log("银海取消Pacs申请", $"Pacs申请Id:{input.RegisterCheckId}");
  303. try
  304. {
  305. var patientRegisterForPlugIns = await GetPatientRegisterAsync(input.RegisterCheckId);
  306. var pacsRequestForPlugIns = await GetPacsRequestForPlugInsAsync(input.RegisterCheckId);
  307. if (pacsRequestForPlugIns == null)
  308. {
  309. throw new Exception("没有申请单信息");
  310. }
  311. var endpointAddress = InterfaceConfig.GetValue("Interface:EndpointAddress", "");
  312. if (string.IsNullOrWhiteSpace(endpointAddress))
  313. {
  314. throw new Exception("接口地址不能为空");
  315. }
  316. string actionName = "request_cancel";
  317. string codeName = "pacs_server";
  318. using (var client = new WebServiceClient(new BasicHttpBinding(),
  319. new EndpointAddress(endpointAddress)))
  320. {
  321. var request = new PacsRequestCancelDto();
  322. #region head
  323. string requestId = new Random().Next(100000, 999999).ToString();
  324. string timestamp = DateTime.Now.ToString("yyyyMMddHHmmss");
  325. request.Head = new PacsRequestCancelHeadDto
  326. {
  327. Action = actionName,
  328. Code = codeName,
  329. ObjectSystem = "pacs",
  330. RequestId = requestId,
  331. Sign = "",
  332. SourceSystem = "peis",
  333. Timestamp = timestamp,
  334. Version = "1"
  335. };
  336. string headString = $"version={request.Head.Version}&timestamp={request.Head.Timestamp}&request_id={request.Head.RequestId}&source_system={request.Head.SourceSystem}&object_system={request.Head.ObjectSystem}&action={request.Head.Action}";
  337. string sign = Convert.ToBase64String(Encoding.UTF8.GetBytes(headString));
  338. request.Head.Sign = sign;
  339. #endregion
  340. var orgCode = InterfaceConfig.GetValue("Interface:OrgCode", "");
  341. var systemSource = InterfaceConfig.GetValue("Interface:SystemSource", "");
  342. var execDoctorUser = InterfaceConfig.GetValue("Interface:ExecDoctorUser", "");
  343. var commonTableTypeId = InterfaceConfig.GetValue("Interface:CommonTableTypeId", "");
  344. var dataDetails = new List<PacsRequestCancelBodyDataDetailDto>();
  345. var dataRequest = new PacsRequestCancelBodyDataRequestDto
  346. {
  347. OrgCode = orgCode,
  348. SystemSource = systemSource,
  349. CancelFlag = "1",
  350. PatientType = "4",
  351. RequestNo = pacsRequestForPlugIns.CheckRequestNo
  352. };
  353. #region 对照关系
  354. var yinHaiAsbitemCommonTableList = await GetCommonTableByTypeId(commonTableTypeId);
  355. #endregion
  356. var dzFirst = yinHaiAsbitemCommonTableList.FirstOrDefault(f => f.DisplayName == pacsRequestForPlugIns.AsbitemId.ToString());
  357. if (dzFirst == null)
  358. {
  359. throw new Exception($"项目【{pacsRequestForPlugIns.AsbitemName},Id:{pacsRequestForPlugIns.AsbitemId}】没有对照");
  360. }
  361. dataDetails.Add(new PacsRequestCancelBodyDataDetailDto
  362. {
  363. RequestNo = pacsRequestForPlugIns.CheckRequestNo,
  364. PatientType = "4",
  365. ItemSerialNo = $"{pacsRequestForPlugIns.CheckRequestNo}{dzFirst.ThirdCode}",
  366. OrgCode = orgCode,
  367. SystemSource = systemSource,
  368. CancelFlag = "1"
  369. });
  370. var requestBody = new PacsRequestCancelBodyDto
  371. {
  372. Data = new PacsRequestCancelBodyDataDto
  373. {
  374. Request = dataRequest,
  375. RequestDetails = new PacsRequestCancelBodyDataDetailsDto
  376. {
  377. Details = dataDetails
  378. }
  379. }
  380. };
  381. request.Body = requestBody;
  382. var requestXml = XmlHelper.SerializeToXmlEmpty(request);
  383. var resultP = await client.callBussinessAsync(requestXml);
  384. if (resultP.data.status_code == "1")
  385. {
  386. //成功 更新lis申请表 执行状态
  387. await UpdatePacsRequestExecFlag(pacsRequestForPlugIns.RegisterCheckId, '0');
  388. }
  389. var returnValue = JsonConvert.SerializeObject(resultP.data, Newtonsoft.Json.Formatting.Indented);
  390. _logger.Log("银海取消Pacs申请", $"发送结果:{returnValue}");
  391. var yinHaiSendInterfaceLogDto = new YinHaiSendInterfaceLogDto
  392. {
  393. LogName = "取消Pacs申请",
  394. ExecDoctorUser = Guid.Parse(execDoctorUser),
  395. InterfaceName = $"{codeName}_{actionName}",
  396. ParaValue = requestXml,
  397. RequestNo = pacsRequestForPlugIns.CheckRequestNo,
  398. ReturnParaValue = returnValue
  399. };
  400. await AddSendLog(yinHaiSendInterfaceLogDto);
  401. }
  402. }
  403. catch (Exception ex)
  404. {
  405. //Console.WriteLine(ex.Message);
  406. _logger.Log("银海取消Pacs申请", ex, $"发送取消Pacs申请异常");
  407. }
  408. return new PacsRequestPlugInsOut();
  409. }
  410. /// <summary>
  411. /// 更新register_check表的执行状态,标记用于是否发送
  412. /// </summary>
  413. /// <param name="registerCheckId"></param>
  414. /// <returns></returns>
  415. private async Task UpdatePacsRequestExecFlag(Guid registerCheckId, char execFlag)
  416. {
  417. using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
  418. {
  419. string sql;
  420. sql = @"update register_check set exec_flag=@execFlag
  421. WHERE id =@registerCheckId
  422. ";
  423. await conn.ExecuteAsync(sql,
  424. new { execFlag = execFlag, registerCheckId = registerCheckId });
  425. }
  426. }
  427. /// <summary>
  428. /// 获取用户信息
  429. /// </summary>
  430. /// <param name="registerCheckId"></param>
  431. /// <returns></returns>
  432. private async Task<PatientRegisterForPlugIns> GetPatientRegisterAsync(Guid registerCheckId)
  433. {
  434. using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
  435. {
  436. string sql;
  437. sql = @"select DISTINCT patient.id as patient_id,
  438. patient_register.id as patient_register_id,
  439. patient_register.patient_register_no,
  440. patient.patient_no ,
  441. patient_register.his_patient_id,
  442. patient_register.medical_center_id,
  443. patient_register.patient_name,
  444. patient_register.sex_id,
  445. patient_register.marital_status_id,
  446. patient_register.birth_date,
  447. patient_register.age,
  448. patient_register.creation_time,
  449. patient_register.creator_id,
  450. patient.nation_id,
  451. patient.id_no,
  452. patient.email,
  453. patient.telephone,
  454. patient.mobile_telephone,
  455. patient.address
  456. from register_check_asbitem
  457. left join register_check on register_check_asbitem.register_check_id=register_check.id
  458. left join patient_register on register_check.patient_register_id=patient_register.id
  459. left join patient on patient_register.patient_id=patient.id
  460. where register_check.id=@registerCheckId
  461. ";
  462. var patientRegisterForPlugIns = (await conn.QueryAsync<PatientRegisterForPlugIns>(sql,
  463. new { registerCheckId = registerCheckId })).SingleOrDefault();
  464. return patientRegisterForPlugIns;
  465. }
  466. }
  467. /// <summary>
  468. /// 获取申请单信息
  469. /// </summary>
  470. /// <param name="registerCheckId"></param>
  471. /// <returns></returns>
  472. private async Task<PacsRequestForPlugIns> GetPacsRequestForPlugInsAsync(Guid registerCheckId)
  473. {
  474. using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
  475. {
  476. string sql;
  477. sql = @"select distinct register_check.id as register_check_asbitem_id,
  478. register_check.check_request_no,
  479. asbitem.id as asbitem_id,
  480. asbitem.display_name as asbitem_name,
  481. register_check_asbitem.charge_price as charge_price
  482. from patient_register
  483. left join register_check on patient_register.id=register_check.patient_register_id
  484. left join register_check_asbitem on register_check.id=register_check_asbitem.register_check_id
  485. left join asbitem on register_check_asbitem.asbitem_id=asbitem.id
  486. left join item_type on asbitem.item_type_id=item_type.id
  487. where register_check.id=@registerCheckId and patient_register.complete_flag <> '3' and
  488. register_check.complete_flag <> '1' and asbitem.barcode_mode='0' and asbitem.is_check='Y' and item_type.is_check_request='Y'
  489. ";
  490. var pacsRequestForPlugIns = (await conn.QueryAsync<PacsRequestForPlugIns>(sql,
  491. new { registerCheckId = registerCheckId })).SingleOrDefault();
  492. return pacsRequestForPlugIns;
  493. }
  494. }
  495. /// <summary>
  496. /// 获取收费用户
  497. /// </summary>
  498. /// <param name="UserId"></param>
  499. /// <returns></returns>
  500. private async Task<ChargeUserDto> GetUserInfo(Guid UserId)
  501. {
  502. using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
  503. {
  504. string sql;
  505. sql = @"select user_name,surname from abp_users
  506. WHERE id =@UserId
  507. ";
  508. var chargeUser = (await conn.QueryAsync<ChargeUserDto>(sql,
  509. new { UserId = UserId })).SingleOrDefault();
  510. if (chargeUser == null)
  511. {
  512. return null;
  513. }
  514. return chargeUser;
  515. }
  516. }
  517. /// <summary>
  518. /// 获取对照数据
  519. /// </summary>
  520. /// <param name="commonTableTypeId"></param>
  521. /// <returns></returns>
  522. private async Task<List<YinHaiAsbitemCommonTableDto>> GetCommonTableByTypeId(string commonTableTypeId)
  523. {
  524. var thirdCode = InterfaceConfig.GetValue("Interface:ThirdCode", "");
  525. using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
  526. {
  527. string sql;
  528. sql = $@"select display_name,{thirdCode} as thirdCode from common_table where common_table_type_id='{commonTableTypeId}' ";
  529. var yinHaiAsbitemCommonTableList = (await conn.QueryAsync<YinHaiAsbitemCommonTableDto>(sql)).ToList();
  530. return yinHaiAsbitemCommonTableList;
  531. }
  532. }
  533. /// <summary>
  534. /// 添加日志
  535. /// </summary>
  536. /// <param name="input"></param>
  537. /// <returns></returns>
  538. private async Task AddSendLog(YinHaiSendInterfaceLogDto input)
  539. {
  540. using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
  541. {
  542. string sql;
  543. sql = $@" insert into interface_send_log (id,request_no,interface_name,para_value,return_para_value,concurrency_stamp,
  544. creation_time,creator_id,last_modification_time,last_modifier_id) values
  545. (@id,@request_no,@interface_name,@para_value,@return_para_value,@concurrency_stamp,
  546. @creation_time,@creator_id,@last_modification_time,@last_modifier_id)
  547. ";
  548. await conn.ExecuteAsync(sql,
  549. new
  550. {
  551. id = Guid.NewGuid(),
  552. request_no = input.RequestNo,
  553. interface_name = input.InterfaceName,
  554. para_value = input.ParaValue,
  555. return_para_value = input.ReturnParaValue,
  556. concurrency_stamp = Guid.NewGuid().ToString("N"),
  557. creation_time = DateTime.Now,
  558. creator_id = input.ExecDoctorUser,
  559. last_modification_time = DateTime.Now,
  560. last_modifier_id = input.ExecDoctorUser
  561. });
  562. }
  563. }
  564. /// <summary>
  565. /// 转换性别
  566. /// </summary>
  567. /// <param name="sexId"></param>
  568. /// <returns></returns>
  569. private string ConvertSex(char sexId)
  570. {
  571. string msg = "";
  572. switch (sexId)
  573. {
  574. case 'M':
  575. msg = "1";
  576. break;
  577. case 'F':
  578. msg = "2";
  579. break;
  580. case 'U':
  581. msg = "0";
  582. break;
  583. default:
  584. msg = "9";
  585. break;
  586. }
  587. return msg;
  588. }
  589. #region 解析xml
  590. private string GetNodeValue(XmlNode parent, string nodeName)
  591. {
  592. var node = parent.SelectSingleNode(nodeName);
  593. return node?.InnerText ?? "";
  594. }
  595. #endregion
  596. }
  597. }