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.

707 lines
28 KiB

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