|
PACS System 0.1.0
PACS DICOM system library
|
Storage Commitment Push Model SCP. More...
#include <storage_commitment_scp.h>


Public Member Functions | |
| storage_commitment_scp (std::shared_ptr< storage::storage_interface > storage, std::shared_ptr< di::ILogger > logger=nullptr) | |
| Construct Storage Commitment SCP with storage backend. | |
| ~storage_commitment_scp () override=default | |
| std::vector< std::string > | supported_sop_classes () const override |
| Get the list of SOP Class UIDs supported by this service. | |
| 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. | |
| std::string_view | service_name () const noexcept override |
| Get the service name for logging/debugging. | |
| size_t | actions_processed () const noexcept |
| size_t | instances_committed () const noexcept |
| size_t | instances_failed () const noexcept |
| void | reset_statistics () noexcept |
Public Member Functions inherited from kcenon::pacs::services::scp_service | |
| scp_service (std::shared_ptr< di::ILogger > logger=nullptr) | |
| Construct SCP service with optional logger. | |
| virtual | ~scp_service ()=default |
| scp_service (const scp_service &)=delete | |
| scp_service & | operator= (const scp_service &)=delete |
| scp_service (scp_service &&)=default | |
| scp_service & | operator= (scp_service &&)=default |
| void | set_logger (std::shared_ptr< di::ILogger > logger) |
| Set the logger instance. | |
| const std::shared_ptr< di::ILogger > & | logger () const noexcept |
| Get the current logger instance. | |
| bool | supports_sop_class (std::string_view sop_class_uid) const |
| Check if this service supports a specific SOP Class. | |
Private Member Functions | |
| network::Result< std::monostate > | handle_n_action (network::association &assoc, uint8_t context_id, const network::dimse::dimse_message &request) |
| commitment_result | verify_instances (const std::string &transaction_uid, const std::vector< sop_reference > &references) |
| network::Result< std::monostate > | send_event_report (network::association &assoc, uint8_t context_id, const commitment_result &result) |
| network::Result< std::monostate > | send_n_action_response (network::association &assoc, uint8_t context_id, uint16_t message_id, network::dimse::status_code status) |
Static Private Member Functions | |
| static std::vector< sop_reference > | parse_referenced_sop_sequence (const core::dicom_dataset &dataset) |
| static core::dicom_dataset | build_event_report_dataset (const commitment_result &result) |
Private Attributes | |
| std::shared_ptr< storage::storage_interface > | storage_ |
| std::atomic< size_t > | actions_processed_ {0} |
| std::atomic< size_t > | instances_committed_ {0} |
| std::atomic< size_t > | instances_failed_ {0} |
Additional Inherited Members | |
Protected Attributes inherited from kcenon::pacs::services::scp_service | |
| std::shared_ptr< di::ILogger > | logger_ |
| Logger instance for service logging. | |
Storage Commitment Push Model SCP.
Processes N-ACTION requests containing Referenced SOP Sequences, verifies each instance exists in storage, and sends an N-EVENT-REPORT with per-instance success/failure status.
Definition at line 59 of file storage_commitment_scp.h.
|
explicit |
Construct Storage Commitment SCP with storage backend.
| storage | The storage interface for verifying instance existence |
| logger | Logger instance for service logging |
Definition at line 23 of file storage_commitment_scp.cpp.
|
overridedefault |
|
nodiscardnoexcept |
Definition at line 64 of file storage_commitment_scp.cpp.
References actions_processed_.
|
staticnodiscardprivate |
Definition at line 266 of file storage_commitment_scp.cpp.
References kcenon::pacs::services::commitment_result::failed_references, kcenon::pacs::core::tags::failed_sop_sequence, kcenon::pacs::core::tags::failure_reason, kcenon::pacs::core::dicom_dataset::get_or_create_sequence(), kcenon::pacs::core::tags::referenced_sop_class_uid, kcenon::pacs::core::tags::referenced_sop_instance_uid, kcenon::pacs::core::tags::referenced_sop_sequence, kcenon::pacs::core::dicom_dataset::set_string(), kcenon::pacs::services::commitment_result::success_references, kcenon::pacs::core::tags::transaction_uid, kcenon::pacs::services::commitment_result::transaction_uid, kcenon::pacs::encoding::UI, and kcenon::pacs::encoding::US.
Referenced by send_event_report().


