PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
dx_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
22#ifndef PACS_SERVICES_VALIDATION_DX_IOD_VALIDATOR_HPP
23#define PACS_SERVICES_VALIDATION_DX_IOD_VALIDATOR_HPP
24
27#include "kcenon/pacs/services/validation/us_iod_validator.h" // For shared types
28
29#include <optional>
30#include <string>
31#include <vector>
32
34
35// =============================================================================
36// DX Validation Options
37// =============================================================================
38
44 bool check_type1 = true;
45
47 bool check_type2 = true;
48
50 bool check_conditional = true;
51
54
57
59 bool validate_anatomy = true;
60
63
66
69
71 bool strict_mode = false;
72};
73
74// =============================================================================
75// DX IOD Validator
76// =============================================================================
77
117public:
121 dx_iod_validator() = default;
122
127 explicit dx_iod_validator(const dx_validation_options& options);
128
138 [[nodiscard]] validation_result validate(const core::dicom_dataset& dataset) const;
139
149 [[nodiscard]] validation_result
151
161 [[nodiscard]] validation_result
162 validate_for_processing(const core::dicom_dataset& dataset) const;
163
172 [[nodiscard]] bool quick_check(const core::dicom_dataset& dataset) const;
173
177 [[nodiscard]] const dx_validation_options& options() const noexcept;
178
182 void set_options(const dx_validation_options& options);
183
184private:
185 // Module validation methods
187 const core::dicom_dataset& dataset,
188 std::vector<validation_finding>& findings) const;
189
191 const core::dicom_dataset& dataset,
192 std::vector<validation_finding>& findings) const;
193
195 const core::dicom_dataset& dataset,
196 std::vector<validation_finding>& findings) const;
197
199 const core::dicom_dataset& dataset,
200 std::vector<validation_finding>& findings) const;
201
203 const core::dicom_dataset& dataset,
204 std::vector<validation_finding>& findings) const;
205
207 const core::dicom_dataset& dataset,
208 std::vector<validation_finding>& findings) const;
209
211 const core::dicom_dataset& dataset,
212 std::vector<validation_finding>& findings) const;
213
215 const core::dicom_dataset& dataset,
216 std::vector<validation_finding>& findings) const;
217
219 const core::dicom_dataset& dataset,
220 std::vector<validation_finding>& findings) const;
221
223 const core::dicom_dataset& dataset,
224 std::vector<validation_finding>& findings) const;
225
226 // Attribute validation helpers
228 const core::dicom_dataset& dataset,
229 core::dicom_tag tag,
230 std::string_view name,
231 std::vector<validation_finding>& findings) const;
232
234 const core::dicom_dataset& dataset,
235 core::dicom_tag tag,
236 std::string_view name,
237 std::vector<validation_finding>& findings) const;
238
239 void check_modality(
240 const core::dicom_dataset& dataset,
241 std::vector<validation_finding>& findings) const;
242
244 const core::dicom_dataset& dataset,
245 std::vector<validation_finding>& findings) const;
246
248 const core::dicom_dataset& dataset,
249 std::vector<validation_finding>& findings) const;
250
252};
253
254// =============================================================================
255// Convenience Functions
256// =============================================================================
257
264[[nodiscard]] validation_result validate_dx_iod(const core::dicom_dataset& dataset);
265
272[[nodiscard]] bool is_valid_dx_dataset(const core::dicom_dataset& dataset);
273
282[[nodiscard]] bool is_for_presentation_dx(const core::dicom_dataset& dataset);
283
292[[nodiscard]] bool is_for_processing_dx(const core::dicom_dataset& dataset);
293
294} // namespace kcenon::pacs::services::validation
295
296#endif // PACS_SERVICES_VALIDATION_DX_IOD_VALIDATOR_HPP
void validate_voi_lut_module(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
void validate_dx_anatomy_imaged_module(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 DX IOD.
validation_result validate_for_processing(const core::dicom_dataset &dataset) const
Validate a For Processing DX dataset.
void check_photometric_interpretation(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
const dx_validation_options & options() const noexcept
Get the validation options.
void check_type1_attribute(const core::dicom_dataset &dataset, core::dicom_tag tag, std::string_view name, std::vector< validation_finding > &findings) const
dx_iod_validator()=default
Construct validator with default options.
void check_pixel_data_consistency(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
void validate_patient_module(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
void validate_general_study_module(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
void validate_sop_common_module(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
void validate_dx_image_module(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
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_dx_detector_module(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
void set_options(const dx_validation_options &options)
Set validation options.
void check_type2_attribute(const core::dicom_dataset &dataset, core::dicom_tag tag, std::string_view name, std::vector< validation_finding > &findings) const
bool quick_check(const core::dicom_dataset &dataset) const
Quick check if dataset has minimum required attributes.
void validate_image_pixel_module(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
void validate_dx_positioning_module(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
validation_result validate_for_presentation(const core::dicom_dataset &dataset) const
Validate a For Presentation DX dataset.
DICOM Dataset - ordered collection of Data Elements.
DICOM Tag representation (Group, Element pairs)
bool is_for_presentation_dx(const core::dicom_dataset &dataset)
Check if dataset is a For Presentation DX image.
bool is_valid_dx_dataset(const core::dicom_dataset &dataset)
Quick check if a dataset is a valid DX image.
bool is_for_processing_dx(const core::dicom_dataset &dataset)
Check if dataset is a For Processing DX image.
validation_result validate_dx_iod(const core::dicom_dataset &dataset)
Validate a DX dataset with default options.
bool validate_processing_requirements
Validate For Processing specific requirements.
bool validate_pixel_data
Validate pixel data consistency (rows, columns, bits)
bool check_type1
Check Type 1 (required) attributes.
bool check_type2
Check Type 2 (required, can be empty) attributes.
bool validate_anatomy
Validate body part and view position.
bool validate_presentation_requirements
Validate For Presentation specific requirements.
bool strict_mode
Strict mode - treat warnings as errors.
bool validate_dx_specific
Validate DX-specific attributes (detector, acquisition)
bool check_conditional
Check Type 1C/2C (conditionally required) attributes.
bool allow_both_photometric
Allow both MONOCHROME1 and MONOCHROME2.
std::string_view name
Ultrasound Image IOD Validator.