Transcription médicale et LLM local : conformité données patient
Dicter une consultation, obtenir une transcription propre, puis un compte-rendu SOAP prêt à coller dans le dossier patient — sans qu'aucune seconde d'audio ne quitte le cabinet. C'est la promesse que ce guide rend opérationnelle : un pipeline transcription médicale LLM local HDS bâti sur Whisper-large-v3 et un modèle 14B+ (Llama 4 ou Qwen3), conçu pour rester en conformité avec le secret médical et le cadre HDS.
#Cadre HDS et secret médical
Le secret médical (article L.1110-4 du Code de la santé publique) s'applique à tout document contenant une information identifiante de santé, transcription audio comprise. Dès qu'une donnée patient est traitée hors de l'enceinte du cabinet ou de l'hôpital, l'hébergeur doit être certifié HDS (référentiel ASIP/ANS). Concrètement, envoyer une consultation à une API cloud non HDS — Whisper d'OpenAI, Claude, ou n'importe quelle plateforme grand public — vous met hors-cadre, même pour un test.
La parade : ne jamais sortir l'audio ni la transcription du périmètre que vous maîtrisez. C'est précisément ce que permet un pipeline transcription médicale LLM local : la machine d'inférence est dans le cabinet, le disque est chiffré, le réseau est isolé. Pas d'hébergeur, pas d'agrément à demander.
#Architecture 100% locale
Le pipeline tient en quatre briques, toutes locales : capture audio → Whisper-large-v3 → LLM avec template SOAP → export vers le logiciel de cabinet (LGC) ou le DMP.
- Capture
- Micro-cravate ou micro USB cardioïde posé entre praticien et patient. Pas de Bluetooth (latence et compression). Enregistrement en WAV 16 kHz mono.
- Transcription
- Whisper-large-v3 (OpenAI, poids open, licence MIT) exécuté via faster-whisper sur GPU local. Modèle chargé en mémoire, audio détruit après transcription.
- Structuration
- Llama 4 Scout (17B-A2B, MoE) ou Qwen3-14B servi par Ollama. Le LLM consomme la transcription et produit un compte-rendu SOAP (Subjective, Objective, Assessment, Plan).
- Export
- Le compte-rendu est inséré dans le LGC (Weda, Medistory, AxiSanté, Doctolib Pro, Maiia) par presse-papier, raccourci HL7 CDA ou API si disponible.
#Prérequis matériel et logiciel
- GPU
- RTX 4070 12 Go minimum, RTX 4080 16 Go ou RTX 4090 24 Go confortables. Whisper-large-v3 occupe ~3 Go de VRAM, le LLM 14B en Q4_K_M tourne autour de 9 Go.
- Alternative Mac
- Mac mini M4 Pro 48 Go de RAM unifiée fait tourner la stack complète. Idéal pour un cabinet libéral : silencieux, fanless en idle, faible consommation.
- Stockage
- SSD NVMe chiffré LUKS (Linux), BitLocker (Windows Pro) ou FileVault (macOS). 100 Go suffisent : modèles ~25 Go, le reste pour les transcriptions temporaires.
- Réseau
- Le poste d'inférence est sur un VLAN séparé du Wi-Fi patient. Pas d'accès Internet sortant en production — uniquement pendant les mises à jour, supervisées.
- Logiciel
- Ollama (≥ 0.5) pour servir le LLM sur http://localhost:11434, faster-whisper (Python) pour la transcription, ffmpeg pour la conversion audio.
#1. Whisper-large-v3 sur consultations FR
faster-whisper est un fork CTranslate2 4 à 5× plus rapide que l'implémentation Python de référence, à qualité identique. Il accepte les mêmes modèles et expose une API simple.
Le code de transcription en lui-même tient en quelques lignes. Notez la consigne language='fr' qui désactive la détection automatique et évite des dérives en début de consultation.
Sur une RTX 4080, une consultation de 15 minutes se transcrit en environ 90 secondes. Le fichier audio source est supprimé immédiatement après — la transcription est suffisante, l'audio pose un risque inutile.
#2. LLM et template SOAP
Le compte-rendu SOAP est le standard de fait : Subjective (motif, plaintes du patient), Objective (examen clinique, constantes, examens complémentaires), Assessment (diagnostic ou hypothèses), Plan (prescriptions, examens à venir, suivi). On demande au LLM de remplir ce template strictement, sans inventer.
Le system prompt impose un cadre strict : pas d'invention, citation littérale en cas d'incertitude, langue française médicale.
#3. Pipeline bout-en-bout
On enchaîne transcription puis structuration via l'API REST locale d'Ollama. Le script reste compact et auditable — environ 40 lignes, ce qui est volontaire : moins de code, moins de surface d'attaque.
Une consultation de 15 minutes complète le pipeline en moins de 3 minutes sur RTX 4080. Le compte-rendu .soap.md est prêt à être collé dans le LGC.
#4. Intégration logiciel cabinet
Trois niveaux d'intégration selon votre LGC :
- 01Niveau 1 — Presse-papierLe script copie automatiquement le compte-rendu (pyperclip). Le praticien colle dans le LGC en deux clics. Compatible avec 100% des LGC, zéro intégration côté éditeur. C'est le point de départ recommandé.
- 02Niveau 2 — Raccourci HL7 CDALe compte-rendu Markdown est converti en CDA R2 (Clinical Document Architecture) par un script pandoc + template XML, puis importé via la fonction d'import documentaire du LGC. Compatible avec Weda, Medistory, AxiSanté qui acceptent CDA.
- 03Niveau 3 — API native du LGCCertains éditeurs (Doctolib Pro, Maiia) exposent une API d'insertion d'observation. Le pipeline pousse directement le compte-rendu dans le dossier patient identifié par INS. C'est le plus confortable mais demande un accord éditeur et une authentification CPS.
#Conformité et journalisation d'audit
L'usage d'un outil d'aide à la rédaction médicale doit être documenté. Trois éléments minimums dans le dossier patient :
- Mention IA d'aide à la rédaction
- Une ligne en pied de compte-rendu : "Compte-rendu structuré assisté par un modèle d'IA local (Qwen3-14B, version 2026-04-12). Validé par le Dr [...] le [date]." Cette mention vaut traçabilité.
- Journal des accès
- Chaque exécution du pipeline est loguée localement (qui, quand, quel audio, quel modèle, hash du compte-rendu). Le log est append-only, signé, conservé 10 ans (durée de conservation du dossier patient).
- DPIA RGPD
- Faites une analyse d'impact (article 35 RGPD) pour le traitement "transcription assistée par IA". Le caractère 100% local simplifie l'analyse : pas de transfert hors-UE, pas de sous-traitant, finalité unique.
- Information du patient
- L'affiche en salle d'attente et la mention dans le formulaire d'accueil doivent indiquer l'usage d'un outil d'aide à la transcription. Le patient peut refuser — prévoyez un workflow alternatif.
- Chiffrement au repos
- Le disque entier est chiffré. Les comptes-rendus sont stockés dans le dossier patient du LGC, pas sur le système de fichiers du poste d'inférence. Purgez les .soap.md temporaires en fin de journée.
- Mises à jour supervisées
- Toute mise à jour de modèle (Whisper, LLM) déclenche une revalidation sur un jeu de 10 consultations-tests anonymisées. Bug de régression connu = non-déploiement.
#Pour aller plus loin
Ce pipeline couvre l'usage quotidien d'un praticien libéral ou d'un service hospitalier de taille modeste. Trois extensions naturelles : industrialiser le déploiement multi-postes avec Docker et un reverse proxy d'authentification CPS, ajouter un RAG local sur les recommandations HAS pour assister l'Assessment, et durcir la sécurité réseau jusqu'à l'air-gap complet.
Un retour, une erreur, une précision ? Faites-nous signe, ça améliore le guide pour tout le monde.