feat(integrations): адаптеры МИС, код подключения, выдержки ГРЛС, уведомления врача #67

Merged
Eleboba merged 1 commits from feat/14-integrations into dev 2026-10-04 12:38:19 +03:00
Owner

Что меняется

Демо-адаптеры за замороженными Protocol из app/integrations/base.py (SPEC §9): МИС-мок, подтверждение по коду подключения, выдержки ГРЛС для 6 препаратов, уведомления врача (лента + Telegram-чат). Регистрируются setup() при импорте пакета, outbox остаётся MemoryOutbox.

Closes #14

Зона

B

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

  • make lint test
  • uv run pytest -q tests/test_integrations.py — адаптеры, идемпотентность setup, med_qa на реальной выдержке сертралина (дни 2/5/10)
  • Telegram-чат врача: задать TG_BOT_TOKEN и DOCTOR_NOTIFY_CHAT_ID, вызвать алерт — придёт [Уровень] причина / Пациент #xxxxxx

Заметки

  • ConnectCodeIdentity назван не esia_mock, чтобы не пересечься с emias_mock.py (ветка Arxip222).
  • Изменён тест tests/test_llm_med_qa.py::test_default_registry_has_no_data (теперь явно NoDrugInfo).
  • Для #12: при запущенном Telegram /dialog/{token}/outbox не дренирует TelegramOutbox.fallback.
  • Выдержки ГРЛС — синтетический пересказ, сверить с действующими инструкциями.

Чек-лист

  • rebase на origin/dev
  • make lint + make test зелёные
  • лог в issue (### 2026-10-04)
  • нет ПДн в логах, нет реальных данных, нет секретов
  • общие файлы не тронуты
## Что меняется Демо-адаптеры за замороженными Protocol из `app/integrations/base.py` (SPEC §9): МИС-мок, подтверждение по коду подключения, выдержки ГРЛС для 6 препаратов, уведомления врача (лента + Telegram-чат). Регистрируются `setup()` при импорте пакета, outbox остаётся `MemoryOutbox`. Closes #14 ## Зона B ## Как проверить - `make lint test` - `uv run pytest -q tests/test_integrations.py` — адаптеры, идемпотентность setup, med_qa на реальной выдержке сертралина (дни 2/5/10) - Telegram-чат врача: задать `TG_BOT_TOKEN` и `DOCTOR_NOTIFY_CHAT_ID`, вызвать алерт — придёт `[Уровень] причина / Пациент #xxxxxx` ## Заметки - `ConnectCodeIdentity` назван не `esia_mock`, чтобы не пересечься с `emias_mock.py` (ветка Arxip222). - Изменён тест `tests/test_llm_med_qa.py::test_default_registry_has_no_data` (теперь явно `NoDrugInfo`). - Для #12: при запущенном Telegram `/dialog/{token}/outbox` не дренирует `TelegramOutbox.fallback`. - Выдержки ГРЛС — синтетический пересказ, сверить с действующими инструкциями. ## Чек-лист - [x] rebase на origin/dev - [x] make lint + make test зелёные - [x] лог в issue (### 2026-10-04) - [x] нет ПДн в логах, нет реальных данных, нет секретов - [x] общие файлы не тронуты
Eleboba added 1 commit 2026-10-04 12:36:38 +03:00
- setup() at package import (idempotent, replaces only base.py defaults): MisMock, ConnectCodeIdentity,
  GrlsExcerpts, CompositeNotifier; outbox stays MemoryOutbox
- MisMock: clinical DB prescriptions, fallback data/meds/mis_prescriptions.json (synthetic, by token)
- ConnectCodeIdentity: one-time connect code via identity_repo, 15 min grace for the double check in one
  connect flow (Telegram /start + engine `new` state)
- GrlsExcerpts: synthetic paraphrased instruction excerpts for sertraline, paroxetine, escitalopram,
  fluoxetine, mirtazapine, prazosin
- CompositeNotifier: in-memory feed (recent(since_id)) + Telegram doctor chat, PII-free, never raises
- test_llm_med_qa: default-registry test now patches NoDrugInfo explicitly

Refs #14

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Eleboba merged commit 178cab5b1b into dev 2026-10-04 12:38:19 +03:00
Eleboba deleted branch feat/14-integrations 2026-10-04 12:38:19 +03:00
Sign in to join this conversation.