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 — détail : audit trail FHIR

Ressource d'audit trail métadonnée qui trace : qui a créé/modifié quoi, quand, avec quel agent (humain + device), sous quelle autorité légale. Compatible W3C PROV-DM, indispensable pour RGPD article 30 (registre des activités) et HIPAA audit logs.

Lien W3C PROV-DM

FHIR Provenance est aligné sur le W3C Provenance Data Model (PROV-DM) :

  • target = PROV Entity (la ressource impactée).
  • agent = PROV Agent (qui a fait).
  • activity = PROV Activity (l'action : CREATE, UPDATE, DELETE).
  • entity = liens avec d'autres entités (version précédente, ressource dérivée).

Permet l'export vers des graphes PROV-O (RDF) pour analyses de provenance avancées.

Champs clés

ChampCardinalitéRôle
target1..*Ressource(s) impactée(s) par l'action.
occurred[x]0..1Quand l'action est arrivée (Period ou dateTime).
recorded1..1Quand le Provenance lui-même est enregistré.
policy0..*URI vers la politique applicable (procédure, règle métier).
location0..1Lieu de l'action.
authorization0..*Justification légale/médicale (TREAT, EMERG, REQUEST...).
activity0..1CREATE / UPDATE / DELETE / READ / EXECUTE (v3-DataOperation).
agent1..*Acteurs (auteur, device, organisation, witness).
entity0..*Autres entités liées (revision, derivation, source).
signature0..*Signature électronique JWS/XAdES.

Provenance vs AuditEvent

Choix critique :

  • Provenancemétadonnée business. Attaché aux ressources métier (qui a écrit cette prescription, qui a modifié cet examen). Léger, indexé avec les ressources.
  • AuditEventlog technique. Trace des accès, lectures, exports, exceptions. Volume élevé, stockage séparé.

En pratique : Provenance pour le "what" et le "who" de chaque changement. AuditEvent pour les accès lecture + erreurs.

Exemple : modification ordonnance par médecin

json provenance-rx-update.json
{
  "resourceType": "Provenance",
  "id": "prov-rx-887-update",
  "target": [{ "reference": "MedicationRequest/rx-doliprane-2026-887" }],
  "occurredDateTime": "2026-05-19T15:30:00+02:00",
  "recorded": "2026-05-19T15:30:05+02:00",
  "policy": [
    "https://www.hl7.fr/policies/PrescriptionElectronique-v3.html"
  ],
  "location": { "reference": "Location/cabinet-bernard-paris13" },
  "authorization": [{
    "concept": {
      "coding": [{
        "system": "http://terminology.hl7.org/CodeSystem/v3-ActReason",
        "code": "TREAT",
        "display": "Treatment"
      }]
    }
  }],
  "activity": {
    "coding": [{
      "system": "http://terminology.hl7.org/CodeSystem/v3-DataOperation",
      "code": "UPDATE"
    }]
  },
  "agent": [{
    "type": {
      "coding": [{
        "system": "http://terminology.hl7.org/CodeSystem/provenance-participant-type",
        "code": "author"
      }]
    },
    "role": [{
      "coding": [{
        "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType",
        "code": "AUT"
      }]
    }],
    "who": {
      "reference": "Practitioner/dr-bernard-claude",
      "display": "Dr Claude BERNARD - RPPS 10003040506"
    }
  }, {
    "type": {
      "coding": [{
        "system": "http://terminology.hl7.org/CodeSystem/provenance-participant-type",
        "code": "device"
      }]
    },
    "who": {
      "reference": "Device/maincare-prescription-module-v8.2"
    }
  }],
  "entity": [{
    "role": "revision",
    "what": {
      "reference": "MedicationRequest/rx-doliprane-2026-887/_history/2",
      "display": "Previous version : 1 cp x 4 par jour"
    }
  }],
  "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-19T15:30:05+02:00",
    "who": { "reference": "Practitioner/dr-bernard-claude" },
    "sigFormat": "application/jose",
    "data": "eyJhbGciOiJSUzI1NiIsImtpZCI6IkRSX0JFUk5BUkRfQ0xBVURFXzIwMjYifQ..."
  }]
}

Pièges courants

  • Pas de signature — pour la France, une prescription électronique doit être signée (CPS card + JWS). Provenance sans signature = invalide médico-légalement.
  • agent absent ou anonyme — le "who" doit être identifié (RPPS, NPI, identifiant unique). Sinon impossible de tracer l'imputabilité.
  • occurred = recorded — confondre les deux. occurred = quand l'acte clinique, recorded = quand le système l'a enregistré (peut différer en cas de saisie différée).
  • entity[].role manquant — sans role, on ne sait pas si l'entité référencée est une version antérieure, une source, un derivative.

Ressources liées