# Platforma zgody pacjenta dla aplikacji zdrowotnych

> Zgoda wbudowana w warstwę danych: OAuth 2.1 i zakresy SMART, cel i termin ważności wybrane przez użytkownika, dziennik dostępu, który może przeglądać, cofnięcie przy następnym żądaniu i to, co Twoja aplikacja nadal posiada.

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

**Platforma zgody pacjenta pozwala osobie decydować, które aplikacje mogą odczytywać lub zmieniać jej historię medyczną, w jakim celu i jak długo, a także pozwala jej w dowolnym momencie przeglądać i cofać ten dostęp.** Anpheros wbudowuje zgodę w warstwę danych: aplikacja uzyskuje dostęp do rekordu FHIR R4 pacjenta tylko poprzez zgodę zatwierdzoną przez użytkownika na stronie zgody Anpheros, każde odczytanie i zapis w ramach tej zgody jest rejestrowane w miejscu, do którego użytkownik ma dostęp, a cofnięcie zgody wchodzi w życie przy następnym żądaniu. Ta strona pokazuje, jak to działa, co musi zrobić Twoja aplikacja i czego nie musi budować.

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

## Dlaczego zgoda należy do warstwy danych

Większość aplikacji medycznych rejestruje zgodę jako pole wyboru we własnej bazie danych, a następnie egzekwuje ją w kodzie aplikacji. Działa to do momentu, gdy druga aplikacja, integracja kliniczna lub funkcja AI potrzebuje tych samych danych: każda z nich musi ponownie zaimplementować zasady, a osoba nie ma jednego miejsca, aby zobaczyć, kto ma dostęp. Kiedy platforma, która przechowuje rekord, egzekwuje również zgodę, każdy klient otrzymuje te same zasady, a osoba otrzymuje jedną listę aplikacji do przeglądu.

| | Zgoda jako flaga w Twojej aplikacji | Zgoda w warstwie danych (Anpheros) |
|---|---|---|
| Gdzie jest egzekwowana | W kodzie każdej aplikacji | Przy każdym żądaniu API, przez platformę |
| Zakres dostępu | Cokolwiek aplikacja zdecyduje się odczytać | Tylko przyznane typy zasobów i kategorie |
| Wygaśnięcie | Rzadko implementowane | Wybrane przez osobę: 30, 90, 180 lub 365 dni |
| Co widzi osoba | Zależy od aplikacji | Każda aplikacja, jej zakresy i wygaśnięcie oraz dziennik dostępu |
| Odwołanie | Musi być propagowane ręcznie | Następne żądanie kończy się niepowodzeniem; token odświeżania przestaje działać |

## Co kontroluje pacjent

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

## Jak Twoja aplikacja prosi o zgodę

Anpheros używa OAuth 2.1 z PKCE i zakresów SMART on FHIR v2. Twoja aplikacja wysyła użytkownika na stronę zgody z wymaganymi zakresami i opcjonalnym celem; po zatwierdzeniu otrzymuje token dostępu (30 minut) i rotujący token odświeżania (30 dni) dla dokładnie jednego pacjenta.

```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)
```

Zakres taki jak `patient/Observation.rs?category=laboratory` ogranicza odczyt do wyników laboratoryjnych; filtr kategorii jest egzekwowany przez serwer. Typ zasobu spoza udzielonego dostępu zwraca `403`; pacjent spoza udzielonego dostępu zwraca `404`, więc identyfikatory nie mogą być badane.

## Reagowanie na odwołanie

Gdy osoba zakończy udzielenie dostępu, następne żądanie z tym tokenem zakończy się niepowodzeniem, a token odświeżający nie będzie w stanie przywrócić dostępu. Aby natychmiast posprzątać, zasubskrybuj webhook `consent.revoked`, który zawiera `grant_id`, identyfikator pacjenta, który widzisz, zakresy i `revoked_at`.

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

## Czego Anpheros nie robi

- Nie zbiera zgody na cele inne niż dostęp do danych, takie jak marketing lub udział w badaniach.
- Nie decyduje o Twojej podstawie prawnej. Zgoda na dostęp jest jednym z mechanizmów kontroli; Twoje informacje o prywatności, umowy i rejestry przetwarzania pozostają Twoje.
- Klucz API projektu widzi pacjentów utworzonych przez ten projekt, bez udzielenia zgody. Zgoda reguluje dostęp przez inne aplikacje.

## Często zadawane pytania

### Czym jest platforma zgody pacjenta?
Oprogramowanie, które rejestruje, którym aplikacjom dana osoba zezwala na dostęp do swoich danych medycznych, egzekwuje te wybory przy każdym żądaniu, pokazuje osobie, kto uzyskał dostęp do czego i pozwala jej wycofać dostęp. W Anpheros zgoda jest częścią samego rekordu FHIR R4, a nie osobną usługą.

### Jakich standardów Anpheros używa do zarządzania zgodą pacjenta?
OAuth 2.1 z PKCE dla przepływu autoryzacji i zakresów pacjenta SMART on FHIR v2 (`patient/<Type>.<cruds>` z opcjonalnym filtrem `?category=`) dla tego, co aplikacja może odczytywać lub zapisywać. OpenID Connect dodaje token identyfikacyjny, gdy poprosisz o `openid fhirUser`.

### Czy pacjent może ograniczyć dostęp tylko do części swoich danych?
Tak. Dostęp jest ograniczony do typów zasobów i kategorii w przyznanych zakresach, na przykład tylko do obserwacji laboratoryjnych. Wszystko inne zwraca błąd.

### Jak długo trwa zgoda?
Osoba wybiera 30, 90, 180 lub 365 dni na stronie zgody. Po tym czasie zgoda wygasa, a aplikacja musi poprosić ponownie.

### Czy pacjent może zobaczyć, co aplikacja zrobiła z dostępem?
Tak. Osoba widzi każdą aplikację z dostępem, jej zakresy i datę wygaśnięcia, a także dziennik dostępu wymieniający, co każda aplikacja odczytała lub zapisała.

### Co się dzieje po cofnięciu zgody?
Następne żądanie z tym tokenem dostępu kończy się niepowodzeniem, token odświeżania nie może być użyty do uzyskania nowego, a Twój serwer otrzymuje webhook `consent.revoked`, jeśli był subskrybowany.

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

## Powiązane

- [Model zgody i dostępu](https://developers.anpheros.com/pl/guides/consent): pełne zasady
- [Uwierzytelnianie i OAuth](https://developers.anpheros.com/pl/guides/authentication): tokeny, zakresy i wymiana kodu
- [Jak zaimplementować zgodę pacjenta za pomocą SMART on FHIR](https://developers.anpheros.com/pl/guides/smart-on-fhir-backend)
- [Webhooks](https://developers.anpheros.com/pl/guides/webhooks): `consent.granted` i `consent.revoked`
- [Wyjaśnienie pochodzenia danych medycznych](https://developers.anpheros.com/pl/guides/medical-data-provenance)
- [API dla danych pacjenta w czasie](https://developers.anpheros.com/pl/guides/longitudinal-patient-data-api)
