PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
imaging_document_consumer.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
20#ifndef PACS_SERVICES_XDS_IMAGING_DOCUMENT_CONSUMER_HPP
21#define PACS_SERVICES_XDS_IMAGING_DOCUMENT_CONSUMER_HPP
22
24
25#include <cstdint>
26#include <memory>
27#include <optional>
28#include <string>
29#include <vector>
30
31namespace kcenon::pacs::security { class atna_service_auditor; }
32
34
35// =============================================================================
36// Registry Query Types
37// =============================================================================
38
44 std::string patient_id;
45
47 std::optional<std::string> class_code;
48
50 std::optional<std::string> type_code;
51
53 std::optional<std::string> practice_setting_code;
54
56 std::optional<std::string> creation_time_from;
57
59 std::optional<std::string> creation_time_to;
60
62 std::string status{"Approved"};
63
65 std::string query_id{"urn:uuid:14d4debf-8f97-4251-9a74-a90016b0af0d"};
66};
67
73 std::string unique_id;
74
77
79 std::string entry_uuid;
80
82 std::string patient_id;
83
85 std::string class_code;
86
88 std::string type_code;
89
91 std::string creation_time;
92
94 std::string title;
95
97 std::string mime_type;
98
100 std::string status;
101
103 size_t size{0};
104};
105
111 bool success{false};
112
114 std::vector<document_reference> documents;
115
117 std::string error_message;
118
120 int http_status{0};
121};
122
128 bool success{false};
129
131 std::optional<core::dicom_dataset> document;
132
134 std::vector<std::string> referenced_study_uids;
135 std::vector<std::string> referenced_series_uids;
136 std::vector<std::string> referenced_instance_uids;
137
139 std::string error_message;
140
142 int http_status{0};
143};
144
145// =============================================================================
146// Imaging Document Consumer Configuration
147// =============================================================================
148
154 std::string registry_url;
155
157 std::string repository_url;
158
160 std::string wado_rs_url;
161
163 uint32_t timeout_ms{30000};
164
166 uint32_t max_results{100};
167};
168
169// =============================================================================
170// Imaging Document Consumer
171// =============================================================================
172
209public:
212
223 const registry_query_params& params) const;
224
241 const document_reference& doc_ref,
242 bool is_imaging = true) const;
243
254 std::shared_ptr<kcenon::pacs::security::atna_service_auditor> auditor);
255
266 const core::dicom_dataset& kos_dataset) const;
267
279 [[nodiscard]] std::string build_wado_rs_url(
280 const std::string& study_uid,
281 const std::string& series_uid,
282 const std::string& instance_uid) const;
283
288 [[nodiscard]] const imaging_document_consumer_config& config() const noexcept;
289
295
296private:
298 std::shared_ptr<kcenon::pacs::security::atna_service_auditor> auditor_;
299};
300
301} // namespace kcenon::pacs::services::xds
302
303#endif // PACS_SERVICES_XDS_IMAGING_DOCUMENT_CONSUMER_HPP
Represents a DICOM Dataset (ordered collection of Data Elements)
void set_config(const imaging_document_consumer_config &config)
Set configuration.
void set_audit_handler(std::shared_ptr< kcenon::pacs::security::atna_service_auditor > auditor)
Install an ATNA audit handler for XDS-I.b transactions.
std::shared_ptr< kcenon::pacs::security::atna_service_auditor > auditor_
const imaging_document_consumer_config & config() const noexcept
Get current configuration.
document_retrieval_result extract_references(const core::dicom_dataset &kos_dataset) const
Extract image references from a KOS dataset.
registry_query_result query_registry(const registry_query_params &params) const
Query the XDS registry for imaging documents.
std::string build_wado_rs_url(const std::string &study_uid, const std::string &series_uid, const std::string &instance_uid) const
Build a WADO-RS URL for retrieving a specific instance.
document_retrieval_result retrieve_document(const document_reference &doc_ref, bool is_imaging=true) const
Retrieve a specific document from the XDS repository.
DICOM Dataset - ordered collection of Data Elements.
Document reference returned from a registry query.
std::string repository_unique_id
Repository unique ID (identifies where the document is stored)
std::vector< std::string > referenced_study_uids
Instance references extracted from the KOS.
std::optional< core::dicom_dataset > document
The retrieved KOS dataset.
Configuration for the Imaging Document Consumer actor.
std::string wado_rs_url
WADO-RS base URL for image retrieval (alternative to C-MOVE)
std::string registry_url
XDS Registry endpoint URL for queries (ITI-18)
std::string repository_url
XDS Repository endpoint URL for document retrieval (ITI-43)
Query parameters for XDS registry stored query (ITI-18)
std::optional< std::string > creation_time_from
Optional: Creation time range (from)
std::optional< std::string > class_code
Optional: Document class code filter.
std::string status
Optional: Document availability status.
std::optional< std::string > creation_time_to
Optional: Creation time range (to)
std::optional< std::string > practice_setting_code
Optional: Practice setting code filter.
std::optional< std::string > type_code
Optional: Type code filter.
std::vector< document_reference > documents
Found document references.