dom
50a77c9f61
feat: RAG CPAM dédié avec requêtes multi-ciblées + prompt 3 axes
...
- Nouvelle search_similar_cpam() : priorité Guide Méthodo, seuil 0.40,
déduplication par code CIM-10, fetch élargi top_k*3
- _search_rag_for_control() refactoré : 2-3 requêtes ciblées (codes
contestés, argument CPAM, contexte clinique) au lieu d'1 fourre-tout
- Fusion dédupliquée par (document, code, page), top 10 résultats
- Prompt CPAM enrichi : 3 axes (médical, asymétrie, réglementaire),
section asymétrie d'information, format réponse structuré
- 9 nouveaux tests unitaires pour la logique RAG multi-requêtes
Élimine les sources CIM-10 hors-sujet (F45, F98.1, F50.5 sur pancréatite)
au profit de résultats Guide Méthodo et référentiels pertinents.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-15 11:08:15 +01:00
dom
aa397d5360
feat: configuration externalisée via .env + audit requirements
...
- Externalise 13 variables de config via python-dotenv (chemins PDF,
modèles Ollama/embedding/NER, FINESS, seuils) avec défauts identiques
- Centralise EMBEDDING_MODEL dans config.py (était hardcodé en 3 endroits)
- Ajoute .env.example documenté et .env au .gitignore
- Ajoute openpyxl et pandas manquants au requirements.txt
- Ajoute data/referentiels au mkdir de run.sh
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-13 19:46:33 +01:00
dom
0d3cb83f12
fix: fallback CPU embedding + protection CPAM contre crash OOM
...
- SentenceTransformer : fallback CPU si CUDA OOM (Ollama peut occuper la VRAM)
- Bloc CPAM dans main.py : try/except pour éviter crash fatal du pipeline
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-13 06:11:38 +01:00
dom
e90450903e
feat: enrichissement CIM-10 sous-codes + normes biologiques dans prompt DAS
...
Piste 1 : ajout de cim10_supplements.json (40 sous-codes E10/E11/E13/F10)
fusionné au chargement par load_dict() — E11.9 et autres ne sont plus rejetés.
Piste 2 : export BIO_NORMALS depuis cim10_extractor, inclusion des plages
de référence [N: min-max] dans le contexte LLM et règle explicite dans le
prompt DAS pour éviter les hallucinations sur valeurs biologiques normales.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-12 23:46:42 +01:00
dom
f44216b95b
feat: pass LLM hybride pour DAS + interface admin référentiels RAG
...
Chantier 1 — Extraction DAS par LLM :
- Nouveau prompt expert DIM dans rag_search.py (extract_das_llm)
- Phase 4 dans cim10_extractor.py : détection DAS supplémentaires avant enrichissement RAG
- Cache persistant (clé hash du texte), validation CIM-10, déduplication
- Activé uniquement avec use_rag=True (--no-rag le désactive)
Chantier 2 — Admin référentiels :
- Config : REFERENTIELS_DIR, UPLOAD_MAX_SIZE_MB, ALLOWED_EXTENSIONS
- Chunking générique (PDF/CSV/Excel/TXT) + ajout incrémental FAISS dans rag_index.py
- ReferentielManager CRUD dans viewer/referentiels.py
- 5 routes Flask (listing, upload, indexation, suppression, rebuild)
- Template admin avec tableau interactif + lien sidebar
Fix : if cache → if cache is not None (OllamaCache vide évaluait à False)
410 tests passent (27 nouveaux, 0 régression).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-12 23:12:39 +01:00
dom
a58398f5d4
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 >
2026-02-12 13:44:34 +01:00
dom
86d7ec5ea4
feat: mode JSON natif Ollama + modèle gemma3:12b + retry
...
- Ajout format:"json" dans l'appel API Ollama (force sortie JSON valide)
- Prompt restructuré : raisonnement en champs JSON structurés
(analyse_clinique, codes_candidats, discrimination, regle_pmsi)
- Parser simplifié : json.loads direct + reconstitution du raisonnement
- Suppression du marqueur ###RESULT### (obsolète avec mode JSON)
- Retry automatique (1 tentative) si parsing échoue
- Stripping des blocs markdown ```json pour compatibilité multi-modèles
- num_predict 1200→2500, modèle gemma3:12b (tient en 12Go VRAM)
- Résultat : 0% échec parsing (était 11% avant)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-12 02:19:09 +01:00
dom
931b6c5d1c
feat: embeddings sur GPU (CUDA) pour l'indexation et la recherche RAG
...
Détection automatique GPU/CPU avec fallback. Index FAISS reconstruit
en 1min (GPU) au lieu de 16min (CPU).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-11 23:42:46 +01:00
dom
7e69f994b0
feat: dictionnaire CCAM complet (8 257 codes) + index FAISS enrichi + validation actes
...
Phase 2 (CCAM) :
- Nouveau src/medical/ccam_dict.py : build depuis CCAM_V81.xls via xlrd, lookup 3 niveaux, validation codes
- Intégration dans l'extracteur : fallback ccam_lookup + _validate_ccam() avec alertes
- CLI : --build-ccam-dict, --rebuild-index
Phase 3 (FAISS) :
- Chunks CCAM depuis le dictionnaire JSON (priorité sur le PDF)
- Chunks CIM-10 index alphabétique (terme → code)
- Priorisation cim10_alpha dans la recherche RAG
Viewer : endpoint reprocess + bloc scripts
Tests : 8 tests CCAM + tests raisonnement RAG (161 passed)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-11 11:41:39 +01:00
dom
9df4465fef
feat: règles métier T2A Phase 1 — exclusions diagnostiques, sévérité CMA et alertes codage
...
Ajout des règles d'exclusion symptôme (R00-R99) vs diagnostic précis (Chapitres I-XIV),
détection heuristique de sévérité CMA sur 25 racines CIM-10, et affichage des alertes
de codage dans le viewer Flask. 153 tests, 0 régression.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-11 08:53:14 +01:00
dom
037d255aa0
feat: ajout viewer Flask CIM-10 avec config Ollama centralisée et chronométrage
...
Ajoute une interface web Flask pour visualiser les dossiers médicaux CIM-10,
avec temps de traitement par PDF, sélecteur de modèle Ollama, et centralisation
de la config Ollama dans src/config.py.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-10 20:11:07 +01:00
dom
4d6fbef2b9
feat: ajout RAG CIM-10 avec FAISS + Ollama
...
Implémente un système RAG (Retrieval Augmented Generation) qui indexe
les documents de référence ATIH (CIM-10 FR 2026, Guide Métho MCO,
CCAM PMSI) et utilise Ollama (mistral-small3.2:24b) pour justifier
et valider le codage CIM-10 des diagnostics.
- Nouveaux modèles Pydantic : RAGSource, Diagnostic étendu (confidence,
justification, sources_rag) — rétrocompatible
- Module rag_index.py : chunking des 3 PDFs, embedding sentence-camembert-large,
index FAISS IndexFlatIP (3630 vecteurs)
- Module rag_search.py : recherche FAISS + appel Ollama avec fallback double
- Flag CLI --no-rag pour désactiver l'enrichissement RAG
- 18 nouveaux tests (88/88 passent)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-10 17:47:08 +01:00