|
nodiscardoverridevirtual |
Handle an incoming DIMSE message.
Processes the request and sends appropriate response(s) via the association.
| assoc | The association on which the message was received |
| context_id | The presentation context ID for the message |
| request | The incoming DIMSE request message |
Implements kcenon::pacs::services::scp_service.
Definition at line 37 of file storage_commitment_scp.cpp.
References kcenon::pacs::network::dimse::dimse_message::command(), handle_n_action(), kcenon::pacs::pacs_void_error(), kcenon::pacs::error_codes::storage_commitment_unexpected_command, and kcenon::pacs::services::to_string().

|
nodiscardprivate |
Definition at line 86 of file storage_commitment_scp.cpp.
References kcenon::pacs::network::dimse::dimse_message::action_type_id(), actions_processed_, kcenon::pacs::network::dimse::dimse_message::affected_sop_class_uid(), kcenon::pacs::network::dimse::dimse_message::command_set(), kcenon::pacs::network::dimse::dimse_message::dataset(), kcenon::pacs::network::dimse::dimse_message::has_dataset(), instances_committed_, instances_failed_, kcenon::pacs::network::dimse::dimse_message::message_id(), parse_referenced_sop_sequence(), send_event_report(), send_n_action_response(), kcenon::pacs::services::storage_commitment_action_type_request, kcenon::pacs::services::storage_commitment_push_model_sop_class_uid, kcenon::pacs::core::tags::transaction_uid, and verify_instances().
Referenced by handle_message().


|
nodiscardnoexcept |
Definition at line 68 of file storage_commitment_scp.cpp.
References instances_committed_.
|
nodiscardnoexcept |
Definition at line 72 of file storage_commitment_scp.cpp.
References instances_failed_.
|
staticnodiscardprivate |
Definition at line 243 of file storage_commitment_scp.cpp.
References kcenon::pacs::core::dicom_dataset::get_sequence(), kcenon::pacs::core::tags::referenced_sop_class_uid, kcenon::pacs::core::tags::referenced_sop_instance_uid, kcenon::pacs::core::tags::referenced_sop_sequence, kcenon::pacs::services::sop_reference::sop_class_uid, and kcenon::pacs::services::sop_reference::sop_instance_uid.
Referenced by handle_n_action().


|
noexcept |
Definition at line 76 of file storage_commitment_scp.cpp.
References actions_processed_, instances_committed_, and instances_failed_.
|
nodiscardprivate |
Definition at line 190 of file storage_commitment_scp.cpp.
References build_event_report_dataset(), kcenon::pacs::services::commitment_result::failed_references, kcenon::pacs::network::association::send_dimse(), kcenon::pacs::services::storage_commitment_event_type_failure, kcenon::pacs::services::storage_commitment_event_type_success, kcenon::pacs::services::storage_commitment_push_model_sop_class_uid, and kcenon::pacs::services::storage_commitment_push_model_sop_instance_uid.
Referenced by handle_n_action().


|
nodiscardprivate |
Definition at line 221 of file storage_commitment_scp.cpp.
References kcenon::pacs::network::association::send_dimse(), kcenon::pacs::services::storage_commitment_action_type_request, kcenon::pacs::services::storage_commitment_push_model_sop_class_uid, and kcenon::pacs::services::storage_commitment_push_model_sop_instance_uid.
Referenced by handle_n_action().


|
nodiscardoverridevirtualnoexcept |
Get the service name for logging/debugging.
Implements kcenon::pacs::services::scp_service.
Definition at line 56 of file storage_commitment_scp.cpp.
|
nodiscardoverridevirtual |
Get the list of SOP Class UIDs supported by this service.
Implements kcenon::pacs::services::scp_service.
Definition at line 33 of file storage_commitment_scp.cpp.
References kcenon::pacs::services::storage_commitment_push_model_sop_class_uid.
|
nodiscardprivate |
Definition at line 166 of file storage_commitment_scp.cpp.
References kcenon::pacs::services::commitment_result::failed_references, kcenon::pacs::services::no_such_object_instance, storage_, kcenon::pacs::services::commitment_result::success_references, kcenon::pacs::services::commitment_result::timestamp, and kcenon::pacs::services::commitment_result::transaction_uid.
Referenced by handle_n_action().

|
private |
Definition at line 148 of file storage_commitment_scp.h.
Referenced by actions_processed(), handle_n_action(), and reset_statistics().
|
private |
Definition at line 149 of file storage_commitment_scp.h.
Referenced by handle_n_action(), instances_committed(), and reset_statistics().
|
private |
Definition at line 150 of file storage_commitment_scp.h.
Referenced by handle_n_action(), instances_failed(), and reset_statistics().
|
private |
Definition at line 146 of file storage_commitment_scp.h.
Referenced by verify_instances().