This preliminary set of major changes enable the core and standard dictionary components to harbor new kinds of DICOM dictionaries, namely those which involve recognized DICOM unique identifiers.
Summary
[dictionary-builder] moved to devtools folder
[dictionary-builder] now has two sub-commands:
The tags subcommand is equivalent to the previous version: produces a module of DICOM tags from the DCMTK DICOM dictionary.
The uid subcommand collects UID records from part 6 of the standard (in XML) and writes them as Rust code constants and in-memory static entries. Whether to include the static slices is gated on Cargo features, so that they do not incur a size cost when they are not used.
[core] renamed DictionaryEntry and a few other types to include the Data part, so that they are not mistaken with other dictionaries
[core] added submodules to dictionary module for describing data element dictionary types in data_element and UID dictionary types in uid
[dictionary-std] extended crate to support a run-time SOP class dictionary if the sop-class Cargo feature is enabled
[dump] the file meta group summary now also prints the name of the SOP class if it is known by the dictionary and the sop-class Cargo feature is enabled.
Open concerns
[x] Tests for the SOP class dictionary are still missing
:question: Should UID constants be separated by category into different submodules? There are 442 UIDs at the moment, each one is given a constant in dicom_dictionary_std::uids.
I'd say :-1:, it does not seem to be that overwhelming.
Known caveats
Running dicom-dictionary-builder uid without the first argument will currently not work because the server hosting the standard (dicom.nema.org) is using outdated TLS protocols, and Rustls will not accept negotiating with it directly. The workaround is to download part06.xml separately and pass it along.
This preliminary set of major changes enable the core and standard dictionary components to harbor new kinds of DICOM dictionaries, namely those which involve recognized DICOM unique identifiers.
Summary
devtools
foldertags
subcommand is equivalent to the previous version: produces a module of DICOM tags from the DCMTK DICOM dictionary.uid
subcommand collects UID records from part 6 of the standard (in XML) and writes them as Rust code constants and in-memory static entries. Whether to include the static slices is gated on Cargo features, so that they do not incur a size cost when they are not used.DictionaryEntry
and a few other types to include theData
part, so that they are not mistaken with other dictionariesdictionary
module for describing data element dictionary types indata_element
and UID dictionary types inuid
sop-class
Cargo feature is enabledsop-class
Cargo feature is enabled.Open concerns
dicom_dictionary_std::uids
.Known caveats
dicom-dictionary-builder uid
without the first argument will currently not work because the server hosting the standard (dicom.nema.org) is using outdated TLS protocols, and Rustls will not accept negotiating with it directly. The workaround is to download part06.xml separately and pass it along.