NHS England FHIR Implementation Guide (deprecated)

Important Announcement regarding this Implementation Guide
  • As of 04/10/2023, this implementation guide has been deprecated and all development on the legacy NHS England FHIR Implementation Guide assets has ceased.
  • Therefore, vendors looking to start new implementations or looking to update existing implementations should use the new NHS England Implementation Guide. Vendors continuing to implement legacy NHS England FHIR Implementation Guide based solutions do so at their own risk and on the understanding that no maintenance or support will be available.

NHSDigital-CapabilityStatement

Conformance url FHIR Module Maturity Level
https://fhir.nhs.uk/StructureDefinition/NHSDigital-CapabilityStatement Implementation Support draft

Conformance Rules



with CapabilityStatement

PackageS I0..1Extension(Complex)
urlΣ0..1uri
versionΣ0..1string
nameΣ I0..1string
titleΣ0..1string
statusS Σ ?!1..1codeBinding
experimentalΣ0..1boolean
dateΣ1..1dateTime
publisherΣ1..1string
contactΣ0..*ContactDetail
descriptionI0..1markdown
useContextΣ0..*UsageContext
jurisdictionΣ0..*CodeableConceptBinding
purpose0..1markdown
copyright0..1markdown
kindS Σ I1..1codeBinding
instantiatesΣ0..*canonical(CapabilityStatement)
importsΣ0..*canonical(CapabilityStatement)
nameΣ1..1string
versionΣ0..1string
releaseDateΣ0..1dateTime
descriptionΣ1..1string
urlΣ0..1url
custodianΣ I0..1Reference(Organization)
fhirVersionS Σ1..1codeBinding
formatΣ1..*codeBinding
patchFormatΣ0..*codeBinding
implementationGuideS Σ0..*canonical(ImplementationGuide)
modeΣ1..1codeBinding
documentation0..1markdown
oauthUrisS I0..1Extension(Complex)
corsΣ0..1boolean
serviceΣ0..*CodeableConceptBinding
description0..1markdown
searchParameterCombinationI0..*Extension(Complex)
typeΣ1..1codeBinding
profileΣ1..1canonical(StructureDefinition)
supportedProfileΣ0..*canonical(StructureDefinition)
documentation0..1markdown
ExamplesI0..1Extension(Complex)
code1..1codeBinding
documentation0..1markdown
versioning0..1codeBinding
readHistory0..1boolean
updateCreate0..1boolean
conditionalCreate0..1boolean
conditionalRead0..1codeBinding
conditionalUpdate0..1boolean
conditionalDelete0..1codeBinding
referencePolicy0..*codeBinding
searchInclude0..*string
searchRevInclude0..*string
name1..1string
definition0..1canonical(SearchParameter)
type1..1codeBinding
documentation0..1markdown
nameΣ1..1string
definitionΣ1..1canonical(OperationDefinition)
documentation0..1markdown
code1..1codeBinding
documentation0..1markdown
searchParam0..*see (searchParam)
operationΣ0..*see (operation)
compartment0..*canonical(CompartmentDefinition)
protocol1..1CodingBinding
address1..1url
reliableCache0..1unsignedInt
documentation0..1markdown
ExamplesI0..*Extension(Complex)
modeΣ1..1codeBinding
definitionΣ1..1canonical(MessageDefinition)
modeΣ1..1codeBinding
documentation0..1markdown
profileΣ1..1canonical(StructureDefinition)

from CapabilityStatement

PackageS I0..1Extension(Complex)
urlΣ0..1uri
versionΣ0..1string
nameΣ I0..1string
titleΣ0..1string
statusS Σ ?!1..1codeBinding
experimentalΣ0..1boolean
dateΣ1..1dateTime
publisherΣ1..1string
contactΣ0..*ContactDetail
descriptionI0..1markdown
useContextΣ0..*UsageContext
jurisdictionΣ0..*CodeableConceptBinding
purpose0..1markdown
copyright0..1markdown
kindS Σ I1..1codeBinding
instantiatesΣ0..*canonical(CapabilityStatement)
importsΣ0..*canonical(CapabilityStatement)
nameΣ1..1string
versionΣ0..1string
releaseDateΣ0..1dateTime
descriptionΣ1..1string
urlΣ0..1url
custodianΣ I0..1Reference(Organization)
fhirVersionS Σ1..1codeBinding
formatΣ1..*codeBinding
patchFormatΣ0..*codeBinding
implementationGuideS Σ0..*canonical(ImplementationGuide)
modeΣ1..1codeBinding
documentation0..1markdown
oauthUrisS I0..1Extension(Complex)
corsΣ0..1boolean
serviceΣ0..*CodeableConceptBinding
description0..1markdown
searchParameterCombinationI0..*Extension(Complex)
typeΣ1..1codeBinding
profileΣ1..1canonical(StructureDefinition)
supportedProfileΣ0..*canonical(StructureDefinition)
documentation0..1markdown
ExamplesI0..1Extension(Complex)
code1..1codeBinding
documentation0..1markdown
versioning0..1codeBinding
readHistory0..1boolean
updateCreate0..1boolean
conditionalCreate0..1boolean
conditionalRead0..1codeBinding
conditionalUpdate0..1boolean
conditionalDelete0..1codeBinding
referencePolicy0..*codeBinding
searchInclude0..*string
searchRevInclude0..*string
name1..1string
definition0..1canonical(SearchParameter)
type1..1codeBinding
documentation0..1markdown
nameΣ1..1string
definitionΣ1..1canonical(OperationDefinition)
documentation0..1markdown
code1..1codeBinding
documentation0..1markdown
searchParam0..*see (searchParam)
operationΣ0..*see (operation)
compartment0..*canonical(CompartmentDefinition)
protocol1..1CodingBinding
address1..1url
reliableCache0..1unsignedInt
documentation0..1markdown
ExamplesI0..*Extension(Complex)
modeΣ1..1codeBinding
definitionΣ1..1canonical(MessageDefinition)
modeΣ1..1codeBinding
documentation0..1markdown
profileΣ1..1canonical(StructureDefinition)


