Skip to content

Configuration ​

The Data Portal backend is configured via environment variables. See this sections for available variables and their defaults

LOG_LEVEL ​

Sets the log level being used. Possible values are: error, warn, info, debug and trace.

Default: warn


HIBERNATE_SHOW_SQL ​

Show the sql statements hibernate executes.

Default: false


LOG_LEVEL_SQL ​

The log level for hibernate.

Default: warn


BROKER_CLIENT_MOCK_ENABLED ​

Enables the mock client. Possible values are true and false.

Default: true


BROKER_CLIENT_DIRECT_ENABLED ​

Enables the direct client. Possible values are true and false.

Default: false


BROKER_CLIENT_AKTIN_ENABLED ​

Enables the aktin client. Possible values are true and false.

Default: false


BROKER_CLIENT_DSF_ENABLED ​

Enables the dsf client. Possible values are true and false.

Default: false


KEYCLOAK_BASE_URL_ISSUER ​

Base URL the keycloak instance uses in the issuer claim

Default: http://localhost:8080


KEYCLOAK_BASE_URL_JWK ​

Base URL for the JWK Set URI of the keycloak instance

Default: http://localhost:8080


KEYCLOAK_REALM ​

Realm to be used for checking bearer tokens.

Default: dataportal


KEYCLOAK_ALLOWED_ROLE ​

The name of the role a user needs to have basic access to the Data Portal function.

Default: DataportalUser


KEYCLOAK_POWER_ROLE ​

Optional role that can be assigned to a user to free them from being subject to any hard limits (see PRIVACY_QUOTA_HARD.* EnvVars).

Default: DataportalPowerUser


KEYCLOAK_ADMIN_ROLE ​

Role that gives admin rights to a user. Admins do not fall under any limits and can also see un-obfuscated site names.

Default: DataportalAdmin


SPRING_DATASOURCE_URL ​

The JDBC URL of the Postgres Data Portal database.

Default: jdbc:postgresql://dataportal-db:5432/dataportal


SPRING_DATASOURCE_USERNAME ​

Username to connect to the Postgres Data Portal database.

Default: dataportaluser


SPRING_DATASOURCE_PASSWORD ​

Password to connect to the Postgres Data Portal database.

Default: dataportalpw


ONTOLOGY_DB_MIGRATION_FOLDER ​

The folder containing SQL migration scripts used by Flyway.

Default: ontology/migration


MAPPINGS_FILE ​

The file containing the mappings for CQL translation.

Default: ontology/mapping_cql.json


CONCEPT_TREE_FILE ​

The file containing the mapping tree for CQL translation.

Default: ontology/mapping_tree.json


TERMINOLOGY_SYSTEMS_FILE ​

The file containing mappings between terminology system urls and "normal" names.

Default: ontology/terminology_systems.json


CQL_TRANSLATE_ENABLED ​

When set to true, queries will be translated to CQL in addition to the CCDL representation.

Default: true


FHIR_TRANSLATE_ENABLED ​

When set to true, queries will be translated to fhir search in addition to the CCDL representation.

Default: false


FLARE_WEBSERVICE_BASE_URL ​

URL of the local FLARE webservice - needed for FHIR query translation and when running the DIRECT path

Default: http://localhost:5000


CQL_SERVER_BASE_URL ​

URL of the local FHIR server that handles CQL requests

Default: http://cql


QUERY_VALIDATION_ENABLED ​

When enabled, any CCDL submitted via the run-query endpoint is validated against the JSON schema located in src/main/resources/query/query-schema.json

Default: true


QUERYRESULT_EXPIRY ​

For what duration should query results be kept in memory? (ISO 8601 duration)

Default: PT5M


QUERYRESULT_PUBLIC_KEY ​

The public key in Base64-encoded DER format without banners and line breaks. Mandatory if QUERYRESULT_DISABLE_LOG_FILE_ENCRYPTION is false

Default: – (none)


QUERYRESULT_DISABLE_LOG_FILE_ENCRYPTION ​

Disable encryption of the result log file.

Default: – (none)


ALLOWED_ORIGINS ​

Allowed origins for cross-origin requests. This should at least cover the frontend address.

Default: http://localhost


MAX_SAVED_QUERIES_PER_USER ​

How many slots does a user have to store saved queries.

Default: 10


EXPORT_CSV_DELIMITER ​

The delimiter used when exporting dataqueries as csv files.

Default: ;


EXPORT_CSV_TEXTWRAPPER ​

