openIMIS FHIR R4 Implementation Guide
1.0.0 - ci-build

openIMIS FHIR R4 Implementation Guide - Local Development build (v1.0.0). See the Directory of published versions

Resource Profile: openIMIS Enrolment Officer Practitioner

Official URL: https://openimis.github.io/openimis_fhir_r4_ig/StructureDefinition/openimis-enrolment-officer-practitioner Version: 1.0.0
Active as of 2022-05-31 Responsible: openIMIS Initiative Computable Name: OpenIMISEnrolmentOfficerPractitioner

Defines a Practitioner for openIMIS which maps to an Enrolment Officer.

Usage:

Formal Views of Profile Content

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

This structure is derived from Practitioner

Summary

Mandatory: 9 elements (9 nested mandatory elements)
Must-Support: 9 elements
Prohibited: 7 elements

Extensions

This structure refers to these extensions:

Slices

This structure defines the following Slices:

  • The element Practitioner.identifier is sliced based on the value of value:type.coding.code (Closed)
  • The element Practitioner.telecom is sliced based on the value of value:system (Closed)

This structure is derived from Practitioner

NameFlagsCard.TypeDescription & Constraintsdoco
.. Practitioner 0..*PractitionerA person with a formal responsibility in the provisioning of healthcare or related services
... id 0..1stringPractitioner UUID
... Slices for identifier S1..*IdentifierAn identifier for the person as this agent
Slice: Unordered, Closed by value:type.coding.code
.... identifier:All Slices Content/Rules for all slices
..... type 1..1CodeableConceptDescription of identifier
...... coding
....... code 0..1codeSymbol in syntax defined by the system
Binding: openIMIS Identifiers Value Set (required)
..... value 1..1stringThe value that is unique
.... identifier:Code S1..1IdentifierAn identifier for the person as this agent
..... type
...... coding
....... code 1..1codeopenIMIS Code
Required Pattern: Code
.... identifier:UUID 0..1IdentifierAn identifier for the person as this agent
..... type
...... coding
....... code 1..1codeopenIMIS UUID
Required Pattern: UUID
... active 0..0
.... use 0..1codeusual | official | temp | nickname | anonymous | old | maiden
Required Pattern: official
.... family S1..1stringFamily name (often called 'Surname')
.... given S1..1stringGiven names (not always 'first'). Includes middle names
... Slices for telecom 0..2ContactPointA contact detail for the practitioner (that apply to all roles)
Slice: Unordered, Closed by value:system
.... telecom:All Slices Content/Rules for all slices
..... value 1..1stringThe actual contact point details
.... telecom:email 0..1ContactPointEnrolment Officer email
..... system 1..1codephone | fax | email | pager | url | sms | other
Required Pattern: email
.... telecom:phone 0..1ContactPointEnrolment Officer phone
..... system 1..1codephone | fax | email | pager | url | sms | other
Required Pattern: phone
... address S0..1AddressAddress(es) of the practitioner that are not role specific (typically home address)
.... extension 1..*ExtensionExtension
.... address-location-reference S1..1Reference(openIMIS Location)Location Reference (Address)
URL: https://openimis.github.io/openimis_fhir_r4_ig/StructureDefinition/address-location-reference
.... type 0..1codepostal | physical | both
Required Pattern: physical
.... line 0..1stringPermanent Address
.... city 0..0
.... district S1..1stringDistrict
.... state S1..1stringState/Region
.... postalCode 0..0
.... country 0..0
... gender 0..0
... birthDate S1..1dateThe date on which the practitioner was born
... photo 0..0
... qualification 1..1BackboneElementCertification, licenses, or training pertaining to the provision of care
.... code 1..1CodeableConceptCoded representation of the qualification
Required Pattern: At least the following
..... coding1..*CodingCode defined by a terminology system
Fixed Value: (complex)
...... system1..1uriIdentity of the terminology system
Fixed Value: https://openimis.github.io/openimis_fhir_r4_ig/CodeSystem/practitioner-qualification-type
...... code1..1codeSymbol in syntax defined by the system
Fixed Value: EO
...... display1..1stringRepresentation defined by the system
Fixed Value: Enrolment Officer
... communication 0..0

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. Practitioner 0..*PractitionerA person with a formal responsibility in the provisioning of healthcare or related services
... id Σ0..1stringPractitioner UUID
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionAdditional content defined by implementations
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... Slices for identifier SΣ1..*IdentifierAn identifier for the person as this agent
Slice: Unordered, Closed by value:type.coding.code
.... identifier:All Slices Content/Rules for all slices
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... use ?!Σ0..1codeusual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known .

