DIMSE servicesevery command on one page

DIMSE is the set of commands that DICOM devices send each other inside an association. There are twelve of them. This page lists each one with its command field, what it carries and who uses it, plus the command elements and status codes you meet in logs and traces.

DIMSE-C services: composite objects and queries

Used for images, structured reports and other composite SOP Instances, and for searching and retrieving them. Every service except C-CANCEL is confirmed: the request gets a response.

ServiceCommand FieldWhat it doesRequest carriesResponse carriesUsed by
C-STORE0001 request, 8001 responseSends one composite SOP Instance (an image or another object) to the peer for storage.The SOP Instance as a data set. Command elements: Affected SOP Class UID, Affected SOP Instance UID, Priority. Optionally the Move Originator AE and Message ID.Status only: 0000, a warning (Bxxx) or a failure (A7xx, A9xx, Cxxx).Storage service class. Also the sub-operations of C-MOVE and C-GET.
C-FIND0020 request, 8020 responseMatches a set of attributes against the instances the peer holds and returns the matches.An Identifier: matching keys with values, and return keys left empty. Priority is mandatory.One response per match with status FF00 (or FF01) and an Identifier, then a final response with 0000 and no Identifier.Query/Retrieve, Modality Worklist, and the UPS services (Pull, Watch, Query).
C-GET0010 request, 8010 responseFinds matching instances and retrieves them, with C-STORE sub-operations on the same association.An Identifier with the unique keys of what to retrieve. Priority is mandatory.Optional pending responses (FF00) with the counts of remaining, completed, failed and warning sub-operations, then a final response.Query/Retrieve.
C-MOVE0021 request, 8021 responseFinds matching instances and has the peer send them to a named AE, with C-STORE sub-operations on a separate association.An Identifier, plus the Move Destination AE title (0000,0600). Priority is mandatory.Optional pending responses (FF00) with the sub-operation counts, then a final response. Cancel, failure and warning responses list the failed instances.Query/Retrieve.
C-ECHO0030 request, 8030 responseVerifies end-to-end communication with the peer.Nothing: no data set. Just the Affected SOP Class UID (Verification).Status only, normally 0000.Verification service class.
C-CANCEL0FFF (request only)Asks the peer to stop a C-FIND, C-GET or C-MOVE that is still running. It is C-CANCEL-FIND, C-CANCEL-GET or C-CANCEL-MOVE depending on the operation.Message ID Being Responded To, set to the Message ID of the operation to stop. No data set.No response of its own. The stopped operation ends with status FE00 (cancel).Query/Retrieve and the other C-FIND users.

The Command Field of a response is the request value with bit 15 set: 0001 gives 8001, 0020 gives 8020. C-CANCEL has no response value.

DIMSE-N services: managed objects

Used for managed SOP Instances that are created, changed and queried over time, such as a performed procedure step, a storage commitment request or a film session. The request names its target with the Requested SOP Class UID and Requested SOP Instance UID, except N-CREATE and N-EVENT-REPORT, which use the Affected ones.

