using Dapper; using Microsoft.Data.SqlClient; using Newtonsoft.Json; using Npgsql; using NPOI.Util; using NUglify.Helpers; using Oracle.ManagedDataAccess.Client; using Shentun.Peis.ImportLisResults; using Shentun.Peis.LisRequests; using Shentun.Utilities; using System; using System.Collections.Generic; using System.Data.Common; using System.Linq; using System.Net.Http.Headers; using System.Security.Policy; using System.Text; using System.Threading.Tasks; namespace Shentun.Peis.PlugIns.ImportLisResults { public class ImportLisResultPlugInsDbBase : ImportLisResultPlugInsBase { public ImportLisResultPlugInsDbBase(Guid thirdInterfaceId) : base(thirdInterfaceId) { } public ImportLisResultPlugInsDbBase(string parmValue) : base(parmValue) { } public override async Task ImportResultByPatientRegisterIdAsync(Guid patientRegisterId) { if (ItemColumnReferenceId == null || ItemColumnReferenceId == Guid.Empty) { throw new Exception("没有设置项目编码对照"); } var result = new ImportLisResultPlugInsOut(); var execOrganizationUnitIdStr = InterfaceConfig.GetSection("Interface").GetSection("ExecOrganizationUnitId").Value; if (string.IsNullOrWhiteSpace(execOrganizationUnitIdStr)) { throw new Exception("执行科室配置不能为空"); } if (!Guid.TryParse(execOrganizationUnitIdStr, out Guid execOrganizationUnitId)) { throw new Exception("执行科室配置不是有效的GUID值"); } var lisRequests = await GetLisRequestForImportResultPlugInssAsync(patientRegisterId); using (DbConnection conn = CreateInterfaceDbConnect()) { //设置结果,生成小结 //await LoginAsync(); var createImportLisResultDtos = new List(); foreach (var lisRequest in lisRequests) { //if (lisRequest.LisRequestNo == "2405090117") //{ // ; //} createImportLisResultDtos.Clear(); string sql; sql = InterfaceSql + " where " + InterfaceSqlKeyColumn + " = '" + lisRequest.LisRequestNo + "'"; var lisResultFromInterfaces = (await conn.QueryAsync(sql)).ToList(); try { foreach (var lisResult in lisResultFromInterfaces) { if (string.IsNullOrWhiteSpace(lisResult.Result)) { continue; } if (string.IsNullOrWhiteSpace(lisResult.ItemId)) { throw new Exception("第三方接口数据项目编码不能为空"); } if (string.IsNullOrWhiteSpace(lisResult.ItemName)) { throw new Exception("第三方接口数据项目名称不能为空"); } if (string.IsNullOrWhiteSpace(lisResult.CheckDoctorName)) { throw new Exception("检验医生不能为空"); } //if(lisResult.ItemId == "435") //{ // ; //} var columnReferenceCodes = await GetColumnReferenceCodeValuesAsync(ItemColumnReferenceId, lisResult.ItemId); if (columnReferenceCodes == null || !columnReferenceCodes.Any()) { //throw new Exception($"LIS系统中项目名:{lisResult.ItemName} 编码:{lisResult.ItemId}没有与体检系统对照编码"); continue; } foreach (var columnReferenceCode in columnReferenceCodes) { if (string.IsNullOrWhiteSpace(columnReferenceCode.CodeValue)) { continue; } if (!Guid.TryParse(columnReferenceCode.CodeValue, out var appItemId)) { throw new Exception($"{lisResult.ItemName}对照的编码无效"); } var createImportLisResultDto = new CreateImportLisResultDto() { LisRequestNo = lisResult.LisRequestNo, ItemId = appItemId, ItemName = lisResult.ItemName, Result = lisResult.Result, Unit = lisResult.Unit, ReferenceRangeValue = lisResult.ReferenceRangeValue, CriticalRangeValue = lisResult.CriticalRangeValue, ResultStatusId = lisResult.ResultStatusId, ReportPrompt = lisResult.ReportPrompt, CheckDoctorName = lisResult.CheckDoctorName, CheckDate = lisResult.CheckDate, ExecOrganizationUnitId = execOrganizationUnitId }; createImportLisResultDtos.Add(createImportLisResultDto); } } if (!createImportLisResultDtos.Any()) { continue; } var callResult = await CallAppServiceAsync, object>("api/app/ImportLisResult/ImportResult", createImportLisResultDtos); } catch (Exception ex) { //throw ex; } } } return result; } } }