PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
kcenon::pacs::services::validation::rt_iod_validator Class Reference

Unified validator for all RT IODs. More...

#include <rt_iod_validator.h>

Collaboration diagram for kcenon::pacs::services::validation::rt_iod_validator:
Collaboration graph

Public Member Functions

 rt_iod_validator ()=default
 
 rt_iod_validator (const rt_validation_options &options)
 
validation_result validate (const core::dicom_dataset &dataset) const
 Validate an RT dataset (auto-detects type)
 
bool quick_check (const core::dicom_dataset &dataset) const
 Quick check if dataset has minimum required RT attributes.
 
const rt_validation_optionsoptions () const noexcept
 
void set_options (const rt_validation_options &options)
 

Private Attributes

rt_validation_options options_
 

Detailed Description

Unified validator for all RT IODs.

Automatically detects the RT object type and applies appropriate validation. Supports RT Plan, RT Dose, RT Structure Set, RT Image, and treatment records.

Definition at line 336 of file rt_iod_validator.h.

Constructor & Destructor Documentation

◆ rt_iod_validator() [1/2]

kcenon::pacs::services::validation::rt_iod_validator::rt_iod_validator ( )
default

◆ rt_iod_validator() [2/2]

kcenon::pacs::services::validation::rt_iod_validator::rt_iod_validator ( const rt_validation_options & options)
explicit

Definition at line 1058 of file rt_iod_validator.cpp.

1059 : options_(options) {}

Member Function Documentation

◆ options()

const rt_validation_options & kcenon::pacs::services::validation::rt_iod_validator::options ( ) const
nodiscardnoexcept

Definition at line 1125 of file rt_iod_validator.cpp.

1125 {
1126 return options_;
1127}

References options_.

Referenced by set_options().

Here is the caller graph for this function:

◆ quick_check()

bool kcenon::pacs::services::validation::rt_iod_validator::quick_check ( const core::dicom_dataset & dataset) const
nodiscard

Quick check if dataset has minimum required RT attributes.

Parameters
datasetThe dataset to check
Returns
true if all Type 1 attributes are present

Definition at line 1116 of file rt_iod_validator.cpp.

1116 {
1117 // Try each RT type
1118 if (rt_plan_iod_validator(options_).quick_check(dataset)) return true;
1119 if (rt_dose_iod_validator(options_).quick_check(dataset)) return true;
1120 if (rt_structure_set_iod_validator(options_).quick_check(dataset)) return true;
1121
1122 return false;
1123}
bool quick_check(const core::dicom_dataset &dataset) const
Quick check if dataset has minimum required RT attributes.

References options_, and quick_check().

Referenced by kcenon::pacs::services::validation::is_valid_rt_dataset(), and quick_check().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_options()

void kcenon::pacs::services::validation::rt_iod_validator::set_options ( const rt_validation_options & options)

Definition at line 1129 of file rt_iod_validator.cpp.

1129 {
1130 options_ = options;
1131}
const rt_validation_options & options() const noexcept

References options(), and options_.

Here is the call graph for this function:

◆ validate()

validation_result kcenon::pacs::services::validation::rt_iod_validator::validate ( const core::dicom_dataset & dataset) const
nodiscard

Validate an RT dataset (auto-detects type)

Parameters
datasetThe dataset to validate
Returns
Validation result with all findings

Definition at line 1061 of file rt_iod_validator.cpp.

1061 {
1062 // Detect RT object type from SOP Class UID or Modality
1063 std::string sop_class;
1064 if (dataset.contains(tags::sop_class_uid)) {
1065 sop_class = dataset.get_string(tags::sop_class_uid);
1066 }
1067
1068 // Route to appropriate validator
1069 if (sop_class == sop_classes::rt_plan_storage_uid ||
1071 rt_plan_iod_validator validator(options_);
1072 return validator.validate(dataset);
1073 }
1074
1075 if (sop_class == sop_classes::rt_dose_storage_uid) {
1076 rt_dose_iod_validator validator(options_);
1077 return validator.validate(dataset);
1078 }
1079
1081 rt_structure_set_iod_validator validator(options_);
1082 return validator.validate(dataset);
1083 }
1084
1085 // Try to detect from Modality if SOP Class not recognized
1086 if (dataset.contains(tags::modality)) {
1087 auto modality = dataset.get_string(tags::modality);
1088
1089 if (modality == "RTPLAN") {
1090 rt_plan_iod_validator validator(options_);
1091 return validator.validate(dataset);
1092 }
1093 if (modality == "RTDOSE") {
1094 rt_dose_iod_validator validator(options_);
1095 return validator.validate(dataset);
1096 }
1097 if (modality == "RTSTRUCT") {
1098 rt_structure_set_iod_validator validator(options_);
1099 return validator.validate(dataset);
1100 }
1101 }
1102
1103 // Unknown RT type
1104 validation_result result;
1105 result.is_valid = false;
1106 result.findings.push_back({
1109 "Unable to determine RT object type from SOPClassUID or Modality",
1110 "RT-ERR-001"
1111 });
1112
1113 return result;
1114}
constexpr dicom_tag modality
Modality.
constexpr dicom_tag sop_class_uid
SOP Class UID.
constexpr std::string_view rt_structure_set_storage_uid
RT Structure Set Storage SOP Class UID.
Definition rt_storage.h:46
constexpr std::string_view rt_ion_plan_storage_uid
RT Ion Plan Storage SOP Class UID.
Definition rt_storage.h:66
constexpr std::string_view rt_dose_storage_uid
RT Dose Storage SOP Class UID.
Definition rt_storage.h:42
constexpr std::string_view rt_plan_storage_uid
RT Plan Storage SOP Class UID.
Definition rt_storage.h:38

References kcenon::pacs::core::dicom_dataset::contains(), kcenon::pacs::services::validation::error, kcenon::pacs::services::validation::validation_result::findings, kcenon::pacs::core::dicom_dataset::get_string(), kcenon::pacs::services::validation::validation_result::is_valid, kcenon::pacs::core::tags::modality, options_, kcenon::pacs::services::sop_classes::rt_dose_storage_uid, kcenon::pacs::services::sop_classes::rt_ion_plan_storage_uid, kcenon::pacs::services::sop_classes::rt_plan_storage_uid, kcenon::pacs::services::sop_classes::rt_structure_set_storage_uid, kcenon::pacs::core::tags::sop_class_uid, kcenon::pacs::services::validation::rt_dose_iod_validator::validate(), kcenon::pacs::services::validation::rt_plan_iod_validator::validate(), and kcenon::pacs::services::validation::rt_structure_set_iod_validator::validate().

Referenced by kcenon::pacs::services::validation::validate_rt_iod().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ options_

rt_validation_options kcenon::pacs::services::validation::rt_iod_validator::options_
private

Definition at line 359 of file rt_iod_validator.h.

Referenced by options(), quick_check(), set_options(), and validate().


The documentation for this class was generated from the following files: