# Plataforma de consentimiento del paciente para aplicaciones de salud

> Consentimiento integrado en la capa de datos: OAuth 2.1 y ámbitos SMART, propósito y caducidad elegidos por la persona, un registro de acceso que puede ver, revocación en la siguiente solicitud y lo que su aplicación aún posee.

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

**Una plataforma de consentimiento del paciente permite a una persona decidir qué aplicaciones pueden leer o modificar su historial médico, con qué propósito y durante cuánto tiempo, y les permite ver y revocar ese acceso en cualquier momento.** Anpheros integra el consentimiento en la capa de datos: una aplicación accede al registro FHIR R4 de un paciente solo a través de una concesión que la persona aprobó en la página de consentimiento de Anpheros, cada lectura y escritura bajo esa concesión se registra donde la persona puede verlo, y la revocación entra en vigor en la siguiente solicitud. Esta página muestra cómo funciona, qué debe hacer su aplicación y qué no necesita construir.

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

## Por qué el consentimiento pertenece a la capa de datos

La mayoría de las aplicaciones de salud registran el consentimiento como una casilla de verificación en su propia base de datos y luego lo aplican en el código de la aplicación. Esto funciona hasta que una segunda aplicación, una integración clínica o una función de IA necesita los mismos datos: cada una debe reimplementar las reglas, y la persona no tiene un lugar único para ver quién tiene acceso. Cuando la plataforma que almacena el registro también aplica el consentimiento, cada cliente obtiene las mismas reglas y la persona obtiene una lista de aplicaciones para revisar.

| | Consentimiento como indicador en su aplicación | Consentimiento en la capa de datos (Anpheros) |
|---|---|---|
| Dónde se aplica | En el código de cada aplicación | En cada solicitud de API, por la plataforma |
| Alcance del acceso | Lo que la aplicación decida leer | Solo los tipos de recursos y categorías concedidos |
| Caducidad | Raramente implementado | Elegido por la persona: 30, 90, 180 o 365 días |
| Lo que la persona ve | Depende de la aplicación | Cada aplicación, sus alcances y caducidad, y un registro de acceso |
| Revocación | Debe propagarse manualmente | La siguiente solicitud falla; el token de actualización deja de funcionar |

## Lo que el paciente controla

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

## Cómo tu aplicación solicita consentimiento

Anpheros utiliza OAuth 2.1 con PKCE y ámbitos de SMART on FHIR v2. Tu aplicación envía a la persona a la página de consentimiento con los ámbitos que necesita y un propósito opcional; después de la aprobación, recibe un token de acceso (30 minutos) y un token de actualización rotatorio (30 días) para exactamente un paciente.

```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 ámbito como `patient/Observation.rs?category=laboratory` limita la lectura a los resultados de laboratorio; el filtro de categoría es aplicado por el servidor. Un tipo de recurso fuera de la concesión devuelve `403`; un paciente fuera de la concesión devuelve `404`, por lo que los IDs no pueden ser sondeados.

## Reaccionando a la revocación

Cuando la persona finaliza una concesión, la siguiente solicitud con ese token falla y el token de actualización no puede restaurar el acceso. Para limpiar de inmediato, suscríbase al webhook `consent.revoked`, que transporta el `grant_id`, el ID del paciente que ve, los ámbitos y `revoked_at`.

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

## Lo que Anpheros no hace

- No recopila consentimiento para fines ajenos al acceso a datos, como marketing o participación en investigación.
- No decide su base legal. El consentimiento para el acceso es un control; su aviso de privacidad, contratos y registros de procesamiento siguen siendo suyos.
- La clave API propia de un proyecto ve los pacientes que ese proyecto creó, sin una concesión. El consentimiento rige el acceso por parte de otras aplicaciones.

## Preguntas frecuentes

### ¿Qué es una plataforma de consentimiento del paciente?
Software que registra qué aplicaciones una persona permite acceder a sus datos de salud, aplica esas elecciones en cada solicitud, muestra a la persona quién accedió a qué y le permite retirar el acceso. En Anpheros, el consentimiento es parte del registro FHIR R4 en sí mismo en lugar de un servicio separado.

### ¿Qué estándares utiliza Anpheros para el consentimiento del paciente?
OAuth 2.1 con PKCE para el flujo de autorización y los ámbitos de paciente SMART on FHIR v2 (`patient/<Type>.<cruds>` con un filtro opcional `?category=`) para lo que una aplicación puede leer o escribir. OpenID Connect agrega un ID token cuando solicita `openid fhirUser`.

### ¿Puede un paciente limitar el acceso solo a algunos de sus datos?
Sí. El acceso se limita a los tipos de recursos y categorías en los ámbitos otorgados, por ejemplo, solo Observaciones de laboratorio. Todo lo demás devuelve un error.

### ¿Cuánto dura el consentimiento?
La persona elige 30, 90, 180 o 365 días en la página de consentimiento. Después de eso, la concesión expira y la aplicación debe volver a solicitarla.

### ¿Puede el paciente ver lo que una aplicación hizo con el acceso?
Sí. La persona ve cada aplicación con acceso, sus ámbitos y fecha de caducidad, y un registro de acceso que enumera lo que cada aplicación leyó o escribió.

### ¿Qué sucede cuando se revoca el consentimiento?
La siguiente solicitud con ese access token falla, el refresh token no se puede usar para obtener uno nuevo, y su servidor recibe un webhook `consent.revoked` si está suscrito.

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

## Relacionado

- [Modelo de consentimiento y acceso](https://developers.anpheros.com/es/guides/consent): las reglas completas
- [Autenticación y OAuth](https://developers.anpheros.com/es/guides/authentication): tokens, ámbitos y el intercambio de códigos
- [Cómo implementar el consentimiento del paciente con SMART on FHIR](https://developers.anpheros.com/es/guides/smart-on-fhir-backend)
- [Webhooks](https://developers.anpheros.com/es/guides/webhooks): `consent.granted` y `consent.revoked`
- [Procedencia de datos médicos explicada](https://developers.anpheros.com/es/guides/medical-data-provenance)
- [API de datos longitudinales del paciente](https://developers.anpheros.com/es/guides/longitudinal-patient-data-api)
