# Запросы доступа к клинике с одобрением пациента (CIBA)

> Поток OpenID CIBA для запросов доступа к клинике: регистратура вводит адрес электронной почты пациента, пациент одобряет доступ в приложении или по электронной почте на 30, 90 или 365 дней, и приложение клиники получает токены.

Source: https://developers.anpheros.com/ru/guides/clinic-access-request

**Клиника получает доступ к записи пациента в Anpheros только после одобрения пациента.** Приложение клиники отправляет запрос, указывающий адрес электронной почты пациента и необходимый уровень доступа. Пациент получает запрос в приложении Anpheros и по электронной почте, видит, кто и запрашивает, выбирает срок действия доступа и одобряет или отклоняет запрос. В случае одобрения приложение клиники получает токены и может читать запись до истечения срока действия доступа или его отзыва пациентом.

Этот поток является стандартным потоком OpenID Connect Client-Initiated Backchannel Authentication (CIBA) в режиме опроса. Он существует для того, чтобы регистратору не приходилось передавать пациенту телефон или ссылку: запрос направляется пациенту, а не через экран клиники.

## Пошаговое руководство

1. **Регистратура вводит адрес электронной почты пациента.** Приложение клиники вызывает `POST /oauth/bc-authorize` с учетными данными клиента, адресом электронной почты пациента в качестве `login_hint`, `scope`, которые ему необходимы, и кратким `binding_message`, которое увидит пациент.
2. **Платформа отвечает одинаково для каждого адреса.** Ответ содержит `auth_req_id`, срок действия и интервал опроса, независимо от того, есть ли у этого адреса электронной почты учетная запись Anpheros. Он не раскрывает, у кого есть запись. Запрос для человека без учетной записи просто истекает.
3. **Пациент принимает решение.** Он получает уведомление в приложении Anpheros и по электронной почте. Запрос показывает организацию, область действия и сообщение. Он выбирает период 30, 90 или 365 дней и нажимает «Разрешить» или «Отклонить». Ссылка в электронном письме ничего не подтверждает при открытии, потому что сканеры электронной почты открывают ссылки; пациент должен нажать кнопку.
4. **Клиника опрашивает.** Приложение вызывает `POST /oauth/token` с типом предоставления `urn:openid:params:grant-type:ciba` и `auth_req_id`. Пока пациент не принял решение, ответ — `authorization_pending`. После одобрения токены возвращаются один раз. Отказ возвращает `access_denied`, а неотвеченный запрос возвращает `expired_token`.
5. **Клиника читает и записывает в пределах предоставленной области действия.** Каждое чтение регистрируется и доступно для просмотра пациенту. Клиника может изменять или удалять только то, что она сама записала.

## Что защищает пациента

- **Только подтвержденный адрес электронной почты.** Запрос соответствует только учетной записи, адрес электронной почты которой подтвержден, поэтому никто не может получать чужие запросы, создав учетную запись с их адресом.
- **Ограниченный по области действия и времени.** Доступ предоставляется для каждого типа ресурса и действия на указанный период. Запрос, на который никто не ответил, по умолчанию истекает в течение дня и максимум через семь дней.
- **Может быть отозван в любое время.** Отзыв вступает в силу при следующем запросе. Клиника не может восстановить доступ.
- **Видимый.** Пациент видит каждое соединение и каждый доступ в приложении. См. [модель согласия и доступа](https://developers.anpheros.com/ru/guides/consent).

## Что необходимо клинике для разработки

- Конфиденциальный OAuth-клиент, зарегистрированный на платформе, с секретным ключом, хранящимся на сервере.
- Цикл опроса, который соблюдает интервал и обрабатывает четыре исхода.
- Способ отображения решения пациента на стойке регистрации ("ожидание пациента", "одобрено до …", "отказано").
- Обработка возвращаемых токенов как краткосрочных учетных данных: токены доступа действительны 30 минут, а токены обновления меняются при каждом использовании. См. [аутентификация и OAuth](https://developers.anpheros.com/ru/guides/authentication).

Для клиники, которая предпочитает открывать страницу согласия перед пациентом, например, на стойке регистрации, также поддерживается стандартный поток кода авторизации с PKCE и автономный запуск SMART on FHIR.

## Часто задаваемые вопросы

### Должен ли пациент находиться в клинике?

Нет. Они могут одобрить запрос со своего телефона или по ссылке из электронного письма, где бы они ни находились. Таким образом, запрос может быть отправлен до приема, и пациент, находящийся за границей, все равно сможет его одобрить.

### Что, если у пациента нет учетной записи Anpheros?

Запрос принимается, а затем истекает без решения, и клиника не может определить, существует ли учетная запись. Пациент может создать учетную запись, и клиника может отправить новый запрос.

### Как долго действует доступ?

Пациент выбирает 30, 90 или 365 дней при одобрении. Они могут отозвать его раньше.

### Может ли клиника видеть все в записи?

Только тот объем данных, который одобрил пациент. Объемы данных устанавливаются для каждого типа ресурса и действия и могут быть отфильтрованы по категориям.

### Является ли поток запросов стандартным?

Да. Это OpenID Connect CIBA, поэтому могут использоваться существующие библиотеки OAuth. См. руководство по [API для здравоохранения с согласием пациента](https://developers.anpheros.com/ru/guides/healthcare-api-patient-consent) для более широкой модели.

### Это работает в реальном времени?

Да, на платформе в закрытом бета-тестировании. Для доступа к производственной среде требуется подтвержденная организация и подписанное соглашение об обработке данных.

## Связанные материалы

- [Платформа данных пациентов для клиник и больниц](https://developers.anpheros.com/ru/guides/clinics-and-hospitals)
- [Платформа согласия пациента для приложений здравоохранения](https://developers.anpheros.com/ru/guides/patient-consent-platform)
- [Как реализовать согласие пациента с помощью SMART on FHIR](https://developers.anpheros.com/ru/guides/smart-on-fhir-backend)
- [Безопасность, конфиденциальность и местоположение данных](https://developers.anpheros.com/ru/guides/security)
