# Créer une application de santé

> Tutoriel : utilisez Anpheros comme backend de données médicales pour une application de santé — patients, mesures, conditions, médicaments, documents, laboratoires, consentement, webhooks et SDK.

Source: https://developers.anpheros.com/fr/guides/build-a-healthcare-app

Ce tutoriel montre comment une application de santé ou médicale peut utiliser Anpheros Platform comme son backend de données médicales : où les dossiers des patients sont stockés, comment ils sont lus et écrits, comment d'autres systèmes sont connectés et comment le patient garde le contrôle. Chaque appel ci-dessous fait partie de l'API publique ([référence](https://developers.anpheros.com/docs)).

## Ce que vous construisez

Une application typique destinée aux patients — un suivi de maladie chronique, une application de santé familiale, un compagnon de télésurveillance — doit :

1. conserver un dossier par patient : mesures, conditions, médicaments, documents ;
2. afficher ce dossier sous forme de listes et de chronologie ;
3. accepter des données provenant d'autres sources (appareils, laboratoires, cliniques) ;
4. partager des parties du dossier, avec le consentement du patient ;
5. réagir lorsque quelque chose change.

Avec Anpheros, votre application conserve ses propres utilisateurs, écrans et logique métier, et délègue le dossier médical à la plateforme :

```
Mobile / web app ──► your backend ──► Anpheros Platform API ──► FHIR R4 record of each patient
                         ▲                                              │
                         └──────────── signed webhooks ◄────────────────┘
```

Votre backend détient la clé API ; l'application communique avec votre backend. (Les applications qui agissent pour un patient qui possède déjà un dossier Anpheros utilisent OAuth à la place — voir l'étape 7.)

## 1. Obtenir une clé de sandbox

La sandbox est en libre-service : connectez-vous avec Google sur le tableau de bord (`https://platform.anpheros.com/dashboard/`) et appuyez sur *Obtenir une clé de sandbox*. Les clés de sandbox commencent par `sk_test_` et ne peuvent accéder qu'à la base de données de la sandbox, où votre projet dispose déjà de sa propre copie de 30 patients synthétiques.

```bash
export BASE=https://platform.anpheros.com
export KEY=sk_test_…
curl $BASE/v1/patients -H "Authorization: Bearer $KEY"
```

## 2. Créer un patient

Chaque utilisateur de votre application obtient un enregistrement de patient appartenant à votre projet.

```bash
curl -X POST $BASE/v1/patients -H "Authorization: Bearer $KEY" -H 'content-type: application/json' \
     -H "Idempotency-Key: $(uuidgen)" \
     -d '{"given": "Elena", "family": "Ionescu", "birth_date": "1985-09-03", "gender": "female"}'
```

La réponse contient le patient `id` (votre propre identifiant pour cette personne — d'autres projets en voient un différent) et sa référence `fhir`.

## 3. Écrire les mesures, les conditions et les médicaments

Indiquez la provenance des données avec `author_type` : `patient`, `practitioner`, `device`, `import` ou `ai`. Si vous l'omettez, la plateforme enregistre `import`, jamais `patient` par défaut.

```bash
# a blood-pressure reading from a connected device (LOINC panel with two components)
curl -X POST $BASE/v1/patients/$PID/observations -H "Authorization: Bearer $KEY" -H 'content-type: application/json' \
     -H "Idempotency-Key: $(uuidgen)" -d '{
  "code": "85354-9", "display": "Blood pressure panel", "category": "vital-signs",
  "effective_at": "2026-09-28T08:00:00Z", "author_type": "device",
  "components": [
    {"code": "8480-6", "display": "Systolic", "value": 128, "unit": "mm[Hg]"},
    {"code": "8462-4", "display": "Diastolic", "value": 82, "unit": "mm[Hg]"}
  ]}'

# a diagnosis (ICD-10 by default)
curl -X POST $BASE/v1/patients/$PID/conditions -H "Authorization: Bearer $KEY" -H 'content-type: application/json' \
     -d '{"code": "I10", "display": "Essential hypertension", "onset": "2024-03-01", "author_type": "practitioner"}'

# a medication (ATC by default)
curl -X POST $BASE/v1/patients/$PID/medications -H "Authorization: Bearer $KEY" -H 'content-type: application/json' \
     -d '{"display": "Amlodipine 5 mg", "code": "C08CA01", "dosage": "1 tablet in the morning", "start": "2024-03-01", "author_type": "patient"}'
```

Catégories d'observation : `vital-signs`, `laboratory`, `symptom`, `activity`, `survey`, `exam`, `imaging`, `social-history`. Chaque écriture est stockée comme une ressource FHIR et obtient automatiquement une entrée `Provenance`.

## 4. Stocker les documents

```bash
# create the document, then upload the bytes
curl -X POST $BASE/v1/patients/$PID/documents -H "Authorization: Bearer $KEY" -H 'content-type: application/json' \
     -d '{"title": "Blood tests 2026-09-14", "kind": "lab_report", "content_type": "application/pdf", "date": "2026-09-14"}'
curl -X PUT $BASE/v1/documents/$DOC/content -H "Authorization: Bearer $KEY" -H 'content-type: application/pdf' --data-binary @report.pdf
```

L'original est immuable après le téléchargement ; les valeurs que vous en extrayez peuvent y pointer avec `derived_from`.

## 5. Lire l'enregistrement

```bash
curl "$BASE/v1/patients/$PID/observations?category=vital-signs&limit=20" -H "Authorization: Bearer $KEY"
curl "$BASE/v1/patients/$PID/medications?status=active" -H "Authorization: Bearer $KEY"
curl "$BASE/v1/patients/$PID/timeline?from=2026-06-01" -H "Authorization: Bearer $KEY"   # everything, chronologically
```

Lorsque vous avez besoin du modèle FHIR complet, les mêmes données sont disponibles à `/fhir/R4` avec les mêmes identifiants ([API FHIR R4](https://developers.anpheros.com/fr/guides/fhir)).

## 6. Connecter les laboratoires et les appareils

- **Rapports de laboratoire :** `POST /v1/patients/{id}/labs/import` avec CSV, HL7 v2 ORU^R01 ou JSON transforme un rapport complet en Observations de laboratoire avec des codes LOINC ([Connecteur de laboratoire](https://developers.anpheros.com/fr/guides/lab-connector)).
- **Appareils et wearables :** écrire des Observations avec `author_type: device` et le code LOINC de la mesure (fréquence cardiaque, SpO₂, pas, durée du sommeil et autres sont listés dans [Systèmes de codes FHIR](https://developers.anpheros.com/fr/guides/fhir-code-systems)).

## 7. Accéder à un dossier que le patient possède déjà (OAuth)

Si la personne possède déjà un dossier dans Anpheros (par exemple via Anpheros Daily), votre application peut demander l'accès au lieu de créer un nouveau patient : enregistrez une application, envoyez la personne à la page de consentement avec les scopes dont vous avez besoin, échangez le code contre des tokens et appelez l'API avec le jeton d'accès. Le patient choisit la durée et peut révoquer l'accès à tout moment. Détails : [Authentification et OAuth](https://developers.anpheros.com/fr/guides/authentication).

## 8. Réagir aux changements avec les webhooks

```bash
curl -X POST $BASE/v1/webhooks -H "Authorization: Bearer $KEY" -H 'content-type: application/json' \
     -d '{"url": "https://your.app/anpheros/hook", "events": ["resource.created", "consent.revoked"]}'
```

Vérifiez l'en-tête `Anpheros-Signature` de chaque livraison ([Webhooks](https://developers.anpheros.com/fr/guides/webhooks)).

## 9. Utiliser un SDK

Le même flux en TypeScript :

```ts
import { Anpheros, apiKey } from '@anpheros/sdk';

const anpheros = new Anpheros({ auth: apiKey(process.env.ANPHEROS_KEY!) });
const { data: patients } = await anpheros.patients.list();
const vitals = await anpheros.observations.list(patients[0].id, { category: 'vital-signs', limit: 20 });
```

Un client Dart / Flutter de forme similaire est disponible sous `anpheros_sdk` ([SDKs](https://developers.anpheros.com/fr/guides/sdks)).

## Avant de passer en production

- Les clés de production (`sk_live_`) sont délivrées aux organisations vérifiées ayant signé un accord de traitement des données.
- Lisez la page [Sécurité, confidentialité et résidence des données](https://developers.anpheros.com/fr/guides/security) et les [limites](https://developers.anpheros.com/fr/guides/limits).
- Gérez les erreurs par leur type et citez l'en-tête `Anpheros-Request-Id` lorsque vous contactez le support ([Erreurs](https://developers.anpheros.com/fr/guides/errors)).

## Liens connexes

- [Comment créer une API de santé avec TypeScript](https://developers.anpheros.com/fr/guides/healthcare-api-typescript) : tutoriel étape par étape avec Express
- [Comment créer une application de santé avec Flutter](https://developers.anpheros.com/fr/guides/healthcare-app-flutter) : tutoriel étape par étape avec le SDK Dart
- [Comment créer une application de santé IA avec un backend FHIR](https://developers.anpheros.com/fr/guides/build-ai-healthcare-app) : tutoriel étape par étape en TypeScript
- [Développer avec Anpheros](https://developers.anpheros.com/fr/guides/build-with-anpheros)
- [Backend et base de données d'applications médicales](https://developers.anpheros.com/fr/guides/medical-app-backend)
- [API de données médicales](https://developers.anpheros.com/fr/guides/medical-data-api)
- [Développement de logiciels de santé](https://developers.anpheros.com/fr/guides/healthcare-software)
- [Comment créer une application de dossier de santé personnel (PHR) avec FHIR](https://developers.anpheros.com/fr/guides/personal-health-record-app)
