Der Healex TrialFinance Manager verbessert die Abrechnung klinischer Studien durch erhöhte Transparenz und Effizienz. Kliniken erhalten eine klare Übersicht darüber, welche Leistungen zu welchem Zeitpunkt und in welcher Weise abgerechnet wurden. Externe Leistungserbringer können ihre Leistungen quittieren, was die Nachverfolgung und Abrechnung erleichtert. Das System ermöglicht zudem automatisierte Rechnungsstellungen, sobald Studienkoordinatoren die relevanten Posten freigeben. Dies steigert die Produktivität der Kliniken und stellt sicher, dass alle erbrachten Leistungen transparent und korrekt in Rechnung gestellt werden. Der Healex TrialFinance Manager ist DSGVO-konform und bietet ein abgestimmtes Rollen- und Rechte-Management sowie einen Freigabeprozess für Rechnungen.
- Systemanforderungen
- Erste Schritte
- Umgebungsvariablen
- Docker Secrets
- OIDC Konfiguration
- SSL Proxy Server
- Login
- Container Shell
- Logs
Der TrialFinance Manager ist containerisiert und lässt sich ausschließlich mit einer OCI-kompatiblen Runtime betreiben. Der Betrieb, bspw. in Docker, ist problemlos möglich und wird aufgrund bisheriger Erfahrungen von Healex empfohlen.
Hierfür wird eine Docker Umgebung benötigt (https://www.docker.com/products/container-runtime). Mit dieser können die Hosts (unabhängig davon, ob real, virtuell, lokal oder remote) ausgeführt und angesteuert werden.
Installieren Sie hierfür die Docker Engine: https://docs.docker.com/get-docker
Es wird ein Zugang zum privaten Healex Docker Repository benötigt.
Wenden Sie sich hierfür an [email protected], um die Lizenzbedingungen zu besprechen. Sobald die Lizenz eingerichtet ist, erhalten Sie ihren Kontonamen, mit welchem der Zugriff zum Docker Repository ermöglicht wird.
Service | vCPU | RAM | Festplattenspeicher |
---|---|---|---|
TrialFinance Manager | 2 | 4 GB | 5 GB |
Diese Mindestwerte eignen sich für Tests, Prototypen, Pre-PROD und erfahrungsgemäß für den anfänglichen Betrieb der Produktionsumgebung. Abhängig von der Entwicklung der realen Nutzung können sich hiervon abweichende Systemanforderungen ergeben. Die Hardwareanforderungen sollten vom hauseigenen Betrieb überwacht und angepasst werden.
- Keine speziellen Hardwareanforderungen notwendig
- Aktivierung von JavaScript und Cookies (i.d.R. Browser Standardeinstellungen)
- Standardkonformer Browser: aktuelle Versionen (nicht älter als 1 Jahr) des
- Google Chrome
- Mozilla Firefox
- Microsoft Edge
- Safari
Am einfachsten lässt sich der TFM über docker compose
starten. Hierfür werden folgende Services benötigt:
- frontend: Frontend Container des TrialFinance Managers
- backend: Backend Container des TrialFinance Managers
- db: Postgres Datenbank Container
Beispiel für eine compose.yml:
version: '3.8'
volumes:
db:
services:
frontend:
image: healexsystems/sf-frontend:2581
container_name: tfm-frontend
read_only: true
depends_on:
- backend
environment:
BACKEND_PUBLIC_BASE_URL: http://localhost:4000
CLINICALSITE_BASE_URL: https://clinicalsite.example.com
APP_CS_OIDC_SCOPE: openid+profile+email
APP_CS_CLIENT_ID: client1
AI_SERVICE_FRONTEND_URL: https://ai-visitplan.example.com
AI_SERVICE_BACKEND_URL: https://backend.ai-visitplan.example.com
ports:
- 8080:80
volumes:
- type: tmpfs
target: /usr/share/nginx/html/tmpfs
tmpfs:
size: 1000
mode: 0777
- type: tmpfs
target: /tmp
backend:
image: healexsystems/sf-backend:2581
container_name: tfm-backend
depends_on:
- db
environment:
FRONTEND_URL: http://localhost:8080
DB_HOST: db
DB_PORT: 3306
DB_NAME: exmple-database
DB_USER: example-user
DB_PASS: secret-pw
DB_OWNER_USER: migration
DB_OWNER_PASS: migration_secret_pw
CLINICALSITE_BASE_URL: https://clinicalsite.example.com
CLINICALSITE_ROLES_REPORT_PATH: /api/query/tfm_roles
OIDC_CLIENT_ID: client2
OIDC_CLIENT_SECRET: oidc_client_secret
LICENCE_SECRET: license_secret
ports:
- 4000:80
volumes:
- type: bind
source: ./licence.key
target: /app/licence.key
read_only: true
db:
image: postgres:15-alpine
container_name: tfm-db
environment:
POSTGRES_PASSWORD: secret-root-pw
volumes:
- db:/var/lib/postgresql/data
- type: bind
source: ./init.sql
target: /docker-entrypoint-initdb.d/init.sql
read_only: true
Beim Starten der Images ist es möglich, die Initialisierung der Front- und Backend-Instanzen mittels folgender Umgebungsvariablen anzupassen:
Frontend:
Umgebungsvariable | Erforderlich | Kommentar/Beschreibung | Standart Wert | Beispiel |
---|---|---|---|---|
CLINICALSITE_BASE_URL | Ja | Base URL der ClinialSite Instanz | https://clinicalsite.example.com | |
APP_CS_CLIENT_ID | Ja | Name des Browser-basierten ClinicalSite OIDC Clients (Authentifizierung ohne Kennwort) | client1 | |
APP_CS_OIDC_SCOPE | Ja | Scope des ClinicalSite OIDC Clients | openid+profile+email | |
BACKEND_PUBLIC_BASE_URL | Ja | URL der Backend Instanz, diese muss über den Browser erreichbar sein | https://backend.tfm.example.com | |
AI_SERVICE_FRONTEND_URL | Ja | Frontend URL der AI-Instanz. Nur als Platzhalter erforderlich, da Feature noch in Entwicklung ist | https://ai-visitplan.example.com | |
AI_SERVICE_BACKEND_URL | Ja | Backend URL der AI-Instanz. Nur als Platzhalter erforderlich, da Feature noch in Entwicklung ist | https://backend.ai-visitplan.example.com |
Backend:
Umgebungsvariable | Erforderlich | Kommentar/Beschreibung | Standard Wert | Beispiel |
---|---|---|---|---|
FRONTEND_URL | Ja | URL der Frontend Instanz | https://tfm.example.com | |
DB_HOST | Ja | URL oder IP der Datenbank | 10.8.0.6 | |
DB_PORT | Ja | Datenbank Port | 3306 | |
DB_NAME | Ja | Datenbank Name | tfm-t | |
DB_USER | Ja | Datenbank Benutzer | tfm | |
DB_PASS | Ja | Passwort des Datenbank-Benutzers | ||
DB_OWNER_USER | Ja | Datenbank Migrations-Benutzer | migration | |
DB_OWNER_PASS | Ja | Passwort des Datenbank-Migrations-Benutzers | ||
CLINICALSITE_BASE_URL | Ja | Base URL der ClinialSite Instanz | https://clinicalsite.example.com | |
CLINICALSITE_ROLES_REPORT_PATH | Ja | Pfad zum ClinicalSite Report, in welchem die Benutzer Rollen und Rechte defniert sind. Der API-Bezeichner des Reports ist in ClinicalSite frei wählbar und muss im Pfad korrekt angegeben werden. | "/api/query/${REPORT_NAME}", z.B. "/api/query/tfm_roles" |
|
OIDC_CLIENT_ID | Ja | Name des Server-basierten ClinicalSite OIDC Clients (Authentifizierung per Kennwort) | client2 | |
OIDC_CLIENT_SECRET | Ja | Kennwort des ClinicalSite OIDC Clients | ||
LICENCE_SECRET | Ja | Entschlüsselungs-Kennwort für die Lizenz Signatur |
Als eine Alternative zur Weitergabe vertraulicher Informationen über Umgebungsvariablen können Docker-Secrets verwendet werden.
Um eine Umgebungsvariable als Docker Secret zu verwenden, muss _FILE
an den $VARIABLEN_NAMEN
angehängt werden und der Pfad zu
der Secret-Datei festgelegt werden (Standard Pfad ist /run/secrets
)
Beispiel 1: Wert wird über den Environment-Abschnitt gesetzt:
services:
backend:
image: healexsystems/sf-backend:latest
environment:
- LICENCE_SECRET=secret-pw
Beispiel 2: Wert wird über ein Docker-Secret gesetzt:
services:
backend:
image: image: healexsystems/sf-backend:latest
environment:
- LICENCE_SECRET_FILE=/run/secrets/app-secret
secrets:
- app-secret
secrets:
app-secret:
file: secret.txt
Umgebungsvariablen, welche nach Bedarf mittels Docker-Secrets eingebunden werden können:
Backend:
DB_HOST
DB_PORT
DB_NAME
DB_USER
DB_PASS
DB_OWNER_USER
DB_OWNER_PASS
OIDC_CLIENT_ID
OIDC_CLIENT_SECRET
LICENCE_SECRET
Im ClinicalSite werden zwei unterschiedliche externe Systeme benötigt:
- OIDC
- Backend
Hierfür werden administrative Rechte in ClinicalSite benötigt. Navigieren Sie zu:
Verwaltung - Externe Systeme
- Erstellen Sie ein
Neues externes System
- Wählen Sie eine beliebige Bezeichnung für den Client im Feld
Name
- Wählen Sie einen Namen für den
Bezeichner (Client ID)
. Dieser Wert muss im Frontend-Service für die UmgebungsvariableAPP_CS_CLIENT_ID
gesetzt werden. - Wählen Sie Client-Typ:
Browser-basiert (Authentifizierung ohne Kennwort, PKCE-Unterstützung erforderlich)
- Tragen Sie folgende
Redirect-URL
ein, z.B.:- https://trialfinance.example.com/
- Achten Sie darauf, dass die URL mit
/
endet
- Legen Sie den Client an
Das Kennwort (Client Secret) wird nicht benötigt und wird deshalb nicht in TrialFinance hinterlegt.
- Wählen Sie eine beliebige Bezeichnung für den Client im Feld
Name
- Wählen Sie einen Namen für den
Bezeichner (Client ID)
. Dieser Wert muss im Backend-Service für die UmgebungsvariableOIDC_CLIENT_ID
gesetzt werden. - Wählen Sie Client-Typ:
Server-basiert (Authentifizierung per Kennwort)
- Legen Sie den Client an
- Das Kennwort (Client Secret) muss im Backend-Service für die Umgebungsvariable
OIDC_CLIENT_SECRET
gesetzt werden.
Eine SSL-Verschlüsselung mittels eines Proxy Servers ist empfohlen und im produktiven Betrieb zwingend.
Ein Login ist ausschließlich über OIDC möglich.
Mit dem Befehl docker exec
können Befehle innerhalb des laufenden Containers ausgeführt werden. Mit der folgenden Befehlszeile wird eine Shell im Front- oder Backend Container geöffnet.
docker exec -it docker Container-ID /bin/bash
docker logs Container-ID