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.

TaskList — Materialized worklist

TaskList is not a native FHIR resource. It is a pattern: the materialization of a Task worklist for an actor, via Bundle or List.

Pattern purpose

A worklist is the typical unit of organization for a healthcare actor: laboratory, pharmacy, operating room, nursing team. FHIR R5 does not define a TaskList resource: the convention is to materialize the list via a search on Task filtered and sorted, whose result is a Bundle of type searchset.

Materialization options

  • Bundle searchset — dynamic result of a query GET [base]/Task?owner=Organization/lab&status=ready,in-progress&_sort=priority,-lastModified. Real-time view, no explicit storage.
  • ListList resource with entry[].item pointing to each Task. Persistent, shareable across actors, supports note.
  • Composition — for signed lists (end-of-shift activity report).

Bundle example

Central lab worklist, two active tasks:

json tasklist-lab.json
{
  "resourceType": "Bundle",
  "id": "worklist-lab-2026-05-15",
  "type": "searchset",
  "timestamp": "2026-05-15T09:00:00+02:00",
  "total": 3,
  "link": [{
    "relation": "self",
    "url": "https://fhir.example.org/Task?owner=Organization/lab-central&status=ready,in-progress&_sort=priority,-lastModified"
  }],
  "entry": [
    {
      "fullUrl": "https://fhir.example.org/Task/01",
      "resource": {
        "resourceType": "Task",
        "id": "01",
        "status": "ready",
        "intent": "order",
        "priority": "stat",
        "focus": { "reference": "ServiceRequest/sr-troponin-001" },
        "for": { "reference": "Patient/doe-john" },
        "owner": { "reference": "Organization/lab-central" }
      },
      "search": { "mode": "match" }
    },
    {
      "fullUrl": "https://fhir.example.org/Task/02",
      "resource": {
        "resourceType": "Task",
        "id": "02",
        "status": "in-progress",
        "intent": "order",
        "priority": "routine",
        "focus": { "reference": "ServiceRequest/sr-cbc-001" },
        "for": { "reference": "Patient/martin-anne" },
        "owner": { "reference": "Organization/lab-central" }
      },
      "search": { "mode": "match" }
    }
  ]
}

Common pitfalls

  • Looking for a TaskList resource — doesn't exist in R5. It's a pattern, not a resourceType.
  • Forgetting pagination — on a 1000+ Task worklist, without _count and next links, the client loads everything in RAM.
  • Unstable ordering_sort=priority alone isn't enough: add -lastModified for stable order.
  • No Subscription — manual refresh every 30s = high server load. Prefer a Subscription on the same query.
  • Search vs List resource — use List if the user must pin/check items manually; otherwise Bundle is enough.