Capacità

Un motore di regola dichiarativa per le raccomandazioni oncologiche. Piano con due tracce alternative (standard + aggressive) fuori, ogni richiesta di spedizione con una citazione alla sua fonte.

Progetto singolo. Un manutentore fornisce aggiornamenti con controlli automatizzati e tracciabilità delle sorgenti. La revisione clinica esterna è opzionale e viene registrata separatamente.

Il contenuto clinico è informativo; i controlli tecnici non sono l'approvazione del trattamento.

103
malattie in KB
834
indications (265 1L · 175 2L+)
407
regimi di trattamento
321
farmaci (ATC/RxNorm)
671
bandiere rossi
576
Fonti citate
16
abilità cliniche (MDT)
Solo
Un manutentore
01Non una scatola nera
Every algorithm step in the trace. LLM doesn't make clinical decisions (CHARTER §8.3).
02Ogni rivendicazione con citazione
source_id + posizione + citazione parafrase + pagina/sezione. Guard di tempo di render.
03Privacy per design
CLI / Pyodide / Python importa. Nessun server. Paziente JSON non esce mai dalla macchina.
04Il piano rimane vivo
revise_plan() aggiorna la raccomandazione quando arrivano nuovi biomarcatori o risultati.

Ciò che è nella base di conoscenza

Si tratta di un inventario dei registri pubblicati, non di una misura di completezza clinica. La copertura a livello di malattia e lo stato di verifica sono mostrati separatamente nella matrice sottostante.

103
Malattie in KB

Malattie con archivi strutturati dedicati.

16
Abilità cliniche

Ruoli MDT rappresentati nel percorso.

407
Regimi di trattamento

Regimi strutturati, non prescrizioni automatiche.

321
Droghe

Registrazione di farmaci con contesto leggibile da macchina.

131
Prova

Test diagnostici e molecolari rappresentati nel KB.

24
Lavori di apprendimento

Set di lavoro strutturati.

671
Opzioni rosse

Segnali che richiedono il secondo sguardo di un clinico.

576
Fonti

Citato i registri di sorgente collegati alle richieste.

Matrice di copertura

/diseases.html — tabella per malattia: conta di biomarcatori / farmaci / indicazioni / bandiere rosse, segni di controllo 1L+2L, riempimento% e verificato%. Raggruppato da linfoide + ematologia mieloide e tumori solidi. /disease_coverage.json. → Visualizza 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. → Visualizza esempi

Trattamento delle domande in 6 fasi

Il clinico alimenta il motore con un profilo JSON. Il motore esegue 6 fasi sequenziali e restituisce un piano con ≥2 tracce (CHARTER §15.2 C6 — alternativa mai nascosta).

Fase 1
Malattia + Risoluzione di Algoritmo
disease.id + line_of_therapy + disease_state → Ente Algoritmo.
Fase 2
Constatazioni appiattite
Merge demografici + biomarcatori + risultati in un dittato piatto.
Fase 3
Valutazione della scoria rossa
671 RF contro le conclusioni (any_of/all_of/none_of con soglie).
Fase 4
Andata in algoritmo
Decision tree step by step. Trace records fired_red_flags at each node.
Fase 5
Le tracce si materializzano
Indicazione → tracce (standard / aggressive / sorveglianza) con filtro biomarcatore.
Fase 6
Risoluzione per traccia
Indicazione → Regime (con fasi) + Monitoraggio + SupportiveCare + AccessMatrix.

CIViC actionability

Actionability data used to come from OncoKB — but their ToS blocked non-commercial public derivatives (conflict with CHARTER §2). We migrated to CIViC (CC0) (WashU). Il motore legge una foto locale YAML ogni notte (knowledge_base/hosted/civic/<date>/) — deterministica + offline. Il combinatore di fusione-aware gestisce sia mutazioni punti (BRAF V600E) e fusioni (BCR::ABL1). Renditore: livello ESCAT — primario, CIVIC evidence rating — in dettaglio.

Regimi multifasi

Regimen.phases è un elenco ordinato di blocchi nominati (induzione → consolidamento → manutenzione), ognuno con il proprio ciclo programma e il trigger di transizione. Protocolli del mondo reale (R-CHOP × 6 → manutenzione, AML 7+3 → consolidazione HiDAC, ponti axi-cel → infusione). bridging_options — bridging regimens between phases (for CAR-T). Legacy single-phase YAMLs auto-wrap into one-phase form via auto_wrap_legacy_components().

