Fonctionnalités
Un moteur de règle déclarative pour les recommandations oncologiques. Plan avec deux pistes alternatives (standard + agressif) sortie, chaque expédition de revendication avec une citation à sa source.
Le contenu clinique est informatif ; les contrôles techniques ne constituent pas une approbation du traitement.
Un profil JSON → deux plans de traitement, toutes les revendications citées.
Pas de LLM dans la décision clinique. Pas de serveur. Patient JSON reste sur la machine. Traitement par profil: 50-200 ms.
# example: DLBCL disease: DLBCL-NOS line_of_therapy: 1L biomarkers: CD79B_mut: true MYC_rearr: false COO: ABC findings: ipi: 3 ecog: 1 ldh_ratio: 1.8
- Algorithme de résolution
- Résultats aplatis
- Eval 671 RedFlags
- Arbre de décision de marche
- matérialiser les pistes
- Résolution des régimes
revise_plan() rafraîchit la recommandation à mesure que de nouveaux biomarqueurs ou découvertes arrivent.Ce qui est dans la base de connaissances
This is an inventory of published records, not a measure of clinical completeness. Disease-level coverage and verification status are shown separately in the matrix below.
Maladies avec des dossiers structurés dédiés.
Rôles de MDT représentés dans l'acheminement.
Régimes structurés, pas ordonnances automatiques.
Fiches de médicaments avec un contexte lisible par machine.
Les tests diagnostiques et moléculaires sont représentés dans le KB.
Ensembles de travail structurés.
Signaux qui nécessitent un deuxième regard d'un clinicien.
Les dossiers de source cités liés aux revendications.
Matrice de couverture
/diseases.html — tableau par maladie: nombre de biomarqueurs / médicaments / indications / drapeaux rouges, 1L+2L marques de contrôle, remplissage % et vérifié %. Groupe par lymphoïde + hématologie myéloïde et tumeurs solides.
/disease_coverage.json.
→ Afficher la matrice
/gallery.html — 448 public examples.
Each contains a full Plan, Diagnostic Brief, or molecular scenario with source links.
Internal QA profiles do not appear in the user-facing library.
→ Afficher des exemples
Traitement des demandes en 6 étapes
Le clinicien alimente le moteur avec un profil JSON. Le moteur effectue 6 étapes séquentielles et retourne un plan avec ≥ 2 pistes (CHARTER §15.2 C6 — alternative jamais cachée).
disease.id + line_of_therapy + disease_state → Algorithme.any_of/all_of/none_of avec seuils).CIViC actionability
Les données de faisabilité utilisées pour venir d'OncoKB — mais leurs TOS bloquaient les dérivés publics non commerciaux (conflit avec CHARTER §2). CIViC (CC0) (WashU). Le moteur lit un instantané YAML local chaque nuit (knowledge_base/hosted/civic/<date>/) — déterministe + hors ligne. Le combineur averti de la fusion gère en détail les mutations pointues (BRAF V600E) et les fusions (BCR::ABL1). Rendre: niveau ESCAT — primaire, indice de données CIVIC — en détail.
Régimes multiphasiques
Regimen.phases est une liste ordonnée de blocs nommés (induction → consolidation → maintenance), chacun avec son propre calendrier de cycle et déclencheur de transition. Protocoles du monde réel (R-CHOP × 6 → maintenance, AML 7+3 → consolidation HiDAC, pont axi-cel → infusion).
bridging_options — bridging regimens between phases (for CAR-T). Legacy single-phase YAMLs auto-wrap into one-phase form via auto_wrap_legacy_components().
Garde de citation — 3 couches
Un système de vérification à trois niveaux — trois endroits où nous captons des revendications non fournies:
| Calque | Où | Quoi |
|---|---|---|
| L1 · Chargeur | Charge de YAML (Pydantique) | SRC-* referential integrity. Unknown SRC-ID → load fail. |
| L2 · Vérificateur | RP (CI) contributeur | Mise à la terre à trois couches : la source existe, la paraphrase mise à la base, l'ancre dans la section. |
| L3 · Rendement | Sortie HTML | Pas de citation → avertir-badge (lentissant) ou sauter la cellule (strict_citation_guard=True). |
Trois façons de courir
python -m knowledge_base.engine.cli --patient profile.json --render plan.html- Non connecté.
Python WASM + micropip + paquet moteur (~2,4 Mo). Chargez d'abord 8-15 s, puis comme un CLI local. Travailleur de service pour hors ligne.
from knowledge_base.engine import generate_plan, revise_plan — EHR / CSV / essais par lots. Apatrides, déterministes.
Ce que le moteur lit d'un profil
Only structured fields with explicit semantics. Unknown fields are ignored — no hidden effects.
| Catégorie | Champs | Comment nous l'utilisons |
|---|---|---|
| Maladie (point d'entrée) | disease.id · icd_o_3_morphology · line_of_therapy · disease_state |
détermine quel algorithme exécuter |
| Mode de diagnostic | suspicion.lineage_hint · tissue_locations · presentation |
active DiagnosticPlan au lieu de Plan |
| Démographie | age · ecog · fit_for_transplant · decompensated_cirrhosis · pregnancy_status |
filtre sur Indication.applicable_to.demographic_constraints |
| Biomarqueurs | tous BIO-X à partir de KB: BIO-CLL-HIGH-RISK-GENETICS, BIO-HCV-RNA, … |
Déclencher RedFlags, filtre Indications, carte vers CIViC |
| Constatations | des centaines de domaines structurés — dominant_nodal_mass_cm, ldh_ratio_to_uln, tp53_mutation, … |
seuils dans les déclencheurs de RedFlag |
| Essais antérieurs | prior_tests_completed: [TEST-IDs] |
exclut les tests déjà terminés de workup_steps |
Ce que le moteur retourne — Plan
| Zone | Sommaire |
|---|---|
tracks[] | ≥2 alternative tracks (default first): indication + regimen (+ phases) + monitoring + supportive_care + contraindications |
access_matrix | par voie: enregistrements, remboursement, fourchettes de coûts, AccessPathway. Alerte si les données de coût datent de > 180 jours. |
experimental_options | troisième voie — enumerate_experimental_options() questions ClinicalTrials.gov v2. cache TTL de 7 jours. |
actionability_hits | CIViC matches with ESCAT-primary + variant, evidence rating, clinical significance, source citations |
fda_compliance | Champs du critère 4 de la FDA : intended_use, patient_population_match, algorithm_summary, automation_bias_warning |
trace | step-by-step walk_algorithm history: step / outcome / branch / fired_red_flags |
warnings | schema/ref errors, time_critical disqualifications, missing data hints, citation-guard warnings |
supersedes / superseded_by | chaîne de version entre plans pour le même patient |
Activé en option : Mémoire sur le traitement des données à caractère personnel — orchestrate_mdt() ajoute les rôles requis/recommandés/facultatifs de 16 spécialistes virtuels + questions ouvertes + graphique de provenance.
Mises à jour du plan — revise_plan()
Trois transitions légales + une interdite. Le plan précédent n'est pas muté — une copie profonde est retournée avec superseded_by par CHARTER §10.2, les anciennes versions persistent indéfiniment.
| De | Changement | Transition | Résultat |
|---|---|---|---|
| Plan diagnostique vN | soupçon seulement | diagnostique → diagnostic | Plan diagnostique v(N+1) |
| Plan diagnostique vN | histologie confirmée | diagnostic → traitement (promotion) | Plan v1 |
| Plan vN | mise à jour avec histologie | traitement → traitement | Plan v(N+1) |
| Plan vN | histologie enlevée | ILEGAL — Valeur erronée, §15.2 C7 | |
Plan.knowledge_base_state.algorithm_version enregistre la version KB → même entrée + même KB = même sortie.
Questions ouvertes — Le moteur refuse de décider sans données
Au lieu d'un défaut silencieux, le moteur indique explicitement les champs manquants et les tests ou rapports nécessaires (MDT_ORCHESTRATOR_SPEC §3). Rendus dans le plan comme une section séparée, jamais caché.
| Code | Déclencheur | Ce que le moteur émet |
|---|---|---|
| Q1 | Histology not confirmed | «Plan de traitement généré par rapport au code ICD-O-3 seulement; confirmer l'histologie primaire avant le traitement» |
| Q2 | Étape manquante | «Lugano/Ann Arbor étape nécessaire pour une stratification du risque confiante» |
| Q3 | Clause RF incomplète | «Panneau cytogénétique incomplet; état à risque élevé évalué avec des données partielles» |
| Q4 | Biomarqueur manquant | «Statut de mutation de l'IGHV + FISH del(17p) nécessaire pour confirmer la recommandation 1L» |
| Q5 | État des résultats manquant | «ECOG requis pour l'évaluation de l'admissibilité aux greffes»; revient à la défaillance conservatrice |
| Q6 | Drug not reimbursed | «D-VRd: daratumumab not currently reimbursed; verify funding pathway» |
| DQ1-4 | Mode diagnostique : tissu / lignée / présentation / hypothèses manquantes | réduit la confiance dans la correspondance du bilan diagnostique ; lineage_hint et le tissu sont déterminants |
Lacunes de personnalisation — délibérées
«Personnalisation» dans OpenOnco est une sélection basée sur des règles d'un catalogue fixe, pas de la génération AI. Choix architectural délibéré (CHARTER §8.3).
Pas de calcul de la dose par patient
Magasins de régime la dose standard (bortezomib 1.3 mg/m²), not multiplied by patient BSA, not adjusted automatically for CrCl 30. By design — to avoid FDA device classification.
No response-adapted cycles
Épingles de régime total_cycles: 6 + 2 maintenance. Not adapted automatically by response (PR vs CR after PET2). Re-staging via a separate revise_plan.
Genomic matching limited to CIViC
Outside CIViC (rare, novel variants) emits a warning «no actionability evidence», without creative interpretations.
Soins de soutien identiques dans la cohorte
PJP prophylaxis attached to D-VRd for everyone — the engine doesn't know alternatives (dapsone instead of bactrim). The clinician substitutes.
No cumulative-toxicity tracking
2L plan for a patient who got bortezomib in 1L with grade 2 neuropathy — the profile doesn't carry prior_treatment_history comme un champ structuré; le clinicien interprète manuellement.
Contraintes de la CHARTE — ne changera pas
Décisions architecturales de principe qui entravent la FDA / sécurité clinique.
LLM doesn't decide clinically
LLM seulement: chaudière, dresses de doc, extraction (avec vérification humaine), traduction avec examen clinique. Pas: choix de régime, doses, interprétation de biomarqueurs.
Pas d'histologie — pas de plan
Plan de traitement seulement si disease.id est confirmé. Autrement, le mode DiagnosticPlan. revise_plan traitement → diagnostic est interdit.
Pas de temps critique
Not intended for emergency oncology (oncologic emergencies). Indication with time_critical: true → avertissement de désqualification.
Deux-réviseurs fusion
Projet individuel. Une personne responsable publie les mises à jour avec des contrôles automatisés et des sources traçables. La relecture clinique externe est facultative et consignée séparément.
Antiautomatisation-bias
Toujours ≥2 pistes côte à côte. Alternative n'est jamais enterrée, jamais «cliquer pour élargir». Le clinicien voit un choix, pas une directive.
Données sur les patients jamais en repo
patient_plans/ gitignored. Le site ne présente que des exemples synthétiques. Télémétrie interdite sans consentement explicite.
Ne jamais énumérer — ce que le moteur ne fait jamais
Masquer la piste alternative
Les deux recommandations sont toujours présentées. L'interface utilisateur n'a pas de modèle «expansé pour voir une alternative».
Générer une indication par LLM
Tout du KB curated. Pas d'indication correspondante → avertissement, pas «invention créative».
Modifier les doses
Les doses proviennent des recommandations NCCN/ESMO. Les ajustements suivent uniquement des règles explicites dose_modification_rules.
Juge «ce qui est mieux»
The algorithm picks a default but doesn't claim it's superior. The clinician has full autonomy — automation_bias_warning.
Interpréter l'imagerie
«Bulky disease» arrive comme un champ structuré, non pas à partir de l'analyse d'image. Analyse d' image = classification de l ́appareil.
Cohorte correspondante
«N patients ont choisi X dans M% des cas» — nécessite un registre des patients persistant + examen de la vie privée. Pas encore.
Couverture actuelle — Situation et lacunes du STUB
| Catégorie | État | Signification |
|---|---|---|
| Maladies à chaîne complète | 86 / 103 | Les autres sont partiellement modélisés |
| Indications 1L | 265 | Première ligne pour les 103 maladies |
| Indications 2L+ | 175 | 34 hemès + 21 solides. Autres 2L+ solides partiels. |
| Oncologie pédiatrique | 0 | En dehors du champ d'application du MVP — voie séparée |
| Radiothérapie | partiel | RT in multimodal Indications; not modeled as a standalone entity |
| Chirurgie | not modeled | Indications d'oncologie chirurgicale absentes |
| Alimentation en direct des préparations | drapeau statique | Hard-coded on regimens; not auto-refreshed |
| External clinical review | Facultatif | Recorded separately; not a development or publication gate. |
| Tableau de bord de l'écart | → lien | Audit généré par la construction (sign-off, solide 2L+, chirurgie, RT, soins de soutien) |
Flux de travail des cliniciens
Le moteur se prépare pour une carte tumorale, il ne remplace pas.
1) vérifie les sources (chaque revendication citée, garde déjà laissé tomber les cellules non citées) →
2) ferme les questions ouvertes (commande des tests, des appels revise_plan) →
3) s'adapte au patient (doses, soins de soutien, disponibilité régionale) →
4) discute au tableau tumoral (mémoire MDT — ordre du jour structuré).
TaskTorrent — vérifiez les algorithmes avec les jetons de votre IA
Projet individuel. Une personne responsable publie les mises à jour avec des contrôles automatisés et des sources traçables. La relecture clinique externe est facultative et consignée séparément.
Un responsable publie un «coup» — une tâche autonome (~100k–300k jetons): «vérifier les preuves BMA pour DLBCL × 17 entités» ou «recharger source-licence pour 8 sources». Un contributeur réclame le morceau, AI exécute, PR ouvre.
Un outil d'IA avec un budget symbolique (Claude Code Pro+, Codex, Courseur, ChatGPT avec web). gh CLI. Python 3.10+. ~1-3 heures de votre temps. No clinical expertise required —
you trigger structured drafting; the the maintainer verifies the change; expert feedback is optional.
Copier l'invite de 8 lignes
CONTRIBUTOR_QUICKSTART.md
dans votre agent d'IA. Il trouve un morceau disponible, le revendique, exécute le travail, exerce le validateur, ouvre une PR.
The maintainer checks sources, tests and schemas. External review is optional. Merge → sidecar landing → upsert into
hosted KB → render. Attribution recorded in _contribution_meta.yaml.
Activité récente
Au cours des 4 derniers jours TaskTorrent a scié 7 vagues, dozens of chunks, ~73 BMA candidates, 23 BMA drafts ready for clinical signoff, 53 source stubs, 1,251 UA-language fields drafted. Recent structural updates:
- CIViC pivot — moteur + 29 BIO + 399 BMA YAMLs ont migré sur le schéma OncoKB; instantané mensuel rafraîchir CI.
- Régimes multiphasés (PR1-3) —
Regimen.phases,bridging_options, rendu de phases-consciente, retour-compat auto-enveloppement. - Garde de citation L3 — contrôle de la durée de rendu sur chaque cellule BMA.
- Matrice de couverture — /diseases.html détail par maladie.
- 448 public examples in the gallery — plans prêts, mémoires de diagnostic et scénarios moléculaires pour examen et vérification.