Magentus Practice Management FHIR® Implementation Guide
1.3.2 - Release Australia

This page is part of the Magentus Practice Management FHIR Implementation Guide (v1.3.2: Releases Draft) based on FHIR (HL7® FHIR® Standard) R4. No current official version has been published yet. For a full list of available versions, see the Directory of published versions

Theatre List

A Theatre List is a snapshot of theatre bookings at a point in time, prepared by a practice and shared with the operating hospital. It is modelled as a FHIR document — a Bundle of type = #document whose first entry is a Composition that organises the list into one section per booking.

Modelling a theatre list as a FHIR document carries the same intent as the FHIR core document pattern used for IPS and other clinical-document IGs:

  • The artefact is read-only after authoring, attested by an author, and identified by a stable identifier and timestamp.
  • Each section is self-contained for its booking — a renderer or consumer walking Composition.section[i] sees the booking and every resource that makes that booking complete.
  • Native Composition fields carry document metadata (status, author, attester, custodian, event period) — no custom extensions.

Document shape

The Bundle contains one Composition entry plus one entry per supporting resource. Cross-references inside the document are resolved against entry fullUrl.

Bundle entry slice Cardinality Resource / profile Notes
composition 1..1 EBookingsTheatreListComposition Must be the first entry
appointment 1..* EBookingsAppointmentBase One per booking
servicerequest 1..* EBookingsServiceRequest Surgical service request for each booking
anaestheticrequest 0..* EBookingsAnaestheticRequest Anaesthetic plan referenced from Appointment.supportingInformation
patient 1..* EBookingsPatient One per distinct patient
practitioner 1..* GSPractitioner Surgeons, anaesthetists, assistants
practitionerrole 1..* GSPractitionerRole VMO and other roles
organization 1..1 GSOrganization The practice (custodian)
hospital 1..1 GSHealthcareService The operating hospital
coverage 1..* GSCoverage Coverage for each booking
prosthesis 0..* EBookingsProsthesis Devices referenced by bookings
consent 0..* EBookingsConsent One or more per booking
adversereaction 0..* EBookingsAdverseReaction AllergyIntolerance entries
infectionrisk 0..* EBookingsInfectionRisk Condition entries
pdf 0..* EBookingsPDF DocumentReference attachments (consent forms, scans)

Composition metadata

EBookingsTheatreListComposition uses native Composition fields. The legacy EBookingsTheatreList (a List profile) used four custom extensions; those are gone.

Composition field Value
identifier Practice-scoped theatre-list identifier — equal to Bundle.identifier
status preliminary | final | amended (preliminary replaces the legacy draft code)
type SNOMED CT 225738002 Operating room
category theatre-list from the EBookings Composition Category code system
subject The operating hospital — the venue is the subject of a multi-patient document
date Authoring date/time
author VMO and/or other authoring practitioner(s)
title Human-readable title (e.g. Theatre List — Gold Coast Private Hospital — 2 May 2024)
attester The hospital, attesting the list (optional)
custodian The practice that maintains the document
event.code SNOMED CT 387713003 Surgical procedure
event.period Operating session period
section[booking] One per booking — entry references the key resources for that booking

Per-booking section

Each section[booking] gathers the key clinical resources for its booking. The entry list ties the booking to those resources by reference to Bundle entry fullUrl. Shared or indirectly-referenced resources — the practitioners (PractitionerRole / Practitioner), the hospital HealthcareService, and the practice Organization — are not repeated in the section entry; they remain in the Bundle and are reachable by following references from the section's resources (e.g. Appointment.participant, PractitionerRole.practitioner).

A renderer walking a section sees:

  • the Appointment (the booking)
  • the surgical ServiceRequest
  • an AnaestheticRequest if applicable
  • the Patient
  • one or more Consent resources (e.g. surgical consent + transfusion sub-consent)
  • prosthesis Device entries
  • the patient's Coverage
  • AllergyIntolerance and Condition (infection risk) entries
  • any consent-form or scan attachments as DocumentReference

Each Consent is referenced explicitly from its booking's section.entry, so a consumer holding the document never needs to walk Consent.provision.data.reference to find a consent for a given booking — although that reverse link remains intact for traceability.

Status mapping

The legacy code system ebookings-theatre-list-status-codesys (with codes draft and final) is removed. Composition.status is bound to a subset of FHIR core composition-status.

