EventDefinition — détail : triggers CDS
Définition réutilisable d'un trigger : nommé, partagé entre PlanDefinition, Subscription, CDS Hooks. Pierre angulaire de l'orchestration clinique évènementielle.
Rôle des triggers nommés
EventDefinition publie un trigger comme une fonction CQL exportable : nom canonique, condition, filtre. Plusieurs PlanDefinition peuvent référencer le même EventDefinition au lieu de redupliquer la logique trigger. Idem pour les Subscriptions : on s'abonne à l'EventDefinition, et toute modification du trigger se propage.
Champs clés
| Champ | Cardinalité | Rôle |
|---|---|---|
url | 0..1 | URL canonique pour référencement croisé. |
version | 0..1 | Version sémantique. |
status | 1..1 | draft | active | retired | unknown. |
trigger | 1..* | Définition(s) TriggerDefinition. |
Type TriggerDefinition
Sous-types TriggerDefinition.type :
named-event— évènement nommé arbitraire.periodic— déclenchement temporel régulier.data-changed— toute modif sur le data point.data-added,data-modified,data-removed.data-accessed,data-access-ended.
Exemple : admission ICU
{
"resourceType": "EventDefinition",
"id": "icu-admission-event",
"url": "http://example.org/fhir/EventDefinition/icu-admission",
"version": "1.0.0",
"name": "ICUAdmissionEvent",
"title": "ICU Admission Event",
"status": "active",
"experimental": false,
"date": "2026-05-18",
"publisher": "Hospital CDS Team",
"description": "Triggered when an Encounter with class=ICU is created or updated to active.",
"trigger": [{
"type": "named-event",
"name": "encounter-icu-active",
"data": [{
"type": "Encounter",
"codeFilter": [{
"path": "class",
"code": [{
"system": "http://terminology.hl7.org/CodeSystem/v3-ActCode",
"code": "ACUTE"
}]
}]
}],
"condition": {
"language": "text/fhirpath",
"expression": "Encounter.status = 'in-progress' and Encounter.serviceType.coding.exists(code = 'ICU')"
}
}]
} Pièges courants
- Pas de
conditionFHIRPath — un EventDefinition trop large déclenche du bruit massif sur les Subscriptions. - URL canonique mutable — l'URL ne doit pas changer entre versions ; utiliser
version. - Confusion avec MessageHeader.event — MessageHeader.event décrit un évènement réseau, EventDefinition.trigger décrit une règle CDS.