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.

115 lines
4.3 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
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. using Dapper;
  2. using Npgsql;
  3. using Shentun.Peis.PlugIns.LisRequests;
  4. using Shentun.Peis.ThirdInterfaces;
  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.ImportPacsResults
  12. {
  13. public class ImportPacsResultPlugInsBase : ThirdPlugInsBase
  14. {
  15. public ImportPacsResultPlugInsBase(Guid thirdInterfaceId) : base(thirdInterfaceId)
  16. {
  17. }
  18. public ImportPacsResultPlugInsBase(string parmValue) : base(parmValue)
  19. {
  20. }
  21. public virtual async Task<ImportPacsResultPlugInsOut> ImportResultByPatientRegisterIdAsync(Guid patientRegisterId)
  22. {
  23. var result = new ImportPacsResultPlugInsOut();
  24. return result;
  25. }
  26. public async Task<List<PacsRequestForImportResultPlugIns>> GetPacsRequestForImportResultPlugInssAsync(Guid patientRegisterId)
  27. {
  28. using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
  29. {
  30. string sql;
  31. sql = @"
  32. SELECT distinct patient_register.patient_register_no,
  33. patient_register.patient_name,
  34. register_check.id ,
  35. register_check.check_request_no
  36. from patient_register
  37. JOIN register_check on patient_register.id = register_check.patient_register_id
  38. JOIN register_check_asbitem on register_check.id = register_check_asbitem.register_check_id
  39. JOIN asbitem on register_check_asbitem.asbitem_id = asbitem.id
  40. JOIN item_type on asbitem.item_type_id = item_type.id
  41. where patient_register.id = @PatientRegisterId and
  42. item_type.is_check_request = 'Y' and
  43. (patient_register.complete_flag = '0' or
  44. patient_register.complete_flag = '1' or
  45. patient_register.complete_flag = '2') and
  46. register_check.check_request_no <> ''
  47. ";
  48. var pacsRequestForResultImportPlugInss = (await conn.QueryAsync<PacsRequestForImportResultPlugIns>(sql,
  49. new { PatientRegisterId = patientRegisterId })).ToList();
  50. return pacsRequestForResultImportPlugInss;
  51. }
  52. }
  53. public async Task<List<PatientRegisterForLisRequest>> GetRequestPatientRegistersAsync(int days)
  54. {
  55. using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
  56. {
  57. string sql;
  58. var startDate = DateTime.Now.Date.AddDays(-days);
  59. sql = @" SELECT distinct register_check.patient_register_id
  60. from patient_register
  61. JOIN register_check on patient_register.id = register_check.patient_register_id
  62. JOIN register_check_asbitem on register_check.id = register_check_asbitem.register_check_id
  63. JOIN asbitem on register_check_asbitem.asbitem_id = asbitem.id
  64. JOIN item_type on asbitem.item_type_id = item_type.id
  65. where
  66. item_type.is_check_request = 'Y' and
  67. (
  68. patient_register.complete_flag = '1' or
  69. patient_register.complete_flag = '2') and
  70. patient_register.medical_center_id =@MedicalCenterId and
  71. patient_register.medical_start_date >@StartDate
  72. ORDER BY register_check.patient_register_id
  73. ";
  74. var patientRegisterForLisRequests = (await conn.QueryAsync<PatientRegisterForLisRequest>(sql,
  75. new { _thirdInterfaceDto.MedicalCenterId, StartDate = startDate })).ToList();
  76. return patientRegisterForLisRequests;
  77. }
  78. }
  79. public override Task DoWork()
  80. {
  81. //var loginResult = LoginAsync().Result;
  82. var queryDaysStr = InterfaceConfig.GetSection("Interface").GetSection("Scheduler").GetSection("QueryDays").Value;
  83. if (string.IsNullOrWhiteSpace(queryDaysStr))
  84. {
  85. queryDaysStr = "1";
  86. }
  87. if (!int.TryParse(queryDaysStr, out int days))
  88. {
  89. days = 1;
  90. }
  91. var patientRegisters = GetRequestPatientRegistersAsync(days).Result;
  92. foreach (var patientRegister in patientRegisters)
  93. {
  94. try
  95. {
  96. var result = ImportResultByPatientRegisterIdAsync(patientRegister.PatientRegisterId).Result;
  97. }
  98. catch (Exception ex)
  99. {
  100. }
  101. }
  102. return Task.CompletedTask;
  103. }
  104. }
  105. }