Обмеження
OpenOnco свідомо не намагається замінити лікаря або повноцінну MDT-команду. Цей розділ — повний і чесний список того, що engine не робить, де він відмовляється генерувати план без додаткових даних, і де клінічне рішення залишається за лікарем. Знати обмеження так само важливо, як знати можливості.
2026-04-26 23:04 UTC.
1. Виявлення відсутніх даних — Open Questions механізм
Engine не приймає рішення без потрібних даних. Замість того, щоб мовчки brati default, він явно фіксує які поля бракує і якого тесту/висновку потребує. Цей механізм називається Open Questions і він — цілеспрямована частина MDT-orchestrator (Q1-Q6 + DQ1-DQ4 rules per MDT_ORCHESTRATOR_SPEC §3).
Treatment-mode Open Questions (Q1-Q6) — приклади з реального коду
- Q1 — Histology not confirmed: якщо
disease.idрезолвиться але немаєbiopsy_dateчиhistology_report— engine emits warning «Treatment Plan generated against ICD-O-3 code only; recommend confirming primary histology before initiating therapy». - Q2 — Stage missing: якщо Algorithm.decision_tree посилається на staging але profile немає
stage— fall-through на default з flag «Lugano/Ann Arbor stage required for confident risk-stratification». - Q3 — RedFlag clause references findings absent: якщо
RF-MM-HIGH-RISK-CYTOGENETICSперевіряєtp53_mutation+del_17p+t_4_14+gain_1q, а в profile є тількиdel_17p— engine не дає false negative; emits «Cytogenetic panel incomplete; high-risk status assessed with partial data». - Q4 — Biomarker required by Indication missing: якщо
IND-CLL-1L-VENOвимагаєBIO-CLL-HIGH-RISK-GENETICSдля default-track selection — engine emits «IGHV mutation status + FISH del(17p) required to confirm 1L recommendation». - Q5 — Performance status missing: якщо
ecogвідсутній — fall на conservative default (тільки standard track), emits «ECOG performance status required for transplant-eligibility assessment». - Q6 — Drug availability flag: якщо selected Regimen містить препарат позначений як
nszu_reimbursement: false(наприклад daratumumab у MM) — emits «D-VRd: daratumumab not currently NSZU-reimbursed in Ukraine; verify funding pathway before initiation».
Diagnostic-mode Open Questions (DQ1-DQ4) — для pre-biopsy режиму
- DQ1 — Tissue location missing: якщо
suspicion.tissue_locationsempty — workup match не може ranжувати, emits «Тип ткани локалізації потрібно вказати для матчингу workup». - DQ2 — Lineage hint absent: без
lineage_hintengine використовує тільки tissue + presentation для matching, lower confidence. - DQ3 — Presentation free-text empty: presentation_keywords scoring × 0; only lineage + tissue brati участь.
- DQ4 — Working hypotheses not provided: engine не має preferred direction, переважає найбільш generic workup (наприклад
WORKUP-LYMPHADENOPATHY-NONSPECIFICзамістьWORKUP-SUSPECTED-LYMPHOMA).
2. П'ять gap-ів персоналізації
«Персоналізація» в OpenOnco — це rule-based вибір з фіксованих варіантів, а не AI-генерація. Цe навмисна архітектурна позиція (CHARTER §8.3 — заборонені prompt patterns). Конкретні gap-и:
Без per-patient dose calculation
Regimen зберігає стандартну дозу (bortezomib 1.3 mg/m²),
не множиться на BSA пацієнта і не зменшується під CrCl 30 мл/хв
автоматично. Лікар сам перераховує. Це принципово, щоб уникнути
класифікації як FDA medical device.
Без response-adapted cycle adjustment
Regimen фіксує total_cycles: 6 + 2 maintenance.
Engine не адаптується автоматично на основі response (PR vs CR
після PET2). Re-staging plan генерується через окремий
revise_plan з новим profile — лікар явно тригерить.
Genomic matching обмежений curated biomarkers
Якщо у пацієнта виявили PD-L1 78%, engine не запропонує pembrolizumab — бо немає Indication з відповідним biomarker_requirement у KB. Це обмеження coverage (треба додати entity), не engine-логіки.
SupportiveCare однакова для всіх на одному режимі
PJP prophylaxis attached до D-VRd для всіх — навіть для пацієнта з алергією на bactrim. Engine не знає альтернатив (dapsone замість bactrim). Лікар сам substitute'ить.
Без cumulative-toxicity tracking між lines
2L+ алгоритми вже існують для 38 гематологічних хвороб
(85 показань 2L+), але profile не carrier'ить
prior_treatment_history як structured field. 2L plan
для пацієнта що отримав bortezomib у 1L з grade 2 нейропатією —
engine не знає про попередній exposure якщо нічого нового не
вказано; лікар сам інтерпретує prior_lines з вільного тексту.
3. Жорсткі CHARTER-обмеження (will not change)
Це не technical debt — це принципові архітектурні рішення що визначають позицію проекту як non-device CDS і gатекіпять FDA / клінічну безпеку.
LLM не приймає клінічні рішення
LLM-и допомагають лише з: boilerplate code, doc drafts, extraction з clinical documents (з human verification), translation з clinical review. Не: вибір режиму, генерація доз, інтерпретація biomarker для therapy selection.
Без histology — без treatment Plan
Treatment Plan генерується тільки якщо disease.id
або icd_o_3_morphology підтверджені. Інакше
engine відмовляється і вмикає DiagnosticPlan mode (workup brief).
revise_plan з treatment назад в diagnostic —
заборонено, raises ValueError.
Без time-critical recommendations
Engine не призначений для emergency oncology (oncologic
emergencies, time-sensitive infusion reactions). Це б тригернуло
device classification. Якщо Indication позначена
time_critical: true — engine додає disqualification
warning у FDA compliance.
Two-reviewer merge для clinical content
Будь-яка зміна під knowledge_base/hosted/content/
що affects clinical recommendations потребує два з трьох Clinical
Co-Lead approvals. Без цього Indication залишається STUB.
Anti automation-bias mandatory
Engine ніколи не показує тільки одну рекомендацію — завжди ≥2 tracks side-by-side. Alternative не buried, не «click to expand», не fine-print. Лікар бачить що це вибір, не директива.
Patient data ніколи не у repo / public artifact
patient_plans/ gitignored. Будь-які patient HTML —
gitignored pattern. Site (docs/) показує тільки
synthetic examples. Збір telemetry заборонений без explicit consent.
4. Coverage limits (поточний стан KB)
OpenOnco — work in progress. Зараз модельовано 65 захворювань (37 гематологічних + 28 солідних) — це далеко не повний WHO-HAEM5 / WHO Classification of Tumours. Конкретно:
| Категорія | Стан | Що це означає |
|---|---|---|
| Хвороби з повним ланцюгом | 56 / 65 | Решта — частково модельовані; engine може видати warning «no Algorithm found for disease=X» |
| Indications 1L | 165 | Перша лінія покрита для всіх 65 хвороб |
| Indications 2L+ | 85 | Друга-четверта лінія: 34 гематологічних хвороб (AITL, ALCL, AML, APL, ATLL, B-ALL, BURKITT, CHL, CLL, CML, DLBCL-NOS, ET, FL, HCL, HCV-MZL, HGBL-DH, MCL, MDS-HR, MDS-LR, MF-SEZARY, MM, NK-T-NASAL, NLPBL, NODAL-MZL, PCNSL, PMBCL, PMF, PTCL-NOS, PTLD, PV, SPLENIC-MZL, T-ALL, T-PLL, WM) + 4 солідних (ENDOMETRIAL, ESOPHAGEAL, GASTRIC, RCC). Решта solid-tumor 2L+ — частково (CRC, breast, urothelial), не systematically. |
| RedFlags | 310 | Cover критичні clinical scenarios для існуючих хвороб; для нових disease треба додавати |
| Solid tumors | 28 | BREAST, CERVICAL, CHOLANGIOCARCINOMA, CHONDROSARCOMA, CRC, ENDOMETRIAL, ESOPHAGEAL, GASTRIC, GBM, GIST, GLIOMA-LOW-GRADE, HCC, HNSCC, IFS, IMT, MELANOMA, MPNST, MTC, NSCLC, OVARIAN, PDAC, PROSTATE, RCC, SALIVARY, SCLC, THYROID-ANAPLASTIC, THYROID-PAPILLARY, UROTHELIAL — переважно 1L. 2L+ і ад'ювантні контексти — частково. |
| Pediatric oncology | 0 | Out of scope for MVP — окремий track спеціалізації |
| Радіотерапія планів | частково | RT входить у мультимодальні Indications (cervical CRT, GBM Stupp, PMBCL R-CHOP+RT, esophageal CROSS), але як окрема сутність з технічними параметрами (доза/фракції/target volumes) ще не моделюється |
| Хірургія планів | не модельовано | Surgical oncology indications відсутні |
| Маркетингових даних доступу до режимів (НСЗУ formulary live) | статичний flag | Поки що hard-coded на режимах; не auto-refresh з НСЗУ — це окремий backlog item |
| Experimental options (clinical trials) | integrated | Phase C done: enumerate_experimental_options + ExperimentalOption schema, інтеграція у generate_plan, render третього треку, 7-day on-disk TTL cache. Що ще: курований мапінг trials ↔ patient-eligibility (а не лише disease+biomarker) |
| Access Matrix (UA-availability per Plan) | integrated | Phase D: AccessMatrix + AccessMatrixRow агрегують registered/НСЗУ/cost/pathway по треках, рендеряться у Plan. Що ще: curated AccessPathway seed (~30 препаратів) — потребує two-reviewer signoff per CHARTER §6.1 |
5. Що engine ніколи не робить
Прозорий список заборонених patterns — щоб усі знали межі:
Не сховує alternative track
Обидві рекомендації завжди показані. UI не has «expand to see alternative» pattern.
Не генерує нову Indication LLM-ом
Усе вибирається з уже-curated KB. Якщо немає підходящої Indication — engine emits warning, не «creative invention».
Не модифікує дози «під пацієнта»
Дози зі стандартного NCCN/ESMO. Adjustments тільки через explicit dose_modification_rules у Regimen YAML, ніяких ad hoc calculations.
Не оцінює «що краще» між tracks
Algorithm обирає default, але не вирішує що default «кращий». Лікар має повну autonomy обрати alternative — це задокументовано у automation_bias_warning.
Не інтерпретує imaging
«Bulky disease» приходить як structured field dominant_nodal_mass_cm, не з аналізу зображень. Image analysis = device classification.
Не робить cohort matching
«У базі з N пацієнтів M% обрали X» — це окремий future feature, потребує persisted patient registry + privacy review. Поки що недоступне.
6. Як з цим жити
Цей engine задумано як підготовку до tumor-board, не заміну. Лікар вводить profile, отримує structured draft з усіма sources і open questions, а далі:
Кожна claim у плані має citation. Лікар може прочитати оригінальний NCCN/ESMO/МОЗ розділ і підтвердити що engine не misquote'ить.
Якщо engine emit'ить «cytogenetic panel incomplete» — лікар замовляє
тест, додає у profile, запускає revise_plan. Plan
оновлюється, OpenQuestion закривається.
Дози пере-перевіряє, supportive care substitute'ить за алергіями, Ukraine-availability перевіряє вручну. Engine — draft, лікар — final.
MDT brief показує які ролі activated і які питання відкриті. Це structured agenda для board meeting. Decisions з board fixед'аться як provenance events.