Clinical Trial Matcher
Multi-agent система для подбора клинических испытаний под конкретного пациента. Не keyword search по ClinicalTrials.gov — а **explainable matching** по причинно-следственным eligibility criteria. Один агент извлекает структурированные данные из карты пациента, другой парсит inclusion/exclusion criteria, третий делает semantic match с reasoning «почему подходит / почему нет».
Онколог или CRC (clinical research coordinator) ищет подходящие испытания для пациента — это 2-4 часа ручного скрининга на сложный случай. Из 3000+ активных trials в РФ + 10K глобальных большинство критериев исключают пациента по одной мелочи (предыдущая терапия, лаборатория, performance status). Trial Matcher делает это сопоставление автоматически с подробным reasoning по каждому criterion.
Multi-agent с explainable matching — не black-box, а аргументы
Стандартный подход — embedding-similarity + LLM-output «вот 10 trials, подходят». CRC не понимает почему. Trial Matcher показывает per-criterion решение с цитатой из карты пациента и из criteria-текста: «Inclusion 3.2: ECOG 0-1 — у пациента указано ECOG=2 в выписке от 18.03 → FAIL». Это позволяет CRC спорить, добавлять обновлённые данные, понимать ограничения системы.
Пошаговая архитектура
Parsing карты пациента
Patient-extraction agent: из EMR / медкарты / PDF выписки извлекает structured данные — диагноз с ICD-10, гистология, стадия (TNM), предыдущие терапии, лабораторные показатели, performance status (ECOG), allergies, concurrent medications.
Criteria parsing
Criteria-extraction agent: парсит свободно-написанные inclusion/exclusion criteria из ClinicalTrials.gov / Росздравнадзор в structured формы — каждый criterion разбит на field/operator/value.
Retrieval
Embeddings + hybrid retrieval: top-50 кандидатов trials по совпадению диагноза, стадии, локации (физического центра).
Pairwise matching
Match-agent: для каждой пары (patient × trial) проходит по criteria, выставляет per-criterion verdict «match / no-match / unclear» с reasoning и evidence (цитата из карты).
Scoring + ранжирование
Trial score = взвешенная сумма criteria-matches с весами по criticality. Hard-exclude criteria — если хоть один failed, trial отвергнут.
Explainable output
Список trials с total-score, перечнем подходящих criteria (✓) и проблемных (✗). CRC видит exact reason для каждого отказа и может оспорить — feedback идёт в next iteration.
Стек, который не запирает
LangGraph для multi-agent orchestration (patient-extractor + criteria-parser + matcher агенты с shared state)
GigaChat для всей generation (длинный context для criteria-pages по 5-20 страниц)
BGE-M3 embeddings для disease/intervention semantic similarity
Knowledge graph для disease-drug-stage связей (UMLS-derived)
ChromaDB как корпус trials + parsed criteria
Source data: ClinicalTrials.gov через API, Росздравнадзор реестр трегейс через scraper + manual feed
Идеально для
- Онкоклиники и онкоцентры (basic use-case)
- CRO компании, ищущие пациентов для своих исследований
- Академические исследовательские центры (Радиевый институт, НМИЦ онкологии)
- Фарма-спонсоры — pre-screening кандидатов на свои испытания
Границы кейса
- Не контактирует с пациентом — это работа CRC / врача
- Не оценивает шансы пациента выиграть от участия — это решение врача и пациента
- Не работает с детскими испытаниями без отдельного обучения (педиатрические criteria — особая специфика)
- Не обещает 100% recall — некоторые criteria требуют не записанной в карте информации
Частые вопросы
Поддерживается. Эмбеддинг семантически близок (например, между вариациями лимфомы), даже если нет точного match по ICD.
Что ещё может пригодиться
Покажем на ваших данных
за 1-2 недели
Подключаемся к ограниченной выборке, разворачиваем PoC на ваших реальных кейсах. Оценка качества, точности и UX — на вашей специфике, не на наших красивых демо.