PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
sop_class_registry.cpp
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
24
25#include <algorithm>
26
27namespace kcenon::pacs::services {
28
29// =============================================================================
30// Singleton Implementation
31// =============================================================================
32
37
41
42// =============================================================================
43// Query Methods
44// =============================================================================
45
46bool sop_class_registry::is_supported(std::string_view uid) const {
47 return registry_.find(std::string(uid)) != registry_.end();
48}
49
50const sop_class_info* sop_class_registry::get_info(std::string_view uid) const {
51 auto it = registry_.find(std::string(uid));
52 if (it != registry_.end()) {
53 return &it->second;
54 }
55 return nullptr;
56}
57
58std::vector<std::string>
60 std::vector<std::string> result;
61 for (const auto& [uid, info] : registry_) {
62 if (info.category == category) {
63 result.push_back(uid);
64 }
65 }
66 return result;
67}
68
69std::vector<std::string>
70sop_class_registry::get_by_modality(modality_type modality, bool include_retired) const {
71 std::vector<std::string> result;
72 for (const auto& [uid, info] : registry_) {
73 if (info.category == sop_class_category::storage &&
74 info.modality == modality &&
75 (include_retired || !info.is_retired)) {
76 result.push_back(uid);
77 }
78 }
79 return result;
80}
81
82std::vector<std::string>
84 std::vector<std::string> result;
85 for (const auto& [uid, info] : registry_) {
86 if (info.category == sop_class_category::storage &&
87 (include_retired || !info.is_retired)) {
88 result.push_back(uid);
89 }
90 }
91 return result;
92}
93
94std::vector<std::string> sop_class_registry::get_all() const {
95 std::vector<std::string> result;
96 result.reserve(registry_.size());
97 for (const auto& [uid, info] : registry_) {
98 result.push_back(uid);
99 }
100 return result;
101}
102
104 auto [it, inserted] = registry_.emplace(
105 std::string(info.uid),
106 info
107 );
108 return inserted;
109}
110
111// =============================================================================
112// Modality Conversion
113// =============================================================================
114
115std::string_view sop_class_registry::modality_to_string(modality_type modality) noexcept {
116 switch (modality) {
117 case modality_type::ct: return "CT";
118 case modality_type::mr: return "MR";
119 case modality_type::us: return "US";
120 case modality_type::xa: return "XA";
121 case modality_type::xrf: return "RF";
122 case modality_type::cr: return "CR";
123 case modality_type::dx: return "DX";
124 case modality_type::mg: return "MG";
125 case modality_type::nm: return "NM";
126 case modality_type::pet: return "PT";
127 case modality_type::rt: return "RT";
128 case modality_type::sc: return "SC";
129 case modality_type::sr: return "SR";
130 case modality_type::seg: return "SEG";
131 case modality_type::sm: return "SM";
132 case modality_type::op: return "OP";
133 case modality_type::pmap: return "RWV";
134 case modality_type::other: return "OT";
135 }
136 return "OT";
137}
138
139modality_type sop_class_registry::parse_modality(std::string_view modality) noexcept {
140 if (modality == "CT") return modality_type::ct;
141 if (modality == "MR") return modality_type::mr;
142 if (modality == "US") return modality_type::us;
143 if (modality == "XA") return modality_type::xa;
144 if (modality == "RF" || modality == "XRF") return modality_type::xrf;
145 if (modality == "CR") return modality_type::cr;
146 if (modality == "DX") return modality_type::dx;
147 if (modality == "MG") return modality_type::mg;
148 if (modality == "NM") return modality_type::nm;
149 if (modality == "PT" || modality == "PET") return modality_type::pet;
150 // RT modalities: RTPLAN, RTDOSE, RTSTRUCT, RTIMAGE, RTRECORD
151 if (modality == "RT" || modality == "RTPLAN" || modality == "RTDOSE" ||
152 modality == "RTSTRUCT" || modality == "RTIMAGE" || modality == "RTRECORD") {
153 return modality_type::rt;
154 }
155 if (modality == "SC") return modality_type::sc;
156 if (modality == "SR") return modality_type::sr;
157 if (modality == "SEG") return modality_type::seg;
158 if (modality == "SM") return modality_type::sm;
159 if (modality == "OP" || modality == "OPT") return modality_type::op;
160 if (modality == "RWV" || modality == "PMAP") return modality_type::pmap;
162}
163
164// =============================================================================
165// Registration Methods
166// =============================================================================
167
187
189 // US Image Storage
190 registry_.emplace(
194 "US Image Storage",
197 false,
198 false
199 }
200 );
201
202 // US Multi-frame Image Storage
203 registry_.emplace(
207 "US Multi-frame Image Storage",
210 false,
211 true
212 }
213 );
214
215 // US Image Storage (Retired)
216 registry_.emplace(
220 "US Image Storage (Retired)",
223 true,
224 false
225 }
226 );
227
228 // US Multi-frame Image Storage (Retired)
229 registry_.emplace(
233 "US Multi-frame Image Storage (Retired)",
236 true,
237 true
238 }
239 );
240}
241
243 // XA Image Storage
244 registry_.emplace(
248 "X-Ray Angiographic Image Storage",
251 false,
252 true // supports multiframe
253 }
254 );
255
256 // Enhanced XA Image Storage
257 registry_.emplace(
261 "Enhanced X-Ray Angiographic Image Storage",
264 false,
265 true
266 }
267 );
268
269 // XRF Image Storage
270 registry_.emplace(
274 "X-Ray Radiofluoroscopic Image Storage",
277 false,
278 true
279 }
280 );
281
282 // X-Ray 3D Angiographic Image Storage
283 registry_.emplace(
287 "X-Ray 3D Angiographic Image Storage",
290 false,
291 true
292 }
293 );
294
295 // X-Ray 3D Craniofacial Image Storage
296 registry_.emplace(
300 "X-Ray 3D Craniofacial Image Storage",
303 false,
304 true
305 }
306 );
307}
308
310 // Digital X-Ray Image Storage - For Presentation
311 registry_.emplace(
315 "Digital X-Ray Image Storage - For Presentation",
318 false,
319 false
320 }
321 );
322
323 // Digital X-Ray Image Storage - For Processing
324 registry_.emplace(
328 "Digital X-Ray Image Storage - For Processing",
331 false,
332 false
333 }
334 );
335
336 // Digital Mammography X-Ray Image Storage - For Presentation
337 registry_.emplace(
341 "Digital Mammography X-Ray Image Storage - For Presentation",
344 false,
345 false
346 }
347 );
348
349 // Digital Mammography X-Ray Image Storage - For Processing
350 registry_.emplace(
354 "Digital Mammography X-Ray Image Storage - For Processing",
357 false,
358 false
359 }
360 );
361
362 // Digital Intra-Oral X-Ray Image Storage - For Presentation
363 registry_.emplace(
367 "Digital Intra-Oral X-Ray Image Storage - For Presentation",
369 modality_type::dx, // Intra-oral uses DX modality
370 false,
371 false
372 }
373 );
374
375 // Digital Intra-Oral X-Ray Image Storage - For Processing
376 registry_.emplace(
380 "Digital Intra-Oral X-Ray Image Storage - For Processing",
382 modality_type::dx, // Intra-oral uses DX modality
383 false,
384 false
385 }
386 );
387}
388
390 // CT Image Storage
391 registry_.emplace(
392 "1.2.840.10008.5.1.4.1.1.2",
394 "1.2.840.10008.5.1.4.1.1.2",
395 "CT Image Storage",
398 false,
399 false
400 }
401 );
402
403 // Enhanced CT Image Storage
404 registry_.emplace(
405 "1.2.840.10008.5.1.4.1.1.2.1",
407 "1.2.840.10008.5.1.4.1.1.2.1",
408 "Enhanced CT Image Storage",
411 false,
412 true
413 }
414 );
415
416 // CT For Processing Image Storage (multi-energy/spectral CT)
417 registry_.emplace(
418 "1.2.840.10008.5.1.4.1.1.2.2",
420 "1.2.840.10008.5.1.4.1.1.2.2",
421 "CT For Processing Image Storage",
424 false,
425 false
426 }
427 );
428}
429
431 // MR Image Storage
432 registry_.emplace(
433 "1.2.840.10008.5.1.4.1.1.4",
435 "1.2.840.10008.5.1.4.1.1.4",
436 "MR Image Storage",
439 false,
440 false
441 }
442 );
443
444 // Enhanced MR Image Storage
445 registry_.emplace(
446 "1.2.840.10008.5.1.4.1.1.4.1",
448 "1.2.840.10008.5.1.4.1.1.4.1",
449 "Enhanced MR Image Storage",
452 false,
453 true
454 }
455 );
456}
457
459 // PET Image Storage
460 registry_.emplace(
464 "PET Image Storage",
467 false,
468 false
469 }
470 );
471
472 // Enhanced PET Image Storage
473 registry_.emplace(
477 "Enhanced PET Image Storage",
480 false,
481 true // supports multiframe
482 }
483 );
484
485 // Legacy Converted Enhanced PET Image Storage
486 registry_.emplace(
490 "Legacy Converted Enhanced PET Image Storage",
493 false,
494 true // supports multiframe
495 }
496 );
497}
498
500 // NM Image Storage
501 registry_.emplace(
505 "NM Image Storage",
508 false,
509 true // supports multiframe (SPECT, dynamic, gated)
510 }
511 );
512
513 // NM Image Storage (Retired)
514 registry_.emplace(
518 "NM Image Storage (Retired)",
521 true, // retired
522 true // supports multiframe
523 }
524 );
525}
526
528 // RT Plan Storage
529 registry_.emplace(
533 "RT Plan Storage",
536 false,
537 false // no multiframe
538 }
539 );
540
541 // RT Dose Storage
542 registry_.emplace(
546 "RT Dose Storage",
549 false,
550 true // supports multiframe (dose grids)
551 }
552 );
553
554 // RT Structure Set Storage
555 registry_.emplace(
559 "RT Structure Set Storage",
562 false,
563 false // no multiframe
564 }
565 );
566
567 // RT Image Storage
568 registry_.emplace(
572 "RT Image Storage",
575 false,
576 false // typically single frame
577 }
578 );
579
580 // RT Beams Treatment Record Storage
581 registry_.emplace(
585 "RT Beams Treatment Record Storage",
588 false,
589 false
590 }
591 );
592
593 // RT Brachy Treatment Record Storage
594 registry_.emplace(
598 "RT Brachy Treatment Record Storage",
601 false,
602 false
603 }
604 );
605
606 // RT Treatment Summary Record Storage
607 registry_.emplace(
611 "RT Treatment Summary Record Storage",
614 false,
615 false
616 }
617 );
618
619 // RT Ion Plan Storage
620 registry_.emplace(
624 "RT Ion Plan Storage",
627 false,
628 false
629 }
630 );
631
632 // RT Ion Beams Treatment Record Storage
633 registry_.emplace(
637 "RT Ion Beams Treatment Record Storage",
640 false,
641 false
642 }
643 );
644}
645
647 // Segmentation Storage
648 registry_.emplace(
652 "Segmentation Storage",
655 false,
656 true // supports multiframe
657 }
658 );
659
660 // Surface Segmentation Storage
661 registry_.emplace(
665 "Surface Segmentation Storage",
668 false,
669 false
670 }
671 );
672
673 // Heightmap Segmentation Storage (Supplement 240)
674 registry_.emplace(
678 "Heightmap Segmentation Storage",
681 false,
682 true // supports multiframe (enhanced multi-frame architecture)
683 }
684 );
685
686 // Label Map Segmentation Storage (Supplement 243)
687 registry_.emplace(
691 "Label Map Segmentation Storage",
694 false,
695 true // supports multiframe (enhanced multi-frame architecture)
696 }
697 );
698}
699
701 // Basic Text SR Storage
702 registry_.emplace(
706 "Basic Text SR Storage",
709 false,
710 false
711 }
712 );
713
714 // Enhanced SR Storage
715 registry_.emplace(
719 "Enhanced SR Storage",
722 false,
723 false
724 }
725 );
726
727 // Comprehensive SR Storage
728 registry_.emplace(
732 "Comprehensive SR Storage",
735 false,
736 false
737 }
738 );
739
740 // Comprehensive 3D SR Storage
741 registry_.emplace(
745 "Comprehensive 3D SR Storage",
748 false,
749 false
750 }
751 );
752
753 // Extensible SR Storage
754 registry_.emplace(
758 "Extensible SR Storage",
761 false,
762 false
763 }
764 );
765
766 // Key Object Selection Document Storage
767 registry_.emplace(
771 "Key Object Selection Document Storage",
774 false,
775 false
776 }
777 );
778
779 // Mammography CAD SR Storage
780 registry_.emplace(
784 "Mammography CAD SR Storage",
787 false,
788 false
789 }
790 );
791
792 // Chest CAD SR Storage
793 registry_.emplace(
797 "Chest CAD SR Storage",
800 false,
801 false
802 }
803 );
804
805 // Colon CAD SR Storage
806 registry_.emplace(
810 "Colon CAD SR Storage",
813 false,
814 false
815 }
816 );
817
818 // X-Ray Radiation Dose SR Storage
819 registry_.emplace(
823 "X-Ray Radiation Dose SR Storage",
826 false,
827 false
828 }
829 );
830}
831
833 // Basic Film Session SOP Class (PS3.4 Annex H)
834 registry_.emplace(
835 "1.2.840.10008.5.1.1.1",
837 "1.2.840.10008.5.1.1.1",
838 "Basic Film Session",
841 false,
842 false
843 }
844 );
845
846 // Basic Film Box SOP Class
847 registry_.emplace(
848 "1.2.840.10008.5.1.1.2",
850 "1.2.840.10008.5.1.1.2",
851 "Basic Film Box",
854 false,
855 false
856 }
857 );
858
859 // Basic Grayscale Image Box SOP Class
860 registry_.emplace(
861 "1.2.840.10008.5.1.1.4",
863 "1.2.840.10008.5.1.1.4",
864 "Basic Grayscale Image Box",
867 false,
868 false
869 }
870 );
871
872 // Basic Color Image Box SOP Class
873 registry_.emplace(
874 "1.2.840.10008.5.1.1.4.1",
876 "1.2.840.10008.5.1.1.4.1",
877 "Basic Color Image Box",
880 false,
881 false
882 }
883 );
884
885 // Printer SOP Class
886 registry_.emplace(
887 "1.2.840.10008.5.1.1.16",
889 "1.2.840.10008.5.1.1.16",
890 "Printer",
893 false,
894 false
895 }
896 );
897
898 // Basic Grayscale Print Management Meta SOP Class
899 registry_.emplace(
900 "1.2.840.10008.5.1.1.9",
902 "1.2.840.10008.5.1.1.9",
903 "Basic Grayscale Print Management Meta",
906 false,
907 false
908 }
909 );
910
911 // Basic Color Print Management Meta SOP Class
912 registry_.emplace(
913 "1.2.840.10008.5.1.1.18",
915 "1.2.840.10008.5.1.1.18",
916 "Basic Color Print Management Meta",
919 false,
920 false
921 }
922 );
923}
924
926 // UPS Push SOP Class (PS3.4 Annex CC)
927 registry_.emplace(
928 "1.2.840.10008.5.1.4.34.6.1",
930 "1.2.840.10008.5.1.4.34.6.1",
931 "Unified Procedure Step - Push SOP Class",
934 false,
935 false
936 }
937 );
938
939 // UPS Watch SOP Class (PS3.4 Annex CC)
940 registry_.emplace(
941 "1.2.840.10008.5.1.4.34.6.2",
943 "1.2.840.10008.5.1.4.34.6.2",
944 "Unified Procedure Step - Watch SOP Class",
947 false,
948 false
949 }
950 );
951
952 // UPS Pull SOP Class (PS3.4 Annex CC)
953 registry_.emplace(
954 "1.2.840.10008.5.1.4.34.6.3",
956 "1.2.840.10008.5.1.4.34.6.3",
957 "Unified Procedure Step - Pull SOP Class",
960 false,
961 false
962 }
963 );
964
965 // UPS Event SOP Class (PS3.4 Annex CC)
966 registry_.emplace(
967 "1.2.840.10008.5.1.4.34.6.4",
969 "1.2.840.10008.5.1.4.34.6.4",
970 "Unified Procedure Step - Event SOP Class",
973 false,
974 false
975 }
976 );
977
978 // UPS Query SOP Class (PS3.4 Annex CC)
979 registry_.emplace(
980 "1.2.840.10008.5.1.4.34.6.5",
982 "1.2.840.10008.5.1.4.34.6.5",
983 "Unified Procedure Step - Query SOP Class",
986 false,
987 false
988 }
989 );
990}
991
993 // VL Whole Slide Microscopy Image Storage
994 registry_.emplace(
998 "VL Whole Slide Microscopy Image Storage",
1001 false,
1002 true // supports multiframe (tiled images)
1003 }
1004 );
1005}
1006
1008 // Ophthalmic Photography 8 Bit Image Storage
1009 registry_.emplace(
1013 "Ophthalmic Photography 8 Bit Image Storage",
1016 false,
1017 false
1018 }
1019 );
1020
1021 // Ophthalmic Photography 16 Bit Image Storage
1022 registry_.emplace(
1026 "Ophthalmic Photography 16 Bit Image Storage",
1029 false,
1030 false
1031 }
1032 );
1033
1034 // Ophthalmic Tomography Image Storage (OCT)
1035 registry_.emplace(
1039 "Ophthalmic Tomography Image Storage",
1042 false,
1043 true // OCT produces multi-frame B-scan volumes
1044 }
1045 );
1046
1047 // Wide Field Ophthalmic Photography SOP Class Storage
1048 registry_.emplace(
1052 "Wide Field Ophthalmic Photography Storage",
1055 false,
1056 false
1057 }
1058 );
1059
1060 // Ophthalmic OCT B-scan Volume Analysis Storage
1061 registry_.emplace(
1065 "Ophthalmic OCT B-scan Volume Analysis Storage",
1068 false,
1069 true // B-scan volume analysis is multi-frame
1070 }
1071 );
1072}
1073
1075 // Parametric Map Storage
1076 registry_.emplace(
1080 "Parametric Map Storage",
1083 false,
1084 true // always multi-frame
1085 }
1086 );
1087}
1088
1090 // Register all waveform storage SOP classes
1091 auto waveform_classes = sop_classes::get_waveform_storage_sop_classes(true, true);
1092 for (const auto& uid : waveform_classes) {
1093 const auto* wf_info = sop_classes::get_waveform_sop_class_info(uid);
1094 if (wf_info) {
1095 registry_.emplace(
1096 uid,
1098 wf_info->uid,
1099 wf_info->name,
1102 wf_info->is_retired,
1103 false // waveform objects are not multiframe images
1104 }
1105 );
1106 }
1107 }
1108}
1109
1111 // CR Image Storage
1112 registry_.emplace(
1113 "1.2.840.10008.5.1.4.1.1.1",
1115 "1.2.840.10008.5.1.4.1.1.1",
1116 "CR Image Storage",
1119 false,
1120 false
1121 }
1122 );
1123
1124 // Note: DX SOP classes are now registered in register_dx_sop_classes()
1125
1126 // Secondary Capture Image Storage
1127 registry_.emplace(
1128 "1.2.840.10008.5.1.4.1.1.7",
1130 "1.2.840.10008.5.1.4.1.1.7",
1131 "Secondary Capture Image Storage",
1134 false,
1135 false
1136 }
1137 );
1138
1139 // Verification SOP Class
1140 registry_.emplace(
1141 "1.2.840.10008.1.1",
1143 "1.2.840.10008.1.1",
1144 "Verification SOP Class",
1147 false,
1148 false
1149 }
1150 );
1151
1152 // Storage Commitment Push Model SOP Class (PS3.4 Annex J)
1153 registry_.emplace(
1157 "Storage Commitment Push Model",
1160 false,
1161 false
1162 }
1163 );
1164}
1165
1166// =============================================================================
1167// Convenience Functions
1168// =============================================================================
1169
1170bool is_storage_sop_class(std::string_view uid) {
1171 const auto* info = sop_class_registry::instance().get_info(uid);
1172 return info != nullptr && info->category == sop_class_category::storage;
1173}
1174
1176 const auto* info = sop_class_registry::instance().get_info(uid);
1177 if (info != nullptr && info->category == sop_class_category::storage) {
1178 return info->modality;
1179 }
1180 return modality_type::other;
1181}
1182
1183std::string_view get_sop_class_name(std::string_view uid) {
1184 const auto* info = sop_class_registry::instance().get_info(uid);
1185 if (info != nullptr) {
1186 return info->name;
1187 }
1188 return "Unknown";
1189}
1190
1191} // namespace kcenon::pacs::services
const sop_class_info * get_info(std::string_view uid) const
Get information about a SOP Class.
std::vector< std::string > get_all_storage_classes(bool include_retired=true) const
Get all storage SOP Classes.
static modality_type parse_modality(std::string_view modality) noexcept
Parse a modality string to enum.
bool register_sop_class(const sop_class_info &info)
Register a new SOP Class.
std::vector< std::string > get_by_category(sop_class_category category) const
Get all SOP Classes in a category.
std::vector< std::string > get_all() const
Get all registered SOP Class UIDs.
static std::string_view modality_to_string(modality_type modality) noexcept
Get the modality string for a modality type.
bool is_supported(std::string_view uid) const
Check if a SOP Class UID is supported.
static sop_class_registry & instance()
Get the singleton instance.
std::unordered_map< std::string, sop_class_info > registry_
std::vector< std::string > get_by_modality(modality_type modality, bool include_retired=true) const
Get all storage SOP Classes for a modality.
Digital X-Ray (DX) Image Storage SOP Classes.
constexpr std::string_view comprehensive_sr_storage_uid
Comprehensive SR Storage SOP Class UID.
Definition sr_storage.h:46
constexpr std::string_view dx_image_storage_for_processing_uid
Digital X-Ray Image Storage - For Processing SOP Class UID Used for raw detector data requiring addit...
Definition dx_storage.h:49
constexpr std::string_view ophthalmic_oct_bscan_analysis_storage_uid
Ophthalmic Optical Coherence Tomography B-scan Volume Analysis Storage.
constexpr std::string_view colon_cad_sr_storage_uid
Colon CAD SR Storage SOP Class UID.
Definition sr_storage.h:71
constexpr std::string_view mammography_cad_sr_storage_uid
Mammography CAD SR Storage SOP Class UID.
Definition sr_storage.h:63
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_image_storage_uid
RT Image Storage SOP Class UID.
Definition rt_storage.h:50
const waveform_sop_class_info * get_waveform_sop_class_info(std::string_view uid) noexcept
Get information about a specific Waveform SOP Class.
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 pet_image_storage_uid
PET Image Storage SOP Class UID.
Definition pet_storage.h:37
constexpr std::string_view label_map_segmentation_storage_uid
Label Map Segmentation Storage SOP Class UID (Supplement 243)
Definition seg_storage.h:50
constexpr std::string_view ophthalmic_photo_16bit_storage_uid
Ophthalmic Photography 16 Bit Image Storage.
constexpr std::string_view rt_dose_storage_uid
RT Dose Storage SOP Class UID.
Definition rt_storage.h:42
constexpr std::string_view enhanced_xa_image_storage_uid
Enhanced XA Image Storage SOP Class UID (enhanced IOD)
Definition xa_storage.h:51
constexpr std::string_view wsi_image_storage_uid
VL Whole Slide Microscopy Image Storage SOP Class UID.
Definition wsi_storage.h:35
std::vector< std::string > get_waveform_storage_sop_classes(bool include_presentation_state=true, bool include_annotation=true)
Get all Waveform Storage SOP Class UIDs.
constexpr std::string_view heightmap_segmentation_storage_uid
Heightmap Segmentation Storage SOP Class UID (Supplement 240)
Definition seg_storage.h:46
constexpr std::string_view xrf_image_storage_uid
XRF Image Storage SOP Class UID (X-Ray Radiofluoroscopic)
Definition xa_storage.h:55
constexpr std::string_view basic_text_sr_storage_uid
Basic Text SR Storage SOP Class UID.
Definition sr_storage.h:38
constexpr std::string_view us_image_storage_uid
US Image Storage SOP Class UID (single-frame)
Definition us_storage.h:39
constexpr std::string_view rt_beams_treatment_record_storage_uid
RT Beams Treatment Record Storage SOP Class UID.
Definition rt_storage.h:54
constexpr std::string_view dx_image_storage_for_presentation_uid
Digital X-Ray Image Storage - For Presentation SOP Class UID Used for images ready for display and cl...
Definition dx_storage.h:44
constexpr std::string_view rt_ion_beams_treatment_record_storage_uid
RT Ion Beams Treatment Record Storage SOP Class UID.
Definition rt_storage.h:70
constexpr std::string_view xray_3d_craniofacial_image_storage_uid
X-Ray 3D Craniofacial Image Storage SOP Class UID.
Definition xa_storage.h:68
constexpr std::string_view wide_field_ophthalmic_photo_storage_uid
Wide Field Ophthalmic Photography SOP Class Storage.
constexpr std::string_view xray_3d_angiographic_image_storage_uid
X-Ray 3D Angiographic Image Storage SOP Class UID (3D rotational)
Definition xa_storage.h:64
constexpr std::string_view us_image_storage_retired_uid
US Image Storage (Retired) - for legacy systems.
Definition us_storage.h:52
constexpr std::string_view intraoral_image_storage_for_processing_uid
Digital Intra-Oral X-Ray Image Storage - For Processing.
Definition dx_storage.h:75
constexpr std::string_view surface_segmentation_storage_uid
Surface Segmentation Storage SOP Class UID.
Definition seg_storage.h:42
constexpr std::string_view mammography_image_storage_for_processing_uid
Digital Mammography X-Ray Image Storage - For Processing.
Definition dx_storage.h:62
constexpr std::string_view extensible_sr_storage_uid
Extensible SR Storage SOP Class UID.
Definition sr_storage.h:54
constexpr std::string_view nm_image_storage_retired_uid
Nuclear Medicine Image Storage (Retired) - for legacy systems.
Definition nm_storage.h:46
constexpr std::string_view legacy_converted_enhanced_pet_image_storage_uid
Legacy Converted Enhanced PET Image Storage SOP Class UID.
Definition pet_storage.h:45
constexpr std::string_view enhanced_sr_storage_uid
Enhanced SR Storage SOP Class UID.
Definition sr_storage.h:42
constexpr std::string_view intraoral_image_storage_for_presentation_uid
Digital Intra-Oral X-Ray Image Storage - For Presentation.
Definition dx_storage.h:71
constexpr std::string_view xray_radiation_dose_sr_storage_uid
X-Ray Radiation Dose SR Storage SOP Class UID.
Definition sr_storage.h:75
constexpr std::string_view rt_brachy_treatment_record_storage_uid
RT Brachy Treatment Record Storage SOP Class UID.
Definition rt_storage.h:58
constexpr std::string_view rt_treatment_summary_record_storage_uid
RT Treatment Summary Record Storage SOP Class UID.
Definition rt_storage.h:62
constexpr std::string_view comprehensive_3d_sr_storage_uid
Comprehensive 3D SR Storage SOP Class UID.
Definition sr_storage.h:50
constexpr std::string_view xa_image_storage_uid
XA Image Storage SOP Class UID (single/multi-frame)
Definition xa_storage.h:47
constexpr std::string_view segmentation_storage_uid
Segmentation Storage SOP Class UID.
Definition seg_storage.h:38
constexpr std::string_view enhanced_pet_image_storage_uid
Enhanced PET Image Storage SOP Class UID.
Definition pet_storage.h:41
constexpr std::string_view ophthalmic_tomography_storage_uid
Ophthalmic Tomography Image Storage (OCT)
constexpr std::string_view rt_plan_storage_uid
RT Plan Storage SOP Class UID.
Definition rt_storage.h:38
constexpr std::string_view nm_image_storage_uid
Nuclear Medicine Image Storage SOP Class UID.
Definition nm_storage.h:37
constexpr std::string_view parametric_map_storage_uid
Parametric Map Storage SOP Class UID.
constexpr std::string_view chest_cad_sr_storage_uid
Chest CAD SR Storage SOP Class UID.
Definition sr_storage.h:67
constexpr std::string_view ophthalmic_photo_8bit_storage_uid
Ophthalmic Photography 8 Bit Image Storage.
constexpr std::string_view key_object_selection_document_storage_uid
Key Object Selection Document Storage SOP Class UID.
Definition sr_storage.h:112
constexpr std::string_view mammography_image_storage_for_presentation_uid
Digital Mammography X-Ray Image Storage - For Presentation.
Definition dx_storage.h:58
constexpr std::string_view us_multiframe_image_storage_uid
US Multi-frame Image Storage SOP Class UID (cine loops)
Definition us_storage.h:43
constexpr std::string_view us_multiframe_image_storage_retired_uid
US Multi-frame Image Storage (Retired) - for legacy systems.
Definition us_storage.h:56
modality_type
Modality type for storage SOP classes.
@ op
Ophthalmic Photography / Tomography.
@ pet
Positron Emission Tomography.
@ xrf
X-Ray Radiofluoroscopic.
@ sm
Slide Microscopy (Whole Slide Imaging)
bool is_storage_sop_class(std::string_view uid)
Check if a SOP Class UID is a storage class.
modality_type get_storage_modality(std::string_view uid)
Get the modality for a storage SOP Class.
constexpr std::string_view storage_commitment_push_model_sop_class_uid
Storage Commitment Push Model SOP Class UID (PS3.4 Table J.3-1)
std::string_view get_sop_class_name(std::string_view uid)
Get human-readable name for a SOP Class.
sop_class_category
Category of SOP Class.
@ ups
Unified Procedure Step Service Class.
@ storage_commitment
Storage Commitment Push Model Service Class.
@ print
Print Management Service Class.
@ verification
Verification Service Class.
Nuclear Medicine (NM) Image Storage SOP Classes.
Ophthalmic Photography and Tomography Storage SOP Classes.
Parametric Map Storage SOP Class.
Positron Emission Tomography (PET) Image Storage SOP Classes.
Radiation Therapy (RT) Storage SOP Classes.
Segmentation (SEG) Storage SOP Classes.
Central registry for all supported SOP Classes.
Structured Report (SR) Storage SOP Classes.
Data types for DICOM Storage Commitment Push Model Service.
Complete information about a SOP Class.
std::string_view uid
Ultrasound Image Storage SOP Classes.
Waveform Presentation State and Annotation Storage SOP Classes.
VL Whole Slide Microscopy Image Storage SOP Class.
X-Ray Angiographic (XA) Image Storage SOP Classes.