ServiceCommand FieldWhat it doesRequest carriesResponse carriesUsed by
N-CREATE0140 request, 8140 responseAsks the peer to create a new managed SOP Instance and register its identity.Affected SOP Class UID (mandatory), Affected SOP Instance UID (optional: the peer assigns one if it is left out), an Attribute List (optional).Status. On success it returns the Affected SOP Instance UID if the sender did not supply one, and optionally the complete Attribute List that was assigned.Modality Performed Procedure Step, Instance Availability Notification, Print Management, UPS Push.
N-SET0120 request, 8120 responseAsks the peer to modify attribute values of a managed SOP Instance.Requested SOP Class UID and Instance UID, and a Modification List (mandatory).Status, and optionally the Attribute List with the values that were changed.Modality Performed Procedure Step, Print Management, UPS Pull.
N-GET0110 request, 8110 responseRetrieves attribute values from a managed SOP Instance.Requested SOP Class UID and Instance UID, and optionally an Attribute Identifier List (0000,1005) to limit what is returned. No data set.Status and, on success, the Attribute List with the values.Modality Performed Procedure Step (retrieve), Print Management (Printer and Print Job), UPS.
N-ACTION0130 request, 8130 responseAsks the peer to perform an action on a managed SOP Instance.Requested SOP Class UID and Instance UID, the Action Type ID (0000,1008, mandatory) and optionally Action Information.Status and, optionally, an Action Reply.Storage Commitment (Action Type 1), Print Management (print a film box), UPS (change state, subscribe, request cancel).
N-DELETE0150 request, 8150 responseAsks the peer to delete a managed SOP Instance and de-register it.Requested SOP Class UID and Instance UID. No data set.Status only.Print Management (film session and film box).
N-EVENT-REPORT0100 request, 8100 responseReports an event on a managed SOP Instance to the peer. In the services listed here it is the SCP that reports to the SCU.Affected SOP Class UID and Instance UID, the Event Type ID (0000,1002, mandatory) and optionally Event Information.Status and, optionally, an Event Reply.Storage Commitment (Event Type 1 success, 2 failures), MPPS notification, Print Management (Printer and Print Job), UPS Event.

PS3.4 notes that the Instance Availability Notification is called a notification, but "is in fact performed through Operations rather than Notifications": it is an N-CREATE, not an N-EVENT-REPORT.

Which service class uses which DIMSE service

Taken from the DIMSE Service Group table of each service class in PS3.4. A service class can have several SOP Classes, and each SOP Class uses some of the services listed here.

Service classDIMSE servicesNotes
VerificationC-ECHOEvery DIMSE implementation that accepts associations must accept it as SCP (PS3.2).
StorageC-STOREOne SOP Class per object type, such as CT Image Storage.
Query/RetrieveC-FIND, C-MOVE, C-GET, C-CANCELC-MOVE and C-GET trigger C-STORE sub-operations, so the SCP of Query/Retrieve acts as Storage SCU.
Basic Worklist Management (Modality Worklist)C-FINDThe modality is the SCU and the worklist provider the SCP.
Modality Performed Procedure StepN-CREATE, N-SETTwo companion SOP Classes add N-GET (retrieve) and N-EVENT-REPORT (notification). N-CREATE may only carry IN PROGRESS.
Storage Commitment Push ModelN-ACTION, N-EVENT-REPORTThe SCU sends N-ACTION; the SCP answers with N-EVENT-REPORT, on the same or a different association.
Instance Availability NotificationN-CREATESent by the holder of the images to tell another system they are available.
Print ManagementN-CREATE, N-SET, N-GET, N-ACTION, N-DELETE, N-EVENT-REPORTSpread over the Film Session, Film Box, Image Box, Printer and Print Job SOP Classes.
Unified Procedure Step (UPS)C-FIND, N-CREATE, N-GET, N-SET, N-ACTION, N-EVENT-REPORTSplit over the UPS Push, Pull, Watch, Event and Query SOP Classes.

Command elements you see in a trace

Every DIMSE message starts with a command set of elements in group 0000. It is always encoded as Implicit VR Little Endian, with the elements in ascending tag order.

