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.

108 lines
4.5 KiB

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