..... type Σ1..1CodeableConceptDescription 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.

...... id 0..1stringUnique id for inter-element referencing
...... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
...... coding Σ0..*CodingCode defined by a terminology system
....... id 0..1stringUnique id for inter-element referencing
....... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
....... system Σ0..1uriIdentity of the terminology system
....... version Σ0..1stringVersion of the system - if relevant
....... code Σ0..1codeSymbol in syntax defined by the system
Binding: openIMIS Identifiers Value Set (required)
....... display Σ0..1stringRepresentation defined by the system
....... userSelected Σ0..1booleanIf this coding was chosen directly by the user
...... text Σ0..1stringPlain text representation of the concept
..... system Σ0..1uriThe namespace for the identifier value
Example General: http://www.acme.com/identifiers/patient
..... value Σ1..1stringThe value that is unique
Example General: 123456
..... period Σ0..1PeriodTime period when id is/was valid for use
..... assigner Σ0..1Reference(Organization)Organization that issued id (may be just text)
.... identifier:Code SΣ1..1IdentifierAn identifier for the person as this agent
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... use ?!Σ0..1codeusual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known .

..... type Σ0..1CodeableConceptDescription 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.

...... id 0..1stringUnique id for inter-element referencing
...... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
...... coding Σ0..*CodingCode defined by a terminology system
....... id 0..1stringUnique id for inter-element referencing
....... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
....... system Σ0..1uriIdentity of the terminology system
....... version Σ0..1stringVersion of the system - if relevant
....... code Σ1..1codeopenIMIS Code
Required Pattern: Code
....... display Σ0..1stringRepresentation defined by the system
....... userSelected Σ0..1booleanIf this coding was chosen directly by the user
...... text Σ0..1stringPlain text representation of the concept
..... system Σ0..1uriThe namespace for the identifier value
Example General: http://www.acme.com/identifiers/patient
..... value Σ0..1stringThe value that is unique
Example General: 123456
..... period Σ0..1PeriodTime period when id is/was valid for use
..... assigner Σ0..1Reference(Organization)Organization that issued id (may be just text)
.... identifier:UUID Σ0..1IdentifierAn identifier for the person as this agent
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... use ?!Σ0..1codeusual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known .

..... type Σ0..1CodeableConceptDescription 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.

...... id 0..1stringUnique id for inter-element referencing
...... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
...... coding Σ0..*CodingCode defined by a terminology system
....... id 0..1stringUnique id for inter-element referencing
....... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
....... system Σ0..1uriIdentity of the terminology system
....... version Σ0..1stringVersion of the system - if relevant
....... code Σ1..1codeopenIMIS UUID
Required Pattern: UUID
....... display Σ0..1stringRepresentation defined by the system
....... userSelected Σ0..1booleanIf this coding was chosen directly by the user
...... text Σ0..1stringPlain text representation of the concept
..... system Σ0..1uriThe namespace for the identifier value
Example General: http://www.acme.com/identifiers/patient
..... value Σ0..1stringThe value that is unique
Example General: 123456
..... period Σ0..1PeriodTime period when id is/was valid for use
..... assigner Σ0..1Reference(Organization)Organization that issued id (may be just text)
... name Σ1..1HumanNameEnrolment Officer official name
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... use ?!Σ0..1codeusual | official | temp | nickname | anonymous | old | maiden
Binding: NameUse (required): The use of a human name.


