Funcionalidades
Un motor de regla declarativa para recomendaciones oncológicas. Plan con dos pistas alternativas (estándar + agresivo) fuera, cada envío de reclamo con una cita a su fuente.
El contenido clínico es informativo; las comprobaciones técnicas no constituyen una aprobación del tratamiento.
Un perfil de JSON → dos planes de tratamiento, todas las reclamaciones citadas.
No LLM en la decisión clínica. No servidor. El paciente JSON permanece en la máquina. Procesamiento por perfil: 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
- Resuelve el algoritmo
- Descubrimientos aplanados
- Eval 671 RedFlags
- Árbol de decisión de caminar
- Materializar las pistas
- Resuelve regímenes
revise_plan() actualiza la recomendación a medida que llegan nuevos biomarcadores o hallazgos.Lo que hay en la base de conocimiento
Se trata de un inventario de registros publicados, no una medida de la completitud clínica. La cobertura y el estado de verificación de nivel de enfermedad se muestran por separado en la matriz siguiente.
Enfermedades con registros estructurados dedicados.
Papel de MDT representado en el enrutamiento.
Régimen estructurado, no prescripciones automáticas.
Fichas de medicamentos con contexto legible por máquina.
Pruebas de diagnóstico y molecular representadas en el KB.
Sets de trabajo estructurados.
Señales que requieren la segunda mirada de un médico.
Registros de fuentes citados relacionados con reclamaciones.
Matriz de cobertura
/diseases.html — tabla per-doencias: recuento de biomarcadores / fármacos / indicaciones / banderas rojas, 1L+2L marca, relleno% y verificado%. agrupado por linfoide + hematología mieloide y tumores sólidos.
/disease_coverage.json.
→ Ver la matriz
/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.
→ Ver ejemplos
Tramitación de solicitudes en 6 etapas
El médico alimenta el motor con un perfil JSON. El motor funciona 6 etapas secuenciales y devuelve un Plan con ≥ 2 pistas (CHARTER §15.2 C6 — alternativa nunca ocultada).
disease.id + line_of_therapy + disease_state → Entidad Algoritm.any_of/all_of/none_of con umbrales).La capacidad de acción del CIViC
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). El motor lee una instantánea local de YAML (knowledge_base/hosted/civic/<date>/) — determinista + offline. El combinador de fusión-aware maneja tanto mutaciones de puntos (BRAF V600E) y fusión (BCR::ABL1). Render: nivel ESCAT — primaria, CIViC calificación de evidencia — en detalles.
Régimen multifase
Regimen.phases es una lista ordenada de bloques llamados (inducción → consolidación → mantenimiento), cada uno con su propio cronograma de ciclo y gatillo de transición. Protocolos del mundo real (R-CHOP × 6 → mantenimiento, AML 7+3 → consolidación HiDAC, puente axi-cel → infusión).
bridging_options — bridging regimens between phases (for CAR-T). Legacy single-phase YAMLs auto-wrap into one-phase form via auto_wrap_legacy_components().
Protección de citación — 3 capas
A three-layer verification system — three places where we catch unsourced claims:
| Capa | Donde | ¿Qué? |
|---|---|---|
| L1 · Cargador | Carga YAML (Pidántica) | SRC-* referential integrity. Unknown SRC-ID → load fail. |
| L2 · Verificador | El contribuyente PR (CI) | Aterrizaje de tres capas: la fuente existe, parafrase en tierra, ancla en sección. |
| L3 · Rendición | Salida HTML | No hay cita → advert-badge (leniente) o pulse la célula (strict_citation_guard=True). |
Tres maneras de correr
python -m knowledge_base.engine.cli --patient profile.json --render plan.html. Offline.
Python WASM + micropip + paquete de motor (~2,4 MB). Primero carga 8-15 s, luego como un CLI local. Trabajador de servicio para fuera de línea.
from knowledge_base.engine import generate_plan, revise_plan — EHR / CSV / pruebas por lotes.
Lo que el motor lee de un perfil
Solo campos estructurados con semántica explícita. Los campos desconocidos son ignorados — no hay efectos ocultos.
| Categoría | Campos | Cómo lo usamos |
|---|---|---|
| Enfermedad (punto de entrada) | disease.id · icd_o_3_morphology · line_of_therapy · disease_state |
determina qué Algoritm ejecutar |
| Modo de diagnóstico | suspicion.lineage_hint · tissue_locations · presentation |
activa DiagnosticPlan en lugar de Plan |
| Demografía | age · ecog · fit_for_transplant · decompensated_cirrhosis · pregnancy_status |
filtro encendido Indication.applicable_to.demographic_constraints |
| Biomarcadores | cualquier BIO-X desde KB: BIO-CLL-HIGH-RISK-GENETICS, BIO-HCV-RNA, … |
desencadenante RedFlags, filtro Indicaciones, mapa a CIVIC |
| Constataciones | cientos de campos estructurados — dominant_nodal_mass_cm, ldh_ratio_to_uln, tp53_mutation, … |
umbrales en los desencadenantes de RedFlag |
| Pruebas previas | prior_tests_completed: [TEST-IDs] |
excluye pruebas ya completadas de workup_steps |
Lo que el motor devuelve — Plan
| Campo | Contenido |
|---|---|
tracks[] | ≥2 alternative tracks (default first): indication + regimen (+ phases) + monitoring + supportive_care + contraindications |
access_matrix | agregado por vía: registro, reembolso, intervalos de costes, AccessPathway. Aviso si la antigüedad de los datos de costes es > 180 días. |
experimental_options | tercera vía — enumerate_experimental_options() consultas ClinicalTrials.gov v2. cache TTL de 7 días. |
actionability_hits | El CIViC coincide con la variante primaria + ESCAT, puntuación de evidencia, significación clínica, citas de origen |
fda_compliance | Campos del criterio 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 | cadena de versión entre planes para el mismo paciente |
Activado en forma opcional: Encuesta sobre el tratamiento de los residuos — orchestrate_mdt() agrega roles requeridos/recomendados/opcionales de 16 especialistas virtuales + preguntas abiertas + gráfico de procedencia.
Actualización del plan revise_plan()
Tres transiciones legales + una prohibida. El plan anterior no se muta — una copia profunda se devuelve con superseded_by Por CARTA §10.2, las versiones antiguas persisten indefinidamente.
| De | Cambio | Transición | Resultado |
|---|---|---|---|
| Plan de diagnóstico vN | sólo sospechas | diagnóstico → diagnóstico | Plan de diagnóstico v(N+1) |
| Plan de diagnóstico vN | histología confirmada | diagnóstico → tratamiento (promoción) | Plan v1 |
| Plan vN | Actualización con histología | tratamiento → tratamiento | Plan v(N+1) |
| Plan vN | histología eliminada | ILEGAL — Valor de la deuda, encargo §15.2 C7 | |
Plan.knowledge_base_state.algorithm_version registra la versión KB → misma entrada + misma KB = misma salida.
Preguntas abiertas — el motor se niega a decidir sin datos
Instead of a silent default, the engine explicitly flags which fields are missing and which test or report is needed (MDT_ORCHESTRATOR_SPEC §3). Rendered into the Plan as a separate section, never hidden.
| Código | Activador | Lo que emite el motor |
|---|---|---|
| Q1 | Histología no confirmada | «Plan de Tratamiento generado contra el código ICD-O-3 solamente; confirmar histología primaria antes de la terapia» |
| Q2 | Etapa faltante | «Estado de Lugano/Ann Arbor requerido para una estratificación segura del riesgo» |
| Q3 | Cláusula RF incompleta | «Panel citogenético incompleto; estado de alto riesgo evaluado con datos parciales» |
| Q4 | Falta el biomarcador | «Estado de mutación de IGHV + FISH del(17p) requerido para confirmar la recomendación de 1L» |
| Q5 | Falta el estado de ejecución | «ECOG requerido para la evaluación de la admisibilidad de trasplante»; se vuelve a la situación de incumplimiento conservador |
| Q6 | Medicamento no reembolsado | «D-VRD: daratumumab no reembolsado actualmente; verificar el camino de financiación» |
| DQ1-4 | Modo de diagnóstico: tejido/lineado/presentación/hipótesis que faltan | reduce la confianza en la correspondencia del estudio diagnóstico; predominan lineage_hint y el tejido |
Lagunas de personalización: deliberadas
«Personalization» in OpenOnco is rule-based selection from a fixed catalog, not AI-generation. Deliberate architectural choice (CHARTER §8.3).
No se ha calculado la dosis por paciente
Tiendas de régimen la dosis estándar (bortezomib 1,3 mg/m2), no multiplicado por el paciente BSA, no ajustado automáticamente para CrCl 30. Por diseño - para evitar la clasificación de dispositivos FDA.
No hay ciclos adaptados a la respuesta
Alfileres de régimen total_cycles: 6 + 2 maintenance. No se adapta automáticamente por respuesta (PR vs CR después de PET2). revise_plan.
Genomic matching limited to CIViC
Outside CIViC (rare, novel variants) emits a warning «no actionability evidence», without creative interpretations.
Cuidado de apoyo idéntico a toda la cohorte
PJP prophylaxis attached to D-VRd for everyone — the engine doesn't know alternatives (dapsone instead of bactrim). The clinician substitutes.
No hay seguimiento de toxicidad acumulativa
2L plan for a patient who got bortezomib in 1L with grade 2 neuropathy — the profile doesn't carry prior_treatment_history como un campo estructurado; el médico interpreta manualmente.
Las limitaciones de la carga no cambiarán
Decisiones arquitectónicas de principios que limitan la FDA / seguridad clínica.
LLM doesn't decide clinically
LLM solamente: caldera, docs Drafts, extracción (con verificación humana), traducción con revisión clínica. No es así.: elección de régimen, dosis, interpretación de biomarcadores.
Sin histología — sin plan
Plan de tratamiento sólo si: disease.id es confirmado. De lo contrario, modo DiagnosticPlan. revise_plan tratamiento → diagnóstico es Prohibido.
No hay tiempo crítico
No se destina a la oncología de emergencia (urgencias oncológicas). time_critical: true → advertencia de descalificación.
Dos revisores fusionan
Proyecto individual. Una persona responsable publica las actualizaciones con comprobaciones automáticas y trazabilidad de las fuentes. La revisión clínica externa es opcional y se registra por separado.
Antiautomatización-bias
Siempre ≥ 2 pistas lado a lado. Alternativa nunca se enterra, nunca «click para expandir». El clínico ve una opción, no una directiva.
Datos del paciente nunca en repo
patient_plans/ gitignored. Sitio muestra sólo ejemplos sintéticos. Telemetría prohibida sin consentimiento explícito.
Nunca listar — lo que el motor nunca hace
Ocultar la pista alternativa
Las dos recomendaciones siempre se muestran. La interfaz de usuario no tiene un patrón «expansivo para ver alternativas».
Generar la indicación a través de LLM
Todo desde el KB curado. No hay coincidencia Indicación → advertencia, no «invención creativa».
Modificar las dosis
Las dosis proceden de las guías NCCN/ESMO. Los ajustes solo se realizan mediante reglas explícitas dose_modification_rules.
Juez «que es mejor»
The algorithm picks a default but doesn't claim it's superior. The clinician has full autonomy — automation_bias_warning.
Interpretación de imágenes
«Enfermedad bullicia» llega como un campo estructurado, no de análisis de imagen. Análisis de imagen = clasificación de dispositivo.
Cohorte de correspondencia
«N pacientes eligieron X en M% de los casos» — requiere un registro de pacientes persistente + revisión de la privacidad. Todavía no.
Cobertura actual — Situación y lagunas de la STUB
| Categoría | Estado | Significado |
|---|---|---|
| Enfermedades con cadena completa | 86 / 103 | El resto están parcialmente modelados |
| Indicaciones 1L | 265 | Primera línea para las 103 enfermedades |
| Indicaciones 2L+ | 175 | 34 heme + 21 sólidos. Los demás sólidos 2L+ parciales. |
| Oncología pediátrica | 0 | Excedente del ámbito de aplicación de la VPM — vía separada |
| Radioterapia | parcial | RT en Indicaciones multimodales; no se ha modelado como entidad independiente |
| Cirugía | no se ha modelado | Indicaciones quirúrgicas de oncología ausentes |
| Alimentación en vivo de fórmulas | bandera estática | Codificados con frecuencia en regímenes; no refrescados automáticamente |
| External clinical review | Opcional | Recorded separately; not a development or publication gate. |
| Panel de interrupción en vivo | → enlace | Auditoría generada por la construcción (firma, sólido 2L+, cirugía, RT, cuidados de apoyo) |
Flujo de trabajo de los clínicos
El motor se prepara para una placa tumoral, no reemplaza una.
1) verifica fuentes (cada reclamación citada, guardia ya se han caído células nocitadas) →
2) cierra preguntas abiertas (ordena pruebas, llamadas revise_plan) →
3) se adapta al paciente (dosis, cuidados de apoyo, disponibilidad regional) →
4) discute en el tablero tumoral (método MDT — agenda estructurada). Motor: borrador. Clínico: final.
TaskTorrent — verifique algoritmos con las fichas de su IA
Proyecto individual. Una persona responsable publica las actualizaciones con comprobaciones automáticas y trazabilidad de las fuentes. La revisión clínica externa es opcional y se registra por separado.
Un mantenedor publica un «chunk» — una tarea autónoma (~100k–300k tokens): «reverifica evidencia BMA para DLBCL × 17 entidades» o «recuperar licencia de fuente-recupero para 8 fuentes». Un contribuyente reclama el trozo, AI ejecuta, PR abre.
Una herramienta de IA con un presupuesto de fichas (Claude Code Pro+, Codex, Cursor, ChatGPT con web). gh CLI. Python 3.10+ ~ 1-3 horas de su tiempo. No se requiere experiencia clínica —
you trigger structured drafting; the the maintainer verifies the change; expert feedback is optional.
Copia el mensaje de 8 líneas desde
CONTRIBUTOR_QUICKSTART.md
Encuentra un trozo disponible, lo reclama, ejecuta el trabajo, ejecuta la validación, abre una 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.
Actividad reciente
Durante los últimos 4 días TaskTorrent vio 7 olas, decenas de trozos, ~73 candidatos BMA, 23 borradores BMA listos para firma clínica, 53 talones de fuente, 1.251 campos en idioma UA redactados.
- Pivot de CIViC — motor + 29 BIO + 399 BMA YAMLs migraron fuera del esquema OncoKB; actualización mensual de instantáneas CI.
- Régimen multifase (PR1-3) —
Regimen.phases,bridging_options, render de fases-conocido, back-compat auto-envoltura. - Guardia de citación L3 — control de tiempo de renderización de cada celda BMA.
- Matriz de cobertura — /diseases.html desglose por enfermedad.
- 448 public examples in the gallery — planes listos, informes de diagnóstico y escenarios moleculares para su revisión y verificación.