Add general OVIS bridgehead project

This commit is contained in:
tm16-medma
2026-06-17 15:55:01 +02:00
parent aa0328325b
commit 2aca8d1a6a
16 changed files with 4111 additions and 4 deletions
+308
View File
@@ -0,0 +1,308 @@
services:
traefik:
container_name: bridgehead-ovis-traefik
forward_proxy:
container_name: bridgehead-ovis-forward-proxy
landing:
container_name: bridgehead-ovis-landingpage
environment:
PROJECT: minimal
ovis-frontend:
image: ${OVIS_GENERAL_IMAGE_NAMESPACE:-thewindmom}/ovis-frontend:${OVIS_IMAGE_TAG:-latest}
container_name: bridgehead-ovis-frontend
environment:
HTTP_PROXY: ${OVIS_HTTP_PROXY:-}
HTTPS_PROXY: ${OVIS_HTTPS_PROXY:-}
NO_PROXY: ${OVIS_NO_PROXY:-}
http_proxy: ${OVIS_HTTP_PROXY:-}
https_proxy: ${OVIS_HTTPS_PROXY:-}
no_proxy: ${OVIS_NO_PROXY:-}
PUBLIC_IMPORT_MODE: ${OVIS_IMPORT_MODE:-demo}
PUBLIC_LDAP_ENABLED: ${PUBLIC_LDAP_ENABLED:-false}
PUBLIC_LOGIN_ENABLED: ${PUBLIC_LOGIN_ENABLED:-false}
OVIS_PUBLIC_BASE_PATH: ${OVIS_PUBLIC_BASE_PATH:-/ovis}
PUBLIC_SYSTEM_START_LANGUAGE: ${PUBLIC_SYSTEM_START_LANGUAGE:-en}
PUBLIC_NAV_PATIENT_COHORT_ENABLED: ${PUBLIC_NAV_PATIENT_COHORT_ENABLED:-true}
PUBLIC_NAV_PATIENT_SINGLE_ENABLED: ${PUBLIC_NAV_PATIENT_SINGLE_ENABLED:-true}
PUBLIC_NAV_DIAGNOSIS_ENABLED: ${PUBLIC_NAV_DIAGNOSIS_ENABLED:-true}
PUBLIC_NAV_TNM_ENABLED: ${PUBLIC_NAV_TNM_ENABLED:-true}
PUBLIC_NAV_THERAPY_GENERAL_ENABLED: ${PUBLIC_NAV_THERAPY_GENERAL_ENABLED:-true}
PUBLIC_NAV_THERAPY_OPERATION_ENABLED: ${PUBLIC_NAV_THERAPY_OPERATION_ENABLED:-true}
PUBLIC_NAV_THERAPY_SYSTEMIC_ENABLED: ${PUBLIC_NAV_THERAPY_SYSTEMIC_ENABLED:-true}
PUBLIC_NAV_THERAPY_RADIATION_ENABLED: ${PUBLIC_NAV_THERAPY_RADIATION_ENABLED:-true}
PUBLIC_NAV_PROGRESS_ENABLED: ${PUBLIC_NAV_PROGRESS_ENABLED:-true}
PUBLIC_NAV_TUMORBOARD_ENABLED: ${PUBLIC_NAV_TUMORBOARD_ENABLED:-true}
PUBLIC_NAV_CONSULTATION_ENABLED: ${PUBLIC_NAV_CONSULTATION_ENABLED:-true}
PUBLIC_NAV_STATUS_ENABLED: ${PUBLIC_NAV_STATUS_ENABLED:-true}
PUBLIC_NAV_SURVIVAL_ENABLED: ${PUBLIC_NAV_SURVIVAL_ENABLED:-true}
PUBLIC_NAV_SUPPLEMENTARY_ENABLED: ${PUBLIC_NAV_SUPPLEMENTARY_ENABLED:-true}
PUBLIC_NAV_MOLECULAR_ENABLED: ${PUBLIC_NAV_MOLECULAR_ENABLED:-true}
PUBLIC_NAV_BIO_MATERIAL_ENABLED: ${PUBLIC_NAV_BIO_MATERIAL_ENABLED:-true}
PUBLIC_NAV_STUDY_ENABLED: ${PUBLIC_NAV_STUDY_ENABLED:-false}
PUBLIC_NAV_USER_MANAGEMENT_ENABLED: ${PUBLIC_NAV_USER_MANAGEMENT_ENABLED:-true}
PUBLIC_SITE_SPECIFIC_TECHNICAL_ADMIN_NAME: ${PUBLIC_SITE_SPECIFIC_TECHNICAL_ADMIN_NAME:-Local Admin}
PUBLIC_SITE_SPECIFIC_TECHNICAL_ADMIN_EMAIL: ${PUBLIC_SITE_SPECIFIC_TECHNICAL_ADMIN_EMAIL:-}
PUBLIC_SITE_SPECIFIC_SHOW_USERAGREEMENT: ${PUBLIC_SITE_SPECIFIC_SHOW_USERAGREEMENT:-false}
PUBLIC_SITE_SPECIFIC_SHOW_IMPRINT: ${PUBLIC_SITE_SPECIFIC_SHOW_IMPRINT:-false}
OVIS_CATALOGUE_UPSTREAM_URL: ${OVIS_CATALOGUE_UPSTREAM_URL:-}
EXPRESS_AUTH_URL: http://express-auth:5000
EXPRESS_AUTH_USERNAME: ${EXPRESS_AUTH_USERNAME}
EXPRESS_AUTH_PASSWORD: ${EXPRESS_AUTH_PASSWORD}
GRAPHQL_UPSTREAM_URL: http://ovis-backend-apollo:4001/graphql
ORIGIN: ${OVIS_PUBLIC_ORIGIN}
volumes:
- ovis-catalogue-data:/app/dynamic-catalogue:ro
- ${OVIS_CATALOGUE_FILE:-../ovis/runtime/mongodb/ovis-catalogue.json}:/app/static/ovis-catalogue.json:ro
- ${OVIS_SITE_DOWNLOADS_DIR:-../ovis/runtime/downloads}/UserAgreement/ovis_userAgreement_en_template.pdf:/app/static/downloads/ovis_userAgreement_en_template.pdf:ro
- ${OVIS_SITE_DOWNLOADS_DIR:-../ovis/runtime/downloads}/UserAgreement/ovis_userAgreement_de_template.pdf:/app/static/downloads/ovis_userAgreement_de_template.pdf:ro
- ${OVIS_SITE_DOWNLOADS_DIR:-../ovis/runtime/downloads}/Authorization/ovis_authorization_en_template.pdf:/app/static/downloads/ovis_authorization_en_template.pdf:ro
- ${OVIS_SITE_DOWNLOADS_DIR:-../ovis/runtime/downloads}/Authorization/ovis_authorization_de_template.pdf:/app/static/downloads/ovis_authorization_de_template.pdf:ro
depends_on:
ovis-backend-apollo:
condition: service_healthy
labels:
- "traefik.enable=true"
- "traefik.http.routers.ovis-frontend.tls=true"
- "traefik.http.routers.ovis-frontend.rule=PathPrefix(`${OVIS_PUBLIC_BASE_PATH:-/ovis}`)"
- "traefik.http.routers.ovis-frontend.middlewares=ovis-slash-redirect,ovis-frontend-strip"
- "traefik.http.middlewares.ovis-slash-redirect.redirectregex.regex=^https?://([^/]+)${OVIS_PUBLIC_BASE_PATH:-/ovis}$$"
- "traefik.http.middlewares.ovis-slash-redirect.redirectregex.replacement=https://$${1}${OVIS_PUBLIC_BASE_PATH:-/ovis}/"
- "traefik.http.middlewares.ovis-slash-redirect.redirectregex.permanent=true"
- "traefik.http.middlewares.ovis-frontend-strip.stripprefix.prefixes=${OVIS_PUBLIC_BASE_PATH:-/ovis}"
- "traefik.http.services.ovis-frontend.loadbalancer.server.port=5173"
ovis-backend-apollo:
image: ${OVIS_GENERAL_IMAGE_NAMESPACE:-thewindmom}/ovis-backend-apollo:${OVIS_IMAGE_TAG:-latest}
container_name: bridgehead-ovis-backend
environment:
APOLLO_PORT: ${APOLLO_PORT:-4001}
CREDOS_PORT: ${CREDOS_PORT:-4000}
HTTP_PROXY: ${OVIS_HTTP_PROXY:-}
HTTPS_PROXY: ${OVIS_HTTPS_PROXY:-}
NO_PROXY: ${OVIS_NO_PROXY:-}
http_proxy: ${OVIS_HTTP_PROXY:-}
https_proxy: ${OVIS_HTTPS_PROXY:-}
no_proxy: ${OVIS_NO_PROXY:-}
MONGO_VER: latest
CORS_ORIGIN: "*"
DB: ${DB:-onc_test}
ADDRESS: mongodb://ovis-backend-database-mongodb:27017
volumes:
- ${OVIS_OPS4_FILE:-../ovis/runtime/mongodb/ops4.mjs}:/ops-data/ops4.mjs:ro
depends_on:
ovis-backend-database-mongodb:
condition: service_started
ovis-backend-mongodb-data-preprocessing:
condition: service_healthy
ovis-backend-data-import:
condition: service_started
healthcheck:
test: ["CMD-SHELL", "test -d /app/node_modules/mongodb"]
interval: 10s
timeout: 5s
retries: 5
ovis-backend-database-mongodb:
image: ${OVIS_GENERAL_IMAGE_NAMESPACE:-thewindmom}/ovis-backend-mongodb:${OVIS_IMAGE_TAG:-latest}
container_name: bridgehead-ovis-mongo
environment:
DB: ${DB:-onc_test}
OVIS_ROOT_USERNAME: ${OVIS_ROOT_USERNAME:-ovis-root}
volumes:
- ${OVIS_MONGO_INIT_FILE:-../ovis/runtime/mongodb/initdb.js}:/docker-entrypoint-initdb.d/init.js:ro
- ovis-mongo-db:/data/db
- ovis-mongo-conf:/data/configdb
ovis-backend-mongodb-data-preprocessing:
image: ${OVIS_GENERAL_IMAGE_NAMESPACE:-thewindmom}/ovis-backend-preprocessor:${OVIS_IMAGE_TAG:-latest}
container_name: bridgehead-ovis-preprocessing
environment:
APOLLO_PORT: ${APOLLO_PORT:-4001}
CREDOS_PORT: ${CREDOS_PORT:-4000}
HTTP_PROXY: ${OVIS_HTTP_PROXY:-}
HTTPS_PROXY: ${OVIS_HTTPS_PROXY:-}
NO_PROXY: ${OVIS_NO_PROXY:-}
http_proxy: ${OVIS_HTTP_PROXY:-}
https_proxy: ${OVIS_HTTPS_PROXY:-}
no_proxy: ${OVIS_NO_PROXY:-}
MONGO_VER: latest
CORS_ORIGIN: "*"
DB: ${DB:-onc_test}
ADDRESS: mongodb://ovis-backend-database-mongodb:27017
CATALOGUE_PATH: /app/generated/ovis-catalogue.json
PREPROCESSOR_NODE_HEAP_MB: ${PREPROCESSOR_NODE_HEAP_MB:-32768}
OVIS_PREPROC_DECEASED_KEYWORDS: ${OVIS_PREPROC_DECEASED_KEYWORDS:-}
OVIS_PREPROC_REZIDIV_PREFIXES: ${OVIS_PREPROC_REZIDIV_PREFIXES:-}
OVIS_PREPROC_REZIDIV_CANONICAL: ${OVIS_PREPROC_REZIDIV_CANONICAL:-}
OVIS_PREPROC_REZIDIV_LYMPH_STATES: ${OVIS_PREPROC_REZIDIV_LYMPH_STATES:-}
OVIS_PREPROC_PROGRESS_LABELS: ${OVIS_PREPROC_PROGRESS_LABELS:-}
OVIS_PREPROC_COMPLETE_REMISSION_LABELS: ${OVIS_PREPROC_COMPLETE_REMISSION_LABELS:-}
OVIS_PREPROC_RCLASS_SUCCESS: ${OVIS_PREPROC_RCLASS_SUCCESS:-}
OVIS_PREPROC_LOCAL_RSTATE_SUCCESS: ${OVIS_PREPROC_LOCAL_RSTATE_SUCCESS:-}
OVIS_PREPROC_METASTASIS_PREFIXES: ${OVIS_PREPROC_METASTASIS_PREFIXES:-}
OVIS_PREPROC_METASTASIS_SPREAD_VALUES: ${OVIS_PREPROC_METASTASIS_SPREAD_VALUES:-}
OVIS_PREPROC_METASTASIS_STRAT_SYNCHRON: ${OVIS_PREPROC_METASTASIS_STRAT_SYNCHRON:-}
OVIS_PREPROC_METASTASIS_STRAT_NONE: ${OVIS_PREPROC_METASTASIS_STRAT_NONE:-}
OVIS_PREPROC_NULL_STUDY_PHASES: ${OVIS_PREPROC_NULL_STUDY_PHASES:-}
OVIS_PREPROC_PREV_THERAPY_SURGERY: ${OVIS_PREPROC_PREV_THERAPY_SURGERY:-}
OVIS_PREPROC_PREV_THERAPY_SYSTEMIC: ${OVIS_PREPROC_PREV_THERAPY_SYSTEMIC:-}
OVIS_PREPROC_PREV_THERAPY_RADIATION: ${OVIS_PREPROC_PREV_THERAPY_RADIATION:-}
OVIS_PREPROC_PREV_CONSULTATION_NUTRITION: ${OVIS_PREPROC_PREV_CONSULTATION_NUTRITION:-}
OVIS_PREPROC_PREV_CONSULTATION_SOCIAL: ${OVIS_PREPROC_PREV_CONSULTATION_SOCIAL:-}
OVIS_PREPROC_PREV_CONSULTATION_PSYCHO: ${OVIS_PREPROC_PREV_CONSULTATION_PSYCHO:-}
OVIS_PREPROC_PREV_CONSULTATION_GENETIC: ${OVIS_PREPROC_PREV_CONSULTATION_GENETIC:-}
OVIS_PREPROC_TUMORBOARD_PATTERN_PRAE: ${OVIS_PREPROC_TUMORBOARD_PATTERN_PRAE:-}
OVIS_PREPROC_TUMORBOARD_PATTERN_POST: ${OVIS_PREPROC_TUMORBOARD_PATTERN_POST:-}
OVIS_PREPROC_TUMORBOARD_PATTERN_MTB: ${OVIS_PREPROC_TUMORBOARD_PATTERN_MTB:-}
OVIS_PREPROC_ECOG_PREFIX: ${OVIS_PREPROC_ECOG_PREFIX:-}
OVIS_PREPROC_DISTRESS_TYPE: ${OVIS_PREPROC_DISTRESS_TYPE:-}
OVIS_PREPROC_DISTRESS_POSITIVE_VALUES: ${OVIS_PREPROC_DISTRESS_POSITIVE_VALUES:-}
depends_on:
ovis-backend-database-mongodb:
condition: service_started
volumes:
- ovis-catalogue-data:/app/generated
healthcheck:
test: ["CMD-SHELL", "node -e \"require('http').get('http://localhost:9000/health', res => process.exit(res.statusCode===200?0:1)).on('error', () => process.exit(1));\""]
interval: 10s
timeout: 5s
retries: 12
start_period: 10s
command: ["node", "./Preprocessing/catalogue-service.mjs"]
ovis-backend-data-import:
image: ${OVIS_DATA_IMPORT_IMAGE:-${OVIS_GENERAL_IMAGE_NAMESPACE:-thewindmom}/ovis-backend-data-import-${OVIS_IMPORT_MODE:-demo}:${OVIS_IMAGE_TAG:-latest}}
container_name: bridgehead-ovis-import
env_file:
- path: ${OVIS_DATA_IMPORT_ENV_FILE:-/etc/bridgehead/ovis.conf}
required: false
environment:
HTTP_PROXY: ${OVIS_HTTP_PROXY:-}
HTTPS_PROXY: ${OVIS_HTTPS_PROXY:-}
NO_PROXY: ${OVIS_NO_PROXY:-}
http_proxy: ${OVIS_HTTP_PROXY:-}
https_proxy: ${OVIS_HTTPS_PROXY:-}
no_proxy: ${OVIS_NO_PROXY:-}
FHIR_SERVER_URL: ${FHIR_SERVER_URL:-}
FHIR_USERNAME: ${FHIR_USERNAME:-}
FHIR_PASSWORD: ${FHIR_PASSWORD:-}
ICD10_FILTER: ${ICD10_FILTER:-}
CREDOS_EXPORT_DIR: /input/CREDOSExportFiles
CREDOS_IMPORTER_NODE_HEAP_MB: ${CREDOS_IMPORTER_NODE_HEAP_MB:-8192}
volumes:
- ${OVIS_CREDOS_EXPORT_DIR:-../ovis/runtime/input/CREDOSExportFiles}:/input/CREDOSExportFiles:ro
depends_on:
ovis-backend-mongodb-data-preprocessing:
condition: service_healthy
postgres:
image: ghcr.io/baosystems/postgis:13-3.5
container_name: bridgehead-ovis-postgres
environment:
POSTGRES_DB: ${POSTGRES_DB:-keycloak}
POSTGRES_USER: ${POSTGRES_USER:-ovis_keycloak}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- ovis-postgres-data:/var/lib/postgresql/data
keycloak:
image: ${OVIS_GENERAL_IMAGE_NAMESPACE:-thewindmom}/ovis-keycloak:${OVIS_IMAGE_TAG:-latest}
container_name: bridgehead-ovis-keycloak
environment:
DB_VENDOR: postgres
DB_ADDR: postgres
DB_DATABASE: ${POSTGRES_DB:-keycloak}
DB_USER: ${POSTGRES_USER:-ovis_keycloak}
DB_PASSWORD: ${POSTGRES_PASSWORD}
KEYCLOAK_ADMIN: ${KEYCLOAK_ADMIN:-ovis-admin}
KEYCLOAK_ADMIN_PASSWORD: ${KEYCLOAK_ADMIN_PASSWORD}
KEYCLOAK_HOSTNAME: ${OVIS_KEYCLOAK_HOSTNAME}
APP_DOMAIN: ${HOST}
KEYCLOAK_PORT: ${KEYCLOAK_PORT:-8252}
NGINX_PROXY_MODE: "true"
NGINX_SSL_ENABLED: "true"
NGINX_HTTP_PORT: "80"
NGINX_HTTPS_PORT: "443"
PUBLIC_LDAP_ENABLED: ${PUBLIC_LDAP_ENABLED:-false}
LDAP_CERTIFICATE_NAME: ${LDAP_CERTIFICATE_NAME:-}
LDAP_CONNECTION_URL: ${LDAP_CONNECTION_URL:-}
LDAP_BIND_DN: ${LDAP_BIND_DN:-}
LDAP_BIND_CREDENTIAL: ${LDAP_BIND_CREDENTIAL:-}
LDAP_USERS_DN: ${LDAP_USERS_DN:-}
LDAP_EDIT_MODE: ${LDAP_EDIT_MODE:-READ_ONLY}
LDAP_VENDOR: ${LDAP_VENDOR:-}
LDAP_USERNAME_ATTRIBUTE: ${LDAP_USERNAME_ATTRIBUTE:-}
LDAP_RDN_ATTRIBUTE: ${LDAP_RDN_ATTRIBUTE:-}
LDAP_UUID_ATTRIBUTE: ${LDAP_UUID_ATTRIBUTE:-}
LDAP_USER_OBJECT_CLASSES: ${LDAP_USER_OBJECT_CLASSES:-}
LDAP_USER_FILTER: ${LDAP_USER_FILTER:-}
LDAP_SEARCH_SCOPE: ${LDAP_SEARCH_SCOPE:-}
LDAP_READ_TIMEOUT: ${LDAP_READ_TIMEOUT:-}
LDAP_PAGINATION: ${LDAP_PAGINATION:-}
LDAP_REFERRAL: ${LDAP_REFERRAL:-}
LDAP_EMAIL_ATTRIBUTE: ${LDAP_EMAIL_ATTRIBUTE:-}
LDAP_FIRST_NAME_ATTRIBUTE: ${LDAP_FIRST_NAME_ATTRIBUTE:-}
LDAP_LAST_NAME_ATTRIBUTE: ${LDAP_LAST_NAME_ATTRIBUTE:-}
KEYCLOAK_CLIENT_ID: ${KEYCLOAK_CLIENT_ID:-ovis_client}
KEYCLOAK_CLIENT_SECRET: ${KEYCLOAK_CLIENT_SECRET}
KEYCLOAK_ADMIN_CLIENT_ID: ${KEYCLOAK_ADMIN_CLIENT_ID:-admin-cli}
KEYCLOAK_ADMIN_CLIENT_SECRET: ${KEYCLOAK_ADMIN_CLIENT_SECRET}
OVIS_ROOT_USERNAME: ${OVIS_ROOT_USERNAME:-ovis-root}
OVIS_ROOT_PASSWORD: ${OVIS_ROOT_PASSWORD}
KEYCLOAK_HTTP_RELATIVE_PATH: ${KEYCLOAK_HTTP_RELATIVE_PATH:-/ovis/keycloak}
volumes:
- ${OVIS_SITE_CERTS_DIR:-../ovis/runtime/certs}:/etc/keycloak/certs:ro
- ${OVIS_SITE_KEYCLOAK_REALM_FILE:-../ovis/runtime/keycloak/ovis-realm.json}:/realm-base/ovis-realm.json:ro
- ${OVIS_KEYCLOAK_ENTRYPOINT_FILE:-../ovis/runtime/keycloak/keycloak-entrypoint.sh}:/bridgehead-keycloak-entrypoint.sh:ro
entrypoint: ["/bridgehead-keycloak-entrypoint.sh"]
depends_on:
- postgres
labels:
- "traefik.enable=true"
- "traefik.http.routers.ovis-keycloak.tls=true"
- "traefik.http.routers.ovis-keycloak.rule=PathPrefix(`${KEYCLOAK_HTTP_RELATIVE_PATH:-/ovis/keycloak}`)"
- "traefik.http.services.ovis-keycloak.loadbalancer.server.port=8080"
express-auth:
image: ${OVIS_GENERAL_IMAGE_NAMESPACE:-thewindmom}/ovis-express-auth:${OVIS_IMAGE_TAG:-latest}
container_name: bridgehead-ovis-express-auth
environment:
PORT: "5000"
HTTP_PROXY: ${OVIS_HTTP_PROXY:-}
HTTPS_PROXY: ${OVIS_HTTPS_PROXY:-}
NO_PROXY: ${OVIS_NO_PROXY:-}
http_proxy: ${OVIS_HTTP_PROXY:-}
https_proxy: ${OVIS_HTTPS_PROXY:-}
no_proxy: ${OVIS_NO_PROXY:-}
BASIC_AUTH_USERNAME: ${EXPRESS_AUTH_USERNAME}
BASIC_AUTH_PASSWORD: ${EXPRESS_AUTH_PASSWORD}
KEYCLOAK_URL: http://keycloak:8080${KEYCLOAK_HTTP_RELATIVE_PATH:-/ovis/keycloak}
KEYCLOAK_REALM: ${KEYCLOAK_REALM:-ovis}
KEYCLOAK_CLIENT_ID: ${KEYCLOAK_CLIENT_ID:-ovis_client}
KEYCLOAK_CLIENT_SECRET: ${KEYCLOAK_CLIENT_SECRET}
KEYCLOAK_ADMIN_CLIENT_ID: ${KEYCLOAK_ADMIN_CLIENT_ID:-admin-cli}
KEYCLOAK_ADMIN_CLIENT_SECRET: ${KEYCLOAK_ADMIN_CLIENT_SECRET}
APP_DOMAIN: ${HOST}
FRONTEND_PORT: "443"
NGINX_PROXY_MODE: "true"
NGINX_SSL_ENABLED: "true"
NGINX_HTTP_PORT: "80"
NGINX_HTTPS_PORT: "443"
depends_on:
- keycloak
labels:
- "traefik.enable=true"
- "traefik.http.routers.ovis-express.tls=true"
- "traefik.http.routers.ovis-express.rule=PathPrefix(`${OVIS_PUBLIC_BASE_PATH:-/ovis}/express`)"
- "traefik.http.routers.ovis-express.middlewares=ovis-express-strip"
- "traefik.http.middlewares.ovis-express-strip.stripprefix.prefixes=${OVIS_PUBLIC_BASE_PATH:-/ovis}/express"
- "traefik.http.services.ovis-express.loadbalancer.server.port=5000"
volumes:
ovis-catalogue-data:
ovis-mongo-db:
ovis-mongo-conf:
ovis-postgres-data:
+69
View File
@@ -0,0 +1,69 @@
#!/usr/bin/env bash
set -euo pipefail
IMPORT_DIR="${KEYCLOAK_IMPORT_DIR:-/opt/keycloak/data/import}"
export BASE_REALM="${BASE_REALM:-/realm-base/ovis-realm.json}"
export OUTPUT_REALM="${OUTPUT_REALM:-$IMPORT_DIR/ovis-realm.json}"
KEYCLOAK_HTTP_RELATIVE_PATH="${KEYCLOAK_HTTP_RELATIVE_PATH:-/keycloak}"
echo "=== Starting OVIS Keycloak bootstrap ==="
echo "Keycloak certificate directory:"
ls -lh /etc/keycloak/certs || true
mkdir -p "$IMPORT_DIR"
echo "Building dynamic realm configuration at $OUTPUT_REALM..."
tr -d '\r' < /build-realm.sh \
| sed 's|OUTPUT_REALM="/import/ovis-realm.json"|OUTPUT_REALM="${OUTPUT_REALM:-/opt/keycloak/data/import/ovis-realm.json}"|' \
| sh
if [ -n "${KEYCLOAK_ADMIN_CLIENT_SECRET:-}" ]; then
echo "Updating admin client secret for ${KEYCLOAK_ADMIN_CLIENT_ID:-admin-cli}..."
tmp_realm="${OUTPUT_REALM}.tmp"
sed "/\"clientId\"[[:space:]]*:[[:space:]]*\"${KEYCLOAK_ADMIN_CLIENT_ID:-admin-cli}\"/,/\"secret\"[[:space:]]*:/ s|\"secret\"[[:space:]]*:[[:space:]]*\"[^\"]*\"|\"secret\": \"${KEYCLOAK_ADMIN_CLIENT_SECRET}\"|" "$OUTPUT_REALM" > "$tmp_realm"
mv "$tmp_realm" "$OUTPUT_REALM"
fi
DB_HOST="${DB_ADDR:-postgres}"
DB_PORT="${DB_PORT:-5432}"
DB_WAIT_SECONDS="${KEYCLOAK_DB_WAIT_SECONDS:-120}"
DB_POLL_INTERVAL="${KEYCLOAK_DB_WAIT_POLL_INTERVAL:-2}"
echo "Waiting for PostgreSQL at ${DB_HOST}:${DB_PORT} (timeout: ${DB_WAIT_SECONDS}s)..."
elapsed=0
until timeout 1 bash -c "</dev/tcp/${DB_HOST}/${DB_PORT}" 2>/dev/null; do
elapsed=$((elapsed + DB_POLL_INTERVAL))
if [ "$elapsed" -ge "$DB_WAIT_SECONDS" ]; then
echo "ERROR: PostgreSQL did not become reachable within ${DB_WAIT_SECONDS}s"
exit 1
fi
echo "PostgreSQL not reachable yet (${elapsed}s elapsed); retrying in ${DB_POLL_INTERVAL}s..."
sleep "$DB_POLL_INTERVAL"
done
echo "Importing Keycloak realm from $IMPORT_DIR..."
/opt/keycloak/bin/kc.sh import --dir "$IMPORT_DIR" --override true
if [ "${OVIS_KEYCLOAK_USE_IMAGE_CMD:-false}" = "true" ] && [ "$#" -gt 0 ]; then
keycloak_args=("$@")
else
keycloak_hostname="${KEYCLOAK_HOSTNAME:-${APP_DOMAIN:-localhost}}"
keycloak_args=(
start
--http-enabled=true
--proxy-headers=xforwarded
--hostname="$keycloak_hostname"
--hostname-strict=true
--http-relative-path="$KEYCLOAK_HTTP_RELATIVE_PATH"
)
fi
if [ "${PUBLIC_LDAP_ENABLED:-}" = "true" ] && [ -n "${LDAP_CERTIFICATE_NAME:-}" ] && [ -f "/etc/keycloak/certs/${LDAP_CERTIFICATE_NAME}" ]; then
echo "LDAP enabled: loading certificate ${LDAP_CERTIFICATE_NAME}"
keycloak_args+=("--truststore-paths=/etc/keycloak/certs/${LDAP_CERTIFICATE_NAME}")
else
echo "LDAP disabled or certificate not found: skipping certificate loading"
fi
echo "Starting Keycloak..."
exec /opt/keycloak/bin/kc.sh "${keycloak_args[@]}"
File diff suppressed because it is too large Load Diff
+18
View File
@@ -0,0 +1,18 @@
const rootUsername = process.env.OVIS_ROOT_USERNAME || 'ovis-root';
const databaseName = process.env.DB || 'onc_test';
db = db.getSiblingDB(databaseName);
db.createCollection('user');
db.user.insertMany([
{
_id: rootUsername,
createdAt: new Date(),
createdBy: 'system',
role: 'super-admin',
status: 'active',
pseudonymization: false,
darkMode: false,
colorTheme: 'CCCMunich',
language: 'en'
}
]);
+990
View File
@@ -0,0 +1,990 @@
export const ops4 = [
{
OPSC_4: '1-10',
OPS_Gruppen_Text: 'Klinische Untersuchung'
},
{
OPSC_4: '1-20',
OPS_Gruppen_Text: 'Neurologische Untersuchungen'
},
{
OPSC_4: '1-21',
OPS_Gruppen_Text: 'Epilepsiediagnostik'
},
{
OPSC_4: '1-22',
OPS_Gruppen_Text: 'Untersuchungen der Augen'
},
{
OPSC_4: '1-24',
OPS_Gruppen_Text: 'Untersuchungen im HNO-Bereich'
},
{
OPSC_4: '1-26',
OPS_Gruppen_Text: 'Untersuchungen der elektrophysiologischen Aktivität des Herzens'
},
{
OPSC_4: '1-27',
OPS_Gruppen_Text: 'Diagnostische Katheteruntersuchung an Herz und Kreislauf'
},
{
OPSC_4: '1-31',
OPS_Gruppen_Text: 'Funktionsuntersuchungen des Verdauungstraktes'
},
{
OPSC_4: '1-33',
OPS_Gruppen_Text: 'Untersuchung des Harntraktes'
},
{
OPSC_4: '1-40',
OPS_Gruppen_Text: 'Biopsie ohne Inzision an Nervensystem und endokrinen Organen'
},
{
OPSC_4: '1-41',
OPS_Gruppen_Text: 'Biopsie ohne Inzision an Auge, Ohr, Nase und Haut von Gesicht und Kopf'
},
{
OPSC_4: '1-42',
OPS_Gruppen_Text:
'Biopsie ohne Inzision an Mund, Mundhöhle, Larynx, Pharynx und blutbildenden Organen'
},
{
OPSC_4: '1-43',
OPS_Gruppen_Text: 'Biopsie ohne Inzision an respiratorischen Organen'
},
{
OPSC_4: '1-44',
OPS_Gruppen_Text: 'Biopsie ohne Inzision an den Verdauungsorganen'
},
{
OPSC_4: '1-46',
OPS_Gruppen_Text: 'Biopsie ohne Inzision an Harnorganen und männlichen Genitalorganen'
},
{
OPSC_4: '1-47',
OPS_Gruppen_Text: 'Biopsie ohne Inzision an weiblichen Genitalorganen'
},
{
OPSC_4: '1-48',
OPS_Gruppen_Text: 'Biopsie ohne Inzision an Knochen und Gelenken'
},
{
OPSC_4: '1-49',
OPS_Gruppen_Text: 'Biopsie ohne Inzision an anderen Organen und Geweben'
},
{
OPSC_4: '1-50',
OPS_Gruppen_Text: 'Biopsie an Mamma, Knochen und Muskeln durch Inzision'
},
{
OPSC_4: '1-51',
OPS_Gruppen_Text:
'Biopsie an Nervengewebe, Hypophyse, Corpus pineale durch Inzision und Trepanation von Schädelknochen'
},
{
OPSC_4: '1-52',
OPS_Gruppen_Text: 'Biopsie an Augen und Augenanhangsgebilden durch Inzision'
},
{
OPSC_4: '1-53',
OPS_Gruppen_Text: 'Biopsie an Ohr und Nase durch Inzision'
},
{
OPSC_4: '1-54',
OPS_Gruppen_Text: 'Biopsie an Mund, Mundhöhle und Pharynx durch Inzision'
},
{
OPSC_4: '1-55',
OPS_Gruppen_Text:
'Biopsie an anderen Verdauungsorganen, Zwerchfell und (Retro-)Peritoneum durch Inzision'
},
{
OPSC_4: '1-56',
OPS_Gruppen_Text: 'Biopsie an Harnwegen und männlichen Genitalorganen durch Inzision'
},
{
OPSC_4: '1-57',
OPS_Gruppen_Text: 'Biopsie an weiblichen Genitalorganen durch Inzision'
},
{
OPSC_4: '1-58',
OPS_Gruppen_Text: 'Biopsie an anderen Organen durch Inzision'
},
{
OPSC_4: '1-61',
OPS_Gruppen_Text: 'Diagnostische Endoskopie der oberen Atemwege'
},
{
OPSC_4: '1-62',
OPS_Gruppen_Text: 'Diagnostische Tracheobronchoskopie'
},
{
OPSC_4: '1-63',
OPS_Gruppen_Text: 'Diagnostische Endoskopie des oberen Verdauungstraktes'
},
{
OPSC_4: '1-64',
OPS_Gruppen_Text: 'Diagnostische Endoskopie der Gallen- und Pankreaswege'
},
{
OPSC_4: '1-65',
OPS_Gruppen_Text: 'Diagnostische Endoskopie des unteren Verdauungstraktes'
},
{
OPSC_4: '1-66',
OPS_Gruppen_Text: 'Diagnostische Endoskopie der Harnwege'
},
{
OPSC_4: '1-67',
OPS_Gruppen_Text: 'Diagnostische Endoskopie der weiblichen Genitalorgane'
},
{
OPSC_4: '1-68',
OPS_Gruppen_Text: 'Andere diagnostische Endoskopie'
},
{
OPSC_4: '1-69',
OPS_Gruppen_Text: 'Diagnostische Endoskopie durch Inzision und intraoperativ'
},
{
OPSC_4: '1-70',
OPS_Gruppen_Text: 'Provokationstestung'
},
{
OPSC_4: '1-71',
OPS_Gruppen_Text: 'Pneumologische Funktionsuntersuchungen'
},
{
OPSC_4: '1-76',
OPS_Gruppen_Text: 'Metabolische Funktionsuntersuchung'
},
{
OPSC_4: '1-77',
OPS_Gruppen_Text:
'Palliativmedizinische, geriatrische und frührehabilitative Funktionsuntersuchung'
},
{
OPSC_4: '1-79',
OPS_Gruppen_Text: 'Physiologische Funktionstests'
},
{
OPSC_4: '1-84',
OPS_Gruppen_Text: 'Diagnostische Punktion und Aspiration'
},
{
OPSC_4: '1-85',
OPS_Gruppen_Text: 'Andere diagnostische Punktion und Aspiration'
},
{
OPSC_4: '1-90',
OPS_Gruppen_Text:
'Psychosomatische, psychotherapeutische, (neuro-)psychologische, psychosoziale und testpsychologische Untersuchung'
},
{
OPSC_4: '1-91',
OPS_Gruppen_Text: 'Diagnostik bei chronischen Schmerzzuständen'
},
{
OPSC_4: '1-92',
OPS_Gruppen_Text: 'Medizinische Evaluation zur Transplantation'
},
{
OPSC_4: '1-93',
OPS_Gruppen_Text:
'Infektiologisches Monitoring und molekularbiologisch-mikrobiologische Diagnostik'
},
{
OPSC_4: '1-94',
OPS_Gruppen_Text: 'Komplexe Diagnostik'
},
{
OPSC_4: '1-99',
OPS_Gruppen_Text:
'Andere diagnostische Maßnahmen und Zusatzinformationen zu diagnostischen Maßnahmen'
},
{
OPSC_4: '3-03',
OPS_Gruppen_Text:
'Komplexe differenzialdiagnostische Sonographie mit digitaler Bild- und Videodokumentation'
},
{
OPSC_4: '3-05',
OPS_Gruppen_Text: 'Endosonographie'
},
{
OPSC_4: '3-10',
OPS_Gruppen_Text: 'Projektionsradiographie mit Spezialverfahren'
},
{
OPSC_4: '3-13',
OPS_Gruppen_Text: 'Projektionsradiographie mit Kontrastmittelverfahren'
},
{
OPSC_4: '3-20',
OPS_Gruppen_Text: 'Computertomographie [CT], nativ'
},
{
OPSC_4: '3-22',
OPS_Gruppen_Text: 'Computertomographie [CT] mit Kontrastmittel'
},
{
OPSC_4: '3-24',
OPS_Gruppen_Text: 'Computertomographie [CT], Spezialverfahren'
},
{
OPSC_4: '3-26',
OPS_Gruppen_Text: 'Elektronenstrahltomographie [EBT]'
},
{
OPSC_4: '3-30',
OPS_Gruppen_Text: 'Optische laserbasierte Verfahren'
},
{
OPSC_4: '3-31',
OPS_Gruppen_Text: 'Andere optische Verfahren'
},
{
OPSC_4: '3-60',
OPS_Gruppen_Text: 'Arteriographie'
},
{
OPSC_4: '3-61',
OPS_Gruppen_Text: 'Phlebographie'
},
{
OPSC_4: '3-62',
OPS_Gruppen_Text: 'Lymphographie'
},
{
OPSC_4: '3-69',
OPS_Gruppen_Text: 'Andere Darstellung des Gefäßsystems'
},
{
OPSC_4: '3-70',
OPS_Gruppen_Text: 'Szintigraphie'
},
{
OPSC_4: '3-72',
OPS_Gruppen_Text: 'Single-Photon-Emissionscomputertomographie [SPECT]'
},
{
OPSC_4: '3-73',
OPS_Gruppen_Text:
'Single-Photon-Emissionscomputertomographie mit Computertomographie [SPECT/CT]'
},
{
OPSC_4: '3-74',
OPS_Gruppen_Text: 'Positronenemissionstomographie [PET] mit Vollring-Scanner'
},
{
OPSC_4: '3-75',
OPS_Gruppen_Text: 'Positronenemissionstomographie mit Computertomographie [PET/CT]'
},
{
OPSC_4: '3-76',
OPS_Gruppen_Text: 'Sondenmessungen und Inkorporationsmessungen'
},
{
OPSC_4: '3-80',
OPS_Gruppen_Text: 'Magnetresonanztomographie [MRT], nativ'
},
{
OPSC_4: '3-82',
OPS_Gruppen_Text: 'Magnetresonanztomographie [MRT] mit Kontrastmittel'
},
{
OPSC_4: '3-84',
OPS_Gruppen_Text: 'Magnetresonanztomographie [MRT], Spezialverfahren'
},
{
OPSC_4: '3-90',
OPS_Gruppen_Text: 'Andere bildgebende Verfahren'
},
{
OPSC_4: '3-99',
OPS_Gruppen_Text: 'Zusatzinformationen zu bildgebenden Verfahren'
},
{
OPSC_4: '5-01',
OPS_Gruppen_Text:
'Inzision (Trepanation), Exzision und Destruktion an Schädel, Gehirn und Hirnhäuten'
},
{
OPSC_4: '5-02',
OPS_Gruppen_Text: 'Andere Operationen an Schädel, Gehirn und Hirnhäuten'
},
{
OPSC_4: '5-03',
OPS_Gruppen_Text: 'Operationen an Rückenmark, Rückenmarkhäuten und Spinalkanal'
},
{
OPSC_4: '5-04',
OPS_Gruppen_Text: 'Operationen an Nerven und Nervenganglien'
},
{
OPSC_4: '5-05',
OPS_Gruppen_Text: 'Andere Operationen an Nerven und Nervenganglien'
},
{
OPSC_4: '5-06',
OPS_Gruppen_Text: 'Operationen an Schilddrüse und Nebenschilddrüse'
},
{
OPSC_4: '5-07',
OPS_Gruppen_Text: 'Operationen an anderen endokrinen Drüsen'
},
{
OPSC_4: '5-08',
OPS_Gruppen_Text: 'Operationen an Tränendrüse und Tränenwegen'
},
{
OPSC_4: '5-09',
OPS_Gruppen_Text: 'Operationen an den Augenlidern'
},
{
OPSC_4: '5-10',
OPS_Gruppen_Text: 'Operationen an den Augenmuskeln'
},
{
OPSC_4: '5-11',
OPS_Gruppen_Text: 'Operationen an der Konjunktiva'
},
{
OPSC_4: '5-12',
OPS_Gruppen_Text: 'Operationen an der Kornea'
},
{
OPSC_4: '5-13',
OPS_Gruppen_Text: 'Operationen an Iris, Corpus ciliare, vorderer Augenkammer und Sklera'
},
{
OPSC_4: '5-14',
OPS_Gruppen_Text: 'Operationen an der Linse'
},
{
OPSC_4: '5-15',
OPS_Gruppen_Text: 'Operationen an Retina, Choroidea und Corpus vitreum'
},
{
OPSC_4: '5-16',
OPS_Gruppen_Text: 'Operationen an Orbita und Augapfel'
},
{
OPSC_4: '5-18',
OPS_Gruppen_Text: 'Operationen an Ohrmuschel und äußerem Gehörgang'
},
{
OPSC_4: '5-19',
OPS_Gruppen_Text: 'Mikrochirurgische Operationen am Mittelohr'
},
{
OPSC_4: '5-20',
OPS_Gruppen_Text: 'Andere Operationen an Mittel- und Innenohr'
},
{
OPSC_4: '5-21',
OPS_Gruppen_Text: 'Operationen an der Nase'
},
{
OPSC_4: '5-22',
OPS_Gruppen_Text: 'Operationen an den Nasennebenhöhlen'
},
{
OPSC_4: '5-23',
OPS_Gruppen_Text: 'Entfernung und Wiederherstellung von Zähnen'
},
{
OPSC_4: '5-24',
OPS_Gruppen_Text: 'Operationen an Zahnfleisch, Alveolen und Kiefer'
},
{
OPSC_4: '5-25',
OPS_Gruppen_Text: 'Operationen an der Zunge'
},
{
OPSC_4: '5-26',
OPS_Gruppen_Text: 'Operationen an Speicheldrüsen und Speicheldrüsenausführungsgängen'
},
{
OPSC_4: '5-27',
OPS_Gruppen_Text: 'Andere Operationen an Mund und Gesicht'
},
{
OPSC_4: '5-28',
OPS_Gruppen_Text: 'Operationen im Bereich des Naso- und Oropharynx'
},
{
OPSC_4: '5-29',
OPS_Gruppen_Text: 'Operationen am Pharynx'
},
{
OPSC_4: '5-30',
OPS_Gruppen_Text: 'Exzision und Resektion am Larynx'
},
{
OPSC_4: '5-31',
OPS_Gruppen_Text:
'Andere Larynxoperationen und Operationen an der Trachea und Zusatzinformationen zu Operationen an Larynx und Trachea'
},
{
OPSC_4: '5-32',
OPS_Gruppen_Text: 'Exzision und Resektion an Lunge und Bronchus'
},
{
OPSC_4: '5-33',
OPS_Gruppen_Text:
'Andere Operationen an Lunge und Bronchus und Zusatzinformationen zu Operationen an Lunge und Bronchus'
},
{
OPSC_4: '5-34',
OPS_Gruppen_Text: 'Operationen an Brustwand, Pleura, Mediastinum und Zwerchfell'
},
{
OPSC_4: '5-35',
OPS_Gruppen_Text: 'Operationen an Klappen und Septen des Herzens und herznaher Gefäße'
},
{
OPSC_4: '5-36',
OPS_Gruppen_Text: 'Operationen an den Koronargefäßen'
},
{
OPSC_4: '5-37',
OPS_Gruppen_Text: 'Rhythmuschirurgie und andere Operationen an Herz und Perikard'
},
{
OPSC_4: '5-38',
OPS_Gruppen_Text: 'Inzision, Exzision und Verschluss von Blutgefäßen'
},
{
OPSC_4: '5-39',
OPS_Gruppen_Text:
'Andere Operationen an Blutgefäßen und Zusatzinformationen zu Operationen an Blutgefäßen'
},
{
OPSC_4: '5-40',
OPS_Gruppen_Text: 'Operationen am Lymphgewebe'
},
{
OPSC_4: '5-41',
OPS_Gruppen_Text: 'Operationen an Milz und Knochenmark'
},
{
OPSC_4: '5-42',
OPS_Gruppen_Text: 'Operationen am Ösophagus'
},
{
OPSC_4: '5-43',
OPS_Gruppen_Text: 'Inzision, Exzision und Resektion am Magen'
},
{
OPSC_4: '5-44',
OPS_Gruppen_Text: 'Andere Operationen am Magen'
},
{
OPSC_4: '5-45',
OPS_Gruppen_Text: 'Inzision, Exzision, Resektion und Anastomose an Dünn- und Dickdarm'
},
{
OPSC_4: '5-46',
OPS_Gruppen_Text:
'Andere Operationen an Dünn- und Dickdarm und Zusatzinformationen zu Operationen am Darm'
},
{
OPSC_4: '5-47',
OPS_Gruppen_Text: 'Operationen an der Appendix'
},
{
OPSC_4: '5-48',
OPS_Gruppen_Text: 'Operationen am Rektum'
},
{
OPSC_4: '5-49',
OPS_Gruppen_Text: 'Operationen am Anus'
},
{
OPSC_4: '5-50',
OPS_Gruppen_Text: 'Operationen an der Leber'
},
{
OPSC_4: '5-51',
OPS_Gruppen_Text: 'Operationen an Gallenblase und Gallenwegen'
},
{
OPSC_4: '5-52',
OPS_Gruppen_Text: 'Operationen am Pankreas'
},
{
OPSC_4: '5-53',
OPS_Gruppen_Text: 'Verschluss abdominaler Hernien'
},
{
OPSC_4: '5-54',
OPS_Gruppen_Text:
'Andere Operationen in der Bauchregion und Zusatzinformationen zu Operationen am Verdauungstrakt'
},
{
OPSC_4: '5-55',
OPS_Gruppen_Text: 'Operationen an der Niere'
},
{
OPSC_4: '5-56',
OPS_Gruppen_Text: 'Operationen am Ureter'
},
{
OPSC_4: '5-57',
OPS_Gruppen_Text: 'Operationen an der Harnblase'
},
{
OPSC_4: '5-58',
OPS_Gruppen_Text: 'Operationen an der Urethra'
},
{
OPSC_4: '5-59',
OPS_Gruppen_Text: 'Andere Operationen an den Harnorganen'
},
{
OPSC_4: '5-60',
OPS_Gruppen_Text: 'Operationen an Prostata und Vesiculae seminales'
},
{
OPSC_4: '5-61',
OPS_Gruppen_Text: 'Operationen an Skrotum und Tunica vaginalis testis'
},
{
OPSC_4: '5-62',
OPS_Gruppen_Text: 'Operationen am Hoden'
},
{
OPSC_4: '5-63',
OPS_Gruppen_Text: 'Operationen an Funiculus spermaticus, Epididymis und Ductus deferens'
},
{
OPSC_4: '5-64',
OPS_Gruppen_Text: 'Operationen am Penis'
},
{
OPSC_4: '5-65',
OPS_Gruppen_Text: 'Operationen am Ovar'
},
{
OPSC_4: '5-66',
OPS_Gruppen_Text: 'Operationen an der Tuba uterina'
},
{
OPSC_4: '5-67',
OPS_Gruppen_Text: 'Operationen an der Cervix uteri'
},
{
OPSC_4: '5-68',
OPS_Gruppen_Text: 'Inzision, Exzision und Exstirpation des Uterus'
},
{
OPSC_4: '5-69',
OPS_Gruppen_Text: 'Andere Operationen am Uterus und Operationen an den Parametrien'
},
{
OPSC_4: '5-70',
OPS_Gruppen_Text: 'Operationen an Vagina und Douglasraum'
},
{
OPSC_4: '5-71',
OPS_Gruppen_Text: 'Operationen an der Vulva'
},
{
OPSC_4: '5-72',
OPS_Gruppen_Text: 'Entbindung aus Beckenendlage und instrumentelle Entbindung'
},
{
OPSC_4: '5-73',
OPS_Gruppen_Text: 'Andere Operationen zur Geburtseinleitung und unter der Geburt'
},
{
OPSC_4: '5-74',
OPS_Gruppen_Text: 'Sectio caesarea und Entwicklung des Kindes'
},
{
OPSC_4: '5-75',
OPS_Gruppen_Text: 'Andere geburtshilfliche Operationen'
},
{
OPSC_4: '5-76',
OPS_Gruppen_Text: 'Operationen bei Gesichtsschädelfrakturen'
},
{
OPSC_4: '5-77',
OPS_Gruppen_Text: 'Andere Operationen an Gesichtsschädelknochen'
},
{
OPSC_4: '5-78',
OPS_Gruppen_Text: 'Operationen an anderen Knochen'
},
{
OPSC_4: '5-79',
OPS_Gruppen_Text: 'Reposition von Fraktur und Luxation'
},
{
OPSC_4: '5-80',
OPS_Gruppen_Text: 'Offen chirurgische und andere Gelenkoperationen'
},
{
OPSC_4: '5-81',
OPS_Gruppen_Text: 'Arthroskopische Gelenkoperationen'
},
{
OPSC_4: '5-82',
OPS_Gruppen_Text: 'Endoprothetischer Gelenk- und Knochenersatz'
},
{
OPSC_4: '5-83',
OPS_Gruppen_Text: 'Operationen an der Wirbelsäule'
},
{
OPSC_4: '5-84',
OPS_Gruppen_Text: 'Operationen an der Hand'
},
{
OPSC_4: '5-85',
OPS_Gruppen_Text: 'Operationen an Muskeln, Sehnen, Faszien und Schleimbeuteln'
},
{
OPSC_4: '5-86',
OPS_Gruppen_Text:
'Replantation, Exartikulation und Amputation von Extremitäten, andere Operationen an den Bewegungsorganen und Zusatzinformationen zu Operationen an den Bewegungsorganen'
},
{
OPSC_4: '5-87',
OPS_Gruppen_Text: 'Exzision und Resektion der Mamma'
},
{
OPSC_4: '5-88',
OPS_Gruppen_Text: 'Andere Operationen an der Mamma'
},
{
OPSC_4: '5-89',
OPS_Gruppen_Text: 'Operationen an Haut und Unterhaut'
},
{
OPSC_4: '5-90',
OPS_Gruppen_Text: 'Operative Wiederherstellung und Rekonstruktion von Haut und Unterhaut'
},
{
OPSC_4: '5-91',
OPS_Gruppen_Text: 'Andere Operationen an Haut und Unterhaut'
},
{
OPSC_4: '5-92',
OPS_Gruppen_Text: 'Operationen an Haut und Unterhaut bei Verbrennungen und Verätzungen'
},
{
OPSC_4: '5-93',
OPS_Gruppen_Text: 'Angaben zum Transplantat und zu verwendeten Materialien'
},
{
OPSC_4: '5-98',
OPS_Gruppen_Text:
'Spezielle Operationstechniken und Operationen bei speziellen Versorgungssituationen'
},
{
OPSC_4: '5-99',
OPS_Gruppen_Text: 'Vorzeitiger Abbruch einer Operation'
},
{
OPSC_4: '6-00',
OPS_Gruppen_Text: 'Applikation von Medikamenten'
},
{
OPSC_4: '8-01',
OPS_Gruppen_Text: 'Applikation von Medikamenten und Nahrung'
},
{
OPSC_4: '8-02',
OPS_Gruppen_Text: 'Therapeutische Injektion'
},
{
OPSC_4: '8-03',
OPS_Gruppen_Text: 'Immuntherapie'
},
{
OPSC_4: '8-10',
OPS_Gruppen_Text: 'Fremdkörperentfernung'
},
{
OPSC_4: '8-11',
OPS_Gruppen_Text: 'Extrakorporale Stoßwellentherapie'
},
{
OPSC_4: '8-12',
OPS_Gruppen_Text: 'Manipulationen am Verdauungstrakt'
},
{
OPSC_4: '8-13',
OPS_Gruppen_Text: 'Manipulationen am Harntrakt'
},
{
OPSC_4: '8-14',
OPS_Gruppen_Text: 'Andere Formen von therapeutischer Katheterisierung und Kanüleneinlage'
},
{
OPSC_4: '8-15',
OPS_Gruppen_Text: 'Therapeutische Aspiration und Entleerung durch Punktion'
},
{
OPSC_4: '8-17',
OPS_Gruppen_Text: 'Spülung (Lavage)'
},
{
OPSC_4: '8-19',
OPS_Gruppen_Text: 'Verbände und Entfernung von erkranktem Gewebe an Haut und Unterhaut'
},
{
OPSC_4: '8-20',
OPS_Gruppen_Text: 'Geschlossene Reposition einer Fraktur und Gelenkluxation ohne Osteosynthese'
},
{
OPSC_4: '8-21',
OPS_Gruppen_Text: 'Forcierte Korrektur von Adhäsionen und Deformitäten'
},
{
OPSC_4: '8-22',
OPS_Gruppen_Text: 'Herstellung und Anpassung von Gesichtsepithesen'
},
{
OPSC_4: '8-31',
OPS_Gruppen_Text: 'Immobilisation mit Gipsverband'
},
{
OPSC_4: '8-39',
OPS_Gruppen_Text: 'Lagerungsbehandlung'
},
{
OPSC_4: '8-40',
OPS_Gruppen_Text: 'Extension am Skelett'
},
{
OPSC_4: '8-41',
OPS_Gruppen_Text: 'Extension der Wirbelsäule'
},
{
OPSC_4: '8-50',
OPS_Gruppen_Text: 'Kontrolle von Blutungen durch Tamponaden'
},
{
OPSC_4: '8-51',
OPS_Gruppen_Text:
'Manipulation an Fetus oder Uterus während der Gravidität oder direkt postpartal'
},
{
OPSC_4: '8-52',
OPS_Gruppen_Text: 'Strahlentherapie'
},
{
OPSC_4: '8-53',
OPS_Gruppen_Text: 'Nuklearmedizinische Therapie'
},
{
OPSC_4: '8-54',
OPS_Gruppen_Text: 'Zytostatische Chemotherapie, Immuntherapie und antiretrovirale Therapie'
},
{
OPSC_4: '8-55',
OPS_Gruppen_Text: 'Frührehabilitative Komplexbehandlung'
},
{
OPSC_4: '8-56',
OPS_Gruppen_Text: 'Physikalisch-therapeutische Einzelmaßnahmen'
},
{
OPSC_4: '8-60',
OPS_Gruppen_Text: 'Hyperthermie und Hypothermie'
},
{
OPSC_4: '8-63',
OPS_Gruppen_Text: 'Elektrostimulation des Nervensystems'
},
{
OPSC_4: '8-64',
OPS_Gruppen_Text: 'Elektrische Konversion des Herzrhythmus'
},
{
OPSC_4: '8-65',
OPS_Gruppen_Text: 'Elektrotherapie'
},
{
OPSC_4: '8-66',
OPS_Gruppen_Text: 'Dauer der Behandlung durch fokussierten Ultraschall'
},
{
OPSC_4: '8-70',
OPS_Gruppen_Text: 'Zugang bei maschineller Beatmung und Maßnahmen zum Offenhalten der Atemwege'
},
{
OPSC_4: '8-71',
OPS_Gruppen_Text:
'Maschinelle Beatmung und Atemunterstützung über Maske oder Tubus und Beatmungsentwöhnung'
},
{
OPSC_4: '8-72',
OPS_Gruppen_Text: 'Sauerstoffzufuhr'
},
{
OPSC_4: '8-77',
OPS_Gruppen_Text: 'Maßnahmen im Rahmen der Reanimation'
},
{
OPSC_4: '8-80',
OPS_Gruppen_Text: 'Transfusion von Blutzellen'
},
{
OPSC_4: '8-81',
OPS_Gruppen_Text:
'Transfusion von Plasma, Plasmabestandteilen und Infusion von Volumenersatzmitteln'
},
{
OPSC_4: '8-82',
OPS_Gruppen_Text: 'Plasmapherese, Adsorption und verwandte Verfahren'
},
{
OPSC_4: '8-83',
OPS_Gruppen_Text: 'Therapeutische Katheterisierung und Kanüleneinlage in Gefäße'
},
{
OPSC_4: '8-84',
OPS_Gruppen_Text: '(Perkutan-)transluminale Stentimplantation'
},
{
OPSC_4: '8-85',
OPS_Gruppen_Text: 'Extrakorporale Zirkulation und Behandlung von Blut'
},
{
OPSC_4: '8-86',
OPS_Gruppen_Text:
'Autogene und allogene Stammzelltherapie und lokale Therapie mit Blutbestandteilen und Hepatozyten'
},
{
OPSC_4: '8-90',
OPS_Gruppen_Text: 'Anästhesie'
},
{
OPSC_4: '8-91',
OPS_Gruppen_Text: 'Schmerztherapie'
},
{
OPSC_4: '8-92',
OPS_Gruppen_Text: 'Neurologisches Monitoring'
},
{
OPSC_4: '8-93',
OPS_Gruppen_Text: 'Monitoring von Atmung, Herz und Kreislauf'
},
{
OPSC_4: '8-97',
OPS_Gruppen_Text: 'Multimodale Komplexbehandlung'
},
{
OPSC_4: '8-98',
OPS_Gruppen_Text: 'Sonstige multimodale Komplexbehandlung'
},
{
OPSC_4: '8-99',
OPS_Gruppen_Text: 'Zusatzinformationen zu nicht operativen therapeutischen Maßnahmen'
},
{
OPSC_4: '9-26',
OPS_Gruppen_Text: 'Geburtsbegleitende Maßnahmen'
},
{
OPSC_4: '9-27',
OPS_Gruppen_Text: 'Behandlung wegen Infertilität'
},
{
OPSC_4: '9-28',
OPS_Gruppen_Text: 'Behandlung während der Schwangerschaft'
},
{
OPSC_4: '9-31',
OPS_Gruppen_Text: 'Phoniatrische und pädaudiologische Komplexbehandlung'
},
{
OPSC_4: '9-32',
OPS_Gruppen_Text: 'Therapie von Stimm-, Sprach-, Sprech-, Schluckstörungen und Hörstörungen'
},
{
OPSC_4: '9-40',
OPS_Gruppen_Text: 'Psychosoziale, psychosomatische und neuropsychologische Therapie'
},
{
OPSC_4: '9-41',
OPS_Gruppen_Text: 'Psychotherapie'
},
{
OPSC_4: '9-50',
OPS_Gruppen_Text: 'Präventive Maßnahmen'
},
{
OPSC_4: '9-51',
OPS_Gruppen_Text: 'Ergänzende kommunikative Maßnahmen'
},
{
OPSC_4: '9-60',
OPS_Gruppen_Text:
'Regelbehandlung bei psychischen und psychosomatischen Störungen und Verhaltensstörungen bei Erwachsenen'
},
{
OPSC_4: '9-61',
OPS_Gruppen_Text:
'Intensivbehandlung bei psychischen und psychosomatischen Störungen und Verhaltensstörungen bei Erwachsenen'
},
{
OPSC_4: '9-62',
OPS_Gruppen_Text:
'Psychotherapeutische Komplexbehandlung bei psychischen und psychosomatischen Störungen und Verhaltensstörungen bei Erwachsenen'
},
{
OPSC_4: '9-63',
OPS_Gruppen_Text:
'Psychosomatisch-psychotherapeutische Komplexbehandlung bei psychischen und psychosomatischen Störungen und Verhaltensstörungen bei Erwachsenen'
},
{
OPSC_4: '9-64',
OPS_Gruppen_Text:
'Zusatzinformationen zur Behandlung bei psychischen und psychosomatischen Störungen und Verhaltensstörungen bei Erwachsenen'
},
{
OPSC_4: '9-65',
OPS_Gruppen_Text:
'Psychiatrisch-psychosomatische Regelbehandlung bei psychischen und psychosomatischen Störungen und Verhaltensstörungen bei Kindern und Jugendlichen'
},
{
OPSC_4: '9-67',
OPS_Gruppen_Text:
'Psychiatrisch-psychosomatische Intensivbehandlung bei psychischen und psychosomatischen Störungen und Verhaltensstörungen bei Kindern und Jugendlichen'
},
{
OPSC_4: '9-68',
OPS_Gruppen_Text:
'Psychiatrisch-psychosomatische Behandlung im besonderen Eltern-Kind-Setting bei psychischen und psychosomatischen Störungen und Verhaltensstörungen bei Kindern und Jugendlichen'
},
{
OPSC_4: '9-69',
OPS_Gruppen_Text:
'Zusatzinformationen zur Behandlung bei psychischen und psychosomatischen Störungen und Verhaltensstörungen bei Kindern und Jugendlichen'
},
{
OPSC_4: '9-70',
OPS_Gruppen_Text:
'Spezifische Behandlung bei psychischen und psychosomatischen Störungen und Verhaltensstörungen bei Erwachsenen'
},
{
OPSC_4: '9-80',
OPS_Gruppen_Text:
'Spezifische Behandlung bei psychischen und psychosomatischen Störungen und Verhaltensstörungen bei Kindern und Jugendlichen'
},
{
OPSC_4: '9-98',
OPS_Gruppen_Text: 'Pflegebedürftigkeit und teilstationäre pädiatrische Behandlung'
},
{
OPSC_4: '9-99',
OPS_Gruppen_Text: 'Obduktion und nicht belegte Schlüsselnummern'
}
];
+1
View File
@@ -0,0 +1 @@
{}
+62
View File
@@ -0,0 +1,62 @@
PRIVATEKEYFILENAME=/etc/bridgehead/pki/${SITE_ID}.priv.pem
BROKER_URL_FOR_PREREQ=${OVIS_PREREQ_URL:-https://github.com}
: ${ENABLE_OVIS:=true}
: ${REQUIRES_BEAM:=false}
: ${OVIS_PUBLIC_BASE_PATH:=/ovis}
: ${OVIS_PUBLIC_ORIGIN:=https://${HOST}}
: ${KEYCLOAK_HTTP_RELATIVE_PATH:=${OVIS_PUBLIC_BASE_PATH}/keycloak}
: ${OVIS_KEYCLOAK_HOSTNAME:=${HOST}}
: ${OVIS_IMPORT_MODE:=demo}
: ${OVIS_GENERAL_IMAGE_NAMESPACE:=thewindmom}
: ${OVIS_IMAGE_TAG:=latest}
: ${PUBLIC_LOGIN_ENABLED:=false}
: ${PUBLIC_LDAP_ENABLED:=false}
: ${PUBLIC_SYSTEM_START_LANGUAGE:=en}
: ${PUBLIC_NAV_STUDY_ENABLED:=false}
: ${PUBLIC_NAV_USER_MANAGEMENT_ENABLED:=true}
: ${OVIS_SITE_CONFIG_DIR:=/etc/bridgehead/ovis}
: ${OVIS_RUNTIME_DIR:=$(pwd)/ovis/runtime}
: ${OVIS_SITE_DOWNLOADS_DIR:=${OVIS_RUNTIME_DIR}/downloads}
: ${OVIS_SITE_CERTS_DIR:=${OVIS_RUNTIME_DIR}/certs}
: ${OVIS_SITE_KEYCLOAK_REALM_FILE:=${OVIS_RUNTIME_DIR}/keycloak/ovis-realm.json}
: ${OVIS_CATALOGUE_FILE:=${OVIS_RUNTIME_DIR}/mongodb/ovis-catalogue.json}
: ${OVIS_MONGO_INIT_FILE:=${OVIS_RUNTIME_DIR}/mongodb/initdb.js}
: ${OVIS_OPS4_FILE:=${OVIS_RUNTIME_DIR}/mongodb/ops4.mjs}
: ${OVIS_CREDOS_EXPORT_DIR:=${OVIS_RUNTIME_DIR}/input/CREDOSExportFiles}
if [ "${ENABLE_OVIS}" = "true" ]; then
mkdir -p /var/cache/bridgehead/ovis || fail_and_report 1 "Failed to create /var/cache/bridgehead/ovis"
OVIS_CREDENTIALS_FILE=${OVIS_CREDENTIALS_FILE:-/var/cache/bridgehead/ovis/credentials.env}
ovis_random_secret() {
openssl rand -hex 24
}
if [ ! -f "$OVIS_CREDENTIALS_FILE" ]; then
umask 077
{
printf ': ${DB:=onc_test}\n'
printf ': ${EXPRESS_AUTH_USERNAME:=ovis-express}\n'
printf ': ${EXPRESS_AUTH_PASSWORD:=%s}\n' "$(ovis_random_secret)"
printf ': ${KEYCLOAK_ADMIN:=ovis-admin}\n'
printf ': ${KEYCLOAK_ADMIN_PASSWORD:=%s}\n' "$(ovis_random_secret)"
printf ': ${KEYCLOAK_REALM:=ovis}\n'
printf ': ${KEYCLOAK_CLIENT_ID:=ovis_client}\n'
printf ': ${KEYCLOAK_CLIENT_SECRET:=%s}\n' "$(ovis_random_secret)"
printf ': ${KEYCLOAK_ADMIN_CLIENT_ID:=admin-cli}\n'
printf ': ${KEYCLOAK_ADMIN_CLIENT_SECRET:=%s}\n' "$(ovis_random_secret)"
printf ': ${OVIS_ROOT_USERNAME:=ovis-root}\n'
printf ': ${OVIS_ROOT_PASSWORD:=%s}\n' "$(ovis_random_secret)"
printf ': ${POSTGRES_DB:=keycloak}\n'
printf ': ${POSTGRES_USER:=ovis_keycloak}\n'
printf ': ${POSTGRES_PASSWORD:=%s}\n' "$(ovis_random_secret)"
} > "$OVIS_CREDENTIALS_FILE"
fi
if [ "$(id -u)" -eq 0 ] && id bridgehead >/dev/null 2>&1; then
chown bridgehead /var/cache/bridgehead/ovis "$OVIS_CREDENTIALS_FILE"
fi
chmod 700 /var/cache/bridgehead/ovis
chmod 600 "$OVIS_CREDENTIALS_FILE"
source "$OVIS_CREDENTIALS_FILE"
fi