Zurück zum Blog

VitalCare: Ein Architektur-Demonstrator für sichere medizinische Web-Anwendungen

In den letzten Wochen ist mit VitalCare ein neues Projekt entstanden: ein Architektur-Demonstrator, der zeigt, wie sich medizinische Web-Anwendungen unter strengen Sicherheits- und Datenschutzvorgaben robust entwickeln lassen – von der Vitalwerterfassung am Patientenbett bis zur Anbindung an bestehende Krankenhaussysteme. VitalCare ist kein fertiges kommerzielles Produkt, sondern ein Blaupause-Projekt, an dem sich zeigen lässt, wie KI-gestützte Entwicklung und hohe Compliance-Anforderungen zusammenpassen.

KI-gestützte Entwicklung unter klaren Leitplanken

Große Teile des Codes sind mit Claude Code entstanden – allerdings nicht unstrukturiert, sondern innerhalb eines festen Regelwerks ("Harness"). Ein zentrales Regeldokument erzwingt zum Beispiel Local-First-Commits, damit kein Server-Datenverlust entstehen kann, und schreibt vor, dass jede Code-Änderung zwingend mit einem Dokumentations-Update einhergeht. Fachspezifische Leitplanken für Architektur, Frontend und Security sorgen zusätzlich dafür, dass generierter Code nicht nur funktioniert, sondern auch sauber in die bestehende Struktur passt – etwa durch feste Vorgaben zur Diagramm-Bibliothek, zum State-Management oder zu idempotenten Datenbank-Migrationen statt roher SQL-Befehle.

Architektur: klare Trennung der Verantwortlichkeiten

Das Python/FastAPI-Backend folgt konsequent einer 3-Schichten-Architektur: Ein Router übernimmt die reine Eingabevalidierung, ein Service-Layer bündelt die Fach- und Berechtigungslogik, und ein Repository-Layer kapselt sämtliche Datenbankzugriffe. Diese Trennung macht das System testbar und nachvollziehbar.

Ein größerer Meilenstein war die Aufteilung in zwei komplett getrennte APIs: eine JWT-gesicherte Oberfläche für Tablets und Desktops, und eine strikt standardisierte, API-Key-gesicherte HL7-FHIR-Schnittstelle für die maschinelle Anbindung an ein führendes Krankenhausinformationssystem. Über diese Schnittstelle können Patienten-Stammdaten, Verlegungen und Entlassungen automatisch synchronisiert werden, während die in der App erfassten Vitalwerte als standardisierte FHIR-Ressourcen zurück in die zentrale Patientenakte fließen – ganz ohne proprietäre CSV- oder XML-Schnittstellen. Bemerkenswert dabei: Beide APIs nutzen dieselbe Datenbank, dieselben Repositories und dieselbe Businesslogik – keine Code-Duplizierung, aber eine strikte Netzwerk-Isolation zwischen beiden Welten.

Frontend und Backend werden als unveränderliche Docker-Images gebaut und über ein privates Netzwerk in die Ziel-Registry gepusht.

Security-Härtung

Fehlt ein Signierschlüssel in der Konfiguration, startet die Anwendung gar nicht erst – ein bewusstes Fail-Fast statt eines unsicheren Standardwerts. API-Keys werden zeitsicher verglichen, um Timing-Angriffe zu verhindern, und die maschinelle Schnittstelle ist ausschließlich im internen Netz erreichbar, niemals öffentlich exponiert.

Eine Oberfläche, viele Endgeräte

Die Benutzeroberfläche passt sich dynamisch an das genutzte Gerät und die Berechtigungen der Nutzerin oder des Nutzers an:

  • Desktop/Laptop: Ein Dashboard mit vollständiger Fieberkurve und Historie – Temperatur, Blutdruck, Puls, Gewicht und Blutzucker in Echtzeit aggregiert, mit wählbaren Zeiträumen (24 Stunden bis mehrere Wochen) und einem frei ziehbaren Schieberegler für individuelle Ausschnitte.
  • Tablet im Kiosk-Modus: Authentifizierung im Hintergrund, Bildschirmsperre per schnellem 4-stelligem PIN statt langer Passwörter.
  • Smartphone am Patientenbett: Ein mobiloptimiertes Formular mit großem Ziffernblock für die schnelle Erfassung; im Querformat blendet die App alle Navigationselemente aus und zeigt ausschließlich die synchronisierten Kurven.
  • Wunddokumentation: Fotos werden direkt am Handy oder Tablet aufgenommen, komprimiert und in einen S3-kompatiblen Objektspeicher gestreamt. Die Zeitstrahl-Galerie erlaubt Zoom, Verschieben, Drehen und Zurücksetzen einzelner Aufnahmen, um den Heilungsverlauf zu beurteilen.
  • Notfallzugriff (Break-Glass): Im Notfall kann berechtigtes Personal den Zugriff auf stationsfremde Patientenakten temporär erzwingen – der Vorgang löst eine Warnung aus und wird manipulationssicher protokolliert.
  • Verwaltung: Rollenbasierte Verwaltung von Personal, Stationen und Berechtigungen – durchgesetzt nicht nur im Frontend, sondern hart auf Ebene der Backend-Router.

Qualitätssicherung & Betriebssicherheit

Neben der sichtbaren Oberfläche steckt ein erheblicher Teil der Arbeit in Prozessen, die einen stabilen und nachvollziehbaren Betrieb sicherstellen:

  • Test-Gate vor jedem Commit: Ein Pre-Commit-Hook führt automatisch die komplette Test-Suite aus – Backend-Unit-Tests und End-to-End-Tests gegen die echte Anwendung. Ein Commit mit fehlschlagenden Tests ist technisch nicht möglich.
  • Verifizierter Release-Prozess: Jedes Deployment wird unmittelbar danach live gegen die Produktivumgebung geprüft und in einem datierten Bericht dokumentiert. Versionierte, unveränderliche Images erlauben einen Rollback auf jede vorige Version per Knopfdruck.
  • Aus Fehlern werden dauerhafte Schutzmechanismen: Wird ein Fehler entdeckt, endet die Reaktion nicht beim reinen Bugfix – ein automatisierter Test wird ergänzt, der genau dieses Fehlermuster künftig im gesamten Code erkennt.
  • Praxisnahe Lasttests: Das System wird regelmäßig mit einem realistischen Datenvolumen befüllt – mehrere hundert Bewohner und Mitarbeitende, mehrere zehntausend Vitalwert-Einträge, mehrere hundert Wundfotos – und dabei auf Stabilität verifiziert.
  • Transparente Projektführung: Bekannte Einschränkungen, offene Punkte und bewusste Design-Entscheidungen werden in einem lebendig gepflegten Register dokumentiert, statt verborgen zu bleiben.

Fazit

VitalCare zeigt, dass sich hohe Sicherheits- und Compliance-Anforderungen (DSGVO/MDR) mit modernen Entwicklungsmethoden – einschließlich KI-gestützter Programmierung – verbinden lassen, solange klare Leitplanken und konsequente Qualitätssicherung von Anfang an mitgedacht werden. Ein Projekt, das zeigt, wie viel Sorgfalt hinter einer scheinbar einfachen Vitalwerte-App stecken kann.