TagNameMeaning
(0000,0000)Command Group LengthNumber of bytes of the rest of the command set.
(0000,0002)Affected SOP Class UIDThe SOP Class the operation works on.
(0000,0003)Requested SOP Class UIDThe SOP Class of the instance an N-GET, N-SET, N-ACTION or N-DELETE addresses.
(0000,0100)Command FieldWhich DIMSE operation this is: 0001 C-STORE-RQ, 0010 C-GET-RQ, 0020 C-FIND-RQ, 0021 C-MOVE-RQ, 0030 C-ECHO-RQ, 0100 N-EVENT-REPORT-RQ, 0110 N-GET-RQ, 0120 N-SET-RQ, 0130 N-ACTION-RQ, 0140 N-CREATE-RQ, 0150 N-DELETE-RQ, 0FFF C-CANCEL-RQ. Responses add 8000.
(0000,0110)Message IDIdentifies a request. Must be unique among outstanding operations.
(0000,0120)Message ID Being Responded ToIn a response, the Message ID of its request. In a C-CANCEL, the Message ID of the operation to stop.
(0000,0600)Move DestinationAE title that receives the C-STORE sub-operations of a C-MOVE.
(0000,0700)Priority0002 low, 0000 medium, 0001 high.
(0000,0800)Command Data Set Type0101 means no data set follows; any other value means a data set is included.
(0000,0900)StatusOutcome of the operation, see the status table below.
(0000,0901)Offending ElementWith a Cxxx status, the elements in which the error was found.
(0000,0902)Error CommentFree-text description of the error.
(0000,0903)Error IDOptional application-specific error code.
(0000,1000)Affected SOP Instance UIDThe SOP Instance the operation worked on or created.
(0000,1001)Requested SOP Instance UIDThe SOP Instance an N-GET, N-SET, N-ACTION or N-DELETE addresses.
(0000,1002)Event Type IDWhich event an N-EVENT-REPORT reports. Values are defined by the SOP Class.
(0000,1005)Attribute Identifier ListThe attributes an N-GET asks for.
(0000,1008)Action Type IDWhich action an N-ACTION requests. Values are defined by the SOP Class.
(0000,1020)Number of Remaining Sub-operationsC-GET and C-MOVE: C-STORE sub-operations still to do.
(0000,1021)Number of Completed Sub-operationsC-GET and C-MOVE: sub-operations that succeeded.
(0000,1022)Number of Failed Sub-operationsC-GET and C-MOVE: sub-operations that failed.
(0000,1023)Number of Warning Sub-operationsC-GET and C-MOVE: sub-operations that gave a warning.
(0000,1030)Move Originator AE TitleIn a C-STORE sub-operation: the AE that issued the C-MOVE.
(0000,1031)Move Originator Message IDIn a C-STORE sub-operation: the Message ID of the C-MOVE request.

Status codes

The Status in (0000,0900) falls into one of five classes. The values 01xx and 02xx are reserved by DICOM and mean the same in every service. Axxx, Bxxx and Cxxx are assigned by a service class in PS3.4 (or by an implementation) and are listed in that service's section.

StatusClassMeaning
0000SuccessThe operation completed.
FE00CancelMatching or sub-operations were stopped by a C-CANCEL.
FF00PendingMore responses follow. For a C-FIND this response carries a match.
FF01PendingC-FIND only: more follow, and one or more optional keys were not supported.
0001, BxxxWarningDone, with a deviation. B000 on a C-STORE is coercion of data elements, on a C-MOVE or C-GET it means some sub-operations failed.
0107WarningAttribute list error: some attributes were not recognized.
0116WarningAttribute value out of range.
Axxx, CxxxFailureClass-specific failures. A7xx out of resources, A801 move destination unknown, A9xx data set does not match the SOP Class, Cxxx cannot understand or unable to process.
0105FailureNo such attribute.
0106FailureInvalid attribute value.
0110FailureProcessing failure.
0111FailureDuplicate SOP Instance.
0112FailureNo such SOP Instance.
0113FailureNo such event type.
0114FailureNo such argument.
0115FailureInvalid argument value.
0117FailureInvalid SOP Instance.
0118FailureNo such SOP Class.
0119FailureClass-instance conflict.
0120FailureMissing attribute.
0121FailureMissing attribute value.
0122FailureRefused: SOP Class not supported.
0123FailureNo such action type.
0124FailureRefused: not authorized.
0210FailureDuplicate invocation.
0211FailureUnrecognized operation.
0212FailureMistyped argument.
0213FailureResource limitation.

The classes are defined in PS3.7 Annex C: success 0000, warning 0001, Bxxx, 0107 or 0116, failure Axxx, Cxxx, 01xx (except 0107 and 0116) or 02xx, cancel FE00, pending FF00 and FF01. Implementations may only use the values listed. An SCU must treat any code inside a listed range as that failure.

Glossary

