Acknowledgements
Overview
Acknowledgements are used to confirm the outcome of processing a pathology report.
For Pathology, an acknowledgement is generated by the receiving system after it has attempted to process the report. The acknowledgement confirms whether the report was processed successfully or whether an error prevented it from being processed.
An acknowledgement only confirms the technical processing of the report. It does not confirm that the report has been reviewed by a clinician or that any clinical action has been taken.
The Pathology implementation follows the common approach described in the Acknowledgement Framework, with some additional considerations for the Pathology workflow.
Acknowledgement flow
The Pathology acknowledgement is handled asynchronously.
The high-level flow is shown below.
- The receiving system receives and processes the pathology report.
- An acknowledgement is created with the outcome of processing the report.
- The acknowledgement is stored in PDM.
- An acknowledgement event is published through MNS.
- The relevant middleware receives the event notification.
- The middleware retrieves the acknowledgement through the Pathology API.
The acknowledgement can then be matched back to the original pathology report.
Acknowledgement outcomes
An acknowledgement represents the final processing outcome of the report.
Successful Acknowledgments
A successful acknowledgement confirms that the pathology report has been processed successfully by the receiving system.
This confirms technical processing only and does not indicate that the report has been clinically reviewed.
Negative Acknowledgments
Validation error
A validation error is returned where the pathology report cannot be processed because it does not meet the required validation rules.
For example:
- a mandatory element is missing;
- an identifier is missing or invalid;
- a coded value is invalid;
- a reference is invalid; or
- the resource does not conform to the required FHIR profile.
Where possible, the acknowledgement should include enough information to help identify the validation issue.
Service error
A service error is used where a technical problem prevents the pathology report from being processed.
This should represent a final processing failure. Temporary failures should continue to follow the retry behaviour defined for the relevant service rather than immediately generating a final negative acknowledgement.
FHIR representation
The acknowledgement follows the FHIR acknowledgement pattern described in the Acknowledgement Framework.
The acknowledgement contains the information required to:
- identify the message as an acknowledgement;
- link the acknowledgement to the original pathology report;
- identify the systems involved; and
- provide the processing outcome and any relevant error information.
FHIR resources used within the acknowledgement may include:
BundleMessageHeaderProvenanceOperationOutcome
Refer to the Pathology acknowledgement examples for the detailed FHIR representation.
Examples
The following examples show successful and negative Pathology acknowledgements.
The examples are FHIR message Bundles and are separate from the FHIR document Bundle used to represent the pathology laboratory report.
Successful acknowledgement example
This example shows an acknowledgement where the pathology report has been successfully processed.
{
"resourceType": "Bundle",
"id": "470f702b-0a51-4fe1-8f19-17d62c7d581a",
"type": "message",
"entry": [
{
"fullUrl": "urn:uuid:6aecadd2-902c-45d9-a44e-7b679ce9e8a7",
"resource": {
"resourceType": "MessageHeader",
"id": "6aecadd2-902c-45d9-a44e-7b679ce9e8a7",
"eventCoding": {
"system": "https://fhir.nhs.uk/CodeSystem/message-event",
"code": "pathology-laboratory-reporting-test-result-stored-1-ack-1",
"display": "Pathology Laboratory Reporting Test Result Stored Acknowledgement"
},
"destination": [
{
"_endpoint": {
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/data-absent-reason",
"valueCode": "unsupported"
}
]
},
"receiver": {
"identifier": {
"system": "https://api.service.nhs.uk/pathology-laboratory-reporting/test-reporting-system",
"value": "PATH-MIDDLEWARE-01"
}
}
}
],
"sender": {
"identifier": {
"system": "https://fhir.nhs.uk/Id/ods-organization-code",
"value": "B86051"
}
},
"source": {
"name": "GP Practice System",
"software": "GP System",
"version": "1.0",
"contact": {
"system": "email",
"value": "support@example.com"
},
"endpoint": "https://example.com/fhir/R4"
},
"response": {
"identifier": "pathology-report-bundle-12345",
"code": "ok",
"details": {
"reference": "urn:uuid:8e6b1d7d-d80f-4621-9b29-0a99005046a8"
}
}
}
},
{
"fullUrl": "urn:uuid:8e6b1d7d-d80f-4621-9b29-0a99005046a8",
"resource": {
"resourceType": "OperationOutcome",
"id": "8e6b1d7d-d80f-4621-9b29-0a99005046a8",
"issue": [
{
"severity": "information",
"code": "informational",
"details": {
"coding": [
{
"system": "https://fhir.nhs.uk/CodeSystem/AcknowledgementFrameworkResponseCode",
"code": "TECHNICAL_SUCCESS",
"display": "Request successfully received"
}
]
}
}
]
}
}
]
}
In this example, MessageHeader.response.code is set to ok and the OperationOutcome provides the TECHNICAL_SUCCESS outcome.
The value in MessageHeader.response.identifier identifies the original pathology report Bundle being acknowledged.
Negative acknowledgement example
This example shows an acknowledgement where the pathology report could not be processed because a required element was missing.
{
"resourceType": "Bundle",
"id": "fd7dd817-2e45-47ea-8881-6c511fe3bcdf",
"type": "message",
"entry": [
{
"fullUrl": "urn:uuid:5e2fbda7-cf38-4439-b7bd-de0c6dbb9d73",
"resource": {
"resourceType": "MessageHeader",
"id": "5e2fbda7-cf38-4439-b7bd-de0c6dbb9d73",
"eventCoding": {
"system": "https://fhir.nhs.uk/CodeSystem/message-event",
"code": "pathology-laboratory-reporting-test-result-stored-1-ack-1"
},
"source": {
"name": "GP Practice System",
"endpoint": "https://example.com/fhir/R4"
},
"response": {
"identifier": "pathology-report-bundle-12345",
"code": "fatal-error",
"details": {
"reference": "urn:uuid:791cd4ef-ad5b-435e-bac0-88ffaad994d7"
}
}
}
},
{
"fullUrl": "urn:uuid:791cd4ef-ad5b-435e-bac0-88ffaad994d7",
"resource": {
"resourceType": "OperationOutcome",
"id": "791cd4ef-ad5b-435e-bac0-88ffaad994d7",
"issue": [
{
"severity": "fatal",
"code": "required",
"details": {
"coding": [
{
"system": "https://fhir.nhs.uk/CodeSystem/AcknowledgementFrameworkResponseCode",
"code": "MSG_RESOURCE_ID_MISSING",
"display": "Resource Id Missing"
}
]
},
"diagnostics": "DiagnosticReport.id is missing from the received pathology report.",
"expression": [
"Bundle.entry.resource.ofType(DiagnosticReport).id"
]
}
]
}
}
]
}
In this example, MessageHeader.response.code is set to fatal-error.
The OperationOutcome provides further information about the validation failure. The diagnostics and expression identify the problem as a missing DiagnosticReport.id in the original pathology report.
The error is therefore describing a problem with the received pathology report. The acknowledgement Bundle itself remains a FHIR message Bundle.