PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
ct_processing_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
21#ifndef PACS_SERVICES_VALIDATION_CT_PROCESSING_IOD_VALIDATOR_HPP
22#define PACS_SERVICES_VALIDATION_CT_PROCESSING_IOD_VALIDATOR_HPP
23
26#include "kcenon/pacs/services/validation/us_iod_validator.h" // Reuse validation types
27
28#include <string>
29#include <vector>
30
32
33// =============================================================================
34// CT Processing-Specific DICOM Tags
35// =============================================================================
36
37namespace ct_processing_tags {
38
40inline constexpr core::dicom_tag kvp{0x0018, 0x0060};
41
43inline constexpr core::dicom_tag slice_thickness{0x0018, 0x0050};
44
46inline constexpr core::dicom_tag convolution_kernel{0x0018, 0x1210};
47
49inline constexpr core::dicom_tag image_position_patient{0x0020, 0x0032};
50
52inline constexpr core::dicom_tag image_orientation_patient{0x0020, 0x0037};
53
55inline constexpr core::dicom_tag decomposition_description{0x0018, 0x9380};
56
58inline constexpr core::dicom_tag decomposition_algorithm_id_seq{0x0018, 0x9381};
59
61inline constexpr core::dicom_tag acquisition_type{0x0018, 0x9302};
62
63} // namespace ct_processing_tags
64
65// =============================================================================
66// CT Processing Validation Options
67// =============================================================================
68
74 bool check_type1 = true;
75
77 bool check_type2 = true;
78
80 bool check_conditional = true;
81
84
87
89 bool strict_mode = false;
90};
91
92// =============================================================================
93// CT Processing IOD Validator
94// =============================================================================
95
134public:
139
145 const ct_processing_validation_options& options);
146
152 [[nodiscard]] validation_result validate(
153 const core::dicom_dataset& dataset) const;
154
160 [[nodiscard]] bool quick_check(
161 const core::dicom_dataset& dataset) const;
162
166 [[nodiscard]] const ct_processing_validation_options& options() const noexcept;
167
172
173private:
174 // Module validation methods
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
192 const core::dicom_dataset& dataset,
193 std::vector<validation_finding>& findings) const;
194
196 const core::dicom_dataset& dataset,
197 std::vector<validation_finding>& findings) const;
198
200 const core::dicom_dataset& dataset,
201 std::vector<validation_finding>& findings) const;
202
204 const core::dicom_dataset& dataset,
205 std::vector<validation_finding>& findings) const;
206
207 // Attribute validation helpers
209 const core::dicom_dataset& dataset,
210 core::dicom_tag tag,
211 std::string_view name,
212 std::vector<validation_finding>& findings) const;
213
215 const core::dicom_dataset& dataset,
216 core::dicom_tag tag,
217 std::string_view name,
218 std::vector<validation_finding>& findings) const;
219
220 void check_modality(
221 const core::dicom_dataset& dataset,
222 std::vector<validation_finding>& findings) const;
223
225 const core::dicom_dataset& dataset,
226 std::vector<validation_finding>& findings) const;
227
229};
230
231// =============================================================================
232// Convenience Functions
233// =============================================================================
234
241 const core::dicom_dataset& dataset);
242
248[[nodiscard]] bool is_valid_ct_processing_dataset(
249 const core::dicom_dataset& dataset);
250
251} // namespace kcenon::pacs::services::validation
252
253#endif // PACS_SERVICES_VALIDATION_CT_PROCESSING_IOD_VALIDATOR_HPP
bool quick_check(const core::dicom_dataset &dataset) const
Quick check if dataset has minimum required attributes.
void validate_general_series_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 CT For Processing IOD.
void check_type1_attribute(const core::dicom_dataset &dataset, core::dicom_tag tag, std::string_view name, std::vector< validation_finding > &findings) const
void check_pixel_data_consistency(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_frame_of_reference_module(const core::dicom_dataset &dataset, std::vector< validation_finding > &findings) const
ct_processing_iod_validator()=default
Construct validator with default options.
void validate_general_equipment_module(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 check_type2_attribute(const core::dicom_dataset &dataset, core::dicom_tag tag, std::string_view name, std::vector< validation_finding > &findings) const
void validate_image_pixel_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 set_options(const ct_processing_validation_options &options)
Set validation options.
void validate_ct_image_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
const ct_processing_validation_options & options() const noexcept
Get the validation options.
DICOM Dataset - ordered collection of Data Elements.
DICOM Tag representation (Group, Element pairs)
constexpr core::dicom_tag image_position_patient
Image Position (Patient) (0020,0032)
constexpr core::dicom_tag acquisition_type
Acquisition Type (0018,9302)
constexpr core::dicom_tag decomposition_algorithm_id_seq
Decomposition Algorithm Identification Sequence (0018,9381)
constexpr core::dicom_tag image_orientation_patient
Image Orientation (Patient) (0020,0037)
constexpr core::dicom_tag slice_thickness
Slice Thickness (0018,0050)
constexpr core::dicom_tag convolution_kernel
Convolution Kernel (0018,1210)
constexpr core::dicom_tag decomposition_description
Decomposition Description (0018,9380) - describes the material decomposition.
bool is_valid_ct_processing_dataset(const core::dicom_dataset &dataset)
Quick check if a dataset is a valid CT For Processing image.
validation_result validate_ct_processing_iod(const core::dicom_dataset &dataset)
Validate a CT For Processing dataset with default options.
bool check_type2
Check Type 2 (required, can be empty) attributes.
bool check_conditional
Check Type 1C/2C (conditionally required) attributes.
bool validate_ct_processing_params
Validate CT processing-specific attributes.
bool validate_pixel_data
Validate pixel data consistency (rows, columns, bits)
std::string_view name
Ultrasound Image IOD Validator.