DIMSE
DICOM Message Service Element. The commands (C- and N- services) that two application entities send each other inside an association.
DIMSE-C
The composite services: C-STORE, C-FIND, C-GET, C-MOVE, C-ECHO. They work on composite SOP Instances such as images.
DIMSE-N
The normalized services: N-CREATE, N-SET, N-GET, N-ACTION, N-DELETE, N-EVENT-REPORT. They work on managed SOP Instances such as a procedure step.
Command set
The group 0000 elements that start every DIMSE message. It names the operation, the SOP Class and the message ID, and says whether a data set follows.
Data set
The object that follows the command set when the message carries one: an image, an identifier, an attribute list.
Identifier
The data set of a C-FIND, C-GET or C-MOVE: the keys to match, or the values that matched.
Composite vs normalized
A composite SOP Instance, such as an image, has a fixed content and is stored or queried as a whole. A normalized instance, such as a procedure step, is created and then changed or queried in parts.
Sub-operation
One C-STORE that a C-GET or C-MOVE performs on behalf of the request. The responses count them.

Summary

  • There are twelve DIMSE messages in two families. DIMSE-C: C-STORE, C-FIND, C-GET, C-MOVE, C-ECHO and C-CANCEL. DIMSE-N: N-CREATE, N-SET, N-GET, N-ACTION, N-DELETE and N-EVENT-REPORT.
  • A response Command Field is the request value plus 8000. C-CANCEL has no response, and the stopped operation ends with FE00.
  • (0000,0800) is 0101 when no data set follows. Every response has a Status in (0000,0900): 0000 success, FF00 pending, Bxxx warning, anything else a failure.
  • C-MOVE and C-GET both run C-STORE sub-operations: C-MOVE on a separate association to a named AE, C-GET on the same association.
  • The N-services address an instance with the Requested UIDs, apart from N-CREATE and N-EVENT-REPORT. Which services a device supports, and in which role, is in its Conformance Statement.

Common questions

What is DIMSE?

DIMSE stands for DICOM Message Service Element. It is the set of commands, defined in PS3.7, that DICOM devices send each other inside an association: C-STORE to send an image, C-FIND to search, N-CREATE to create a procedure step and so on. The association itself is set up with the upper layer services of PS3.8.

What is the difference between DIMSE-C and DIMSE-N?

DIMSE-C services work on composite SOP Instances, such as images, and are used to store, find and retrieve them. DIMSE-N services work on normalized, managed SOP Instances, such as a performed procedure step or a storage commitment request, which are created and then read, changed or acted on. N-CREATE, N-SET, N-GET, N-ACTION, N-DELETE and N-EVENT-REPORT are the normalized services.

What are the Command Field values?

C-STORE 0001, C-GET 0010, C-FIND 0020, C-MOVE 0021, C-ECHO 0030, N-EVENT-REPORT 0100, N-GET 0110, N-SET 0120, N-ACTION 0130, N-CREATE 0140, N-DELETE 0150 and C-CANCEL 0FFF. A response has the same value with bit 15 set, so C-STORE-RSP is 8001 and N-CREATE-RSP is 8140.

Which DIMSE services does a Modality Performed Procedure Step use?

N-CREATE, to start the step with the status IN PROGRESS, and N-SET, to finish it with COMPLETED or DISCONTINUED. Two companion SOP Classes add N-GET, to read a step back, and N-EVENT-REPORT, to notify a system about it.

Why is the Instance Availability Notification an N-CREATE?

Despite its name, PS3.4 says the notification "is in fact performed through Operations rather than Notifications". The sender creates a new Instance Availability Notification SOP Instance on the receiver with an N-CREATE. An N-EVENT-REPORT is a different thing: an event reported on an object that already exists, as in storage commitment.

What does a Cxxx status mean?

It is a class-specific failure of the kind "cannot understand" or "unable to process". The message can carry an Offending Element list (0000,0901) naming the elements where the error was found, and an Error Comment (0000,0902) with a text. The service class in PS3.4 says which code in the range applies, and an SCU has to treat any code inside the range as that failure.

How do I see which DIMSE services a device supports?

In its DICOM Conformance Statement, which lists for each Application Entity the services it supports and whether it is SCU or SCP, and has a section on the status codes it sends and how it reacts to them. The Conformance Statement lesson shows where to look.

Try it yourself

← All lessons