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.

136 lines
5.9 KiB

1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
  1. using Newtonsoft.Json.Converters;
  2. using Newtonsoft.Json;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Net.Http.Headers;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using Shentun.Peis.ImportPacsResults;
  10. using NPOI.SS.Formula.Functions;
  11. using Shentun.Peis.ImportLisResults;
  12. using System.Security.Policy;
  13. namespace Shentun.Peis.PlugIns.Gem
  14. {
  15. public class ImportPacsResultPlugInsGem : ImportPacsResultPlugInsBase
  16. {
  17. public ImportPacsResultPlugInsGem(string parmValue) : base(parmValue)
  18. {
  19. }
  20. public override async Task<ImportPacsResultPlugInsOut> ImportResultAsync(ImportPacsResultPlugInsInput input)
  21. {
  22. //if (DepartmentColumnReferenceId == null || DepartmentColumnReferenceId == Guid.Empty)
  23. //{
  24. // throw new Exception("没有设置科室编码对照");
  25. //}
  26. var pacsRequests = await GetPacsRequestForImportResultPlugInssAsync(input.PatientRegisterId);
  27. var beginTime = DateTime.Now.Date.AddDays(-30);
  28. foreach (var pacsRequest in pacsRequests)
  29. {
  30. if (string.IsNullOrWhiteSpace(pacsRequest.CheckRequestNo))
  31. {
  32. continue;
  33. }
  34. var interfaceInpu = new ImportPacsResultInterfaceInput()
  35. {
  36. tjNum = pacsRequest.CheckRequestNo,
  37. organizeCode = "1",
  38. patientType = "3",
  39. //requestId = pacsRequest.CheckRequestNo,
  40. beginTime = beginTime.ToString("yyyy-MM-dd HH:mm:ss"),
  41. pageNo = 1,
  42. pageSize = 20
  43. };
  44. //if(interfaceInpu.tjNum == "2405112185")
  45. //{
  46. // ;
  47. //}
  48. var apiResult = await CallInterfaceServiceAsync<ImportPacsResultInterfaceInput,
  49. ImportPacsResultInterfaceOut>(interfaceInpu);
  50. if (!apiResult.data.Any())
  51. {
  52. continue;
  53. }
  54. var firstData = apiResult.data[0];
  55. if (!DateTime.TryParse(firstData.reportDateTime, out var checkDate))
  56. {
  57. throw new Exception("报告时间格式不正确");
  58. }
  59. var createImportPacsResultDto = new CreateImportPacsResultDto()
  60. {
  61. CheckRequestNo = pacsRequest.CheckRequestNo,
  62. PatientName = pacsRequest.PatientName,
  63. Result = firstData.examDescript,
  64. Summary = firstData.examDiagnosis,
  65. Suggestion = firstData.suggestion,
  66. CheckDate = checkDate,
  67. CheckDoctorName = firstData.reportDoctorName,
  68. Files = new List<CreateImportPacsResultPictureDto>()
  69. {
  70. new CreateImportPacsResultPictureDto()
  71. {
  72. IsPrint = 'Y',
  73. FileTransMode = "1",//0-json,1-url
  74. FileName = firstData.reportUrl,
  75. FileFormat = "1",//0-图片,1-pdf
  76. FileUrl = firstData.reportUrl,
  77. //FileBase64 = Shentun.Utilities.FileHelper.ToBase64(firstData.reportUrl)
  78. },
  79. }
  80. };
  81. var callResult = await CallAppServiceAsync<CreateImportPacsResultDto, object>("api/app/ImportPacsResult/ImportResult", createImportPacsResultDto);
  82. }
  83. var result = new ImportPacsResultPlugInsOut();
  84. return result;
  85. }
  86. public async Task<TOut> CallInterfaceServiceAsync<TInput, TOut>(TInput data)
  87. {
  88. string baseAddress = InterfaceWebApiUrl;
  89. using (var httpClientHandler = new HttpClientHandler())
  90. {
  91. using (var httpClient = new HttpClient(httpClientHandler))
  92. {
  93. httpClient.BaseAddress = new Uri(baseAddress);
  94. httpClient.DefaultRequestHeaders.Accept.Add(
  95. new MediaTypeWithQualityHeaderValue("application/json"));//设置accept标头,告诉JSON是可接受的响应类型
  96. //httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _accesToken);
  97. IsoDateTimeConverter timeFormat = new IsoDateTimeConverter();
  98. timeFormat.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
  99. var sendData = JsonConvert.SerializeObject(data, Newtonsoft.Json.Formatting.Indented, timeFormat);
  100. using (HttpContent httpContent = new StringContent(sendData))
  101. {
  102. httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
  103. HttpResponseMessage response = await httpClient.PostAsync("", httpContent);
  104. string result;
  105. if (!response.IsSuccessStatusCode)
  106. {
  107. result = response.Content.ReadAsStringAsync().Result;
  108. throw new Exception("http通信错误:" + response.StatusCode + ",结果:" + result);
  109. }
  110. result = await response.Content.ReadAsStringAsync();
  111. dynamic resultDto = JsonConvert.DeserializeObject<TOut>(result);
  112. if (resultDto != null)
  113. {
  114. if (resultDto.code != "200")
  115. {
  116. throw new Exception($"调用WebApi失败,返回错误,消息:" + resultDto.code + resultDto.msg);
  117. }
  118. }
  119. return resultDto;
  120. }
  121. }
  122. }
  123. }
  124. }
  125. }