PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
storage_commitment_scu.h
Go to the documentation of this file.
1// BSD 3-Clause License
2// Copyright (c) 2021-2025, 🍀☀🌕🌥 🌊
3// See the LICENSE file in the project root for full license information.
4
19#ifndef PACS_SERVICES_STORAGE_COMMITMENT_SCU_HPP
20#define PACS_SERVICES_STORAGE_COMMITMENT_SCU_HPP
21
23
28
29#include <atomic>
30#include <functional>
31#include <memory>
32#include <string>
33
34namespace kcenon::pacs::services {
35
58public:
60 std::shared_ptr<di::ILogger> logger = nullptr);
61
63
64 // =========================================================================
65 // Callback Configuration
66 // =========================================================================
67
73 using commitment_callback = std::function<void(
74 const std::string& transaction_uid,
75 const commitment_result& result)>;
76
82
83 // =========================================================================
84 // N-ACTION Request
85 // =========================================================================
86
101 uint8_t context_id,
102 const std::string& transaction_uid,
103 const std::vector<sop_reference>& references);
104
105 // =========================================================================
106 // N-EVENT-REPORT Handler
107 // =========================================================================
108
119 const network::dimse::dimse_message& event_rq);
120
121 // =========================================================================
122 // Statistics
123 // =========================================================================
124
125 [[nodiscard]] size_t requests_sent() const noexcept;
126 [[nodiscard]] size_t event_reports_received() const noexcept;
127 void reset_statistics() noexcept;
128
129private:
130 // =========================================================================
131 // Dataset Builders
132 // =========================================================================
133
134 [[nodiscard]] static core::dicom_dataset build_action_dataset(
135 const std::string& transaction_uid,
136 const std::vector<sop_reference>& references);
137
139 const core::dicom_dataset& dataset);
140
141 // =========================================================================
142 // Member Variables
143 // =========================================================================
144
145 std::shared_ptr<di::ILogger> logger_;
147
148 std::atomic<size_t> requests_sent_{0};
149 std::atomic<size_t> event_reports_received_{0};
150};
151
152} // namespace kcenon::pacs::services
153
154#endif // PACS_SERVICES_STORAGE_COMMITMENT_SCU_HPP
DICOM Association management per PS3.8.
std::function< void( const std::string &transaction_uid, const commitment_result &result)> commitment_callback
Callback type for commitment results.
storage_commitment_scu(std::shared_ptr< di::ILogger > logger=nullptr)
void set_commitment_callback(commitment_callback cb)
Set callback for commitment result notifications.
network::Result< commitment_result > handle_event_report(const network::dimse::dimse_message &event_rq)
Handle an N-EVENT-REPORT-RQ received from the SCP.
static commitment_result parse_event_report_dataset(const core::dicom_dataset &dataset)
network::Result< std::monostate > request_commitment(network::association &assoc, uint8_t context_id, const std::string &transaction_uid, const std::vector< sop_reference > &references)
Send N-ACTION request to commit stored instances.
static core::dicom_dataset build_action_dataset(const std::string &transaction_uid, const std::vector< sop_reference > &references)
DICOM Dataset - ordered collection of Data Elements.
DIMSE message encoding and decoding.
Logger interface for dependency injection.
Data types for DICOM Storage Commitment Push Model Service.
Result of a Storage Commitment verification.
Reference to a SOP Instance in a commitment request.