From 7b456c90085c124cbd2836a9495aca8ca1a97b4f Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Thu, 17 Jul 2025 14:34:04 +0800 Subject: [PATCH] =?UTF-8?q?pacs=20server=20=E4=BD=BF=E7=94=A8c-find=20?= =?UTF-8?q?=E5=85=B6=E4=BB=96=E7=9A=84c-echo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Visit/DicomAEService.cs | 71 +++++++++++++------ 1 file changed, 49 insertions(+), 22 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Visit/DicomAEService.cs b/IRaCIS.Core.Application/Service/Visit/DicomAEService.cs index 411eb39f1..f7ede2370 100644 --- a/IRaCIS.Core.Application/Service/Visit/DicomAEService.cs +++ b/IRaCIS.Core.Application/Service/Visit/DicomAEService.cs @@ -20,13 +20,13 @@ namespace IRaCIS.Core.Application.Service /// DicomAEService /// [ApiExplorerSettings(GroupName = "Common")] - public class DicomAEService (IRepository _dicomAERepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, IDicomAEService + public class DicomAEService(IRepository _dicomAERepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, IDicomAEService { - + [HttpPost] - public async Task>> GetDicomAEList(DicomAEQuery inQuery) + public async Task>> GetDicomAEList(DicomAEQuery inQuery) { var dicomAEQueryable = _dicomAERepository @@ -53,7 +53,7 @@ namespace IRaCIS.Core.Application.Service { var verifyExp1 = new EntityVerifyExp() { - VerifyExp = u => u.IP == addOrEditDicomAE.IP && u.Port == addOrEditDicomAE.Port && u.PacsTypeEnum==addOrEditDicomAE.PacsTypeEnum, + VerifyExp = u => u.IP == addOrEditDicomAE.IP && u.Port == addOrEditDicomAE.Port && u.PacsTypeEnum == addOrEditDicomAE.PacsTypeEnum, VerifyMsg = _localizer["DicomAE_RepeatIPAndPort"] //"不允许添加相同的IP和端口的记录" }; @@ -106,39 +106,66 @@ namespace IRaCIS.Core.Application.Service client.NegotiateAsyncOps(); - client.ServiceOptions.RequestTimeout = TimeSpan.FromSeconds(5); - - var request = new DicomCFindRequest(DicomQueryRetrieveLevel.Study) + if (find.PacsTypeEnum == PacsType.PacsServer) { - OnResponseReceived = (req, response) => + client.ServiceOptions.RequestTimeout = TimeSpan.FromSeconds(5); + + var request = new DicomCFindRequest(DicomQueryRetrieveLevel.Study) { - //Console.WriteLine($"C-Find Response: {response.Status}"); - - if (response.Status == DicomStatus.Success) + OnResponseReceived = (req, response) => { - find.IsTestOK = true; + Console.WriteLine($"C-Find Response: {response.Status}"); + + if (response.Status == DicomStatus.Success) + { + find.IsTestOK = true; + } + else + { + find.IsTestOK = false; + } } - else + }; + + // 设置你要查询的条件(比如 PatientID) + request.Dataset.Add(DicomTag.PatientID, "TEST123"); + + await client.AddRequestAsync(request); + } + else + { + client.ServiceOptions.RequestTimeout = TimeSpan.FromSeconds(3); + + var request = new DicomCEchoRequest + { + OnResponseReceived = (req, response) => { - find.IsTestOK = false; + Console.WriteLine($"C-ECHO Response: {response.Status}"); + + if (response.Status == DicomStatus.Success) + { + find.IsTestOK = true; + } + else + { + find.IsTestOK = false; + } } - } - }; + }; - // 设置你要查询的条件(比如 PatientID) - request.Dataset.Add(DicomTag.PatientID, "TEST123"); + await client.AddRequestAsync(request); + } - await client.AddRequestAsync(request); - - await client.SendAsync(); + + await client.SendAsync(); await _dicomAERepository.SaveChangesAsync(); - return find.IsTestOK; + return find.IsTestOK; } catch (Exception ex) {