Connector for external AI inference services.
More...
#include <ai_service_connector.h>
|
| static std::unique_ptr< impl > | pimpl_ |
| |
Connector for external AI inference services.
This class provides a unified interface for interacting with external AI inference services, including:
- Sending DICOM studies for AI processing
- Tracking inference job status
- Cancelling running jobs
- Listing available AI models
The connector uses network_system for HTTP communication and integrates with logger_system for audit logging and monitoring_system for metrics.
Thread Safety: All methods are thread-safe.
- Example:
config.
base_url =
"https://ai.hospital.org/api/v1";
request.
model_id =
"chest-xray-detector-v2";
if (result.is_ok()) {
std::string job_id = result.value();
if (status_result.is_ok()) {
auto& status = status_result.value();
}
}
}
static auto request_inference(const inference_request &request) -> Result< std::string >
Request AI inference for a study.
static auto check_status(const std::string &job_id) -> Result< inference_status >
Check the status of an inference job.
static auto initialize(const ai_service_config &config) -> Result< std::monostate >
Initialize the AI service connector.
static void shutdown()
Shutdown the AI service connector.
@ api_key
API key in header.
@ completed
Job completed successfully.
Configuration for AI service connection.
authentication_type auth_type
Authentication type.
std::string api_key
API key (for api_key auth type)
std::string base_url
Base URL of the AI service (e.g., "https://ai.example.com/v1")
Request structure for AI inference.
std::string model_id
Model ID to use for inference.
std::string study_instance_uid
Study Instance UID to process.
Definition at line 311 of file ai_service_connector.h.
◆ completion_callback
Initial value: std::function<void(const std::string& job_id,
bool success,
const std::vector<std::string>& result_uids)>
Callback type for completion notification.
Definition at line 321 of file ai_service_connector.h.
◆ status_callback
◆ ai_service_connector() [1/2]
| kcenon::pacs::ai::ai_service_connector::ai_service_connector |
( |
| ) |
|
|
privatedelete |
◆ ~ai_service_connector()
| kcenon::pacs::ai::ai_service_connector::~ai_service_connector |
( |
| ) |
|
|
privatedelete |
◆ ai_service_connector() [2/2]
◆ cancel()
| static auto kcenon::pacs::ai::ai_service_connector::cancel |
( |
const std::string & | job_id | ) |
-> Result< std::monostate > |
|
staticnodiscard |
Cancel an inference job.
Attempts to cancel a pending or running job. Jobs that have already completed cannot be cancelled.
- Parameters
-
| job_id | The job identifier to cancel |
- Returns
- Result indicating success or failure
◆ check_health()
| static auto kcenon::pacs::ai::ai_service_connector::check_health |
( |
| ) |
-> bool |
|
staticnodiscard |
Check AI service health.
- Returns
- true if the service is healthy and accessible
◆ check_status()
| static auto kcenon::pacs::ai::ai_service_connector::check_status |
( |
const std::string & | job_id | ) |
-> Result< inference_status > |
|
staticnodiscard |
Check the status of an inference job.
- Parameters
-
| job_id | The job identifier returned from request_inference |
- Returns
- Result containing current status on success
◆ get_config()
| static auto kcenon::pacs::ai::ai_service_connector::get_config |
( |
| ) |
-> const ai_service_config & |
|
staticnodiscard |
Get the current configuration.
- Returns
- Current AI service configuration
◆ get_latency()
| static auto kcenon::pacs::ai::ai_service_connector::get_latency |
( |
| ) |
-> std::optional< std::chrono::milliseconds > |
|
staticnodiscard |
Get current latency to the AI service.
- Returns
- Round-trip time to the service, or nullopt if unavailable
◆ get_model_info()
| static auto kcenon::pacs::ai::ai_service_connector::get_model_info |
( |
const std::string & | model_id | ) |
-> Result< model_info > |
|
staticnodiscard |
Get information about a specific model.
- Parameters
-
| model_id | The model identifier |
- Returns
- Result containing model information
◆ initialize()
| static auto kcenon::pacs::ai::ai_service_connector::initialize |
( |
const ai_service_config & | config | ) |
-> Result< std::monostate > |
|
staticnodiscard |
Initialize the AI service connector.
Must be called before any other operations. Sets up HTTP client, configures authentication, and validates connection.
- Parameters
-
| config | Configuration options |
- Returns
- Result indicating success or initialization error
◆ is_initialized()
| static auto kcenon::pacs::ai::ai_service_connector::is_initialized |
( |
| ) |
-> bool |
|
staticnodiscardnoexcept |
Check if the connector is initialized.
- Returns
- true if initialized, false otherwise
◆ list_active_jobs()
| static auto kcenon::pacs::ai::ai_service_connector::list_active_jobs |
( |
| ) |
-> Result< std::vector< inference_status > > |
|
staticnodiscard |
List active inference jobs.
Returns all jobs that are currently pending or running.
- Returns
- Result containing list of active job statuses
◆ list_models()
| static auto kcenon::pacs::ai::ai_service_connector::list_models |
( |
| ) |
-> Result< std::vector< model_info > > |
|
staticnodiscard |
List available AI models.
- Returns
- Result containing list of available models
◆ operator=()
◆ request_inference()
| static auto kcenon::pacs::ai::ai_service_connector::request_inference |
( |
const inference_request & | request | ) |
-> Result< std::string > |
|
staticnodiscard |
Request AI inference for a study.
Submits a study for AI processing and returns a job ID for tracking.
- Parameters
-
| request | Inference request parameters |
- Returns
- Result containing job ID on success, or error on failure
- Note
- The study must be accessible to the AI service (either via DICOM C-MOVE or DICOMweb WADO-RS)
◆ shutdown()
| static void kcenon::pacs::ai::ai_service_connector::shutdown |
( |
| ) |
|
|
static |
Shutdown the AI service connector.
Cancels pending requests and releases resources.
◆ update_credentials()
| static auto kcenon::pacs::ai::ai_service_connector::update_credentials |
( |
authentication_type | auth_type, |
|
|
const std::string & | credentials ) -> Result< std::monostate > |
|
staticnodiscard |
Update authentication credentials.
- Parameters
-
| auth_type | New authentication type |
| credentials | New credentials (API key, token, or username:password) |
- Returns
- Result indicating success or failure
◆ wait_for_completion()
| static auto kcenon::pacs::ai::ai_service_connector::wait_for_completion |
( |
const std::string & | job_id, |
|
|
std::chrono::milliseconds | timeout = std::chrono::minutes{30}, |
|
|
status_callback | callback = nullptr ) -> Result< inference_status > |
|
staticnodiscard |
Wait for a job to complete.
Blocks until the job completes, fails, or times out.
- Parameters
-
| job_id | The job identifier to wait for |
| timeout | Maximum time to wait |
| callback | Optional status_callback for status updates |
- Returns
- Result containing final status on completion
◆ pimpl_
| std::unique_ptr<impl> kcenon::pacs::ai::ai_service_connector::pimpl_ |
|
staticprivate |
The documentation for this class was generated from the following file: