# Piattaforma di consenso del paziente per app sanitarie

> Consenso integrato nel livello dati: OAuth 2.1 e ambiti SMART, scopo e scadenza scelti dalla persona, un registro degli accessi visibile, revoca alla richiesta successiva e ciò che la tua app possiede ancora.

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

**Una piattaforma di consenso del paziente consente a una persona di decidere quali applicazioni possono leggere o modificare la propria cartella clinica, per quale scopo e per quanto tempo, e consente loro di visualizzare e revocare tale accesso in qualsiasi momento.** Anpheros integra il consenso nel livello dati: un'applicazione accede al record FHIR R4 di un paziente solo tramite un'autorizzazione approvata dalla persona sulla pagina di consenso di Anpheros, ogni lettura e scrittura sotto tale autorizzazione viene registrata dove la persona può vederla, e la revoca ha effetto alla richiesta successiva. Questa pagina mostra come funziona, cosa deve fare la tua applicazione e cosa non deve costruire.

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

## Perché il consenso appartiene al livello dati

La maggior parte delle app sanitarie registra il consenso come una casella di controllo nel proprio database e poi lo applica nel codice dell'applicazione. Questo funziona finché una seconda app, un'integrazione clinica o una funzionalità AI necessita degli stessi dati: ognuna deve reimplementare le regole e la persona non ha un unico posto dove vedere chi ha accesso. Quando la piattaforma che memorizza il record applica anche il consenso, ogni client ottiene le stesse regole e la persona ottiene un elenco di applicazioni da rivedere.

| | Consenso come flag nella tua app | Consenso nel livello dati (Anpheros) |
|---|---|---|
| Dove viene applicato | Nel codice di ciascuna applicazione | Su ogni richiesta API, dalla piattaforma |
| Ambito di accesso | Qualsiasi cosa l'app decida di leggere | Solo i tipi di risorsa e le categorie concesse |
| Scadenza | Raramente implementata | Scelta dalla persona: 30, 90, 180 o 365 giorni |
| Cosa vede la persona | Dipende dall'app | Ogni applicazione, i suoi ambiti e la scadenza, e un registro degli accessi |
| Revoca | Deve essere propagata manualmente | La richiesta successiva fallisce; il token di aggiornamento smette di funzionare |

## Cosa controlla il paziente

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

## Come la tua applicazione richiede il consenso

Anpheros utilizza OAuth 2.1 con PKCE e ambiti SMART on FHIR v2. La tua app invia la persona alla pagina di consenso con gli ambiti di cui ha bisogno e uno scopo opzionale; dopo l'approvazione riceve un token di accesso (30 minuti) e un token di aggiornamento rotante (30 giorni) per un solo paziente.

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

Un ambito come `patient/Observation.rs?category=laboratory` limita la lettura ai risultati di laboratorio; il filtro per categoria è applicato dal server. Un tipo di risorsa al di fuori della concessione restituisce `403`; un paziente al di fuori della concessione restituisce `404`, quindi gli ID non possono essere sondati.

## Reagire alla revoca

Quando la persona termina una concessione, la richiesta successiva con quel token fallisce e il token di aggiornamento non può ripristinare l'accesso. Per una pulizia immediata, iscriviti al webhook `consent.revoked`, che trasporta `grant_id`, l'ID paziente che vedi, gli ambiti e `revoked_at`.

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

## Cosa Anpheros non fa

- Non raccoglie consensi per scopi diversi dall'accesso ai dati, come marketing o partecipazione a ricerche.
- Non decide la tua base giuridica. Il consenso all'accesso è un controllo; la tua informativa sulla privacy, i contratti e i registri di elaborazione rimangono tuoi.
- La chiave API di un progetto vede i pazienti creati da quel progetto, senza una concessione. Il consenso regola l'accesso da parte di altre applicazioni.

## Domande frequenti

### Cos'è una piattaforma di consenso del paziente?
Software che registra quali applicazioni una persona consente di accedere ai propri dati sanitari, applica tali scelte a ogni richiesta, mostra alla persona chi ha avuto accesso a cosa e consente loro di revocare l'accesso. In Anpheros, il consenso fa parte del record FHIR R4 stesso anziché essere un servizio separato.

### Quali standard utilizza Anpheros per il consenso del paziente?
OAuth 2.1 con PKCE per il flusso di autorizzazione e gli ambiti paziente SMART on FHIR v2 (`patient/<Type>.<cruds>` con un filtro opzionale `?category=`) per ciò che un'applicazione può leggere o scrivere. OpenID Connect aggiunge un ID token quando si richiede `openid fhirUser`.

### Un paziente può limitare l'accesso solo ad alcuni dei propri dati?
Sì. L'accesso è limitato ai tipi di risorsa e alle categorie negli ambiti concessi, ad esempio solo alle Osservazioni di laboratorio. Tutto il resto restituisce un errore.

### Quanto dura il consenso?
La persona sceglie 30, 90, 180 o 365 giorni nella pagina del consenso. Dopodiché la concessione scade e l'applicazione deve richiederla nuovamente.

### Il paziente può vedere cosa ha fatto un'applicazione con l'accesso?
Sì. La persona vede ogni applicazione con accesso, i suoi ambiti e la scadenza, e un registro degli accessi che elenca ciò che ogni applicazione ha letto o scritto.

### Cosa succede quando il consenso viene revocato?
La richiesta successiva con quel token di accesso fallisce, il token di aggiornamento non può essere utilizzato per ottenerne uno nuovo e il tuo server riceve un webhook `consent.revoked` se è sottoscritto.

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

## Correlati

- [Modello di consenso e accesso](https://developers.anpheros.com/it/guides/consent): le regole complete
- [Autenticazione e OAuth](https://developers.anpheros.com/it/guides/authentication): token, scope e scambio del codice
- [Come implementare il consenso del paziente con SMART on FHIR](https://developers.anpheros.com/it/guides/smart-on-fhir-backend)
- [Webhook](https://developers.anpheros.com/it/guides/webhooks): `consent.granted` e `consent.revoked`
- [Provenienza dei dati medici spiegata](https://developers.anpheros.com/it/guides/medical-data-provenance)
- [API per dati longitudinali del paziente](https://developers.anpheros.com/it/guides/longitudinal-patient-data-api)
