11#ifndef PACS_EXAMPLE_PACS_SERVER_SERVER_APP_HPP
12#define PACS_EXAMPLE_PACS_SERVER_SERVER_APP_HPP
135 [[nodiscard]]
bool start();
168 [[nodiscard]]
bool is_running() const noexcept;
198 const core::dicom_dataset& dataset,
199 const std::
string& calling_ae,
200 const std::
string& sop_class_uid,
201 const std::
string& sop_instance_uid);
205 services::query_level level,
206 const core::dicom_dataset& query_keys,
207 const std::
string& calling_ae);
211 const core::dicom_dataset& query_keys);
215 const core::dicom_dataset& query_keys,
216 const std::
string& calling_ae);
220 const services::mpps_instance& instance);
224 const std::
string& sop_instance_uid,
225 const core::dicom_dataset& modifications,
226 services::mpps_status new_status);
236 std::unique_ptr<network::dicom_server>
server_;
std::unique_ptr< network::dicom_server > server_
DICOM server.
std::vector< core::dicom_file > handle_retrieve(const core::dicom_dataset &query_keys)
Handle C-MOVE/C-GET retrieve.
bool setup_server()
Set up DICOM server.
network::Result< std::monostate > handle_mpps_create(const services::mpps_instance &instance)
Handle MPPS N-CREATE.
bool setup_storage()
Set up file storage.
pacs_server_app(const pacs_server_config &config)
Construct server application with configuration.
bool start()
Start the DICOM server.
bool initialized_
Initialization flag.
pacs_server_app & operator=(const pacs_server_app &)=delete
std::unique_ptr< storage::index_database > database_
Index database.
pacs_server_app(const pacs_server_app &)=delete
bool setup_services()
Set up DICOM services.
~pacs_server_app()
Destructor - stops server if running.
std::vector< core::dicom_dataset > handle_worklist_query(const core::dicom_dataset &query_keys, const std::string &calling_ae)
Handle worklist query.
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.
pacs_server_app & operator=(pacs_server_app &&)=delete
bool is_running() const noexcept
Check if server is running.
std::atomic< bool > shutdown_requested_
Shutdown flag.
void print_statistics() const
Get current server statistics.
void stop()
Stop the server gracefully.
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.
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.
bool initialize()
Initialize all components.
pacs_server_config config_
Server configuration.
std::unique_ptr< storage::file_storage > file_storage_
File storage.
pacs_server_app(pacs_server_app &&)=delete
void wait_for_shutdown()
Wait for server shutdown.
void request_shutdown()
Request shutdown.
bool setup_database()
Set up database.
Configuration management for PACS Server sample.
DICOM Dataset - ordered collection of Data Elements.
DICOM Part 10 file handling for reading/writing DICOM files.
Multi-threaded DICOM server for handling multiple associations.
Filesystem-based DICOM storage with hierarchical organization.
PACS index database for metadata storage and retrieval.
DICOM MPPS (Modality Performed Procedure Step) SCP service.
DICOM Query SCP service (C-FIND handler)
DICOM Retrieve SCP service (C-MOVE/C-GET handler)
DICOM Server configuration structures.
DICOM Storage SCP service (C-STORE handler)
Complete PACS server configuration.
DICOM Verification SCP service (C-ECHO handler)
DICOM Modality Worklist SCP service (MWL C-FIND handler)