The wrapper char used to wrap an entry in the csv export of a dataquery.

Default: "


PURGE_EXPIRED_QUERIES ​

Cron expression to schedule when to check for (and delete) expired queries

Default: 0 0 * * * *


BROKER_CLIENT_DIRECT_AUTH_BASIC_USERNAME ​

Username to use to connect to flare or directly to the FHIR server via CQL

Default: – (none)


BROKER_CLIENT_DIRECT_AUTH_BASIC_PASSWORD ​

Password for that user

Default: – (none)


BROKER_CLIENT_DIRECT_AUTH_OAUTH_ISSUER_URL ​

Issuer URL of OpenID Connect provider for authenticating access to OAuth2 protected FHIR server

Default: – (none)


BROKER_CLIENT_DIRECT_AUTH_OAUTH_CLIENT_ID ​

Client ID to use when authenticating at OpenID Connect provider

Default: – (none)


BROKER_CLIENT_DIRECT_AUTH_OAUTH_CLIENT_SECRET ​

Client secret to use when authenticating at OpenID Connect provider

Default: – (none)


BROKER_CLIENT_DIRECT_USE_CQL ​

Whether to use a CQL server or not.

Default: false


BROKER_CLIENT_DIRECT_CQL_USE_ASYNC ​

Whether to use the FHIR Async Request Pattern when using a CQL server.

Default: false


BROKER_CLIENT_DIRECT_TIMEOUT ​

Maximum time waiting for response from FLARE or FHIR server (ISO 8601 duration)

Default: PT20S


BROKER_CLIENT_OBFUSCATE_RESULT_COUNT ​

Whether the result counts retrieved from the direct broker shall be obfuscated

Default: false


AKTIN_BROKER_BASE_URL ​

Base URL for the AKTIN RESTful API

Default: – (none)


AKTIN_BROKER_API_KEY ​

API key for the broker RESTful API with admin privileges

Default: – (none)


DSF_SECURITY_CACERT ​

Certificate chain (PEM encoded) required for secured communication with the DSF middleware.

Default: – (none)


DSF_SECURITY_CLIENT_CERTIFICATE_FILE ​

Client certificate (PEM encoded) required for authentication with the DSF middleware.

Default: – (none)


DSF_SECURITY_CLIENT_KEY_FILE ​

Client private key (PEM encoded) required for authentication with the DSF middleware.

Default: – (none)


DSF_SECURITY_CLIENT_KEY_PASSWORD ​

Password for the encrypted client private key (required if key is password-protected).

Default: – (none)


DSF_PROXY_HOST ​

Proxy host to be used.

Default: – (none)


DSF_PROXY_USERNAME ​

Proxy username to be used.

Default: – (none)


DSF_PROXY_PASSWORD ​

Proxy password to be used.

Default: – (none)


DSF_WEBSERVICE_BASE_URL ​

Base URL pointing to the local ZARS FHIR server.

Default: – (none)


DSF_WEBSERVICE_LOG_REQUESTS ​

Log webservice client communication at log level INFO or below (WARNING: potentially contains sensitive data)

Default: false


DSF_WEBSOCKET_URL ​

URL pointing to the local ZARS FHIR server websocket endpoint.

Default: – (none)


DSF_ORGANIZATION_ID ​

Identifier for the local organization this backend is part of.

Default: – (none)


PRIVACY_QUOTA_SOFT_CREATE_AMOUNT ​

Amount of queries a user can create in the interval defined in PRIVACY_QUOTA_SOFT_CREATE_INTERVAL.

Default: 3


PRIVACY_QUOTA_SOFT_CREATE_INTERVAL ​

(see description above)

Default: PT1M


PRIVACY_QUOTA_HARD_CREATE_AMOUNT ​

Amount of queries a user can create in the interval defined in PRIVACY_QUOTA_HARD_CREATE_INTERVAL before being blacklisted.

Default: 50


PRIVACY_QUOTA_HARD_CREATE_INTERVAL ​

(see description above)

Default: P7D


PRIVACY_QUOTA_READ_SUMMARY_POLLINGINTERVAL ​

Interval in which a user can read the summary query result endpoint.

Default: PT5S


PRIVACY_QUOTA_READ_DETAILED_OBFUSCATED_POLLINGINTERVAL ​

Interval in which a user can read the detailed obfuscated query result endpoint.

Default: PT10S


PRIVACY_QUOTA_READ_DETAILED_OBFUSCATED_AMOUNT ​

