25namespace consumer_tags {
63 bool is_imaging)
const {
67 const auto transaction =
107 std::shared_ptr<kcenon::pacs::security::atna_service_auditor> auditor) {
118 const auto* evidence_elem = kos_dataset.
get(
121 if (!evidence_elem || !evidence_elem->is_sequence()) {
122 result.
error_message =
"KOS document does not contain evidence sequence";
127 for (
const auto& study_item : evidence_elem->sequence_items()) {
130 if (!study_uid.empty()) {
139 const auto* series_elem = study_item.get(
141 if (!series_elem || !series_elem->is_sequence()) {
145 for (
const auto& series_item : series_elem->sequence_items()) {
147 if (!series_uid.empty()) {
156 const auto* sop_elem = series_item.get(
158 if (!sop_elem || !sop_elem->is_sequence()) {
162 for (
const auto& sop_item : sop_elem->sequence_items()) {
163 auto instance_uid = sop_item.get_string(
165 if (!instance_uid.empty()) {
176 const std::string& study_uid,
177 const std::string& series_uid,
178 const std::string& instance_uid)
const {
180 std::ostringstream url;
190 url <<
"studies/" << study_uid
191 <<
"/series/" << series_uid
192 <<
"/instances/" << instance_uid;
High-level facade for ATNA audit logging in DICOM services.
Represents a DICOM Dataset (ordered collection of Data Elements)
auto get(dicom_tag tag) noexcept -> dicom_element *
Get a pointer to the element with the given tag.
Represents a DICOM tag (Group, Element pair)
@ rad_69
RAD-69 Retrieve Imaging Document Set.
@ iti_43
ITI-43 Retrieve Document Set.
virtual void audit_xds_retrieve(xds_consumer_transaction transaction, const std::string &source_ae, const std::string &dest_ae, const std::string &study_uid, const std::string &patient_id, const std::vector< std::string > &sop_instance_uids, bool success)
Audit an XDS-I.b Retrieve Document Set transaction.
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.
imaging_document_consumer()=default
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 ¶ms) 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.
imaging_document_consumer_config config_
Compile-time constants for commonly used DICOM tags.
IHE XDS-I.b Imaging Document Consumer Actor.
Document reference returned from a registry query.
std::string unique_id
Document unique ID.
std::string repository_unique_id
Repository unique ID (identifies where the document is stored)
std::string patient_id
Patient ID.
Result of a document retrieval.
std::vector< std::string > referenced_study_uids
Instance references extracted from the KOS.
std::string error_message
Error message (if failed)
std::vector< std::string > referenced_series_uids
std::vector< std::string > referenced_instance_uids
bool success
Whether the retrieval succeeded.
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)
Result of a registry query.
std::string error_message
Error message (if failed)
bool success
Whether the query succeeded.