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
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:
Composition.section[i] sees the booking and every resource that makes that booking complete.Composition fields carry document metadata (status, author, attester, custodian, event period) — no custom extensions.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) |
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 |
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:
Appointment (the booking)ServiceRequestAnaestheticRequest if applicablePatientConsent resources (e.g. surgical consent + transfusion sub-consent)Device entriesCoverageAllergyIntolerance and Condition (infection risk) entriesDocumentReferenceEach 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.
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.
See the worked example at Bundle-TheatreListBundleExample.
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.
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" }
}]
}
}
]
}
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.
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.