Search code examples
dicomdcmtk

Why can PACS return 0000,0092 values through c-move-rsp


I use dcmtk3.6.3 send c-move command to pacs.
And dcmtk receives the c-move-rsp which get an error with "(0000, 0902)".
I know the reason for the error,but I don't know Why can PACS return 0000,0092 values through c-move-rsp?
one two three As far as I know,C-move-rsp only has status 0000,0090 in dicom, and has no tag of "(0000, 0902)"

Is the error message of "(0000, 0902)" passed through c-move-rsp?


Solution

  • Well, I am not sure that the status is not correctly communicated in (0000,0900) since the most interesting part of the dcmtk output is omitted. Try to use -ll TRACE option for the movescu and look for "DIMSE Command Received:". Then you can see the original dataset sent by the C-MOVE SCP. It should read somehow like this:

    T: DIMSE Command Received:
    T:
    T: # Dicom-Data-Set
    T: # Used TransferSyntax: Little Endian Implicit
    T: (0000,0002) UI =MOVEPatientRootQueryRetrieveInformationModel #  28, 1 AffectedSOPClassUID
    T: (0000,0100) US 32801                                    #   2, 1 CommandField
    T: (0000,0120) US 1                                        #   2, 1 MessageIDBeingRespondedTo
    T: (0000,0800) US 0                                        #   2, 1 CommandDataSetType
    T: (0000,0900) US 43009                                    #   2, 1 Status
    T: (0000,1021) US 0                                        #   2, 1 NumberOfCompletedSuboperations
    T: (0000,1022) US 3                                        #   2, 1 NumberOfFailedSuboperations
    

    But since the valid status 0xa702 is correctly reported in the screenshot you posted, I strongly suspect it is present in the MOVE-SCP's response.

    However, you are correct that the attribte (0000,0902) is not allowed for that particular status code. See PS3.4, Table C.4-2. The status must always be present. Depending on the status code, additional attributes may be used to convey additional information about the status (e.g. why the operation failed or which objects were affected). The table referenced above lists which additional attributes are allowed for which status.