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-Appointment

Conformance url FHIR Module Maturity Level
https://fhir.nhs.uk/StructureDefinition/NHSDigital-Appointment Administration trial-use

Conformance Rules



bookingOrganizationI0..1Extension(Reference(UK Core Organization))
deliveryChannelI0..1Extension(code)
requesterI0..1Extension(Reference(NHSDigitalPractitionerRole | NHSDigitalPractitioner | NHSDigitalHealthcareService))
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ1..1uri
valueΣ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
statusS Σ ?!1..1codeBinding
cancelationReasonΣ0..1CodeableConcept
systemΣ1..1uri
versionΣ0..1string
codeΣ1..1code
displayΣ0..1string
userSelectedΣ0..1boolean
textΣ0..1string
systemΣ0..1uriFixed Value
versionΣ0..1string
codeΣ0..1code
displayΣ0..1string
userSelectedΣ0..1boolean
textΣ0..1string
systemΣ0..1uriFixed Value
versionΣ0..1string
codeΣ0..1code
displayΣ0..1string
userSelectedΣ0..1boolean
textΣ0..1string
serviceTypeΣ0..*CodeableConceptBinding
specialtyΣ0..*CodeableConceptBinding
appointmentTypeΣ0..1CodeableConceptBinding
reasonCodeS Σ0..*CodeableConceptBinding
referenceΣ I0..1string
typeΣ0..1uriBinding
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ0..1uri
valueΣ0..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
displayΣ0..1string
priority0..1unsignedInt
description0..1string
referenceΣ I0..1string
typeΣ0..1uriBinding
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ0..1uri
valueΣ0..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
displayΣ0..1string
startS Σ1..1instant
endS Σ1..1instant
minutesDuration0..1positiveInt
referenceΣ I0..1string
typeΣ0..1uriBinding
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ0..1uri
valueΣ0..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
displayΣ0..1string
referenceΣ I0..1string
typeΣ0..1uriBinding
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ0..1uriFixed Value
valueΣ0..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
displayΣ0..1string
created0..1dateTime
comment0..1string
patientInstruction0..1string
referenceΣ I0..1string
typeΣ0..1uriBinding
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ1..1uri
valueΣ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
displayΣ0..1string
typeΣ0..*CodeableConceptBinding
referenceΣ I0..1string
typeΣ0..1uriBinding
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ1..1uri
valueΣ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
displayΣ0..1string
requiredΣ0..1codeBinding
statusΣ1..1codeBinding
periodI0..1Period
requestedPeriodI0..*Period

bookingOrganizationI0..1Extension(Reference(UK Core Organization))
deliveryChannelI0..1Extension(code)
requesterI0..1Extension(Reference(NHSDigitalPractitionerRole | NHSDigitalPractitioner | NHSDigitalHealthcareService))
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ1..1uri
valueΣ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
statusS Σ ?!1..1codeBinding
cancelationReasonΣ0..1CodeableConcept
systemΣ1..1uri
versionΣ0..1string
codeΣ1..1code
displayΣ0..1string
userSelectedΣ0..1boolean
textΣ0..1string
systemΣ0..1uriFixed Value
versionΣ0..1string
codeΣ0..1code
displayΣ0..1string
userSelectedΣ0..1boolean
textΣ0..1string
systemΣ0..1uriFixed Value
versionΣ0..1string
codeΣ0..1code
displayΣ0..1string
userSelectedΣ0..1boolean
textΣ0..1string
serviceTypeΣ0..*CodeableConceptBinding
specialtyΣ0..*CodeableConceptBinding
appointmentTypeΣ0..1CodeableConceptBinding
reasonCodeS Σ0..*CodeableConceptBinding
referenceΣ I0..1string
typeΣ0..1uriBinding
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ0..1uri
valueΣ0..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
displayΣ0..1string
priority0..1unsignedInt
description0..1string
referenceΣ I0..1string
typeΣ0..1uriBinding
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ0..1uri
valueΣ0..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
displayΣ0..1string
startS Σ1..1instant
endS Σ1..1instant
minutesDuration0..1positiveInt
referenceΣ I0..1string
typeΣ0..1uriBinding
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ0..1uri
valueΣ0..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
displayΣ0..1string
referenceΣ I0..1string
typeΣ0..1uriBinding
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ0..1uriFixed Value
valueΣ0..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
displayΣ0..1string
created0..1dateTime
comment0..1string
patientInstruction0..1string
referenceΣ I0..1string
typeΣ0..1uriBinding
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ1..1uri
valueΣ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
displayΣ0..1string
typeΣ0..*CodeableConceptBinding
referenceΣ I0..1string
typeΣ0..1uriBinding
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ1..1uri
valueΣ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
displayΣ0..1string
requiredΣ0..1codeBinding
statusΣ1..1codeBinding
periodI0..1Period
requestedPeriodI0..*Period

