NHS Digital FHIR Implementation Guide (Retired - 2.1.50)

This guidance is under active development by NHS Digital and content may be added or updated on a regular basis.

NHSDigital-CapabilityStatement

Conformance url
https://fhir.nhs.uk/StructureDefinition/NHSDigital-CapabilityStatement

Conformance Rules



with CapabilityStatement

idΣ0..1string
metaΣ0..1Meta
implicitRulesΣ ?!0..1uri
language0..1codeBinding
text0..1Narrative
contained0..*Resource
apiDefinitionS I1..1Extension(Complex)
modifierExtension?! I0..*Extension
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)
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
nameΣ1..1string
versionΣ0..1string
releaseDateΣ0..1dateTime
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
descriptionΣ1..1string
urlΣ0..1url
custodianΣ I0..1Reference(Organization)
fhirVersionS Σ1..1codeBinding
formatΣ1..*codeBinding
patchFormatΣ0..*codeBinding
implementationGuideS Σ0..*canonical(ImplementationGuide)
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
modeΣ1..1codeBinding
documentation0..1markdown
id0..1string
oauthUrisS I0..1Extension(Complex)
modifierExtensionΣ ?! I0..*Extension
corsΣ0..1boolean
serviceΣ0..*CodeableConceptBinding
description0..1markdown
id0..1string
searchParameterCombinationI0..*Extension(Complex)
modifierExtensionΣ ?! I0..*Extension
typeΣ1..1codeBinding
profileΣ1..1canonical(StructureDefinition)
supportedProfileΣ0..*canonical(StructureDefinition)
documentation0..1markdown
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
code1..1codeBinding
documentation0..1markdown
versioning0..1codeBinding
readHistory0..1boolean
updateCreate0..1boolean
conditionalCreate0..1boolean
conditionalRead0..1codeBinding
conditionalUpdate0..1boolean
conditionalDelete0..1codeBinding
referencePolicy0..*codeBinding
searchInclude0..*string
searchRevInclude0..*string
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
name1..1string
definition0..1canonical(SearchParameter)
type1..1codeBinding
documentation0..1markdown
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
nameΣ1..1string
definitionΣ1..1canonical(OperationDefinition)
documentation0..1markdown
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
code1..1codeBinding
documentation0..1markdown
searchParam0..*see (searchParam)
operationΣ0..*see (operation)
compartment0..*canonical(CompartmentDefinition)
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
protocol1..1CodingBinding
address1..1url
reliableCache0..1unsignedInt
documentation0..1markdown
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
modeΣ1..1codeBinding
definitionΣ1..1canonical(MessageDefinition)
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
modeΣ1..1codeBinding
documentation0..1markdown
profileΣ1..1canonical(StructureDefinition)

from CapabilityStatement

idΣ0..1string
metaΣ0..1Meta
implicitRulesΣ ?!0..1uri
language0..1codeBinding
text0..1Narrative
contained0..*Resource
apiDefinitionS I1..1Extension(Complex)
modifierExtension?! I0..*Extension
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)
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
nameΣ1..1string
versionΣ0..1string
releaseDateΣ0..1dateTime
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
descriptionΣ1..1string
urlΣ0..1url
custodianΣ I0..1Reference(Organization)
fhirVersionS Σ1..1codeBinding
formatΣ1..*codeBinding
patchFormatΣ0..*codeBinding
implementationGuideS Σ0..*canonical(ImplementationGuide)
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
modeΣ1..1codeBinding
documentation0..1markdown
id0..1string
oauthUrisS I0..1Extension(Complex)
modifierExtensionΣ ?! I0..*Extension
corsΣ0..1boolean
serviceΣ0..*CodeableConceptBinding
description0..1markdown
id0..1string
searchParameterCombinationI0..*Extension(Complex)
modifierExtensionΣ ?! I0..*Extension
typeΣ1..1codeBinding
profileΣ1..1canonical(StructureDefinition)
supportedProfileΣ0..*canonical(StructureDefinition)
documentation0..1markdown
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
code1..1codeBinding
documentation0..1markdown
versioning0..1codeBinding
readHistory0..1boolean
updateCreate0..1boolean
conditionalCreate0..1boolean
conditionalRead0..1codeBinding
conditionalUpdate0..1boolean
conditionalDelete0..1codeBinding
referencePolicy0..*codeBinding
searchInclude0..*string
searchRevInclude0..*string
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
name1..1string
definition0..1canonical(SearchParameter)
type1..1codeBinding
documentation0..1markdown
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
nameΣ1..1string
definitionΣ1..1canonical(OperationDefinition)
documentation0..1markdown
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
code1..1codeBinding
documentation0..1markdown
searchParam0..*see (searchParam)
operationΣ0..*see (operation)
compartment0..*canonical(CompartmentDefinition)
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
protocol1..1CodingBinding
address1..1url
reliableCache0..1unsignedInt
documentation0..1markdown
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
modeΣ1..1codeBinding
definitionΣ1..1canonical(MessageDefinition)
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
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 aplies 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