|
PACS System 0.1.0
PACS DICOM system library
|
#include <mini_pacs.h>

Public Member Functions | |
| mini_pacs (const mini_pacs_config &config) | |
| Construct Mini PACS with configuration. | |
| ~mini_pacs () | |
| Destructor - ensures clean shutdown. | |
| mini_pacs (const mini_pacs &)=delete | |
| mini_pacs & | operator= (const mini_pacs &)=delete |
| mini_pacs (mini_pacs &&)=delete | |
| mini_pacs & | operator= (mini_pacs &&)=delete |
| bool | start () |
| Start the PACS server. | |
| void | stop () |
| Stop the PACS server. | |
| void | wait () |
| Block until server shutdown. | |
| bool | is_running () const noexcept |
| Check if server is running. | |
| const mini_pacs_statistics & | statistics () const noexcept |
| Get current statistics. | |
| void | add_worklist_item (const worklist_entry &item) |
| Add a worklist item for MWL queries. | |
| void | clear_worklist () |
| Clear all worklist items. | |
| std::vector< worklist_entry > | get_worklist_items () const |
| Get current worklist items. | |
| const mini_pacs_config & | config () const noexcept |
| Get the configuration. | |
Private Member Functions | |
| void | initialize_storage () |
| void | initialize_services () |
| void | configure_server () |
| void | setup_event_handlers () |
| services::storage_status | handle_store (const core::dicom_dataset &dataset, const std::string &calling_ae, const std::string &sop_class_uid, const std::string &sop_instance_uid) |
| bool | update_index (const core::dicom_dataset &dataset, const std::filesystem::path &file_path) |
| std::vector< core::dicom_dataset > | handle_query (services::query_level level, const core::dicom_dataset &query_keys, const std::string &calling_ae) |
| std::vector< core::dicom_file > | handle_retrieve (const core::dicom_dataset &query_keys) |
| std::optional< std::pair< std::string, uint16_t > > | resolve_destination (const std::string &ae_title) |
| std::vector< core::dicom_dataset > | handle_worklist_query (const core::dicom_dataset &query_keys, const std::string &calling_ae) |
| core::dicom_dataset | create_worklist_response (const worklist_entry &item) |
| network::Result< std::monostate > | handle_mpps_create (const services::mpps_instance &instance) |
| network::Result< std::monostate > | handle_mpps_set (const std::string &sop_instance_uid, const core::dicom_dataset &modifications, services::mpps_status new_status) |
Private Attributes | |
| mini_pacs_config | config_ |
| mini_pacs_statistics | stats_ |
| std::shared_ptr< storage::file_storage > | file_storage_ |
| std::shared_ptr< storage::index_database > | index_db_ |
| std::shared_ptr< services::verification_scp > | verification_scp_ |
| std::shared_ptr< services::storage_scp > | storage_scp_ |
| std::shared_ptr< services::query_scp > | query_scp_ |
| std::shared_ptr< services::retrieve_scp > | retrieve_scp_ |
| std::shared_ptr< services::worklist_scp > | worklist_scp_ |
| std::shared_ptr< services::mpps_scp > | mpps_scp_ |
| std::unique_ptr< network::dicom_server > | server_ |
| std::atomic< bool > | running_ {false} |
| std::mutex | worklist_mutex_ |
| std::vector< worklist_entry > | worklist_items_ |
| std::mutex | mpps_mutex_ |
| std::vector< mpps_entry > | mpps_instances_ |
Definition at line 211 of file mini_pacs.h.
|
explicit |
Construct Mini PACS with configuration.
| config | Configuration options |
Definition at line 24 of file mini_pacs.cpp.
References configure_server(), initialize_services(), initialize_storage(), and setup_event_handlers().

| kcenon::pacs::samples::mini_pacs::~mini_pacs | ( | ) |
Destructor - ensures clean shutdown.
Definition at line 32 of file mini_pacs.cpp.
References stop().

