26#ifndef PACS_SERVICES_SOP_CLASSES_MG_STORAGE_HPP
27#define PACS_SERVICES_SOP_CLASSES_MG_STORAGE_HPP
47 "1.2.840.10008.5.1.4.1.1.1.2";
51 "1.2.840.10008.5.1.4.1.1.1.2.1";
55 "1.2.840.10008.5.1.4.1.1.13.1.3";
59 "1.2.840.10008.5.1.4.1.1.13.1.4";
63 "1.2.840.10008.5.1.4.1.1.13.1.5";
234 std::optional<double>
kvp;
365[[nodiscard]] std::vector<std::string>
452[[nodiscard]] std::vector<std::pair<breast_laterality, mg_view_position>>
std::vector< std::string > get_mg_storage_sop_classes(bool include_tomosynthesis=true)
Get all Mammography Storage SOP Class UIDs.
std::pair< double, double > get_typical_compression_force_range() noexcept
Get typical compression force range.
bool is_valid_compression_force(double force_n) noexcept
Validate compression force value.
bool is_mg_for_presentation_sop_class(std::string_view uid) noexcept
Check if a SOP Class UID is a For Presentation mammography SOP Class.
bool is_valid_compressed_breast_thickness(double thickness_mm) noexcept
Validate compressed breast thickness.
constexpr std::string_view breast_tomosynthesis_image_storage_uid
Breast Tomosynthesis Image Storage SOP Class UID.
constexpr std::string_view mg_image_storage_for_presentation_uid
Digital Mammography X-Ray Image Storage - For Presentation SOP Class UID.
std::vector< std::pair< breast_laterality, mg_view_position > > get_standard_screening_views() noexcept
Get standard four-view screening exam views.
mg_view_position
Mammography-specific view positions.
@ lm
Lateromedial - true lateral (lateral to medial)
@ spot_mag
Spot compression with magnification.
@ fb
From Below - inferior to superior view.
@ sio
Superolateral to Inferomedial Oblique.
@ xccl
Exaggerated CC Laterally - for lateral breast tissue.
@ xccm
Exaggerated CC Medially - for medial breast tissue.
@ mlo
Mediolateral Oblique - angled lateral view (most common)
@ at
Axillary Tail - for axillary extension.
@ ml
Mediolateral - true lateral (medial to lateral)
@ implant
Implant displaced view (Eklund technique)
@ spot
Spot compression view.
@ id
Implant Displaced (alternate code)
@ cv
Cleavage View - for medial breast tissue.
@ cc
Craniocaudal - standard superior-inferior view.
@ iso
Inferomedial to Superolateral Oblique.
const mg_sop_class_info * get_mg_sop_class_info(std::string_view uid) noexcept
Get information about a specific Mammography SOP Class.
mg_image_type
Mammography image purpose classification.
bool is_breast_tomosynthesis_sop_class(std::string_view uid) noexcept
Check if a SOP Class UID is a breast tomosynthesis SOP Class.
mg_view_position parse_mg_view_position(std::string_view value) noexcept
Parse DICOM view position string to mammography view enum.
std::string create_mg_image_type(bool is_original, bool is_primary, mg_image_type type)
Create DICOM-compliant image type value for mammography.
@ other
Other/unspecified.
constexpr std::string_view breast_projection_image_storage_for_processing_uid
Breast Projection X-Ray Image Storage - For Processing SOP Class UID.
bool is_valid_laterality_view_combination(breast_laterality laterality, mg_view_position view) noexcept
Check if laterality and view position are consistent.
bool is_mg_storage_sop_class(std::string_view uid) noexcept
Check if a SOP Class UID is a Mammography Storage SOP Class.
bool is_magnification_view(mg_view_position position) noexcept
Check if a view position requires magnification.
breast_laterality parse_breast_laterality(std::string_view value) noexcept
Parse DICOM laterality string to enum.
bool is_valid_breast_laterality(std::string_view value) noexcept
Check if a laterality value is valid for mammography.
std::vector< std::string_view > get_valid_mg_view_positions() noexcept
Get all valid mammography view position strings.
std::vector< std::string > get_mg_transfer_syntaxes()
Get recommended transfer syntaxes for mammography images.
@ for_presentation
Ready for display and diagnosis.
@ for_processing
Raw data requiring further processing.
cad_processing_status
CAD (Computer-Aided Detection) processing status.
@ not_processed
CAD has not been run on this image.
@ pending
CAD processing is pending.
@ processed_no_findings
CAD completed with no findings.
@ processing_failed
CAD processing failed.
@ processed_findings
CAD completed with findings.
bool is_spot_compression_view(mg_view_position position) noexcept
Check if a view position involves spot compression.
bool is_screening_view(mg_view_position position) noexcept
Check if a view position is a standard screening view.
breast_laterality
Breast laterality enumeration.
@ right
Right breast (DICOM value: "R")
@ left
Left breast (DICOM value: "L")
@ unknown
Unknown or unspecified laterality.
@ bilateral
Both breasts (DICOM value: "B") - used for comparison views.
constexpr std::string_view mg_image_storage_for_processing_uid
Digital Mammography X-Ray Image Storage - For Processing SOP Class UID.
bool is_mg_for_processing_sop_class(std::string_view uid) noexcept
Check if a SOP Class UID is a For Processing mammography SOP Class.
constexpr std::string_view breast_projection_image_storage_for_presentation_uid
Breast Projection X-Ray Image Storage - For Presentation SOP Class UID.
std::string_view to_string(dx_photometric_interpretation interp) noexcept
Convert photometric interpretation enum to DICOM string.
Mammography acquisition parameters structure.
std::optional< double > kvp
KVP - X-ray tube peak kilovoltage (0018,0060)
std::optional< bool > partial_view
Partial view flag (0028,1350)
std::optional< double > half_value_layer_mm
Half value layer in mm Al (0040,0314)
std::optional< std::string > partial_view_description
Partial view description (0028,1351)
std::optional< double > exposure_time_ms
Exposure time in ms (0018,1150)
std::optional< double > entrance_dose_dgy
Entrance dose in dGy (0040,0302)
std::optional< double > focal_spot_mm
Focal spot size in mm (0018,1190)
std::optional< double > organ_dose_dgy
Organ dose in dGy (0040,0316)
std::optional< bool > breast_implant_present
Breast implant present (0028,1300)
std::optional< double > tube_current_ma
X-ray tube current in mA (0018,1151)
std::optional< double > compression_force_n
Compression force in Newtons (0018,11A2)
std::optional< double > filter_thickness_mm
Filter thickness in mm (0018,7052)
std::optional< std::string > filter_material
Filter material (0018,7050)
std::optional< double > exposure_mas
Exposure in mAs (0018,1153)
std::optional< double > relative_x_ray_exposure
Relative X-ray exposure (0018,1405)
std::optional< std::string > entrance_dose_derivation
Entrance dose derivation (0040,0303)
std::optional< std::string > anode_target_material
Anode target material (0018,1191)
std::optional< double > compressed_breast_thickness_mm
Compressed breast thickness in mm (0018,11A0)
Information about a Mammography Storage SOP Class.
std::string_view name
Human-readable name.
std::string_view uid
SOP Class UID.
mg_image_type image_type
For Presentation or For Processing.
bool is_tomosynthesis
True if this is a tomosynthesis class.
std::string_view description
Brief description.
bool supports_multiframe
Multi-frame support.