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

Public Member Functions | |
| pacs_server_app (const pacs_server_config &config) | |
| Construct server application with configuration. | |
| ~pacs_server_app () | |
| Destructor - stops server if running. | |
| pacs_server_app (const pacs_server_app &)=delete | |
| pacs_server_app & | operator= (const pacs_server_app &)=delete |
| pacs_server_app (pacs_server_app &&)=delete | |
| pacs_server_app & | operator= (pacs_server_app &&)=delete |
| bool | initialize () |
| Initialize all components. | |
| bool | start () |
| Start the DICOM server. | |
| void | stop () |
| Stop the server gracefully. | |
| void | wait_for_shutdown () |
| Wait for server shutdown. | |
| void | request_shutdown () |
| Request shutdown. | |
| bool | is_running () const noexcept |
| Check if server is running. | |
| void | print_statistics () const |
| Get current server statistics. | |
Private Member Functions | |
| bool | setup_storage () |
| Set up file storage. | |
| bool | setup_database () |
| Set up database. | |
| bool | setup_services () |
| Set up DICOM services. | |
| bool | setup_server () |
| Set up DICOM server. | |
| 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) |
| Handle incoming C-STORE request. | |
| std::vector< core::dicom_dataset > | handle_query (services::query_level level, const core::dicom_dataset &query_keys, const std::string &calling_ae) |
| Handle C-FIND query. | |
| std::vector< core::dicom_file > | handle_retrieve (const core::dicom_dataset &query_keys) |
| Handle C-MOVE/C-GET retrieve. | |
| std::vector< core::dicom_dataset > | handle_worklist_query (const core::dicom_dataset &query_keys, const std::string &calling_ae) |
| Handle worklist query. | |
| network::Result< std::monostate > | handle_mpps_create (const services::mpps_instance &instance) |
| Handle MPPS N-CREATE. | |
| network::Result< std::monostate > | handle_mpps_set (const std::string &sop_instance_uid, const core::dicom_dataset &modifications, services::mpps_status new_status) |
| Handle MPPS N-SET. | |
Private Attributes | |
| pacs_server_config | config_ |
| Server configuration. | |
| std::unique_ptr< network::dicom_server > | server_ |
| DICOM server. | |
| std::unique_ptr< storage::file_storage > | file_storage_ |
| File storage. | |
| std::unique_ptr< storage::index_database > | database_ |
| Index database. | |
| std::atomic< bool > | shutdown_requested_ {false} |
| Shutdown flag. | |
| bool | initialized_ {false} |
| Initialization flag. | |
Definition at line 90 of file server_app.h.
|
explicit |
Construct server application with configuration.
| config | Server configuration |
Definition at line 56 of file server_app.cpp.
| kcenon::pacs::example::pacs_server_app::~pacs_server_app | ( | ) |
Destructor - stops server if running.
Definition at line 59 of file server_app.cpp.
References stop().

|
delete |
|
delete |
|
private |
Handle MPPS N-CREATE.
Definition at line 659 of file server_app.cpp.
References database_, kcenon::pacs::services::mpps_instance::sop_instance_uid, and kcenon::pacs::services::mpps_instance::station_ae.
Referenced by setup_server().

|
private |
Handle MPPS N-SET.
Definition at line 676 of file server_app.cpp.
References database_, and kcenon::pacs::services::to_string().
Referenced by setup_server().


|
private |
Handle C-FIND query.
Definition at line 458 of file server_app.cpp.
References kcenon::pacs::core::tags::accession_number, kcenon::pacs::encoding::CS, kcenon::pacs::encoding::DA, database_, kcenon::pacs::core::dicom_dataset::get_string(), kcenon::pacs::services::image, kcenon::pacs::core::tags::instance_number, kcenon::pacs::encoding::IS, kcenon::pacs::encoding::LO, kcenon::pacs::core::tags::modality, name, kcenon::pacs::services::patient, 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::services::series, kcenon::pacs::core::tags::series_description, kcenon::pacs::core::tags::series_instance_uid, kcenon::pacs::core::tags::series_number, 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::services::study, kcenon::pacs::core::tags::study_date, kcenon::pacs::core::tags::study_description, kcenon::pacs::core::tags::study_instance_uid, kcenon::pacs::core::tags::study_time, kcenon::pacs::encoding::TM, kcenon::pacs::services::to_string(), kcenon::pacs::encoding::UI, and uid.
Referenced by setup_server().


|
private |
Handle C-MOVE/C-GET retrieve.
Definition at line 580 of file server_app.cpp.
References database_, kcenon::pacs::core::dicom_dataset::get_string(), kcenon::pacs::core::dicom_file::open(), kcenon::pacs::core::tags::series_instance_uid, kcenon::pacs::core::tags::sop_instance_uid, and kcenon::pacs::core::tags::study_instance_uid.
Referenced by setup_server().


|
private |
Handle incoming C-STORE request.
Definition at line 325 of file server_app.cpp.
References kcenon::pacs::core::tags::accession_number, database_, file_storage_, kcenon::pacs::core::dicom_dataset::get_string(), 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::services::storage_error, 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::services::success.
Referenced by setup_server().


