# Платформа згоди пацієнта для медичних додатків

> Згода, вбудована в рівень даних: OAuth 2.1 та області SMART, мета та термін дії, обрані особою, журнал доступу, який вона може бачити, відкликання під час наступного запиту та те, чим ваш додаток все ще володіє.

Source: https://developers.anpheros.com/uk/guides/patient-consent-platform

**Платформа згоди пацієнта дозволяє особі вирішувати, які додатки можуть читати або змінювати її медичну карту, з якою метою та як довго, а також дозволяє їй бачити та відкликати цей доступ у будь-який час.** Anpheros вбудовує згоду в рівень даних: додаток отримує доступ до запису FHIR R4 пацієнта лише через дозвіл, схвалений особою на сторінці згоди Anpheros, кожне читання та запис під цим дозволом реєструється там, де особа може його бачити, а відкликання набуває чинності під час наступного запиту. Ця сторінка показує, як це працює, що має зробити ваш додаток, а що йому не потрібно створювати.

<!-- visual:consent-flow -->

## Чому згода належить до рівня даних

Більшість медичних додатків записують згоду як прапорець у власній базі даних, а потім застосовують її в коді програми. Це працює доти, доки другий додаток, клінічна інтеграція або функція ШІ не потребуватимуть тих самих даних: кожен з них повинен буде переробити правила, а людина не матиме єдиного місця, щоб побачити, хто має доступ. Коли платформа, яка зберігає запис, також застосовує згоду, кожен клієнт отримує однакові правила, а людина отримує один список додатків для перегляду.

| | Згода як прапорець у вашому додатку | Згода на рівні даних (Anpheros) |
|---|---|---|
| Де застосовується | У коді кожного додатка | Під час кожного запиту до API, платформою |
| Обсяг доступу | Все, що додаток вирішує прочитати | Тільки надані типи ресурсів та категорії |
| Термін дії | Рідко реалізується | Вибирається особою: 30, 90, 180 або 365 днів |
| Що бачить людина | Залежить від додатка | Кожен додаток, його обсяги та термін дії, а також журнал доступу |
| Відкликання | Повинно поширюватися вручну | Наступний запит не вдається; токен оновлення перестає працювати |

## Що контролює пацієнт

<!-- visual:consent-controls -->

## Як ваш додаток запитує згоду

Anpheros використовує OAuth 2.1 з PKCE та SMART on FHIR v2 scopes. Ваш додаток надсилає особу на сторінку згоди з необхідними scopes та необов'язковою метою; після схвалення він отримує токен доступу (30 хвилин) та змінний токен оновлення (30 днів) для одного конкретного пацієнта.

```ts
import { OAuthFlow, generatePkce } from '@anpheros/sdk';

const flow = new OAuthFlow({
  baseUrl: 'https://platform.anpheros.com',
  clientId: process.env.ANPHEROS_CLIENT_ID!,
  redirectUri: 'https://your.app/callback',
});
const pkce = await generatePkce();
const url = flow.authorizeUrl({
  scopes: ['patient/Observation.rs?category=laboratory', 'patient/Condition.rs', 'offline_access'],
  purpose: 'treatment',
  state: crypto.randomUUID(),
  pkce,
  lang: 'en',
});
// redirect the person to `url`; on the callback exchange the code (see the authentication guide)
```

Scope, такий як `patient/Observation.rs?category=laboratory`, обмежує читання лабораторними результатами; фільтр категорії застосовується сервером. Тип ресурсу поза межами дозволу повертає `403`; пацієнт поза межами дозволу повертає `404`, тому ідентифікатори не можуть бути досліджені.

## Реакція на відкликання

Коли особа завершує надання доступу, наступний запит із цим токеном зазнає невдачі, а токен оновлення не зможе відновити доступ. Щоб негайно очистити дані, підпишіться на `consent.revoked` webhook, який передає `grant_id`, ідентифікатор пацієнта, який ви бачите, області дії (scopes) та `revoked_at`.

```ts
await anpheros.webhooks.create('https://your.app/anpheros/hook', { events: ['consent.granted', 'consent.revoked'] });
```

## Чого Anpheros не робить

- Він не збирає згоду для цілей, що виходять за межі доступу до даних, таких як маркетинг або участь у дослідженнях.
- Він не визначає вашу правову підставу. Згода на доступ є одним із контролів; ваше повідомлення про конфіденційність, контракти та записи обробки залишаються вашими.
- Власний ключ API проєкту бачить пацієнтів, створених цим проєктом, без надання дозволу. Згода регулює доступ інших застосунків.

## Часті запитання

### Що таке платформа згоди пацієнта?
Програмне забезпечення, яке записує, яким додаткам особа дозволяє доступ до своїх медичних даних, забезпечує дотримання цих виборів при кожному запиті, показує особі, хто і до чого мав доступ, і дозволяє відкликати доступ. В Anpheros згода є частиною самого запису FHIR R4, а не окремою службою.

### Які стандарти використовує Anpheros для згоди пацієнта?
OAuth 2.1 з PKCE для потоку авторизації та пацієнтські області SMART on FHIR v2 (`patient/<Type>.<cruds>` з необов'язковим фільтром `?category=`) для того, що додаток може читати або записувати. OpenID Connect додає ID токен, коли ви запитуєте `openid fhirUser`.

### Чи може пацієнт обмежити доступ лише до частини своїх даних?
Так. Доступ обмежується типами ресурсів та категоріями в наданих областях, наприклад, лише до лабораторних спостережень (Observations). Все інше призведе до помилки.

### Як довго діє згода?
Особа обирає 30, 90, 180 або 365 днів на сторінці згоди. Після цього дозвіл втрачає силу, і додаток повинен запитати його знову.

### Чи може пацієнт бачити, що додаток зробив з доступом?
Так. Особа бачить кожен додаток з доступом, його області та термін дії, а також журнал доступу, що перелічує, що кожен додаток прочитав або записав.

### Що відбувається при відкликанні згоди?
Наступний запит з цим токеном доступу зазнає невдачі, токен оновлення не може бути використаний для отримання нового, і ваш сервер отримує вебхук `consent.revoked`, якщо він підписався.

<!-- visual:cta-consent -->

## Пов'язане

- [Модель згоди та доступу](https://developers.anpheros.com/uk/guides/consent): повні правила
- [Автентифікація та OAuth](https://developers.anpheros.com/uk/guides/authentication): токени, області дії та обмін кодом
- [Як реалізувати згоду пацієнта за допомогою SMART on FHIR](https://developers.anpheros.com/uk/guides/smart-on-fhir-backend)
- [Вебхуки](https://developers.anpheros.com/uk/guides/webhooks): `consent.granted` та `consent.revoked`
- [Пояснення походження медичних даних](https://developers.anpheros.com/uk/guides/medical-data-provenance)
- [API для поздовжніх даних пацієнта](https://developers.anpheros.com/uk/guides/longitudinal-patient-data-api)