Required Pattern: official
.... text Σ0..1stringText representation of the full name
.... family SΣ1..1stringFamily name (often called 'Surname')
.... given SΣ1..1stringGiven names (not always 'first'). Includes middle names
This repeating element order: Given Names appear in the correct order for presenting the name
.... prefix Σ0..*stringParts that come before the name
This repeating element order: Prefixes appear in the correct order for presenting the name
.... suffix Σ0..*stringParts that come after the name
This repeating element order: Suffixes appear in the correct order for presenting the name
.... period Σ0..1PeriodTime period when name was/is in use
... Slices for telecom Σ0..2ContactPointA contact detail for the practitioner (that apply to all roles)
Slice: Unordered, Closed by value:system
.... telecom:All Slices Content/Rules for all slices
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... system ΣI0..1codephone | fax | email | pager | url | sms | other
Binding: ContactPointSystem (required): Telecommunications form for contact point.

..... value Σ1..1stringThe actual contact point details
..... use ?!Σ0..1codehome | work | temp | old | mobile - purpose of this contact point
Binding: ContactPointUse (required): Use of contact point.

..... rank Σ0..1positiveIntSpecify preferred order of use (1 = highest)
..... period Σ0..1PeriodTime period when the contact point was/is in use
.... telecom:email Σ0..1ContactPointEnrolment Officer email
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... system ΣI1..1codephone | fax | email | pager | url | sms | other
Binding: ContactPointSystem (required): Telecommunications form for contact point.


Required Pattern: email
..... value Σ0..1stringThe actual contact point details
..... use ?!Σ0..1codehome | work | temp | old | mobile - purpose of this contact point
Binding: ContactPointUse (required): Use of contact point.

..... rank Σ0..1positiveIntSpecify preferred order of use (1 = highest)
..... period Σ0..1PeriodTime period when the contact point was/is in use
.... telecom:phone Σ0..1ContactPointEnrolment Officer phone
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... system ΣI1..1codephone | fax | email | pager | url | sms | other
Binding: ContactPointSystem (required): Telecommunications form for contact point.


Required Pattern: phone
..... value Σ0..1stringThe actual contact point details
..... use ?!Σ0..1codehome | work | temp | old | mobile - purpose of this contact point
Binding: ContactPointUse (required): Use of contact point.

..... rank Σ0..1positiveIntSpecify preferred order of use (1 = highest)
..... period Σ0..1PeriodTime period when the contact point was/is in use
... address SΣ0..1AddressAddress(es) of the practitioner that are not role specific (typically home address)
.... id 0..1stringUnique id for inter-element referencing
.... Slices for extension 1..*ExtensionExtension
Slice: Unordered, Open by value:url
.... address-location-reference S1..1Reference(openIMIS Location)Location Reference (Address)
URL: https://openimis.github.io/openimis_fhir_r4_ig/StructureDefinition/address-location-reference
.... use ?!Σ0..1codehome | work | temp | old | billing - purpose of this address
Binding: AddressUse (required): The use of an address.


Example General: home
.... type Σ0..1codepostal | physical | both
Binding: AddressType (required): The type of an address (physical / postal).


Required Pattern: physical
.... text Σ0..1stringText representation of the address
Example General: 137 Nowhere Street, Erewhon 9132
.... line Σ0..1stringPermanent Address
This repeating element order: The order in which lines should appear in an address label
Example General: 137 Nowhere Street
.... district SΣ1..1stringDistrict
Example General: Madison
.... state SΣ1..1stringState/Region
.... period Σ0..1PeriodTime period when address was/is in use
Example General: {"start":"2010-03-23","end":"2010-07-01"}
... birthDate SΣ1..1dateThe date on which the practitioner was born
... qualification 1..1BackboneElementCertification, licenses, or training pertaining to the provision of care
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... identifier 0..*IdentifierAn identifier for this qualification for the practitioner
.... code 1..1CodeableConceptCoded representation of the qualification
Binding: v2 table 0360, Version 2.7 (example): Specific qualification the practitioner has to provide a service.


