Working with DICOM Associate Connections
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, or Patient Study Query Find Class
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 the 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 functions 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.
To create a DICOM Associate object, use the following functions:
LDicomAssociate::LDicomAssociate
LEADTOOLS provides the following functions for sending messages to establish a DICOM Associate connection:
LDicomNet::SendAssociateRequest
LDicomNet::SendAssociateAccept
LDicomNet::SendAssociateReject
LDicomNet::OnReceiveAssociateRequest
LDicomNet::OnReceiveAssociateAccept
LDicomNet::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 LDicomAssociate::IsAsyncOperations function 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 LDicomAssociate::SetAsyncOperations.
To determine the number of Asynchronous Operations that may be invoked without a response, call LDicomAssociate::GetInvokedOperations. To determine the number of operations that have been completed, call LDicomAssociate::GetPerformedOperations.
To close a DICOM Associate connection, use the following message sending functions:
LDicomNet::SendReleaseResponse
LDicomNet::OnReceiveReleaseRequest
LDicomNet::OnReceiveReleaseResponse
When modifying a DICOM Associate object, use the following functions:
LDicomAssociate::SetApplication
LDicomAssociate::SetPresentation
LDicomAssociate::AddPresentation
LDicomAssociate::DelPresentation
LDicomAssociate::SetImplementClass
LDicomAssociate::SetAsyncOperations
LDicomAssociate::SetRoleSelect
LDicomAssociate::SetImplementVersion
To retrieve information about a DICOM Associate object, use the following:
LDicomAssociate::GetApplication
LDicomAssociate::GetPresentationCount
LDicomAssociate::GetPresentation
LDicomAssociate::GetTransferCount
LDicomAssociate::IsAsyncOperations
LDicomAssociate::IsImplementClass
LDicomAssociate::GetImplementClass
LDicomAssociate::GetInvokedOperations
LDicomAssociate::GetPerformedOperations
LDicomAssociate::GetProviderRole
LDicomAssociate::IsImplementVersion
LDicomAssociate::GetImplementVersion
LDicomAssociate::GetUserInfoCount
LDicomAssociate::GetTypeUserInfo
LDicomAssociate::GetLengthUserInfo
LDicomAssociate::GetDataUserInfo