PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
pet_iod_validator.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_VALIDATION_PET_IOD_VALIDATOR_HPP
19#define PACS_SERVICES_VALIDATION_PET_IOD_VALIDATOR_HPP
20
23#include "kcenon/pacs/services/validation/us_iod_validator.h" // For shared validation types
24
25#include <optional>
26#include <string>
27#include <vector>
28
30
31// =============================================================================
32// PET Validation Options
33// =============================================================================
34
40 bool check_type1 = true;
41
43 bool check_type2 = true;
44
46 bool check_conditional = true;
47
50
53
56
59
61 bool allow_retired = true;
62
64 bool strict_mode = false;
65};
66
67// =============================================================================
68// PET IOD Validator
69// =============================================================================
70
113public:
117 pet_iod_validator() = default;
118
123 explicit pet_iod_validator(const pet_validation_options& options);
124
131 [[nodiscard]] validation_result validate(const core::dicom_dataset& dataset) const;
132
141 [[nodiscard]] bool quick_check(const core::dicom_dataset& dataset) const;
142
146 [[nodiscard]] const pet_validation_options& options() const noexcept;
147
151 void set_options(const pet_validation_options& options);
152
153private:
154 // Module validation methods
156 const core::dicom_dataset& dataset,
157 std::vector<validation_finding>& findings) const;
158
160 const core::dicom_dataset& dataset,
161 std::vector<validation_finding>& findings) const;
162
164 const core::dicom_dataset& dataset,
165 std::vector<validation_finding>& findings) const;
166
168 const core::dicom_dataset& dataset,
169 std::vector<validation_finding>& findings) const;
170
172 const core::dicom_dataset& dataset,
173 std::vector<validation_finding>& findings) const;
174
176 const core::dicom_dataset& dataset,
177 std::vector<validation_finding>& findings) const;
178
180 const core::dicom_dataset& dataset,
181 std::vector<validation_finding>& findings) const;
182
184 const core::dicom_dataset& dataset,
185 std::vector<validation_finding>& findings) const;
186
188 const core::dicom_dataset& dataset,
189 std::vector<validation_finding>& findings) const;
190
191 // PET-specific validation
193 const core::dicom_dataset& dataset,
194 std::vector<validation_finding>& findings) const;
195
197 const core::dicom_dataset& dataset,
198 std::vector<validation_finding>& findings) const;
199
201 const core::dicom_dataset& dataset,
202 std::vector<validation_finding>& findings) const;
203
205 const core::dicom_dataset& dataset,
206 std::vector<validation_finding>& findings) const;
207
208 // Attribute validation helpers
210 const core::dicom_dataset& dataset,
211 core::dicom_tag tag,
212 std::string_view name,
213 std::vector<validation_finding>& findings) const;
214
216 const core::dicom_dataset& dataset,
217 core::dicom_tag tag,
218 std::string_view name,
219 std::vector<validation_finding>& findings) const;
220
221 void check_modality(
222 const core::dicom_dataset& dataset,
223 std::vector<validation_finding>& findings) const;
224
226 const core::dicom_dataset& dataset,
227 std::vector<validation_finding>& findings) const;
228
230};
231
232// =============================================================================
233// Convenience Functions
234// =============================================================================
235
242[[nodiscard]] validation_result validate_pet_iod(const core::dicom_dataset& dataset);
243
250[[nodiscard]] bool is_valid_pet_dataset(const core::dicom_dataset& dataset);
251
252} // namespace kcenon::pacs::services::validation
253
254#endif // PACS_SERVICES_VALIDATION_PET_IOD_VALIDATOR_HPP
void validate_general_series_module(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
void check_modality(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
void validate_image_plane_module(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
void check_type2_attribute(const core::dicom_dataset &dataset, core::dicom_tag tag, std::string_view name, std::vector< validation_finding > &findings) const
void validate_general_study_module(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
void validate_pet_series_module(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
void check_type1_attribute(const core::dicom_dataset &dataset, core::dicom_tag tag, std::string_view name, std::vector< validation_finding > &findings) const
void set_options(const pet_validation_options &options)
Set validation options.
void validate_corrections(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
validation_result validate(const core::dicom_dataset &dataset) const
Validate a DICOM dataset against PET IOD.
void validate_frame_of_reference_module(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
bool quick_check(const core::dicom_dataset &dataset) const
Quick check if dataset has minimum required attributes.
const pet_validation_options & options() const noexcept
Get the validation options.
void validate_sop_common_module(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
void validate_reconstruction_info(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
void validate_image_pixel_module(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
void check_pixel_data_consistency(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
void validate_radiopharmaceutical_info(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
void validate_suv_parameters(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
void validate_pet_image_module(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
pet_iod_validator()=default
Construct validator with default options.
void validate_patient_module(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
DICOM Dataset - ordered collection of Data Elements.
DICOM Tag representation (Group, Element pairs)
bool is_valid_pet_dataset(const core::dicom_dataset &dataset)
Quick check if a dataset is a valid PET image.
validation_result validate_pet_iod(const core::dicom_dataset &dataset)
Validate a PET dataset with default options.
bool check_conditional
Check Type 1C/2C (conditionally required) attributes.
bool validate_corrections
Validate attenuation and scatter correction.
bool check_type1
Check Type 1 (required) attributes.
bool validate_pet_specific
Validate PET-specific attributes (SUV, reconstruction, etc.)
bool strict_mode
Strict mode - treat warnings as errors.
bool check_type2
Check Type 2 (required, can be empty) attributes.
bool validate_pixel_data
Validate pixel data consistency (rows, columns, bits)
bool validate_radiopharmaceutical
Validate radiopharmaceutical information.
std::string_view name
Ultrasound Image IOD Validator.