None defined at present

Constraint Profiles

nameprofilepurpose
NHSDigitalAppointmentPatientCarehttps://fhir.nhs.uk/StructureDefinition/NHSDigital-Appointment-PatientCare

Profile on NHSDigital-Appointment for NHS App/e-RS PatientCare



Definition

A booking of a healthcare event among patient(s), practitioner(s), related person(s) and/or device(s) for a specific date/time. This may result in one or more Encounter(s).

Constraints

  • app-2 (ERROR) Either start and end are specified, or neither
  • app-3 (ERROR) Only proposed or cancelled appointments can be missing start/end dates
  • app-4 (ERROR) Cancellation reason is only used for appointments that have been cancelled, or no-show

identifier

Element Id Appointment.identifier
Cardinality 0..*
type Identifier

Definition

This records identifiers associated with this appointment concern that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation).

status

Element Id Appointment.status
Cardinality 1..1
Terminology Binding AppointmentStatus (Required)
The free/busy status of an appointment.
type code

Definition

The overall status of the Appointment. Each of the participants has their own participation status which indicates their involvement in the process, however this status indicates the shared status.

e-RS

Will default to booked

Comment

If the Appointment's status is "cancelled" then all participants are expected to have their calendars released for the appointment period, and as such any Slots that were marked as BUSY can be re-set to FREE. This element is labelled as a modifier because the status contains the code entered-in-error that mark the Appointment as not currently valid.

serviceCategory:NHSDataDictionaryTreatmentFunction

Element Id Appointment.serviceCategory:NHSDataDictionaryTreatmentFunction
Cardinality 0..*
Terminology Binding ServiceCategory (Example)
Slice Name NHSDataDictionaryTreatmentFunction
type CodeableConcept

Definition

A broad categorisation of the service that is to be performed during this appointment.

serviceCategory:NHSDataDictionaryTreatmentFunction.coding.system

Element Id Appointment.serviceCategory:NHSDataDictionaryTreatmentFunction.coding.system
Cardinality 0..1
Fixed Value https://fhir.nhs.uk/CodeSystem/NHSDataModelAndDictionary-treatment-function
type uri

Definition

The identification of the code system that defines the meaning of the symbol in the code.

Requirements

Need to be unambiguous about the source of the definition of the symbol.

Comment

The URI may be an OID (urn:oid:...) or a UUID (urn:uuid:...). OIDs and UUIDs SHALL be references to the HL7 OID registry. Otherwise, the URI should come from HL7's list of FHIR defined special URIs or it should reference to some definition that establishes the system clearly and unambiguously.

serviceCategory:eRSClinicType

Element Id Appointment.serviceCategory:eRSClinicType
Cardinality 0..1
Terminology Binding ServiceCategory (Example)
Slice Name eRSClinicType
type CodeableConcept

Definition

A broad categorisation of the service that is to be performed during this appointment.

serviceCategory:eRSClinicType.coding.system

Element Id Appointment.serviceCategory:eRSClinicType.coding.system
Cardinality 0..1
Fixed Value https://fhir.nhs.uk/CodeSystem/NHSDigital-ClinicType
type uri

Definition

The identification of the code system that defines the meaning of the symbol in the code.

Requirements

Need to be unambiguous about the source of the definition of the symbol.

Comment

The URI may be an OID (urn:oid:...) or a UUID (urn:uuid:...). OIDs and UUIDs SHALL be references to the HL7 OID registry. Otherwise, the URI should come from HL7's list of FHIR defined special URIs or it should reference to some definition that establishes the system clearly and unambiguously.

reasonCode

Element Id Appointment.reasonCode
Cardinality 0..*
Terminology Binding EncounterReasonCodes (Preferred)
The Reason for the appointment to take place.
type CodeableConcept

Definition

The coded reason that this appointment is being scheduled. This is more clinical than administrative.

start

Element Id Appointment.start
Cardinality 1..1
type instant

Definition

Date time of the current appointment booking (if there is a current appointment booking to a Directly Bookable Service)

 "start": "2021-06-13T12:30:00+00:00",

end

Element Id Appointment.end
Cardinality 1..1
type instant

Definition

Date/Time that the appointment is to conclude.

