
Überblick
Die Konfiguration der MCDMS WebAkte befindet sich unter:
{APPPATH}\Web
Die zentrale Konfiguration besteht aus:
WEB.INI
FORMULARE.INI
Zusätzlich kann die WebAkte ausgewählte vorhandene MCDMS-Konfigurationen aus:
{APPPATH}\CONFIG\STDConf.INI
verwenden.
WEB.INI enthält die allgemeinen Einstellungen der WebAkte.
FORMULARE.INI beschreibt die verfügbaren Webformulare, deren Datenquellen, Berechtigungen, Scripts und Laufzeitverhalten.
WEB.INI
Typische Bereiche der WEB.INI sind:
[GENERAL]
[PATIENT]
[SEARCH]
[AKTENSTRUKTUR]
[SERVER]
[AUTHENTICATION]
[SESSION]
[LOGGING]
[BRANDING]
[SETTINGS]
[NATIVE_AKTE]
[DATABASE]
[SELECTIONS]
[SQL-SERVER]
Nicht jede Installation muss alle Bereiche enthalten.
[GENERAL]
Beispiel:
[GENERAL]
StartForm=PATIENT_HOME
ScriptPatientSelect=CONFIG\Scripts\KTLops.MCFSCR;CONFIG\Scripts\Diagnosen.MCFSCR
StartForm
Definiert das Formular, das nach erfolgreicher Patientenauswahl geöffnet wird.
Beispiel:
StartForm=PATIENT_HOME
Die angegebene Formular-ID muss in FORMULARE.INI vorhanden sein.
ScriptPatientSelect
Optional können nach erfolgreicher Patientenauswahl ein oder mehrere MCDMS-Scripts ausgeführt werden.
Beispiel:
ScriptPatientSelect=CONFIG\Scripts\KTLops.MCFSCR;CONFIG\Scripts\Diagnosen.MCFSCR
Mehrere Scripts werden durch Semikolon getrennt und in der angegebenen Reihenfolge ausgeführt.
Die Pfade werden relativ zu:
{APPPATH}
aufgelöst.
Beim Patientenwechsel wird der vorherige MCDMS-Patientenkontext kontrolliert beendet. Erst nach erfolgreichem Reset wird der neue Patient initialisiert.
Kann der bisherige Patientenkontext nicht sicher beendet werden, wird die WebSession beendet. Dadurch wird verhindert, dass MCDMS-Zustände unterschiedlicher Patienten vermischt werden.
[PATIENT]
Beispiel:
[PATIENT]
HomeForm=PATIENT_HOME
RecentPatientCount=10
RecentEnabled=TRUE
PatientInfo=GESAMTNAME|bold;GEBDATUM
HomeForm
Definiert das Patientenstammblatt bzw. die Startseite des aktuell ausgewählten Patienten.
Beispiel:
HomeForm=PATIENT_HOME
RecentPatientCount
Bestimmt die Anzahl der im Bereich „Zuletzt“ angezeigten Patienten.
Beispiel:
RecentPatientCount=10
RecentEnabled
Aktiviert oder deaktiviert die Liste zuletzt verwendeter Patienten.
RecentEnabled=TRUE
Zum Abschalten:
RecentEnabled=FALSE
PatientInfo
Optional kann die Anzeige des aktuell ausgewählten Patienten angepasst werden.
Beispiel:
PatientInfo=GESAMTNAME|bold;GEBDATUM
Die Ausgabe erfolgt strukturiert und sicher als Text.
Mögliche Formatierungen richten sich nach dem aktuell unterstützten PatientInfo-Vertrag.
[SEARCH]
Beispiel:
[SEARCH]
SearchFields=Name;Vorname;Fallnummer;Patientid
DefaultPageSize=20
MaximumPageSize=50
SearchFields
Definiert die Felder, über die die Patientensuche erfolgt.
Beispiel:
SearchFields=Name;Vorname;Fallnummer;Patientid
Die Namen beziehen sich auf die tatsächlich verfügbaren Feldnamen bzw. SQL-Aliase der Patientenauswahl.
Beispiel:
PatientFallNr AS Fallnummer
erfordert:
SearchFields=Fallnummer
Die Suche:
- unterscheidet nicht zwischen Groß- und Kleinschreibung
- durchsucht alle konfigurierten Suchfelder
- arbeitet innerhalb der aktuell ausgewählten Patientenliste
- verwendet dieselbe Mehrfeldsuche auch bei numerischer Eingabe
- ignoriert ungeeignete Suchfelder anhand ihres Datentyps
Fallback über StandardSuche
Ist SearchFields nicht gesetzt oder leer, kann die Suchfeldliste aus StandardSuche übernommen werden.
Beispiel:
[DATABASE]
StandardSuche=Name,Vorname;Name;Vorname;Gebdatum;Patientid;AufTyp
Für die Suchfeldliste wird nur der Teil vor dem ersten Semikolon verwendet:
Name,Vorname
DefaultPageSize / MaximumPageSize
Beispiel:
DefaultPageSize=20
MaximumPageSize=50
Diese Werte steuern die Größe der schrittweise geladenen Patientenlisten.
Patientenauswahl
Die sichtbare Patiententabelle wird vollständig aus dem tatsächlich ausgeführten SQL-Resultset aufgebaut.
Dadurch bestimmen die aktuelle Selection bzw. StandardSQL:
- sichtbare Spalten
- Reihenfolge
- Überschriften
- Datentypen
Beispiel:
SELECT
Name,
Vorname,
PatientFallNr AS Fallnummer,
Gebdatum AS Geburtsdatum,
Patientid
FROM Patientenstammdaten
ergibt beispielsweise:
Name
Vorname
Fallnummer
Geburtsdatum
Patientid
SQL-Aliase werden direkt als Spaltenüberschrift verwendet.
Datumsfelder werden als Datum formatiert dargestellt.
[AKTENSTRUKTUR]
Die Navigation der WebAkte wird in WEB.INI definiert.
Beispiel:
[AKTENSTRUKTUR]
Start
Verwaltung
Arzt
Therapie
Medikation
Aufnahme
Pflege
Arzt\Befunde
Arzt\Verlauf
Die Reihenfolge in der INI bestimmt die Reihenfolge in der Navigation.
Hierarchien werden über \ gebildet.
Beispiel:
Arzt
Arzt\Befunde
Arzt\Verlauf
ergibt:
Arzt
├─ Befunde
└─ Verlauf
Jeder übergeordnete Bereich muss zuvor ausdrücklich definiert sein.
Formulare werden über ihre Konfiguration in FORMULARE.INI den Aktenbereichen zugeordnet.
[SERVER]
Beispiel:
[SERVER]
EnvironmentName=Production
Prefixes=https://mcdms-webakte.klinik.intern:8443/
AllowedHosts=mcdms-webakte.klinik.intern
MaxRequestBodyBytes=1048576
AllowInsecureHttpDevelopment=FALSE
EnvironmentName
Kennzeichnet die Laufzeitumgebung.
Beispiel:
EnvironmentName=Production
Prefixes
Definiert die HTTP.sys-/HttpListener-Endpunkte.
Beispiel:
Prefixes=https://mcdms-webakte.klinik.intern:8443/
AllowedHosts
Definiert die zulässigen Hostnamen.
Beispiel:
AllowedHosts=mcdms-webakte.klinik.intern
MaxRequestBodyBytes
Legt die maximale Größe eines HTTP-Requests fest.
Beispiel:
MaxRequestBodyBytes=1048576
AllowInsecureHttpDevelopment
Unsicheres HTTP darf ausschließlich für lokale Entwicklungs- oder Testzwecke verwendet werden.
AllowInsecureHttpDevelopment=FALSE
Im Produktivbetrieb muss dieser Wert deaktiviert bleiben.
[AUTHENTICATION]
Beispiel:
[AUTHENTICATION]
Provider=MCDMS
FailedLoginLimit=5
FailedLoginWindowMinutes=15
Provider
Aktuell wird die vorhandene MCDMS-Benutzerverwaltung verwendet.
Provider=MCDMS
FailedLoginLimit
Definiert die maximale Anzahl fehlgeschlagener Anmeldeversuche innerhalb des Zeitfensters.
Beispiel:
FailedLoginLimit=5
FailedLoginWindowMinutes
Definiert das Zeitfenster für die Loginbegrenzung.
Beispiel:
FailedLoginWindowMinutes=15
[SESSION]
Beispiel:
[SESSION]
CookieName=MCDMS_SESSION
IdleTimeoutMinutes=30
AbsoluteTimeoutHours=8
MaxSessionsPerUser=3
Die WebSession enthält serverseitig unter anderem:
- angemeldeten MCDMS-Benutzer
- ausgewählten Patienten
- MCDMS-Framework-Kontext
- Patientenkontext
- Sicherheitsinformationen
- Kontextrevision
Jede aktive WebSession besitzt ihren eigenen MCDMS-Framework-Kontext.
CookieName
Name des Session-Cookies.
CookieName=MCDMS_SESSION
IdleTimeoutMinutes
Maximale Inaktivitätszeit.
IdleTimeoutMinutes=30
AbsoluteTimeoutHours
Maximale Gesamtdauer einer Session.
AbsoluteTimeoutHours=8
MaxSessionsPerUser
Maximale Anzahl paralleler Sessions eines Benutzers.
MaxSessionsPerUser=3
[LOGGING]
Beispiel:
[LOGGING]
DeleteLogsAfterDays=30
DetailedFormDiagnostics=FALSE
Die Logdateien befinden sich unter:
{APPPATH}\Web\LOGS
DeleteLogsAfterDays
Steuert die Aufbewahrungsdauer der Betriebslogs.
Beispiel:
DeleteLogsAfterDays=30
DetailedFormDiagnostics
Erweiterte Formulardiagnose:
DetailedFormDiagnostics=TRUE
sollte nur zur gezielten Fehlersuche verwendet werden.
Im Normalbetrieb:
DetailedFormDiagnostics=FALSE
[BRANDING]
Beispiel:
[BRANDING]
ApplicationName=MCDMS-WebAkte
ClinicName=
Logo=IMAGES\logo.svg
FontFamily=Segoe UI, Arial, sans-serif
BorderRadius=8
NavigationWidth=260
Die Branding-Einstellungen steuern das grundsätzliche Erscheinungsbild der WebAkte.
Formular-HTML kann darüber hinaus eigene CSS-Regeln verwenden.
ApplicationName
Bezeichnung der Anwendung.
ApplicationName=MCDMS-WebAkte
ClinicName
Optionaler Klinikbezug.
Der tatsächlich angezeigte Klinikname kann aus dem MCDMS-Kontext stammen.
Logo
Pfad zum Logo innerhalb des Web-Verzeichnisses.
Logo=IMAGES\logo.svg
FontFamily
Beispiel:
FontFamily=Segoe UI, Arial, sans-serif
BorderRadius
Beispiel:
BorderRadius=8
NavigationWidth
Breite der Navigation.
NavigationWidth=260
[SETTINGS]
Über [SETTINGS] wird das Farbschema der allgemeinen WebAkte-Oberfläche festgelegt.
Mögliche Werte:
[SETTINGS]
ColorScheme=LIGHT
[SETTINGS]
ColorScheme=DARK
[SETTINGS]
ColorScheme=SYSTEM
SYSTEM folgt dem vom Browser bzw. Betriebssystem verwendeten Farbschema.
Formular-HTML kann weiterhin eigene Styles verwenden. Diese sollten auf den jeweiligen Formularbereich begrenzt sein.
[NATIVE_AKTE]
Dieser Bereich steuert die Einbindung nativer MCDMS-Akteneinträge.
Beispiel:
[NATIVE_AKTE]
Enabled=TRUE
Typ=300,301,302,303,311,312,313
OrderBy=ErstelltAm;DESC
Enabled
Aktiviert bzw. deaktiviert die native Aktenintegration.
Enabled=TRUE
Typ
Definiert die erlaubten MCDMS-Dokumenttypen.
Beispiel:
Typ=300,301,302,303
Die genaue Bedeutung der unterstützten Typen wird im Kapitel zur nativen MCDMS-Akte beschrieben.
Datei- und Aktenicons
Die WebAkte verwendet für Akteneinträge und native Dokumente Icons aus dem festen Verzeichnis:
Web\IMAGES\FILEICONS\
Der Pfad ist nicht separat konfigurierbar.
Für die Auswahl des Icons gilt folgende Reihenfolge:
- Ist im Akteneintrag ein positiver Wert in
Symbolhinterlegt und existiert dazu eine PNG-Datei, wird diese verwendet.Beispiel:
Symbol = 42
verwendet:
Web\IMAGES\FILEICONS\42.png
- Bei nativen Dokumenten wird andernfalls die tatsächliche Dateiendung verwendet.Beispiele:
PDF -> pdf.png
DOC -> doc.png
TXT -> txt.png
- Ist kein passendes Icon vorhanden, wird verwendet:
Web\IMAGES\FILEICONS\default.png
Es werden ausschließlich PNG-Dateien aus FILEICONS verwendet. Historische JPG-/SYM-/0.png– oder Textsymbol-Fallbacks gehören nicht mehr zum aktuellen Verfahren.
STDConf.INI und WEB.INI
Die WebAkte kann vorhandene MCDMS-Konfigurationen aus STDConf.INI übernehmen.
Unterstützt werden:
[DATABASE]
[SELECTIONS]
[SQL-SERVER]
Für jeden dieser Bereiche gilt eine eindeutige Section-Regel:
Section in WEB.INI vorhanden
→ komplette Section aus WEB.INI
Section in WEB.INI nicht vorhanden
→ komplette Section aus STDConf.INI
Einzelne Schlüssel beider Dateien werden nicht miteinander gemischt.
[DATABASE]
Beispiel:
[DATABASE]
StandardDatabase={APPPATH}\DATABASE\STAMMDAT.MDB
StandardIDField=PatientID
StandardSQL=SELECT ...
StandardOrder=Name,Vorname
StandardSuche=Name,Vorname;Name;Vorname;Gebdatum;Patientid;AufTyp
StandardSQL definiert die Standard-Patientenliste.
StandardDatabase definiert die zugrunde liegende Patientendatenquelle.
[SELECTIONS]
Zusätzliche Patientenlisten können als vollständige SQL-Abfragen definiert werden.
Beispiel:
[SELECTIONS]
Alle Anwesenden=SELECT ...
Nachsorge=SELECT ...
Archiv=SELECT ...
Der Benutzer kann zwischen der Standardauswahl und den zusätzlich konfigurierten Selections wechseln.
[SQL-SERVER]
Dieser Bereich enthält die SQL-Server-Konfiguration für SQL-basierte Formulare.
Die genaue Struktur richtet sich nach der verwendeten MCDMS-Konfiguration.
Auch hier gilt die vollständige Section-Override-Regel zwischen WEB.INI und STDConf.INI.
FORMULARE.INI
FORMULARE.INI definiert die verfügbaren Webformulare.
Eine Formularsektion beschreibt unter anderem:
- Formular-ID
- Titel
- HTML-Datei
- Datenquelle
- Bearbeitbarkeit
- Mehrfachdatensätze
- Löschen
- Duplizieren
- Scripts
- MCDMS-Rechte
- Aktenzuordnung
- Listenansicht
- Master-/Detailstruktur
Beispiel:
[FORMULAR_BEISPIEL]
Title=Beispiel
HTML=HTML\Beispiel\BEISPIEL.html
Edit=TRUE
MultiRecord=TRUE
Delete=TRUE
AllowDuplicate=TRUE
Database=FRM_BEISPIEL;FRMID;PatientID
OrderBy=FRMID;DESC
MATCHCODE=BEISPIEL
Die vollständige Formularreferenz wird im Kapitel 04 Formulare & Scripts beschrieben.
Änderungen an der Konfiguration
HTML-Dateien werden beim Öffnen eines Formulars neu gelesen.
Änderungen an:
HTML
CSS
JavaScript
können daher grundsätzlich ohne Austausch der WebServer-EXE vorgenommen werden.
Serverseitige Konfigurationsdateien wie:
WEB.INI
FORMULARE.INI
werden beim Start des WebServers geladen.
Nach Änderungen daran sollte der Dienst neu gestartet werden:
Stop-Service MCDMS.WebAkte
Start-Service MCDMS.WebAkte
Sicherheit
Sicherheitsrelevante Zuordnungen stammen ausschließlich aus serverseitiger Konfiguration.
Dazu gehören unter anderem:
- Formulare
- Datenbanktabellen
- Primärschlüssel
- Patientenfelder
- Scriptpfade
- MCDMS-MATCHCODEs
- Rechte
- Aktionszuordnungen
Der Browser bestimmt diese Werte nicht selbst.
