CI / ruff · pytest (pull_request) Successful in 22s
Freeze interfaces between lanes A (bot), B (backend), C (dashboard) so three developers work in parallel without touching each other's files: dialog Event/Reply + engine registry with echo stub, integration protocols with in-memory defaults, MonitoringService with noop stub, /api/v1 schemas with fixture-backed routes, frozen main.py wiring, config/modules.yaml + due_scales(), DAR-5, tzdata, Andrey trajectory, lanes in WORKFLOW, ADR-010. Refs #34 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
128 lines
13 KiB
Markdown
128 lines
13 KiB
Markdown
# 01. Демо-персона и сценарии
|
||
|
||
Источник для seed-данных и сценария демо. Все данные вымышленные.
|
||
|
||
> **Решение #9 / ADR-010:** главный герой хакатона — **ветеран Андрей** (этап 1). Траектория Алексея перенесена на Андрея по структуре. Сценарии Алексея (депрессия, самоскрининг) остаются ниже — это опциональное направление «Депрессия в общей популяции» (эпик #43).
|
||
|
||
## Главная персона этапа 1 — Андрей
|
||
|
||
| Поле | Значение |
|
||
|---|---|
|
||
| Кто | Андрей С., 34 года, контрактник, вернулся после ранения 8 месяцев назад; райцентр, до психиатра — областной центр |
|
||
| Жалобы | плохо спит, кошмары, раздражительность, срывается на домашних, стал чаще выпивать |
|
||
| Барьер | «я не псих»; страх учёта, лишения прав на оружие и вождение; доверяет только своим |
|
||
| Точка входа | углублённая диспансеризация → консультация психолога → психиатр кабинета медико-психологического консультирования предлагает подключиться (QR/код) |
|
||
| Скрининг (день −3) | PC-PTSD-5 = 4 (положительный), PCL-5 = 46, PHQ-9 = 14 (п.9 = 0), AUDIT-C = 3 (ниже порога для мужчин), оружия дома нет (охотничье ружьё у брата) |
|
||
| Визит (день 0) | ПТСР + депрессивный эпизод средней степени; **сертралин 50 мг 1 р/сут утром после еды**; модули `veteran` + `depression`; следующий визит через 4 недели |
|
||
| Врач | д-р Смирнова Е. А., психиатр (`doc-smirnova`) |
|
||
|
||
### Траектория Андрея (сценарий этапа 1)
|
||
|
||
Ожидаемые цвета проверяются тестом правил: 🟢🟢🟢🟡🟡🟢🟢🟢🟢🟡🟡🟡🔴.
|
||
|
||
| День | Приём | Настр. 0–10 | Сон | Кошмары | Алкоголь | Свободный текст | Шкалы | Уровень | Реакция системы |
|
||
|---|---|---|---|---|---|---|---|---|---|
|
||
| 0 | — | — | — | — | — | — | — | 🟢 | врач «Подключить пациента» → код; Андрей: согласие, знакомство, напоминания |
|
||
| 1 | да | 4 | 4–6 | да | нет | — | — | 🟢 | приветствие, напоминание, вопрос про сон |
|
||
| 2 | да | 4 | 4–6 | да | нет | «подташнивает с утра» | — | 🟢 | med_qa: частая побочка, обычно проходит за 1–2 нед.; принимать после еды |
|
||
| 3 | да | 4 | 4–6 | да | нет | «опять тошнит» | — | 🟢 | поддержка |
|
||
| 4 | да | 3 | 4–6 | нет | нет | «тошнота не проходит» | — | 🟡 | побочка 3 дня подряд → алерт `side_effect_3d` |
|
||
| 5 | **нет** | 3 | 4–6 | нет | нет | «от таблеток только хуже, брошу» | — | 🟡 | отсроченный эффект, не отменять без врача; алерт `quit_intent` |
|
||
| 6 | да | 4 | 6–8 | нет | нет | «врач позвонил, продолжаю» | — | 🟢 | врач подтвердил алерты (ack) после звонка |
|
||
| 7 | да | 4 | 6–8 | нет | нет | — | PCL-5 = 44, PHQ-9 = 13, п.9 = 0 | 🟢 | плановые шкалы |
|
||
| 8 | да | 4 | < 4 | да | 1–2 | «снится одно и то же» | — | 🟢 | — |
|
||
| 9 | да | 4 | < 4 | да | больше | — | — | 🟢 | — |
|
||
| 10 | да | 4 | < 4 | да | больше | «без пива не могу уснуть» | — | 🟡 | сон < 4 ч три ночи (`sleep_lt4_3n`) + алкоголь 3 дня (`alcohol_3d`) → инфо о взаимодействии с сертралином, предложение записаться раньше |
|
||
| 11 | да | 3 | 4–6 | нет | 1–2 | — | — | 🟡 | (алерты открыты) |
|
||
| 12 | да | 3 | 4–6 | нет | нет | — | — | 🟡 | — |
|
||
| 13 | да | 2 | < 4 | да | нет | «всё бессмысленно, устал от всего» | внеплановый PHQ-9 = 18, п.9 = 2 | 🔴 | настроение ≤ 3 три дня → внеплановый PHQ-9 → п.9 ≥ 1 → кризисный скрипт, C-SSRS, план безопасности, алерт `phq9_item9` дежурному ≤ 3 с |
|
||
|
||
### Дашборд: ещё 7 пациентов кабинета
|
||
|
||
| Пациент | Возраст | Модули | Препарат | День | Статус | Последнее событие |
|
||
|---|---|---|---|---|---|---|
|
||
| Дмитрий В. | 41 | veteran | сертралин 100 мг | 45 | 🟡 | кошмары, сон < 4 ч 3 ночи |
|
||
| Сергей П. | 37 | veteran | пароксетин 20 мг | 30 | 🟡 | пропуски 3 из 7 дней |
|
||
| Николай Ф. | 52 | veteran | сертралин 50 мг | 14 | 🟡 | алкоголь 4 из 7 дней |
|
||
| Анна Л. | 23 | depression | флуоксетин 20 мг | 8 | 🟡 | возраст < 25: усиленный мониторинг |
|
||
| Ирина К. | 34 | depression | эсциталопрам 10 мг | 21 | 🟢 | PHQ-9 16 → 9 |
|
||
| Ольга Н. | 29 | depression | сертралин 50 мг | 10 | 🟢 | тошнота прошла |
|
||
| Павел Р. | 45 | depression | эсциталопрам 10 мг | 60 | 🟢 | ремиссия, PHQ-9 = 4 |
|
||
|
||
### Порядок демо этапа 1 (≈ 3 мин)
|
||
1. Врач подключает Андрея на дашборде → QR — 15 с
|
||
2. Андрей: согласие, короткий скрининг, напоминание о сертралине → «принял» — 40 с
|
||
3. День 5: «брошу» → объяснение + 🟡 у врача — 35 с
|
||
4. День 10: кошмары, сон, алкоголь → инфо о взаимодействии, «записаться раньше» — 30 с
|
||
5. День 13: «всё бессмысленно» → внеплановый PHQ-9 → 🔴 кризисный протокол + карточка алерта и план безопасности на дашборде — 40 с
|
||
|
||
---
|
||
|
||
# Опциональное направление: депрессия в общей популяции (Алексей)
|
||
|
||
## Персона Алексея
|
||
|
||
| Поле | Значение |
|
||
|---|---|
|
||
| Имя | Алексей, 28 лет, Москва |
|
||
| Работа | разработчик |
|
||
| Жалобы (2 мес.) | сниженное настроение, нет интереса к делам, плохой сон, трудно работать |
|
||
| Барьер | к врачу не шёл: «боюсь, что поставят на учёт» |
|
||
| Скрининг (день −3) | PHQ-9 = 14 (умеренная), п.9 = 0; травмы не было → PC-PTSD-5 пропущен; GAD-7 = 9 |
|
||
| Визит к психиатру (день 0) | депрессивный эпизод средней степени; сертралин 50 мг 1 р/сут утром после еды; следующий визит через 4 недели |
|
||
| Врач | д-р Смирнова Е. А., психиатр |
|
||
|
||
## Сценарий А — скрининг (демо 30–40 сек)
|
||
|
||
1. Пользователь открывает бота без регистрации → дисклеймер («это не диагноз») + согласие на обработку данных.
|
||
2. Вопрос о возрасте. Если < 18 → детский телефон доверия 8-800-2000-122, совет обратиться к взрослым / школьному психологу.
|
||
3. PHQ-9 → 14 баллов, п.9 = 0.
|
||
4. Вопрос о травматическом событии (вход в PC-PTSD-5) → «нет» → пропуск.
|
||
5. GAD-7 → 9 баллов.
|
||
6. Агент объясняет результат без слова «диагноз», рекомендует консультацию психиатра.
|
||
7. Пользователь: «А меня поставят на учёт?» → агент объясняет (добровольное обращение = консультативно-лечебная помощь).
|
||
8. Агент предлагает варианты (ПНД/поликлиника, платно, онлайн) → `book_visit` (мок) → с согласия `send_screening_summary` врачу.
|
||
|
||
## Сценарий Б — сопровождение после визита (основное демо)
|
||
|
||
Врач на дашборде нажимает «Подключить пациента», вводит препарат и дату следующего визита.
|
||
|
||
| День | Приём | Настр. 0–10 | Сон | Алкоголь | Жалобы / свободный текст | Шкалы | Уровень | Действие агента |
|
||
|---|---|---|---|---|---|---|---|---|
|
||
| 1 | да | 4 | 6–8 | нет | — | — | 🟢 | приветствие, напоминание |
|
||
| 2 | да | 4 | 4–6 | нет | тошнота | — | 🟢 | объясняет: частая, обычно проходит за 1–2 нед.; принимать после еды |
|
||
| 3 | да | 4 | 4–6 | нет | тошнота | — | 🟢 | поддержка |
|
||
| 4 | да | 3 | 4–6 | нет | тошнота | — | 🟡 | побочка 3 дня подряд → `raise_alert(yellow)` |
|
||
| 5 | решил не принимать | 3 | 4–6 | нет | «от таблеток только хуже, брошу» | — | 🟡 | объясняет отсроченный эффект; не бросать без врача; `notify_doctor` |
|
||
| 6 | да | 4 | 6–8 | нет | — | — | 🟢 | врач позвонил, пациент продолжает |
|
||
| 7 | да | 4 | 6–8 | нет | — | PHQ-9 = 13, п.9 = 0 | 🟢 | плановый PHQ-9 |
|
||
| 8 | да | 4 | < 4 | 1–2 | — | — | 🟢 | — |
|
||
| 9 | да | 4 | < 4 | больше | — | — | 🟢 | — |
|
||
| 10 | да | 4 | < 4 | больше | «не могу уснуть без пива» | — | 🟡 | сон < 4 ч 3 ночи (F_Y6) + алкоголь 3 дня (F_Y5) → инфо о взаимодействии; `notify_doctor`; `book_visit` раньше |
|
||
| 11 | да | 3 | 4–6 | 1–2 | — | — | 🟡 | (алкоголь продолжается) |
|
||
| 12 | да | 3 | 4–6 | нет | — | — | 🟡 | — |
|
||
| 13 | да | 2 | < 4 | нет | «всё бессмысленно, устал от всего» | внеплановый PHQ-9 = 18, п.9 = 2 | 🔴 | настроение ≤ 3 три дня → внеплановый PHQ-9 → п.9 ≥ 1 → `crisis_protocol` + `raise_alert(red)` |
|
||
|
||
## Дашборд врача: ещё 7 фейковых пациентов
|
||
|
||
| Пациент | Возраст | Диагноз | Препарат | День терапии | Статус | Последнее событие |
|
||
|---|---|---|---|---|---|---|
|
||
| Ирина К. | 34 | депрессия | эсциталопрам 10 мг | 21 | 🟢 | PHQ-9 16 → 9 |
|
||
| Дмитрий В. | 41 | ПТСР | сертралин 100 мг | 45 | 🟡 | кошмары, сон < 4 ч 3 ночи |
|
||
| Ольга Н. | 29 | депрессия + тревога | сертралин 50 мг | 10 | 🟢 | тошнота прошла |
|
||
| Сергей П. | 37 | ПТСР | пароксетин 20 мг | 30 | 🟡 | пропуски 3 из 7 дней |
|
||
| Анна Л. | 23 | депрессия | флуоксетин 20 мг | 8 | 🟡 | возраст < 25: усиленный мониторинг; беспокойство |
|
||
| Павел Р. | 45 | депрессия | эсциталопрам 10 мг | 60 | 🟢 | ремиссия, PHQ-9 = 4 |
|
||
| Наталья Ф. | 52 | ПТСР | сертралин 50 мг | 14 | 🟡 | алкоголь 4 из 7 дней |
|
||
| Алексей | 28 | депрессия | сертралин 50 мг | 13 | 🔴 | п.9 PHQ-9 = 2 |
|
||
|
||
История для графиков у остальных пациентов можно сгенерировать случайно в пределах указанного статуса.
|
||
|
||
## Порядок демо (≈ 3 мин)
|
||
|
||
1. Скрининг Алексея → запись к врачу — 40 с
|
||
2. Врач подключает пациента на дашборде — 10 с
|
||
3. День 5: «хочу бросить» → объяснение + алерт — 40 с
|
||
4. День 10: алкоголь + бессонница → запись раньше — 30 с
|
||
5. День 13: внеплановый PHQ-9 → 🔴 → кризисный протокол + карточка алерта на дашборде — 40 с
|