Protezione di citazione — 3 strati

A three-layer verification system — three places where we catch unsourced claims:

LivelloDoveCosa?
L1 · Caricatore Carico YAML (Pidanzia) SRC-* referential integrity. Unknown SRC-ID → load fail.
L2 · Verificatore Contributo PR (CI) Tristrato di terra: sorgente esiste, parafrase a terra, ancora in sezione.
L3 · Render Uscita HTML No citation → warn-badge (lenient) or skip cell (strict_citation_guard=True).

Tre modi per correre

CLI
Localmente

python -m knowledge_base.engine.cli --patient profile.json --render plan.html. Offline.

Piodide
Nel browser (try.html)

Python WASM + micropip + pacchetto motore (~2,4 MB). In primo luogo caricare 8-15 s, poi come un locale CLI. Lavoratore di servizio per offline.

Biblioteca
Importazione di Python

from knowledge_base.engine import generate_plan, revise_plan — test di controllo EHR / CSV / lotto. apatrido, deterministico.

Quello che il motore legge da un profilo

Only structured fields with explicit semantics. Unknown fields are ignored — no hidden effects.

CategoriaCampiCome lo usiamo
Malattia (punto di ingresso) disease.id · icd_o_3_morphology · line_of_therapy · disease_state determina quale Algoritmo eseguire
Modalità diagnostica suspicion.lineage_hint · tissue_locations · presentation attiva DiagnosticPlan invece di Plan
Demografiche age · ecog · fit_for_transplant · decompensated_cirrhosis · pregnancy_status filtro su Indication.applicable_to.demographic_constraints
Biomarcatori qualsiasi BIO-X da KB: BIO-CLL-HIGH-RISK-GENETICS, BIO-HCV-RNA, … scattare RedFlags, filtro Indicazioni, mappa a CiviC
Constatazioni centinaia di campi strutturati — dominant_nodal_mass_cm, ldh_ratio_to_uln, tp53_mutation, … soglie in trigger RedFlag
Esami precedenti prior_tests_completed: [TEST-IDs] esclude i test già completati da workup_steps

Cosa restituisce il motore — Piano

CampoContenuto
tracks[]≥2 alternative tracks (default first): indication + regimen (+ phases) + monitoring + supportive_care + contraindications
access_matrixper aggregato: iscrizioni, rimborsi, intervalli di costi, AccessPathway. Avviso di costo di stallo > 180 giorni.
experimental_optionsterza pista — enumerate_experimental_options() cherys ClinicalTrials.gov v2. cache TTL 7 giorni.
actionability_hitsCIViC matches with ESCAT-primary + variant, evidence rating, clinical significance, source citations
fda_complianceFDA Criterion 4 fields: intended_use, patient_population_match, algorithm_summary, automation_bias_warning
tracehistory passo a passo walk_algorithm: passo / esito / branch / fired_red_flags
warningsschema/ref errors, time_critical disqualifications, missing data hints, citation-guard warnings
supersedes / superseded_byversione catena tra piani per lo stesso paziente

Opzionalmente abilitato: Breve scheda MDT — orchestrate_mdt() aggiunge ruoli richiesti/consigliati/facoltativi da 16 specialisti virtuali + domande aperte + grafico di provenienza.

Aggiornamenti del piano — revise_plan()

Tre transizioni legali + una vietata. Il piano precedente non è mutato — una copia profonda viene restituita con superseded_by set. Per CARTA §10.2, le vecchie versioni persistono indefinitamente.

DaCambiaTrasizioneRisultato
Piano diagnostico vNsolo sospettodiagnostica → diagnosticaPiano diagnostico v(N+1)
Piano diagnostico vNistologia confermatadiagnosi → trattamento (promozione)Piano v1
Piano vNaggiornamento con istologiatrattamento → trattamentoPiano v(N+1)
Piano vNistologia rimossaILLEGALE — ValoreErrore, CARTA §15.2 C7
- La privacy. Patient JSON never leaves the user's machine. No logs, no DB. Reproducibility: Plan.knowledge_base_state.algorithm_version registra la versione KB → stesso input + stesso KB = stesso output.

Domande aperte — il motore rifiuta di decidere senza dati

Invece di un default silenzioso, il motore indica esplicitamente quali campi mancano e quali prove o rapporti sono necessari (MDT_ORCHESTRATOR_SPEC §3). Renditi nel piano come sezione separata, mai nascosti.

