# Provenance des données médicales expliquée

> Ce que la provenance enregistre à chaque écriture sur un enregistrement FHIR R4 — type d'auteur, personne, organisation, système source, versions — comment la définir avec des en-têtes, comment la lire, et comment elle étiquette les données fournies aux modèles d'IA.

Source: https://developers.anpheros.com/fr/guides/medical-data-provenance

**La provenance est l'enregistrement de l'origine d'une donnée médicale : qui l'a écrite, au nom de quelle organisation, depuis quel système, quand, et ce qui a changé dans chaque version.** Dans un enregistrement qui collecte des données de patients, d'appareils, de cliniques, de laboratoires et d'IA, la provenance est ce qui rend une valeur digne de confiance : une mesure de tension artérielle saisie à domicile et une mesurée en clinique semblent identiques sans elle. Dans Anpheros, chaque écriture sur un enregistrement HL7 FHIR R4 produit automatiquement une ressource FHIR `Provenance`. Cette page explique ce qu'elle contient, comment la remplir correctement et comment la lire.

## Pourquoi la provenance est importante

- **Confiance clinique.** Un médecin accordera une importance différente à un résultat de laboratoire qu'à une valeur saisie par le patient ou à un nombre extrait par une IA à partir d'une photo.
- **Sécurité de l'IA.** Un modèle recevant un enregistrement doit savoir quels éléments sont des faits et quels sont des notes rédigées par un autre modèle. Sans étiquettes, il les traite de la même manière.
- **Corrections et litiges.** Lorsqu'une valeur change, tout le monde doit savoir quelle était la valeur précédente, qui l'a modifiée et pourquoi.
- **Responsabilité.** Conformément au RGPD et à l'Espace européen des données de santé, une organisation doit être en mesure de démontrer ce qu'elle a fait des données de santé d'une personne.
- **Partage.** Lorsqu'un patient autorise une deuxième clinique à lire son dossier, cette clinique doit savoir quelles données la première clinique a saisies.

## Ce qu'Anpheros enregistre à chaque écriture

| Question | Où c'est enregistré | Comment le définir |
|---|---|---|
| Quel type d'auteur ? | `agent.who.identifier` (type d'auteur) | `author_type` dans `/v1`, ou en-tête `X-Anpheros-Author-Type` : `patient`, `practitioner`, `device`, `import`, `ai` |
| Quelle personne ? | `agent.who.reference` | `X-Anpheros-Author-Ref: Practitioner/<id>`, ou `X-Anpheros-Acting-As` |
| Pour quelle organisation ? | `agent.onBehalfOf` | l'organisation du `PractitionerRole`, ou `X-Anpheros-On-Behalf-Of: Organization/<id>` |
| De quel système ? | `entity` avec le rôle `source` | `X-Anpheros-Source-System: <name>` |
| Quel enregistrement dans ce système ? | id d'origine | `X-Anpheros-Origin-Id: <id>` |
| Quand, et que s'est-il passé ? | `recorded`, `activity` (CREATE, UPDATE, DELETE) | automatique |
| Quelle version ? | `target` pointe vers `<Resource>/<id>/_history/<version>` | automatique |

Si vous ne précisez pas qui est l'auteur, la plateforme enregistre `import`. Elle n'assume jamais `patient`, car une valeur attribuée à tort au patient est pire qu'une valeur honnêtement étiquetée comme importée.

## Une écriture avec une provenance complète

Un cardiologue dans une clinique enregistre une fréquence cardiaque lors d'une visite, via le logiciel de la clinique :

```bash
curl -X POST https://platform.anpheros.com/fhir/R4/Observation -H "Authorization: Bearer $KEY" \
     -H "Content-Type: application/fhir+json" \
     -H "X-Anpheros-Author-Type: practitioner" \
     -H "X-Anpheros-Acting-As: PractitionerRole/$ROLE" \
     -H "X-Anpheros-Source-System: ccn-emr" \
     -d '{ "resourceType": "Observation", "status": "final", "code": {"coding": [{"system": "http://loinc.org", "code": "8867-4"}]}, … }'
```

La provenance que la plateforme écrit :

```json
{"resourceType": "Provenance",
 "target": [{"reference": "Observation/8660eb7c-…/_history/1"}],
 "recorded": "2026-10-12T20:41:47.469000Z",
 "activity": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/v3-DataOperation", "code": "CREATE"}]},
 "agent": [{"type": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/provenance-participant-type", "code": "author"}]},
            "who": {"reference": "PractitionerRole/e6d8c227-…",
                    "identifier": {"system": "https://anpheros.com/fhir/CodeSystem/author-type", "value": "practitioner"}},
            "onBehalfOf": {"reference": "Organization/c3a56a4b-…", "display": "Clinica Cardio Nord"}}],
 "entity": [{"role": "source", "what": {"identifier": {"system": "ccn-emr"}}}]}
```

Le rôle du médecin, sa clinique, le type d'auteur et le système source sont tous présents, en FHIR standard. Le `PractitionerRole` doit exister dans le répertoire de votre projet et être actif. Une requête nommant le praticien de quelqu'un d'autre est refusée :

```json
{"resourceType": "OperationOutcome", "issue": [{"severity": "error", "code": "invalid",
  "diagnostics": "Unknown or inactive Practitioner in X-Anpheros-Acting-As."}]}
```

