修改c-find 测试pacs在线与否
continuous-integration/drone/push Build is passing Details

Test_HIR_Net8
hang 2024-12-19 15:00:32 +08:00
parent 6b385b619a
commit 468224cae9
3 changed files with 44 additions and 13 deletions

View File

@ -13147,7 +13147,7 @@
DicomAEService
</summary>
</member>
<member name="M:IRaCIS.Core.Application.Service.DicomAEService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.DicomAE},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo)">
<member name="M:IRaCIS.Core.Application.Service.DicomAEService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.DicomAE},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)">
<summary>
DicomAEService
</summary>

View File

@ -97,7 +97,7 @@ namespace IRaCIS.Core.Application.Service
client.NegotiateAsyncOps();
client.ServiceOptions.RequestTimeout = TimeSpan.FromSeconds(5);
client.ServiceOptions.RequestTimeout = TimeSpan.FromSeconds(3);
var request = new DicomCEchoRequest
{

View File

@ -2914,8 +2914,34 @@ namespace IRaCIS.Application.Services
#endregion
private bool CEchoTest(DicomAE find)
{
var client = DicomClientFactory.Create(find.IP, find.Port, false, "test-callingAE", find.CalledAE);
client.NegotiateAsyncOps();
client.ServiceOptions.RequestTimeout = TimeSpan.FromSeconds(3);
var request = new DicomCEchoRequest
{
OnResponseReceived = (req, response) =>
{
if (response.Status == DicomStatus.Success)
{
find.IsTestOK = true;
}
else
{
find.IsTestOK = false;
}
}
};
return find.IsTestOK;
}
/// <summary>
/// 获取 检查列表
/// </summary>
@ -2942,9 +2968,11 @@ namespace IRaCIS.Application.Services
if (find != null)
{
//// 设置 CancellationTokenSource
//var cts = new CancellationTokenSource();
//CancellationToken token = cts.Token;
//测试失败
if (!CEchoTest(find))
{
throw new BusinessValidationFailedException(_localizer["Patient_PacsAENotOnline"]);
}
var @lock = _distributedLockProvider.CreateLock($"CFind");
@ -3034,17 +3062,20 @@ namespace IRaCIS.Application.Services
await client.AddRequestsAsync(requestList);
await client.SendAsync();
var resultInstanceUidList = result.Select(t => t.StudyInstanceUID).ToList();
var existStudyIdList = _studyRepository.Where(t => resultInstanceUidList.Contains(t.StudyInstanceUid))
.Select(t => t.StudyInstanceUid).ToList();
foreach (var item in result)
{
item.IsStudyExist = existStudyIdList.Any(t => t == item.StudyInstanceUID);
}
}
var resultInstanceUidList = result.Select(t => t.StudyInstanceUID).ToList();
var existStudyIdList = _studyRepository.Where(t => resultInstanceUidList.Contains(t.StudyInstanceUid))
.Select(t => t.StudyInstanceUid).ToList();
foreach (var item in result)
{
item.IsStudyExist = existStudyIdList.Any(t => t == item.StudyInstanceUID);
}
return ResponseOutput.Ok(result, find);