Fortgeschritten 22 minGesundheit

Medizinische Transkription und lokales LLM: Datenkonformität patient

Eine Konsultation diktieren, eine saubere Transkription erhalten und anschließend einen SOAP-Bericht, der direkt in die Patientenakte eingefügt werden kann — ohne dass auch nur eine Sekunde Audio die Praxis verlässt. Dieses Versprechen setzt dieser Leitfaden in die Praxis um: eine HDS-konforme Pipeline für die medizinische Transkription mit einem lokalen LLM, aufgebaut auf Whisper-large-v3 und einem Modell mit mindestens 14 Milliarden Parametern (Llama 4 oder Qwen3), die darauf ausgelegt ist, die medizinische Schweigepflicht und die HDS-Vorgaben einzuhalten.

Von Léa B.·Aktualisierung 2026-06-15·Unter Windows, macOS und Linux getestet

#HDS-Rahmen und medizinische Schweigepflicht

Die medizinische Schweigepflicht (Artikel L.1110-4 des französischen Gesetzbuchs für öffentliche Gesundheit) gilt für jedes Dokument, das Gesundheitsinformationen enthält, anhand derer eine Person identifiziert werden kann, einschließlich Transkriptionen von Audioaufnahmen. Sobald Patientendaten außerhalb der Praxis oder des Krankenhauses verarbeitet werden, muss der Hosting-Anbieter HDS-zertifiziert sein (nach dem ASIP/ANS-Referenzrahmen). Konkret bedeutet das: Wenn Sie eine Konsultation an eine Cloud-API ohne HDS-Zertifizierung senden — Whisper von OpenAI, Claude oder eine beliebige Plattform für die breite Öffentlichkeit —, bewegen Sie sich außerhalb des rechtlichen Rahmens, selbst bei einem Test.

Die Gegenmaßnahme: Weder die Audiodaten noch die Transkription jemals aus dem Bereich herausgeben, den Sie kontrollieren. Genau das ermöglicht eine lokale LLM-Pipeline für medizinische Transkription: Der Inferenzrechner steht in der Praxis, die Festplatte ist verschlüsselt, das Netzwerk ist isoliert. Kein Hosting-Anbieter, keine Zulassung zu beantragen.

!
Cloud ohne HDS = außerhalb des zulässigen Rahmens
Viele medizinische Fachkräfte nutzen ChatGPT oder eine gehostete Whisper-Instanz, um Zeit zu sparen. Das ist eine Verletzung der beruflichen Schweigepflicht, die disziplinarrechtlich (Artikel 4 des Code de déontologie médicale) und strafrechtlich (Artikel 226-13 des Code pénal) verfolgt werden kann. Bei einem ARS-Audit lässt sich dies anhand der ausgehenden Datenströme leicht erkennen.

#100 % lokale Architektur

Das Kit für lokale KI in Unternehmen

Lokale KI am Arbeitsplatz bereitstellen: DSGVO, AI Act, Mehrbenutzerarchitektur, Kosten, Memo für die Leitung.

  • Lebenslanger Online-Zugang
  • PDF + Dateien
  • Lebenslange Updates

Die Pipeline besteht aus vier Bausteinen, die alle lokal laufen: Audioaufnahme → Whisper-large-v3 → LLM mit SOAP-Vorlage → Export in die Praxissoftware (LGC) oder das DMP.