La configuration du répertoire est abordée dans [Comment intégrer les systèmes de clinique avec un backend FHIR](https://developers.anpheros.com/fr/guides/integrate-clinic-systems-fhir).

## Versions : rien n'est écrasé silencieusement

Chaque mise à jour crée une nouvelle version de la ressource et une nouvelle Provenance pour celle-ci. Après la correction du rythme cardiaque de 92 à 88 ci-dessus :

```bash
curl https://platform.anpheros.com/fhir/R4/Observation/$OBS/_history -H "Authorization: Bearer $KEY"
```

renvoie la version 2 (88) et la version 1 (92). La vue REST résume la Provenance de chaque version :

```bash
curl https://platform.anpheros.com/v1/patients/$PID/provenance/Observation/$OBS -H "Authorization: Bearer $KEY"
```

```json
{"data": [
  {"version": 1, "activity": "CREATE", "recorded": "2026-10-12T20:41:47.469000Z", "author_type": "practitioner", "author": "PractitionerRole/e6d8c227-…", "source_system": "ccn-emr", "fhir": "Provenance/6ed91529-…"},
  {"version": 2, "activity": "UPDATE", "recorded": "2026-10-12T20:41:47.500000Z", "author_type": "practitioner", "fhir": "Provenance/3fbf270f-…"}],
 "total": 2}
```

Les suppressions sont logicielles : une ressource supprimée disparaît des recherches, mais son historique et sa Provenance subsistent.

## Lecture de la provenance

```bash
# who wrote this resource (all versions)
GET /fhir/R4/Provenance?target=Observation/{id}
# everything a practitioner recorded
GET /fhir/R4/Provenance?agent=PractitionerRole/{id}
# the same, summarised, per resource
GET /v1/patients/{pid}/provenance/Observation/{id}
```

## Provenance dans les contextes d'IA

L'[API de contexte](https://developers.anpheros.com/fr/guides/llm-healthcare-data) transporte la provenance dans chaque élément qu'elle fournit à un modèle, comme `author_type` et `source`. En forme textuelle :

```
- Type 2 diabetes mellitus (E11), active, onset 2024-10-15 [import/anpheros-sandbox]
- Metformin 1000 mg 1 tablet twice daily with meals, active [patient/anpheros-sandbox]
- Glucose [Mass/volume] in Blood: 2026-09-16: 140.0 mg/dL [device/anpheros-sandbox]
```

Les mesures écrites avec `author_type: ai` n'apparaissent jamais parmi ces faits. Elles sont listées séparément sous `ai_notes` et marquées comme non vérifiées, de sorte qu'un modèle ne puisse pas confondre une supposition d'un modèle précédent avec une mesure. Indiquez au modèle ce que signifient les étiquettes et demandez-lui de les citer ; [Comment créer une application de santé IA avec un backend FHIR](https://developers.anpheros.com/fr/guides/build-ai-healthcare-app) montre une invite qui le fait.

## Ce que le patient voit

La provenance est également ce que le patient voit. Son dossier indique qui a ajouté chaque élément, et sa liste de connexions indique, pour chaque application, qui a accédé à quoi, par nom lorsqu'un praticien agissait ("Dr. Ana Popescu · Clinica Cardio Nord a lu vos résultats de laboratoire"). Voir [Modèle de consentement et d'accès](https://developers.anpheros.com/fr/guides/consent).

## Règles qui rendent la provenance utile

1. **Définissez toujours le type d'auteur.** Cela ne coûte qu'un champ et constitue l'étiquette la plus importante dans l'enregistrement.
2. **Nommez la personne lorsqu'une personne l'a écrit.** Utilisez `X-Anpheros-Acting-As` pour le personnel clinique.
3. **Nommez le système source**, et transmettez l'identifiant propre à la source comme identifiant d'origine lorsqu'il y en a un.
4. **Corrigez en mettant à jour, jamais en supprimant et recréant.** Une mise à jour conserve le lien entre l'ancienne et la nouvelle valeur.
5. **Étiquetez la sortie de l'IA comme `ai`**, y compris les valeurs qu'un modèle a extraites d'un document. Les valeurs dérivées d'un document peuvent également y pointer avec `derived_from`.

## Questions fréquemment posées

### Qu'est-ce que la provenance des données dans le domaine de la santé ?
L'origine et l'historique documentés d'un élément de données de santé : qui l'a créé ou modifié, pour le compte de qui, à partir de quel système et quand. Dans HL7 FHIR, il est représenté par la ressource `Provenance`, qui pointe vers la version exacte de la ressource qu'elle décrit.

### La provenance est-elle la même chose qu'un journal d'audit ?
Non. La provenance décrit les données : qui a écrit chaque version. Un journal d'audit décrit l'accès : qui a lu ou écrit quoi, quand, sous quel consentement. Anpheros conserve les deux ; le patient voit le journal d'accès pour chaque application connectée à son dossier.

### Puis-je écrire mes propres ressources de provenance ?
Anpheros en écrit une pour chaque création, mise à jour et suppression, vous n'avez donc normalement pas à le faire. Utilisez les en-têtes ci-dessus pour le préciser. Une provenance fournie par le client doit cibler des ressources d'un seul patient.

## Liens connexes

- [Modèle de consentement et d'accès](https://developers.anpheros.com/fr/guides/consent)
- [Comment intégrer les systèmes de clinique avec un backend FHIR](https://developers.anpheros.com/fr/guides/integrate-clinic-systems-fhir)
- [Comment normaliser les données médicales](https://developers.anpheros.com/fr/guides/normalize-medical-data)
- [Interopérabilité des données de santé](https://developers.anpheros.com/fr/guides/interoperability)
- [Sécurité, confidentialité et résidence des données](https://developers.anpheros.com/fr/guides/security)
