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.

Group — Identified collection of entities

Patient cohort, herd, device batch, medication basket: Group bundles entities under a shared identity, either enumerated or rule-defined.

Purpose

Group identifies a coherent set of entities. Typical uses:

  • Research cohorts or population follow-up groups.
  • FHIR bulk export: export the Patient subset of a Group via GET /Group/[id]/$export.
  • Care programs: list of patients enrolled.
  • Veterinary: cattle herd.
  • Pharmacy: medication batch of a delivery.

Two modes:

  • membership=enumerated — members are listed explicitly in member[].
  • membership=definitional — members are defined by criteria in characteristic[], no enumeration.

Key fields

FieldTypeCardinalityRole
identifierIdentifier[]0..*External identifiers.
activeboolean0..1Active Group.
typecode1..1Mandatory. person | animal | practitioner | device | careteam | healthcareservice | location | organization | relatedperson | specimen.
membershipcode1..1Mandatory. definitional | enumerated.
codeCodeableConcept0..1Code describing the entity type.
namestring0..1Human-readable name.
descriptionmarkdown0..1Description.
quantityunsignedInt0..1Member count.
managingEntityReference(Organization | RelatedPerson | Practitioner | PractitionerRole)0..1Managing entity.
characteristicBackboneElement[]0..*Definition criteria.
characteristic.codeCodeableConcept1..1Which criterion.
characteristic.value[x]CodeableConcept | boolean | Quantity | Range | Reference1..1Criterion value.
characteristic.excludeboolean1..1true = exclusion criterion.
memberBackboneElement[]0..*Enumerated members.
member.entityReference1..1Member entity.
member.periodPeriod0..1Membership period.
member.inactiveboolean0..1Inactive member.

JSON example

Cohort of 3 type-2 diabetic patients enrolled in a 2026 follow-up program, age criterion 40–80:

json group-diabetes-cohort.json
{
  "resourceType": "Group",
  "id": "diabetes-cohort-2026",
  "identifier": [{
    "system": "http://acme.com/cohorts",
    "value": "DM2-2026"
  }],
  "active": true,
  "type": "person",
  "membership": "enumerated",
  "code": {
    "coding": [{
      "system": "http://snomed.info/sct",
      "code": "44054006",
      "display": "Diabetes mellitus type 2 (disorder)"
    }]
  },
  "name": "Type 2 Diabetes Cohort — 2026 Follow-up Program",
  "description": "Patients enrolled in the type 2 diabetes follow-up program for 2026.",
  "quantity": 3,
  "managingEntity": { "reference": "Organization/hospital-1" },
  "characteristic": [{
    "code": {
      "coding": [{ "system": "http://loinc.org", "code": "30525-0", "display": "Age" }]
    },
    "valueRange": {
      "low": { "value": 40, "unit": "years" },
      "high": { "value": 80, "unit": "years" }
    },
    "exclude": false
  }],
  "member": [
    { "entity": { "reference": "Patient/example" }, "period": { "start": "2026-01-15" } },
    { "entity": { "reference": "Patient/patient-2" }, "period": { "start": "2026-02-01" } },
    { "entity": { "reference": "Patient/patient-3" }, "period": { "start": "2026-03-10" } }
  ]
}

Common pitfalls

  • Enumerated Group with constraining characteristic — inconsistent: when enumerated, characteristic is informational only.
  • Bulk export on definitional Group — not supported: $export requires enumeration.
  • Inconsistent quantity vs member.length — always sync.
  • Confusion Group / List — List is generic (heterogeneous), Group targets a single entity type (type).
  • Bulk export Group of millions of Patients without _typeFilter — volumetric explosion server-side.