Aufnahme
Ansteckmikrofon oder USB-Mikrofon mit Nierencharakteristik, zwischen behandelnder Person und Patient aufgestellt. Kein Bluetooth (Latenz und Kompression). Aufnahme im WAV-Format mit 16 kHz, mono.
Transkription
Whisper-large-v3 (OpenAI, offene Modellgewichte, MIT-Lizenz), ausgeführt über faster-whisper auf einer lokalen GPU. Das Modell ist in den Arbeitsspeicher geladen, die Audiodaten werden nach der Transkription gelöscht.
Strukturierung
Llama 4 Scout (17B-A2B, MoE) oder Qwen3-14B, bereitgestellt über Ollama. Das LLM verarbeitet die Transkription und erstellt einen SOAP-Bericht (Subjective, Objective, Assessment, Plan).
Export
Der Bericht wird über die Zwischenablage, einen HL7-CDA-Kurzbefehl oder eine API, sofern verfügbar, in das LGC (Weda, Medistory, AxiSanté, Doctolib Pro, Maiia) eingefügt.
i
Warum Whisper-large-v3 und nicht v3-turbo
Whisper-large-v3-turbo ist schneller, schneidet bei medizinischem Französisch jedoch um 1 bis 2 WER-Punkte (Word Error Rate) schlechter ab und beeinträchtigt vor allem die Erkennung von Eigennamen und Dosierungsangaben. Im klinischen Kontext hat Genauigkeit Vorrang vor Geschwindigkeit – zumal die Konsultation bereits vorbei ist, wenn die Pipeline gestartet wird.

#Hardware- und Software-Voraussetzungen

GPU
Mindestens eine RTX 4070 mit 12 GB; eine RTX 4080 mit 16 GB oder eine RTX 4090 mit 24 GB bietet komfortable Reserven. Whisper-large-v3 belegt etwa 3 GB VRAM, der 14B-LLM in Q4_K_M benötigt rund 9 GB.
Alternative für Mac
Ein Mac mini M4 Pro mit 48 GB vereinheitlichtem Arbeitsspeicher kann den gesamten Stack ausführen. Ideal für eine freiberufliche Praxis: leise, im Leerlauf ohne laufenden Lüfter, geringer Stromverbrauch.
Speicher
Mit LUKS (Linux), BitLocker (Windows Pro) oder FileVault (macOS) verschlüsselte NVMe-SSD. 100 GB reichen aus: Modelle ~25 GB, der Rest für temporäre Transkriptionen.
Netzwerk
Der Inferenzrechner befindet sich in einem VLAN, das vom Patienten-WLAN getrennt ist. Im Produktionsbetrieb ist kein ausgehender Internetzugriff erlaubt – nur während beaufsichtigter Updates.
Software
Ollama (≥ 0.5), um das LLM unter http://localhost:11434 bereitzustellen, faster-whisper (Python) für die Transkription, ffmpeg für die Audiokonvertierung.
→
Schrittweise Netzisolierung
Beginnen Sie mit einer einfachen Firewall-Regel, die den gesamten ausgehenden Datenverkehr blockiert, außer zu den Update-Domains (ollama.com, huggingface.co, Paketquellen der Distribution). Deaktivieren Sie die Regel ausschließlich während genehmigter und dokumentierter Wartungsfenster.

#1. Whisper-large-v3 für französischsprachige medizinische Konsultationen

faster-whisper ist ein CTranslate2-basierter Fork, der bei gleicher Qualität 4- bis 5-mal schneller ist als die Python-Referenzimplementierung. Er unterstützt dieselben Modelle und stellt eine einfache API bereit.

Installation
python -m venv ~/venv-medtranscript
source ~/venv-medtranscript/bin/activate
pip install faster-whisper==1.1.0 ffmpeg-python

# Téléchargement du modèle (téléchargé une fois, ~3 Go)
python -c "from faster_whisper import WhisperModel; WhisperModel('large-v3', device='cuda', compute_type='float16')"

Der Transkriptionscode selbst besteht aus wenigen Zeilen. Beachten Sie die Anweisung language='fr', die die automatische Spracherkennung deaktiviert und Fehlinterpretationen zu Beginn der Konsultation vermeidet.

transcribe.py
from faster_whisper import WhisperModel
import sys, pathlib

AUDIO = pathlib.Path(sys.argv[1])
model = WhisperModel('large-v3', device='cuda', compute_type='float16')

segments, info = model.transcribe(
    str(AUDIO),
    language='fr',
    vad_filter=True,             # coupe les silences
    vad_parameters={'min_silence_duration_ms': 500},
    beam_size=5,
    initial_prompt=(
        'Consultation médicale en français. Vocabulaire clinique, '
        'noms de molécules, posologies. Termes courants : doliprane, '
        'amoxicilline, lévothyrox, ECG, IRM, NFS, CRP, HbA1c.'
    ),
)