|
delete |
|
delete |
| void kcenon::pacs::samples::mini_pacs::add_worklist_item | ( | const worklist_entry & | item | ) |
Add a worklist item for MWL queries.
| item | The worklist entry to add |
Definition at line 88 of file mini_pacs.cpp.
References worklist_items_, and worklist_mutex_.
| void kcenon::pacs::samples::mini_pacs::clear_worklist | ( | ) |
Clear all worklist items.
Definition at line 93 of file mini_pacs.cpp.
References worklist_items_, and worklist_mutex_.
|
nodiscardnoexcept |
Get the configuration.
Definition at line 107 of file mini_pacs.cpp.
References config_.
|
private |
Definition at line 187 of file mini_pacs.cpp.
References kcenon::pacs::samples::mini_pacs_config::ae_title, kcenon::pacs::samples::server_config::ae_title, config_, kcenon::pacs::samples::server_config::idle_timeout, kcenon::pacs::samples::mini_pacs_config::max_associations, kcenon::pacs::samples::server_config::max_associations, mpps_scp_, kcenon::pacs::samples::mini_pacs_config::port, kcenon::pacs::samples::server_config::port, query_scp_, retrieve_scp_, server_, storage_scp_, verification_scp_, and worklist_scp_.
Referenced by mini_pacs().

|
private |
Definition at line 598 of file mini_pacs.cpp.
References kcenon::pacs::core::tags::accession_number, kcenon::pacs::encoding::AE, kcenon::pacs::encoding::CS, kcenon::pacs::encoding::DA, kcenon::pacs::encoding::LO, kcenon::pacs::core::tags::modality, kcenon::pacs::core::tags::patient_birth_date, kcenon::pacs::core::tags::patient_id, kcenon::pacs::core::tags::patient_name, kcenon::pacs::core::tags::patient_sex, kcenon::pacs::encoding::PN, kcenon::pacs::core::tags::referring_physician_name, kcenon::pacs::core::tags::scheduled_procedure_step_description, kcenon::pacs::core::tags::scheduled_procedure_step_id, kcenon::pacs::core::tags::scheduled_procedure_step_start_date, kcenon::pacs::core::tags::scheduled_procedure_step_start_time, kcenon::pacs::core::tags::scheduled_station_ae_title, kcenon::pacs::core::dicom_dataset::set_string(), kcenon::pacs::encoding::SH, kcenon::pacs::core::tags::study_instance_uid, kcenon::pacs::encoding::TM, and kcenon::pacs::encoding::UI.
Referenced by handle_worklist_query().


|
nodiscard |
Get current worklist items.
Definition at line 98 of file mini_pacs.cpp.
References worklist_items_, and worklist_mutex_.
|
private |
Definition at line 628 of file mini_pacs.cpp.
References config_, kcenon::pacs::samples::mpps_entry::data, kcenon::pacs::services::mpps_instance::data, kcenon::pacs::samples::mini_pacs_statistics::mpps_create_count, mpps_instances_, mpps_mutex_, kcenon::pacs::samples::mpps_entry::sop_instance_uid, kcenon::pacs::services::mpps_instance::sop_instance_uid, kcenon::pacs::samples::mpps_entry::station_ae, kcenon::pacs::services::mpps_instance::station_ae, stats_, kcenon::pacs::samples::mpps_entry::status, and kcenon::pacs::samples::mini_pacs_config::verbose_logging.
Referenced by initialize_services().

|
private |
Definition at line 652 of file mini_pacs.cpp.
References config_, kcenon::pacs::error_codes::instance_not_found, mpps_instances_, mpps_mutex_, kcenon::pacs::samples::mini_pacs_statistics::mpps_set_count, kcenon::pacs::pacs_error(), stats_, kcenon::pacs::services::to_string(), and kcenon::pacs::samples::mini_pacs_config::verbose_logging.
Referenced by initialize_services().


|
private |
Definition at line 358 of file mini_pacs.cpp.
References kcenon::pacs::core::tags::accession_number, kcenon::pacs::storage::study_query::accession_number, kcenon::pacs::samples::mini_pacs_statistics::c_find_count, config_, kcenon::pacs::encoding::CS, kcenon::pacs::encoding::DA, kcenon::pacs::core::dicom_dataset::get_string(), kcenon::pacs::services::image, index_db_, kcenon::pacs::core::tags::instance_number, kcenon::pacs::encoding::IS, kcenon::pacs::encoding::LO, kcenon::pacs::core::tags::modality, kcenon::pacs::storage::series_query::modality, kcenon::pacs::services::patient, kcenon::pacs::core::tags::patient_birth_date, kcenon::pacs::core::tags::patient_id, kcenon::pacs::storage::patient_query::patient_id, kcenon::pacs::storage::study_query::patient_id, kcenon::pacs::core::tags::patient_name, kcenon::pacs::storage::patient_query::patient_name, kcenon::pacs::core::tags::patient_sex, kcenon::pacs::encoding::PN, kcenon::pacs::core::tags::referring_physician_name, kcenon::pacs::services::series, kcenon::pacs::core::tags::series_description, kcenon::pacs::core::tags::series_instance_uid, kcenon::pacs::core::tags::series_number, kcenon::pacs::storage::instance_query::series_uid, kcenon::pacs::storage::series_query::series_uid, kcenon::pacs::core::dicom_dataset::set_numeric(), kcenon::pacs::core::dicom_dataset::set_string(), kcenon::pacs::encoding::SH, kcenon::pacs::core::tags::sop_class_uid, kcenon::pacs::core::tags::sop_instance_uid, kcenon::pacs::storage::instance_query::sop_uid, kcenon::pacs::core::tags::station_name, stats_, kcenon::pacs::services::study, kcenon::pacs::core::tags::study_date, kcenon::pacs::storage::study_query::study_date, kcenon::pacs::core::tags::study_description, kcenon::pacs::core::tags::study_id, kcenon::pacs::core::tags::study_instance_uid, kcenon::pacs::core::tags::study_time, kcenon::pacs::storage::series_query::study_uid, kcenon::pacs::storage::study_query::study_uid, kcenon::pacs::encoding::TM, kcenon::pacs::encoding::UI, and kcenon::pacs::samples::mini_pacs_config::verbose_logging.
Referenced by initialize_services().


