PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
imaging_document_source.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
21#ifndef PACS_SERVICES_XDS_IMAGING_DOCUMENT_SOURCE_HPP
22#define PACS_SERVICES_XDS_IMAGING_DOCUMENT_SOURCE_HPP
23
25
26#include <cstdint>
27#include <optional>
28#include <string>
29#include <vector>
30
32
33// =============================================================================
34// XDS Document Metadata
35// =============================================================================
36
45 std::string entry_uuid;
46
48 std::string unique_id;
49
51 std::string patient_id;
52
54 std::string source_patient_id;
55
57 std::string class_code;
58 std::string class_code_scheme;
59 std::string class_code_display;
60
62 std::string type_code;
63 std::string type_code_scheme;
64 std::string type_code_display;
65
67 std::string format_code;
68 std::string format_code_scheme;
69
71 std::string mime_type{"application/dicom"};
72
74 std::string creation_time;
75
77 std::string service_start_time;
78 std::string service_stop_time;
79
81 std::string facility_type_code;
83
87
89 std::string author_person;
90 std::string author_institution;
91
93 std::string title;
94
96 std::string language_code{"en-US"};
97
99 std::string availability_status{"Approved"};
100};
101
107 std::string unique_id;
108
110 std::string source_id;
111
113 std::string patient_id;
114
116 std::string content_type_code;
119
121 std::string submission_time;
122
124 std::string author_person;
126};
127
128// =============================================================================
129// KOS Document Reference
130// =============================================================================
131
137 std::string sop_class_uid;
138
140 std::string sop_instance_uid;
141
144
147};
148
154 bool success{false};
155
157 std::optional<core::dicom_dataset> kos_dataset;
158
160 std::string kos_instance_uid;
161
163 std::string error_message;
164
167};
168
169// =============================================================================
170// Publication Result
171// =============================================================================
172
178 bool success{false};
179
182
184 std::string error_message;
185
187 int http_status{0};
188};
189
190// =============================================================================
191// Imaging Document Source Configuration
192// =============================================================================
193
199 std::string registry_url;
200
202 std::string source_oid;
203
206
208 std::string facility_type_code{"Radiology"};
209 std::string facility_type_code_scheme{"2.16.840.1.113883.5.11"};
210
212 std::string practice_setting_code{"Radiology"};
213 std::string practice_setting_code_scheme{"2.16.840.1.113883.6.96"};
214
216 uint32_t timeout_ms{30000};
217
220};
221
222// =============================================================================
223// Imaging Document Source
224// =============================================================================
225
262public:
265
278 const std::string& study_instance_uid,
279 const std::vector<kos_instance_reference>& references,
280 const std::optional<core::dicom_dataset>& patient_demographics = std::nullopt) const;
281
293 const core::dicom_dataset& kos_dataset) const;
294
305 const std::string& patient_id) const;
306
319 const core::dicom_dataset& kos_dataset,
320 const xds_document_entry& entry) const;
321
326 [[nodiscard]] const imaging_document_source_config& config() const noexcept;
327
333
334private:
336
338 [[nodiscard]] std::string generate_uid() const;
339
342 core::dicom_dataset& kos_dataset,
343 const std::vector<kos_instance_reference>& references) const;
344};
345
346} // namespace kcenon::pacs::services::xds
347
348#endif // PACS_SERVICES_XDS_IMAGING_DOCUMENT_SOURCE_HPP
const imaging_document_source_config & config() const noexcept
Get current configuration.
std::string generate_uid() const
Generate a new UID for KOS instances.
void build_evidence_sequence(core::dicom_dataset &kos_dataset, const std::vector< kos_instance_reference > &references) const
Build the Current Requested Procedure Evidence Sequence.
publication_result publish_document(const core::dicom_dataset &kos_dataset, const xds_document_entry &entry) const
Publish a KOS document to the XDS registry/repository.
void set_config(const imaging_document_source_config &config)
Set configuration.
xds_submission_set build_submission_set(const std::string &patient_id) const
Build XDS submission set metadata.
kos_creation_result create_kos_document(const std::string &study_instance_uid, const std::vector< kos_instance_reference > &references, const std::optional< core::dicom_dataset > &patient_demographics=std::nullopt) const
Create a KOS document from a set of DICOM instance references.
xds_document_entry build_document_entry(const core::dicom_dataset &kos_dataset) const
Build XDS document entry metadata from a KOS dataset.
DICOM Dataset - ordered collection of Data Elements.
Configuration for the Imaging Document Source actor.
std::string source_oid
Source system OID (used as sourceId in submissions)
std::string practice_setting_code
Default practice setting code.
std::string assigning_authority_oid
Assigning authority OID for patient IDs.
std::string registry_url
XDS Registry/Repository endpoint URL.
bool include_all_instances
Whether to include all instances or just key instances.
Result of a KOS document creation operation.
std::optional< core::dicom_dataset > kos_dataset
The created KOS dataset (if successful)
size_t reference_count
Number of referenced instances.
std::string kos_instance_uid
SOP Instance UID of the created KOS.
bool success
Whether the KOS was created successfully.
Reference to a DICOM instance within a KOS document.
std::string sop_instance_uid
Referenced SOP Instance UID.
std::string series_instance_uid
Referenced Series Instance UID.
Result of publishing a document to an XDS registry/repository.
std::string document_entry_uuid
Registry-assigned document entry UUID.
std::string error_message
Error message (if failed)
bool success
Whether the publication was successful.
Document entry metadata for XDS registry submission.
std::string creation_time
Creation time (DTM format: YYYYMMDDhhmmss)
std::string patient_id
Patient ID in CX format (ID^^^&OID&ISO)
std::string format_code_scheme
std::string type_code_display
std::string service_start_time
Service start/stop time.
std::string mime_type
MIME type of the document.
std::string class_code
Document class code (e.g., "Imaging Procedure")
std::string class_code_scheme
std::string facility_type_code_scheme
std::string type_code
Type code (e.g., "Key Object Selection")
std::string unique_id
Document unique ID (OID format)
std::string facility_type_code
Healthcare facility type.
std::string source_patient_id
Source patient ID (from the originating system)
std::string type_code_scheme
std::string class_code_display
std::string availability_status
Availability status.
std::string author_person
Author information.
std::string format_code
Format code (e.g., "1.2.840.10008.5.1.4.1.1.88.59")
std::string language_code
Language code (e.g., "en-US")
std::string author_institution
std::string entry_uuid
Unique identifier for this document entry.
std::string service_stop_time
std::string title
Title/description.
std::string practice_setting_code_scheme
std::string practice_setting_code
Practice setting code.
Submission set metadata for XDS registry.
std::string unique_id
Unique identifier for this submission set.
std::string source_id
Source ID (OID of the submitting system)
std::string submission_time
Submission time (DTM format)