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",
34 "1.2.840.10008.1.2.4.91",
56 if (value ==
"MONOCHROME1") {
64 return value ==
"MONOCHROME1" || value ==
"MONOCHROME2";
74 return "FOR PRESENTATION";
76 return "FOR PROCESSING";
78 return "FOR PRESENTATION";
104 if (value ==
"LATERAL" || value ==
"LAT" ||
105 value ==
"LL" || value ==
"RL") {
108 if (value ==
"OBLIQUE" || value ==
"OBL" ||
109 value ==
"LAO" || value ==
"RAO" ||
110 value ==
"LPO" || value ==
"RPO") {
173 if (value ==
"SPINE" || value ==
"CSPINE" || value ==
"TSPINE" ||
174 value ==
"LSPINE" || value ==
"SSPINE") {
186 if (value ==
"EXTREMITY" || value ==
"ARM" || value ==
"LEG") {
200constexpr std::array<dx_sop_class_info, 6> dx_sop_classes = {{
203 "Digital X-Ray Image Storage - For Presentation",
204 "Processed digital radiography images ready for clinical review",
211 "Digital X-Ray Image Storage - For Processing",
212 "Raw digital radiography data requiring further processing",
219 "Digital Mammography X-Ray Image Storage - For Presentation",
220 "Processed digital mammography images ready for clinical review",
227 "Digital Mammography X-Ray Image Storage - For Processing",
228 "Raw digital mammography data requiring further processing",
235 "Digital Intra-Oral X-Ray Image Storage - For Presentation",
236 "Processed dental intra-oral images ready for clinical review",
243 "Digital Intra-Oral X-Ray Image Storage - For Processing",
244 "Raw dental intra-oral data requiring further processing",
254 bool include_intraoral) {
255 std::vector<std::string> result;
258 for (
const auto& info : dx_sop_classes) {
260 if (!info.is_mammography && !info.is_intraoral) {
261 result.emplace_back(info.uid);
264 else if (info.is_mammography && include_mammography) {
265 result.emplace_back(info.uid);
268 else if (info.is_intraoral && include_intraoral) {
269 result.emplace_back(info.uid);
276const dx_sop_class_info*
278 auto it = std::find_if(
279 dx_sop_classes.begin(),
280 dx_sop_classes.end(),
281 [
uid](
const auto& info) { return info.uid == uid; }
284 if (it != dx_sop_classes.end()) {
306 return info !=
nullptr && info->is_mammography;
Digital X-Ray (DX) Image Storage SOP Classes.
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...
dx_detector_type
DX detector technology types.
@ direct
Direct conversion (a-Se based)
@ film
Film digitizer (rare for DX)
@ storage
Storage phosphor (CR-like)
@ indirect
Indirect conversion (scintillator + photodiode)
std::vector< std::string > get_dx_transfer_syntaxes()
Get recommended transfer syntaxes for DX images.
bool is_dx_for_processing_sop_class(std::string_view uid) noexcept
Check if a SOP Class UID is a For Processing SOP Class.
dx_photometric_interpretation
Supported photometric interpretations for DX images.
@ monochrome2
Minimum pixel value = black (standard)
@ monochrome1
Minimum pixel value = white (inverted)
dx_photometric_interpretation parse_dx_photometric_interpretation(std::string_view value) noexcept
Parse DICOM photometric interpretation string for DX.
std::vector< std::string > get_dx_storage_sop_classes(bool include_mammography=true, bool include_intraoral=true)
Get all DX Storage SOP Class UIDs.
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...
dx_view_position
Common radiographic view positions for DX images.
@ lateral
Lateral (left or right)
@ other
Other/unspecified.
@ oblique
Oblique projection.
constexpr std::string_view intraoral_image_storage_for_processing_uid
Digital Intra-Oral X-Ray Image Storage - For Processing.
constexpr std::string_view mammography_image_storage_for_processing_uid
Digital Mammography X-Ray Image Storage - For Processing.
bool is_dx_for_presentation_sop_class(std::string_view uid) noexcept
Check if a SOP Class UID is a For Presentation SOP Class.
dx_detector_type parse_detector_type(std::string_view value) noexcept
Parse DICOM detector type string.
constexpr std::string_view intraoral_image_storage_for_presentation_uid
Digital Intra-Oral X-Ray Image Storage - For Presentation.
bool is_valid_dx_photometric(std::string_view value) noexcept
Check if photometric interpretation is valid for DX.
bool is_dx_storage_sop_class(std::string_view uid) noexcept
Check if a SOP Class UID is a DX Storage SOP Class.
const dx_sop_class_info * get_dx_sop_class_info(std::string_view uid) noexcept
Get information about a specific DX SOP Class.
dx_image_type
DX image purpose classification.
@ for_presentation
Ready for display and diagnosis.
@ for_processing
Raw data requiring further processing.
dx_body_part
Common body parts for DX imaging.
@ breast
BREAST (for mammography)
@ other
Other/unspecified.
@ extremity
EXTREMITY (general)
dx_view_position parse_view_position(std::string_view value) noexcept
Parse DICOM view position string.
bool is_mammography_sop_class(std::string_view uid) noexcept
Check if a SOP Class UID is a mammography SOP Class.
constexpr std::string_view mammography_image_storage_for_presentation_uid
Digital Mammography X-Ray Image Storage - For Presentation.
std::string_view to_string(dx_photometric_interpretation interp) noexcept
Convert photometric interpretation enum to DICOM string.
dx_body_part parse_body_part(std::string_view value) noexcept
Parse DICOM body part examined string.