LEADTOOLS For .NET Class Library Send comments on this topic. | Back to Introduction - All Topics | Help Version 17.0.3.28
Moving Composite Data

Moving data from one AE to another AE may require several sub-operations to take place in order to accomplish the task. The following is an example showing the types of sub-operations that may be required in a simple C-MOVE-REQ.

In the following example, four AEs will be involved as follows:

AE

Role

Action

A

SCU

Sends the C-MOVE-REQ message.

B

SCP/SCU

Receives the C-MOVE-REQ message and controls the move.

C

SCP

Currently stores the data to be moved.

D

SCP

Will store the moved data at the completion of the move.

This process will be broken down into six steps, as shown in the diagram above. These steps are given in the table below. Please note that the use of priority, status, dataSet, etc., throughout the steps below does not imply equivalence. The point of this table is to show possible sub-operations that may be called, and how the message IDs are used to track responses.

Step

Method Call

Explanation

1

DicomNet.SendCMoveRequest(presentationID, 1, affectedClass, priority, "D", dataSet)

A sends this call to B. The second parameter is the message number for this AE's messages. This is the first message sent by A. A wants to move the Data Set specified by dataSet to D, as indicated in the sixth parameter.

2

DicomNet.SendCGetRequest(presentationID, 1, affectedClass, priority, dataSet)

B sends this call to C. B must retrieve the data indicated by dataSet, in order to store it on D. The second parameter indicates that this is the first message sent by B. When C responds with DicomNet.SendCGetResponse, it will refer to this message ID. That way B knows which message (command) has been completed.

3

DicomNet.SendCGetResponse(presentationID, 1, affectedClass, status, remaining, completed, failed, warning, dataSet)

C sends this call to B. This sends the requested data to B in dataSet. The second parameter indicates that this is a response to the first message sent by B. This way B knows the response to DicomNet.SendCGetRequest (step 2) has been received.

4

DicomNet.SendCStoreRequest(presentationID, 2, affectedClass, instance, priority, "A", 1, dataSet)

B sends this call to D. B must determine whether D is capable of storing the data. The second parameter indicates that this is the second message sent by B. The sixth parameter indicates that A placed the original C-MOVE-REQ. The seventh parameter indicates that the original message sent by A, requesting the move, was message number 1. The Data Set to be stored is in dataSet.

5

DicomNet.SendCStoreResponse(presentationID, 2, affectedClass, instance, status)

D sends this call to B. The second parameter indicates that this is in response to the second message sent by B.

6

DicomNet.SendCMoveResponse(presentationID, 1, affectedClass, status, remaining, completed, failed, warning, dataSet)

B sends this call to A. The second parameter indicates that this is in response to the first message sent by A. At this point the move has been completed, and the data is now stored on D.