DICOM Query/Retrieve allows for querying a database from an archive, workstation, or other device for the information it has available. It also allows for the retrieval ("pull") of those objects, such as images.
As an example, a digital modality such as a CT or MRI, can support Query/Retrieve as a client (SCU) or a server (SCP). As an SCU, it can request information about images, such as the patient name, ID, or other attributes and selectively retrieve them. As a SCP, the modality can respond to requests from other devices for information about images the modality has stored in its local database.
The DICOM Query/Retrieve service can be used with three different Information Models based on the hierarchical DICOM Information Model. This model specifies that a patient entity can have multiple studies, with each study containing several series, and with each series containing multiple images.
At each level, there is a single unique key that defines the next level, which is also used as an index for the database (i.e. the Patient ID, Study Instance UID, Series Instance UID, and SOP Class UID). These unique keys determines for each level which branches to follow down the search tree.
When requesting information from a database using the DICOM protocol, the device performing the query needs to follow this hierarchical ordering of information (in contrast to SQL-style relational searches). In the information model, the root level defines where to start the search in the tree hierarchy (Patient, Study, Series and Image).
The two most used models for Query/Retrieve are the Patient Root, allowing searches based on the Patient ID, and the Study Root, allowing searches based on the Accession Number. The third one, the Patient Study Only Information Model is almost never used.
The DICOM DIMSE command used for the Query is the C_FIND, for the retrieve, is the C_MOVE or the rarely used C_GET.