Zurück
v1.3
Interaktive Systemübersicht

Systemarchitektur & Triage-Logik

Digitale Notfalltriage für Schweizer Krankenhaus-Notaufnahmen — vom Quick Look beim Eintreffen bis zur klinischen Bewertung.

Verfügbar in 6 Sprachen
🇩🇪DeutschDE
🇫🇷FrançaisFR
🇬🇧EnglishEN
🇮🇹ItalianoIT
🇦🇱ShqipSQ
🇪🇸EspañolES
Scroll für mehr

Technische Pipeline

Sechs Komponenten arbeiten zusammen — vom Patienten-Gerät über die Workflow-Engine und KI bis zum Staff-Dashboard.

👀

Quick Look

Pflegepersonal
Sofortgefährdung?

🏥

Patient

Check-in am Kiosk
QR-Code scannen

📱

Frontend

Single-Page App
6 Sprachen

⚙️

Triage-Core Backend

Node 22 + Fastify
20 Module · 1.387 Tests

🧠

Gemini 3.5 Flash

KI-Zusammenfassung
Differentialdiagnosen

🗄️

PostgreSQL

tenant_demo + core_v2
Sessions · Results · Settings

👩‍⚕️

Staff

Dashboard · Detail-Panel
Auto-Refresh 10s

So funktioniert die Triage

In acht Schritten — vom Quick Look beim Eintreffen über den Wizard bis zur klinischen Bewertung durch das Pflegepersonal.

1

Quick Look durch Pflegepersonal

Sobald der Patient die Notaufnahme betritt, erfolgt ein kurzer Sichtcheck durch das Pflegepersonal. Bei sofortiger Lebensgefahr (Bewusstlosigkeit, schwere Atemnot, schwere Blutung) wird der Patient ohne Wizard direkt in den Schockraum gebracht. Nur stabile Patienten gehen in die digitale Triage.

2

Check-in am Kiosk

Der Patient scannt einen QR-Code am Empfangsterminal und öffnet die Triage auf dem eigenen Smartphone.

3

Stammdaten erfassen

Vorname, Nachname, Geburtsdatum und Geschlecht — alles auf einer Seite.

4

Hauptbeschwerde wählen

Brustschmerz, Bauchschmerz, Kopfschmerz usw. — das passende medizinische Modul wird geladen.

5

Wizard durchlaufen

Modulspezifische Fragen, Block für Block — einfache Antworten per Tippen (Ja/Nein, Auswahl).

6

ESI-Einstufung

Das System berechnet automatisch die Dringlichkeitsstufe (ESI 1–5) anhand der Antworten.

7

KI-Zusammenfassung

Google Gemini 3.5 Flash erstellt eine klinische Zusammenfassung und Verdachtsdiagnosen.

8

Klinische Bewertung

Das Pflegepersonal sieht das Ergebnis live im Dashboard mit allen Befunden und der KI-Zusammenfassung.

ESI — Emergency Severity Index

Das international anerkannte 5-Stufen-Triage-System. Die Einstufung bestimmt, wie schnell ein Patient behandelt wird.

ESI 1
Lebensbedrohlich — Instabilität erkannt
Sofortige Evaluation durch den Arzt, z.B. Herzstillstand, Atemversagen
ESI 2
Hochrisiko — Dringende Abklärung nötig
Priorisierte Versorgung, z.B. akuter Brustschmerz mit Risikofaktoren
ESI 3
Mehrere Ressourcen benötigt
Reguläre Abklärung mit Labor, Bildgebung oder weiteren Untersuchungen
ESI 4
Eine Ressource benötigt
Einfache Abklärung, z.B. nur eine Röntgenaufnahme oder Blutentnahme
ESI 5
Keine Ressourcen benötigt
Ambulante Versorgung, z.B. Rezept, Beratung, Überweisung

Medizinische Module

Jede Hauptbeschwerde hat ein eigenes Modul mit spezialisierten Frage-Blöcken — von Instabilität bis zu Low-Risk-Kriterien.

Brustschmerz

v1.76 Blöcke
Instability · Pain Character · Associated Symptoms · Risk Profile · ACS Risk · Musculoskeletal

Bauchschmerz

v1.59 Blöcke
Instability · Lokalisation · Appendizitis · Peritonitis · Vaskulär · Schwangerschaft · Urologisch · Risikoprofil · Low-Risk

Kopfschmerz

v1.28 Blöcke
Instability · Neuro High-Risk · Zeitlicher Verlauf · Schmerzverstärkung · Zusatzrisiko · Risikoprofil · Vorgeschichte · Migräne Escape

Halsschmerz

v1.26 Blöcke
Instability · Swallowing · Infection Signs · Red Flag Deep Neck · Risk Profile · Ressourcen

Untere Extremität

v1.17 Blöcke
Instability · Akute Ischämie · TVT-Screening · Kompartment · Infektionszeichen · Neurologisch · MSK Low-Risk

