Kontakt
← Invariance / Portfolio
KundenprojektGesundheitswesen · 2024–2025

Drei Erweiterungen, die einem Alt-System eine zweite Sprache gaben — und eine Rechtschreibprüfung.

Die Dolomiti Sportclinic schreibt ihre Befunde in einem Web-ERP ohne Rechtschreibprüfung, ohne Übersetzung, ohne Diktat. Das System zu ersetzen stand nie zur Debatte. Stattdessen haben wir drei Browser-Erweiterungen gebaut, die in genau das System hineingreifen, mit dem die Ärzte ohnehin arbeiten.

Das Popup der Korrektur-Erweiterung, offen auf einem Befundfeld

Das Popup der Korrektur-Erweiterung, offen auf einem Befundfeld

Das Korrektur-Popup. Ein Knopf prüft das Feld, in dem der Cursor steht; der zweite geht alle neun Abschnitte eines strukturierten Befunds der Reihe nach durch. Die Sprachauswahl entscheidet nur, welche Regeln gelten — übersetzt wird hier nichts.

Das Popup der Übersetzungs-Erweiterung mit gewählter Zielsprache

Das Popup der Übersetzungs-Erweiterung mit gewählter Zielsprache

Das Übersetzungs-Popup. Die Zielsprache wird einmal gewählt, und der übersetzte Abschnitt hängt unter dem Original, sodass das Feld beide Versionen trägt. Ein zweiter Lauf ersetzt die vorige Übersetzung statt eine dritte Fassung anzuhängen.

Das Popup der Diktat-Erweiterung während der Aufnahme

Das Popup der Diktat-Erweiterung während der Aufnahme

Das Diktat-Popup. Aufgenommen wird im Browser, das Transkript wird bereinigt, bevor es im Feld landet, und bei einem strukturierten Befund verteilt sich das Gesagte selbstständig auf die richtigen Abschnitte.

Rolle
Produkt · Architektur · Full-Stack-Entwicklung · Auslieferung
Sprachen
Deutsch · Italienisch · Englisch
Status
Täglich im klinischen Einsatz

Einführung

Die Software ließ sich nicht ändern. Die Arbeit schon.

Südtiroler Ärztinnen und Ärzte wechseln mitten im Satz zwischen Deutsch und Italienisch und tippen zwischen zwei Patienten. Ihr Befundsystem ist eine langlebige Webanwendung ohne jede Textunterstützung, und die Befunde gehen an Patienten, Versicherungen und Zuweiser. Das ERP neu zu bauen wäre ein Mehrjahresprojekt gewesen. Der Arbeitsablauf darum herum ließ sich in Wochen reparieren.

150.000+

Aufrufe der Erweiterungen

28,7 Mio.

verarbeitete Wörter

~10.000

eingesparte Stunden manueller Arbeit

Korrektur

Korrekturlesen

Korrigiert Rechtschreibung, Zeichensetzung und leichte Grammatik direkt im Feld, in der Sprache des Textes — ohne Inhalte, Daten oder Struktur anzutasten. Ein Feld oder alle neun Abschnitte nacheinander.

Übersetzer

Deutsch · Italienisch · Englisch

Übersetzt einen Abschnitt in die Zielsprache und hängt ihn unter das Original, sodass das Feld beide Fassungen trägt. Ein erneuter Lauf ersetzt die vorherige Übersetzung, statt eine dritte anzuhängen.

Diktat

Sprache zu Text

Nimmt im Browser auf, transkribiert, glättet das Ergebnis und tippt es in den Befund. Bei strukturierten Befunden verteilt es das Gesagte selbstständig auf die richtigen Abschnitte.

Demonstration

Was die Ärztin tatsächlich sieht.

Eine Rekonstruktion der Korrektur-Erweiterung vor einem Platzhalter für das Kliniksystem, nachgebaut aus ihrem eigenen Markup und ihren Styles. Klicken Sie auf Korrigieren und schauen Sie auf das Feld — jedes geänderte Wort bekommt seine Unterstreichung.

Befund — ambulant

AnamnesiEsame obiettivoEsami strumentaliDiagnosiTerapia

Anamnese

78-jähriger Patien stellt sich nach einem sturz aus dem stand mit starken schmerzen in der rechten hüfte vor. Es besteht eine unfähigkeit das bein zu belasten sowie ein stechender schmerz in der leistenregion. Verdacht auf eine mediale schenkelhalsfraktur weitere diagnostik durch röntgen und ggf CT geplant.

Beispieltext — keine Patientendaten.

Übersetzung

Übersetzung, die ergänzt statt ersetzt.

Die Übersetzungs-Erweiterung schreibt ihr Ergebnis hinter einer Sprachmarkierung unter das Original — das Feld trägt danach beide Fassungen, eingetippt so, wie die Klinik es ankommen sieht.

Befund — ambulant

AnamnesiEsame obiettivoEsami strumentaliDiagnosiTerapia

Anamnese

78-jähriger Patien stellt sich nach einem sturz aus dem stand mit starken schmerzen in der rechten hüfte vor. Es besteht eine unfähigkeit das bein zu belasten sowie ein stechender schmerz in der leistenregion. Verdacht auf eine mediale schenkelhalsfraktur weitere diagnostik durch röntgen und ggf CT geplant.

Beispieltext — keine Patientendaten.

Technologie

Bewährte Werkzeuge, als System gewählt.

Nichts im Browser, das veralten kann; die beweglichen Teile liegen in den Diensten dahinter.

Manifest V3 extensions

Google Chrome

Der Browser, in dem die Klinik arbeitet, und die Erweiterungsplattform, für die die Plugins gebaut sind. Manifest V3 hält sie auf eng umrissene Berechtigungen und genau die Seiten, auf denen sie gebraucht werden.

