This page is part of the US Core (v7.0.0-ballot: STU7 Ballot 1) based on FHIR (HL7® FHIR® Standard) R4. The current version which supersedes this version is 6.1.0. For a full list of available versions, see the Directory of published versions
Official URL: http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner | Version: 7.0.0-ballot | |||
Standards status: Trial-use | Maturity Level: 3 | Computable Name: USCorePractitionerProfile | ||
Copyright/Legal: Used by permission of HL7 International, all rights reserved Creative Commons License |
This profile sets minimum expectations for the Practitioner resource to record, search, and fetch basic demographics and other administrative information about an individual practitioner to promote interoperability and adoption through common implementation. It identifies which core elements, extensions, vocabularies, and value sets SHALL be present and constrains the way the elements are used and constrains the way the elements are used when using the profile. It provides the floor for standards development for specific use cases.
Example Usage Scenarios:
The following are example usage scenarios for this profile:
The following data-elements must always be present (Mandatory definition) or must be supported if the data is present in the sending system (Must Support definition). They are presented below in a simple human-readable explanation. Profile specific guidance and examples are provided as well. The Formal Views below provides the formal summary, definitions, and terminology requirements.
Each Practitioner Must Have:
Each PractitionerRole Must Support:
*see guidance below
Profile Specific Implementation Guidance:
Practitioner.address.line
and Practitioner.address.city
.
Usage:
Description of Profiles, Differentials, Snapshots and how the different presentations work.
This structure is derived from Practitioner
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Practitioner | 0..* | Practitioner | A person with a formal responsibility in the provisioning of healthcare or related services | |
Slices for identifier | S | 1..* | Identifier | An identifier for the person as this agent Slice: Unordered, Open by pattern:$this |
identifier:All Slices | Content/Rules for all slices | |||
system | S | 1..1 | uri | The namespace for the identifier value |
value | S | 1..1 | string | The value that is unique |
identifier:NPI | SC | 0..* | Identifier | An identifier for the person as this agent us-core-16: NPI must be 10 digits us-core-17: NPI check digit must be valid (Luhn algorithm check) Required Pattern: At least the following |
system | 1..1 | uri | The namespace for the identifier value Fixed Value: http://hl7.org/fhir/sid/us-npi | |
name | S | 1..* | HumanName | The name(s) associated with the practitioner |
family | S | 1..1 | string | Family name (often called 'Surname') |
telecom | S | 0..* | ContactPoint | A contact detail for the practitioner (that apply to all roles) |
system | S | 0..1 | code | phone | fax | email | pager | url | sms | other |
value | S | 0..1 | string | The actual contact point details |
address | S | 0..* | Address | Address(es) of the practitioner |
line | S | 0..4 | string | Street name, number, direction & P.O. Box etc. Example General: 49 MEADOW ST |
city | S | 0..1 | string | Name of city, town etc. Example General: EVERYTOWN |
state | S | 0..1 | string | Sub-unit of country (abbreviations ok) Binding: USPS Two Letter Alphabetic Codes (extensible): Two letter USPS alphabetic codes. Example General: OK |
postalCode | S | 0..1 | string | US Zip Codes Example General: 74047 |
country | S | 0..1 | string | Country (e.g. can be ISO 3166 2 or 3 letter code) |
Documentation for this format |
Path | Conformance | ValueSet |
Practitioner.address.state | extensible | UspsTwoLetterAlphabeticCodes (a valid code from https://www.usps.com/ ) |
Id | Grade | Path(s) | Details | Requirements |
us-core-16 | error | Practitioner.identifier:NPI | NPI must be 10 digits : value.matches('^[0-9]{10}$') | |
us-core-17 | error | Practitioner.identifier:NPI | NPI check digit must be valid (Luhn algorithm check) : (((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) |
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Practitioner | 0..* | Practitioner | A person with a formal responsibility in the provisioning of healthcare or related services | |
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created |
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored |
Slices for identifier | SΣ | 1..* | Identifier | An identifier for the person as this agent Slice: Unordered, Open by pattern:$this |
identifier:All Slices | Content/Rules for all slices | |||
use | ?!Σ | 0..1 | code | usual | official | temp | secondary | old (If known) Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known . |
system | SΣ | 1..1 | uri | The namespace for the identifier value Example General: http://www.acme.com/identifiers/patient |
value | SΣ | 1..1 | string | The value that is unique Example General: 123456 |
identifier:NPI | SΣC | 0..* | Identifier | An identifier for the person as this agent us-core-16: NPI must be 10 digits us-core-17: NPI check digit must be valid (Luhn algorithm check) Required Pattern: At least the following |
system | 1..1 | uri | The namespace for the identifier value Fixed Value: http://hl7.org/fhir/sid/us-npi | |
name | SΣ | 1..* | HumanName | The name(s) associated with the practitioner |
use | ?!Σ | 0..1 | code | usual | official | temp | nickname | anonymous | old | maiden Binding: NameUse (required): The use of a human name. |
family | SΣ | 1..1 | string | Family name (often called 'Surname') |
telecom | SΣ | 0..* | ContactPoint | A contact detail for the practitioner (that apply to all roles) |
system | SΣC | 0..1 | code | phone | fax | email | pager | url | sms | other Binding: ContactPointSystem (required): Telecommunications form for contact point. |
value | SΣ | 0..1 | string | The actual contact point details |
use | ?!Σ | 0..1 | code | home | work | temp | old | mobile - purpose of this contact point Binding: ContactPointUse (required): Use of contact point. |
address | SΣ | 0..* | Address | Address(es) of the practitioner |
use | ?!Σ | 0..1 | code | home | work | temp | old | billing - purpose of this address Binding: AddressUse (required): The use of an address. Example General: home |
line | SΣ | 0..4 | string | Street name, number, direction & P.O. Box etc. This repeating element order: The order in which lines should appear in an address label Example General: 137 Nowhere Street Example General: 49 MEADOW ST |
city | SΣ | 0..1 | string | Name of city, town etc. Example General: Erewhon Example General: EVERYTOWN |
state | SΣ | 0..1 | string | Sub-unit of country (abbreviations ok) Binding: USPS Two Letter Alphabetic Codes (extensible): Two letter USPS alphabetic codes. Example General: OK |
postalCode | SΣ | 0..1 | string | US Zip Codes Example General: 9132 Example General: 74047 |
country | SΣ | 0..1 | string | Country (e.g. can be ISO 3166 2 or 3 letter code) |
Documentation for this format |
Path | Conformance | ValueSet |
Practitioner.identifier.use | required | IdentifierUse |
Practitioner.name.use | required | NameUse |
Practitioner.telecom.system | required | ContactPointSystem |
Practitioner.telecom.use | required | ContactPointUse |
Practitioner.address.use | required | AddressUse |
Practitioner.address.state | extensible | UspsTwoLetterAlphabeticCodes (a valid code from https://www.usps.com/ ) |
Id | Grade | Path(s) | Details | Requirements |
dom-2 | error | Practitioner | If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty() | |
dom-3 | error | Practitioner | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource : contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty() | |
dom-4 | error | Practitioner | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated : contained.meta.versionId.empty() and contained.meta.lastUpdated.empty() | |
dom-5 | error | Practitioner | If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty() | |
dom-6 | best practice | Practitioner | A resource should have narrative for robust management : text.`div`.exists() | |
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
us-core-16 | error | Practitioner.identifier:NPI | NPI must be 10 digits : value.matches('^[0-9]{10}$') | |
us-core-17 | error | Practitioner.identifier:NPI | NPI check digit must be valid (Luhn algorithm check) : (((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) |
Name | Flags | Card. | Type | Description & Constraints | ||||
---|---|---|---|---|---|---|---|---|
Practitioner | 0..* | Practitioner | A person with a formal responsibility in the provisioning of healthcare or related services | |||||
id | Σ | 0..1 | id | Logical id of this artifact | ||||
meta | Σ | 0..1 | Meta | Metadata about the resource | ||||
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created | ||||
language | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
| |||||
text | 0..1 | Narrative | Text summary of the resource, for human interpretation | |||||
contained | 0..* | Resource | Contained, inline Resources | |||||
extension | 0..* | Extension | Additional content defined by implementations | |||||
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored | ||||
Slices for identifier | SΣ | 1..* | Identifier | An identifier for the person as this agent Slice: Unordered, Open by pattern:$this | ||||
identifier:All Slices | Content/Rules for all slices | |||||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
use | ?!Σ | 0..1 | code | usual | official | temp | secondary | old (If known) Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known . | ||||
type | Σ | 0..1 | CodeableConcept | Description of identifier Binding: Identifier Type Codes (extensible): A coded type for an identifier that can be used to determine which identifier to use for a specific purpose. | ||||
system | SΣ | 1..1 | uri | The namespace for the identifier value Example General: http://www.acme.com/identifiers/patient | ||||
value | SΣ | 1..1 | string | The value that is unique Example General: 123456 | ||||
period | Σ | 0..1 | Period | Time period when id is/was valid for use | ||||
assigner | Σ | 0..1 | Reference(Organization) | Organization that issued id (may be just text) | ||||
identifier:NPI | SΣC | 0..* | Identifier | An identifier for the person as this agent us-core-16: NPI must be 10 digits us-core-17: NPI check digit must be valid (Luhn algorithm check) Required Pattern: At least the following | ||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations | |||||
use | 0..1 | code | usual | official | temp | secondary | old (If known) | |||||
type | 0..1 | CodeableConcept | Description of identifier | |||||
system | 1..1 | uri | The namespace for the identifier value Fixed Value: http://hl7.org/fhir/sid/us-npi | |||||
value | 0..1 | string | The value that is unique | |||||
period | 0..1 | Period | Time period when id is/was valid for use | |||||
assigner | 0..1 | Reference(Organization) | Organization that issued id (may be just text) | |||||
active | Σ | 0..1 | boolean | Whether this practitioner's record is in active use | ||||
name | SΣ | 1..* | HumanName | The name(s) associated with the practitioner | ||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
use | ?!Σ | 0..1 | code | usual | official | temp | nickname | anonymous | old | maiden Binding: NameUse (required): The use of a human name. | ||||
text | Σ | 0..1 | string | Text representation of the full name | ||||
family | SΣ | 1..1 | string | Family name (often called 'Surname') | ||||
given | Σ | 0..* | string | Given names (not always 'first'). Includes middle names This repeating element order: Given Names appear in the correct order for presenting the name | ||||
prefix | Σ | 0..* | string | Parts that come before the name This repeating element order: Prefixes appear in the correct order for presenting the name | ||||
suffix | Σ | 0..* | string | Parts that come after the name This repeating element order: Suffixes appear in the correct order for presenting the name | ||||
period | Σ | 0..1 | Period | Time period when name was/is in use | ||||
telecom | SΣ | 0..* | ContactPoint | A contact detail for the practitioner (that apply to all roles) | ||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
system | SΣC | 0..1 | code | phone | fax | email | pager | url | sms | other Binding: ContactPointSystem (required): Telecommunications form for contact point. | ||||
value | SΣ | 0..1 | string | The actual contact point details | ||||
use | ?!Σ | 0..1 | code | home | work | temp | old | mobile - purpose of this contact point Binding: ContactPointUse (required): Use of contact point. | ||||
rank | Σ | 0..1 | positiveInt | Specify preferred order of use (1 = highest) | ||||
period | Σ | 0..1 | Period | Time period when the contact point was/is in use | ||||
address | SΣ | 0..* | Address | Address(es) of the practitioner | ||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
use | ?!Σ | 0..1 | code | home | work | temp | old | billing - purpose of this address Binding: AddressUse (required): The use of an address. Example General: home | ||||
type | Σ | 0..1 | code | postal | physical | both Binding: AddressType (required): The type of an address (physical / postal). Example General: both | ||||
text | Σ | 0..1 | string | Text representation of the address Example General: 137 Nowhere Street, Erewhon 9132 | ||||
line | SΣ | 0..4 | string | Street name, number, direction & P.O. Box etc. This repeating element order: The order in which lines should appear in an address label Example General: 137 Nowhere Street Example General: 49 MEADOW ST | ||||
city | SΣ | 0..1 | string | Name of city, town etc. Example General: Erewhon Example General: EVERYTOWN | ||||
district | Σ | 0..1 | string | District name (aka county) Example General: Madison | ||||
state | SΣ | 0..1 | string | Sub-unit of country (abbreviations ok) Binding: USPS Two Letter Alphabetic Codes (extensible): Two letter USPS alphabetic codes. Example General: OK | ||||
postalCode | SΣ | 0..1 | string | US Zip Codes Example General: 9132 Example General: 74047 | ||||
country | SΣ | 0..1 | string | Country (e.g. can be ISO 3166 2 or 3 letter code) | ||||
period | Σ | 0..1 | Period | Time period when address was/is in use Example General: {"start":"2010-03-23","end":"2010-07-01"} | ||||
gender | Σ | 0..1 | code | male | female | other | unknown Binding: AdministrativeGender (required): The gender of a person used for administrative purposes. | ||||
birthDate | Σ | 0..1 | date | The date on which the practitioner was born | ||||
photo | 0..* | Attachment | Image of the person | |||||
qualification | 0..* | BackboneElement | Certification, licenses, or training pertaining to the provision of care | |||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations | |||||
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
identifier | 0..* | Identifier | An identifier for this qualification for the practitioner | |||||
code | 1..1 | CodeableConcept | Coded representation of the qualification Binding: v2 table 0360, Version 2.7 (example): Specific qualification the practitioner has to provide a service. | |||||
period | 0..1 | Period | Period during which the qualification is valid | |||||
issuer | 0..1 | Reference(Organization) | Organization that regulates and issues the qualification | |||||
communication | 0..* | CodeableConcept | A language the practitioner can use in patient communication Binding: CommonLanguages (preferred): A human language.
| |||||
Documentation for this format |
Path | Conformance | ValueSet | ||||
Practitioner.language | preferred | CommonLanguages
| ||||
Practitioner.identifier.use | required | IdentifierUse | ||||
Practitioner.identifier.type | extensible | Identifier Type Codes | ||||
Practitioner.name.use | required | NameUse | ||||
Practitioner.telecom.system | required | ContactPointSystem | ||||
Practitioner.telecom.use | required | ContactPointUse | ||||
Practitioner.address.use | required | AddressUse | ||||
Practitioner.address.type | required | AddressType | ||||
Practitioner.address.state | extensible | UspsTwoLetterAlphabeticCodes (a valid code from https://www.usps.com/ ) | ||||
Practitioner.gender | required | AdministrativeGender | ||||
Practitioner.qualification.code | example | v2.0360.2.7 (a valid code from http://terminology.hl7.org/CodeSystem/v2-0360|2.7 ) | ||||
Practitioner.communication | preferred | CommonLanguages
|
Id | Grade | Path(s) | Details | Requirements |
dom-2 | error | Practitioner | If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty() | |
dom-3 | error | Practitioner | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource : contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty() | |
dom-4 | error | Practitioner | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated : contained.meta.versionId.empty() and contained.meta.lastUpdated.empty() | |
dom-5 | error | Practitioner | If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty() | |
dom-6 | best practice | Practitioner | A resource should have narrative for robust management : text.`div`.exists() | |
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
us-core-16 | error | Practitioner.identifier:NPI | NPI must be 10 digits : value.matches('^[0-9]{10}$') | |
us-core-17 | error | Practitioner.identifier:NPI | NPI check digit must be valid (Luhn algorithm check) : (((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) |
This structure is derived from Practitioner
Differential View
This structure is derived from Practitioner
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Practitioner | 0..* | Practitioner | A person with a formal responsibility in the provisioning of healthcare or related services | |
Slices for identifier | S | 1..* | Identifier | An identifier for the person as this agent Slice: Unordered, Open by pattern:$this |
identifier:All Slices | Content/Rules for all slices | |||
system | S | 1..1 | uri | The namespace for the identifier value |
value | S | 1..1 | string | The value that is unique |
identifier:NPI | SC | 0..* | Identifier | An identifier for the person as this agent us-core-16: NPI must be 10 digits us-core-17: NPI check digit must be valid (Luhn algorithm check) Required Pattern: At least the following |
system | 1..1 | uri | The namespace for the identifier value Fixed Value: http://hl7.org/fhir/sid/us-npi | |
name | S | 1..* | HumanName | The name(s) associated with the practitioner |
family | S | 1..1 | string | Family name (often called 'Surname') |
telecom | S | 0..* | ContactPoint | A contact detail for the practitioner (that apply to all roles) |
system | S | 0..1 | code | phone | fax | email | pager | url | sms | other |
value | S | 0..1 | string | The actual contact point details |
address | S | 0..* | Address | Address(es) of the practitioner |
line | S | 0..4 | string | Street name, number, direction & P.O. Box etc. Example General: 49 MEADOW ST |
city | S | 0..1 | string | Name of city, town etc. Example General: EVERYTOWN |
state | S | 0..1 | string | Sub-unit of country (abbreviations ok) Binding: USPS Two Letter Alphabetic Codes (extensible): Two letter USPS alphabetic codes. Example General: OK |
postalCode | S | 0..1 | string | US Zip Codes Example General: 74047 |
country | S | 0..1 | string | Country (e.g. can be ISO 3166 2 or 3 letter code) |
Documentation for this format |
Path | Conformance | ValueSet |
Practitioner.address.state | extensible | UspsTwoLetterAlphabeticCodes (a valid code from https://www.usps.com/ ) |
Id | Grade | Path(s) | Details | Requirements |
us-core-16 | error | Practitioner.identifier:NPI | NPI must be 10 digits : value.matches('^[0-9]{10}$') | |
us-core-17 | error | Practitioner.identifier:NPI | NPI check digit must be valid (Luhn algorithm check) : (((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) |
Key Elements View
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Practitioner | 0..* | Practitioner | A person with a formal responsibility in the provisioning of healthcare or related services | |
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created |
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored |
Slices for identifier | SΣ | 1..* | Identifier | An identifier for the person as this agent Slice: Unordered, Open by pattern:$this |
identifier:All Slices | Content/Rules for all slices | |||
use | ?!Σ | 0..1 | code | usual | official | temp | secondary | old (If known) Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known . |
system | SΣ | 1..1 | uri | The namespace for the identifier value Example General: http://www.acme.com/identifiers/patient |
value | SΣ | 1..1 | string | The value that is unique Example General: 123456 |
identifier:NPI | SΣC | 0..* | Identifier | An identifier for the person as this agent us-core-16: NPI must be 10 digits us-core-17: NPI check digit must be valid (Luhn algorithm check) Required Pattern: At least the following |
system | 1..1 | uri | The namespace for the identifier value Fixed Value: http://hl7.org/fhir/sid/us-npi | |
name | SΣ | 1..* | HumanName | The name(s) associated with the practitioner |
use | ?!Σ | 0..1 | code | usual | official | temp | nickname | anonymous | old | maiden Binding: NameUse (required): The use of a human name. |
family | SΣ | 1..1 | string | Family name (often called 'Surname') |
telecom | SΣ | 0..* | ContactPoint | A contact detail for the practitioner (that apply to all roles) |
system | SΣC | 0..1 | code | phone | fax | email | pager | url | sms | other Binding: ContactPointSystem (required): Telecommunications form for contact point. |
value | SΣ | 0..1 | string | The actual contact point details |
use | ?!Σ | 0..1 | code | home | work | temp | old | mobile - purpose of this contact point Binding: ContactPointUse (required): Use of contact point. |
address | SΣ | 0..* | Address | Address(es) of the practitioner |
use | ?!Σ | 0..1 | code | home | work | temp | old | billing - purpose of this address Binding: AddressUse (required): The use of an address. Example General: home |
line | SΣ | 0..4 | string | Street name, number, direction & P.O. Box etc. This repeating element order: The order in which lines should appear in an address label Example General: 137 Nowhere Street Example General: 49 MEADOW ST |
city | SΣ | 0..1 | string | Name of city, town etc. Example General: Erewhon Example General: EVERYTOWN |
state | SΣ | 0..1 | string | Sub-unit of country (abbreviations ok) Binding: USPS Two Letter Alphabetic Codes (extensible): Two letter USPS alphabetic codes. Example General: OK |
postalCode | SΣ | 0..1 | string | US Zip Codes Example General: 9132 Example General: 74047 |
country | SΣ | 0..1 | string | Country (e.g. can be ISO 3166 2 or 3 letter code) |
Documentation for this format |
Path | Conformance | ValueSet |
Practitioner.identifier.use | required | IdentifierUse |
Practitioner.name.use | required | NameUse |
Practitioner.telecom.system | required | ContactPointSystem |
Practitioner.telecom.use | required | ContactPointUse |
Practitioner.address.use | required | AddressUse |
Practitioner.address.state | extensible | UspsTwoLetterAlphabeticCodes (a valid code from https://www.usps.com/ ) |
Id | Grade | Path(s) | Details | Requirements |
dom-2 | error | Practitioner | If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty() | |
dom-3 | error | Practitioner | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource : contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty() | |
dom-4 | error | Practitioner | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated : contained.meta.versionId.empty() and contained.meta.lastUpdated.empty() | |
dom-5 | error | Practitioner | If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty() | |
dom-6 | best practice | Practitioner | A resource should have narrative for robust management : text.`div`.exists() | |
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
us-core-16 | error | Practitioner.identifier:NPI | NPI must be 10 digits : value.matches('^[0-9]{10}$') | |
us-core-17 | error | Practitioner.identifier:NPI | NPI check digit must be valid (Luhn algorithm check) : (((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) |
Snapshot View
Name | Flags | Card. | Type | Description & Constraints | ||||
---|---|---|---|---|---|---|---|---|
Practitioner | 0..* | Practitioner | A person with a formal responsibility in the provisioning of healthcare or related services | |||||
id | Σ | 0..1 | id | Logical id of this artifact | ||||
meta | Σ | 0..1 | Meta | Metadata about the resource | ||||
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created | ||||
language | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
| |||||
text | 0..1 | Narrative | Text summary of the resource, for human interpretation | |||||
contained | 0..* | Resource | Contained, inline Resources | |||||
extension | 0..* | Extension | Additional content defined by implementations | |||||
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored | ||||
Slices for identifier | SΣ | 1..* | Identifier | An identifier for the person as this agent Slice: Unordered, Open by pattern:$this | ||||
identifier:All Slices | Content/Rules for all slices | |||||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
use | ?!Σ | 0..1 | code | usual | official | temp | secondary | old (If known) Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known . | ||||
type | Σ | 0..1 | CodeableConcept | Description of identifier Binding: Identifier Type Codes (extensible): A coded type for an identifier that can be used to determine which identifier to use for a specific purpose. | ||||
system | SΣ | 1..1 | uri | The namespace for the identifier value Example General: http://www.acme.com/identifiers/patient | ||||
value | SΣ | 1..1 | string | The value that is unique Example General: 123456 | ||||
period | Σ | 0..1 | Period | Time period when id is/was valid for use | ||||
assigner | Σ | 0..1 | Reference(Organization) | Organization that issued id (may be just text) | ||||
identifier:NPI | SΣC | 0..* | Identifier | An identifier for the person as this agent us-core-16: NPI must be 10 digits us-core-17: NPI check digit must be valid (Luhn algorithm check) Required Pattern: At least the following | ||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations | |||||
use | 0..1 | code | usual | official | temp | secondary | old (If known) | |||||
type | 0..1 | CodeableConcept | Description of identifier | |||||
system | 1..1 | uri | The namespace for the identifier value Fixed Value: http://hl7.org/fhir/sid/us-npi | |||||
value | 0..1 | string | The value that is unique | |||||
period | 0..1 | Period | Time period when id is/was valid for use | |||||
assigner | 0..1 | Reference(Organization) | Organization that issued id (may be just text) | |||||
active | Σ | 0..1 | boolean | Whether this practitioner's record is in active use | ||||
name | SΣ | 1..* | HumanName | The name(s) associated with the practitioner | ||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
use | ?!Σ | 0..1 | code | usual | official | temp | nickname | anonymous | old | maiden Binding: NameUse (required): The use of a human name. | ||||
text | Σ | 0..1 | string | Text representation of the full name | ||||
family | SΣ | 1..1 | string | Family name (often called 'Surname') | ||||
given | Σ | 0..* | string | Given names (not always 'first'). Includes middle names This repeating element order: Given Names appear in the correct order for presenting the name | ||||
prefix | Σ | 0..* | string | Parts that come before the name This repeating element order: Prefixes appear in the correct order for presenting the name | ||||
suffix | Σ | 0..* | string | Parts that come after the name This repeating element order: Suffixes appear in the correct order for presenting the name | ||||
period | Σ | 0..1 | Period | Time period when name was/is in use | ||||
telecom | SΣ | 0..* | ContactPoint | A contact detail for the practitioner (that apply to all roles) | ||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
system | SΣC | 0..1 | code | phone | fax | email | pager | url | sms | other Binding: ContactPointSystem (required): Telecommunications form for contact point. | ||||
value | SΣ | 0..1 | string | The actual contact point details | ||||
use | ?!Σ | 0..1 | code | home | work | temp | old | mobile - purpose of this contact point Binding: ContactPointUse (required): Use of contact point. | ||||
rank | Σ | 0..1 | positiveInt | Specify preferred order of use (1 = highest) | ||||
period | Σ | 0..1 | Period | Time period when the contact point was/is in use | ||||
address | SΣ | 0..* | Address | Address(es) of the practitioner | ||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
use | ?!Σ | 0..1 | code | home | work | temp | old | billing - purpose of this address Binding: AddressUse (required): The use of an address. Example General: home | ||||
type | Σ | 0..1 | code | postal | physical | both Binding: AddressType (required): The type of an address (physical / postal). Example General: both | ||||
text | Σ | 0..1 | string | Text representation of the address Example General: 137 Nowhere Street, Erewhon 9132 | ||||
line | SΣ | 0..4 | string | Street name, number, direction & P.O. Box etc. This repeating element order: The order in which lines should appear in an address label Example General: 137 Nowhere Street Example General: 49 MEADOW ST | ||||
city | SΣ | 0..1 | string | Name of city, town etc. Example General: Erewhon Example General: EVERYTOWN | ||||
district | Σ | 0..1 | string | District name (aka county) Example General: Madison | ||||
state | SΣ | 0..1 | string | Sub-unit of country (abbreviations ok) Binding: USPS Two Letter Alphabetic Codes (extensible): Two letter USPS alphabetic codes. Example General: OK | ||||
postalCode | SΣ | 0..1 | string | US Zip Codes Example General: 9132 Example General: 74047 | ||||
country | SΣ | 0..1 | string | Country (e.g. can be ISO 3166 2 or 3 letter code) | ||||
period | Σ | 0..1 | Period | Time period when address was/is in use Example General: {"start":"2010-03-23","end":"2010-07-01"} | ||||
gender | Σ | 0..1 | code | male | female | other | unknown Binding: AdministrativeGender (required): The gender of a person used for administrative purposes. | ||||
birthDate | Σ | 0..1 | date | The date on which the practitioner was born | ||||
photo | 0..* | Attachment | Image of the person | |||||
qualification | 0..* | BackboneElement | Certification, licenses, or training pertaining to the provision of care | |||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations | |||||
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
identifier | 0..* | Identifier | An identifier for this qualification for the practitioner | |||||
code | 1..1 | CodeableConcept | Coded representation of the qualification Binding: v2 table 0360, Version 2.7 (example): Specific qualification the practitioner has to provide a service. | |||||
period | 0..1 | Period | Period during which the qualification is valid | |||||
issuer | 0..1 | Reference(Organization) | Organization that regulates and issues the qualification | |||||
communication | 0..* | CodeableConcept | A language the practitioner can use in patient communication Binding: CommonLanguages (preferred): A human language.
| |||||
Documentation for this format |
Path | Conformance | ValueSet | ||||
Practitioner.language | preferred | CommonLanguages
| ||||
Practitioner.identifier.use | required | IdentifierUse | ||||
Practitioner.identifier.type | extensible | Identifier Type Codes | ||||
Practitioner.name.use | required | NameUse | ||||
Practitioner.telecom.system | required | ContactPointSystem | ||||
Practitioner.telecom.use | required | ContactPointUse | ||||
Practitioner.address.use | required | AddressUse | ||||
Practitioner.address.type | required | AddressType | ||||
Practitioner.address.state | extensible | UspsTwoLetterAlphabeticCodes (a valid code from https://www.usps.com/ ) | ||||
Practitioner.gender | required | AdministrativeGender | ||||
Practitioner.qualification.code | example | v2.0360.2.7 (a valid code from http://terminology.hl7.org/CodeSystem/v2-0360|2.7 ) | ||||
Practitioner.communication | preferred | CommonLanguages
|
Id | Grade | Path(s) | Details | Requirements |
dom-2 | error | Practitioner | If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty() | |
dom-3 | error | Practitioner | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource : contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty() | |
dom-4 | error | Practitioner | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated : contained.meta.versionId.empty() and contained.meta.lastUpdated.empty() | |
dom-5 | error | Practitioner | If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty() | |
dom-6 | best practice | Practitioner | A resource should have narrative for robust management : text.`div`.exists() | |
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
us-core-16 | error | Practitioner.identifier:NPI | NPI must be 10 digits : value.matches('^[0-9]{10}$') | |
us-core-17 | error | Practitioner.identifier:NPI | NPI check digit must be valid (Luhn algorithm check) : (((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) |
This structure is derived from Practitioner
Other representations of profile: CSV, Excel, Schematron
Below is an overview of the required Server RESTful FHIR interactions for this profile - for example, search and read operations - when supporting the US Core interactions to access this profile’s information (Profile Support + Interaction Support). Note that systems that support only US Core Profiles (Profile Only Support) are not required to support these interactions. See the US Core Server CapabilityStatement for a complete list of supported RESTful interactions for this IG.
Servers providing access to practitioner data SHALL support these US Core SMART Scopes:
patient/Practitioner.rs
.The following search parameters and search parameter combinations SHALL be supported:
SHALL support searching for a practitioner by a string match of any part of name using the name
search parameter:
GET [base]/Practitioner?name=[string]
Example:
Implementation Notes: Fetches a bundle of all Practitioner resources matching the name (how to search by string)
SHALL support searching a practitioner by an identifier such as an NPI using the identifier
search parameter:
GET [base]/Practitioner?identifier={system|}[code]
Example:
Implementation Notes: Fetches a bundle containing any Practitioner resources matching the identifier (how to search by token)
The following search parameter combinations SHOULD be supported:
SHOULD support both read Practitioner by id
AND Practitioner search using the _id
search parameter:
GET [base]/Practitioner/[id]
or GET [base]/Practitioner?_id=[id]
Example:
Implementation Notes: (how to search by the logical id of the resource)