PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
pet_storage.h
Go to the documentation of this file.
1// BSD 3-Clause License
2// Copyright (c) 2021-2025, 🍀☀🌕🌥 🌊
3// See the LICENSE file in the project root for full license information.
4
18#ifndef PACS_SERVICES_SOP_CLASSES_PET_STORAGE_HPP
19#define PACS_SERVICES_SOP_CLASSES_PET_STORAGE_HPP
20
21#include <array>
22#include <cstdint>
23#include <string>
24#include <string_view>
25#include <vector>
26
28
29// =============================================================================
30// PET Storage SOP Class UIDs
31// =============================================================================
32
35
37inline constexpr std::string_view pet_image_storage_uid =
38 "1.2.840.10008.5.1.4.1.1.128";
39
41inline constexpr std::string_view enhanced_pet_image_storage_uid =
42 "1.2.840.10008.5.1.4.1.1.130";
43
45inline constexpr std::string_view legacy_converted_enhanced_pet_image_storage_uid =
46 "1.2.840.10008.5.1.4.1.1.128.1";
47
49
50// =============================================================================
51// PET-Specific Transfer Syntaxes
52// =============================================================================
53
63[[nodiscard]] std::vector<std::string> get_pet_transfer_syntaxes();
64
65// =============================================================================
66// PET Photometric Interpretations
67// =============================================================================
68
78
84[[nodiscard]] std::string_view to_string(pet_photometric_interpretation interp) noexcept;
85
92parse_pet_photometric_interpretation(std::string_view value) noexcept;
93
99[[nodiscard]] bool is_valid_pet_photometric(std::string_view value) noexcept;
100
101// =============================================================================
102// PET SOP Class Information
103// =============================================================================
104
109 std::string_view uid;
110 std::string_view name;
111 std::string_view description;
115};
116
126[[nodiscard]] std::vector<std::string>
127get_pet_storage_sop_classes(bool include_retired = true);
128
135[[nodiscard]] const pet_sop_class_info*
136get_pet_sop_class_info(std::string_view uid) noexcept;
137
144[[nodiscard]] bool is_pet_storage_sop_class(std::string_view uid) noexcept;
145
152[[nodiscard]] bool is_enhanced_pet_sop_class(std::string_view uid) noexcept;
153
154// =============================================================================
155// PET Image Type Codes
156// =============================================================================
157
161enum class pet_image_type {
162 original,
163 derived,
164 primary,
165 secondary
166};
167
171enum class pet_series_type {
173 dynamic,
174 gated,
176};
177
182 none,
183 measured,
184 calculated,
185 ct_based
186};
187
197
202 fbp,
203 osem,
204 mlem,
205 tof_osem,
206 psf_osem,
207 other
208};
209
215[[nodiscard]] std::string_view to_string(pet_reconstruction_type recon) noexcept;
216
222[[nodiscard]] pet_reconstruction_type
223parse_pet_reconstruction_type(std::string_view value) noexcept;
224
225// =============================================================================
226// PET Units and SUV Calculation
227// =============================================================================
228
232enum class pet_units {
233 cnts,
234 bqml,
235 gml,
236 suv_bw,
237 suv_lbm,
238 suv_bsa,
240 other
241};
242
248[[nodiscard]] std::string_view to_string(pet_units units) noexcept;
249
255[[nodiscard]] pet_units parse_pet_units(std::string_view value) noexcept;
256
257// =============================================================================
258// PET Radiopharmaceutical Information
259// =============================================================================
260
264enum class pet_radiotracer {
265 fdg,
266 naf,
267 flt,
268 fdopa,
269 ammonia,
270 rubidium,
272 psma,
273 other
274};
275
281[[nodiscard]] std::string_view to_string(pet_radiotracer tracer) noexcept;
282
283} // namespace kcenon::pacs::services::sop_classes
284
285#endif // PACS_SERVICES_SOP_CLASSES_PET_STORAGE_HPP
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)
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.
Definition pet_storage.h:37
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.
Definition pet_storage.h:75
pet_radiotracer
Common PET radiotracers.
pet_reconstruction_type
PET reconstruction algorithm type.
@ osem
Ordered Subset Expectation Maximization.
@ mlem
Maximum Likelihood Expectation Maximization.
pet_attenuation_correction
Attenuation correction method.
@ ct_based
CT-based attenuation correction (PET/CT)
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.
pet_image_type
PET image type indicating the nature of the image.
@ secondary
SECONDARY - secondary reconstruction.
constexpr std::string_view legacy_converted_enhanced_pet_image_storage_uid
Legacy Converted Enhanced PET Image Storage SOP Class UID.
Definition pet_storage.h:45
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.
Definition pet_storage.h:41
@ gated
GATED - cardiac gated acquisition.
@ dynamic
DYNAMIC - dynamic study (time series)
pet_series_type
PET series type code.
pet_scatter_correction
Scatter correction method.
std::string_view to_string(dx_photometric_interpretation interp) noexcept
Convert photometric interpretation enum to DICOM string.
Information about a PET Storage SOP Class.
bool is_retired
Whether this SOP class is retired.
bool supports_multiframe
Whether multi-frame is supported.
std::string_view name
Human-readable name.
std::string_view description
Brief description.
bool is_enhanced
Whether this is an enhanced SOP class.
std::string_view uid