8 unstable releases (3 breaking)

0.8.0 Nov 6, 2024
0.7.1 Aug 13, 2024
0.7.0 Apr 25, 2024
0.2.2 Nov 21, 2023
0.1.0 Oct 23, 2022

#1028 in Command line utilities

Download history 115/week @ 2024-08-12 9/week @ 2024-09-16 9/week @ 2024-09-23 4/week @ 2024-09-30 1/week @ 2024-10-07 127/week @ 2024-11-04 3/week @ 2024-11-11 7/week @ 2024-11-18

137 downloads per month

MIT/Apache

3MB
44K SLoC

DICOM-rs findscu

CratesIO Documentation

This is an implementation of the DICOM Find SCU (C-FIND), which can be used to search for study and patient records in a DICOM archive.

This tool is part of the DICOM-rs project.

Usage

Note that this tool is not necessarily a drop-in replacement for findscu tools in other DICOM software toolkits. Run dicom-findscu --help for more details.

Basic usage includes searching for a study or patient by a certain attribute. The following query/retrieve information models are supported at the moment:

  • -S: Study Root Query/Retrieve Information Model – FIND (default)
  • -P: Patient Root Query/Retrieve Information Model - FIND
  • -W: Modality Worklist Information Model – FIND

There are three non-exclusive ways to specify a DICOM query:

Passing a DICOM query object file

You may optionally provide a path to a DICOM query object file to bootstrap your query object, otherwise you start with an empty one. There are currently no tools in DICOM-rs to assist in the process of creating these objects, but one can convert DCMTK DICOM data dumps into compatible DICOM query objects, or write these tools yourself.

# query is defined in query.dcm
dicom-findscu PACS@pacs.example.com:1045 --study query.dcm

Passing a query text file

An easier approach to specifying queries is through the command line argument --query-file «file». The text file should contain a sequence of lines, each of the form «field_path»=«field_value», where:

  • field_path is a data element selector path (see the element selector syntax below);
  • and field_value is the respective value or pattern to match against the value of the specified DICOM attribute. It can be empty, which in that case the = may also be left out.

For example, given the file query.txt:

# comments are supported
AccessionNumber
ScheduledProcedureStepSequence.Modality=MR
ScheduledProcedureStepSequence.ScheduledProcedureStepStartDate=20240703

You can do:

dicom-findscu PACS@pacs.example.com:1045 -W --query-file query.txt

Using the multi-value -q option

Finally, the -q option accepts multiple query values of the same form as in --query-file. See more examples below.

Each of these forms will extend and override the query object in this order.

Selector syntax

Simple attribute selectors comprise a single data element key, specified by a standard DICOM tag (in one of the forms (gggg,eeee), gggg,eeee, or ggggeeee) or a tag keyword name such as PatientName. To specify a sequence, use multiple of these separated by a dot (e.g. ScheduledProcedureStepSequence.0040,0020). Nested attributes will automatically construct intermediate sequences as needed.

Examples

# query application entity STORAGE for a study with the accession number A123
dicom-findscu STORAGE@pacs.example.com:1045 --study -q AccessionNumber=A123

# query application entity PACS for patients born in 1990-12-25
dicom-findscu PACS@pacs.example.com:1045 --patient -q PatientBirthDate=19901225

# wild-card query: grab a list of all study instance UIDs
dicom-findscu PACS@pacs.example.com:1045 -S -q "StudyInstanceUID=*"

# retrieve the modality worklist information
# for scheduled procedures where the patient has arrived
dicom-findscu INFO@pacs.example.com:1045 --mwl \
    -q ScheduledProcedureStepSequence.ScheduledProcedureStepStatus=ARRIVED

Dependencies

~10–20MB
~284K SLoC