配置从数据库取,同时返回控制开关
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
3328c18279
commit
46ab1fc7bc
|
|
@ -36,9 +36,6 @@ namespace IRaCIS.Core.SCP.Service
|
||||||
{
|
{
|
||||||
public bool IsSupportThirdService { get; set; }
|
public bool IsSupportThirdService { get; set; }
|
||||||
|
|
||||||
public List<ThirdDestinationAE> ThirdDestinationAEList { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
public List<string> CalledAEList { get; set; }
|
public List<string> CalledAEList { get; set; }
|
||||||
|
|
||||||
public string ServerPort { get; set; }
|
public string ServerPort { get; set; }
|
||||||
|
|
@ -77,6 +74,8 @@ namespace IRaCIS.Core.SCP.Service
|
||||||
|
|
||||||
private bool _isCurrentThirdForward = false;
|
private bool _isCurrentThirdForward = false;
|
||||||
|
|
||||||
|
private List<ThirdDestinationAE> ThirdDestinationAEList { get; set; }
|
||||||
|
|
||||||
|
|
||||||
private static readonly DicomTransferSyntax[] _acceptedTransferSyntaxes = new DicomTransferSyntax[]
|
private static readonly DicomTransferSyntax[] _acceptedTransferSyntaxes = new DicomTransferSyntax[]
|
||||||
{
|
{
|
||||||
|
|
@ -132,8 +131,11 @@ namespace IRaCIS.Core.SCP.Service
|
||||||
|
|
||||||
var _dicomAERepository = _serviceProvider.GetService<IRepository<DicomAE>>();
|
var _dicomAERepository = _serviceProvider.GetService<IRepository<DicomAE>>();
|
||||||
|
|
||||||
var aeList = _dicomAERepository/*.Where(t => t.PacsTypeEnum == PacsType.PacsServer)*/.Select(t => t.CalledAE).ToList();
|
|
||||||
|
|
||||||
|
ThirdDestinationAEList = _dicomAERepository.Where(t => t.PacsTypeEnum == PacsType.Destination).Select(t => new ThirdDestinationAE() { IP = t.IP, Port = t.Port, Name = t.CalledAE }).ToList();
|
||||||
|
|
||||||
|
|
||||||
|
var aeList = _dicomAERepository/*.Where(t => t.PacsTypeEnum == PacsType.PacsServer)*/.Select(t => t.CalledAE).ToList();
|
||||||
|
|
||||||
var list = _hospitalGroupRepository.Where(t => t.IsEnable).ToList();
|
var list = _hospitalGroupRepository.Where(t => t.IsEnable).ToList();
|
||||||
|
|
||||||
|
|
@ -330,7 +332,7 @@ namespace IRaCIS.Core.SCP.Service
|
||||||
var cmoveInfo = _cmoveStudyRepository.Where(t => t.StudyInstanceUIDList.Any(c => c == studyInstanceUid)).OrderByDescending(t => t.CreateTime).FirstOrDefault();
|
var cmoveInfo = _cmoveStudyRepository.Where(t => t.StudyInstanceUIDList.Any(c => c == studyInstanceUid)).OrderByDescending(t => t.CreateTime).FirstOrDefault();
|
||||||
|
|
||||||
//确定是第三方请求
|
//确定是第三方请求
|
||||||
if (cmoveInfo != null && DicomSCPServiceConfig.ThirdDestinationAEList.Any(t => t.Name == cmoveInfo.DestinationAE))
|
if (cmoveInfo != null && ThirdDestinationAEList.Any(t => t.Name == cmoveInfo.DestinationAE))
|
||||||
{
|
{
|
||||||
_isCurrentThirdForward = true;
|
_isCurrentThirdForward = true;
|
||||||
|
|
||||||
|
|
@ -339,7 +341,7 @@ namespace IRaCIS.Core.SCP.Service
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var findDestination = DicomSCPServiceConfig.ThirdDestinationAEList.FirstOrDefault(t => t.Name == cmoveInfo.DestinationAE);
|
var findDestination = ThirdDestinationAEList.FirstOrDefault(t => t.Name == cmoveInfo.DestinationAE);
|
||||||
|
|
||||||
var forwardRequest = new DicomCStoreRequest(request.File.Clone());
|
var forwardRequest = new DicomCStoreRequest(request.File.Clone());
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,19 +25,6 @@
|
||||||
},
|
},
|
||||||
"DicomSCPServiceConfig": {
|
"DicomSCPServiceConfig": {
|
||||||
"IsSupportThirdService": true,
|
"IsSupportThirdService": true,
|
||||||
|
|
||||||
"ThirdDestinationAEList": [
|
|
||||||
{
|
|
||||||
"Name": "LYAE",
|
|
||||||
"IP": "192.168.3.194",
|
|
||||||
"Port": "6000"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Name": "HIRLAE",
|
|
||||||
"IP": "192.168.3.194",
|
|
||||||
"Port": "6000"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"CalledAEList": [
|
"CalledAEList": [
|
||||||
"HIRAE",
|
"HIRAE",
|
||||||
"STORESCP"
|
"STORESCP"
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ using DocumentFormat.OpenXml.Bibliography;
|
||||||
using FellowOakDicom;
|
using FellowOakDicom;
|
||||||
using FellowOakDicom.Network;
|
using FellowOakDicom.Network;
|
||||||
using FellowOakDicom.Network.Client;
|
using FellowOakDicom.Network.Client;
|
||||||
|
using IRaCIS.Core.Application.Contracts;
|
||||||
using IRaCIS.Core.Domain.Models;
|
using IRaCIS.Core.Domain.Models;
|
||||||
using IRaCIS.Core.Infra.EFCore;
|
using IRaCIS.Core.Infra.EFCore;
|
||||||
using IRaCIS.Core.Infrastructure.Extention;
|
using IRaCIS.Core.Infrastructure.Extention;
|
||||||
|
|
@ -20,18 +21,7 @@ using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace IRaCIS.Core.API.HostService
|
namespace IRaCIS.Core.API.HostService
|
||||||
{
|
{
|
||||||
public class DicomSCPServiceOption
|
|
||||||
{
|
|
||||||
public bool IsSupportThirdService { get; set; }
|
|
||||||
|
|
||||||
public string ThirdSearchPacsAE { get; set; }
|
|
||||||
|
|
||||||
public string ThirdCallningAE { get; set; }
|
|
||||||
|
|
||||||
public List<string> CalledAEList { get; set; }
|
|
||||||
|
|
||||||
public string ServerPort { get; set; }
|
|
||||||
}
|
|
||||||
public class DicomSCPService : DicomService, IDicomServiceProvider, IDicomCFindProvider, IDicomCEchoProvider, IDicomCMoveProvider
|
public class DicomSCPService : DicomService, IDicomServiceProvider, IDicomCFindProvider, IDicomCEchoProvider, IDicomCMoveProvider
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ using System.Reflection;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using FellowOakDicom.Imaging.NativeCodec;
|
using FellowOakDicom.Imaging.NativeCodec;
|
||||||
using FellowOakDicom.Imaging;
|
using FellowOakDicom.Imaging;
|
||||||
|
using IRaCIS.Core.Application.Contracts;
|
||||||
|
|
||||||
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
|
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
|
||||||
AppContext.SetSwitch("Npgsql.DisableDateTimeInfinityConversions", true);
|
AppContext.SetSwitch("Npgsql.DisableDateTimeInfinityConversions", true);
|
||||||
|
|
|
||||||
|
|
@ -13857,7 +13857,7 @@
|
||||||
DicomAEService
|
DicomAEService
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</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,Microsoft.Extensions.Localization.IStringLocalizer)">
|
<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,Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Application.Contracts.DicomSCPServiceOption})">
|
||||||
<summary>
|
<summary>
|
||||||
DicomAEService
|
DicomAEService
|
||||||
</summary>
|
</summary>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace IRaCIS.Core.Application.Contracts
|
||||||
|
{
|
||||||
|
public class DicomSCPServiceOption
|
||||||
|
{
|
||||||
|
public bool IsSupportThirdService { get; set; }
|
||||||
|
|
||||||
|
public string ThirdSearchPacsAE { get; set; }
|
||||||
|
|
||||||
|
public string ThirdCallningAE { get; set; }
|
||||||
|
|
||||||
|
public List<string> CalledAEList { get; set; }
|
||||||
|
|
||||||
|
public string ServerPort { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -14,13 +14,15 @@ using IRaCIS.Application.Contracts;
|
||||||
using IRaCIS.Core.Domain.Share;
|
using IRaCIS.Core.Domain.Share;
|
||||||
using IRaCIS.Core.Infrastructure;
|
using IRaCIS.Core.Infrastructure;
|
||||||
using FellowOakDicom;
|
using FellowOakDicom;
|
||||||
|
using Microsoft.Extensions.Options;
|
||||||
|
using IRaCIS.Core.Application.Contracts;
|
||||||
namespace IRaCIS.Core.Application.Service
|
namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DicomAEService
|
/// DicomAEService
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[ApiExplorerSettings(GroupName = "Common")]
|
[ApiExplorerSettings(GroupName = "Common")]
|
||||||
public class DicomAEService(IRepository<DicomAE> _dicomAERepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, IDicomAEService
|
public class DicomAEService(IRepository<DicomAE> _dicomAERepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer, IOptionsMonitor<DicomSCPServiceOption> _dicomSCPServiceOption) : BaseService, IDicomAEService
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -45,7 +47,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
var pageList = await dicomAEQueryable.ToPagedListAsync(inQuery, nameof(DicomAEView.CalledAE));
|
var pageList = await dicomAEQueryable.ToPagedListAsync(inQuery, nameof(DicomAEView.CalledAE));
|
||||||
|
|
||||||
|
|
||||||
return ResponseOutput.Ok(pageList);
|
return ResponseOutput.Ok(pageList, _dicomSCPServiceOption.CurrentValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -54,5 +54,7 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
HIRClient = 1,
|
HIRClient = 1,
|
||||||
|
|
||||||
PacsServer = 2,
|
PacsServer = 2,
|
||||||
|
|
||||||
|
Destination=3
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue