Explore IODs, modules, and attributes
Use graph queries when a registry lookup is not enough. The PS3.3/PS3.4 graph connects SOP Classes to IODs, IODs to modules, and modules to attribute-use and macro-include rows.
Prerequisites
Section titled “Prerequisites”Build a knowledge base containing at least PS3.3, PS3.4, and PS3.6 for the selected concrete edition.
1. Identify the IOD
Section titled “1. Identify the IOD”EDITION=2025e # Replace with your concrete edition.uv run dicom-kb lookup iod 'CT Image' \ --edition "$EDITION"The response identifies the imported IOD record and its source reference.
Start from a SOP Class when that is the identifier you have:
EDITION=2025e # Replace with your concrete edition.uv run dicom-kb lookup sop-class 'CT Image Storage' \ --edition "$EDITION"The SOP Class response includes linked IOD records when the imported graph resolves them.
2. List the IOD’s modules
Section titled “2. List the IOD’s modules”EDITION=2025e # Replace with your concrete edition.uv run dicom-kb iod modules 'CT Image' \ --edition "$EDITION"Inspect each module-use row for:
- module identity;
- usage or requirement information;
- source references;
- warnings or unresolved relationships.
The result preserves individual rows rather than flattening every module into one unqualified list.
3. Inspect a module’s attributes
Section titled “3. Inspect a module’s attributes”EDITION=2025e # Replace with your concrete edition.uv run dicom-kb module attributes Patient \ --edition "$EDITION"The default result preserves macro include rows. This makes the imported structure visible and avoids silently duplicating included attributes.
4. Expand macros when needed
Section titled “4. Expand macros when needed”EDITION=2025e # Replace with your concrete edition.uv run dicom-kb module attributes Patient \ --expand-macros \ --edition "$EDITION"Expansion inlines imported attributes from resolved macro includes after the include row. Inspect warnings for unresolved includes and keep source references when presenting expanded results.
5. Resolve one attribute in context
Section titled “5. Resolve one attribute in context”After locating an attribute-use row, ask the contextual resolver for the bounded effective type:
EDITION=2025e # Replace with your concrete edition.uv run dicom-kb resolve attribute-context Modality \ --iod 'CT Image' \ --edition "$EDITION"This step combines the data element, graph path, applicable attribute-use rows, condition text, and explicit override phrases. Read Attribute-context resolution before turning the result into a requirement statement.
Common mistakes
Section titled “Common mistakes”Treating a data-dictionary row as an IOD requirement
Section titled “Treating a data-dictionary row as an IOD requirement”PS3.6 identifies the data element. Requiredness comes from PS3.3 usage context. Use graph and contextual tools.
Dropping module-use conditions
Section titled “Dropping module-use conditions”A module can be mandatory, conditional, or user optional. Preserve the imported use row and its source reference.
Expanding macros without provenance
Section titled “Expanding macros without provenance”Macro expansion is a convenience view. Keep include-row and source-reference information so a reader can reconstruct where each attribute came from.
Assuming one SOP Class always maps to one resolved IOD
Section titled “Assuming one SOP Class always maps to one resolved IOD”The resolver preserves linked records and ambiguity. Do not select a candidate by name similarity outside the returned graph.