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

Conformance url FHIR Module Maturity Level
https://fhir.nhs.uk/StructureDefinition/NHSDigital-Practitioner Administration normative


UK Core Practitioner

useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ1..1uri
valueΣ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ1..1uriFixed Value
valueΣ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ1..1uriFixed Value
valueΣ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ1..1uriFixed Value
valueΣ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ1..1uriFixed Value
valueΣ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ1..1uriFixed Value
valueΣ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ1..1uriFixed Value
valueΣ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ1..1uriFixed Value
valueΣ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ1..1uriFixed Value
valueΣ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ1..1uriFixed Value
valueΣ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
activeΣ0..1boolean
nameS Σ1..*HumanName
systemΣ I0..1codeBinding
valueΣ1..1string
useΣ ?!1..1codeBinding
rankΣ0..1positiveInt
periodΣ I0..1Period
addressΣ0..*Address
genderΣ0..1codeBinding
birthDateΣ0..1date
photoI0..*Attachment
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ0..1uri
valueΣ0..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
code1..1CodeableConcept
periodI0..1Period
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
communication0..*CodeableConceptBinding

from UK Core Practitioner

useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ1..1uri
valueΣ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ1..1uriFixed Value
valueΣ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ1..1uriFixed Value
valueΣ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ1..1uriFixed Value
valueΣ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ1..1uriFixed Value
valueΣ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ1..1uriFixed Value
valueΣ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ1..1uriFixed Value
valueΣ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ1..1uriFixed Value
valueΣ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ1..1uriFixed Value
valueΣ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ1..1uriFixed Value
valueΣ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
activeΣ0..1boolean
nameS Σ1..*HumanName
systemΣ I0..1codeBinding
valueΣ1..1string
useΣ ?!1..1codeBinding
rankΣ0..1positiveInt
periodΣ I0..1Period
addressΣ0..*Address
genderΣ0..1codeBinding
birthDateΣ0..1date
photoI0..*Attachment
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ0..1uri
valueΣ0..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(UK Core Organization)
code1..1CodeableConcept
periodI0..1Period
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
communication0..*CodeableConceptBinding