CodiceDisattivatoreCiò che il motore emana
Q1Istologia non confermata«Plan di trattamento generato solo contro il codice ICD-O-3; confermare l'istologia primaria prima della terapia»
Q2Stadio mancante«Lo stadio di Arbor Lugano/Ann richiesto per la sicurezza di stratificazione del rischio»
Q3Cláusula RF incompleta«Palazzo citogenetico incompleto; stato ad alto rischio valutato con dati parziali»
Q4Biomarcatore mancante«Stato della mutazione IGHV + FISH del(17p) necessario per confermare la raccomandazione 1L»
Q5Stato di prestazione mancante«ECOG richiesto per la valutazione dell'ammissibilità al trapianto»; rientra nel default conservatore
Q6Non rimborsato«D-VRD: daratumumab non rimborsato attualmente; verificare la via di finanziamento»
DQ1-4Modo diagnostico: tessuto/linea/presentazione/ipotesi mancantiabbassa la confidenza del workup; lineage_hint + tessuto domina
Why no silent default: CHARTER §15.2 C6 (anti automation-bias) — the engine cannot pretend to know when it doesn't.

Lacuni di personalizzazione — deliberati

«Personalization» in OpenOnco is rule-based selection from a fixed catalog, not AI-generation. Deliberate architectural choice (CHARTER §8.3).

Lacuna 1

No per-patient dose calculation

Negozi di regimi la dose standard (bortezomib 1,3 mg/m2), non moltiplicato per il paziente BSA, non regolato automaticamente per CrCl 30. Progettato per evitare la classificazione del dispositivo FDA.

Lacuna 2

No response-adapted cycles

Perni di regime total_cycles: 6 + 2 maintenance. Non adattato automaticamente per risposta (PR vs CR dopo PET2). revise_plan.

Lacuna 3

Genomic matching limited to CIViC

Fuori CIVIC (rare, nuove varianti) emana un avvertimento «non c'è alcuna prova di azione», senza interpretazioni creative.

Lacuna 4

SupportiveCare identico in tutta la coorte

PJP prophylaxis attached to D-VRd for everyone — the engine doesn't know alternatives (dapsone instead of bactrim). The clinician substitutes.

Lacuna 5

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 come campo strutturato; il clinico interpreta manualmente.

Le restrizioni alla carta non cambieranno

Principi di decisioni architettoniche che cancellano FDA / sicurezza clinica.

§8.3

LLM doesn't decide clinically

Solo LLM: caldera, doc sbocchi, estrazione (con verifica umana), traduzione con revisione clinica. Non è così.: scelta del regime, dosi, interpretazione di biomarcatori.

§15.2 C7

No histology — no Plan

Piano di trattamento solo se disease.id è confermato. Altrimenti modalità DiagnosticPlan. revise_plan trattamento → diagnostica è vietato.

§15.2 C5

No time-critical

Non destinato ad oncologia di emergenza (emergenza oncologica). time_critical: true → Avviso di squalificazione.

§6.1

Due revisori uniscono

Progetto singolo. Un manutentore fornisce aggiornamenti con controlli automatizzati e tracciabilità delle sorgenti. La revisione clinica esterna è opzionale e viene registrata separatamente.

§15.2 C6

Antiautomazione-bias

Always ≥2 tracks side-by-side. Alternative is never buried, never «click to expand». The clinician sees a choice, not a directive.

§9.3

Dati sui pazienti mai in restituzione

patient_plans/ gitignored. Il sito mostra solo esempi sintetici. Telemetria vietata senza esplicito consenso.

Never list — what the engine never does

Mai

Nascondi la traccia alternativa

Entrambe le raccomandazioni sono sempre mostrate. L'interfaccia utente non ha un modello «espanso per vedere alternativa».

Mai

Generare l'indicazione tramite LLM

Everything from the curated KB. No matching Indication → warning, not «creative invention».

Mai

Modificare le dosi

Le dosi provengono dalla NCCN standard/ESMO. Aggiustamenti solo tramite esplicito dose_modification_rules.

Mai

Giudice «che è meglio»

The algorithm picks a default but doesn't claim it's superior. The clinician has full autonomy — automation_bias_warning.

Mai

Interpretazione dell'immagine

«Bulky disease» arriva come un campo strutturato, non dall'analisi delle immagini. Analisi delle immagini = classificazione dei dispositivi.