Required Pattern: At least the following
..... id0..1stringUnique id for inter-element referencing
..... extension0..*ExtensionAdditional content defined by implementations
..... coding1..*CodingCode defined by a terminology system
Fixed Value: (complex)
...... id0..1stringUnique id for inter-element referencing
...... extension0..*ExtensionAdditional content defined by implementations
...... system1..1uriIdentity of the terminology system
Fixed Value: https://openimis.github.io/openimis_fhir_r4_ig/CodeSystem/practitioner-qualification-type
...... version0..1stringVersion of the system - if relevant
...... code1..1codeSymbol in syntax defined by the system
Fixed Value: EO
...... display1..1stringRepresentation defined by the system
Fixed Value: Enrolment Officer
...... userSelected0..1booleanIf this coding was chosen directly by the user
..... text0..1stringPlain text representation of the concept
.... period 0..1PeriodPeriod during which the qualification is valid
.... issuer 0..1Reference(Organization)Organization that regulates and issues the qualification

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. Practitioner 0..*PractitionerA person with a formal responsibility in the provisioning of healthcare or related services
... Slices for identifier Σ1..*IdentifierAn identifier for the person as this agent
Slice: Unordered, Closed by value:type.coding.code
.... identifier:Code Σ1..1IdentifierAn identifier for the person as this agent
... name Σ1..1HumanNameEnrolment Officer official name
.... family Σ1..1stringFamily name (often called 'Surname')
.... given Σ1..1stringGiven names (not always 'first'). Includes middle names
This repeating element order: Given Names appear in the correct order for presenting the name
... address Σ0..1AddressAddress(es) of the practitioner that are not role specific (typically home address)
.... address-location-reference 1..1Reference(openIMIS Location)Location Reference (Address)
URL: https://openimis.github.io/openimis_fhir_r4_ig/StructureDefinition/address-location-reference
.... district Σ1..1stringDistrict
.... state Σ1..1stringState/Region

doco Documentation for this format

This structure is derived from Practitioner

Summary

Mandatory: 9 elements (9 nested mandatory elements)
Must-Support: 9 elements
Prohibited: 7 elements

Extensions

This structure refers to these extensions:

Slices

This structure defines the following Slices:

  • The element Practitioner.identifier is sliced based on the value of value:type.coding.code (Closed)
  • The element Practitioner.telecom is sliced based on the value of value:system (Closed)

Differential View

This structure is derived from Practitioner

