The DICOM Query/Retrieve service

The DICOM Query/Retrieve service is used to query a DICOM archive (e.g., a PACS server) about its content, and to eventually retrieve some portions of that content to another DICOM node. As its name implies, the DICOM Query/Retrieve service is made up of two distinct phases:

  •   The Query phase: during this phase, a DICOM node (acting as a SCU) queries another DICOM node (acting as a SCP) for some contents, and expects a query response. The query may include search parameters. For instance, a workstation may query a PACS server for all studies acquired today (in this case, the Study Date is the search parameter), then wait for the query response by the PACS server and finally display the list of studies returned by the PACS server.
  •   The Retrieve phase: during this phase, which may be present or not in the DICOM communication, the SCU node may request retrieval of some DICOM data to the SCP. In the above example, once the workstation has obtained the list of studies acquired today, it may retrieve one or more of those studies in order to display them locally. The retrieve operation hence implies a transfer of DICOM data from a DICOM node to another: this transfer is accomplished through the DICOM Storage service. Hence, in the context of the DICOM Query/Retrieve service, the Query/Retrieve SCP will then become a Storage SCU when it is requested to deliver DICOM data to another DICOM node as part of the retrieve phase.

The DICOM Query/Retrieve service follows the usual SCP / SCU pattern: a DICOM Query/Retrieve SCP acts as a server and waits for incoming connections by DICOM Query/Retrieve SCUs. In turn, a DICOM Query/Retrieve SCU, in order to send queries or retrieval requests to another node acting as a DICOM Query/Retrieve SCP, actively connects to that SCP node, sends the query or retrieve request containing eventual search parameters, and waits for the response by the SCP.

From the protocol point of view, the DICOM Query/Retrieve service is implemented through the C-FIND and C-MOVE messages:

  •   During the Query phase, the SCU sends a C-FIND-RQ (request) message to the SCP, also including eventual search parameters, and the SCP is expected to answer returning one or more C-FIND-RSP (response) messages to the SCU, conveying the items matching the search criteria.
  •   During the Retrieve phase, the SCU sends a C-MOVE-RQ (request) message to the SCP, specifying the items to be retrieved (normally, a Patient, a Study, a Series or a single Instance). This request will trigger the transfer of the appropriate DICOM data through the DICOM Storage service (hence, through C-STORE messages), in the context of a distinct DICOM association. During the transfer, one or more C-MOVE-RSP (response) messages are returned by the Query/Retrieve SCP to the SCU, providing updates about the current status of the retrieve operation.
    Note: a distinct retrieve method based on the C-GET message exists: it works in a different way and it is less-commonly implemented with respect to the method described above, which is based on the C-MOVE message.

NeoLogica’s LogiPACS software (PACS server) supports the DICOM Query/Retrieve service both in the SCP role (i.e., it is able to receive queries about the content of its DICOM archive, to respond to such queries with the matching items, and to deliver DICOM data to requesting DICOM nodes) and in the SCU role (i.e., it is able to send queries to other DICOM nodes in the network, to interpret their responses, and to retrieve DICOM data from those remote nodes).