Skip to content

DICOM gateway for publishing images in Kheops and for de-identification

License

Notifications You must be signed in to change notification settings

OsiriX-Foundation/karnak

Folders and files

NameName
Last commit message
Last commit date

Latest commit

7826062 · Mar 31, 2023
Feb 21, 2023
Jan 14, 2021
Nov 3, 2022
Aug 17, 2022
Mar 31, 2023
Mar 24, 2022
Jun 3, 2020
Jan 26, 2021
Jun 3, 2021
Nov 5, 2022
Nov 4, 2022
Jan 14, 2021
Jan 14, 2021
Jan 14, 2021
Mar 5, 2022
Mar 31, 2023

Repository files navigation

License License Maven build

Sonar Sonar Sonar Sonar Sonar

Karnak is a DICOM gateway for data de-identification and DICOM attribute normalization.

Karnak manages a continuous DICOM flow with a DICOM listener as input and a DICOM and/or DICOMWeb as output.

For more information, see the online Karnak user guide

⚠️ Security: Karnak is using Logback and is not affected by CVE-2021-44228. CVE-2021-42550 has been fixed since v0.9.9

Application Features

Gateway

  • Allows building mapping between a source and one or more destinations
  • Each destination can be DICOM or DICOMWeb
  • Filter the images providers by AETitle and/or hostname (ot ensure the authenticity of the source)

de-identification

  • Each destination can be configured with a specific de-identification profile
  • Configuration for sending only specific SopClassUIDs
  • Build your own de-identification profile or add modifications to the basic DICOM profile
  • Import and export the de-identification profiles

Build Karnak

Prerequisites:

Karnak

Execute the maven command mvn clean install -P production in the root directory of the project.

Run Karnak

To configure and run Karnak with docker-compose, see karnak-docker.

Debug Karnak

Debug in IntelliJ

  • Launch the components needed by Karnak (see below "Configure locally Mainzelliste and Postgres database with docker-compose")
  • Enable Spring and Spring Boot for the project
  • Create a Spring Boot launcher from main of StartApplication.java
    • Working Directory must be the mvc directory
    • In VM Options, add -Djava.library.path="/tmp/dicom-opencv". Note: the tmp folder must be adapted according to your system and dicom-opencv is mandatory as the last folder.
    • In Environment variables, add the following values. The following values work with our default configuration define with docker used for the development (see: "Configure locally Mainzelliste and Postgres database with docker-compose") :
      • Mandatory:
        • ENVIRONMENT=DEV
      • Optional:
        • DB_PASSWORD=5!KAnN@%98%d
        • DB_PORT=5433
        • DB_USER=karnak
        • DB_NAME=karnak
        • DB_HOST=localhost
        • MAINZELLISTE_HOSTNAME=localhost
        • MAINZELLISTE_HTTP_PORT=8083
        • MAINZELLISTE_API_KEY=changeThisApiKey
        • KARNAK_ADMIN=admin
        • KARNAK_PASSWORD=admin
        • KARNAK_LOGS_MAX_FILE_SIZE=100MB
        • KARNAK_LOGS_MIN_INDEX=1
        • KARNAK_LOGS_MAX_INDEX=10
        • KARNAK_CLINICAL_LOGS_MAX_FILE_SIZE=100MB
        • KARNAK_CLINICAL_LOGS_MIN_INDEX=1
        • KARNAK_CLINICAL_LOGS_MAX_INDEX=10
        • IDP=undefined
        • OIDC_CLIENT_ID=undefined
        • OIDC_CLIENT_SECRET=undefined
        • OIDC_ISSUER_URI=undefined

Configure locally Mainzelliste and Postgres database with docker-compose

Minimum docker-compose version: 1.22

  • Go in the docker folder located in the root project folder.
  • To configure third-party components used by karnak, please refer to these links:
  • Adapt the values if necessary (copy .env.example into .env and modify it)
  • Execute command:
    • start: docker-compose up -d
    • show the logs: docker-compose logs -f
    • stop: docker-compose down

Docker

Minimum docker version: 19.03

Build with Dockerfile

Go on the root folder and launch the following command:

  • Full independent build: docker build -t local/karnak:latest -f Dockerfile .
  • Build from compile package:
    • mvn clean install -P production
    • docker build -t local/karnak:latest -f src/main/docker/Dockerfile .

Run image from Docker Hub

See karnak-docker

Docker environment variables

See all the environment variables

Architecture

This project is divided in two parts:

  • backend: spring data (entities, repositories, converters, validators), enums, spring configurations, spring security, cache, spring services, models...
  • frontend : Vaadin components: logic services, graphic components, views

Identity provider

An OpenID Connect identity provider can be configured by using the environment variables:

  • IDP: when this environment variable has the value 'oidc', the following environment variables will configure the OpenID Connect identity provider. Any other value will load the in memory user configuration.
  • OIDC_CLIENT_ID: client id of the identity provider
  • OIDC_CLIENT_SECRET: client secret of the identity provider
  • OIDC_ISSUER_URI: issuer URI of the identity provider

Documentation for API/Endpoints

Workflow

Workflow

Pipeline

Workflow

About

DICOM gateway for publishing images in Kheops and for de-identification

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages