18#ifndef PACS_SERVICES_SOP_CLASSES_NM_STORAGE_HPP
19#define PACS_SERVICES_SOP_CLASSES_NM_STORAGE_HPP
38 "1.2.840.10008.5.1.4.1.1.20";
47 "1.2.840.10008.5.1.4.1.1.5";
127[[nodiscard]] std::vector<std::string>
nm_rotation_direction
NM rotation direction for SPECT.
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)
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.
@ monochrome2
Minimum pixel value = black (standard)
nm_radioisotope
Common radioisotopes used in NM imaging.
@ in111
Indium-111 (171, 245 keV)
@ i131
Iodine-131 (364 keV)
@ tc99m
Technetium-99m (140 keV)
@ 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.
@ cc
Craniocaudal - standard superior-inferior view.
@ other
Other/unspecified.
nm_detector_geometry
NM detector geometry type.
@ ring
Ring detector (PET-like)
@ planar
Planar detector (2D)
@ cylindrical
Cylindrical detector.
@ partial_ring
Partial ring.
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_scan_arc
NM scan arc for SPECT.
@ arc_360
360 degree arc (full rotation)
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.
Energy window information for NM acquisition.
double upper_limit
Upper energy limit (keV)
std::string name
Window name (e.g., "Tc-99m", "I-131")
double lower_limit
Lower energy limit (keV)
Information about a NM Storage SOP Class.
std::string_view description
Brief description.
std::string_view name
Human-readable name.
bool supports_multiframe
Whether multi-frame is supported.
bool is_retired
Whether this SOP class is retired.
std::string_view uid
SOP Class UID.