|
PACS System 0.1.0
PACS DICOM system library
|
#include <query_scp.h>


Public Member Functions | |
| query_scp (std::shared_ptr< di::ILogger > logger=nullptr) | |
| Construct Query SCP with optional logger. | |
| ~query_scp () override=default | |
| void | set_handler (query_handler handler) |
| Set the query handler function. | |
| void | set_max_results (size_t max) noexcept |
| Set maximum number of results to return. | |
| size_t | max_results () const noexcept |
| Get maximum number of results. | |
| void | set_cancel_check (cancel_check check) |
| Set the cancel check function. | |
| void | set_audit_handler (std::shared_ptr< kcenon::pacs::security::atna_service_auditor > auditor) |
| Set the ATNA audit handler for C-FIND operations. | |
| std::vector< std::string > | supported_sop_classes () const override |
| Get supported SOP Class UIDs. | |
| network::Result< std::monostate > | handle_message (network::association &assoc, uint8_t context_id, const network::dimse::dimse_message &request) override |
| Handle an incoming DIMSE message (C-FIND-RQ) | |
| std::string_view | service_name () const noexcept override |
| Get the service name. | |
| size_t | queries_processed () const noexcept |
| Get total number of queries processed. | |
| void | reset_statistics () noexcept |
| Reset statistics counters. | |
Public Member Functions inherited from kcenon::pacs::services::scp_service | |
| scp_service (std::shared_ptr< di::ILogger > logger=nullptr) | |
| Construct SCP service with optional logger. | |
| virtual | ~scp_service ()=default |
| scp_service (const scp_service &)=delete | |
| scp_service & | operator= (const scp_service &)=delete |
| scp_service (scp_service &&)=default | |
| scp_service & | operator= (scp_service &&)=default |
| void | set_logger (std::shared_ptr< di::ILogger > logger) |
| Set the logger instance. | |
| const std::shared_ptr< di::ILogger > & | logger () const noexcept |
| Get the current logger instance. | |
| bool | supports_sop_class (std::string_view sop_class_uid) const |
| Check if this service supports a specific SOP Class. | |
Private Member Functions | |
| std::optional< query_level > | extract_query_level (const core::dicom_dataset &dataset) const |
| Extract query level from request dataset. | |
| network::Result< std::monostate > | send_pending_response (network::association &assoc, uint8_t context_id, uint16_t message_id, std::string_view sop_class_uid, const core::dicom_dataset &result) |
| Send a pending C-FIND response with matching dataset. | |
| network::Result< std::monostate > | send_final_response (network::association &assoc, uint8_t context_id, uint16_t message_id, std::string_view sop_class_uid, network::dimse::status_code status) |
| Send the final C-FIND response (success or cancel) | |
Private Attributes | |
| query_handler | handler_ |
| cancel_check | cancel_check_ |
| std::shared_ptr< kcenon::pacs::security::atna_service_auditor > | auditor_ |
| size_t | max_results_ {0} |
| std::atomic< size_t > | queries_processed_ {0} |
Additional Inherited Members | |
Protected Attributes inherited from kcenon::pacs::services::scp_service | |
| std::shared_ptr< di::ILogger > | logger_ |
| Logger instance for service logging. | |
Definition at line 189 of file query_scp.h.
|
explicit |
Construct Query SCP with optional logger.
| logger | Logger instance for service logging (nullptr uses null_logger) |
Definition at line 40 of file query_scp.cpp.
|
overridedefault |
|
nodiscardprivate |
Extract query level from request dataset.
| dataset | The query dataset |
Definition at line 215 of file query_scp.cpp.
References kcenon::pacs::core::dicom_dataset::get_string(), kcenon::pacs::services::parse_query_level(), and kcenon::pacs::core::tags::query_retrieve_level.
Referenced by handle_message().