"end": "2021-06-13T12:45:00+00:00",

slot

Element Id Appointment.slot
Cardinality 0..*
Slicing OPEN discriminator - VALUE identifier.system
type Reference(UKCoreSlot)

Definition

The slots from the participants' schedules that will be filled by the appointment.

slot:alternativeSlot

Element Id Appointment.slot:alternativeSlot
Cardinality 0..1
Slice Name alternativeSlot
type Reference(UKCoreSlot)

Definition

"slot": [
                   {
                       "identifier": {
                           "system": "https://fhir.nhs.uk/CodeSystem/unique-slot-reference-number",
                           "value": "USRN-12000001"
                       }
                   }
               ],

slot:alternativeSlot.identifier.system

Element Id Appointment.slot:alternativeSlot.identifier.system
Cardinality 0..1
Fixed Value https://fhir.nhs.uk/CodeSystem/unique-slot-reference-number
type uri

Definition

Establishes the namespace for the value - that is, a URL that describes a set values that are unique.

Requirements

There are many sets of identifiers. To perform matching of two identifiers, we need to know what set we're dealing with. The system identifies a particular set of unique identifiers.

Comment

Identifier.system is always case sensitive.

basedOn

Element Id Appointment.basedOn
Cardinality 0..*
type Reference(ServiceRequest)

Definition

The service request this appointment is allocated to assess (e.g. incoming referral or procedure request).

"basedOn": [
                    {
                        "reference": "https://server.fire.ly/ServiceRequest/6c2a1f9b-2517-419d-9099-591ba63f176c"
                    }
                ],

basedOn.identifier

Element Id Appointment.basedOn.identifier
Cardinality 0..1
type Identifier

Definition

An identifier for the target resource. This is used when there is no way to reference the other resource directly, either because the entity it represents is not available through a FHIR server, or because there is no way for the author of the resource to convert a known identifier to an actual location. There is no requirement that a Reference.identifier point to something that is actually exposed as a FHIR instance, but it SHALL point to a business concept that would be expected to be exposed as a FHIR instance, and that instance would need to be of a FHIR resource type allowed by the reference.

Comment

When an identifier is provided in place of a reference, any system processing the reference will only be able to resolve the identifier to a reference if it understands the business context in which the identifier is used. Sometimes this is global (e.g. a national identifier) but often it is not. For this reason, none of the useful mechanisms described for working with references (e.g. chaining, includes) are possible, nor should servers be expected to be able resolve the reference. Servers may accept an identifier based reference untouched, resolve it, and/or reject it - see CapabilityStatement.rest.resource.referencePolicy. When both an identifier and a literal reference are provided, the literal reference is preferred. Applications processing the resource are allowed - but not required - to check that the identifier matches the literal reference Applications converting a logical reference to a literal reference may choose to leave the logical reference present, or remove it. Reference is intended to point to a structure that can potentially be expressed as a FHIR resource, though there is no need for it to exist as an actual FHIR resource instance - except in as much as an application wishes to actual find the target of the reference. The content referred to be the identifier must meet the logical constraints implied by any limitations on what resource types are permitted for the reference. For example, it would not be legitimate to send the identifier for a drug prescription if the type were Reference(Observation|DiagnosticReport). One of the use-cases for Reference.identifier is the situation where no FHIR representation exists (where the type is Reference (Any).

participant

Element Id Appointment.participant
Cardinality 1..*
type BackboneElement

Definition

List of participants involved in the appointment.

This should include a Patient and a HealthcareService

 "participant": [
                    {
                        "actor": {
                            "identifier": {
                                "system": "https://fhir.nhs.uk/Id/ers-service",
                                "value": "11002"
                            }
                        },
                        "status": "accepted"
                    },
                    {
                        "actor": {
                            "identifier": {
                                "system": "https://fhir.nhs.uk/Id/nhs-number",
                                "value": "9912003888"
                            }
                        },
                        "status": "accepted"
                    }
                ]

Constraints

  • app-1 (ERROR) Either the type or actor on the participant SHALL be specified

participant.actor

Element Id Appointment.participant.actor
Cardinality 1..1
type Reference(NHSDigitalHealthcareService NHSDigitalPractitionerRoleMinimal NHSDigitalPatient NHSDigitalLocation NHSDigitalPractitioner)
Aggregation - contained
Aggregation - referenced

Definition

A Person, Location/HealthcareService or Device that is participating in the appointment.

Constraints

  • participant (ERROR) An identifier reference or resource reference must be provided
back to top