PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
mg_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
26#ifndef PACS_SERVICES_VALIDATION_MG_IOD_VALIDATOR_HPP
27#define PACS_SERVICES_VALIDATION_MG_IOD_VALIDATOR_HPP
28
31#include "kcenon/pacs/services/validation/us_iod_validator.h" // For shared validation types
32
33#include <optional>
34#include <string>
35#include <vector>
36
38
39// =============================================================================
40// MG Validation Options
41// =============================================================================
42
52 bool check_type1 = true;
53
55 bool check_type2 = true;
56
58 bool check_conditional = true;
59
62
65
68
71
74
77
80
83
86
89
91 bool strict_mode = false;
92
95};
96
97// =============================================================================
98// MG IOD Validator
99// =============================================================================
100
163public:
167 mg_iod_validator() = default;
168
173 explicit mg_iod_validator(const mg_validation_options& options);
174
184 [[nodiscard]] validation_result validate(const core::dicom_dataset& dataset) const;
185
195 [[nodiscard]] validation_result
197
207 [[nodiscard]] validation_result
208 validate_for_processing(const core::dicom_dataset& dataset) const;
209
219 [[nodiscard]] validation_result
220 validate_laterality(const core::dicom_dataset& dataset) const;
221
231 [[nodiscard]] validation_result
232 validate_view_position(const core::dicom_dataset& dataset) const;
233
242 [[nodiscard]] validation_result
244
254 [[nodiscard]] bool quick_check(const core::dicom_dataset& dataset) const;
255
259 [[nodiscard]] const mg_validation_options& options() const noexcept;
260
264 void set_options(const mg_validation_options& options);
265
266private:
267 // Module validation methods
269 const core::dicom_dataset& dataset,
270 std::vector<validation_finding>& findings) const;
271
273 const core::dicom_dataset& dataset,
274 std::vector<validation_finding>& findings) const;
275
277 const core::dicom_dataset& dataset,
278 std::vector<validation_finding>& findings) const;
279
281 const core::dicom_dataset& dataset,
282 std::vector<validation_finding>& findings) const;
283
285 const core::dicom_dataset& dataset,
286 std::vector<validation_finding>& findings) const;
287
289 const core::dicom_dataset& dataset,
290 std::vector<validation_finding>& findings) const;
291
293 const core::dicom_dataset& dataset,
294 std::vector<validation_finding>& findings) const;
295
297 const core::dicom_dataset& dataset,
298 std::vector<validation_finding>& findings) const;
299
301 const core::dicom_dataset& dataset,
302 std::vector<validation_finding>& findings) const;
303
305 const core::dicom_dataset& dataset,
306 std::vector<validation_finding>& findings) const;
307
309 const core::dicom_dataset& dataset,
310 std::vector<validation_finding>& findings) const;
311
313 const core::dicom_dataset& dataset,
314 std::vector<validation_finding>& findings) const;
315
316 // Attribute validation helpers
318 const core::dicom_dataset& dataset,
319 core::dicom_tag tag,
320 std::string_view name,
321 std::vector<validation_finding>& findings) const;
322
324 const core::dicom_dataset& dataset,
325 core::dicom_tag tag,
326 std::string_view name,
327 std::vector<validation_finding>& findings) const;
328
329 void check_modality(
330 const core::dicom_dataset& dataset,
331 std::vector<validation_finding>& findings) const;
332
334 const core::dicom_dataset& dataset,
335 std::vector<validation_finding>& findings) const;
336
338 const core::dicom_dataset& dataset,
339 std::vector<validation_finding>& findings) const;
340
342 const core::dicom_dataset& dataset,
343 std::vector<validation_finding>& findings) const;
344
346 const core::dicom_dataset& dataset,
347 std::vector<validation_finding>& findings) const;
348
350 const core::dicom_dataset& dataset,
351 std::vector<validation_finding>& findings) const;
352
354};
355
356// =============================================================================
357// Convenience Functions
358// =============================================================================
359
366[[nodiscard]] validation_result validate_mg_iod(const core::dicom_dataset& dataset);
367
374[[nodiscard]] bool is_valid_mg_dataset(const core::dicom_dataset& dataset);
375
384[[nodiscard]] bool is_for_presentation_mg(const core::dicom_dataset& dataset);
385
394[[nodiscard]] bool is_for_processing_mg(const core::dicom_dataset& dataset);
395
402[[nodiscard]] bool has_breast_implant(const core::dicom_dataset& dataset);
403
413[[nodiscard]] bool is_screening_mammogram(const core::dicom_dataset& dataset);
414
415} // namespace kcenon::pacs::services::validation
416
417#endif // PACS_SERVICES_VALIDATION_MG_IOD_VALIDATOR_HPP
void check_modality(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
void check_laterality_consistency(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
void check_compression_force_range(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
validation_result validate_compression_force(const core::dicom_dataset &dataset) const
Validate compression force.
void validate_general_study_module(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
void validate_breast_implant_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_dx_anatomy_imaged_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.
void check_photometric_interpretation(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 validate_mammography_image_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
const mg_validation_options & options() const noexcept
Get the validation options.
void check_view_position_validity(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
validation_result validate_view_position(const core::dicom_dataset &dataset) const
Validate mammography view position.
validation_result validate(const core::dicom_dataset &dataset) const
Validate a DICOM dataset against Mammography IOD.
validation_result validate_laterality(const core::dicom_dataset &dataset) const
Validate breast laterality attribute.
void validate_patient_module(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
void validate_mammography_series_module(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
void set_options(const mg_validation_options &options)
Set validation options.
mg_iod_validator()=default
Construct validator with default options.
void validate_voi_lut_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_image_pixel_module(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
validation_result validate_for_processing(const core::dicom_dataset &dataset) const
Validate a For Processing mammography dataset.
void validate_acquisition_dose_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 mammography dataset.
void check_type1_attribute(const core::dicom_dataset &dataset, core::dicom_tag tag, std::string_view name, std::vector< validation_finding > &findings) const
DICOM Dataset - ordered collection of Data Elements.
DICOM Tag representation (Group, Element pairs)
bool is_screening_mammogram(const core::dicom_dataset &dataset)
Check if dataset is a screening mammogram.
validation_result validate_mg_iod(const core::dicom_dataset &dataset)
Validate a mammography dataset with default options.
bool is_for_presentation_mg(const core::dicom_dataset &dataset)
Check if dataset is a For Presentation mammography image.
bool is_valid_mg_dataset(const core::dicom_dataset &dataset)
Quick check if a dataset is a valid mammography image.
bool has_breast_implant(const core::dicom_dataset &dataset)
Check if dataset indicates breast implant presence.
bool is_for_processing_mg(const core::dicom_dataset &dataset)
Check if dataset is a For Processing mammography image.
bool validate_cad_attributes
Validate CAD-related attributes if present.
bool validate_pixel_data
Validate pixel data consistency (rows, columns, bits)
bool validate_dose_parameters
Validate acquisition dose parameters.
bool validate_view_position
Validate mammography view position (0018,5101)
bool allow_both_photometric
Allow both MONOCHROME1 and MONOCHROME2 photometric interpretations.
bool validate_mg_specific
Validate mammography-specific attributes.
bool check_type1
Check Type 1 (required) attributes.
bool strict_mode
Strict mode - treat warnings as errors.
bool check_conditional
Check Type 1C/2C (conditionally required) attributes.
bool check_type2
Check Type 2 (required, can be empty) attributes.
bool validate_laterality
Validate breast laterality (0020,0060)
bool validate_processing_requirements
Validate For Processing specific requirements.
bool validate_compression
Validate compression force (0018,11A2)
bool validate_presentation_requirements
Validate For Presentation specific requirements.
bool validate_implant_attributes
Validate breast implant attributes.
std::string_view name
Ultrasound Image IOD Validator.