NameFlagsCard.TypeDescription & Constraintsdoco
.. Practitioner 0..*PractitionerA person with a formal responsibility in the provisioning of healthcare or related services
... id 0..1stringPractitioner UUID
... Slices for identifier S1..*IdentifierAn identifier for the person as this agent
Slice: Unordered, Closed by value:type.coding.code
.... identifier:All Slices Content/Rules for all slices
..... type 1..1CodeableConceptDescription of identifier
...... coding
....... code 0..1codeSymbol in syntax defined by the system
Binding: openIMIS Identifiers Value Set (required)
..... value 1..1stringThe value that is unique
.... identifier:Code S1..1IdentifierAn identifier for the person as this agent
..... type
...... coding
....... code 1..1codeopenIMIS Code
Required Pattern: Code
.... identifier:UUID 0..1IdentifierAn identifier for the person as this agent
..... type
...... coding
....... code 1..1codeopenIMIS UUID
Required Pattern: UUID
... active 0..0
.... use 0..1codeusual | official | temp | nickname | anonymous | old | maiden
Required Pattern: official
.... family S1..1stringFamily name (often called 'Surname')
.... given S1..1stringGiven names (not always 'first'). Includes middle names
... Slices for telecom 0..2ContactPointA contact detail for the practitioner (that apply to all roles)
Slice: Unordered, Closed by value:system
.... telecom:All Slices Content/Rules for all slices
..... value 1..1stringThe actual contact point details
.... telecom:email 0..1ContactPointEnrolment Officer email
..... system 1..1codephone | fax | email | pager | url | sms | other
Required Pattern: email
.... telecom:phone 0..1ContactPointEnrolment Officer phone
..... system 1..1codephone | fax | email | pager | url | sms | other
Required Pattern: phone
... address S0..1AddressAddress(es) of the practitioner that are not role specific (typically home address)
.... extension 1..*ExtensionExtension
.... address-location-reference S1..1Reference(openIMIS Location)Location Reference (Address)
URL: https://openimis.github.io/openimis_fhir_r4_ig/StructureDefinition/address-location-reference
.... type 0..1codepostal | physical | both
Required Pattern: physical
.... line 0..1stringPermanent Address
.... city 0..0
.... district S1..1stringDistrict
.... state S1..1stringState/Region
.... postalCode 0..0
.... country 0..0
... gender 0..0
... birthDate S1..1dateThe date on which the practitioner was born
... photo 0..0
... qualification 1..1BackboneElementCertification, licenses, or training pertaining to the provision of care
.... code 1..1CodeableConceptCoded representation of the qualification
Required Pattern: At least the following
..... coding1..*CodingCode defined by a terminology system
Fixed Value: (complex)
...... system1..1uriIdentity of the terminology system
Fixed Value: https://openimis.github.io/openimis_fhir_r4_ig/CodeSystem/practitioner-qualification-type
...... code1..1codeSymbol in syntax defined by the system
Fixed Value: EO
...... display1..1stringRepresentation defined by the system
Fixed Value: Enrolment Officer
... communication 0..0

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Practitioner 0..*PractitionerA person with a formal responsibility in the provisioning of healthcare or related services
... id Σ0..1stringPractitioner UUID
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionAdditional content defined by implementations
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... Slices for identifier SΣ1..*IdentifierAn identifier for the person as this agent
Slice: Unordered, Closed by value:type.coding.code
.... identifier:All Slices Content/Rules for all slices
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... use ?!Σ0..1codeusual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known .

..... type Σ1..1CodeableConceptDescription 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.

...... id 0..1stringUnique id for inter-element referencing
...... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
...... coding Σ0..*CodingCode defined by a terminology system
....... id 0..1stringUnique id for inter-element referencing
....... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
....... system Σ0..1uriIdentity of the terminology system
....... version Σ0..1stringVersion of the system - if relevant
....... code Σ0..1codeSymbol in syntax defined by the system
Binding: openIMIS Identifiers Value Set (required)
....... display Σ0..1stringRepresentation defined by the system
....... userSelected Σ0..1booleanIf this coding was chosen directly by the user
...... text Σ0..1stringPlain text representation of the concept
..... system Σ0..1uriThe namespace for the identifier value
Example General: http://www.acme.com/identifiers/patient
..... value Σ1..1stringThe value that is unique
Example General: 123456
..... period Σ0..1PeriodTime period when id is/was valid for use
..... assigner Σ0..1Reference(Organization)Organization that issued id (may be just text)
.... identifier:Code SΣ1..1IdentifierAn identifier for the person as this agent
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... use ?!Σ0..1codeusual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known .

..... type Σ0..1CodeableConceptDescription 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.

