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.

726 lines
29 KiB

3 weeks ago
1 week ago
3 weeks ago
1 week ago
3 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. _logger.LogResult("更新register_check表的执行状态", $"registerCheckId=>{registerCheckId.ToString()},execFlag=>{execFlag}");
  418. using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
  419. {
  420. string sql;
  421. sql = @"update register_check set exec_flag=@execFlag
  422. WHERE id =@registerCheckId
  423. ";
  424. await conn.ExecuteAsync(sql,
  425. new { execFlag = execFlag, registerCheckId = registerCheckId });
  426. }
  427. }
  428. /// <summary>
  429. /// 获取用户信息
  430. /// </summary>
  431. /// <param name="registerCheckId"></param>
  432. /// <returns></returns>
  433. private async Task<PatientRegisterForPlugIns> GetPatientRegisterAsync(Guid registerCheckId)
  434. {
  435. using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
  436. {
  437. string sql;
  438. sql = @"select DISTINCT patient.id as patient_id,
  439. patient_register.id as patient_register_id,
  440. patient_register.patient_register_no,
  441. patient.patient_no ,
  442. patient_register.his_patient_id,
  443. patient_register.medical_center_id,
  444. patient_register.patient_name,
  445. patient_register.sex_id,
  446. patient_register.marital_status_id,
  447. patient_register.birth_date,
  448. patient_register.age,
  449. patient_register.creation_time,
  450. patient_register.creator_id,
  451. patient.nation_id,
  452. patient.id_no,
  453. patient.email,
  454. patient.telephone,
  455. patient.mobile_telephone,
  456. patient.address
  457. from register_check_asbitem
  458. left join register_check on register_check_asbitem.register_check_id=register_check.id
  459. left join patient_register on register_check.patient_register_id=patient_register.id
  460. left join patient on patient_register.patient_id=patient.id
  461. where register_check.id=@registerCheckId
  462. ";
  463. var patientRegisterForPlugIns = (await conn.QueryAsync<PatientRegisterForPlugIns>(sql,
  464. new { registerCheckId = registerCheckId })).SingleOrDefault();
  465. return patientRegisterForPlugIns;
  466. }
  467. }
  468. /// <summary>
  469. /// 获取申请单信息
  470. /// </summary>
  471. /// <param name="registerCheckId"></param>
  472. /// <returns></returns>
  473. private async Task<PacsRequestForPlugIns> GetPacsRequestForPlugInsAsync(Guid registerCheckId)
  474. {
  475. using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
  476. {
  477. string sql;
  478. sql = @"select distinct register_check.id as register_check_id,
  479. register_check.check_request_no,
  480. asbitem.id as asbitem_id,
  481. asbitem.display_name as asbitem_name,
  482. register_check_asbitem.charge_price as charge_price
  483. from patient_register
  484. left join register_check on patient_register.id=register_check.patient_register_id
  485. left join register_check_asbitem on register_check.id=register_check_asbitem.register_check_id
  486. left join asbitem on register_check_asbitem.asbitem_id=asbitem.id
  487. left join item_type on asbitem.item_type_id=item_type.id
  488. where register_check.id=@registerCheckId and patient_register.complete_flag <> '3' and
  489. register_check.complete_flag <> '1' and asbitem.barcode_mode='0' and asbitem.is_check='Y' and item_type.is_check_request='Y'
  490. ";
  491. var pacsRequestForPlugIns = (await conn.QueryAsync<PacsRequestForPlugIns>(sql,
  492. new { registerCheckId = registerCheckId })).SingleOrDefault();
  493. return pacsRequestForPlugIns;
  494. }
  495. }
  496. /// <summary>
  497. /// 获取收费用户
  498. /// </summary>
  499. /// <param name="UserId"></param>
  500. /// <returns></returns>
  501. private async Task<ChargeUserDto> GetUserInfo(Guid UserId)
  502. {
  503. using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
  504. {
  505. string sql;
  506. sql = @"select user_name,surname from abp_users
  507. WHERE id =@UserId
  508. ";
  509. var chargeUser = (await conn.QueryAsync<ChargeUserDto>(sql,
  510. new { UserId = UserId })).SingleOrDefault();
  511. if (chargeUser == null)
  512. {
  513. return null;
  514. }
  515. return chargeUser;
  516. }
  517. }
  518. /// <summary>
  519. /// 获取对照数据
  520. /// </summary>
  521. /// <param name="commonTableTypeId"></param>
  522. /// <returns></returns>
  523. private async Task<List<YinHaiAsbitemCommonTableDto>> GetCommonTableByTypeId(string commonTableTypeId)
  524. {
  525. var thirdCode = InterfaceConfig.GetValue("Interface:ThirdCode", "");
  526. using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
  527. {
  528. string sql;
  529. sql = $@"select display_name,{thirdCode} as thirdCode from common_table where common_table_type_id='{commonTableTypeId}' ";
  530. var yinHaiAsbitemCommonTableList = (await conn.QueryAsync<YinHaiAsbitemCommonTableDto>(sql)).ToList();
  531. return yinHaiAsbitemCommonTableList;
  532. }
  533. }
  534. /// <summary>
  535. /// 添加日志
  536. /// </summary>
  537. /// <param name="input"></param>
  538. /// <returns></returns>
  539. private async Task AddSendLog(YinHaiSendInterfaceLogDto input)
  540. {
  541. using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
  542. {
  543. string sql;
  544. sql = $@" insert into interface_send_log (id,request_no,interface_name,para_value,return_para_value,concurrency_stamp,
  545. creation_time,creator_id,last_modification_time,last_modifier_id) values
  546. (@id,@request_no,@interface_name,@para_value,@return_para_value,@concurrency_stamp,
  547. @creation_time,@creator_id,@last_modification_time,@last_modifier_id)
  548. ";
  549. await conn.ExecuteAsync(sql,
  550. new
  551. {
  552. id = Guid.NewGuid(),
  553. request_no = input.RequestNo,
  554. interface_name = input.InterfaceName,
  555. para_value = input.ParaValue,
  556. return_para_value = input.ReturnParaValue,
  557. concurrency_stamp = Guid.NewGuid().ToString("N"),
  558. creation_time = DateTime.Now,
  559. creator_id = input.ExecDoctorUser,
  560. last_modification_time = DateTime.Now,
  561. last_modifier_id = input.ExecDoctorUser
  562. });
  563. }
  564. }
  565. /// <summary>
  566. /// 转换性别
  567. /// </summary>
  568. /// <param name="sexId"></param>
  569. /// <returns></returns>
  570. private string ConvertSex(char sexId)
  571. {
  572. string msg = "";
  573. switch (sexId)
  574. {
  575. case 'M':
  576. msg = "1";
  577. break;
  578. case 'F':
  579. msg = "2";
  580. break;
  581. case 'U':
  582. msg = "0";
  583. break;
  584. default:
  585. msg = "9";
  586. break;
  587. }
  588. return msg;
  589. }
  590. #region 解析xml
  591. private string GetNodeValue(XmlNode parent, string nodeName)
  592. {
  593. var node = parent.SelectSingleNode(nodeName);
  594. return node?.InnerText ?? "";
  595. }
  596. #endregion
  597. }
  598. }