#Запуск из МИС
Кнопка «Smartica» должна находиться в карточке конкретного приёма. Её задача — передать на бэкенд МИС текущие encounter_id, email и ФИО врача, получить одноразовую ссылку и открыть её в браузере.
#Последовательность запросов
| Шаг | Кто → куда | Действие |
|---|---|---|
| 1 | Врач → МИС | Нажимает «Smartica» в карточке приёма |
| 2 | Бэкенд МИС → Smartica | Запрашивает launch_url через серверный SSO |
| 3 | Браузер → Smartica | Открывает launch_url без изменений |
| 4 | Smartica → МИС | Запрашивает GET контекста приёма |
| 5 | Врач → Smartica | Записывает разговор и останавливает запись |
| 6 | Smartica | Объединяет стенограмму и заполняет поля |
| 7 | Smartica → МИС | Асинхронно отправляет PUT результата |
SSO, GET и PUT используют один и тот же encounter_id.
#Что делает кнопка
Рекомендуемый поток на стороне МИС:
- Фронтенд передаёт бэкенду только внутренний ID приёма.
- Бэкенд проверяет, что текущий врач имеет доступ к этому приёму.
- Бэкенд сам получает
user_emailиuser_full_nameиз доверенных данных МИС. - Бэкенд вызывает SSO endpoint с
SSO_KEY. - МИС отвечает браузеру редиректом
302на полученныйlaunch_urlлибо возвращает URL для открытия в новой вкладке.
Не принимайте email врача и platform от браузера без серверной проверки. Не помещайте SSO_KEY в JavaScript.
#Первый запуск приёма
При первом открытии:
- Smartica авторизует существующего врача либо создаёт его по email и ФИО.
- Токен удаляется из адресной строки через редирект на чистый Launch URL.
- Для приёма создаётся связанная заметка Smartica.
- Smartica вызывает GET контекста.
- Полученные
templateиfieldsзакрепляются за этим приёмом.
Если GET недоступен или возвращает невалидный JSON, подготовка приёма завершается ошибкой. Исправьте endpoint и откройте приём снова.
#Повторный запуск того же encounter_id
Одинаковый encounter_id означает продолжение того же приёма:
- врач возвращается в существующую заметку Smartica;
- простое открытие и закрытие не создаёт новый
PUT; - новая запись объединяется с предыдущей стенограммой;
- после обработки Smartica повторно отправляет
PUTс актуальными данными; - ID нельзя привязать к другой заметке или использовать для нового приёма.
МИС должна обновлять существующий протокол, а не создавать вторую запись.
#Асинхронная отправка
После остановки записи заполнение и write-back выполняются не внутри браузерного запроса. Врач может закрыть вкладку: обработка продолжится в Smartica.
В интерфейсе Smartica отображается статус отправки. При ошибке врач может запустить повтор вручную. Автоматическая повторная доставка на каждый 5xx не является гарантией контракта, поэтому:
- возвращайте ответ в пределах согласованного timeout;
- делайте
PUTидемпотентным; - не рассчитывайте на exactly-once доставку.
Подробнее: Авторизация, ошибки и повторная доставка.
#Тестовое и рабочее окружения
Формат SSO, GET и PUT должен быть одинаковым. Между окружениями меняются только:
- хосты;
- секреты;
- сетевые правила;
- тестовые данные.
Для общего тестового стенда используйте SSO. Прямой Launch URL без токена допустим только при локальной отладке, когда врач уже вошёл в Smartica.
#Сводка контрактов
| Направление | Метод | Кто реализует | Назначение |
|---|---|---|---|
| МИС → Smartica | POST на выданный SSO endpoint |
Smartica | Получить launch_url |
| Браузер → Smartica | GET на launch_url |
Smartica | Авторизовать врача и открыть приём |
| Smartica → МИС | GET /…/encounters/{id} |
МИС | Получить шаблон и поля |
| Smartica → МИС | PUT /…/encounters/{id} |
МИС | Сохранить поля и стенограмму |
Путь API МИС конфигурируется при подключении. {platform} и точный SSO endpoint выдаёт Smartica после регистрации адаптера.