PackagesCanonicalsLogsProblems
    Packages
    hl7.fhir.us.core@8.0.0-ballot
    http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner
description: The US Core Practitioner Profile inherits from the FHIR [Practitioner](https://hl7.org/fhir/R4/practitioner.html) resource; refer to it for scope and usage definitions. This profile sets minimum expectations for the Practitioner resource to record, search, and fetch basic demographics and administrative information about an individual practitioner. It specifies which core elements, extensions, vocabularies, and value sets **SHALL** be present and constrains how the elements are used. Providing the floor for standards development for specific use cases promotes interoperability and adoption.
package_name: hl7.fhir.us.core
derivation: constraint
name: USCorePractitionerProfile
type: Practitioner
elements:
  identifier:
    mustSupport: true
    index: 0
    elements:
      system: {type: uri, mustSupport: true, index: 1}
      value: {type: string, mustSupport: true, index: 2}
    required: [value, system]
    slicing:
      rules: open
      discriminator:
      - {path: $this, type: value}
      min: 1
      slices:
        NPI:
          match: {system: 'http://hl7.org/fhir/sid/us-npi'}
          schema:
            constraint:
              us-core-16: {human: NPI must be 10 digits, severity: error, expression: 'value.matches(''^[0-9]{10}$'')'}
              us-core-17: {human: NPI check digit must be valid (Luhn algorithm check), severity: error, expression: '(((select(value.substring(0,1).toInteger()).select(iif($this<5, $this*2, (($this*2)-9))))+(value.substring(1,1).toInteger())+(select(value.substring(2,1).toInteger()).select(iif($this<5, $this*2, (($this*2)-9))))+(value.substring(3,1).toInteger())+(select(value.substring(4,1).toInteger()).select(iif($this<5, $this*2, (($this*2)-9))))+(value.substring(5,1).toInteger())+(select(value.substring(6,1).toInteger()).select(iif($this<5, $this*2, (($this*2)-9))))+(value.substring(7,1).toInteger())+(select(value.substring(8,1).toInteger()).select(iif($this<5, $this*2, (($this*2)-9))))+(value.substring(9,1).toInteger()) + 24)mod 10=0)'}
            mustSupport: true
            pattern:
              type: Identifier
              value: {system: 'http://hl7.org/fhir/sid/us-npi'}
            index: 3
  name:
    mustSupport: true
    index: 4
    elements:
      family: {type: string, mustSupport: true, index: 5}
    required: [family]
  telecom:
    mustSupport: true
    index: 6
    elements:
      system: {mustSupport: true, index: 7}
      value: {mustSupport: true, index: 8}
  address:
    short: Address(es) of the practitioner
    mustSupport: true
    index: 9
    elements:
      line: {type: string, mustSupport: true, array: true, max: 4, index: 10}
      city: {type: string, mustSupport: true, index: 11}
      state:
        type: string
        binding: {strength: extensible, valueSet: 'http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state'}
        mustSupport: true
        index: 12
      postalCode: {type: string, short: US Zip Codes, mustSupport: true, index: 13}
      country: {type: string, mustSupport: true, index: 14}
package_version: 8.0.0-ballot
class: profile
kind: resource
url: http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner
base: http://hl7.org/fhir/StructureDefinition/Practitioner
version: 8.0.0-ballot
required: [name, identifier]