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.

PlanDefinition — Orchestration d'actions cliniques

Le squelette d'un protocole, d'un parcours de soin ou d'un order set. Combine ActivityDefinition, règles ECA (Event-Condition-Action) et bibliothèques CQL pour générer dynamiquement un CarePlan ou un RequestOrchestration.

Objet de la ressource

PlanDefinition représente un modèle d'actions ordonnées — protocole, order set, parcours, règle ECA. Le scope est plus large qu'ActivityDefinition : un PlanDefinition peut déclencher d'autres PlanDefinition imbriquées, instancier plusieurs ActivityDefinition en parallèle, et porter des règles conditionnelles.

Les cas d'usage typiques :

  • Order set — paquet d'ordres médicaux pour une situation donnée (admission ICU, suspicion AVC).
  • Protocole clinique — séquence d'évaluations et de traitements à appliquer.
  • Règle CDS — déclencheur (Observation, MedicationRequest) + condition (CQL) + actions.
  • Parcours de soin — itinéraire structuré pour une pathologie (diabète, insuffisance cardiaque).

Champs clés

ChampTypeCardinalitéRôle
urluri0..1URL canonique stable.
identifierIdentifier[]0..*Identifiants métier.
versionstring0..1Version sémantique.
namestring0..1Nom technique.
titlestring0..1Titre humain.
typeCodeableConcept0..1order-set | clinical-protocol | eca-rule | workflow-definition.
statuscode1..1draft | active | retired | unknown.
subject[x]CodeableConcept | Reference | canonical0..1Sujet par défaut.
goalBackboneElement[]0..*Buts cliniques à atteindre.
actorBackboneElement[]0..*Acteurs du plan (rôle, qualification).
actionBackboneElement[]0..*Actions à exécuter (cf. ci-dessous).
librarycanonical[]0..*Bibliothèques CQL.

Modèle d'action

Le champ action est récursif et porte la logique d'orchestration :

  • trigger — quand déclencher (TriggerDefinition : événement nommé, condition de données, scheduling).
  • condition — précondition CQL/FHIRPath (applicability, start, stop).
  • input / output — données requises et produites.
  • relatedAction — dépendance avec une autre action (before, after, concurrent).
  • selectionBehaviorany | all | all-or-none | exactly-one | at-most-one | one-or-more.
  • requiredBehaviormust | could | must-unless-documented.
  • cardinalityBehaviorsingle | multiple.
  • definitionCanonical — pointe vers ActivityDefinition, Questionnaire, autre PlanDefinition.
  • action imbriquée — pour les sous-protocoles.

Exemple JSON

json plandefinition-example.json
{
  "resourceType": "PlanDefinition",
  "id": "low-suicide-risk-order-set",
  "url": "http://example.org/PlanDefinition/low-suicide-risk-order-set",
  "version": "5.0.0",
  "name": "LowSuicideRiskOrderSet",
  "title": "Low Suicide Risk Order Set",
  "type": {
    "coding": [{
      "system": "http://terminology.hl7.org/CodeSystem/plan-definition-type",
      "code": "order-set",
      "display": "Order Set"
    }]
  },
  "status": "active",
  "experimental": true,
  "date": "2026-05-15",
  "publisher": "HL7 International (Clinical Decision Support WG)",
  "action": [{
    "title": "Suicide Risk Assessment",
    "definitionCanonical": "http://example.org/ActivityDefinition/suicide-risk-assessment"
  }]
}

Opération $apply

L'opération $apply matérialise un PlanDefinition pour un sujet et un contexte :

  • POST /PlanDefinition/{id}/$apply avec subject, encounter, practitioner, organization.
  • Le serveur évalue les trigger, condition et dynamicValue.
  • Il retourne un CarePlan ou un RequestOrchestration agrégeant les ressources concrètes (MedicationRequest, ServiceRequest, Task…).

Pièges courants

  • Actions sans title — l'utilisateur clinique ne sait pas quoi cocher dans l'order set.
  • CQL non versionnée — la library doit pointer une version précise pour la reproductibilité.
  • RelatedAction circulaire — l'évaluation du plan boucle.
  • SelectionBehavior absent sur un groupe — comportement par défaut any, rarement ce que l'on souhaite.

Ressources liées