0. References
NHS Digital Profile: DiagnosticReport |
HL7 FHIR Resource: DiagnosticReport |
User Stories: User Stories |
[SKETCH profile. Not official]
1. Read Operation
Return a single DiagnosticReport
for the specified id.
All requests SHALL contain a valid ‘Authorization’ header and SHALL contain an ‘Accept’ header. The `Accept` header indicates the format of the response the client is able to understand, this will be one of the following application/json+fhir
or application/xml+fhir
.
1.1. Response
A full set of response codes can be found here API Response Codes. FHIR Servers SHALL support the following response codes:
200 | successful operation |
404 | resource not found |
410 | resource deleted |
2. Search
Search for all problems and health concerns for a patient. Fetches a bundle of all DiagnosticReport
resources for the specified patient.
All requests SHALL contain a valid ‘Authorization’ header and SHALL contain an ‘Accept’ header. The `Accept` header indicates the format of the response the client is able to understand, this will be one of the following application/json+fhir
or application/xml+fhir
.
2.1. Search Parameters
This implementation guide outlines some suggested search parameters for the DiagnosticReport resource in the table below. To be conformant, provider systems are required to implement all of the SHALL parameters. Provider systems may implement the full list of search parameters for the DiagnosticReport resource (HL7 FHIR STU3 DiagnosticReport).
Name | Type | Description | Conformance | Path |
---|---|---|---|---|
category |
token |
Which diagnostic discipline/department created the report | SHALL | DiagnosticReport.category |
code |
token |
The code for the report as a whole, as opposed to codes for the atomic results, which are the names on the observation resource referred to from the result |
SHALL | DiagnosticReport.code |
date |
date |
The clinically relevant time of the report | SHALL | DiagnosticReport.effective[x] |
patient |
reference |
The subject of the report | SHALL | DiagnosticReport.subject (Patient) |
Systems SHOULD support the following search combinations:
- patient + category
- patient + category + date
- patient + category + code
- patient + category + code + date
2.1.1. category
See token for details on this parameter.
To filter on category ( see profile/valueset for codes
)
GET [baseUrl]/DiagnosticReport?patient=1&category=final
Return all DiagnosticReport resources with a category of final and Patient with a logical id of 1.
2.1.2. code
GET [baseUrl]/DiagnosticReport?patient=[id]&code=[code]
See token for details on this parameter. ‘code’ can be used multiple times as a search parameter
system
is a uniform resource identifier which defines which CodeSystem the code belongs to. This is optional and if not present all matching codes will be returned regardles of CodeSystems.
To search for DiagnosticReports with Baseline body mass index
using SNOMED CT
GET [baseUrl]/DiagnosticReport?patient=[id]&code=http://snomed.info/sct|846931000000101
Return all DiagnosticReport resources with SNOMED CT code of 846931000000101 and Patient with a logical id of 1.
GET [baseUrl]/DiagnosticReport?patient=1&code=846931000000101
Return all DiagnosticReport resources with code of 846931000000101 from any CodeSystem and Patient with a logical id of 1.
2.1.3. date
See date for details on this parameter. ‘date’ can be used multiple times as a search parameter
GET [baseUrl]/DiagnosticReport?patient=1&date=ge2010-01-01&date=le2011-12-31
Return all DiagnosticReport resources that have a date greater than or equal to 1st Jan 2010, a date less than or equal to 31st Dec 2011 and Patient with a logical id of 1.
2.1.4. patient
See reference for details on this parameter. The patient parameter can be used two ways:
This SHALL be supported for all endpoint provider systems.
id
is the logical id of the patient on the server which can be obtained by a Patient resource query.
GET [baseUrl]/DiagnosticReport?patient=42
Return all DiagnosticReport resources for Patients with a logical id of 42
This SHOULD be supported by middleware systems (e.g. enterprise application integration (EAI) and the enterprise service bus (ESB)) and MAY be supported for endpoint provider systems.
system
is a uniform resource identifier which defines which CodeSystem the identifer belongs to. For NHS Number this would be https://fhir.nhs.uk/Id/nhs-number
and code
would be the NHS Number.
GET [baseUrl]/DiagnosticReport?patient.identifier=https://fhir.nhs.uk/Id/nhs-number|9876543210
Return all DiagnosticReport resources for Patients with a NHS Number of 9876543210
2.2. Search Response
If the search fails (cannot be executed, not that there is no matches), the return value is a status code 4xx or 5xx with an OperationOutcome.
If the search succeeds, the return content is a Bundle with type = searchset containing the results of the search as a list of resources in a defined order. The result list can be long, so servers MAY use paging. If they do, they SHALL use this Paging method for breaking the list into pages if appropriate. The server MAY also return an OperationOutcome resource with additional information about the search; if one is sent it SHALL NOT include any errors, and it shall be marked with an entry mode of include.
A full set of response codes can be found here API Response Codes. FHIR Servers SHALL support the following response codes:
200 | successful operation |
404 | resource not found |
410 | resource deleted |
3. Example
3.1 cURL
Return all DiagnosticReport resources for Patient with a NHS Number of 9876543210, the format of the response body will be xml. Replace ‘baseUrl’ with the actual base Url of the FHIR Server.
curl -X GET -H 'Accept: application/xml+fhir' -H 'Authorisation: BEARER [token]' -v 'https://data.developer.nhs.uk/ccri/STU3/Condition?patient.identifier=https://fhir.nhs.uk/Id/nhs-number%7C9876543210'
3.2 Explore the Response
Explore the response in XML & JSON on the Reference Implementation below
Reference Implementation
XML Patient NHS number search RI viewer
JSON Patient NHS number search RI viewer