Obere Extremität

v1.18 Blöcke
Instability · ACS-Äquivalent · Akute Ischämie · Stroke/TIA · Infektionszeichen · Kompartment · Radikulär · MSK Low-Risk

Dyspnoe

v1.37 Blöcke
Instability · Kardio-Pulm High-Risk · Herzinsuff. · Pulmonal · Symptomdynamik · Risikoprofil · Low-Risk

Synkope

v1.18 Blöcke
Instability · Kardiale High-Risk · Rhythmus · Blutung · Neurologisch · Lungenembolie · Alter · Vasovagal

Schwindel

v1.38 Blöcke
Instability · Zentral-Neuro · Synkopennah · Charakter · Auslöser · Begleitsymptome · Stroke-Risiko · Lagerungs-Escape

Palpitationen

v1.44 Blöcke
Instability · Arrhythmie High-Risk · Ressourcen · Niedrig-Risiko

Fieber

v1.27 Blöcke
Instability · Sepsis-Screen · Immunsuppression · Alter · Infektfokus · Dauer · Erkältungs-Escape

Rückenschmerz

v1.18 Blöcke
Instability · Cauda equina · Aortendissektion · Infektion · Fraktur · Tumor · Neurologisch · Unspezifisch

Allgemeine Schwäche

v1.18 Blöcke
Instability · Sepsis · Metabolisch · Blutung · Neurologisch · Kardial · Alter · Low-Risk

Anaphylaxie

v1.110 Blöcke
Instability · Aktive Exposition · Hautzeichen · Atemweg · Kreislauf · ZNS · GI · Anamnese · Risiko-Medikamente · Risikoprofil

Krampfanfall

v1.16 Blöcke
Instability · Anfallscharakter · Trigger · Postiktal · Anamnese · Risikoprofil

Trauma

v1.17 Blöcke
Instability · Mechanismus · Regionen · Blutung · Begleitsymptome · Deformität · Risikoprofil

SHT

v1.16 Blöcke
Instability · Mechanismus · Bewusstlosigkeit/Amnesie · Begleitsymptome · HWS-Verdacht · Risikoprofil

Bewusstseinsstörung (AMS)

v1.16 Blöcke
Instability · Onset · Symptome · Substanzen · Komorbiditäten · Risikoprofil

GI-Blutung

v1.16 Blöcke
Instability · Manifestation · Verlauf · Begleitsymptome · Risikoprofil · Medikation

Stroke

v1.26 Blöcke
Instability · Verlauf · Begleitsymptome · Mimic-Screen · Risikoprofil · Antikoag/Lyse-Screen

Generic Fallback

2 Blöcke
Generisch für nicht implementierte Symptome
Alle Fragen & Antworten im Entscheidungsbaum ansehen

Entscheidungsbaum

Vollständiger Triage-Entscheidungspfad — dynamisch aus den YAML-Rulesets im Triage-Core Backend generiert. Klicken Sie auf einen Knoten, um alle Fragen und Antworten zu sehen. Farbige Markierungen zeigen klinische Konsequenzen.

STOPP high_risk resources++ Modul Neutral

IT-Sicherheit & Datenschutz

Mehrschichtiger Schutz — vom Netzwerk über die API bis zur Datenbank. Alle Patientendaten bleiben auf dem eigenen Server.

SQL-Injection-Schutz

Alle User-Inputs in Datenbankabfragen werden per Regex-Whitelist gefiltert. Nur erlaubte Zeichen (alphanumerisch, Bindestriche für UUIDs) passieren den Filter.

XSS-Schutz

HTML-Content wird mit esc() escaped, Attribute in Event-Handlern mit escAttr(). Kein innerHTML mit ungeprüften Daten.

CORS & TLS

CORS beschränkt auf die Produktionsdomain. TLS via Let's Encrypt mit Force-SSL. HTTP/2 aktiviert über Nginx Proxy Manager.

Zugangsschutz

Basic Auth via NPM Access List, Header-basiert (X-Remote-User). Drei Rollen im Demo: admin (Vollzugriff), ndocs (Triage + Dashboard + Controlcenter ohne Admin-Cards), ndocs_pilot (reduzierte Landing für Klinik-Mitarbeiter — nur Triage / Dashboard / Systemoverview / Feedback). Eigene In-Page-Login-Card mit Logo + i18n statt nativem Browser-Popup; Auth-Token in localStorage, ACL via NPM Custom Location auf /api-ch/. Im Echtbetrieb: SSO für Staff, MFA + Rolle für Admin, httpOnly-Cookies + bcrypt.

LLM-Datenschutz

In der Pilotphase läuft das LLM lokal auf dem VPS — keine Daten verlassen den Server. Klinische Zusammenfassungen werden vollständig on-premise generiert.

Datenbank-Isolation