|
private |
Handle worklist query.
Definition at line 628 of file server_app.cpp.
References kcenon::pacs::core::tags::accession_number, database_, kcenon::pacs::core::dicom_dataset::get_string(), kcenon::pacs::encoding::LO, kcenon::pacs::core::tags::patient_id, kcenon::pacs::core::tags::patient_name, kcenon::pacs::encoding::PN, kcenon::pacs::core::dicom_dataset::set_string(), kcenon::pacs::encoding::SH, kcenon::pacs::core::tags::study_instance_uid, and kcenon::pacs::encoding::UI.
Referenced by setup_server().


|
nodiscard |
Initialize all components.
Sets up storage, database, and DICOM services. Must be called before start().
Definition at line 67 of file server_app.cpp.
References initialized_, setup_database(), setup_server(), setup_services(), and setup_storage().
Referenced by main().


|
nodiscardnoexcept |
Check if server is running.
Definition at line 134 of file server_app.cpp.
References server_.
|
delete |
|
delete |
| void kcenon::pacs::example::pacs_server_app::print_statistics | ( | ) | const |
Get current server statistics.
Definition at line 138 of file server_app.cpp.
References server_.
Referenced by main().

| void kcenon::pacs::example::pacs_server_app::request_shutdown | ( | ) |
Request shutdown.
Thread-safe method to request server shutdown. Typically called from signal handler.
Definition at line 129 of file server_app.cpp.
References shutdown_requested_, and stop().

|
nodiscardprivate |
Set up database.
Definition at line 194 of file server_app.cpp.
References config_, kcenon::pacs::example::pacs_server_config::database, database_, kcenon::pacs::storage::index_database::open(), kcenon::pacs::example::database_config::path, kcenon::pacs::example::database_config::wal_mode, and kcenon::pacs::storage::index_config::wal_mode.
Referenced by initialize().


|
nodiscardprivate |
Set up DICOM server.
Definition at line 238 of file server_app.cpp.
References kcenon::pacs::example::pacs_server_config::access_control, kcenon::pacs::example::server_network_config::ae_title, kcenon::pacs::network::server_config::ae_title, kcenon::pacs::example::access_control_config::allowed_ae_titles, kcenon::pacs::network::association::called_ae(), kcenon::pacs::network::association::calling_ae(), config_, handle_mpps_create(), handle_mpps_set(), handle_query(), handle_retrieve(), handle_store(), handle_worklist_query(), kcenon::pacs::example::server_network_config::idle_timeout, kcenon::pacs::example::server_network_config::max_associations, kcenon::pacs::example::server_network_config::port, kcenon::pacs::example::pacs_server_config::server, server_, and uid.
Referenced by initialize().


|
nodiscardprivate |
Set up DICOM services.
Definition at line 226 of file server_app.cpp.
Referenced by initialize().

|
nodiscardprivate |
Set up file storage.
Definition at line 163 of file server_app.cpp.
References config_, kcenon::pacs::example::storage_config::directory, kcenon::pacs::example::storage_config::duplicate_policy, file_storage_, kcenon::pacs::example::storage_config::naming, and kcenon::pacs::example::pacs_server_config::storage.
Referenced by initialize().

|
nodiscard |
Start the DICOM server.
Begins accepting connections on the configured port. initialize() must be called before start().
Definition at line 91 of file server_app.cpp.
References kcenon::pacs::example::server_network_config::ae_title, config_, initialized_, kcenon::pacs::example::server_network_config::max_associations, kcenon::pacs::example::server_network_config::port, kcenon::pacs::example::pacs_server_config::server, and server_.
Referenced by main().

| void kcenon::pacs::example::pacs_server_app::stop | ( | ) |
Stop the server gracefully.
Stops accepting new connections and waits for active associations to complete.
Definition at line 115 of file server_app.cpp.
References server_.
Referenced by request_shutdown(), and ~pacs_server_app().

| void kcenon::pacs::example::pacs_server_app::wait_for_shutdown | ( | ) |
|
private |
Server configuration.
Definition at line 233 of file server_app.h.
Referenced by setup_database(), setup_server(), setup_storage(), and start().
|
private |
Index database.
Definition at line 242 of file server_app.h.
Referenced by handle_mpps_create(), handle_mpps_set(), handle_query(), handle_retrieve(), handle_store(), handle_worklist_query(), and setup_database().
|
private |
File storage.
Definition at line 239 of file server_app.h.
Referenced by handle_store(), and setup_storage().
|
private |
Initialization flag.
Definition at line 248 of file server_app.h.
Referenced by initialize(), and start().
|
private |
DICOM server.
Definition at line 236 of file server_app.h.
Referenced by is_running(), print_statistics(), setup_server(), start(), stop(), and wait_for_shutdown().
|
private |
Shutdown flag.
Definition at line 245 of file server_app.h.
Referenced by request_shutdown().