Manifest V2 builds

Firefox

Der zweite Browser, für den die Suite ausgeliefert wird. Seine Extension-APIs liegen nah genug an denen von Chrome, dass eine Codebasis beide bedient — mit einem eigenen Manifest pro Build.

No framework, no build

JavaScript

Die Erweiterungen sind reines JavaScript, ohne Framework und ohne Build-Schritt — die ausgelieferte Datei ist die geschriebene Datei. In einer Browser-Erweiterung ist das ein Vorteil: weniger zu prüfen, nichts, das bei einem Update still zerbricht.

Service language

Python

Die Sprache der Backend-Services, gewählt dafür, wie direkt sie mit Text und Sprachmodellen umgeht. Sie hält die Dienste klein genug, um sie von vorn bis hinten zu lesen.

Correction & translation API

Django

Das Framework hinter Korrektur und Übersetzung. Es bringt mit, was ein echter Dienst braucht — Datenmodelle, Authentifizierung, eine Verwaltungsoberfläche — sodass die Arbeit in die Fachlichkeit geht statt in das Gerüst.

Dictation service

FastAPI

Das Framework hinter der Diktierfunktion. Es arbeitet asynchron, was zählt, wenn Anfragen überwiegend aus Warten auf ein Modell bestehen, und leitet Validierung und API-Dokumentation direkt aus den Typen ab.

Language models

OpenAI

Die Sprach- und Sprechmodelle, die die eigentliche Arbeit machen: Transkription, Korrektur, Übersetzung. Sie werden über eine API unter Vertrag genutzt — nichts hängt an einem Modell auf Klinik-Hardware.

Reproducible runtime

Docker

Anwendung und alles, was sie braucht, stecken in einem Image — die getestete Version ist bitgenau die Version, die produktiv läuft. Deployment hängt nicht mehr davon ab, was auf einem Server zufällig installiert ist.

Architektur

In ein System greifen, das man nicht ändern darf.

Die klinische Anwendung bleibt unberührt. Alles passiert im Browser, in der Sitzung der Ärztin, zwischen dem letzten Wort und dem Klick.

Im Browser

Klinisches ERP

Unverändert. Die Ärztin tippt; die Anwendung wird nie angefasst.

Browser-Erweiterung

Läuft in der Sitzung der Ärztin, auf ausdrücklichen Klick.

  • Bildschirm erkannt
  • Aktives Feld ermittelt
Korrektur
Übersetzung
Diktat

Natives Eingabe-Ereignis

Die Anwendung reagiert, als hätte ein Mensch getippt.

Außerhalb des Browsers

Nur die ausgewählte Passage verlässt den Browser

Django-Dienst

Korrektur & Übersetzung

FastAPI-Dienst

Diktat

Sprachmodell

OpenAI-API

AnfrageVerarbeitungAntwort
  1. Den Bildschirm erkennen

    Befundansicht und Sekretariatsansicht sind unterschiedlich aufgebaut. Die Erweiterung erkennt, welche geöffnet ist, und passt an, was sie anbietet — die Alles-Aktion verschwindet dort, wo sie keinen Sinn ergibt.

  2. Das richtige Feld finden

    Ein Befund verteilt sich über neun Abschnitte hinter einer Reiterleiste. Die Erweiterung ermittelt den aktiven Reiter und liest das Feld dahinter; für den Gesamtlauf geht sie die Reiter der Reihe nach durch und bringt die Ärztin am Ende dorthin zurück, wo sie war.

  3. Nur den Text senden

    Die ausgewählte Passage geht an einen Dienst, der das Sprachmodell anwendet und den korrigierten Text zurückgibt — sonst nichts über Patient oder Sitzung.

  4. Überzeugend zurückschreiben

    Einen Wert zu setzen genügt einem modernen Web-Framework nicht. Die Erweiterung schreibt den Text und löst danach dasselbe Eingabe-Ereignis aus wie der Browser, damit das Modell der Anwendung so reagiert, als hätte ein Mensch getippt.

Recht

Wo die rechtliche Linie verläuft.

Diese Werkzeuge tragen Patientenbefunde. Darum legt die Bauweise fest, was den Browser verlässt, was gespeichert wird und wer über das Senden entscheidet.

Nur die Passage reist

Der Feldtext ist die gesamte Nutzlast. Keine Patientenkennung, keine Fallnummer, kein Sitzungskontext hängt an einer Anfrage — es gibt also selbst im Transit nichts zu verknüpfen.

Auf unserer Seite bleibt nichts

Die Dienste halten keine Datenbank mit Befundtext. Eine Anfrage wird verarbeitet und beantwortet; danach bleibt nichts, das man erbeuten, beschlagnahmen oder exportieren könnte.

Die Klinik entscheidet, jedes Mal

Im Hintergrund wird nichts gesendet. Jede Erweiterung handelt auf einen ausdrücklichen Klick, in genau dem Feld, in dem der Arzt arbeitet — die Entscheidung, klinischen Text zu senden, bleibt eine menschliche.

Die Klinik besitzt das Gebaute

Quellcode, Builds und Signaturmaterial gehören der Klinik. Invariance behält keine Kopie klinischer Inhalte und kein eigenes Nutzungsrecht daran.

Ergebnis

Täglich genutzt, von Menschen, die nie nach Software gefragt haben.

Die drei Erweiterungen sind täglich in der Klinik im Einsatz. Das Befundsystem, an dem sie hängen, wurde kein einziges Mal verändert — genau deshalb war das Projekt überhaupt möglich. Dasselbe Muster passt überall dort, wo ein Betrieb an einem System hängt, das er weder ersetzen noch länger ertragen kann.

Termin anfragen