Legacy EBookingsTheatreListStatusExt code (removed) New Composition.status code
draft preliminary
final final
(none) amended

entered-in-error from FHIR core composition-status is intentionally excluded from authoring; a fully withdrawn list is reachable via a replacing document's Composition.relatesTo of type replaces.

Example

See the worked example at Bundle-TheatreListBundleExample.

Retrieving a theatre list

A theatre list is a FHIR document, so retrieval is a two-step pattern: discover the matching Composition (the document header), then assemble the full document Bundle via the standard FHIR $document operation on that Composition.

This pattern keeps queries cheap (the Composition is small) and only assembles the full document when the consumer actually wants it.

Step 1 — Discover the Composition

Search Composition by the criteria you have (hospital, VMO, operating session period). All parameters used below are standard FHIR R4 Composition search parameters — no custom SearchParameter is required.

GET [base]/Composition
  ?type=http://snomed.info/sct|225738002
  &category=http://fhir.geniesolutions.io/CodeSystem/ebookings-composition-category-codesys|theatre-list
  &subject=HealthcareService/gold-coast-private-hospital
  &author=PractitionerRole/trevor-pearson-vmo
  &period=ge2024-05-01
  &period=le2024-05-31
  &status=preliminary,final,amended
Parameter Source field Purpose
type Composition.type Theatre list — SNOMED CT 225738002 Operating room
category Composition.category Magentus theatre-list category
subject Composition.subject Operating hospital — the venue is the document subject
author Composition.author The VMO PractitionerRole
period Composition.event.period Operating session date range — repeated period is >= and <=
status Composition.status Excludes entered-in-error

The response is a searchset Bundle of matching Compositions. Pick the one of interest by Composition.id (or by its identifier):

{
  "resourceType": "Bundle",
  "type": "searchset",
  "total": 1,
  "entry": [
    {
      "fullUrl": "[base]/Composition/composition-tl-2024-05-02",
      "resource": {
        "resourceType": "Composition",
        "id": "composition-tl-2024-05-02",
        "meta": {
          "profile": ["http://fhir.geniesolutions.io/StructureDefinition/ebookings-theatre-list-composition"]
        },
        "identifier": {
          "system": "http://geniesolutions.io/id/theatre-list",
          "value": "tl-2024-05-02-gcph-001"
        },
        "status": "preliminary",
        "type": {
          "coding": [{ "system": "http://snomed.info/sct", "code": "225738002", "display": "Operating room" }]
        },
        "category": [{
          "coding": [{
            "system": "http://fhir.geniesolutions.io/CodeSystem/ebookings-composition-category-codesys",
            "code": "theatre-list"
          }]
        }],
        "subject": { "reference": "HealthcareService/gold-coast-private-hospital" },
        "date": "2024-04-12T11:14:05+10:00",
        "author": [{ "reference": "PractitionerRole/trevor-pearson-vmo" }],
        "title": "Theatre List — Gold Coast Private Hospital — 2 May 2024",
        "event": [{
          "code": [{ "coding": [{ "system": "http://snomed.info/sct", "code": "387713003", "display": "Surgical procedure" }] }],
          "period": { "start": "2024-05-02", "end": "2024-05-02" }
        }]
      }
    }
  ]
}

Step 2 — Assemble the full document Bundle

Call the standard $document operation on the chosen Composition:

GET [base]/Composition/composition-tl-2024-05-02/$document

The server returns a Bundle of type = #document conforming to EBookingsTheatreListBundle. The Composition is the first entry; every resource referenced from Composition.section[i].entry is included as a Bundle entry, addressable by fullUrl.

From there the consumer walks Composition.section[i] to drive per-booking rendering — each section's entry list ties one booking to its Appointment, ServiceRequest, Consent, and other supporting resources, all resolvable inside the same Bundle.

Direct retrieval if the theatre-list identifier is known

Bundle.identifier and Composition.identifier carry the same practice-scoped theatre-list identifier, so either can be searched directly:

GET [base]/Bundle?type=document&identifier=http://geniesolutions.io/id/theatre-list|tl-2024-05-02-gcph-001

or

GET [base]/Composition?identifier=http://geniesolutions.io/id/theatre-list|tl-2024-05-02-gcph-001

The latter still returns just the Composition; follow with $document to get the full Bundle.