24 "1.2.840.10008.1.2.1",
28 "1.2.840.10008.1.2.4.201",
30 "1.2.840.10008.1.2.4.70",
32 "1.2.840.10008.1.2.4.90",
45constexpr std::array<rt_sop_class_info, 10> rt_sop_classes = {{
49 "Radiation therapy treatment plan including beams and fractions",
56 "Radiation dose distribution (dose grid)",
62 "RT Structure Set Storage",
63 "Radiation therapy structure set (ROI contours)",
70 "Radiation therapy images (portal, DRR, etc.)",
76 "RT Beams Treatment Record Storage",
77 "Treatment delivery record for external beam therapy",
83 "RT Brachy Treatment Record Storage",
84 "Treatment delivery record for brachytherapy",
90 "RT Treatment Summary Record Storage",
91 "Summary of treatment delivery",
97 "RT Ion Plan Storage",
98 "Ion beam (proton, carbon) treatment plan",
104 "RT Ion Beams Treatment Record Storage",
105 "Treatment delivery record for ion beam therapy",
120constexpr size_t rt_sop_class_count = 9;
125 std::vector<std::string> result;
126 result.reserve(rt_sop_class_count);
128 for (
size_t i = 0; i < rt_sop_class_count; ++i) {
129 const auto& info = rt_sop_classes[i];
130 if (!info.is_retired || include_retired) {
131 result.emplace_back(info.uid);
138const rt_sop_class_info*
140 for (
size_t i = 0; i < rt_sop_class_count; ++i) {
141 if (rt_sop_classes[i].
uid ==
uid) {
142 return &rt_sop_classes[i];
158 return info !=
nullptr && info->has_pixel_data;
172 return "PROPHYLACTIC";
174 return "VERIFICATION";
186 if (value ==
"CURATIVE") {
189 if (value ==
"PALLIATIVE") {
192 if (value ==
"PROPHYLACTIC") {
195 if (value ==
"VERIFICATION") {
198 if (value ==
"MACHINE_QA") {
201 if (value ==
"RESEARCH") {
204 if (value ==
"SERVICE") {
219 return "TREATMENT_DEVICE";
225 if (value ==
"TREATMENT_DEVICE") {
248 if (value ==
"EFFECTIVE") {
251 if (value ==
"ERROR") {
274 return "FRACTION_SESSION";
276 return "BEAM_SESSION";
278 return "BRACHY_SESSION";
280 return "CONTROL_POINT";
288 if (value ==
"PLAN") {
291 if (value ==
"MULTI_PLAN") {
294 if (value ==
"FRACTION") {
297 if (value ==
"BEAM") {
300 if (value ==
"BRACHY") {
303 if (value ==
"FRACTION_SESSION") {
306 if (value ==
"BEAM_SESSION") {
309 if (value ==
"BRACHY_SESSION") {
312 if (value ==
"CONTROL_POINT") {
315 if (value ==
"RECORD") {
336 if (value ==
"RELATIVE") {
361 return "TREATED_VOLUME";
363 return "IRRAD_VOLUME";
367 return "BRACHY_CHANNEL";
369 return "BRACHY_ACCESSORY";
371 return "BRACHY_SRC_APPL";
373 return "BRACHY_CHNL_SHLD";
379 return "DOSE_REGION";
381 return "CONTRAST_AGENT";
387 return "REGISTRATION";
397 if (value ==
"EXTERNAL") {
400 if (value ==
"PTV") {
403 if (value ==
"CTV") {
406 if (value ==
"GTV") {
409 if (value ==
"ORGAN") {
412 if (value ==
"AVOIDANCE") {
415 if (value ==
"TREATED_VOLUME") {
418 if (value ==
"IRRAD_VOLUME") {
421 if (value ==
"BOLUS") {
424 if (value ==
"BRACHY_CHANNEL") {
427 if (value ==
"BRACHY_ACCESSORY") {
430 if (value ==
"BRACHY_SRC_APPL") {
433 if (value ==
"BRACHY_CHNL_SHLD") {
436 if (value ==
"SUPPORT") {
439 if (value ==
"FIXATION") {
442 if (value ==
"DOSE_REGION") {
445 if (value ==
"CONTRAST_AGENT") {
448 if (value ==
"CAVITY") {
451 if (value ==
"MARKER") {
454 if (value ==
"REGISTRATION") {
457 if (value ==
"ISOCENTER") {
460 if (value ==
"CONTROL") {
475 return "SEMIAUTOMATIC";
484 if (value ==
"AUTOMATIC") {
487 if (value ==
"SEMIAUTOMATIC") {
508 if (value ==
"DYNAMIC") {
535 if (value ==
"PHOTON") {
538 if (value ==
"ELECTRON") {
541 if (value ==
"NEUTRON") {
544 if (value ==
"PROTON") {
547 if (value ==
"ION") {
562 return "OPEN_PORTFILM";
564 return "TRMT_PORTFILM";
566 return "CONTINUATION";
575 if (value ==
"TREATMENT") {
578 if (value ==
"OPEN_PORTFILM") {
581 if (value ==
"TRMT_PORTFILM") {
584 if (value ==
"CONTINUATION") {
587 if (value ==
"SETUP") {
614 if (value ==
"AXIAL") {
617 if (value ==
"LOCALIZER") {
620 if (value ==
"DRR") {
623 if (value ==
"PORTAL") {
626 if (value ==
"FLUENCE") {
rt_plan_intent parse_rt_plan_intent(std::string_view value) noexcept
Parse RT plan intent from DICOM string.
const rt_sop_class_info * get_rt_sop_class_info(std::string_view uid) noexcept
Get information about a specific RT SOP Class.
rt_dose_units parse_rt_dose_units(std::string_view value) noexcept
Parse RT dose units from DICOM string.
constexpr std::string_view rt_structure_set_storage_uid
RT Structure Set Storage SOP Class UID.
constexpr std::string_view rt_image_storage_uid
RT Image Storage SOP Class UID.
constexpr std::string_view rt_ion_plan_storage_uid
RT Ion Plan Storage SOP Class UID.
rt_roi_generation_algorithm
RT ROI Generation Algorithm.
@ automatic
AUTOMATIC - Automated segmentation.
@ manual
MANUAL - Manual contouring.
@ semiautomatic
SEMIAUTOMATIC - Semi-automated with user input.
constexpr std::string_view rt_dose_storage_uid
RT Dose Storage SOP Class UID.
rt_roi_generation_algorithm parse_rt_roi_generation_algorithm(std::string_view value) noexcept
Parse RT ROI generation algorithm from DICOM string.
std::vector< std::string > get_rt_transfer_syntaxes()
Get recommended transfer syntaxes for RT objects.
rt_image_plane parse_rt_image_plane(std::string_view value) noexcept
Parse RT image plane from DICOM string.
bool rt_sop_class_has_pixel_data(std::string_view uid) noexcept
Check if a SOP Class UID contains pixel data.
rt_treatment_delivery_type
RT Treatment Delivery Type.
@ treatment
TREATMENT - Actual treatment.
@ continuation
CONTINUATION - Continuation of interrupted treatment.
@ setup
SETUP - Setup verification.
@ trmt_portfilm
TRMT_PORTFILM - Treatment field portal image.
@ open_portfilm
OPEN_PORTFILM - Open field portal image.
rt_plan_geometry parse_rt_plan_geometry(std::string_view value) noexcept
Parse RT plan geometry from DICOM string.
rt_beam_type parse_rt_beam_type(std::string_view value) noexcept
Parse RT beam type from DICOM string.
rt_dose_type
RT Dose Type.
@ physical
PHYSICAL - Physical dose.
@ effective
EFFECTIVE - Effective dose (RBE weighted)
@ error
ERROR - Dose error/uncertainty.
bool is_rt_storage_sop_class(std::string_view uid) noexcept
Check if a SOP Class UID is an RT Storage SOP Class.
rt_dose_summation_type parse_rt_dose_summation_type(std::string_view value) noexcept
Parse RT dose summation type from DICOM string.
bool is_rt_plan_sop_class(std::string_view uid) noexcept
Check if a SOP Class UID is an RT Plan type.
constexpr std::string_view rt_beams_treatment_record_storage_uid
RT Beams Treatment Record Storage SOP Class UID.
rt_roi_interpreted_type parse_rt_roi_interpreted_type(std::string_view value) noexcept
Parse RT ROI interpreted type from DICOM string.
constexpr std::string_view rt_ion_beams_treatment_record_storage_uid
RT Ion Beams Treatment Record Storage SOP Class UID.
std::vector< std::string > get_rt_storage_sop_classes(bool include_retired=true)
Get all RT Storage SOP Class UIDs.
rt_dose_summation_type
RT Dose Summation Type.
@ fraction
FRACTION - Single fraction dose.
@ brachy_session
BRACHY_SESSION - Brachytherapy session dose.
@ beam_session
BEAM_SESSION - Single beam session dose.
@ brachy
BRACHY - Brachytherapy dose.
@ beam
BEAM - Single beam dose.
@ plan
PLAN - Single plan dose.
@ control_point
CONTROL_POINT - Single control point dose.
@ fraction_session
FRACTION_SESSION - Single fraction session dose.
@ multi_plan
MULTI_PLAN - Multi-plan sum.
@ record
RECORD - Treatment record dose.
rt_dose_type parse_rt_dose_type(std::string_view value) noexcept
Parse RT dose type from DICOM string.
rt_plan_geometry
RT Plan Geometry.
@ treatment_device
TREATMENT_DEVICE - Device-based plan.
@ patient
PATIENT - Patient-based plan.
rt_radiation_type parse_rt_radiation_type(std::string_view value) noexcept
Parse RT radiation type from DICOM string.
rt_plan_intent
RT Plan Intent.
@ curative
CURATIVE - Treatment with curative intent.
@ prophylactic
PROPHYLACTIC - Preventive treatment.
@ machine_qa
MACHINE_QA - Machine quality assurance.
@ research
RESEARCH - Research protocol.
@ service
SERVICE - Equipment service.
@ verification
VERIFICATION - Plan verification.
@ palliative
PALLIATIVE - Treatment for symptom relief.
rt_radiation_type
RT Radiation Type.
@ electron
ELECTRON - Electrons.
@ ion
ION - Heavy ions (carbon, etc.)
@ photon
PHOTON - X-ray photons.
@ proton
PROTON - Protons.
@ neutron
NEUTRON - Neutrons.
rt_image_plane
RT Image Type values (as used in Image Type attribute)
@ axial
AXIAL - Axial plane.
@ drr
DRR - Digitally Reconstructed Radiograph.
@ portal
PORTAL - Portal image.
@ fluence
FLUENCE - Fluence map.
@ localizer
LOCALIZER - Localizer/scout image.
rt_dose_units
RT Dose Units.
@ gy
GY - Gray (absorbed dose)
@ relative
RELATIVE - Relative dose.
constexpr std::string_view rt_brachy_treatment_record_storage_uid
RT Brachy Treatment Record Storage SOP Class UID.
constexpr std::string_view rt_treatment_summary_record_storage_uid
RT Treatment Summary Record Storage SOP Class UID.
rt_roi_interpreted_type
RT ROI Interpreted Type.
@ treated_volume
TREATED_VOLUME - Treated volume.
@ contrast_agent
CONTRAST_AGENT - Contrast agent region.
@ support
SUPPORT - Patient support structure.
@ registration
REGISTRATION - Registration structure.
@ gtv
GTV - Gross Tumor Volume.
@ control_point
CONTROL - Control point marker.
@ isocenter
ISOCENTER - Isocenter point.
@ organ
ORGAN - Organ at risk.
@ external
EXTERNAL - External patient surface.
@ fixation
FIXATION - Patient fixation device.
@ dose_region
DOSE_REGION - Dose reference region.
@ brachy_chnl_shld
BRACHY_CHNL_SHLD - Brachytherapy channel shield.
@ irrad_volume
IRRAD_VOLUME - Irradiated volume.
@ brachy_channel
BRACHY_CHANNEL - Brachytherapy channel.
@ brachy_accessory
BRACHY_ACCESSORY - Brachytherapy accessory.
@ bolus
BOLUS - Bolus material.
@ marker
MARKER - Marker structure.
@ ctv
CTV - Clinical Target Volume.
@ avoidance
AVOIDANCE - Avoidance structure.
@ ptv
PTV - Planning Target Volume.
@ brachy_src_appl
BRACHY_SRC_APPL - Brachytherapy source applicator.
@ cavity
CAVITY - Cavity structure.
constexpr std::string_view rt_plan_storage_uid
RT Plan Storage SOP Class UID.
rt_treatment_delivery_type parse_rt_treatment_delivery_type(std::string_view value) noexcept
Parse RT treatment delivery type from DICOM string.
rt_beam_type
RT Beam Type.
@ dynamic
DYNAMIC - Dynamic beam (IMRT, VMAT)
@ static_beam
STATIC - Static beam.
std::string_view to_string(dx_photometric_interpretation interp) noexcept
Convert photometric interpretation enum to DICOM string.
Radiation Therapy (RT) Storage SOP Classes.