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
- 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)
- 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
Prerequisites:
- JDK 17
- Maven 3
- Code formatter: google-java-format
Execute the maven command mvn clean install -P production
in the root directory of the project.
To configure and run Karnak with docker-compose, see karnak-docker.
- 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 anddicom-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
- Mandatory:
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
- start:
Minimum docker version: 19.03
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 .
See karnak-docker
See all the environment variables
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
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 providerOIDC_CLIENT_SECRET
: client secret of the identity providerOIDC_ISSUER_URI
: issuer URI of the identity provider