...... id 0..1stringUnique id for inter-element referencing
...... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
...... coding Σ0..*CodingCode defined by a terminology system
....... id 0..1stringUnique id for inter-element referencing
....... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
....... system Σ0..1uriIdentity of the terminology system
....... version Σ0..1stringVersion of the system - if relevant
....... code Σ1..1codeopenIMIS Code
Required Pattern: Code
....... display Σ0..1stringRepresentation defined by the system
....... userSelected Σ0..1booleanIf this coding was chosen directly by the user
...... text Σ0..1stringPlain text representation of the concept
..... system Σ0..1uriThe namespace for the identifier value
Example General: http://www.acme.com/identifiers/patient
..... value Σ0..1stringThe value that is unique
Example General: 123456
..... period Σ0..1PeriodTime period when id is/was valid for use
..... assigner Σ0..1Reference(Organization)Organization that issued id (may be just text)
.... identifier:UUID Σ0..1IdentifierAn identifier for the person as this agent
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... use ?!Σ0..1codeusual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known .

..... type Σ0..1CodeableConceptDescription 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.

...... id 0..1stringUnique id for inter-element referencing
...... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
...... coding Σ0..*CodingCode defined by a terminology system
....... id 0..1stringUnique id for inter-element referencing
....... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
....... system Σ0..1uriIdentity of the terminology system
....... version Σ0..1stringVersion of the system - if relevant
....... code Σ1..1codeopenIMIS UUID
Required Pattern: UUID
....... display Σ0..1stringRepresentation defined by the system
....... userSelected Σ0..1booleanIf this coding was chosen directly by the user
...... text Σ0..1stringPlain text representation of the concept
..... system Σ0..1uriThe namespace for the identifier value
Example General: http://www.acme.com/identifiers/patient
..... value Σ0..1stringThe value that is unique
Example General: 123456
..... period Σ0..1PeriodTime period when id is/was valid for use
..... assigner Σ0..1Reference(Organization)Organization that issued id (may be just text)
... name Σ1..1HumanNameEnrolment Officer official name
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... use ?!Σ0..1codeusual | official | temp | nickname | anonymous | old | maiden
Binding: NameUse (required): The use of a human name.


Required Pattern: official
.... text Σ0..1stringText representation of the full name
.... family SΣ1..1stringFamily name (often called 'Surname')
.... given SΣ1..1stringGiven names (not always 'first'). Includes middle names
This repeating element order: Given Names appear in the correct order for presenting the name
.... prefix Σ0..*stringParts that come before the name
This repeating element order: Prefixes appear in the correct order for presenting the name
.... suffix Σ0..*stringParts that come after the name
This repeating element order: Suffixes appear in the correct order for presenting the name
.... period Σ0..1PeriodTime period when name was/is in use
... Slices for telecom Σ0..2ContactPointA contact detail for the practitioner (that apply to all roles)
Slice: Unordered, Closed by value:system
.... telecom:All Slices Content/Rules for all slices
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... system ΣI0..1codephone | fax | email | pager | url | sms | other
Binding: ContactPointSystem (required): Telecommunications form for contact point.

..... value Σ1..1stringThe actual contact point details
..... use ?!Σ0..1codehome | work | temp | old | mobile - purpose of this contact point
Binding: ContactPointUse (required): Use of contact point.

..... rank Σ0..1positiveIntSpecify preferred order of use (1 = highest)
..... period Σ0..1PeriodTime period when the contact point was/is in use
.... telecom:email Σ0..1ContactPointEnrolment Officer email
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... system ΣI1..1codephone | fax | email | pager | url | sms | other
Binding: ContactPointSystem (required): Telecommunications form for contact point.


Required Pattern: email
..... value Σ0..1stringThe actual contact point details
..... use ?!Σ0..1codehome | work | temp | old | mobile - purpose of this contact point
Binding: ContactPointUse (required): Use of contact point.

..... rank Σ0..1positiveIntSpecify preferred order of use (1 = highest)
..... period Σ0..1PeriodTime period when the contact point was/is in use
.... telecom:phone Σ0..1ContactPointEnrolment Officer phone
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... system ΣI1..1codephone | fax | email | pager | url | sms | other
Binding: ContactPointSystem (required): Telecommunications form for contact point.