apiDefinition (extension)

Links to the API documentation MUST be provided.

{
    "url": "https://fhir.nhs.uk/StructureDefinition/Extension-NHSDigital-APIDefinition",
    "extension": [
        {
            "url": "openApi",
            "extension": [
            {
                "url": "documentation",
                "valueUri": "https://digital.nhs.uk/developer/api-catalogue/electronic-prescription-service-fhir"
            },{
                "url": "description",
                "valueString": "Access the Electronic Prescription Service (EPS) - the national service used to send electronic prescriptions from GP surgeries to pharmacies."
            },
        }
    ]
}

A list of Implementation Guide packages used with this API MUST be provided.

Although the UKCore.R4 version can be derived from the uk.nhsdigital.r4 package information, it MUST be provided. This applies to all derived or supplemental packages.

{
    "url": "https://fhir.nhs.uk/StructureDefinition/Extension-NHSDigital-APIDefinition",
    "extension": [
        {
            "url": "implementationGuide",
            "extension": [
                {
                    "url": "name",
                    "valueString": "uk.nhsdigital.r4"
                },{
                    "url": "version",
                    "valueString": "2.1.34-discovery"
                }
            ]
        },
        {
            "url": "implementationGuide",
            "extension": [
                {
                    "url": "name",
                    "valueString": "UKCore.R4.02.00.00"
                },{
                    "url": "version",
                    "valueString": "2.0.0"
                }
            ]
        }
    ]
}

status

"status": "active"

kind

For APIM FHIR endpoints this MUST be instance

"kind": "instance"

software

For APIM FHIR endpoints this is the API Name and verson of the API.

"software": {
    "name": "EPS NextGen",
    "version": "1.2.4-alpha",
    "releaseDate": "2021-07-21T00:00:00+00:00"
}

fhirVersion

For APIM FHIR R4 endpoints this MUST be 4.0.1

"fhirVersion": "4.0.1"

format

MUST be provided. This is populated according to serialisation policies. Serialisation

"format":  [
    "application/fhir+json",
    "application/fhir+xml"
]

implementationGuide

List of FHIR Implementation Guides followed by the API. For NHS Digital APIM endpoints this MUST include:

"implementationGuide":  [
        "https://simplifier.net/guide/nhsdigital"
    ],

rest

This is required for all APIM FHIR endpoints.

rest.security

Only populated if the endpoint is secured using APIM Apigee security.

SHOULD include the url of the OAuth2/Apigee endpoint. Add extension http://fhir-registry.smarthealthit.org/StructureDefinition/oauth-uris to profile.

"security": {
    "extension": [
        {
            "url": "http://fhir-registry.smarthealthit.org/StructureDefinition/oauth-uris",
            "extension": [{
             "url": "token",
                "valueUri": "https://oauth2.nhs.uk/token"
            },{
                "url": "authorize",
                "valueUri": "https://oauth2.nhs.uk/authorize"
            },{
                "url": "manage",
                "valueUri": "https://oauth2.nhs.uk/authorizations/manage"
            }]
        }
    ]
}

For APIM FHIR endpoints this should be populated as follows:

"security": {
    "service":  [
        {
            "coding":  [
                {
                    "system": "http://terminology.hl7.org/CodeSystem/restful-security-service",
                    "code": "OAuth",
                    "display": "OAuth2 Token"
                }
            ]
        }
    ]
}

rest.resource

All the resources supported by the endpoint MUST be listed together with the FHIR profile they conform to. This applies to all FHIR Exchange methods.

"resource":  [
    {
        "type": "CommunicationRequest",
        "profile": "https://fhir.nhs.uk/StructureDefinition/NHSDigital-CommunicationRequest"
    }
]

messaging

MUST be populated if FHIR Messaging is used. This MUST list all the FHIR MessageDefinitions the endpoint supports.

"messaging":  [
    {
        "supportedMessage":  [
            {
                "mode": "receiver",
                "definition": "https://fhir.nhs.uk/MessageDefinition/prescription-order"
            },
            {
                "mode": "receiver",
                "definition": "https://fhir.nhs.uk/MessageDefinition/dispense-notification"
            }
        ]
    }
]

back to top