Genomic Order Management event
This event notifies subscribers when genomic tests, reports, samples and tasks have been created, updated or reassigned using Multicast Notification Service (MNS).
Overview
The following Genomic Order Management events have associated notification subscriptions:
- an order (service request) has been created or updated (updates associating to order information, order statuses or order ownership)
- a report has been created or updated
- a workflow task has been created or updated (updates associating to task related information, task and business statuses or task ownership/assignment)
- sample has a status update
- a consent change has occurred
Genomic Order Management follows a notification and retrieval pattern whereby the notification does not include for example, the order/report/workflow information. Rather, the notification signals to the recipient that that information is retrievable from the order management service.
This approach ensures that the Genomic Order Management Service central record remains the source of truth.
The following example blueprint is applicable:
- Publisher: Genomic Order Management Services (GOMS)
- Event name: genomic-order-event-1
- Delivery mechanism: Multicast Notification Service
- Payload type: Notification (event only)
- Data retrieval: Requires a follow-up call to the Genomic Order Management Service FHIR API
For general guidance on using MNS, refer to the MNS service page.
Event status
This event is currently in private beta.
Who should use these events
The Genomic Order Management central service is currently in private beta. These events are currently available to partners, onboarded and integrated for the purpose of private beta testing. Following this phase of work, an integrator assurance process will ensure the correct legal basis and integration controls are in place to support use of Genomic Order Management and this event catalogue.
These events and notifications are only suitable for entities engaged in genomics testing workflows.
Example use cases
An order has been created or updated:
A lab would like to know if/when the requester of the test adds additional information to it. For example, patient clinical information was missing from the original request and the lab has requested that this is added by the requester.
Equally, from an order ownership perspective, a lab that has been assigned ownership of a given order would like to be notified as such.
A report has been created or updated:
The requester of the test would like to know when the final report is present in the central service. Equally, if the report has been updated or replaced.
Workflow task(s) has been created, updated or reassigned:
As is typical for the genomic testing workflow, multiple labs are often engaged as ‘send-away’ labs, to provide specialist services or tasks within the overall fulfilment of the order. In the instance that lab A ‘sends away’ to lab B, assigning them a task to perform, lab B would like to be notified as such.
A sample has a status update:
Labs engaged in the fulfilment of a given order would like to see the state and progress of specific samples related to the order.
A consent change has occurred:
The operator of the National Genomic Research Library (NGRL) would like to be informed by notification if/when a consent to research change update is made for a patient.
How this event works
This event follows a notification and retrieval pattern:
- A new genomic request is created for the patient in the Genomic Order Management Service FHIR API. This could be one of:
- non-wgs test or
- wgs test
- Processing of the order results in event trigger.
- An event is published.
- A notification is sent to the subscribed systems (such as labs and ordering entities).
- Your system receives the notification.
- Your system calls the Genomic Order Management Service FHIR API.
- Your system retrieves and acts on the latest data.
Event structure
This event is available in both FHIR and CloudEvents format.
- FHIR events are accessible to both internal and external subscribers
- CloudEvents format can be accessed by internal subscribers only
| CloudEvents | FHIR | Type | Mandatory | Cardinality | Description |
|---|---|---|---|---|---|
| specversion | N/A | String | M | 1..1 | Indicates this is version 1 CloudEvent. Always "1.0" |
| id | id | GUID | M | 1..1 | GUID - for this event |
| source | source | URI | M | 1..1 | The publisher of the event. Not the original service which triggers the creation/update/reassignment |
| type | event-type | String | M | 1..1 | name of the event - will always be genomic-order-event-1 |
| time | timestamp | Timestamp | M | 1..1 | Time of the event ISO 8601 |
| subject | subject | String | M | 1..1 | Will carry the UUID represented by "https://fhir.nhs.uk/Id/GMSOrder" for events to provide the context of the genomic order |
Example FHIR event
{
"resourceType": "Bundle",
"id": "9dcb3cc7-b6eb-43e1-9f5e-85de47266c08",
"type": "history",
"timestamp": "2026-05-19T17:26:11.426858+00:00",
"entry": [
{
"fullUrl": "urn:uuid:be276804-3852-46c6-aa7a-a4371794259a",
"resource": {
"resourceType": "Parameters",
"meta": {
"profile": [
"http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-subscription-status-r4"
]
},
"id": "be276804-3852-46c6-aa7a-a4371794259a",
"parameter": [
{
"name": "subscription",
"valueReference": {
"reference": "https://api.service.nhs.uk/multicast-notification-service/subscriptions"
}
},
{
"name": "status",
"valueCode": "active"
},
{
"name": "type",
"valueCode": "event-notification"
},
{
"name": "notification-event",
"part": [
{
"name": "event-number",
"valueString": "1"
},
{
"name": "timestamp",
"valueInstant": "2026-05-19T17:26:11.426858+00:00"
},
{
"name": "focus",
"valueReference": {
"reference": "https://int.api.service.nhs.uk/genomic-order-management-service/FHIR/R4/ServiceRequest/sr-987654"
}
}
]
},
{
"name": "additional-context",
"part": [
{
"name": "event-type",
"valueString": "genomic-order-event-1"
},
{
"name": "source",
"valueUri": "uk.nhs.genomic-order-management-service"
},
{
"name": "subject",
"valueReference": {
"identifier": {
"value": "0dfd745c-93d1-4e6f-9277-bcd1cb5e9f0a"
}
}
}
]
}
]
},
"request": {
"method": "GET",
"url": "https://api.service.nhs.uk/multicast-notification-service/subscriptions"
},
"response": {
"status": "200"
}
}
]
}
Example CloudEvent
{
"specversion": "1.0",
"id": "8c2f9e44-2e51-4c3e-9e5a-3b9f7c1d2002",
"source": "uk.nhs.genomic-order-management-service",
"type": "genomic-order-event-1",
"time": "2026-05-02T15:42:10Z",
"dataref": "https://int.api.service.nhs.uk/genomic-order-management-service/FHIR/R4/ServiceRequest/sr-987654",
"subject": "0dfd745c-93d1-4e6f-9277-bcd1cb5e9f0a"
}
Event filtering
You can filter the events you want to receive using the criteria field in the subscription payload. You should only subscribe to events you need and must not create filters wider than required.
Which filters apply to which resource types
Some filters only apply to specific resourceType values.
- Consent
- consentStatus
- DiagnosticReport
- diagnosticReportStatus
- ServiceRequest
- serviceRequestStatus
- RequestGroup
- requestGroupStatus
- Specimen
- specimenStatus
- Task
- taskStatus, taskBusinessStatus, taskCode
Available filters
| Filter name | Type | Description |
|---|---|---|
| resourceType | String | The genomics FHIR resource type you want to be notified about. Possible values: Consent, DiagnosticReport, RequestGroup, ServiceRequest, Specimen, Task. |
| consentStatus | String or null | Consent status. Possible values: proposed, active, draft. |
| diagnosticReportStatus | String or null | Diagnostic report status. Possible values: final, amended, cancelled, entered-in-error, preliminary. |
| serviceRequestStatus | String or null | Service request status. Possible values: draft, active, on-hold, revoked, completed, entered-in-error. |
| requestGroupStatus | String or null | Request group status. Possible values: draft, active, revoked, completed. |
| specimenStatus | String or null | Specimen status. Possible values: available, unavailable, unsatisfactory, entered-in-error. |
| taskStatus | String or null | Task status. Possible values: draft, requested, received, accepted, rejected, ready, cancelled, in-progress, on-hold, failed, completed, entered-in-error. |
| taskBusinessStatus | String or null | Task business status. Includes values such as determining-test-recoverability, sample-received, sample-stored, interpretation, produce-final-report, and other. |
| taskCode | String or null | Task type. Possible values: process-genomic-test-request, request-sample-alignment, sample-preparation, sample-processing, genetic-genomic-data-processing, interpretation, produce-interim-report, genomic-mdt, produce-final-report, distribute-report. |
| requester | String | ODS code of the organisation placing the genomics order. |
| performer | String | ODS code of the organisation nominated as the fulfiller of the genomics order. |
| owner | String or null | ODS code of the organisation assigned as the owner of a task. Only applies when resourceType is Task. |
Subscription examples
All the following examples contain the criteria string that forms part of the subscription:
Active Genomic Orders for Trust - TRUST001 delivered by LAB - LAB456
eventType='genomic-order-event-1' AND resourceType='ServiceRequest' AND performer='LAB456' AND requester='TRUST001' and serviceRequestStatus='active'
Completed Genomic Orders for Trust - TRUST001 delivered by LAB - LAB456
eventType='genomic-order-event-1' AND resourceType='ServiceRequest' AND performer='LAB456' AND requester='TRUST001' AND serviceRequestStatus='completed'
Final Genomic Reports for Trust - TRUST001 delivered by LAB - LAB456
eventType='genomic-order-event-1' AND resourceType='DiagnosticReport' AND performer='LAB456' AND requester='TRUST001' AND diagnosticReportStatus='final'
Amended Genomic Reports for Trust - TRUST001 delivered by LAB - LAB456
eventType='genomic-order-event-1' AND resourceType='DiagnosticReport' AND performer='LAB456' AND requester='TRUST001' AND diagnosticReportStatus='amended'
Orders - Performed by LAB - LABA
eventType='genomic-order-event-1' AND resourceType='ServiceRequest' AND performer='LABA'
Orders - Performed by LAB - LABA or LABB
If you do not need to differentiate the event until the resource has been retrieved to determine if the order is for LABA or LABB, then both events could be delivered on the same stream.
eventType='genomic-order-event-1' AND resourceType='ServiceRequest' AND (performer='LABA' OR performer='LABB')
Alternatively create two subscriptions:
eventType='genomic-order-event-1' AND resourceType='ServiceRequest' AND performer='LABA'
and
eventType='genomic-order-event-1' AND resourceType='ServiceRequest' AND performer='LABB'
Then you can distinguish by:
- inspecting the event metadata
- SQS delivered events have the message attribute X-MNS-Subscription-ID which will look like {"StringValue": "<subscription_id>", "DataType": "String"}
- MESH delivered events have a subject with the format:<subscription_id>_<event_timestamp>
- sending them to different destinations: a "LABA" queue/mailbox and a "LABB" queue/mailbox
Onboarding
To subscribe to this event, you will need to:
- complete onboarding to Genomic Order Management Service API
- complete onboarding to MNS as a subscriber
- use the Subscription API to create a subscription
- configure an endpoint to receive event notifications
Refer to Subscribe to Multicast Notification Service for further guidance.
Testing
These events are available in the Path to Live environments (PTL) INT. To test receiving an event, you will need to:
- Subscribe to "genomic-order-event-1" with filter of your choice using MESH or AWS AQS endpoints.
- if you are an ordering entity subscribe for Order and Report filters
- if you are a lab entity subscribe for Order, Report and Task filters
- Create a test request for a test patient configured on INT.
- Check to confirm the receipt of event.
Versioning
This is the first and only version of this event.
Last edited: 11 June 2026 4:11 pm