feat(bot): tool-using chat agent over RAG, ЕМИАС record and drug-safety reference
CI / ruff · pytest (pull_request) Successful in 2m10s

Free-text treatment and medication questions go to an LLM agent with read-only tools bound to the current
patient: guideline search (RAG, doses stripped), ЕМИАС record mock (diagnoses, comorbidities, intolerances,
other specialists' drugs, current prescription), drug info (composition, contraindications, interactions)
and a deterministic patient-specific check. Providers: OpenRouter (temporary, synthetic data only) and an
offline mock; GigaChat to follow. Scrubbed input only, forbidden-output filter, any failure falls back to
the existing extractive RAG / instruction answers. Off unless OPENROUTER_API_KEY or CHAT_AGENT=mock.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-04 14:39:16 +03:00
co-authored by Claude Opus 5.5
parent 2f1f8a8f24
commit 6dda5f9b30
14 changed files with 1253 additions and 2 deletions
+92
View File
@@ -0,0 +1,92 @@
# Мок электронной медицинской карты ЕМИАС (интеграция ЕМИАС/ЕГИСЗ — адаптер, SPEC §9). ТОЛЬКО СИНТЕТИКА.
# Ключ — синтетический СНИЛС из scripts/seed_demo.py; в рантайме превращается в токен через pseudo_id(), так что
# в чат-агента не попадают ни СНИЛС, ни ФИО: только клинические поля ниже.
#
# Поля:
# diagnoses — диагнозы МКБ-10 из карты (ставит врач; агент их не озвучивает как «диагноз», только учитывает)
# conditions — сопутствующие состояния и анамнез; `tags` сверяются с data/meds/drug_safety.yaml
# allergies — аллергии и непереносимости; `tags` сверяются с составом препаратов (вспомогательные вещества)
# other_medications — назначения других специалистов; `classes` сверяются со взаимодействиями
# pregnancy — для женщин: беременность/лактация (null — нет данных)
# Текущее психотропное назначение приходит из таблицы prescriptions (мок МИС, app/integrations/mis_mock.py).
records:
"900-000-013 34": # Андрей С., 34, ветеран СВО — герой демо
diagnoses:
- {code: "F43.1", name: "Посттравматическое стрессовое расстройство"}
- {code: "F32.1", name: "Депрессивный эпизод средней степени"}
- {code: "T93.2", name: "Последствия осколочного ранения нижней конечности"}
conditions:
- {name: "Язвенная болезнь желудка в анамнезе (2019), ремиссия", tags: [ulcer_history]}
- {name: "Хронический болевой синдром после ранения", tags: [chronic_pain]}
allergies:
- {name: "Непереносимость лактозы", tags: [lactose]}
other_medications:
- {drug: "ибупрофен", how: "по требованию при боли", prescribed_by: "хирург", classes: [nsaid]}
pregnancy: null
"900-000-041 01": # Дмитрий В., 41, ветеран
diagnoses:
- {code: "F43.1", name: "Посттравматическое стрессовое расстройство"}
conditions:
- {name: "Артериальная гипертензия", tags: [hypertension]}
allergies: []
other_medications:
- {drug: "амлодипин", how: "ежедневно", prescribed_by: "терапевт", classes: [antihypertensive]}
pregnancy: null
"900-000-037 02": # Сергей П., 37, ветеран
diagnoses:
- {code: "F43.1", name: "Посттравматическое стрессовое расстройство"}
conditions:
- {name: "Мигрень", tags: [migraine]}
allergies: []
other_medications:
- {drug: "суматриптан", how: "при приступе мигрени", prescribed_by: "невролог", classes: [triptan]}
pregnancy: null
"900-000-052 03": # Николай Ф., 52, ветеран
diagnoses:
- {code: "F43.1", name: "Посттравматическое стрессовое расстройство"}
- {code: "F10.1", name: "Пагубное употребление алкоголя"}
conditions:
- {name: "Фибрилляция предсердий", tags: [atrial_fibrillation]}
allergies: []
other_medications:
- {drug: "варфарин", how: "ежедневно под контролем МНО", prescribed_by: "кардиолог", classes: [anticoagulant]}
pregnancy: null
"900-000-023 04": # Анна Л., 23
diagnoses:
- {code: "F32.1", name: "Депрессивный эпизод средней степени"}
conditions: []
allergies: []
other_medications: []
pregnancy: {status: "не беременна, планирует беременность в течение года"}
"900-000-034 05": # Ирина К., 34
diagnoses:
- {code: "F32.1", name: "Депрессивный эпизод средней степени"}
conditions: []
allergies: []
other_medications: []
pregnancy: null
"900-000-029 06": # Ольга Н., 29
diagnoses:
- {code: "F32.1", name: "Депрессивный эпизод средней степени"}
- {code: "F41.1", name: "Генерализованное тревожное расстройство"}
conditions: []
allergies: []
other_medications: []
pregnancy: null
"900-000-045 07": # Павел Р., 45
diagnoses:
- {code: "F33.4", name: "Рекуррентное депрессивное расстройство, ремиссия"}
conditions:
- {name: "Эпилепсия, ремиссия 5 лет", tags: [epilepsy]}
allergies: []
other_medications:
- {drug: "вальпроевая кислота", how: "ежедневно", prescribed_by: "невролог", classes: [anticonvulsant]}
pregnancy: null