Mai

Coorte corrispondenti

«N pazienti hanno scelto X in M% dei casi» — richiede un registro dei pazienti persistente + revisione della privacy. Non ancora.

Copertura corrente — Stato e lacune dello STUB

CategoriaStatoSignificato
Malattie a catena piena86 / 103Il resto è parzialmente modellato
Indicazioni 1L265Prima linea per tutte le 103 malattie
Indicazioni 2L+17534 etichette + 21 solide. Altre solide parziali 2L+.
Oncologia pediatrica0Il metodo di calcolo è stato utilizzato per determinare la durata del ciclo di prova.
RadioterapiaparzialeRT in Indicazioni multimodali; non modellata come entità indipendente
Chirurgianon modellatoIndicazioni oncologiche chirurgiche assenti
Mangimi in diretta di formulazionebandiera staticaCodificato in modo duro su regimi; non auto-frescato
Revisione clinica esternaFacoltativoRegistrato separatamente; non è un cancello di sviluppo o pubblicazione.
Dashboard di interruzione dal vivo→ collegamentoAudit generato da costruzione (segnalazione, solido 2L+, chirurgia, RT, assistenza di supporto)
Cosa significa STUB NON: dati strutturati + algoritmo + fonti sono già in atto. STUB descrive la maturità del contenuto; non è un solo-project release gate o l'approvazione del trattamento.

Flusso di lavoro dei clinici

Il motore si prepara per una scheda tumorale, non ne sostituisce una. 1) verifies sources (every claim cited, guard already dropped uncited cells) → 2) Chiude domande aperte (ordina test, chiamate revise_plan) → 3) si adatta al paziente (dosi, assistenza di supporto, disponibilità regionale) → 4) discute al cartone tumorale (MDT breve — programma strutturato). Motore: bozza. Clinicista: finale.

TaskTorrent — verifica algoritmi con i token della tua IA

Progetto singolo. Un manutentore fornisce aggiornamenti con controlli automatizzati e tracciabilità delle sorgenti. La revisione clinica esterna è opzionale e viene registrata separatamente.

1
Che cos'è

Un manutentore pubblica un «chunk» — un'attività autonoma (~100k–300k token): «riverifica le prove BMA per DLBCL × 17 entità» o «backfill source-licence per 8 fonti». Un contribuitore reclama il pezzo, AI esegue, PR apre.

2
Quello che ti serve

Uno strumento di IA con un budget token (Claude Code Pro+, Codex, Cursor, ChatGPT con web). GitHub + gh CLI. Python 3.10+. ~1-3 ore del vostro tempo. Non è richiesta alcuna esperienza clinica — si attiva la redazione strutturata; il manutentore verifica il cambiamento; il feedback degli esperti è facoltativo.

3
Trappola da stivale a 8 linee

Copia l'invite di 8 righe da CONTRIBUTOR_QUICKSTART.md nel tuo agente di AI. Trova un pezzo disponibile, lo afferma, esegue il lavoro, esegui il validatore, apre una PR.

4
Cosa succede alla PR

Il manutentore controlla le fonti, i test e gli schemi. La revisione esterna è opzionale. Merge → atterraggio sidecar → upsert in KB ospitato → render. Attribuzione registrata in _contribution_meta.yaml.

Impatto. Ogni BMA verificata è un'azione che possiamo rendere come «approvato» invece di «STUB». Un contribuitore con i token Pro+ in una serata può spingere 10-20 BMA attraverso la preparazione di firma — circa una settimana di lavoro per una persona sotto qualsiasi altro modello.

Attività recente

Negli ultimi 4 giorni TaskTorrent ha visto 7 onde, decine di pezzi, ~73 candidati BMA, 23 bozze BMA pronte per la firma clinica, 53 stub sorgenti, 1.251 campi in lingua UA redatto. Recenti aggiornamenti strutturali:

  • Pivot CIViC — motore + 29 BIO + 399 BMA YAML migrati fuori dello schema OncoKB; istantanea mensile aggiornare CI.
  • Regimi multifase (PR1-3) — Regimen.phases, bridging_options, rendering fasi-aware, back-compat auto-wrap.
  • Protezione di citazione L3 — controllo del tempo di rendering su ogni cella BMA.
  • Matrice di copertura — /diseases.html per malattia, trap-down.
  • 448 public examples in the gallery — piani pronti, schede diagnostiche e scenari molecolari per la revisione e la verifica.