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",
57 return value ==
"MONOCHROME2";
67constexpr std::array<pet_sop_class_info, 3> pet_sop_classes = {{
71 "Standard PET image storage",
78 "Enhanced PET Image Storage",
79 "Enhanced PET with multi-frame and extended attributes",
86 "Legacy Converted Enhanced PET Image Storage",
87 "Legacy PET converted to enhanced format",
97 std::vector<std::string> result;
98 result.reserve(pet_sop_classes.size());
100 for (
const auto& info : pet_sop_classes) {
101 if (!info.is_retired || include_retired) {
102 result.emplace_back(info.uid);
109const pet_sop_class_info*
111 auto it = std::find_if(
112 pet_sop_classes.begin(),
113 pet_sop_classes.end(),
114 [
uid](
const auto& info) { return info.uid == uid; }
117 if (it != pet_sop_classes.end()) {
129 return info !=
nullptr && info->is_enhanced;
156 if (value ==
"FBP" || value ==
"FILTERED BACK PROJECTION") {
159 if (value ==
"OSEM" || value ==
"3D-OSEM") {
162 if (value ==
"MLEM") {
165 if (value.find(
"TOF") != std::string_view::npos) {
168 if (value.find(
"PSF") != std::string_view::npos) {
201 if (value ==
"CNTS") {
204 if (value ==
"BQML" || value ==
"BQ/ML") {
207 if (value ==
"GML" || value ==
"G/ML") {
210 if (value ==
"SUV" || value ==
"SUV_BW") {
213 if (value ==
"SUL" || value ==
"SUV_LBM") {
216 if (value ==
"SUV_BSA") {
219 if (value ==
"%ID/G" || value ==
"PERCENT_ID_GRAM") {
240 return "13N-Ammonia";
244 return "68Ga-DOTATATE";
bool is_pet_storage_sop_class(std::string_view uid) noexcept
Check if a SOP Class UID is a PET Storage SOP Class.
pet_units
PET units type (Units attribute 0054,1001)
@ suv_bw
Standardized Uptake Value (body weight)
@ percent_id_gram
Percent injected dose per gram.
@ bqml
Bq/ml (Becquerels per milliliter)
@ suv_bsa
SUV (body surface area)
@ suv_lbm
SUV (lean body mass)
bool is_valid_pet_photometric(std::string_view value) noexcept
Check if photometric interpretation is valid for PET.
constexpr std::string_view pet_image_storage_uid
PET Image Storage SOP Class UID.
std::vector< std::string > get_pet_transfer_syntaxes()
Get recommended transfer syntaxes for PET images.
pet_photometric_interpretation parse_pet_photometric_interpretation(std::string_view value) noexcept
Parse DICOM photometric interpretation string.
pet_photometric_interpretation
Supported photometric interpretations for PET images.
@ monochrome2
Minimum pixel = black (standard for PET)
pet_radiotracer
Common PET radiotracers.
@ naf
18F-NaF (Sodium Fluoride)
@ rubidium
82Rb (Rubidium-82)
@ flt
18F-FLT (Fluorothymidine)
@ fdg
18F-FDG (Fluorodeoxyglucose)
@ gallium_dotatate
68Ga-DOTATATE
pet_reconstruction_type
PET reconstruction algorithm type.
@ osem
Ordered Subset Expectation Maximization.
@ tof_osem
Time-of-Flight OSEM.
@ mlem
Maximum Likelihood Expectation Maximization.
@ fbp
Filtered Back Projection.
@ psf_osem
Point Spread Function OSEM.
bool is_enhanced_pet_sop_class(std::string_view uid) noexcept
Check if a SOP Class UID is an Enhanced PET Storage SOP Class.
std::vector< std::string > get_pet_storage_sop_classes(bool include_retired=true)
Get all PET Storage SOP Class UIDs.
pet_reconstruction_type parse_pet_reconstruction_type(std::string_view value) noexcept
Parse PET reconstruction type from string.
const pet_sop_class_info * get_pet_sop_class_info(std::string_view uid) noexcept
Get information about a specific PET SOP Class.
constexpr std::string_view legacy_converted_enhanced_pet_image_storage_uid
Legacy Converted Enhanced PET Image Storage SOP Class UID.
pet_units parse_pet_units(std::string_view value) noexcept
Parse PET units from DICOM string.
constexpr std::string_view enhanced_pet_image_storage_uid
Enhanced PET Image Storage SOP Class UID.
std::string_view to_string(dx_photometric_interpretation interp) noexcept
Convert photometric interpretation enum to DICOM string.
Positron Emission Tomography (PET) Image Storage SOP Classes.