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

Public Member Functions | |
| storage_scu (std::shared_ptr< di::ILogger > logger=nullptr) | |
| Construct a Storage SCU with default configuration. | |
| storage_scu (const storage_scu_config &config, std::shared_ptr< di::ILogger > logger=nullptr) | |
| Construct a Storage SCU with custom configuration. | |
| ~storage_scu ()=default | |
| storage_scu (const storage_scu &)=delete | |
| storage_scu & | operator= (const storage_scu &)=delete |
| storage_scu (storage_scu &&)=delete | |
| storage_scu & | operator= (storage_scu &&)=delete |
| network::Result< store_result > | store (network::association &assoc, const core::dicom_dataset &dataset) |
| Store a single DICOM dataset. | |
| std::vector< store_result > | store_batch (network::association &assoc, const std::vector< core::dicom_dataset > &datasets, store_progress_callback progress_callback=nullptr) |
| Store multiple DICOM datasets. | |
| network::Result< store_result > | store_file (network::association &assoc, const std::filesystem::path &file_path) |
| Store a DICOM file. | |
| std::vector< store_result > | store_files (network::association &assoc, const std::vector< std::filesystem::path > &file_paths, store_progress_callback progress_callback=nullptr) |
| Store multiple DICOM files. | |
| std::vector< store_result > | store_directory (network::association &assoc, const std::filesystem::path &directory, bool recursive=true, store_progress_callback progress_callback=nullptr) |
| Store all DICOM files in a directory. | |
| size_t | images_sent () const noexcept |
| Get the number of images sent since construction. | |
| size_t | failures () const noexcept |
| Get the number of failed store operations since construction. | |
| size_t | bytes_sent () const noexcept |
| Get the total bytes sent since construction. | |
| void | reset_statistics () noexcept |
| Reset statistics counters to zero. | |
Private Member Functions | |
| network::Result< store_result > | store_impl (network::association &assoc, const core::dicom_dataset &dataset, uint16_t message_id) |
| Internal implementation of single store operation. | |
| uint16_t | next_message_id () noexcept |
| Get the next message ID for DIMSE operations. | |
| std::vector< std::filesystem::path > | collect_dicom_files (const std::filesystem::path &directory, bool recursive) const |
| Collect DICOM files from a directory. | |
Private Attributes | |
| std::shared_ptr< di::ILogger > | logger_ |
| Logger instance for service logging. | |
| storage_scu_config | config_ |
| Configuration. | |
| std::atomic< uint16_t > | message_id_counter_ {1} |
| Message ID counter. | |
| std::atomic< size_t > | images_sent_ {0} |
| Statistics: number of images sent successfully. | |
| std::atomic< size_t > | failures_ {0} |
| Statistics: number of failed operations. | |
| std::atomic< size_t > | bytes_sent_ {0} |
| Statistics: total bytes sent. | |
Definition at line 167 of file storage_scu.h.
|
explicit |
Construct a Storage SCU with default configuration.
| logger | Logger instance for service logging (nullptr uses null_logger) |
Definition at line 56 of file storage_scu.cpp.
|
explicit |
Construct a Storage SCU with custom configuration.
| config | Configuration options |
| logger | Logger instance for service logging (nullptr uses null_logger) |
Definition at line 59 of file storage_scu.cpp.
|
default |
|
delete |
|
delete |
|
nodiscardnoexcept |
Get the total bytes sent since construction.
Definition at line 357 of file storage_scu.cpp.
References bytes_sent_.
|
nodiscardprivate |
Collect DICOM files from a directory.
Definition at line 312 of file storage_scu.cpp.
Referenced by store_directory().

|
nodiscardnoexcept |
Get the number of failed store operations since construction.
Definition at line 353 of file storage_scu.cpp.
References failures_.
|
nodiscardnoexcept |
Get the number of images sent since construction.
Definition at line 349 of file storage_scu.cpp.
References images_sent_.
|
nodiscardprivatenoexcept |
Get the next message ID for DIMSE operations.
Definition at line 371 of file storage_scu.cpp.
References message_id_counter_.
Referenced by store().

|
delete |
|
delete |
|
noexcept |
Reset statistics counters to zero.
Definition at line 361 of file storage_scu.cpp.
References bytes_sent_, failures_, and images_sent_.
|
nodiscard |
Store a single DICOM dataset.
Sends the dataset via C-STORE to the remote SCP. The dataset must contain valid SOP Class UID and SOP Instance UID attributes.
| assoc | The established association to use |
| dataset | The DICOM dataset to store |
Definition at line 67 of file storage_scu.cpp.
References next_message_id(), and store_impl().
Referenced by store_batch(), store_file(), TEST_CASE(), TEST_CASE(), TEST_CASE(), TEST_CASE(), TEST_CASE(), TEST_CASE(), TEST_CASE(), TEST_CASE(), TEST_CASE(), TEST_CASE(), TEST_CASE(), TEST_CASE(), TEST_CASE(), and TEST_CASE().


