20#ifndef PACS_SERVICES_STORAGE_SCP_HPP
21#define PACS_SERVICES_STORAGE_SCP_HPP
68 const std::string& calling_ae,
69 const std::string& sop_class_uid,
70 const std::string& sop_instance_uid)>;
97 const std::string& patient_id,
98 const std::string& study_uid,
99 const std::string& series_uid,
100 const std::string& sop_instance_uid)>;
181 std::shared_ptr<di::ILogger>
logger =
nullptr);
247 std::shared_ptr<kcenon::pacs::security::atna_service_auditor> auditor);
287 [[nodiscard]] std::string_view
service_name() const noexcept override;
346 "1.2.840.10008.5.1.4.1.1.2";
350 "1.2.840.10008.5.1.4.1.1.2.1";
354 "1.2.840.10008.5.1.4.1.1.4";
358 "1.2.840.10008.5.1.4.1.1.4.1";
362 "1.2.840.10008.5.1.4.1.1.1";
366 "1.2.840.10008.5.1.4.1.1.1.1";
370 "1.2.840.10008.5.1.4.1.1.1.1.1";
374 "1.2.840.10008.5.1.4.1.1.6.1";
378 "1.2.840.10008.5.1.4.1.1.7";
382 "1.2.840.10008.5.1.4.1.1.481.1";
386 "1.2.840.10008.5.1.4.1.1.481.2";
390 "1.2.840.10008.5.1.4.1.1.481.3";
394 "1.2.840.10008.5.1.4.1.1.481.5";
const std::shared_ptr< di::ILogger > & logger() const noexcept
Get the current logger instance.
void set_audit_handler(std::shared_ptr< kcenon::pacs::security::atna_service_auditor > auditor)
Set the ATNA audit handler for C-STORE operations.
storage_scp(std::shared_ptr< di::ILogger > logger=nullptr)
Construct a Storage SCP with default configuration.
size_t bytes_received() const noexcept
Get the total bytes received since construction.
void reset_statistics() noexcept
Reset statistics counters to zero.
void set_handler(storage_handler handler)
Set the storage handler callback.
size_t images_received() const noexcept
Get the number of images received since construction.
std::vector< std::string > supported_sop_classes() const override
Get supported SOP Class UIDs.
std::shared_ptr< kcenon::pacs::security::atna_service_auditor > auditor_
ATNA audit handler.
storage_handler handler_
Main storage handler.
network::Result< std::monostate > handle_message(network::association &assoc, uint8_t context_id, const network::dimse::dimse_message &request) override
Handle an incoming DIMSE message (C-STORE-RQ)
storage_scp_config config_
Configuration.
~storage_scp() override=default
std::atomic< size_t > images_received_
Statistics: number of images received.
void set_post_store_handler(post_store_handler handler)
std::string_view service_name() const noexcept override
Get the service name.
void set_pre_store_handler(pre_store_handler handler)
Set the pre-store validation handler.
pre_store_handler pre_store_handler_
Pre-store validation handler.
post_store_handler post_store_handler_
Post-store notification handler.
std::atomic< size_t > bytes_received_
Statistics: total bytes received.
DICOM Dataset - ordered collection of Data Elements.
std::vector< std::string > get_standard_storage_sop_classes()
Get a list of all standard Storage SOP Class UIDs.
constexpr std::string_view mr_image_storage_uid
MR Image Storage.
constexpr std::string_view cr_image_storage_uid
CR Image Storage.
constexpr std::string_view us_image_storage_uid
US Image Storage.
std::function< bool(const core::dicom_dataset &dataset)> pre_store_handler
Callback type for pre-store validation.
storage_status
Storage operation status codes.
duplicate_policy
Policy for handling duplicate SOP instances.
@ ignore
Silently accept duplicate (return success)
@ reject
Reject duplicates with error status.
@ replace
Replace existing instance with new one.
std::function< storage_status( const core::dicom_dataset &dataset, const std::string &calling_ae, const std::string &sop_class_uid, const std::string &sop_instance_uid)> storage_handler
Callback type for handling received DICOM images.
constexpr std::string_view secondary_capture_image_storage_uid
Secondary Capture Image Storage.
constexpr std::string_view rt_image_storage_uid
RT Image Storage.
std::function< void( const core::dicom_dataset &dataset, const std::string &patient_id, const std::string &study_uid, const std::string &series_uid, const std::string &sop_instance_uid)> post_store_handler
Callback type for post-store notification.
constexpr std::string_view dx_image_storage_presentation_uid
Digital X-Ray Image Storage - For Presentation.
constexpr std::string_view ct_image_storage_uid
CT Image Storage.
constexpr std::string_view rt_plan_storage_uid
RT Plan Storage.
constexpr std::string_view rt_dose_storage_uid
RT Dose Storage.
constexpr std::string_view enhanced_ct_image_storage_uid
Enhanced CT Image Storage.
constexpr std::string_view rt_structure_set_storage_uid
RT Structure Set Storage.
constexpr std::string_view enhanced_mr_image_storage_uid
Enhanced MR Image Storage.
constexpr std::string_view dx_image_storage_processing_uid
Digital X-Ray Image Storage - For Processing.
Base class for DICOM SCP (Service Class Provider) services.
Storage SCP status codes for C-STORE operations.
Configuration for Storage SCP service.
duplicate_policy dup_policy
Policy for handling duplicate SOP instances.
std::vector< std::string > accepted_sop_classes
List of accepted SOP Class UIDs (empty = accept all standard storage classes)