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.

112 lines
4.6 KiB

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