Allows implementors to support DICOM role selection features in an add-in.
public interface IRoleSelectionProvider : IExtendedPresentationContextProvider, IPresentationContextProvider Public Interface IRoleSelectionProviderInherits IExtendedPresentationContextProvider, IPresentationContextProvider
public:interface class IRoleSelectionProvider abstract : IExtendedPresentationContextProvider, IPresentationContextProvider
Role selection occurs during DICOM Association negotiation between an SCU and an SCP. Role selection is of particular interest in the following DICOM classes:
In the PACS Framework, Role Selection can be specified in two ways:
For more information, see RoleSelectionFlags.
For example usage, see the Leadtools.Medical.Storage.AddIns.dll sample.
This example shows a basic PACS Framework add-in that implements the IRoleSelectionProvider interface.
using Leadtools.Dicom.AddIn.Attributes;using Leadtools.Dicom.AddIn.Interfaces;using Leadtools.Dicom;using Leadtools.Dicom.AddIn;public class RoleSelectionProviderAddin : IRoleSelectionProvider{private List<string> _acceptUserProviderProposedList = new List<string>();public RoleSelectionProviderAddin(){// Storage Commitment classes_acceptUserProviderProposedList.Add(DicomUidType.StorageCommitmentPullModelClass);_acceptUserProviderProposedList.Add(DicomUidType.StorageCommitmentPullModelInstance);_acceptUserProviderProposedList.Add(DicomUidType.StorageCommitmentPushModelClass);_acceptUserProviderProposedList.Add(DicomUidType.StorageCommitmentPushModelInstance);// Procedure Step SOP Classes_acceptUserProviderProposedList.Add(DicomUidType.GeneralPurposePerformedProcedureStepSopClass);_acceptUserProviderProposedList.Add(DicomUidType.GeneralPurposeScheduledProcedureStepSopClass);// Media Creation Management Service Class_acceptUserProviderProposedList.Add(DicomUidType.MediaCreationManagement);// C-MOVE_acceptUserProviderProposedList.Add(DicomUidType.PatientRootQueryMove);_acceptUserProviderProposedList.Add(DicomUidType.PatientStudyQueryMove);_acceptUserProviderProposedList.Add(DicomUidType.StudyRootQueryMove);// C-GET_acceptUserProviderProposedList.Add(DicomUidType.PatientRootQueryGet);_acceptUserProviderProposedList.Add(DicomUidType.PatientStudyQueryGet);_acceptUserProviderProposedList.Add(DicomUidType.StudyRootQueryGet);}public DicomClient Client{private get;set;}public ExtendedNegotiation GetExtended(string abstractSyntax){return ExtendedNegotiation.None;}public RoleSelectionFlags GetRoleSelection(string abstractSyntax){RoleSelectionFlags roleSelectionFlags = RoleSelectionFlags.Disabled;if (_acceptUserProviderProposedList.Contains(abstractSyntax)){roleSelectionFlags = RoleSelectionFlags.AcceptAllProposed;}return roleSelectionFlags;}public bool IsAbstractSyntaxSupported(string abstractSyntax){bool supported = _acceptUserProviderProposedList.Contains(abstractSyntax) || (abstractSyntax == DicomUidType.VerificationClass);return supported;}public bool IsTransferSyntaxSupported(string abstractSyntax, string transferSyntax){bool supported = (transferSyntax == DicomUidType.ExplicitVRLittleEndian ||transferSyntax == DicomUidType.ExplicitVRBigEndian ||transferSyntax == DicomUidType.ImplicitVRLittleEndian);return supported;}}
Imports Leadtools.Dicom.AddIn.AttributesImports Leadtools.Dicom.AddIn.InterfacesImports Leadtools.DicomImports Leadtools.Dicom.AddInPublic Class RoleSelectionProviderAddinImplements IRoleSelectionProviderPrivate _acceptUserProviderProposedList As New List(Of String)()Public Sub New()' Storage Commitment classes_acceptUserProviderProposedList.Add(DicomUidType.StorageCommitmentPullModelClass)_acceptUserProviderProposedList.Add(DicomUidType.StorageCommitmentPullModelInstance)_acceptUserProviderProposedList.Add(DicomUidType.StorageCommitmentPushModelClass)_acceptUserProviderProposedList.Add(DicomUidType.StorageCommitmentPushModelInstance)' Procedure Step SOP Classes_acceptUserProviderProposedList.Add(DicomUidType.GeneralPurposePerformedProcedureStepSopClass)_acceptUserProviderProposedList.Add(DicomUidType.GeneralPurposeScheduledProcedureStepSopClass)' Media Creation Management Service Class_acceptUserProviderProposedList.Add(DicomUidType.MediaCreationManagement)' C-MOVE_acceptUserProviderProposedList.Add(DicomUidType.PatientRootQueryMove)_acceptUserProviderProposedList.Add(DicomUidType.PatientStudyQueryMove)_acceptUserProviderProposedList.Add(DicomUidType.StudyRootQueryMove)' C-GET_acceptUserProviderProposedList.Add(DicomUidType.PatientRootQueryGet)_acceptUserProviderProposedList.Add(DicomUidType.PatientStudyQueryGet)_acceptUserProviderProposedList.Add(DicomUidType.StudyRootQueryGet)End SubPrivate privateClient As DicomClientPublic Property Client() As DicomClient Implements IExtendedPresentationContextProvider.ClientPrivate GetReturn privateClientEnd GetSet(ByVal value As DicomClient)privateClient = valueEnd SetEnd PropertyPublic Function GetExtended(ByVal abstractSyntax As String) As ExtendedNegotiation Implements IExtendedPresentationContextProvider.GetExtendedReturn ExtendedNegotiation.NoneEnd FunctionPublic Function GetRoleSelection(ByVal abstractSyntax As String) As RoleSelectionFlags Implements IRoleSelectionProvider.GetRoleSelectionDim roleSelectionFlags As RoleSelectionFlags = RoleSelectionFlags.DisabledIf _acceptUserProviderProposedList.Contains(abstractSyntax) ThenroleSelectionFlags = RoleSelectionFlags.AcceptAllProposedEnd IfReturn roleSelectionFlagsEnd FunctionPublic Function IsAbstractSyntaxSupported(ByVal abstractSyntax As String) As BooleanDim supported As Boolean = _acceptUserProviderProposedList.Contains(abstractSyntax) OrElse (abstractSyntax = DicomUidType.VerificationClass)Return supportedEnd FunctionPublic Function IsTransferSyntaxSupported(ByVal abstractSyntax As String, ByVal transferSyntax As String) As Boolean Implements IPresentationContextProvider.IsTransferSyntaxSupportedDim supported As Boolean = (transferSyntax = DicomUidType.ExplicitVRLittleEndian OrElse transferSyntax = DicomUidType.ExplicitVRBigEndian OrElse transferSyntax = DicomUidType.ImplicitVRLittleEndian)Return supportedEnd FunctionPrivate Function IPresentationContextProvider_IsAbstractSyntaxSupported(abstractSyntax As String) As Boolean Implements IPresentationContextProvider.IsAbstractSyntaxSupportedThrow New NotImplementedException()End FunctionEnd Class
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document
