24 "1.2.840.10008.1.2.1",
28 "1.2.840.10008.1.2.4.201",
30 "1.2.840.10008.1.2.4.70",
32 "1.2.840.10008.1.2.4.90",
47 return "PALETTE COLOR";
54 if (value ==
"PALETTE COLOR") {
61 return value ==
"MONOCHROME2" || value ==
"PALETTE COLOR";
71constexpr std::array<nm_sop_class_info, 2> nm_sop_classes = {{
75 "Nuclear medicine planar, SPECT, and gated images",
81 "NM Image Storage (Retired)",
82 "Legacy nuclear medicine image storage",
91 std::vector<std::string> result;
92 result.reserve(nm_sop_classes.size());
94 for (
const auto& info : nm_sop_classes) {
95 if (!info.is_retired || include_retired) {
96 result.emplace_back(info.uid);
103const nm_sop_class_info*
105 auto it = std::find_if(
106 nm_sop_classes.begin(),
107 nm_sop_classes.end(),
108 [
uid](
const auto& info) { return info.uid == uid; }
111 if (it != nm_sop_classes.end()) {
123 return info !=
nullptr && info->supports_multiframe;
143 return "RECON GATED TOMO";
153 if (value ==
"STATIC") {
156 if (value ==
"DYNAMIC") {
159 if (value ==
"GATED") {
162 if (value ==
"WHOLE BODY") {
165 if (value ==
"RECON TOMO") {
168 if (value ==
"RECON GATED TOMO") {
171 if (value ==
"TOMO") {
174 if (value ==
"GATED TOMO") {
185 switch (collimator) {
205 if (value ==
"PARA" || value ==
"PARALLEL") {
208 if (value ==
"FANB" || value ==
"FAN BEAM") {
211 if (value ==
"CONE" || value ==
"CONE BEAM") {
214 if (value ==
"PINH" || value ==
"PINHOLE") {
217 if (value ==
"DIVG" || value ==
"DIVERGING") {
220 if (value ==
"CVGB" || value ==
"CONVERGING") {
223 if (value ==
"NONE") {
nm_collimator_type
NM collimator type.
@ cone_beam
CONE - Cone beam.
@ converging
CVGB - Converging.
@ none
NONE - No collimator.
@ parallel
PARA - Parallel hole.
@ diverging
DIVG - Diverging.
@ fan_beam
FANB - Fan beam.
nm_photometric_interpretation
Supported photometric interpretations for NM images.
@ palette_color
Pseudo-color via lookup table (for display)
@ monochrome2
Minimum pixel = black (standard)
bool is_valid_nm_photometric(std::string_view value) noexcept
Check if photometric interpretation is valid for NM.
nm_type_of_data parse_nm_type_of_data(std::string_view value) noexcept
Parse NM type of data from DICOM string.
nm_radioisotope
Common radioisotopes used in NM imaging.
@ in111
Indium-111 (171, 245 keV)
@ i131
Iodine-131 (364 keV)
@ tc99m
Technetium-99m (140 keV)
@ other
Other radioisotope.
@ ga67
Gallium-67 (93, 185, 300 keV)
@ tl201
Thallium-201 (71, 167 keV)
@ f18
Fluorine-18 (511 keV - for PET)
@ i123
Iodine-123 (159 keV)
nm_photometric_interpretation parse_nm_photometric_interpretation(std::string_view value) noexcept
Parse DICOM photometric interpretation string.
constexpr std::string_view nm_image_storage_retired_uid
Nuclear Medicine Image Storage (Retired) - for legacy systems.
bool is_nm_multiframe_sop_class(std::string_view uid) noexcept
Check if a SOP Class UID supports multi-frame.
nm_whole_body_technique
Patient orientation for whole body scan.
@ multi_pass
2PASS - Multiple pass (anterior/posterior)
@ single_pass
1PASS - Single pass
@ stepping
STEP - Stepping acquisition.
std::vector< std::string > get_nm_transfer_syntaxes()
Get recommended transfer syntaxes for NM images.
double get_primary_energy_kev(nm_radioisotope isotope) noexcept
Get primary photopeak energy for radioisotope.
bool is_nm_storage_sop_class(std::string_view uid) noexcept
Check if a SOP Class UID is a NM Storage SOP Class.
nm_type_of_data
NM image type (Type of Data)
@ gated
GATED - cardiac gated acquisition.
@ gated_tomo
GATED TOMO - gated SPECT projections.
@ static_image
STATIC - static planar image.
@ dynamic
DYNAMIC - dynamic study (time series)
@ tomo
TOMO - SPECT raw projection data.
@ recon_tomo
RECON TOMO - reconstructed SPECT.
@ whole_body
WHOLE BODY - whole body scan.
@ recon_gated_tomo
RECON GATED TOMO - reconstructed gated SPECT.
constexpr std::string_view nm_image_storage_uid
Nuclear Medicine Image Storage SOP Class UID.
std::vector< std::string > get_nm_storage_sop_classes(bool include_retired=true)
Get all NM Storage SOP Class UIDs.
nm_collimator_type parse_nm_collimator_type(std::string_view value) noexcept
Parse collimator type from DICOM string.
std::string_view to_string(dx_photometric_interpretation interp) noexcept
Convert photometric interpretation enum to DICOM string.
const nm_sop_class_info * get_nm_sop_class_info(std::string_view uid) noexcept
Get information about a specific NM SOP Class.
Nuclear Medicine (NM) Image Storage SOP Classes.