Aller au contenu

Gestion des ontologies

🟢🔵 Page admin lecture seule : pour chaque source (Mondo CC0 · SNOMED Int+CH · UMLS), elle montre statut, version, fraîcheur (fenêtre 180 j, clause 6.2 → current / update_recommended / overdue), couverture multilingue (comptes EN/FR/DE/IT par axe), conformité licence (mention 8.3 présente, édition officielle 2.4, BYO/gitignoré) et la provenance (recette + sha de build). Invariant respecté : comptes, jamais de libellés.

🔵 Pour éviter de dériver/scanner à chaque lecture, les builders émettent des champs déclarés dans *.meta.json : coverage_by_language, latest_effective_time, update_window_days, imported_at, provenance{builder,command,git_sha}. Un backfill (scripts/backfill_meta.py) pose ces champs sur le volume sans reprocess des dumps. Le dashboard lit le déclaré avec fallback sur le dérivé (dégradation gracieuse).

🔵🟢 L’opérateur dépose un dump dans le dossier staging (monté RO) ; l’UI le détecte, valide, compare à l’actif, puis (selon l’ontologie) propose un déclenchement de build.

OntologieDétectionTrigger UI
SNOMED CT (RF2)✅ runner host (build réel ~24 s vérifié)
UMLS (Metathesaurus)✅ runner host (carte candidate + restart API)
Mondo (mondo.json, CC0)✖ manuel (KB linker = rebuild xmen/FAISS GPU)

Détails exécution (runner, activation in-place, restart API) : Opérations & infra. Décisions : ADR-010/014.

🔵 Les recettes versionnées (jamais le contenu) :

BuilderEntréeSortie
kb_builders.snomedRF2 Int+CHindex topo/morpho + meta
kb_builders.diseasemondo.jsonindex maladie + mondo.meta.json
scripts/build_kb_indexJSONL SNOMED/Mondoindex xmen (ngram + FAISS)
scripts/build_umls_candidate_mapMRCONSOcarte candidate voie 1.5 (licenciée)

L’invariant licence (Modèle de licence (open-core)) : la recette est publiable, le contenu produit reste hors-repo (gitignoré, BYO).