33struct rest_server_context;
35namespace storage_commitment {
55[[nodiscard]] std::optional<transaction_state>
parse_state(
56 std::string_view str)
noexcept;
107 [[nodiscard]] std::optional<commitment_transaction>
find(
108 std::string_view transaction_uid)
const;
122 [[nodiscard]] std::vector<commitment_transaction>
list(
123 size_t limit = 0)
const;
128 [[nodiscard]]
size_t size()
const;
148 const std::vector<commitment_transaction>& transactions);
163 std::string_view json_body,
164 std::string_view study_uid =
"");
In-memory store for commitment transactions.
std::map< std::string, commitment_transaction, std::less<> > transactions_
std::optional< commitment_transaction > find(std::string_view transaction_uid) const
Find a transaction by its UID.
void add(commitment_transaction txn)
Add a new transaction.
bool update(const commitment_transaction &txn)
Update an existing transaction.
size_t size() const
Get the number of stored transactions.
std::vector< commitment_transaction > list(size_t limit=0) const
List all transactions (newest first)
commitment_failure_reason
Failure reason codes for Storage Commitment.
transaction_state
Transaction state for DICOMweb Storage Commitment.
@ partial
Some instances verified, others failed.
@ success
All referenced instances verified present and intact.
@ failure
Commitment verification failed.
@ pending
Commitment request received, verification in progress.
parse_result parse_commitment_request(std::string_view json_body, std::string_view study_uid="")
std::string transactions_to_json(const std::vector< commitment_transaction > &transactions)
Serialize a list of transactions to DICOM JSON array.
std::optional< transaction_state > parse_state(std::string_view str) noexcept
Parse transaction state from string.
std::string_view to_string(transaction_state state) noexcept
Convert transaction state to string.
std::string transaction_to_json(const commitment_transaction &txn)
Serialize a commitment transaction to DICOM JSON.
Data types for DICOM Storage Commitment Push Model Service.
Reference to a SOP Instance in a commitment request.
A storage commitment transaction record.
transaction_state state
Current state of the transaction.
std::vector< std::pair< services::sop_reference, services::commitment_failure_reason > > failed_references
Failed references with reasons (populated when verified)
std::string transaction_uid
Unique transaction identifier (DICOM UID format)
std::vector< services::sop_reference > success_references
Successfully committed references (populated when verified)
std::optional< std::chrono::system_clock::time_point > completed_at
Timestamp when verification completed.
std::string study_instance_uid
Study Instance UID (optional, for study-level commitment)
std::vector< services::sop_reference > requested_references
SOP Instance references requested for commitment.
std::chrono::system_clock::time_point created_at
Timestamp when the commitment was requested.
Parse a commitment request from JSON body.
std::string error_message
std::vector< services::sop_reference > references