feat(dashboard): кабинет врача — красные зоны, карточка, живые алерты, подключение пациента #70

Merged
Eleboba merged 1 commits from feat/16-doctor-dashboard into dev 2026-10-04 12:55:24 +03:00
Owner

Что меняется

Дашборд врача: список «красных зон» с индексом риска прерывания терапии, карточка пациента (шкалы, самочувствие, календарь доз, алерты с ack, план безопасности, саммари), живые алерты (опрос 2,5 с, тост и красный баннер на всех страницах), форма «Подключить пациента» с кодом и QR. Страницы подключаются автоматически из dashboard/pages/ — #17 добавляет свои файлы, app.py не трогает.

Closes #16

Зона

C

Как проверить

uv run uvicorn app.main:app --port 8000 &
uv run streamlit run dashboard/app.py
uv run pytest -q tests/test_dashboard_*.py

Открыть http://localhost:8501 → «Пациенты» → «Открыть» у Андрея → «Подтвердить» алерт; «Подключить пациента» → «Заполнить демо-данными» → согласие → код + QR.

Чек-лист

  • rebase на origin/dev
  • make lint + make test зелёные
  • лог в issue (### 2026-10-04)
  • нет ПДн в логах, нет реальных данных, нет секретов
  • общие файлы не тронуты (добавлен только .streamlit/config.toml для дашборда)

🤖 Generated with Claude Code

## Что меняется Дашборд врача: список «красных зон» с индексом риска прерывания терапии, карточка пациента (шкалы, самочувствие, календарь доз, алерты с ack, план безопасности, саммари), живые алерты (опрос 2,5 с, тост и красный баннер на всех страницах), форма «Подключить пациента» с кодом и QR. Страницы подключаются автоматически из `dashboard/pages/` — #17 добавляет свои файлы, `app.py` не трогает. Closes #16 ## Зона C ## Как проверить ```bash uv run uvicorn app.main:app --port 8000 & uv run streamlit run dashboard/app.py uv run pytest -q tests/test_dashboard_*.py ``` Открыть http://localhost:8501 → «Пациенты» → «Открыть» у Андрея → «Подтвердить» алерт; «Подключить пациента» → «Заполнить демо-данными» → согласие → код + QR. ## Чек-лист - [x] rebase на origin/dev - [x] make lint + make test зелёные - [x] лог в issue (### 2026-10-04) - [x] нет ПДн в логах, нет реальных данных, нет секретов - [x] общие файлы не тронуты (добавлен только `.streamlit/config.toml` для дашборда) 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Eleboba added 1 commit 2026-10-04 12:51:38 +03:00
- Patient list sorted red -> yellow -> grey -> green with KPI row, trend arrows,
  7-day adherence bars, discontinuation-risk badge with factor tooltip.
- Patient card: scales with severity bands from config/scales (unscheduled marked),
  mood/sleep/alcohol small multiples, dose heat-strip, alerts feed with ack,
  safety plan, AI summary with disclaimer.
- Live alerts: st.fragment(run_every=2.5s) polling, toast + pinned acute banner on
  every page; full rerun on new alert only on doctor pages.
- Connect form -> POST /patients/connect -> code, QR, deep link.
- Thin httpx ApiClient over the frozen schemas with graceful "API недоступен".
- app.py discovers dashboard/pages/*.py automatically (st.navigation); demo pages
  of #17 plug in by adding a file.

Refs #16

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Eleboba merged commit 2f1f8a8f24 into dev 2026-10-04 12:55:24 +03:00
Eleboba deleted branch feat/16-doctor-dashboard 2026-10-04 12:55:25 +03:00
Sign in to join this conversation.