Kaapana Services

You can access Kaapana services in processing containers:

  • dicom-web-filter: Access control to dicom files (PACS)

  • access-information-interface: Manage users, roles, rights, software and other access control data.

  • notifications: Manage user or project notifications

  • minio: Manage files in the persistent object store

There is a kaapana_client library package that should allow you to easily use these services (the package was previously named kaapanapy; that name still works via a deprecated compatibility shim, but new code should import kaapana_client).

Notification Service

You can send notifications to the user (yourself) or to the project within your authorization scope (project users) using the following commands.

You can also find an example in:

templates_and_examples/examples/processing-pipelines/example/processing-containers/notify/files/example-notify.py

Example usage:

from kaapana_client.services import Notification, NotificationService

NotificationService.send(
    project_id: str, user_id: str, notification: Notification
)

NotificationService.send(
    project_id: str, notification: Notification
)

Notification Model

class Notification(BaseModel):
    topic: Optional[str]
    title: str
    description: str
    icon: Optional[str]
    link: Optional[str]

It is possible to send notification on failure of the workflow. Be aware that workflows with Single Execution flag will send notification for each failed job. You can set it up for the dag by adding it to the DAG arguments:

args = {
    "ui_forms": ui_forms,
    "ui_visible": True,
    "owner": "kaapana",
    "start_date": days_ago(0),
    "retries": 1,
    "retry_delay": timedelta(seconds=30),
    "send_notification_on_workflow_failure" : True
}

dag = DAG(
    dag_id="collect-metadata",
    default_args=args,
    concurrency=50,
    max_active_runs=50,
    schedule_interval=None,
)