ediverse Explore the platform

Spotlight PEPPOL BIS Billing 3.0 The EU e-invoicing mandate is here — France Sept 2026, Belgium Jan 2026, Germany 2025.

RequestOrchestration — Request orchestration

The R4 RequestGroup successor: a group of clinical requests linked by conditions, timing dependencies and alternatives. The core of CDS Hooks and executed PlanDefinitions.

Purpose

RequestOrchestration groups multiple Request-family resources (MedicationRequest, ServiceRequest, NutritionOrder, Task, etc.) with their relationships: temporal ordering, applicability conditions, exclusive alternatives. It is typically produced by applying a PlanDefinition (protocol) through a CDS (Clinical Decision Support) engine.

Typical use case: a post-operative protocol generated automatically at discharge from a procedure: analgesia, day-1 labs, day-30 follow-up. Each sub-action can condition or follow another.

Key fields

FieldTypeCardinalityRole
statuscode1..1Mandatory. draft, active, on-hold, revoked, completed, entered-in-error, unknown.
intentcode1..1Mandatory. proposal, plan, directive, order, original-order, reflex-order, filler-order, instance-order, option.
prioritycode0..1routine, urgent, asap, stat.
codeCodeableConcept0..1Orchestration type.
subjectReference(Patient | Group)0..1Beneficiary.
encounterReference(Encounter)0..1Context.
authoredOndateTime0..1Creation date.
authorReference(Device | Practitioner | PractitionerRole)0..1Author.
instantiatesCanonicalcanonical(PlanDefinition)[]0..*Instantiated protocol.
basedOnReference(Any)[]0..*Parent requests.
actionBackboneElement[]0..*Actions composing the orchestration.

Actions, conditions, relations

Each action can carry a target resource (MedicationRequest, ServiceRequest, Task…) or be a grouping node (recursive action.action[]). The condition[] elements define when the action applies (CQL or FHIRPath). The relatedAction[] elements define temporal dependencies (before-start, after-end, concurrent) with offsets.

JSON example

Post-op protocol with systematic analgesia and conditional lab workup:

json requestorchestration-postop.json
{
  "resourceType": "RequestOrchestration",
  "id": "post-op-protocol-001",
  "status": "active",
  "intent": "order",
  "priority": "routine",
  "subject": { "reference": "Patient/doe-john" },
  "encounter": { "reference": "Encounter/enc-postop-001" },
  "authoredOn": "2026-05-15T14:00:00+02:00",
  "author": { "reference": "Practitioner/dr-smith" },
  "action": [
    {
      "title": "Post-op analgesia",
      "description": "Paracetamol 1g PO every 6h for 48h",
      "timingTiming": {
        "repeat": { "frequency": 4, "period": 24, "periodUnit": "h", "duration": 48 }
      },
      "resource": { "reference": "MedicationRequest/mr-paracetamol-001" }
    },
    {
      "title": "Day-1 lab workup",
      "condition": [{
        "kind": "applicability",
        "expression": { "language": "text/cql", "expression": "PatientHasDiabetes" }
      }],
      "relatedAction": [{
        "targetId": "lab-day-1",
        "relationship": "after-end",
        "offsetDuration": { "value": 24, "unit": "h" }
      }],
      "resource": { "reference": "ServiceRequest/sr-cbc-d1" }
    }
  ]
}

Common pitfalls

  • Migration from R4 RequestGroup — the resourceType has changed. Old R4 RequestGroup must be transformed or back-ported.
  • CQL conditions not evaluable — without an embedded CQL engine, condition are dead descriptions. Prefer FHIRPath for portability.
  • Cycles in relatedAction — A after B and B after A = infinite loop. The execution engine must validate the DAG.
  • Confusing with Task — RequestOrchestration is static (the order), Task is dynamic (the execution).
  • Target resources not createdaction.resource must point to an existing resource; otherwise the orchestration is broken.