Amount of times a user can create a distinct detailed obfuscated result in the interval defined in _PRIVACY_QUOTA_READ_DETAILED_OBFUSCATED_INTERVAL _.

Default: 10


PRIVACY_QUOTA_READ_DETAILED_OBFUSCATED_INTERVAL ​

(see description above)

Default: PT3S


PRIVACY_THRESHOLD_RESULTS ​

If the total number of results is below this number, return an empty result instead.

Default: 3


PRIVACY_THRESHOLD_SITES ​

If the number of responding sites (above PRIVACY_THRESHOLD_SITES_RESULT) is below this number, only respond with a total amount of patients

Default: 20


PRIVACY_THRESHOLD_SITES_RESULT ​

Any site that reports a number below this threshold is considered as non-responding (or zero) in regard to PRIVACY_THRESHOLD_SITES

Default: 20


ELASTIC_SEARCH_ENABLED ​

Toggle elastic search connection

Default: true


ELASTIC_SEARCH_HOST ​

Host and port of the elastic search endpoint

Default: localhost:9200


ELASTIC_SEARCH_FILTER ​

Which parameters can be used to filter results

Default: context,terminology,kds_module


The ELASTIC_SEARCH_QUERY_*_FIELDS variables below configure which fields (with an optional ^boost factor) are searched for each elastic search index. There is no check whether a configured field is "valid" (i.e. actually indexed in elastic search) - use .github/scripts/list_text_fields.sh against a running elastic search instance to list which text fields are searchable for the terminology, codeable_concept and profile indices. Only modify these if you really know what you are doing! Modifying the boost factor or removing fields is no problem.


ELASTIC_SEARCH_QUERY_TERMINOLOGY_FIELDS ​

Comma-separated list of the fields (with optional ^boost factor) searched when querying the terminology index. Maps to app.elastic.query.terminology.fields.

Default: display.de,display.en,termcode^2,display.original^0.5


ELASTIC_SEARCH_QUERY_CODEABLE_CONCEPT_FIELDS ​

Comma-separated list of the fields (with optional ^boost factor) searched when querying the codeable-concept index. Maps to app.elastic.query.codeable_concept.fields.

Default: display.de,display.en,termcode.code^2,display.original^0.5


ELASTIC_SEARCH_QUERY_PROFILE_TRANSLATED_FIELDS ​

Comma-separated list of the fields (with optional ^boost factor) searched when querying the profile index for profiles that have a translated display. Maps to app.elastic.query.profile.translated_fields.

Default: display.localization.de-DE^2,display.localization.en-US^2,name^3,fields.display.localization.de-DE,fields.display.localization.en-US,fields.display.localization.de-DE.ngram,fields.display.localization.en-US.ngram,display.localization.de-DE.ngram,display.localization.en-US.ngram,name.ngram


ELASTIC_SEARCH_QUERY_PROFILE_ORIGINAL_FIELDS ​

Comma-separated list of the fields (with optional ^boost factor) searched when querying the profile index for profiles that only have an original (non-translated) display. Maps to app.elastic.query.profile.original_fields.

Default: display.original^2,name^3,fields.display.original,fields.display.original.ngram,name.ngram


ELASTIC_SEARCH_PROFILE_PINNED_URLS ​

Ordered, comma-separated list of profile url values to pin to the top of api/v6/profile/entry/search results. Only applied when no searchterm is given, and only shows a pinned profile if it already matches the active filters. Maps to app.elastic.profile.pinned_urls.

Default: https://www.medizininformatik-initiative.de/fhir/core/modul-diagnose/StructureDefinition/Diagnose,https://www.medizininformatik-initiative.de/fhir/core/modul-prozedur/StructureDefinition/Procedure,https://www.medizininformatik-initiative.de/fhir/core/modul-labor/StructureDefinition/DiagnosticReportLab


PT_CCDL_VERSION ​

The used version of the Clinical Cohort Definition Language

Default: unknown


URL to the portal page

Default: https://antrag.forschen-fuer-gesundheit.de

| PT_DSE_PATIENT_PROFILE_URL | URL of the patient profile used in data selection and extraction | foo,bar,baz | https://www.medizininformatik-initiative.de/fhir/core/modul-person/StructureDefinition/PatientPseudonymisiert |


PT_POLLING_TIME_UI ​

How long should the UI poll for a result

Default: PT1M


PT_POLLING_SUMMARY ​

How often should the UI poll for summary results. Must be longer than PRIVACY_QUOTA_READ_SUMMARY_POLLINGINTERVAL

Default: PT10S