transcript = '\n'.join(seg.text.strip() for seg in segments)
OUT = AUDIO.with_suffix('.txt')
OUT.write_text(transcript, encoding='utf-8')
print(f'Transcription : {OUT}')
→
Die Rolle des initial_prompt
Whisper richtet seine Dekodierung nach diesem Prompt aus. Das Auflisten von Fachvokabular, gängigen Molekülen und biologischen Akronymen verbessert die Erkennung erheblich — das ist die Low-Tech-Variante eines Fine-Tunings. Passen Sie die Liste an Ihr Fachgebiet an (Kardiologie, Pädiatrie, Gynäkologie).

Auf einer RTX 4080 lässt sich eine 15-minütige medizinische Konsultation in etwa 90 Sekunden transkribieren. Die ursprüngliche Audiodatei wird unmittelbar danach gelöscht – das Transkript reicht aus, die Audiodatei stellt ein unnötiges Risiko dar.

#2. LLM und SOAP-Vorlage

Der SOAP-Bericht ist der De-facto-Standard: Subjective (Anlass, Beschwerden des Patienten), Objective (klinische Untersuchung, Vitalparameter, ergänzende Untersuchungen), Assessment (Diagnose oder Hypothesen), Plan (Verordnungen, anstehende Untersuchungen, weitere Betreuung). Das LLM wird angewiesen, diese Vorlage strikt auszufüllen, ohne etwas zu erfinden.

Modellwahl
# Option 1 — Llama 4 Scout (multimodal, 17B MoE, ~10 Go en Q4)
ollama pull llama4:scout

# Option 2 — Qwen3 14B (excellent en français)
ollama pull qwen3:14b

# Option 3 — Mistral Magistral 24B si VRAM ≥ 16 Go
ollama pull magistral:24b

Der System-Prompt gibt einen strengen Rahmen vor: keine erfundenen Inhalte, wörtliche Zitate bei Unsicherheit und medizinische Fachsprache auf Französisch.

system_prompt_soap.txt
Tu es un assistant médical chargé de structurer une transcription
de consultation au format SOAP. Tu écris en français médical clair.

RÈGLES IMPÉRATIVES :
1. N'INVENTE JAMAIS de symptôme, diagnostic, traitement ou posologie
   qui ne figure pas explicitement dans la transcription.
2. En cas d'information ambiguë, écris littéralement :
   "À préciser par le praticien : [extrait textuel de la transcription]".
3. Conserve les unités exactes (mg, mL, fois/jour). Ne convertis rien.
4. Pour toute posologie, cite mot pour mot la phrase d'origine
   entre guillemets dans la section Plan.
5. Ne formule pas de diagnostic définitif si le praticien ne l'a pas
   posé. Utilise "hypothèse diagnostique" ou "à confirmer par...".
6. Garde uniquement ce qui relève de la consultation. Ignore les
   éléments hors propos (conversations annexes, interruptions).

STRUCTURE DE SORTIE (Markdown, exactement ces sections) :

## Subjective
- Motif de consultation :
- Histoire de la maladie actuelle :
- Antécédents pertinents évoqués :
- Traitements en cours évoqués :

## Objective
- Examen clinique :
- Constantes mentionnées :
- Examens complémentaires cités :

## Assessment
- Hypothèse(s) diagnostique(s) :
- Diagnostics différentiels évoqués :

## Plan
- Prescriptions (citer textuellement) :
- Examens complémentaires demandés :
- Conseils donnés au patient :
- Suivi prévu :

À la fin, ajoute une section :

## Points à vérifier par le praticien
Liste des éléments douteux, manquants ou nécessitant validation.
!
Dosierung: keine Toleranz für Erfindungen
Ein von einem LLM erzeugter Dosierungsfehler kann tödlich sein. Die Regel, wörtlich und in Anführungszeichen zu zitieren, ist nicht verhandelbar. Wenn das Modell eine Dosis umformuliert, haben Sie ein Problem – wechseln Sie das Modell oder verschärfen Sie die Vorgaben im Prompt.

