18#ifndef PACS_SERVICES_SOP_CLASS_REGISTRY_HPP
19#define PACS_SERVICES_SOP_CLASS_REGISTRY_HPP
25#include <unordered_map>
141 [[nodiscard]] std::vector<std::string>
150 [[nodiscard]] std::vector<std::string>
158 [[nodiscard]] std::vector<std::string>
165 [[nodiscard]] std::vector<std::string>
get_all()
const;
182 [[nodiscard]]
static std::string_view
222 std::unordered_map<std::string, sop_class_info>
registry_;
const sop_class_info * get_info(std::string_view uid) const
Get information about a SOP Class.
void register_seg_sop_classes()
std::vector< std::string > get_all_storage_classes(bool include_retired=true) const
Get all storage SOP Classes.
void register_print_sop_classes()
static modality_type parse_modality(std::string_view modality) noexcept
Parse a modality string to enum.
void register_nm_sop_classes()
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.
void register_standard_sop_classes()
static std::string_view modality_to_string(modality_type modality) noexcept
Get the modality string for a modality type.
void register_ups_sop_classes()
bool is_supported(std::string_view uid) const
Check if a SOP Class UID is supported.
void register_mr_sop_classes()
void register_dx_sop_classes()
void register_ophthalmic_sop_classes()
sop_class_registry(const sop_class_registry &)=delete
void register_rt_sop_classes()
void register_wsi_sop_classes()
void register_pet_sop_classes()
~sop_class_registry()=default
sop_class_registry & operator=(const sop_class_registry &)=delete
void register_us_sop_classes()
void register_xa_sop_classes()
void register_ct_sop_classes()
void register_sr_sop_classes()
static sop_class_registry & instance()
Get the singleton instance.
std::unordered_map< std::string, sop_class_info > registry_
void register_waveform_sop_classes()
void register_other_sop_classes()
sop_class_registry(sop_class_registry &&)=delete
void register_parametric_map_sop_classes()
sop_class_registry & operator=(sop_class_registry &&)=delete
std::vector< std::string > get_by_modality(modality_type modality, bool include_retired=true) const
Get all storage SOP Classes for a modality.
modality_type
Modality type for storage SOP classes.
@ op
Ophthalmic Photography / Tomography.
@ cr
Computed Radiography.
@ 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.
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.
@ query_retrieve
Query/Retrieve Service Class.
@ worklist
Modality Worklist Service Class.
@ media
Media Storage Service Class.
@ other
Other service classes.
@ ups
Unified Procedure Step Service Class.
@ storage_commitment
Storage Commitment Push Model Service Class.
@ storage
Storage Service Class.
@ mpps
Modality Performed Procedure Step.
@ print
Print Management Service Class.
@ verification
Verification Service Class.
Complete information about a SOP Class.
sop_class_category category
Service class category.
std::string_view name
Human-readable name.
modality_type modality
Modality (for storage classes)
std::string_view uid
SOP Class UID.
bool supports_multiframe
Multi-frame support (for storage)
bool is_retired
Whether this SOP class is retired.