Required Pattern: phone
..... value Σ0..1stringThe actual contact point details
..... use ?!Σ0..1codehome | work | temp | old | mobile - purpose of this contact point
Binding: ContactPointUse (required): Use of contact point.

..... rank Σ0..1positiveIntSpecify preferred order of use (1 = highest)
..... period Σ0..1PeriodTime period when the contact point was/is in use
... address SΣ0..1AddressAddress(es) of the practitioner that are not role specific (typically home address)
.... id 0..1stringUnique id for inter-element referencing
.... Slices for extension 1..*ExtensionExtension
Slice: Unordered, Open by value:url
.... address-location-reference S1..1Reference(openIMIS Location)Location Reference (Address)
URL: https://openimis.github.io/openimis_fhir_r4_ig/StructureDefinition/address-location-reference
.... use ?!Σ0..1codehome | work | temp | old | billing - purpose of this address
Binding: AddressUse (required): The use of an address.


Example General: home
.... type Σ0..1codepostal | physical | both
Binding: AddressType (required): The type of an address (physical / postal).


Required Pattern: physical
.... text Σ0..1stringText representation of the address
Example General: 137 Nowhere Street, Erewhon 9132
.... line Σ0..1stringPermanent Address
This repeating element order: The order in which lines should appear in an address label
Example General: 137 Nowhere Street
.... district SΣ1..1stringDistrict
Example General: Madison
.... state SΣ1..1stringState/Region
.... period Σ0..1PeriodTime period when address was/is in use
Example General: {"start":"2010-03-23","end":"2010-07-01"}
... birthDate SΣ1..1dateThe date on which the practitioner was born
... qualification 1..1BackboneElementCertification, licenses, or training pertaining to the provision of care
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... identifier 0..*IdentifierAn identifier for this qualification for the practitioner
.... code 1..1CodeableConceptCoded representation of the qualification
Binding: v2 table 0360, Version 2.7 (example): Specific qualification the practitioner has to provide a service.


Required Pattern: At least the following
..... id0..1stringUnique id for inter-element referencing
..... extension0..*ExtensionAdditional content defined by implementations
..... coding1..*CodingCode defined by a terminology system
Fixed Value: (complex)
...... id0..1stringUnique id for inter-element referencing
...... extension0..*ExtensionAdditional content defined by implementations
...... system1..1uriIdentity of the terminology system
Fixed Value: https://openimis.github.io/openimis_fhir_r4_ig/CodeSystem/practitioner-qualification-type
...... version0..1stringVersion of the system - if relevant
...... code1..1codeSymbol in syntax defined by the system
Fixed Value: EO
...... display1..1stringRepresentation defined by the system
Fixed Value: Enrolment Officer
...... userSelected0..1booleanIf this coding was chosen directly by the user
..... text0..1stringPlain text representation of the concept
.... period 0..1PeriodPeriod during which the qualification is valid
.... issuer 0..1Reference(Organization)Organization that regulates and issues the qualification

doco Documentation for this format

 

Other representations of profile: CSV, Excel, Schematron

Terminology Bindings

PathConformanceValueSet / Code
Practitioner.languagepreferredCommonLanguages
Max Binding: AllLanguages
Practitioner.identifier.userequiredIdentifierUse
Practitioner.identifier.typeextensibleIdentifier Type Codes
Practitioner.identifier.type.coding.coderequiredOpenIMISIdentifierVS
Practitioner.identifier:Code.userequiredIdentifierUse
Practitioner.identifier:Code.typeextensibleIdentifier Type Codes
Practitioner.identifier:UUID.userequiredIdentifierUse
Practitioner.identifier:UUID.typeextensibleIdentifier Type Codes
Practitioner.name.userequiredPattern: official
Practitioner.telecom.systemrequiredContactPointSystem
Practitioner.telecom.userequiredContactPointUse
Practitioner.telecom:email.systemrequiredPattern: email
Practitioner.telecom:email.userequiredContactPointUse
Practitioner.telecom:phone.systemrequiredPattern: phone
Practitioner.telecom:phone.userequiredContactPointUse
Practitioner.address.userequiredAddressUse
Practitioner.address.typerequiredPattern: physical
Practitioner.qualification.codeexamplePattern: EO("Enrolment Officer")

