feat: cache Ollama + parallélisation ThreadPool + filtrage DAS renforcé + modules GHM/CPAM/export RUM

- Cache persistant JSON thread-safe pour les résultats Ollama (invalidation par modèle)
- Parallélisation des appels Ollama (ThreadPoolExecutor, 2 workers)
- 6 nouvelles règles de filtrage DAS parasites (doublons, ponctuation, OCR, labo, fragments)
- Client Ollama centralisé (mode JSON natif + retry)
- Module GHM (estimation CMD/sévérité)
- Module contrôle CPAM (parser + contre-argumentation RAG)
- Export RUM (format RSS)
- Viewer enrichi (détail dossier)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
dom
2026-02-12 13:44:34 +01:00
parent a00e5f1147
commit a58398f5d4
25 changed files with 2872 additions and 97 deletions

View File

@@ -90,7 +90,7 @@ class TestEnrichDossierSeverity:
Diagnostic(texte="Fibrillation auriculaire", cim10_suggestion="I48.9"),
Diagnostic(texte="Obésité", cim10_suggestion="E66.0"),
]
alertes = enrich_dossier_severity(dp, das)
alertes, cma_count, cms_count = enrich_dossier_severity(dp, das)
# I48.9 = CMA probable
assert das[0].est_cma is True
@@ -101,9 +101,21 @@ class TestEnrichDossierSeverity:
# Au moins une alerte CMA
assert any("CMA" in a for a in alertes)
assert cma_count >= 1
def test_dp_severity_set(self):
dp = Diagnostic(texte="Sepsis sévère", cim10_suggestion="A41.9")
alertes = enrich_dossier_severity(dp, [])
alertes, cma_count, cms_count = enrich_dossier_severity(dp, [])
assert dp.niveau_severite == "severe"
assert dp.est_cma is True
def test_cms_detection(self):
"""CMS détecté quand CMA + sévérité severe."""
dp = Diagnostic(texte="Pancréatite", cim10_suggestion="K85.1")
das = [
Diagnostic(texte="Sepsis sévère", cim10_suggestion="A41.9"),
]
alertes, cma_count, cms_count = enrich_dossier_severity(dp, das)
assert das[0].est_cma is True
assert das[0].est_cms is True
assert cms_count == 1