[dashboard][C] Дашборд врача: список «красных зон», карточка, алерты в реальном времени, «Подключить пациента» #16
Notifications
Due Date
No due date set.
Blocks
Depends on
#39 [dashboard][C] Полировка UI и скриншоты для презентации
MedITron/PTSRaiAgent
#42 [dashboard][C] Семьи: сигналы близких в карточке ветерана, член семьи как отдельный пациент
MedITron/PTSRaiAgent
#46 [dashboard][C] Депрессия: входящие сводки скрининга (очередь триажа)
MedITron/PTSRaiAgent
Reference: MedITron/PTSRaiAgent#16
Reference in New Issue
Block a user
Описание
SPEC §11 + идея №2 (
docs/product/00_ideas.md): врач видит, кто в риске прерывания терапии. Streamlit, только через API (app/api/schemas.py); до готовности #12 ручки отдают фикстуры — работать сразу.Желаемый результат
Зона и владение файлами
Lane C (дашборд) — владеет:
dashboard/**,tests/test_dashboard*.py.Замороженные контракты (менять только отдельным мелким PR с пингом всех):
app/core/types.py,app/dialog/contracts.py,app/api/schemas.py,app/integrations/base.py,app/services/contracts.py,app/main.py,app/config.py,config/modules.yaml,config/rules.yaml,config/scales/*,pyproject.toml/uv.lock,docker-compose.yml,Makefile.Лог выполнения
2026-10-04
2026-10-04
Что сделано
st.navigation):dashboard/app.pyсам находит страницы вdashboard/pages/*.py(номер в имени — порядок,1*→ раздел «Кабинет врача», остальные → «Демо»; опциональноNAV_ICON/NAV_SECTION/NAV_TITLE/NAV_URLв файле). Страницам #17 достаточно добавить файл.pages/1_Пациенты.py): шапка «Кабинет д-ра Смирновой Е. А.», KPI (всего / 🔴 / 🟡 / высокий риск прерывания), фильтр по статусу и поиск, строки 🔴→🟡→⚪→🟢 (внутри цвета — по индексу риска): модули, препарат, день терапии, PHQ-9/PCL-5 со стрелкой тренда, полоса приверженности за 7 дн., бейдж риска прерывания с факторами в подсказке, последнее событие, число алертов.?patient=<token>): статус, риск, визит; плитки шкал с дельтой; plotly: PHQ-9 и PCL-5 с полосами тяжести изconfig/scales(внеплановые — ромб), настроение/сон/алкоголь (small multiples, без двойной оси); календарь доз (heat-strip ✓/–/✕); лента алертов с «Подтвердить» (POST ack); план безопасности; саммари с дисклеймером «решения принимает врач».st.fragment(run_every=2.5 с)опрашивает/doctors/{id}/alerts, новый алерт →st.toast, открытые острые — пульсирующий красный баннер над всеми страницами с переходом в карточку. Полный rerun при новом алерте — только на страницах врача (демо-консоль не прерывается).pages/1b_Подключить_пациента.py): форма (имя, год, пол, синтетический СНИЛС с контрольной суммой, препарат/доза, время, указания, визит, модули, согласие) + кнопка «Заполнить демо-данными (Андрей)» → код, QR, ссылка.dashboard/api_client.py: тонкий httpx-клиент поверх замороженных схем, таймауты 3 с, ошибки → баннер «API недоступен».DOCTOR_ID(по умолчаниюdoc-smirnova).dashboard/theme.py), Inter через.streamlit/config.toml(офлайн — системный шрифт).Результат
tests/test_dashboard_*.py): клиент (ошибки/таймауты/404/битый ответ), чистые хелперы (сортировка, стрелки, бейдж риска, календарь доз, СНИЛС, склонения), графики, автопоиск страниц, AppTest-смоук списка, карточки, ack, подключения, баннера и тоста нового алерта.make lint testзелёные.Заметки/решения
dashboard/app.pyубираетdashboard/изsys.path: иначе файлapp.pyперекрывает пакетapp(нужен для схем).deep_link(/console?code=…), QR строится отDASHBOARD_PUBLIC_URL(по умолчаниюhttp://localhost:8501).[dashboard] Дашборд врача: список с цветами, карточка, алерты в реальном времени, «Подключить пациента»to [dashboard][C] Дашборд врача: список «красных зон», карточка, алерты в реальном времени, «Подключить пациента»