Diagram of an SCU-SCP Set-Up

The diagram given below shows a simple example of an SCU-SCP connection and a series of function calls used to transfer messages and data.

 

SCU

 

SCP

 

 

 

LDicomNet::StartUp

Initialize the DICOM DLL. This must be done before calling any DICOM operation functions, but only needs to be called once per application.

LDicomNet::StartUp

LDicomNet::LDicomNet

Create a DICOM Network object.

LDicomNet::LDicomNet

 

The SCP listens for incoming connection requests.

LDicomNet::Listen

LDicomNet::Connect

-------------------------------------------------->
The SCU calls this function to connect to an SCP. This generates a call to this function on the SCP

LDicomNet::OnAccept

LDicomNet::OnConnect

<--------------------------------------------------
The SCP calls LDicomNet::CreateNet for each connection it accepts. This provides the SCP memory to store information about this specific connection. LDicomNet::Accept is called to accept the connection. This generates a call to this function on the SCU.

LDicomNet::LDicomNet
LDicomNet::Accept

 

DICOM Network Connection established

 

LDicomNet::SendAssociateRequest

-------------------------------------------------->
The SCU calls this function to request a DICOM Associate connection. This generates calls to these functions on the SCP.

LDicomNet::OnReceive
LDicomNet::OnReceiveAssociateRequest

LDicomNet::OnReceive
LDicomNet::OnReceiveAssociateAccept

or
LDicomNet::OnReceive

LDicomNet::OnReceiveAssociateReject

<--------------------------------------------------
The SCP calls LDicomNet::SendAssociateAccept to accept the DICOM Associate connection. This generates calls to LDicomNet::OnReceive and LDicomNet::OnReceiveAssociateAccept on the SCU. LDicomNet::SendAssociateReject is sent to reject the DICOM Associate connection. This generates calls to LDicomNet::OnReceive and LDicomNet::OnReceiveAssociateReject on the SCU.

LDicomNet::SendAssociateAccept
or
LDicomNet::SendAssociateReject

 

DICOM Associate Connection established

 

LDicomNet::SendCStoreRequest

-------------------------------------------------->
The SCU calls this function to request the storage of data. This generates calls to these functions on the SCP.

LDicomNet::OnReceive
LDicomNet::OnReceiveData

LDicomNet::OnReceiveCStoreRequest

LDicomNet::OnReceive
LDicomNet::OnReceiveData

LDicomNet::OnReceiveCStoreResponse

<--------------------------------------------------
The SCP calls this function to respond to the storage request. This generates calls to these functions on the SCU.

LDicomNet::SendCStoreResponse

LDicomNet::SendReleaseRequest
or
LDicomNet::SendAbort

-------------------------------------------------->
The SCP calls LDicomNet::SendReleaseRequest to request a release from the DICOM Associate connection. This generates calls to LDicomNet::OnReceive and LDicomNet::OnReceiveReleaseRequest on the SCP. This is the preferred method of closing a connection. LDicomNet::SendAbort can also be sent to close a connection. This generates calls to LDicomNet::OnReceive and LDicomNet::OnReceiveAbort on the SCP.

LDicomNet::OnReceive
LDicomNet::OnReceiveReleaseRequest

or
LDicomNet::OnReceive

LDicomNet::OnReceiveAbort

LDicomNet::OnReceive
LDicomNet::OnReceiveReleaseResponse

<--------------------------------------------------
The SCP calls this function to respond to the release request. This generates calls to the following functions on the SCU.

LDicomNet::SendReleaseResponse

LDicomNet::Close

--------------------------------------------------->
The SCU calls this function to close the DICOM Associate connection. This generates a call to this function on the SCP.

LDicomNet::OnClose

LDicomNet::ShutDown

When the DICOM DLL is no longer needed, call this function to shut down the DLL and free all associated memory. This function should be called once for every call to LDicomNet::StartUp.

LDicomNet::ShutDown