#3. Ende-zu-Ende-Pipeline

Auf die Transkription folgt die Strukturierung über die lokale REST-API von Ollama. Das Skript bleibt kompakt und überprüfbar — etwa 40 Zeilen, und das ist Absicht: weniger Code, weniger Angriffsfläche.

pipeline_soap.py
import sys, json, pathlib, requests, hashlib, datetime
from faster_whisper import WhisperModel

AUDIO = pathlib.Path(sys.argv[1])
MODEL_LLM = 'qwen3:14b'
SYS_PROMPT = pathlib.Path('system_prompt_soap.txt').read_text('utf-8')

# --- 1. Transcription locale
whisper = WhisperModel('large-v3', device='cuda', compute_type='float16')
segments, _ = whisper.transcribe(str(AUDIO), language='fr', vad_filter=True)
transcript = '\n'.join(s.text.strip() for s in segments)

# --- 2. Structuration SOAP via Ollama (localhost uniquement)
resp = requests.post(
    'http://localhost:11434/api/chat',
    json={
        'model': MODEL_LLM,
        'messages': [
            {'role': 'system', 'content': SYS_PROMPT},
            {'role': 'user', 'content': transcript},
        ],
        'options': {'temperature': 0.1, 'num_ctx': 8192},
        'stream': False,
    },
    timeout=600,
)
soap = resp.json()['message']['content']

# --- 3. Sortie + hash d'intégrité pour le journal d'audit
ts = datetime.datetime.now().isoformat(timespec='seconds')
sha = hashlib.sha256(soap.encode('utf-8')).hexdigest()[:16]
out = AUDIO.with_suffix('.soap.md')
out.write_text(
    f'<!-- généré le {ts} — modèle {MODEL_LLM} — sha256:{sha} -->\n\n{soap}',
    encoding='utf-8',
)

# --- 4. Effacement immédiat de l'audio et de la transcription brute
AUDIO.unlink()
print(f'Compte-rendu : {out}')
→
Niedrige Temperatur, großzügiges Kontextfenster
Eine Temperatur von 0.1 schränkt die Kreativität stark ein – das ist hier erwünscht. num_ctx 8192 deckt eine lange Konsultation ohne Informationsverlust ab. Wenn Sie komplexe Fälle behandeln (Psychiatrie, Neurologie mit ausführlicher Anamnese), erhöhen Sie den Wert auf 16384 und wählen Sie ein Modell, dessen natives Kontextfenster dies erlaubt (Llama 4 Scout lässt sich bis zu 256k problemlos nutzen).

Eine 15-minütige medizinische Konsultation durchläuft die gesamte Pipeline auf einer RTX 4080 in weniger als 3 Minuten. Der Bericht .soap.md ist bereit, in das LGC eingefügt zu werden.

#4. Integration in die Praxissoftware

Drei Integrationsstufen je nach Ihrem LGC:

  1. 01
    Ebene 1 — Zwischenablage
    Das Skript kopiert automatisch den Bericht (pyperclip). Die behandelnde Fachperson fügt ihn mit zwei Klicks in das LGC ein. Kompatibel mit 100 % der LGC, ohne Integration aufseiten des Softwareanbieters. Das ist der empfohlene Ausgangspunkt.
  2. 02
    Stufe 2 — Abkürzung über HL7 CDA
    Der Markdown-Auswertung wird über ein pandoc-Skript mit XML-Vorlage in CDA R2 (Clinical Document Architecture) umgewandelt und anschließend über die Dokumentimportfunktion des LGC importiert. Kompatibel mit Weda, Medistory, AxiSanté, die CDA akzeptieren.
  3. 03
    Stufe 3 — Native API des LGC
    Einige Softwareanbieter (Doctolib Pro, Maiia) stellen eine API zum Eintragen medizinischer Beobachtungen bereit. Die Pipeline überträgt den Bericht direkt in die über die INS identifizierte Patientenakte. Das ist die bequemste Lösung, erfordert aber die Zustimmung des Anbieters und eine CPS-Authentifizierung.
