Once a DICOM Network has been established, the Network connection must be associated. This is also referred to as establishing a DICOM Associate connection. The DICOM Associate connection serves to establish how the two AEs will communicate and the nature of the data that will be transferred. For example, the DICOM Associate connection can establish the following:
-
The organization of the data – Little Endian vs Big Endian, Implicit VR vs Explicit VR.
-
Compression type.
-
The type of data that will be transferred – CT Image Storage Class, Printer Class, Patient Study Query Find Class, etc.
-
The role of a connection member – SCU, SCP, or both.
-
Maximum size of the data "chunk" to be sent, if a maximum exists.
-
Whether or not asynchronous operations are allowed.
-
The presence of some user-defined information.
An SCU requests the creation of an Associate connection with an SCP with which it has established a DICOM Network connection (not yet associated). The SCU sends the SCP an Associate Request message outlining the data it wishes to transfer, and how the transfer can occur. The SCP can accept or reject the Associate connection request, based on whether or not the SCP supports the data and communication characteristics outlined by the SCU. If the connection is accepted, the DICOM Associate connection is established and the two AEs can begin transferring messages and data.
In this documentation a DICOM connection which has been associated will be referred to as a DICOM Associate connection or a DICOM Associate. Information concerning the nature of the DICOM Associate Network will be maintained in and accessed through a DICOM Associate object.
LEADTOOLS provides a number of class members for creating a DICOM Associate connection, modifying a DICOM Associate object and retrieving information about a DICOM Associate connection.
Creating a DICOM Associate connection consists of creating the DICOM Associate object that outlines the characteristics of the transfer and sending messages to request, accept or reject a DICOM Associate connection.
The method DicomAssociate.Default can be used to set the default values for the DICOM Associate object.
LEADTOOLS provides the following methods for sending messages to establish a DICOM Associate connection:
DicomNet.OnReceiveAssociateRequest
DicomNet.OnReceiveAssociateAccept
DicomNet.OnReceiveAssociateReject
If a DICOM Associate connection does not support Asynchronous Operations, then an Application Entity must wait for the response from one message before sending another. Use the DicomAssociate.IsAsynchronousOperations property to determine whether asynchronous operations are supported. If Asynchronous Operations are supported, multiple messages may be sent without waiting for a response. The number of messages that may be sent is set using DicomAssociate.SetAsynchronousOperations.
To determine the number of Asynchronous Operations that may be invoked without a response, check the DicomAssociate.InvokedOperationsCount property. To determine the number of operations that have been completed, check the DicomAssociate.PerformedOperationsCount property.
To close a DICOM Associate connection, use the following message sending methods:
DicomNet.OnReceiveReleaseRequest
DicomNet.OnReceiveReleaseResponse
When modifying a DICOM Associate object, use the following class members:
DicomAssociate.ApplicationContextName
DicomAssociate.SetPresentationContextID
DicomAssociate.AddPresentationContext
DicomAssociate.DeletePresentation
DicomAssociate.SetAsynchronousOperations
DicomAssociate.ImplementationVersionName
DicomAssociate.SetUserInformation
DicomAssociate.AddUserInformation
DicomAssociate.DeleteUserInformation
DicomAssociate.SetExtendedData
To retrieve information about a DICOM Associate object, use the following:
DicomAssociate.ApplicationContextName
DicomAssociate.PresentationContextCount
DicomAssociate.GetPresentationContextID
DicomAssociate.GetTransferCount
DicomAssociate.IsAsynchronousOperations
DicomAssociate.InvokedOperationsCount
DicomAssociate.PerformedOperationsCount
DicomAssociate.GetProviderRole
DicomAssociate.ImplementationVersionName
DicomAssociate.UserInformationCount
DicomAssociate.GetUserInformationType
DicomAssociate.GetUserInformationDataLength
DicomAssociate.GetUserInformationData
DicomAssociate.GetUserInformationDataPtr
DicomAssociate.GetExtendedDataLength