Patient Cost Transparency Implementation Guide
2.0.0 - STU 2 - Draft United States of America flag

Patient Cost Transparency Implementation Guide, published by HL7 International / Financial Management. This guide is not an authorized publication; it is the continuous build for version 2.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/davinci-pct/ and changes regularly. See the Directory of published versions

Resource Profile: PCT Practitioner

Official URL: http://hl7.org/fhir/us/davinci-pct/StructureDefinition/davinci-pct-practitioner Version: 2.0.0
Standards status: Trial-use Maturity Level: 2 Computable Name: PCTPractitioner
Other Identifiers: OID:2.16.840.1.113883.4.642.40.4.42.20

The PCT Practitioner profile builds upon the US Core Practitioner profile. It is used to convey information about the practitioner who will be providing services to the patient as described on the GFE.

Usages:

You can also check for usages in the FHIR IG Statistics

Changes since version 1.1.0:

  • New Content
  • Formal Views of Profile Content

    Description of Profiles, Differentials, Snapshots and how the different presentations work.

    NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
    .. Practitioner 0..* USCorePractitionerProfile(7.0.0) 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:NPI SΣC 0..1 Identifier The National Provider Identifier assigned to the provider.
    Constraints: us-core-16, us-core-17

    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)
    .... identifier:ETIN SΣ 0..1 Identifier The submitter's Electronic Transmitter Identification Number.

    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 1..1 CodeableConcept Description of identifier
    Fixed Value: (Complex)
    ...... id 0..1 string Unique id for inter-element referencing
    ...... extension 0..* Extension Additional content defined by implementations
    ...... coding 1..* Coding Code defined by a terminology system
    Fixed Value: (Complex)
    ....... id 0..1 string Unique id for inter-element referencing
    ....... extension 0..* Extension Additional content defined by implementations
    ....... system 1..1 uri Identity of the terminology system
    Fixed Value: http://terminology.hl7.org/CodeSystem/v2-0203
    ....... version 0..1 string Version of the system - if relevant
    ....... code 1..1 code Symbol in syntax defined by the system
    Fixed Value: ETIN
    ....... display 0..1 string Representation defined by the system
    ....... userSelected 0..1 boolean If this coding was chosen directly by the user
    ...... text 0..1 string Plain text representation of the concept
    ..... system 0..1 uri The namespace for the identifier value
    ..... 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)
    .... identifier:tin SΣ 0..1 Identifier Tax ID Number

    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 1..1 CodeableConcept Description of identifier
    Fixed Value: (Complex)
    ...... id 0..1 string Unique id for inter-element referencing
    ...... extension 0..* Extension Additional content defined by implementations
    ...... coding 1..* Coding Code defined by a terminology system
    Fixed Value: (Complex)
    ....... id 0..1 string Unique id for inter-element referencing
    ....... extension 0..* Extension Additional content defined by implementations
    ....... system 1..1 uri Identity of the terminology system
    Fixed Value: http://terminology.hl7.org/CodeSystem/v2-0203
    ....... version 0..1 string Version of the system - if relevant
    ....... code 1..1 code Symbol in syntax defined by the system
    Fixed Value: TAX
    ....... display 0..1 string Representation defined by the system
    ....... userSelected 0..1 boolean If this coding was chosen directly by the user
    ...... text 0..1 string Plain text representation of the concept
    ..... system 0..1 uri The namespace for the identifier value
    ..... 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)
    ... 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')
    .... given Σ 1..1 string Given names (not always 'first'). Includes middle names
    This repeating element order: Given Names appear in the correct order for presenting the name
    ... 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: UspsTwoLetterAlphabeticCodes (7.0.0) (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)

    doco Documentation for this format

    Terminology Bindings

    PathConformanceValueSetURI
    Practitioner.name.userequiredNameUse
    http://hl7.org/fhir/ValueSet/name-use|4.0.1
    From the FHIR Standard
    Practitioner.telecom.systemrequiredContactPointSystem
    http://hl7.org/fhir/ValueSet/contact-point-system|4.0.1
    From the FHIR Standard
    Practitioner.telecom.userequiredContactPointUse
    http://hl7.org/fhir/ValueSet/contact-point-use|4.0.1
    From the FHIR Standard
    Practitioner.address.userequiredAddressUse
    http://hl7.org/fhir/ValueSet/address-use|4.0.1
    From the FHIR Standard
    Practitioner.address.stateextensibleUspsTwoLetterAlphabeticCodes
    http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|7.0.0

    Constraints

    IdGradePath(s)DetailsRequirements
    dom-2errorPractitionerIf the resource is contained in another resource, it SHALL NOT contain nested Resources
    : contained.contained.empty()
    dom-3errorPractitionerIf 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-4errorPractitionerIf 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-5errorPractitionerIf a resource is contained in another resource, it SHALL NOT have a security label
    : contained.meta.security.empty()
    dom-6best practicePractitionerA resource should have narrative for robust management
    : text.`div`.exists()
    ele-1error**ALL** elementsAll FHIR elements must have a @value or children
    : hasValue() or (children().count() > id.count())
    ext-1error**ALL** extensionsMust have either extensions or value[x], not both
    : extension.exists() != value.exists()
    us-core-16errorPractitioner.identifier:NPINPI must be 10 digits
    : value.matches('^[0-9]{10}$')
    us-core-17errorPractitioner.identifier:NPINPI 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 USCorePractitionerProfile

    NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
    .. Practitioner USCorePractitionerProfile(7.0.0)
    ... Slices for identifier Content/Rules for all slices
    .... identifier:NPI 0..1 Identifier The National Provider Identifier assigned to the provider.
    .... identifier:ETIN S 0..1 Identifier The submitter's Electronic Transmitter Identification Number.
    Required Pattern: At least the following
    ..... type 1..1 CodeableConcept Description of identifier
    Fixed Value: (Complex)
    ...... coding 1..* Coding Code defined by a terminology system
    Fixed Value: (Complex)
    ....... system 1..1 uri Identity of the terminology system
    Fixed Value: http://terminology.hl7.org/CodeSystem/v2-0203
    ....... code 1..1 code Symbol in syntax defined by the system
    Fixed Value: ETIN
    .... identifier:tin S 0..1 Identifier Tax ID Number
    Required Pattern: At least the following
    ..... type 1..1 CodeableConcept Description of identifier
    Fixed Value: (Complex)
    ...... coding 1..* Coding Code defined by a terminology system
    Fixed Value: (Complex)
    ....... system 1..1 uri Identity of the terminology system
    Fixed Value: http://terminology.hl7.org/CodeSystem/v2-0203
    ....... code 1..1 code Symbol in syntax defined by the system
    Fixed Value: TAX
    ... name
    .... given 1..1 string Given names (not always 'first'). Includes middle names
    ... qualification
    .... code 1..1 CodeableConcept Coded representation of the qualification
    Binding: NUCCProviderCodes (3.0.0) (required)

    doco Documentation for this format

    Terminology Bindings (Differential)

    PathConformanceValueSetURI
    Practitioner.qualification.coderequiredNUCCProviderCodes(a valid code from http://nucc.org/provider-taxonomy)
    http://terminology.hl7.org/ValueSet/v3-NUCCProviderCodes|3.0.0
    NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
    .. Practitioner 0..* USCorePractitionerProfile(7.0.0) 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.
    Additional BindingsPurpose
    AllLanguages Max Binding
    ... text 0..1 Narrative Text summary of the resource, for human interpretation
    This profile does not constrain the narrative in regard to content, language, or traceability to data elements
    ... 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:NPI SΣC 0..1 Identifier The National Provider Identifier assigned to the provider.
    Constraints: us-core-16, us-core-17

    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)
    .... identifier:ETIN SΣ 0..1 Identifier The submitter's Electronic Transmitter Identification Number.

    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 1..1 CodeableConcept Description of identifier
    Fixed Value: (Complex)
    ...... id 0..1 string Unique id for inter-element referencing
    ...... extension 0..* Extension Additional content defined by implementations
    ...... coding 1..* Coding Code defined by a terminology system
    Fixed Value: (Complex)
    ....... id 0..1 string Unique id for inter-element referencing
    ....... extension 0..* Extension Additional content defined by implementations
    ....... system 1..1 uri Identity of the terminology system
    Fixed Value: http://terminology.hl7.org/CodeSystem/v2-0203
    ....... version 0..1 string Version of the system - if relevant
    ....... code 1..1 code Symbol in syntax defined by the system
    Fixed Value: ETIN
    ....... display 0..1 string Representation defined by the system
    ....... userSelected 0..1 boolean If this coding was chosen directly by the user
    ...... text 0..1 string Plain text representation of the concept
    ..... system 0..1 uri The namespace for the identifier value
    ..... 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)
    .... identifier:tin SΣ 0..1 Identifier Tax ID Number

    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 1..1 CodeableConcept Description of identifier
    Fixed Value: (Complex)
    ...... id 0..1 string Unique id for inter-element referencing
    ...... extension 0..* Extension Additional content defined by implementations
    ...... coding 1..* Coding Code defined by a terminology system
    Fixed Value: (Complex)
    ....... id 0..1 string Unique id for inter-element referencing
    ....... extension 0..* Extension Additional content defined by implementations
    ....... system 1..1 uri Identity of the terminology system
    Fixed Value: http://terminology.hl7.org/CodeSystem/v2-0203
    ....... version 0..1 string Version of the system - if relevant
    ....... code 1..1 code Symbol in syntax defined by the system
    Fixed Value: TAX
    ....... display 0..1 string Representation defined by the system
    ....... userSelected 0..1 boolean If this coding was chosen directly by the user
    ...... text 0..1 string Plain text representation of the concept
    ..... system 0..1 uri The namespace for the identifier value
    ..... 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 Σ 1..1 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: UspsTwoLetterAlphabeticCodes (7.0.0) (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: NUCCProviderCodes (3.0.0) (required)
    .... 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.
    Additional BindingsPurpose
    AllLanguages Max Binding


    doco Documentation for this format

    Terminology Bindings

    PathConformanceValueSetURI
    Practitioner.languagepreferredCommonLanguages
    http://hl7.org/fhir/ValueSet/languages
    From the FHIR Standard
    Additional Bindings Purpose
    AllLanguages Max Binding
    Practitioner.name.userequiredNameUse
    http://hl7.org/fhir/ValueSet/name-use|4.0.1
    From the FHIR Standard
    Practitioner.telecom.systemrequiredContactPointSystem
    http://hl7.org/fhir/ValueSet/contact-point-system|4.0.1
    From the FHIR Standard
    Practitioner.telecom.userequiredContactPointUse
    http://hl7.org/fhir/ValueSet/contact-point-use|4.0.1
    From the FHIR Standard
    Practitioner.address.userequiredAddressUse
    http://hl7.org/fhir/ValueSet/address-use|4.0.1
    From the FHIR Standard
    Practitioner.address.typerequiredAddressType
    http://hl7.org/fhir/ValueSet/address-type|4.0.1
    From the FHIR Standard
    Practitioner.address.stateextensibleUspsTwoLetterAlphabeticCodes
    http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|7.0.0
    Practitioner.genderrequiredAdministrativeGender
    http://hl7.org/fhir/ValueSet/administrative-gender|4.0.1
    From the FHIR Standard
    Practitioner.qualification.coderequiredNUCCProviderCodes(a valid code from http://nucc.org/provider-taxonomy)
    http://terminology.hl7.org/ValueSet/v3-NUCCProviderCodes|3.0.0
    Practitioner.communicationpreferredCommonLanguages
    http://hl7.org/fhir/ValueSet/languages
    From the FHIR Standard
    Additional Bindings Purpose
    AllLanguages Max Binding

    Constraints

    IdGradePath(s)DetailsRequirements
    dom-2errorPractitionerIf the resource is contained in another resource, it SHALL NOT contain nested Resources
    : contained.contained.empty()
    dom-3errorPractitionerIf 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-4errorPractitionerIf 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-5errorPractitionerIf a resource is contained in another resource, it SHALL NOT have a security label
    : contained.meta.security.empty()
    dom-6best practicePractitionerA resource should have narrative for robust management
    : text.`div`.exists()
    ele-1error**ALL** elementsAll FHIR elements must have a @value or children
    : hasValue() or (children().count() > id.count())
    ext-1error**ALL** extensionsMust have either extensions or value[x], not both
    : extension.exists() != value.exists()
    us-core-16errorPractitioner.identifier:NPINPI must be 10 digits
    : value.matches('^[0-9]{10}$')
    us-core-17errorPractitioner.identifier:NPINPI 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 USCorePractitionerProfile

    Summary

    Mandatory: 1 element
    Must-Support: 2 elements

    Maturity: 2

    Key Elements View

    NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
    .. Practitioner 0..* USCorePractitionerProfile(7.0.0) 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:NPI SΣC 0..1 Identifier The National Provider Identifier assigned to the provider.
    Constraints: us-core-16, us-core-17

    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)
    .... identifier:ETIN SΣ 0..1 Identifier The submitter's Electronic Transmitter Identification Number.

    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 1..1 CodeableConcept Description of identifier
    Fixed Value: (Complex)
    ...... id 0..1 string Unique id for inter-element referencing
    ...... extension 0..* Extension Additional content defined by implementations
    ...... coding 1..* Coding Code defined by a terminology system
    Fixed Value: (Complex)
    ....... id 0..1 string Unique id for inter-element referencing
    ....... extension 0..* Extension Additional content defined by implementations
    ....... system 1..1 uri Identity of the terminology system
    Fixed Value: http://terminology.hl7.org/CodeSystem/v2-0203
    ....... version 0..1 string Version of the system - if relevant
    ....... code 1..1 code Symbol in syntax defined by the system
    Fixed Value: ETIN
    ....... display 0..1 string Representation defined by the system
    ....... userSelected 0..1 boolean If this coding was chosen directly by the user
    ...... text 0..1 string Plain text representation of the concept
    ..... system 0..1 uri The namespace for the identifier value
    ..... 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)
    .... identifier:tin SΣ 0..1 Identifier Tax ID Number

    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 1..1 CodeableConcept Description of identifier
    Fixed Value: (Complex)
    ...... id 0..1 string Unique id for inter-element referencing
    ...... extension 0..* Extension Additional content defined by implementations
    ...... coding 1..* Coding Code defined by a terminology system
    Fixed Value: (Complex)
    ....... id 0..1 string Unique id for inter-element referencing
    ....... extension 0..* Extension Additional content defined by implementations
    ....... system 1..1 uri Identity of the terminology system
    Fixed Value: http://terminology.hl7.org/CodeSystem/v2-0203
    ....... version 0..1 string Version of the system - if relevant
    ....... code 1..1 code Symbol in syntax defined by the system
    Fixed Value: TAX
    ....... display 0..1 string Representation defined by the system
    ....... userSelected 0..1 boolean If this coding was chosen directly by the user
    ...... text 0..1 string Plain text representation of the concept
    ..... system 0..1 uri The namespace for the identifier value
    ..... 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)
    ... 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')
    .... given Σ 1..1 string Given names (not always 'first'). Includes middle names
    This repeating element order: Given Names appear in the correct order for presenting the name
    ... 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: UspsTwoLetterAlphabeticCodes (7.0.0) (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)

    doco Documentation for this format

    Terminology Bindings

    PathConformanceValueSetURI
    Practitioner.name.userequiredNameUse
    http://hl7.org/fhir/ValueSet/name-use|4.0.1
    From the FHIR Standard
    Practitioner.telecom.systemrequiredContactPointSystem
    http://hl7.org/fhir/ValueSet/contact-point-system|4.0.1
    From the FHIR Standard
    Practitioner.telecom.userequiredContactPointUse
    http://hl7.org/fhir/ValueSet/contact-point-use|4.0.1
    From the FHIR Standard
    Practitioner.address.userequiredAddressUse
    http://hl7.org/fhir/ValueSet/address-use|4.0.1
    From the FHIR Standard
    Practitioner.address.stateextensibleUspsTwoLetterAlphabeticCodes
    http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|7.0.0

    Constraints

    IdGradePath(s)DetailsRequirements
    dom-2errorPractitionerIf the resource is contained in another resource, it SHALL NOT contain nested Resources
    : contained.contained.empty()
    dom-3errorPractitionerIf 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-4errorPractitionerIf 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-5errorPractitionerIf a resource is contained in another resource, it SHALL NOT have a security label
    : contained.meta.security.empty()
    dom-6best practicePractitionerA resource should have narrative for robust management
    : text.`div`.exists()
    ele-1error**ALL** elementsAll FHIR elements must have a @value or children
    : hasValue() or (children().count() > id.count())
    ext-1error**ALL** extensionsMust have either extensions or value[x], not both
    : extension.exists() != value.exists()
    us-core-16errorPractitioner.identifier:NPINPI must be 10 digits
    : value.matches('^[0-9]{10}$')
    us-core-17errorPractitioner.identifier:NPINPI 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)

    Differential View

    This structure is derived from USCorePractitionerProfile

    NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
    .. Practitioner USCorePractitionerProfile(7.0.0)
    ... Slices for identifier Content/Rules for all slices
    .... identifier:NPI 0..1 Identifier The National Provider Identifier assigned to the provider.
    .... identifier:ETIN S 0..1 Identifier The submitter's Electronic Transmitter Identification Number.
    Required Pattern: At least the following
    ..... type 1..1 CodeableConcept Description of identifier
    Fixed Value: (Complex)
    ...... coding 1..* Coding Code defined by a terminology system
    Fixed Value: (Complex)
    ....... system 1..1 uri Identity of the terminology system
    Fixed Value: http://terminology.hl7.org/CodeSystem/v2-0203
    ....... code 1..1 code Symbol in syntax defined by the system
    Fixed Value: ETIN
    .... identifier:tin S 0..1 Identifier Tax ID Number
    Required Pattern: At least the following
    ..... type 1..1 CodeableConcept Description of identifier
    Fixed Value: (Complex)
    ...... coding 1..* Coding Code defined by a terminology system
    Fixed Value: (Complex)
    ....... system 1..1 uri Identity of the terminology system
    Fixed Value: http://terminology.hl7.org/CodeSystem/v2-0203
    ....... code 1..1 code Symbol in syntax defined by the system
    Fixed Value: TAX
    ... name
    .... given 1..1 string Given names (not always 'first'). Includes middle names
    ... qualification
    .... code 1..1 CodeableConcept Coded representation of the qualification
    Binding: NUCCProviderCodes (3.0.0) (required)

    doco Documentation for this format

    Terminology Bindings (Differential)

    PathConformanceValueSetURI
    Practitioner.qualification.coderequiredNUCCProviderCodes(a valid code from http://nucc.org/provider-taxonomy)
    http://terminology.hl7.org/ValueSet/v3-NUCCProviderCodes|3.0.0

    Snapshot View

    NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
    .. Practitioner 0..* USCorePractitionerProfile(7.0.0) 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.
    Additional BindingsPurpose
    AllLanguages Max Binding
    ... text 0..1 Narrative Text summary of the resource, for human interpretation
    This profile does not constrain the narrative in regard to content, language, or traceability to data elements
    ... 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:NPI SΣC 0..1 Identifier The National Provider Identifier assigned to the provider.
    Constraints: us-core-16, us-core-17

    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)
    .... identifier:ETIN SΣ 0..1 Identifier The submitter's Electronic Transmitter Identification Number.

    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 1..1 CodeableConcept Description of identifier
    Fixed Value: (Complex)
    ...... id 0..1 string Unique id for inter-element referencing
    ...... extension 0..* Extension Additional content defined by implementations
    ...... coding 1..* Coding Code defined by a terminology system
    Fixed Value: (Complex)
    ....... id 0..1 string Unique id for inter-element referencing
    ....... extension 0..* Extension Additional content defined by implementations
    ....... system 1..1 uri Identity of the terminology system
    Fixed Value: http://terminology.hl7.org/CodeSystem/v2-0203
    ....... version 0..1 string Version of the system - if relevant
    ....... code 1..1 code Symbol in syntax defined by the system
    Fixed Value: ETIN
    ....... display 0..1 string Representation defined by the system
    ....... userSelected 0..1 boolean If this coding was chosen directly by the user
    ...... text 0..1 string Plain text representation of the concept
    ..... system 0..1 uri The namespace for the identifier value
    ..... 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)
    .... identifier:tin SΣ 0..1 Identifier Tax ID Number

    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 1..1 CodeableConcept Description of identifier
    Fixed Value: (Complex)
    ...... id 0..1 string Unique id for inter-element referencing
    ...... extension 0..* Extension Additional content defined by implementations
    ...... coding 1..* Coding Code defined by a terminology system
    Fixed Value: (Complex)
    ....... id 0..1 string Unique id for inter-element referencing
    ....... extension 0..* Extension Additional content defined by implementations
    ....... system 1..1 uri Identity of the terminology system
    Fixed Value: http://terminology.hl7.org/CodeSystem/v2-0203
    ....... version 0..1 string Version of the system - if relevant
    ....... code 1..1 code Symbol in syntax defined by the system
    Fixed Value: TAX
    ....... display 0..1 string Representation defined by the system
    ....... userSelected 0..1 boolean If this coding was chosen directly by the user
    ...... text 0..1 string Plain text representation of the concept
    ..... system 0..1 uri The namespace for the identifier value
    ..... 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 Σ 1..1 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: UspsTwoLetterAlphabeticCodes (7.0.0) (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: NUCCProviderCodes (3.0.0) (required)
    .... 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.
    Additional BindingsPurpose
    AllLanguages Max Binding


    doco Documentation for this format

    Terminology Bindings

    PathConformanceValueSetURI
    Practitioner.languagepreferredCommonLanguages
    http://hl7.org/fhir/ValueSet/languages
    From the FHIR Standard
    Additional Bindings Purpose
    AllLanguages Max Binding
    Practitioner.name.userequiredNameUse
    http://hl7.org/fhir/ValueSet/name-use|4.0.1
    From the FHIR Standard
    Practitioner.telecom.systemrequiredContactPointSystem
    http://hl7.org/fhir/ValueSet/contact-point-system|4.0.1
    From the FHIR Standard
    Practitioner.telecom.userequiredContactPointUse
    http://hl7.org/fhir/ValueSet/contact-point-use|4.0.1
    From the FHIR Standard
    Practitioner.address.userequiredAddressUse
    http://hl7.org/fhir/ValueSet/address-use|4.0.1
    From the FHIR Standard
    Practitioner.address.typerequiredAddressType
    http://hl7.org/fhir/ValueSet/address-type|4.0.1
    From the FHIR Standard
    Practitioner.address.stateextensibleUspsTwoLetterAlphabeticCodes
    http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|7.0.0
    Practitioner.genderrequiredAdministrativeGender
    http://hl7.org/fhir/ValueSet/administrative-gender|4.0.1
    From the FHIR Standard
    Practitioner.qualification.coderequiredNUCCProviderCodes(a valid code from http://nucc.org/provider-taxonomy)
    http://terminology.hl7.org/ValueSet/v3-NUCCProviderCodes|3.0.0
    Practitioner.communicationpreferredCommonLanguages
    http://hl7.org/fhir/ValueSet/languages
    From the FHIR Standard
    Additional Bindings Purpose
    AllLanguages Max Binding

    Constraints

    IdGradePath(s)DetailsRequirements
    dom-2errorPractitionerIf the resource is contained in another resource, it SHALL NOT contain nested Resources
    : contained.contained.empty()
    dom-3errorPractitionerIf 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-4errorPractitionerIf 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-5errorPractitionerIf a resource is contained in another resource, it SHALL NOT have a security label
    : contained.meta.security.empty()
    dom-6best practicePractitionerA resource should have narrative for robust management
    : text.`div`.exists()
    ele-1error**ALL** elementsAll FHIR elements must have a @value or children
    : hasValue() or (children().count() > id.count())
    ext-1error**ALL** extensionsMust have either extensions or value[x], not both
    : extension.exists() != value.exists()
    us-core-16errorPractitioner.identifier:NPINPI must be 10 digits
    : value.matches('^[0-9]{10}$')
    us-core-17errorPractitioner.identifier:NPINPI 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 USCorePractitionerProfile

    Summary

    Mandatory: 1 element
    Must-Support: 2 elements

    Maturity: 2

     

    Other representations of profile: CSV, Excel, Schematron