|
nodiscard |
Store multiple DICOM datasets.
Sends multiple datasets via C-STORE operations. If continue_on_error is true (default), continues with remaining datasets after failures.
| assoc | The established association to use |
| datasets | Vector of datasets to store |
| progress_callback | Optional callback for progress updates |
Definition at line 177 of file storage_scu.cpp.
References kcenon::pacs::services::cannot_understand, kcenon::pacs::services::completed, config_, kcenon::pacs::services::storage_scu_config::continue_on_error, kcenon::pacs::services::store_result::error_comment, kcenon::pacs::services::store_result::sop_instance_uid, kcenon::pacs::services::store_result::status, and store().

|
nodiscard |
Store all DICOM files in a directory.
Scans a directory for DICOM files and stores them via C-STORE.
| assoc | The established association to use |
| directory | Path to the directory |
| recursive | If true, scan subdirectories recursively |
| progress_callback | Optional callback for progress updates |
Definition at line 299 of file storage_scu.cpp.
References collect_dicom_files(), and store_files().

|
nodiscard |
Store a DICOM file.
Reads and parses a DICOM file, then sends it via C-STORE.
| assoc | The established association to use |
| file_path | Path to the DICOM file |
Definition at line 222 of file storage_scu.cpp.
References kcenon::pacs::error_codes::file_not_found_service, kcenon::pacs::error_codes::file_parse_failed, logger_, kcenon::pacs::error_codes::not_a_regular_file, kcenon::pacs::core::dicom_file::open(), kcenon::pacs::pacs_error(), and store().
Referenced by store_files().


|
nodiscard |
Store multiple DICOM files.
Reads and parses multiple DICOM files, then sends them via C-STORE. If continue_on_error is true (default), continues with remaining files after failures.
| assoc | The established association to use |
| file_paths | Vector of paths to DICOM files |
| progress_callback | Optional callback for progress updates |
Definition at line 258 of file storage_scu.cpp.
References kcenon::pacs::services::cannot_understand, kcenon::pacs::services::completed, config_, kcenon::pacs::services::storage_scu_config::continue_on_error, kcenon::pacs::services::store_result::error_comment, kcenon::pacs::services::store_result::sop_instance_uid, kcenon::pacs::services::store_result::status, and store_file().
Referenced by store_directory().


|
nodiscardprivate |
Internal implementation of single store operation.
Definition at line 74 of file storage_scu.cpp.
References kcenon::pacs::network::association::accepted_context_id(), kcenon::pacs::error_codes::association_not_established, bytes_sent_, config_, kcenon::pacs::services::storage_scu_config::default_priority, kcenon::pacs::services::store_result::error_comment, failures_, kcenon::pacs::core::dicom_dataset::get_string(), images_sent_, kcenon::pacs::network::association::is_established(), kcenon::pacs::services::store_result::is_success(), kcenon::pacs::services::store_result::is_warning(), kcenon::pacs::pacs_error(), kcenon::pacs::network::association::receive_dimse(), kcenon::pacs::services::storage_scu_config::response_timeout, kcenon::pacs::network::association::send_dimse(), kcenon::pacs::core::dicom_dataset::size(), kcenon::pacs::services::store_result::sop_instance_uid, kcenon::pacs::services::store_result::status, kcenon::pacs::error_codes::store_missing_sop_class_uid, kcenon::pacs::error_codes::store_missing_sop_instance_uid, kcenon::pacs::error_codes::store_no_accepted_context, kcenon::pacs::error_codes::store_unexpected_command, and kcenon::pacs::services::to_string().
Referenced by store().


|
private |
Statistics: total bytes sent.
Definition at line 358 of file storage_scu.h.
Referenced by bytes_sent(), reset_statistics(), and store_impl().
|
private |
Configuration.
Definition at line 346 of file storage_scu.h.
Referenced by store_batch(), store_files(), and store_impl().
|
private |
Statistics: number of failed operations.
Definition at line 355 of file storage_scu.h.
Referenced by failures(), reset_statistics(), and store_impl().
|
private |
Statistics: number of images sent successfully.
Definition at line 352 of file storage_scu.h.
Referenced by images_sent(), reset_statistics(), and store_impl().
|
private |
Logger instance for service logging.
Definition at line 343 of file storage_scu.h.
Referenced by store_file().
|
private |
Message ID counter.
Definition at line 349 of file storage_scu.h.
Referenced by next_message_id().