PackagesCanonicalsLogsProblems
    Packages
    uk.nhsdigital.r4.test@2.8.21-prerelease
    https://fhir.nhs.uk/StructureDefinition/NHSDigital-PractitionerRole
description: null
package_name: uk.nhsdigital.r4.test
derivation: constraint
name: NHSDigitalPractitionerRole
type: PractitionerRole
elements:
  specialty:
    mustSupport: true
    index: 21
    elements:
      coding:
        index: 22
        elements:
          system: {index: 23}
          code: {index: 24}
          display: {index: 25}
        required: [display, system, code]
        slicing:
          rules: open
          discriminator:
          - {path: system, type: value}
          min: 1
          slices:
            SNOMEDSpecialty:
              match: {system: 'http://snomed.info/sct'}
              schema:
                binding: {strength: preferred, valueSet: 'http://hl7.org/fhir/ValueSet/c80-practice-codes'}
                mustSupport: true
                index: 26
                elements:
                  system:
                    pattern: {type: Uri, value: 'http://snomed.info/sct'}
                    index: 27
    required: [coding]
  organization:
    type: Reference
    constraint:
      nhsd-1: {human: PractitionerRole.organization - An identifier reference or resource reference should be provided, severity: warning, expression: (reference.exists() or identifier.exists())}
    mustSupport: true
    refers: ['https://fhir.nhs.uk/StructureDefinition/NHSDigital-Organization']
    index: 8
    elements:
      identifier:
        elements:
          system: {index: 9}
          value: {index: 10}
        required: [value, system]
  extension:
    index: 0
    slicing:
      rules: open
      discriminator:
      - {path: url, type: value}
      min: 0
      slices:
        costCentre:
          match: {url: null}
          schema: {type: Extension, mustSupport: true, url: 'https://fhir.nhs.uk/StructureDefinition/Extension-NHSDigital-Account-code', index: 1}
          min: 0
          max: 1
  code:
    mustSupport: true
    index: 11
    elements:
      coding:
        index: 12
        elements:
          system: {index: 13}
          code: {index: 14}
        required: [system, code]
        slicing:
          rules: open
          discriminator:
          - {path: system, type: value}
          min: 1
          slices:
            sdsJobRoleCode:
              match: {system: 'https://fhir.nhs.uk/CodeSystem/NHSDigital-SDS-JobRoleCode'}
              schema:
                short: SDS Job Role Code
                mustSupport: true
                index: 15
                elements:
                  system:
                    pattern: {type: Uri, value: 'https://fhir.nhs.uk/CodeSystem/NHSDigital-SDS-JobRoleCode'}
                    index: 16
            SDSJobRoleName:
              match: {system: 'https://fhir.hl7.org.uk/CodeSystem/UKCore-SDSJobRoleName'}
              schema:
                index: 17
                elements:
                  system:
                    pattern: {type: Uri, value: 'https://fhir.hl7.org.uk/CodeSystem/UKCore-SDSJobRoleName'}
                    index: 18
            ukCoreSNOMEDCT:
              match: {system: 'http://snomed.info/sct'}
              schema:
                binding: {strength: preferred, valueSet: 'https://fhir.hl7.org.uk/ValueSet/UKCore-PractitionerRoleCode'}
                index: 19
                elements:
                  system:
                    pattern: {type: Uri, value: 'http://snomed.info/sct'}
                    index: 20
    required: [coding]
  identifier:
    mustSupport: true
    index: 2
    slicing:
      rules: open
      discriminator:
      - {path: system, type: value}
      min: null
      slices:
        sdsRoleProfileID:
          match: {system: 'https://fhir.nhs.uk/Id/sds-role-profile-id'}
          schema:
            mustSupport: true
            index: 3
            elements:
              system:
                pattern: {type: Uri, value: 'https://fhir.nhs.uk/Id/sds-role-profile-id'}
                index: 4
        nhsbsaSpuriousCode:
          match: {system: 'https://fhir.hl7.org.uk/Id/nhsbsa-spurious-code'}
          schema:
            mustSupport: true
            index: 5
            elements:
              system:
                pattern: {type: Uri, value: 'https://fhir.hl7.org.uk/Id/nhsbsa-spurious-code'}
                index: 6
  practitioner:
    type: Reference
    constraint:
      role-din: {human: DIN format must be NNNNNN, severity: warning, expression: 'identifier.exists().not() or identifier.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}$''))'}
      role-gmp: {human: GMP must be of the format GNNNNNNN and not be a spurious code (starts with G6 or G7), severity: error, expression: 'identifier.exists().not() or identifier.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}$''))'}
      role-nmc: {human: NMC must be of the format NNANNNNA, severity: warning, expression: 'identifier.exists().not() or identifier.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}$''))'}
      role-sds-user-numeric: {human: sds-user-id must be numeric, severity: error, expression: 'identifier.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]+$''))'}
      role-gmcreferencenumber: {human: GMC Reference Number must be of the format NNNNNNN, severity: error, expression: 'identifier.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}$''))'}
      role-gphc: {human: GPHC must be of the format NNNNNNN, severity: warning, expression: 'identifier.exists().not() or identifier.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}$''))'}
      nacs-code-retired: {human: 'NACS (/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).', severity: warning, expression: 'identifier.where(system=''https://fhir.hl7.org.uk/Id/professional-code'').exists().not()'}
      role-gmc: {human: GMC must be of the format CNNNNNNN, severity: error, expression: 'identifier.exists().not() or identifier.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}$''))'}
      nhsd-2: {human: An identifier reference or resource reference must be provided, severity: warning, expression: (reference.exists() or identifier.exists())}
      role-hcpc: {human: HCPC must be of the format AANNNNNN, severity: warning, expression: 'identifier.exists().not() or identifier.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}$''))'}
    mustSupport: true
    refers: ['https://fhir.nhs.uk/StructureDefinition/NHSDigital-Practitioner']
    index: 7
  telecom:
    mustSupport: true
    index: 34
    elements:
      value: {index: 35}
      use: {index: 36}
    required: [value, use]
  location:
    type: Reference
    constraint:
      nhsd-3: {human: PractitionerRole.location - An identifier or resource reference must be provided, severity: error, expression: (reference.exists() or identifier.exists())}
    mustSupport: false
    refers: ['https://fhir.nhs.uk/StructureDefinition/NHSDigital-Location']
    index: 28
    elements:
      identifier:
        elements:
          system: {index: 29}
          value: {index: 30}
        required: [value, system]
  healthcareService:
    type: Reference
    constraint:
      nhsd-4: {human: PractitionerRole.healthcareService - An identifier reference or resource reference must be provided, severity: error, expression: (reference.exists() or (identifier.exists()))}
    mustSupport: true
    refers: ['https://fhir.nhs.uk/StructureDefinition/NHSDigital-HealthcareService']
    index: 31
    elements:
      identifier:
        elements:
          system: {index: 32}
          value: {index: 33}
        required: [value, system]
package_version: 2.8.21-prerelease
extensions:
  costCentre: {url: 'https://fhir.nhs.uk/StructureDefinition/Extension-NHSDigital-Account-code', min: 0, max: 1, type: Extension, mustSupport: true, index: 1}
class: profile
kind: resource
url: https://fhir.nhs.uk/StructureDefinition/NHSDigital-PractitionerRole
base: https://fhir.hl7.org.uk/StructureDefinition/UKCore-PractitionerRole
version: 1.0.1