Allows implementors to support DICOM role selection features in an add-in.
public interface IRoleSelectionProvider : 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.Attributes
Imports Leadtools.Dicom.AddIn.Interfaces
Imports Leadtools.Dicom
Imports Leadtools.Dicom.AddIn
Public Class RoleSelectionProviderAddin
Implements IRoleSelectionProvider
Private _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 Sub
Private privateClient As DicomClient
Public Property Client() As DicomClient Implements IExtendedPresentationContextProvider.Client
Private Get
Return privateClient
End Get
Set(ByVal value As DicomClient)
privateClient = value
End Set
End Property
Public Function GetExtended(ByVal abstractSyntax As String) As ExtendedNegotiation Implements IExtendedPresentationContextProvider.GetExtended
Return ExtendedNegotiation.None
End Function
Public Function GetRoleSelection(ByVal abstractSyntax As String) As RoleSelectionFlags Implements IRoleSelectionProvider.GetRoleSelection
Dim roleSelectionFlags As RoleSelectionFlags = RoleSelectionFlags.Disabled
If _acceptUserProviderProposedList.Contains(abstractSyntax) Then
roleSelectionFlags = RoleSelectionFlags.AcceptAllProposed
End If
Return roleSelectionFlags
End Function
Public Function IsAbstractSyntaxSupported(ByVal abstractSyntax As String) As Boolean
Dim supported As Boolean = _acceptUserProviderProposedList.Contains(abstractSyntax) OrElse (abstractSyntax = DicomUidType.VerificationClass)
Return supported
End Function
Public Function IsTransferSyntaxSupported(ByVal abstractSyntax As String, ByVal transferSyntax As String) As Boolean Implements IPresentationContextProvider.IsTransferSyntaxSupported
Dim supported As Boolean = (transferSyntax = DicomUidType.ExplicitVRLittleEndian OrElse transferSyntax = DicomUidType.ExplicitVRBigEndian OrElse transferSyntax = DicomUidType.ImplicitVRLittleEndian)
Return supported
End Function
Private Function IPresentationContextProvider_IsAbstractSyntaxSupported(abstractSyntax As String) As Boolean Implements IPresentationContextProvider.IsAbstractSyntaxSupported
Throw New NotImplementedException()
End Function
End 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