修改验证 和测试
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
5f338de0cd
commit
88669ccbff
|
@ -50,7 +50,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
var verifyExp1 = new EntityVerifyExp<DicomAE>()
|
var verifyExp1 = new EntityVerifyExp<DicomAE>()
|
||||||
{
|
{
|
||||||
VerifyExp = u => u.IP == addOrEditDicomAE.IP && u.Port == addOrEditDicomAE.Port,
|
VerifyExp = u => u.IP == addOrEditDicomAE.IP && u.Port == addOrEditDicomAE.Port && u.PacsTypeEnum==addOrEditDicomAE.PacsTypeEnum,
|
||||||
|
|
||||||
VerifyMsg = "不允许添加相同的IP和端口的记录"
|
VerifyMsg = "不允许添加相同的IP和端口的记录"
|
||||||
};
|
};
|
||||||
|
@ -96,24 +96,36 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
client.NegotiateAsyncOps();
|
client.NegotiateAsyncOps();
|
||||||
|
|
||||||
await client.AddRequestAsync(new DicomCEchoRequest());
|
client.ServiceOptions.RequestTimeout = TimeSpan.FromSeconds(5);
|
||||||
|
|
||||||
// 创建一个超时任务,设置超时时间为1秒
|
var request = new DicomCEchoRequest
|
||||||
var timeoutTask = Task.Delay(TimeSpan.FromSeconds(3));
|
|
||||||
|
|
||||||
// 发送 DICOM 请求
|
|
||||||
var sendTask = client.SendAsync();
|
|
||||||
|
|
||||||
// 等待任务完成,若超时任务先完成则抛出超时异常
|
|
||||||
if (await Task.WhenAny(sendTask, timeoutTask) == timeoutTask)
|
|
||||||
{
|
{
|
||||||
throw new TimeoutException("DICOM 请求超时。");
|
OnResponseReceived = (req, response) =>
|
||||||
}
|
{
|
||||||
|
Console.WriteLine($"C-ECHO Response: {response.Status}");
|
||||||
|
|
||||||
|
if (response.Status == DicomStatus.Success)
|
||||||
|
{
|
||||||
find.IsTestOK = true;
|
find.IsTestOK = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
find.IsTestOK = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
await client.AddRequestAsync(request);
|
||||||
|
|
||||||
|
|
||||||
|
await client.SendAsync();
|
||||||
|
|
||||||
|
|
||||||
await _dicomAERepository.SaveChangesAsync();
|
await _dicomAERepository.SaveChangesAsync();
|
||||||
|
|
||||||
return true;
|
|
||||||
|
|
||||||
|
return find.IsTestOK;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
|
@ -47,6 +47,7 @@ using Microsoft.Extensions.Logging;
|
||||||
using DocumentFormat.OpenXml.Wordprocessing;
|
using DocumentFormat.OpenXml.Wordprocessing;
|
||||||
using System;
|
using System;
|
||||||
using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
|
using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
|
||||||
|
using DocumentFormat.OpenXml.Vml.Office;
|
||||||
|
|
||||||
|
|
||||||
namespace IRaCIS.Application.Services
|
namespace IRaCIS.Application.Services
|
||||||
|
@ -62,7 +63,7 @@ namespace IRaCIS.Application.Services
|
||||||
IRepository<SubejctVisitDownload> _subejctVisitDownloadRepository,
|
IRepository<SubejctVisitDownload> _subejctVisitDownloadRepository,
|
||||||
IRepository<SCPImageUpload> _SCPImageUploadRepository,
|
IRepository<SCPImageUpload> _SCPImageUploadRepository,
|
||||||
IRepository<User> _userRepository,
|
IRepository<User> _userRepository,
|
||||||
|
ILogger<PatientService> _logger,
|
||||||
IDistributedLockProvider _distributedLockProvider, IMapper _mapper, IUserInfo _userInfo, IWebHostEnvironment _hostEnvironment, IStringLocalizer _localizer
|
IDistributedLockProvider _distributedLockProvider, IMapper _mapper, IUserInfo _userInfo, IWebHostEnvironment _hostEnvironment, IStringLocalizer _localizer
|
||||||
|
|
||||||
|
|
||||||
|
@ -2978,7 +2979,7 @@ namespace IRaCIS.Application.Services
|
||||||
var canParce = DateTime.TryParseExact(response.Dataset?.GetSingleValueOrDefault<string>(DicomTag.PatientBirthDate, ""), "yyyyMMdd", null, System.Globalization.DateTimeStyles.None, out DateTime birthDate);
|
var canParce = DateTime.TryParseExact(response.Dataset?.GetSingleValueOrDefault<string>(DicomTag.PatientBirthDate, ""), "yyyyMMdd", null, System.Globalization.DateTimeStyles.None, out DateTime birthDate);
|
||||||
|
|
||||||
// 格式化为你需要的日期格式,例如:yyyy-MM-dd
|
// 格式化为你需要的日期格式,例如:yyyy-MM-dd
|
||||||
string formattedBirthDate = canParce? birthDate.ToString("yyyy-MM-dd"):string.Empty;
|
string formattedBirthDate = canParce ? birthDate.ToString("yyyy-MM-dd") : string.Empty;
|
||||||
|
|
||||||
|
|
||||||
result.Add(new SCUStudyView()
|
result.Add(new SCUStudyView()
|
||||||
|
@ -3102,6 +3103,14 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
if (find != null)
|
if (find != null)
|
||||||
{
|
{
|
||||||
|
DicomCMoveRequest.ResponseDelegate responseDelegate = (req, response) =>
|
||||||
|
{
|
||||||
|
if(response.Status.State == DicomState.Failure)
|
||||||
|
{
|
||||||
|
_logger.LogError($" {response.SOPClassUID.ToJsonNotIgnoreNull()}");
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
var task = Task.Run(async () =>
|
var task = Task.Run(async () =>
|
||||||
{
|
{
|
||||||
|
@ -3112,13 +3121,21 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
foreach (var item in inCommand.StudyInstanceUIDList)
|
foreach (var item in inCommand.StudyInstanceUIDList)
|
||||||
{
|
{
|
||||||
cmoveRequestList.Add(new DicomCMoveRequest(hirServer.CalledAE, item));
|
|
||||||
|
var cmoveRequest = new DicomCMoveRequest(hirServer.CalledAE, item);
|
||||||
|
|
||||||
|
cmoveRequest.OnResponseReceived += responseDelegate;
|
||||||
|
|
||||||
|
|
||||||
|
cmoveRequestList.Add(cmoveRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
await client.AddRequestsAsync(cmoveRequestList);
|
await client.AddRequestsAsync(cmoveRequestList);
|
||||||
await client.SendAsync();
|
await client.SendAsync();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//await task;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ResponseOutput.Ok();
|
return ResponseOutput.Ok();
|
||||||
|
|
Loading…
Reference in New Issue