|
private |
Definition at line 482 of file mini_pacs.cpp.
References kcenon::pacs::samples::mini_pacs_statistics::c_move_count, config_, kcenon::pacs::core::dicom_dataset::get_string(), index_db_, kcenon::pacs::core::dicom_file::open(), kcenon::pacs::core::tags::series_instance_uid, kcenon::pacs::storage::instance_query::series_uid, kcenon::pacs::core::tags::sop_instance_uid, kcenon::pacs::storage::instance_query::sop_uid, stats_, kcenon::pacs::core::tags::study_instance_uid, kcenon::pacs::storage::series_query::study_uid, and kcenon::pacs::samples::mini_pacs_config::verbose_logging.
Referenced by initialize_services().


|
private |
Definition at line 244 of file mini_pacs.cpp.
References kcenon::pacs::samples::mini_pacs_statistics::bytes_received, kcenon::pacs::samples::mini_pacs_statistics::c_store_count, config_, file_storage_, kcenon::pacs::core::dicom_dataset::get_string(), kcenon::pacs::core::tags::modality, kcenon::pacs::core::tags::patient_name, stats_, kcenon::pacs::services::storage_error, kcenon::pacs::services::success, update_index(), and kcenon::pacs::samples::mini_pacs_config::verbose_logging.
Referenced by initialize_services().


|
private |
Definition at line 561 of file mini_pacs.cpp.
References config_, create_worklist_response(), kcenon::pacs::core::dicom_dataset::get_string(), kcenon::pacs::core::tags::modality, kcenon::pacs::samples::mini_pacs_statistics::mwl_count, kcenon::pacs::core::tags::patient_id, kcenon::pacs::core::tags::scheduled_procedure_step_start_date, stats_, kcenon::pacs::samples::mini_pacs_config::verbose_logging, worklist_items_, and worklist_mutex_.
Referenced by initialize_services().


|
private |
Definition at line 139 of file mini_pacs.cpp.
References config_, kcenon::pacs::samples::mini_pacs_config::enable_mpps, kcenon::pacs::samples::mini_pacs_config::enable_worklist, handle_mpps_create(), handle_mpps_set(), handle_query(), handle_retrieve(), handle_store(), handle_worklist_query(), mpps_scp_, query_scp_, resolve_destination(), retrieve_scp_, storage_scp_, uid, verification_scp_, and worklist_scp_.
Referenced by mini_pacs().


|
private |
Definition at line 115 of file mini_pacs.cpp.
References config_, kcenon::pacs::storage::file_storage_config::create_directories, kcenon::pacs::storage::file_storage_config::duplicate, kcenon::pacs::storage::file_storage_config::file_extension, file_storage_, index_db_, kcenon::pacs::storage::file_storage_config::naming, kcenon::pacs::storage::index_database::open(), kcenon::pacs::storage::replace, kcenon::pacs::storage::file_storage_config::root_path, kcenon::pacs::samples::mini_pacs_config::storage_path, and kcenon::pacs::storage::uid_hierarchical.
Referenced by mini_pacs().


|
nodiscardnoexcept |
Check if server is running.
Definition at line 72 of file mini_pacs.cpp.
References running_.
|
private |
Definition at line 546 of file mini_pacs.cpp.
References kcenon::pacs::samples::mini_pacs_config::ae_title, config_, and kcenon::pacs::samples::mini_pacs_config::port.
Referenced by initialize_services().

