ediverse Explorer la plateforme

À la une PEPPOL BIS Billing 3.0 L’obligation européenne d’e-invoicing arrive : France sept 2026, Belgique janv 2026, Allemagne 2025.

Provenance — La genèse d'une ressource

Comment cette Observation est-elle arrivée dans le système ? Qui l'a signée ? À partir de quelle source ? Provenance documente la généalogie d'une ressource, aligné sur le standard W3C PROV.

Objet de la ressource

Provenance enregistre la généalogie d'une ou plusieurs ressources cibles : qui l'a créée, à partir de quelle source, dans quel contexte, avec quelle base juridique. C'est la pièce nécessaire pour :

  • Signer numériquement une ressource (signature).
  • Tracer l'import d'une donnée externe (ex : import d'un PDF dans un DocumentReference).
  • Documenter une transformation (un Bundle FHIR généré à partir d'un message HL7 v2).
  • Garantir l'intégrité longitudinale : qui, quand, comment, sur quoi.

Champs clés

ChampTypeCardinalitéRôle
targetReference(Any)[]1..*Obligatoire. Ressource(s) dont on documente la provenance.
occurred[x]Period | dateTime0..1Quand l'événement de création s'est produit.
recordedinstant0..1Quand la Provenance a été consignée.
policyuri[]0..*Politique appliquée (RGPD, BAA, consentement).
locationReference(Location)0..1Lieu de l'activité.
authorizationCodeableReference[]0..*Raison/base légale.
activityCodeableConcept0..1Type d'activité (CREATE, UPDATE, ATTEST…).
basedOnReference(Any)[]0..*Activité parente.
patientReference(Patient)0..1Patient en contexte (R5).
encounterReference(Encounter)0..1Encounter en contexte (R5).
agentBackboneElement[]1..*Obligatoire. Acteurs ayant produit la ressource.
agent.typeCodeableConcept0..1Type d'agent (author, verifier, performer…).
agent.whoReference1..1Identité.
agent.onBehalfOfReference0..1Sur l'autorité de qui agit-il.
entityBackboneElement[]0..*Entités utilisées (sources, dérivations).
entity.rolecode1..1derivation | revision | quotation | source | removal.
entity.whatReference1..1Référence à l'entité source/parente.
signatureSignature[]0..*Signature(s) numérique(s).

Provenance vs AuditEvent

Deux ressources, deux usages :

  • Provenance : Qui a produit cette ressource ? D'où vient-elle ? — créée 1 fois lors de la création (et amendements) de la ressource cible.
  • AuditEvent : Qui a accédé à cette ressource ? Quand ? Avec succès ? — créée à chaque accès, lecture, modification.

En production, une ressource Patient typique aura : 1 Provenance (créée à l'admission) + N AuditEvent (un par lecture/écriture).

Exemple JSON

Provenance d'un consentement signé par le Dr Jones et vérifié par le patient, avec signature détachée XML :

json provenance-consent-signature.json
{
  "resourceType": "Provenance",
  "id": "consent-signature",
  "target": [{ "reference": "Consent/consent-example-signature" }],
  "occurredDateTime": "2026-05-14T15:30:00+02:00",
  "recorded": "2026-05-14T15:32:00.000Z",
  "policy": ["http://acme.com/policies/Consent_2026"],
  "location": { "reference": "Location/clinic-room-3" },
  "authorization": [{
    "coding": [{
      "system": "http://terminology.hl7.org/CodeSystem/v3-ActReason",
      "code": "TREAT",
      "display": "treatment"
    }]
  }],
  "activity": {
    "coding": [{
      "system": "http://terminology.hl7.org/CodeSystem/v3-DataOperation",
      "code": "ATTEST",
      "display": "attest"
    }]
  },
  "agent": [{
    "type": {
      "coding": [{
        "system": "http://terminology.hl7.org/CodeSystem/provenance-participant-type",
        "code": "author"
      }]
    },
    "who": { "reference": "Practitioner/dr-jones" }
  }, {
    "type": {
      "coding": [{
        "system": "http://terminology.hl7.org/CodeSystem/provenance-participant-type",
        "code": "verifier"
      }]
    },
    "who": { "reference": "Patient/example" }
  }],
  "entity": [{
    "role": "source",
    "what": { "reference": "DocumentReference/consent-form-template" }
  }],
  "signature": [{
    "type": [{
      "system": "urn:iso-astm:E1762-95:2013",
      "code": "1.2.840.10065.1.12.1.1",
      "display": "Author's Signature"
    }],
    "when": "2026-05-14T15:30:00+02:00",
    "who": { "reference": "Practitioner/dr-jones" },
    "sigFormat": "application/signature+xml",
    "data": "Li4u"
  }]
}

Pièges courants

  • Pas d'agent author — toute Provenance DOIT identifier au moins un auteur.
  • Provenance manquante pour les imports externes — un PDF ou un message v2 transformé en FHIR DOIT être accompagné d'une Provenance qui pointe vers la source.
  • Confondre basedOn et entitybasedOn est une activité parente, entity est une donnée source.
  • Signature non détachée — préférer une signature détachée (XML-DSig ou JWS) référençant target par hash plutôt qu'inline.
  • Provenance partagée entre ressources non liées — une Provenance peut référencer plusieurs target, mais seulement si l'événement de création est unique pour toutes.

Ressources liées

  • AuditEvent — qui a accédé (vs Provenance = qui a produit).
  • Consent — base juridique souvent référencée.
  • DocumentReference, Composition — cibles fréquentes d'une Provenance.
  • Signature — type de donnée embarqué.