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.
117 lines
4.3 KiB
117 lines
4.3 KiB
using Dapper;
|
|
using Npgsql;
|
|
using Shentun.Peis.PlugIns.LisRequests;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data.Common;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Shentun.Peis.PlugIns.ImportLisResults
|
|
{
|
|
public class ImportLisResultPlugInsBase : ThirdPlugInsBase
|
|
{
|
|
public ImportLisResultPlugInsBase(Guid thirdInterfaceId) : base(thirdInterfaceId)
|
|
{
|
|
|
|
}
|
|
|
|
//protected string AppLisUser;
|
|
//protected string AppLisPassword;
|
|
public ImportLisResultPlugInsBase(string parmValue) : base(parmValue)
|
|
{
|
|
|
|
//AppLisUser = AppConfig.GetSection("App")
|
|
// .GetSection("LisUser").Value;
|
|
//AppLisPassword = AppConfig.GetSection("App")
|
|
// .GetSection("LisPassword").Value;
|
|
}
|
|
public virtual async Task<ImportLisResultPlugInsOut> ImportResultByPatientRegisterIdAsync(Guid patientRegisterId)
|
|
{
|
|
var result = new ImportLisResultPlugInsOut();
|
|
return result;
|
|
}
|
|
|
|
public async Task<List<LisRequestForImportResultPlugIns>> GetLisRequestForImportResultPlugInssAsync(Guid patientRegisterId)
|
|
{
|
|
using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
|
|
{
|
|
string sql;
|
|
sql = @"
|
|
SELECT distinct lis_request.id ,
|
|
lis_request.lis_request_no
|
|
from patient_register
|
|
JOIN register_check on patient_register.id = register_check.patient_register_id
|
|
JOIN register_check_asbitem on register_check.id = register_check_asbitem.register_check_id
|
|
JOIN lis_request on register_check_asbitem.lis_request_id = lis_request.id
|
|
where patient_register.id = @PatientRegisterId
|
|
";
|
|
var lisRequestForImportResultPlugInss = (await conn.QueryAsync<LisRequestForImportResultPlugIns>(sql,
|
|
new { PatientRegisterId = patientRegisterId })).ToList();
|
|
return lisRequestForImportResultPlugInss;
|
|
}
|
|
}
|
|
|
|
public async Task<List<PatientRegisterForLisRequest>> GetRequestPatientRegisters(int days)
|
|
{
|
|
using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
|
|
{
|
|
string sql;
|
|
var startDate = DateTime.Now.Date.AddDays(-days);
|
|
sql = @" SELECT distinct register_check.patient_register_id
|
|
from lis_request ,register_check_asbitem,register_check,patient_register
|
|
WHERE lis_request.id = register_check_asbitem.lis_request_id and
|
|
register_check_asbitem.register_check_id = register_check.id and
|
|
register_check.patient_register_id = patient_register.id and
|
|
(
|
|
patient_register.complete_flag = '1' or
|
|
patient_register.complete_flag = '2') and
|
|
patient_register.medical_center_id =@MedicalCenterId and
|
|
lis_request.creation_time > @StartDate
|
|
ORDER BY register_check.patient_register_id
|
|
";
|
|
var patientRegisterForLisRequests = (await conn.QueryAsync<PatientRegisterForLisRequest>(sql,
|
|
new { _thirdInterfaceDto.MedicalCenterId, StartDate = startDate })).ToList();
|
|
|
|
return patientRegisterForLisRequests;
|
|
}
|
|
|
|
}
|
|
|
|
public override Task DoWork()
|
|
{
|
|
//var loginResult = LoginAsync().Result;
|
|
var queryDaysStr = InterfaceConfig.GetSection("Interface").GetSection("Scheduler").GetSection("QueryDays").Value;
|
|
if (string.IsNullOrWhiteSpace(queryDaysStr))
|
|
{
|
|
queryDaysStr = "1";
|
|
}
|
|
if (!int.TryParse(queryDaysStr, out int days))
|
|
{
|
|
days = 1;
|
|
}
|
|
var patientRegisters = GetRequestPatientRegisters(days).Result;
|
|
|
|
foreach (var patientRegister in patientRegisters)
|
|
{
|
|
try
|
|
{
|
|
var result = ImportResultByPatientRegisterIdAsync(patientRegister.PatientRegisterId).Result;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
}
|
|
|
|
}
|
|
return Task.CompletedTask;
|
|
}
|
|
|
|
//protected async override Task<LoginOutDto> LoginAsync()
|
|
//{
|
|
// var relult = await LoginAsync(AppLisUser, AppLisPassword);
|
|
// return relult;
|
|
//}
|
|
}
|
|
}
|