i
Nationaler Gesundheitsidentifikator (INS)
Wenn Sie die Zuordnung zum richtigen Patienten automatisieren, verwenden Sie die qualifizierte INS-Kennung und nicht die interne Aktennummer. Sie ist die einzige Kennung, die bei einem Wechsel des LGC erhalten bleibt und rechtlich geltend gemacht werden kann. Die INS-Kennung wird über den Onlinedienst INSi abgerufen.

#Compliance und Audit-Protokollierung

Die Nutzung eines Hilfsmittels zur Erstellung medizinischer Texte muss dokumentiert werden. Mindestens drei Angaben gehören in die Patientenakte:

Hinweis auf KI-Unterstützung bei der Texterstellung
Eine Zeile am Ende des Berichts: „Strukturierter Bericht, erstellt mit Unterstützung eines lokalen KI-Modells (Qwen3-14B, Version 2026-04-12). Validiert durch Dr. [...] am [Datum].“ Dieser Hinweis dient der Nachvollziehbarkeit.
Zugriffsprotokoll
Jede Ausführung der Pipeline wird lokal protokolliert (wer, wann, welche Audioaufnahme, welches Modell, Hash des Berichts). Das Protokoll lässt nur das Anhängen neuer Einträge zu, ist signiert und wird 10 Jahre lang aufbewahrt (Aufbewahrungsdauer der Patientenakte).
Datenschutz-Folgenabschätzung nach DSGVO
Stellen Sie eine Auswirkungsanalyse (Artikel 35 DSGVO) für die Verarbeitung „KI-gestützte Transkription“ ein. Die 100%-ige Lokalität vereinfacht die Analyse: Kein Datenübertragung außerhalb der EU, keine Drittverträge, eindeutige Zweckbestimmung.
Information des Patienten
Der Aushang im Wartezimmer und der Hinweis im Aufnahmeformular müssen auf den Einsatz eines Hilfsmittels zur Transkription hinweisen. Der Patient kann dies ablehnen – sehen Sie einen alternativen Workflow vor.
Verschlüsselung ruhender Daten
Der gesamte Datenträger ist verschlüsselt. Die Berichte werden im Patientenordner des LGC gespeichert, nicht im Dateisystem des Inferenzrechners. Löschen Sie die temporären .soap.md-Dateien am Ende des Tages.
Überwachte Aktualisierungen
Jede Modellaktualisierung (Whisper, LLM) löst eine erneute Validierung anhand eines Satzes von 10 anonymisierten Testkonsultationen aus. Bekannter Regressionsfehler = keine Bereitstellung.
!
Löschen der Datei ≠ sicheres Löschen
Ein unlink() löscht den Inode, lässt die Blöcke auf einer unverschlüsselten SSD aber wiederherstellbar. Die vollständige Laufwerksverschlüsselung (LUKS/FileVault/BitLocker) macht die Löschung in der Praxis unumkehrbar. Verzichten Sie nicht darauf.

#Weiterführende Informationen

Diese Pipeline deckt den täglichen Einsatz einer selbstständig tätigen klinischen Fachperson oder einer kleineren Krankenhausabteilung ab. Drei naheliegende Erweiterungen: die Bereitstellung auf mehreren Arbeitsplätzen mit Docker und einem Reverse Proxy für die CPS-Authentifizierung standardisieren, ein lokales RAG auf Basis der HAS-Empfehlungen zur Unterstützung des Assessments hinzufügen und die Netzwerksicherheit bis hin zur vollständigen Netzwerkisolierung (Air-Gap) verschärfen.

Hat Ihnen dieser Guide geholfen?

Haben Sie Feedback, einen Fehler entdeckt oder möchten Sie etwas präzisieren? Geben Sie uns Bescheid – so wird der Guide für alle besser.