PostgreSQL nur Docker-intern erreichbar (kein Port-Exposure). ON DELETE CASCADE für vollständige Datenlöschung. Credentials in .env.

Produktionsarchitektur

Im Echtbetrieb werden drei getrennte Webseiten mit dedizierten Zugriffsrechten betrieben. Aktuell läuft alles als SPA-Prototyp.

🔓

Patienten-Kiosk

triage.notfalldocs.ch
🌐 Öffentlich (kein Login)
  • Rolling QR-Code am Empfangs-Kiosk
  • Triage-Wizard auf Patienten-Gerät
  • Danke-Seite nach Abschluss
  • Nur Triage-Endpunkte
🔒

Staff Dashboard

dashboard.notfalldocs.ch
👤 Pflegepersonal (SSO / Login)
  • Patienten-Übersicht mit ESI-Sortierung
  • Detail-Panel mit KI-Zusammenfassung
  • Live-Ansicht laufender Triagen
  • Nur Lese-Endpunkte
🛡️

Admin / Controlcenter

admin.notfalldocs.ch
🔐 Admin (MFA + Rolle)
  • Systemübersicht, Telemetrie, Status
  • Feedback-Tickets verwalten
  • Modul-Konfiguration (geplant)
  • Alle Endpunkte inkl. Admin-Aktionen

🌐Mehrsprachig — 6 Sprachen

Patienten triagieren in ihrer Muttersprache. Die KI-Zusammenfassung wird in der gewählten Sprache erzeugt — UI, Fragebögen und Befunde sind komplett lokalisiert.

🇩🇪
DeutschDE
🇫🇷
FrançaisFR
🇬🇧
EnglishEN
🇮🇹
ItalianoIT
🇦🇱
ShqipSQ
🇪🇸
EspañolES

API Endpoints & Datenbank

Backend-only seit Phase 6 (2026-04-26): Triage-Core-Service Node 22 + Fastify, alle Endpoints unter /api-ch/*. n8n-Workflow ist offline. PostgreSQL-Schemas: tenant_demo (Patient-Wizard, Tickets) und core_v2 (System-Settings, User-Tracking, Errors — tenant-übergreifend).

Wizard (Triage-Core /api-ch)

POST/api-ch/session/createSession erstellen
POST/api-ch/session/startWizard starten
POST/api-ch/session/answerBlock-Antworten
POST/api-ch/session/deleteTriage löschen
GET/api-ch/sessions/listAlle Sessions (24h)
GET/api-ch/session/resultClinical View
GET/api-ch/session/liveLive-Ansicht

Admin & Tooling (/api-ch)

GET/api-ch/whoamiAuth-Info + Rolle
GET/api-ch/settingsMaintenance-Flag
POST/api-ch/settings/updateAdmin: Maintenance togglen
POST/api-ch/heartbeatClient-Heartbeat (60s)
GET/api-ch/tickets/listFeedback-Tickets
POST/api-ch/errors/logClient-Errors
GET/api-ch/admin/statsAggregate fuer Controlcenter
GET/api-ch/admin/user-statsUser-Tracking (Online/Triages)
GET/api-ch/admin/errorsError-Log letzte 100
POST/api-ch/admin/errors/clearError-Log leeren
POST/api-ch/tickets/createTicket anlegen
POST/api-ch/tickets/statusAdmin: Status setzen
POST/api-ch/tickets/deleteAdmin: Ticket loeschen
GET/api-ch/admin/stats/overviewQM-Aggregat KPIs (Phase B, 2026-05-07)
GET/api-ch/admin/stats/{volume,esi,modules,timing,quality,demographics,risk,ai}8 weitere QM-Aggregate (k-anon, n≥5)
GET/api-ch/admin/stats/sessionsDrill-Down Sessions-Liste (Audit-logged)
GET/api-ch/admin/stats/sessions/:idSession-Detail mit Trace + AI (Audit-logged)
GET/api-ch/admin/stats/raw-export.csvVoll-Export CSV/JSONL (Audit-logged, Rate-Limit 5/h/IP)
GET/api-ch/admin/audit/recentAudit-Log mit Range + Pagination (Auditor-Audit)
GET/api-ch/admin/security/dashboardLive Security-Aggregate (v0.10.5, 25s Cache)
GET/api-ch/admin/security/ip/:ipIP-Drill-Down (v0.10.6, Audit-logged)
GET/api-ch/rulesets/overviewLive-Modul-Daten (non-admin, von dieser Seite genutzt)
GET/api-ch/healthLiveness + DB-Pool-Status

PostgreSQL — Schema-per-Tenant + core_v2

tenant_demo (Patient-Daten)

sessions
session_states
session_answers
triage_results+ ai_summary (JSONB)
feedback_tickets

core_v2 (tenant-uebergreifend)

system_settingsJSONB
user_last_seen
error_log
audit_lognDSG Art. 24