|
private |
Definition at line 213 of file mini_pacs.cpp.
References kcenon::pacs::samples::mini_pacs_statistics::associations_active, kcenon::pacs::samples::mini_pacs_statistics::associations_total, kcenon::pacs::network::association::called_ae(), kcenon::pacs::network::association::calling_ae(), config_, server_, stats_, and kcenon::pacs::samples::mini_pacs_config::verbose_logging.
Referenced by mini_pacs().


|
nodiscard |
Start the PACS server.
Definition at line 40 of file mini_pacs.cpp.
|
nodiscardnoexcept |
Get current statistics.
Definition at line 80 of file mini_pacs.cpp.
References stats_.
| void kcenon::pacs::samples::mini_pacs::stop | ( | ) |
Stop the PACS server.
Definition at line 55 of file mini_pacs.cpp.
References running_, and server_.
Referenced by ~mini_pacs().

|
private |
Definition at line 278 of file mini_pacs.cpp.
References kcenon::pacs::core::tags::accession_number, kcenon::pacs::core::dicom_dataset::get_numeric(), kcenon::pacs::core::dicom_dataset::get_string(), index_db_, kcenon::pacs::core::tags::instance_number, kcenon::pacs::core::tags::modality, kcenon::pacs::core::tags::patient_birth_date, kcenon::pacs::core::tags::patient_id, kcenon::pacs::core::tags::patient_name, kcenon::pacs::core::tags::patient_sex, kcenon::pacs::core::tags::referring_physician_name, kcenon::pacs::core::tags::series_description, kcenon::pacs::core::tags::series_instance_uid, kcenon::pacs::core::tags::series_number, kcenon::pacs::core::tags::sop_class_uid, kcenon::pacs::core::tags::sop_instance_uid, kcenon::pacs::core::tags::station_name, kcenon::pacs::core::tags::study_date, kcenon::pacs::core::tags::study_description, kcenon::pacs::core::tags::study_id, kcenon::pacs::core::tags::study_instance_uid, kcenon::pacs::core::tags::study_time, and kcenon::pacs::core::tags::transfer_syntax_uid.
Referenced by handle_store().


| void kcenon::pacs::samples::mini_pacs::wait | ( | ) |
|
private |
Definition at line 370 of file mini_pacs.h.
Referenced by config(), configure_server(), handle_mpps_create(), handle_mpps_set(), handle_query(), handle_retrieve(), handle_store(), handle_worklist_query(), initialize_services(), initialize_storage(), resolve_destination(), and setup_event_handlers().
|
private |
Definition at line 374 of file mini_pacs.h.
Referenced by handle_store(), and initialize_storage().
|
private |
Definition at line 375 of file mini_pacs.h.
Referenced by handle_query(), handle_retrieve(), initialize_storage(), and update_index().
|
private |
Definition at line 395 of file mini_pacs.h.
Referenced by handle_mpps_create(), and handle_mpps_set().
|
mutableprivate |
Definition at line 394 of file mini_pacs.h.
Referenced by handle_mpps_create(), and handle_mpps_set().
|
private |
Definition at line 383 of file mini_pacs.h.
Referenced by configure_server(), and initialize_services().
|
private |
Definition at line 380 of file mini_pacs.h.
Referenced by configure_server(), and initialize_services().
|
private |
Definition at line 381 of file mini_pacs.h.
Referenced by configure_server(), and initialize_services().
|
private |
Definition at line 387 of file mini_pacs.h.
Referenced by is_running(), start(), and stop().
|
private |
Definition at line 386 of file mini_pacs.h.
Referenced by configure_server(), setup_event_handlers(), start(), stop(), and wait().
|
private |
Definition at line 371 of file mini_pacs.h.
Referenced by handle_mpps_create(), handle_mpps_set(), handle_query(), handle_retrieve(), handle_store(), handle_worklist_query(), setup_event_handlers(), and statistics().
|
private |
Definition at line 379 of file mini_pacs.h.
Referenced by configure_server(), and initialize_services().
|
private |
Definition at line 378 of file mini_pacs.h.
Referenced by configure_server(), and initialize_services().
|
private |
Definition at line 391 of file mini_pacs.h.
Referenced by add_worklist_item(), clear_worklist(), get_worklist_items(), and handle_worklist_query().
|
mutableprivate |
Definition at line 390 of file mini_pacs.h.
Referenced by add_worklist_item(), clear_worklist(), get_worklist_items(), and handle_worklist_query().
|
private |
Definition at line 382 of file mini_pacs.h.
Referenced by configure_server(), and initialize_services().