keyhumanseverityexpression
prac-nmcNMC must be of the format NNANNNNAwarningidentifier.where(system='https://fhir.hl7.org.uk/Id/nmc-number').exists().not() or (identifier.where(system='https://fhir.hl7.org.uk/Id/nmc-number').exists() and identifier.where(system='https://fhir.hl7.org.uk/Id/nmc-number').value.matches('^[0-9]{2}[A-Z]{1}[0-9]{4}[A-Z]{1}$'))
prac-gmpGMP must be of the format GNNNNNNN and not be a spurious code (starts with G6 or G7)warningidentifier.where(system='https://fhir.hl7.org.uk/Id/gmp-number').exists().not() or (identifier.where(system='https://fhir.hl7.org.uk/Id/gmp-number').exists() and identifier.where(system='https://fhir.hl7.org.uk/Id/gmp-number').value.matches('^[G]{1}[01234589]{1}[0-9]{6}$'))
prac-gmcGMC must be of the format CNNNNNNNwarningidentifier.where(system='https://fhir.hl7.org.uk/Id/gmc-number').exists().not() or (identifier.where(system='https://fhir.hl7.org.uk/Id/gmc-number').exists() and identifier.where(system='https://fhir.hl7.org.uk/Id/gmc-number').value.matches('^[C]{1}[0-9]{7}$'))
prac-gphcGPHC must be of the format NNNNNNNwarningidentifier.where(system='https://fhir.hl7.org.uk/Id/gphc-number').exists().not() or (identifier.where(system='https://fhir.hl7.org.uk/Id/gphc-number').exists() and identifier.where(system='https://fhir.hl7.org.uk/Id/gphc-number').value.matches('^[0-9]{7}$'))
prac-gmcreferencenumberGMC Reference Number must be of the format NNNNNNNerroridentifier.where(system='https://fhir.hl7.org.uk/Id/gmc-reference-number').exists().not() or (identifier.where(system='https://fhir.hl7.org.uk/Id/gphc-number').exists() and identifier.where(system='https://fhir.hl7.org.uk/Id/gmc-reference-number').value.matches('^[0-9]{7}$'))
prac-hcpcHCPC must be of the format AANNNNNNwarningidentifier.where(system='https://fhir.hl7.org.uk/Id/hcpc-number').exists().not() or (identifier.where(system='https://fhir.hl7.org.uk/Id/hcpc-number').exists() and identifier.where(system='https://fhir.hl7.org.uk/Id/hcpc-number').value.matches('^[A-Z]{2}[0-9]{6}$'))
prac-dinDIN format must be NNNNNNwarningidentifier.where(system='https://fhir.hl7.org.uk/Id/din-number').exists().not() or (identifier.where(system='https://fhir.hl7.org.uk/Id/din-number').exists() and identifier.where(system='https://fhir.hl7.org.uk/Id/din-number').value.matches('^[0-9]{6}$'))
prac-sds-user-numericsds-user-id must be numericerroridentifier.where(system='https://fhir.nhs.uk/Id/sds-user-id').exists().not() or (identifier.where(system='https://fhir.nhs.uk/Id/sds-user-id').exists() and identifier.where(system='https://fhir.nhs.uk/Id/sds-user-id').value.matches('^[0-9]+$'))
nacs-code-retiredNACS (/ODS) Practitioner Identifier is retired in NHS FHIR and should not be used. Please use the actual naming system instead (e,g, https://fhir.hl7.org.uk/Id/gmc-number, https://fhir.hl7.org.uk/Id/gmp-number, etc).warningidentifier.where(system='https://fhir.hl7.org.uk/Id/professional-code').exists().not()

Definition

A person who is directly or indirectly involved in the provisioning of healthcare.

Constraints

identifier

Element Id Practitioner.identifier
Cardinality 1..*
Slicing OPEN discriminator - VALUE system
type Identifier

Definition

SHOULD contain a professional code.

The inclusion of a professional code is strongly recommended. For consultants and doctors a prescribing code should be present. Please see NHS Data Model and Dictionary for details on these code.

The SDS User Id should be sourced from NHS Identity (SmartCard), this is also held within the Spine Directory Service LDAP database.

FHIR identifier OID/HL7v3 HL7v2 ITK Format Description Professional Code Prescribing Code
https://fhir.hl7.org.uk/Id/gmp-number 2.16.840.1.113883.2.1.3.2.4.16.62 GMP G[1234589]NNNNNN General Medical Practitioner Code GENERAL MEDICAL PRACTITIONER PPD CODE. Formerly called GP General National Code (GNC). Yes No, also include DIN
https://fhir.hl7.org.uk/Id/gmc-number 2.16.840.1.113883.2.1.3.2.4.16.63 GMC CNNNNNNN General Medical Council Code CONSULTANT_CODE Yes Yes
https://fhir.hl7.org.uk/Id/nmc-number NNANNNNA Nursing and Midwifery Council Code Yes Yes
https://fhir.hl7.org.uk/Id/gphc-number NNNNNNN General Pharmaceutical Council Code Yes Yes
https://fhir.hl7.org.uk/Id/hcpc-number AANNNNNN(*) Health and Care Professional Council Code Yes Yes
https://fhir.hl7.org.uk/Id/din-number NNNNNN DOCTOR INDEX NUMBER No Yes
https://fhir.nhs.uk/Id/sds-user-id 1.2.826.0.1285.0.2.0.65 N(*) SDS User ID No No
https://fhir.nhs.uk/Id/gmc-reference-number 2.16.840.1.113883.2.1.3.2.4.18.29 NNNNNNN GMC Reference Number No No
https://fhir.hl7.org.uk/Id/professional-code 1.2.826.0.1285.0.2.1.54 A(*) ODS/NACS Practitioner Code (retired). Included for backwards compatibility No No

Format

  • N = any number
  • A = any alpha

(*) NHS Prescription Services systems require these prescriber codes to be 8 characters long. Additional zeroes (0) should be inserted immediately following the first 2 alpha characters to extend the code to 8 characters as necessary.

Code Format Example
GP/medical prescriber (DIN) NNNNNN 954000
Nurse prescriber (NMC) NNANNNNA 71A2998E
Pharmacist prescriber (GPHC) NNNNNNN 2033467
Optometrist prescriber NN-NNNNN 01-09491
Podiatrist prescriber (HCPC) CHNNNNNN CH029821
Physiotherapist prescriber (HCPC) PHNNNNNN PH095159
Radiographer prescriber (HCPC) RANNNNNN RA088262
Dietician prescriber (HCPC) DTNNNNNN DT012345
Paramedic prescriber (HCPC) PANNNNNN PA054321

The Doctor Index Number (DIN) will be present in the resource even if they are prescribing using a different prescribing code. This code is called the spurious code is held within the NHSDigital-PractitionerRole resource and MUST NOT be contained in the Practitioner resource.

In the example below, the practitioner (GP as they have a GMP Code) has a SDS User Id of 3415870201, GMP code of G1234567 and DIN code of 123456. If the GP was in a role, prescribing using a spurious code this would be found in the PractitionerRole.

{
  "resourceType": "Practitioner",
  ...
  "identifier": [
          {
            "system": "https://fhir.nhs.uk/Id/sds-user-id",
            "value": "3415870201"
          },
          {
            "system": "https://fhir.hl7.org.uk/Id/gmp-number",
            "value": "G1234567"
          },
          {
            "system": "https://fhir.hl7.org.uk/Id/din-number",
            "value": "123456"
          }
        ]
  ...
}

In the example below, the practitioner (Consultant as they have a GMC Code) has a SDS User Id of 1415870201, GMC code of C2134567.

{
  "resourceType": "Practitioner",
  ...
  "identifier": [
          {
            "system": "https://fhir.nhs.uk/Id/sds-user-id",
            "value": "1415870201"
          },
          {
            "system": "https://fhir.hl7.org.uk/Id/gmc-number",
            "value": "C2134567"
          }
        ]
  ...
}

Professional Code System (Unspecified/Unknown System)

In cases where the profession code is present but it is not certain what type of code this is, the https://fhir.hl7.org.uk/Id/professional-code system should be used. It is also used for backwards compatibility with EPS HL7 v3 ODS/NACS Practitioner Identifiers. This system may include codes from different codes and this may lead to identfication issues, for example GPhC and GMC Reference Number have the same format (7 digits), if one of these is received it is not known if this is a doctor and or a pharmacist.

E.g. in the example below, 2134567 is probably a GMC Reference Number but we are not certain.

{
  "resourceType": "Practitioner",
  ...
  "identifier": [
          {
            "system": "https://fhir.nhs.uk/Id/sds-user-id",
            "value": "1415870201"
          },
          {
            "system": "https://fhir.hl7.org.uk/Id/professional-code",
            "value": "2134567"
          }
        ]
  ...
}

Requirements

Often, specific identities are assigned for the agent.

Comment

SHOULD contain a professional code or SDS-user-id.

identifier:gmcCode

Element Id Practitioner.identifier:gmcCode
Cardinality 0..1
Slice Name gmcCode
type Identifier

Definition

An identifier that applies to this person in this role.

Requirements

Often, specific identities are assigned for the agent.

identifier:gmcCode.system

Element Id Practitioner.identifier:gmcCode.system
Cardinality 1..1
Fixed Value https://fhir.hl7.org.uk/Id/gmc-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.

identifier:gmpCode

Element Id Practitioner.identifier:gmpCode
Cardinality 0..1
Slice Name gmpCode
type Identifier

Definition

Formerly called GP General National Code (GNC).

Requirements

Often, specific identities are assigned for the agent.

identifier:gmpCode.system

Element Id Practitioner.identifier:gmpCode.system
Cardinality 1..1
Fixed Value https://fhir.hl7.org.uk/Id/gmp-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.

identifier:dinCode

Element Id Practitioner.identifier:dinCode
Cardinality 0..1
Slice Name dinCode
type Identifier

Definition

An identifier that applies to this person in this role.

Requirements

Often, specific identities are assigned for the agent.

identifier:dinCode.system

Element Id Practitioner.identifier:dinCode.system
Cardinality 1..1
Fixed Value https://fhir.hl7.org.uk/Id/din-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.

identifier:gphcCode

Element Id Practitioner.identifier:gphcCode
Cardinality 0..1
Slice Name gphcCode
type Identifier

Definition

An identifier that applies to this person in this role.

Requirements

Often, specific identities are assigned for the agent.

identifier:gphcCode.system

Element Id Practitioner.identifier:gphcCode.system
Cardinality 1..1
Fixed Value https://fhir.hl7.org.uk/Id/gphc-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.

identifier:hcpcNumber

Element Id Practitioner.identifier:hcpcNumber
Cardinality 0..1
Slice Name hcpcNumber
type Identifier

Definition

An identifier that applies to this person in this role.

Requirements

Often, specific identities are assigned for the agent.

identifier:hcpcNumber.system

Element Id Practitioner.identifier:hcpcNumber.system
Cardinality 1..1
Fixed Value https://fhir.hl7.org.uk/Id/hcpc-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.

identifier:nmcNumber

Element Id Practitioner.identifier:nmcNumber
Cardinality 0..1
Slice Name nmcNumber
type Identifier

Definition

An identifier that applies to this person in this role.

Requirements

Often, specific identities are assigned for the agent.

identifier:nmcNumber.system

Element Id Practitioner.identifier:nmcNumber.system
Cardinality 1..1
Fixed Value https://fhir.hl7.org.uk/Id/nmc-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.

identifier:professionalNumber

Element Id Practitioner.identifier:professionalNumber
Cardinality 0..*
Slice Name professionalNumber
type Identifier

Definition

A legacy system to support conversion of NPfIT/v3 CodeSysem to FHIR. This should not be used on new implementations. More accurate systems such as https://fhir.hl7.org.uk/Id/gmp-number and https://fhir.hl7.org.uk/Id/gmc-number

Although this system was intended to only be ODS/NACS Practitioner Identifiers, it has been used as a general purpose system. Therefore the codes can't be trusted e.g. 1234567 could be referring to a GPhC (pharmacist) or GMC Reference Number (doctor). These codes on their won should not be considered safe for the purposes of Practitioner identification.

Requirements

Often, specific identities are assigned for the agent.

identifier:professionalNumber.system

Element Id Practitioner.identifier:professionalNumber.system
Cardinality 1..1
Fixed Value https://fhir.hl7.org.uk/Id/professional-code
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.

identifier:gmcReferenceNumber

Element Id Practitioner.identifier:gmcReferenceNumber
Cardinality 0..1
Slice Name gmcReferenceNumber
type Identifier

Definition

This should not be confused with https://fhir.hl7.org.uk/Id/gmc-number which is the Consultants CONSULTANT_CODE.

This is considered a supplemental code and the official English NHS identifiers (https://fhir.hl7.org.uk/Id/gmc-number or https://fhir.hl7.org.uk/Id/gmp-number) should also be provided.

Requirements

Often, specific identities are assigned for the agent.

identifier:gmcReferenceNumber.system

Element Id Practitioner.identifier:gmcReferenceNumber.system
Cardinality 1..1
Fixed Value https://fhir.hl7.org.uk/Id/gmc-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.

identifier:sdsUserId

Element Id Practitioner.identifier:sdsUserId
Cardinality 0..1
Slice Name sdsUserId
type Identifier

Definition

Used with CIS2 and Spine

Requirements

Often, specific identities are assigned for the agent.

identifier:sdsUserId.system

Element Id Practitioner.identifier:sdsUserId.system
Cardinality 1..1
Fixed Value https://fhir.nhs.uk/Id/sds-user-id
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.

name

Element Id Practitioner.name
Cardinality 1..*
type HumanName

Definition

The name(s) associated with the practitioner.

Requirements

The name(s) that a Practitioner is known by. Where there are multiple, the name that the practitioner is usually known as should be used in the display.

Comment

The selection of the use property should ensure that there is a single usual name specified, and others use the nickname (alias), old, or other values as appropriate. In general, select the value to be used in the ResourceReference.display based on this: 1. There is more than 1 name 2. Use = usual 3. Period is current to the date of the usage 4. Use = official 5. Other order as decided by internal business rules.

telecom

Element Id Practitioner.telecom
Cardinality 0..*
type ContactPoint

Definition

A contact detail for the practitioner, e.g. a telephone number or an email address.

Requirements

Need to know how to reach a practitioner independent to any roles the practitioner may have.

Comment

Person may have multiple ways to be contacted with different uses or applicable periods. May need to have options for contacting the person urgently and to help with identification. These typically will have home numbers, or mobile numbers that are not role specific.

back to top