feat: traçabilité source systématique + viewer interactif

Ajoute source_page/source_excerpt à tous les types (biologie, imagerie,
traitements, actes CCAM, antécédents, complications). Convertit antecedents
et complications en types structurés (Antecedent/Complication) avec
validators backward-compat pour les vieux JSON. Étend _apply_source_tracking
à tous les éléments du dossier. Ajoute un endpoint /api/source-text/ et un
modal interactif dans le viewer avec surlignage du texte source.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
dom
2026-02-18 20:59:50 +01:00
parent fe22c0f0f5
commit 40934fdc39
10 changed files with 500 additions and 47 deletions

View File

@@ -10,7 +10,9 @@ import logging
from ..config import (
ActeCCAM,
Antecedent,
BiologieCle,
Complication,
Diagnostic,
DossierMedical,
Imagerie,
@@ -251,7 +253,7 @@ def merge_dossiers(dossiers: list[DossierMedical]) -> DossierMedical:
ant_seen: set[str] = set()
for d in dossiers:
for a in d.antecedents:
key = a.lower().strip()
key = a.texte.lower().strip()
if key not in ant_seen:
merged.antecedents.append(a)
ant_seen.add(key)
@@ -260,7 +262,7 @@ def merge_dossiers(dossiers: list[DossierMedical]) -> DossierMedical:
comp_seen: set[str] = set()
for d in dossiers:
for c in d.complications:
key = c.lower().strip()
key = c.texte.lower().strip()
if key not in comp_seen:
merged.complications.append(c)
comp_seen.add(key)