Constraints

IdGradePathDetailsRequirements
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-1errorPractitioner.metaAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.implicitRulesAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.languageAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.textAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorPractitioner.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorPractitioner.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorPractitioner.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorPractitioner.identifierAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorPractitioner.identifier.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorPractitioner.identifier.useAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier.typeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier.type.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorPractitioner.identifier.type.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorPractitioner.identifier.type.codingAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier.type.coding.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorPractitioner.identifier.type.coding.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorPractitioner.identifier.type.coding.systemAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier.type.coding.versionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier.type.coding.codeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier.type.coding.displayAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier.type.coding.userSelectedAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier.type.textAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier.systemAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier.valueAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier.periodAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier.assignerAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier:CodeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier:Code.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorPractitioner.identifier:Code.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorPractitioner.identifier:Code.useAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier:Code.typeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier:Code.type.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorPractitioner.identifier:Code.type.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorPractitioner.identifier:Code.type.codingAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier:Code.type.coding.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorPractitioner.identifier:Code.type.coding.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorPractitioner.identifier:Code.type.coding.systemAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier:Code.type.coding.versionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier:Code.type.coding.codeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier:Code.type.coding.displayAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier:Code.type.coding.userSelectedAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier:Code.type.textAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier:Code.systemAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier:Code.valueAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier:Code.periodAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier:Code.assignerAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier:UUIDAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier:UUID.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorPractitioner.identifier:UUID.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorPractitioner.identifier:UUID.useAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier:UUID.typeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier:UUID.type.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorPractitioner.identifier:UUID.type.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorPractitioner.identifier:UUID.type.codingAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier:UUID.type.coding.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorPractitioner.identifier:UUID.type.coding.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorPractitioner.identifier:UUID.type.coding.systemAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier:UUID.type.coding.versionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier:UUID.type.coding.codeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier:UUID.type.coding.displayAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier:UUID.type.coding.userSelectedAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier:UUID.type.textAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier:UUID.systemAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier:UUID.valueAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier:UUID.periodAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.identifier:UUID.assignerAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.nameAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.name.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorPractitioner.name.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorPractitioner.name.useAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.name.textAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.name.familyAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.name.givenAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.name.prefixAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.name.suffixAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.name.periodAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.telecomAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.telecom.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorPractitioner.telecom.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorPractitioner.telecom.systemAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.telecom.valueAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.telecom.useAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.telecom.rankAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.telecom.periodAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.telecom:emailAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.telecom:email.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorPractitioner.telecom:email.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorPractitioner.telecom:email.systemAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.telecom:email.valueAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.telecom:email.useAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.telecom:email.rankAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.telecom:email.periodAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.telecom:phoneAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.telecom:phone.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorPractitioner.telecom:phone.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorPractitioner.telecom:phone.systemAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.telecom:phone.valueAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.telecom:phone.useAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.telecom:phone.rankAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.telecom:phone.periodAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.addressAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.address.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorPractitioner.address.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorPractitioner.address.extension:locationDistrictAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorPractitioner.address.extension:locationDistrictMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorPractitioner.address.useAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.address.typeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.address.textAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.address.lineAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.address.districtAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.address.stateAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.address.periodAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.birthDateAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.qualificationAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.qualification.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorPractitioner.qualification.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorPractitioner.qualification.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorPractitioner.qualification.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorPractitioner.qualification.identifierAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.qualification.codeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.qualification.periodAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorPractitioner.qualification.issuerAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())