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.

113 lines
4.7 KiB

2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. using Dapper;
  2. using Npgsql;
  3. using NPOI.SS.Formula.Functions;
  4. using Shentun.Peis.PlugIns.LisRequests;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Data.Common;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. namespace Shentun.Peis.PlugIns.Gem
  12. {
  13. public class LisRequestPlugInsGem : LisRequestPlugInsBase
  14. {
  15. public LisRequestPlugInsGem(Guid thirdInterfaceId) : base(thirdInterfaceId)
  16. {
  17. }
  18. public LisRequestPlugInsGem(string parmValue) : base(parmValue)
  19. {
  20. }
  21. public override async Task<LisRequestPlugInsOut> SendRequestAsync(LisRequestPlugInsInput input)
  22. {
  23. var patientRegisterForPlugIns = await GetPatientRegisterForPlugInsAsync(input.LisRequestId);
  24. var lisRequestForPlugIns = await GetLisRequestForPlugInsAsync(input.LisRequestId);
  25. if(lisRequestForPlugIns == null)
  26. {
  27. return null;
  28. }
  29. if (lisRequestForPlugIns.SampleTypeId == Guid.Empty )
  30. {
  31. throw new Exception($"标本类型没有编码");
  32. }
  33. var columnReferenceInterfaceCodeValue = (await GetColumnReferenceInterfaceCodeValuesAsync(SampleTypeColumnReferenceId,
  34. lisRequestForPlugIns.SampleTypeId.ToString())).FirstOrDefault();
  35. string thirdSampleTypeCode="";
  36. if (columnReferenceInterfaceCodeValue != null)
  37. {
  38. thirdSampleTypeCode = columnReferenceInterfaceCodeValue.InterfaceCodeValue;
  39. }
  40. else
  41. {
  42. //throw new Exception($"{lisRequestForPlugIns.SampleTypeName}没有对照");
  43. }
  44. foreach (var asbitem in lisRequestForPlugIns.Asbitems)
  45. {
  46. columnReferenceInterfaceCodeValue = (await GetColumnReferenceInterfaceCodeValuesAsync(AsbitemColumnReferenceId,
  47. asbitem.AsbitemId.ToString())).FirstOrDefault();
  48. if (columnReferenceInterfaceCodeValue != null)
  49. {
  50. asbitem.ThirdAsbitemCode = columnReferenceInterfaceCodeValue.InterfaceCodeValue;
  51. }
  52. else
  53. {
  54. throw new Exception($"{asbitem.AsbitemName}没有对照");
  55. }
  56. }
  57. using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
  58. {
  59. conn.Execute("delete from third_lis_request where lis_request_id = @LisRequestId",
  60. new { LisRequestId = input.LisRequestId });
  61. string sql;
  62. sql = @"insert into third_lis_request (id,
  63. lis_request_id,
  64. asbitem_names,
  65. asbitem_codes,
  66. department_code,
  67. requester_code,
  68. telephone,
  69. request_date,
  70. charges,
  71. charge_flag,
  72. patient_type,
  73. charge_type,
  74. sample_type,
  75. sampler_code,
  76. sample_request_flag)
  77. VALUES (@Id, @LisRequestId,@AsbitemNames,@AsbitemCodes,@DepartmentCode,
  78. @RequesterCode,@Telephone,@RequestDate,@Charges,@ChargeFlag,
  79. @PatientType,@ChargeType,@SampleType,@SamplerCode,
  80. @SampleRequestFlag)
  81. ";
  82. var thirdLisRequestEntity = new ThirdLisRequestEntity()
  83. {
  84. Id = Guid.NewGuid(),
  85. LisRequestId = input.LisRequestId,
  86. AsbitemNames = string.Join("+", lisRequestForPlugIns.Asbitems.Select(o => o.AsbitemName)),
  87. AsbitemCodes = string.Join("^", lisRequestForPlugIns.Asbitems.Select(o => o.ThirdAsbitemCode)),
  88. DepartmentCode = "",
  89. RequesterCode = "",
  90. Telephone = patientRegisterForPlugIns.MobileTelephone,
  91. RequestDate = DateTime.Now,
  92. Charges = lisRequestForPlugIns.Asbitems.Sum(o => o.Charges),
  93. ChargeFlag = "2",
  94. PatientType = "3",
  95. ChargeType = "1",
  96. SampleType = thirdSampleTypeCode,
  97. SamplerCode = "",
  98. SampleRequestFlag = "正常"
  99. };
  100. conn.Execute(sql, thirdLisRequestEntity);
  101. }
  102. return new LisRequestPlugInsOut();
  103. }
  104. }
  105. }