|
nodiscardoverridevirtual |
Handle an incoming DIMSE message (C-FIND-RQ)
Processes the C-FIND request, queries the database through the handler, and sends pending responses for each match followed by a final success.
| assoc | The association on which the message was received |
| context_id | The presentation context ID for the message |
| request | The incoming C-FIND-RQ message |
Implements kcenon::pacs::services::scp_service.
Definition at line 79 of file query_scp.cpp.
References kcenon::pacs::network::dimse::dimse_message::affected_sop_class_uid(), kcenon::pacs::security::atna_service_auditor::audit_query(), auditor_, kcenon::pacs::network::association::called_ae(), kcenon::pacs::network::association::calling_ae(), cancel_check_, kcenon::pacs::network::dimse::dimse_message::command(), kcenon::pacs::network::dimse::dimse_message::dataset(), extract_query_level(), kcenon::pacs::error_codes::find_handler_not_set, kcenon::pacs::error_codes::find_unexpected_command, handler_, kcenon::pacs::network::dimse::dimse_message::has_dataset(), max_results_, kcenon::pacs::network::dimse::dimse_message::message_id(), kcenon::pacs::pacs_void_error(), queries_processed_, send_final_response(), send_pending_response(), and kcenon::pacs::services::to_string().

|
nodiscardnoexcept |
Get maximum number of results.
Definition at line 55 of file query_scp.cpp.
References max_results_.
|
nodiscardnoexcept |
Get total number of queries processed.
Definition at line 203 of file query_scp.cpp.
References queries_processed_.
|
noexcept |
Reset statistics counters.
Definition at line 207 of file query_scp.cpp.
References queries_processed_.
|
nodiscardprivate |
Send the final C-FIND response (success or cancel)
| assoc | The association |
| context_id | The presentation context ID |
| message_id | The original request message ID |
| sop_class_uid | The SOP Class UID |
| status | The final status code |
Definition at line 251 of file query_scp.cpp.
References kcenon::pacs::network::association::send_dimse().
Referenced by handle_message().


|
nodiscardprivate |
Send a pending C-FIND response with matching dataset.
| assoc | The association |
| context_id | The presentation context ID |
| message_id | The original request message ID |
| sop_class_uid | The SOP Class UID |
| result | The matching dataset |
Definition at line 228 of file query_scp.cpp.
References kcenon::pacs::network::association::send_dimse().
Referenced by handle_message().


|
nodiscardoverridevirtualnoexcept |
Get the service name.
Implements kcenon::pacs::services::scp_service.
Definition at line 195 of file query_scp.cpp.
| void kcenon::pacs::services::query_scp::set_audit_handler | ( | std::shared_ptr< kcenon::pacs::security::atna_service_auditor > | auditor | ) |
Set the ATNA audit handler for C-FIND operations.
When set, audit events are emitted for each completed C-FIND operation.
| auditor | Shared pointer to an ATNA service auditor |
Definition at line 63 of file query_scp.cpp.
References auditor_.
| void kcenon::pacs::services::query_scp::set_cancel_check | ( | cancel_check | check | ) |
Set the cancel check function.
The cancel check is called periodically during query processing to check if a C-CANCEL has been received.
| check | The cancel check function |
Definition at line 59 of file query_scp.cpp.
References cancel_check_.
| void kcenon::pacs::services::query_scp::set_handler | ( | query_handler | handler | ) |
Set the query handler function.
The handler is called for each C-FIND request to retrieve matching records from the database.
| handler | The query handler function |
Definition at line 47 of file query_scp.cpp.
References handler_.
|
noexcept |
Set maximum number of results to return.
| max | Maximum results (0 = unlimited) |
Definition at line 51 of file query_scp.cpp.
|
nodiscardoverridevirtual |
Get supported SOP Class UIDs.
Implements kcenon::pacs::services::scp_service.
Definition at line 72 of file query_scp.cpp.
References kcenon::pacs::services::patient_root_find_sop_class_uid, and kcenon::pacs::services::study_root_find_sop_class_uid.
|
private |
Definition at line 356 of file query_scp.h.
Referenced by handle_message(), and set_audit_handler().
|
private |
Definition at line 355 of file query_scp.h.
Referenced by handle_message(), and set_cancel_check().
|
private |
Definition at line 354 of file query_scp.h.
Referenced by handle_message(), and set_handler().
|
private |
Definition at line 357 of file query_scp.h.
Referenced by handle_message(), and max_results().
|
private |
Definition at line 358 of file query_scp.h.
Referenced by handle_message(), queries_processed(), and reset_statistics().