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:

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

LDicomAssociate::Default

LEADTOOLS provides the following functions for sending messages to establish a DICOM Associate connection:

LDicomNet::SendAssociateRequest

LDicomNet::SendAssociateAccept

LDicomNet::SendAssociateReject

LDicomNet::SendData

LDicomNet::OnReceiveAssociateRequest

LDicomNet::OnReceiveAssociateAccept

LDicomNet::OnReceiveAssociateReject

LDicomNet::OnSend

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::SendReleaseRequest

LDicomNet::SendReleaseResponse

LDicomNet::SendAbort

LDicomNet::OnReceiveReleaseRequest

LDicomNet::OnReceiveReleaseResponse

LDicomNet::OnReceiveAbort

When modifying a DICOM Associate object, use the following functions:

LDicomAssociate::Reset

LDicomAssociate::SetRequest

LDicomAssociate::SetVersion

LDicomAssociate::SetCalled

LDicomAssociate::SetCalling

LDicomAssociate::SetApplication

LDicomAssociate::SetPresentation

LDicomAssociate::AddPresentation

LDicomAssociate::DelPresentation

LDicomAssociate::SetResult

LDicomAssociate::SetAbstract

LDicomAssociate::SetTransfer

LDicomAssociate::AddTransfer

LDicomAssociate::DelTransfer

LDicomAssociate::SetMaxLength

LDicomAssociate::SetImplementClass

LDicomAssociate::SetAsyncOperations

LDicomAssociate::SetRoleSelect

LDicomAssociate::SetImplementVersion

LDicomAssociate::SetUserInfo

LDicomAssociate::AddUserInfo

LDicomAssociate::DelUserInfo

LDicomAssociate::SetExtended

To retrieve information about a DICOM Associate object, use the following:

LDicomAssociate::IsRequest

LDicomAssociate::GetVersion

LDicomAssociate::GetCalled

LDicomAssociate::GetCalling

LDicomAssociate::GetApplication

LDicomAssociate::GetPresentationCount

LDicomAssociate::GetPresentation

LDicomAssociate::GetResult

LDicomAssociate::GetAbstract

LDicomAssociate::GetAbstractCount

LDicomAssociate::FindAbstract

LDicomAssociate::FindNextAbstract

LDicomAssociate::GetTransferCount

LDicomAssociate::GetTransfer

LDicomAssociate::IsMaxLength

LDicomAssociate::GetMaxLength

LDicomAssociate::IsAsyncOperations

LDicomAssociate::IsImplementClass

LDicomAssociate::GetImplementClass

LDicomAssociate::GetInvokedOperations

LDicomAssociate::GetPerformedOperations

LDicomAssociate::GetUserRole

LDicomAssociate::GetProviderRole

LDicomAssociate::IsRoleSelect

LDicomAssociate::IsImplementVersion

LDicomAssociate::GetImplementVersion

LDicomAssociate::GetUserInfoCount

LDicomAssociate::GetTypeUserInfo

LDicomAssociate::GetLengthUserInfo

LDicomAssociate::GetDataUserInfo

LDicomAssociate::GetLengthExtended

LDicomAssociate::GetExtended