SMART Base
0.1.0 - ci-build

SMART Base, published by WHO. This guide is not an authorized publication; it is the continuous build for version 0.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/WorldHealthOrganization/smart-base/ and changes regularly. See the Directory of published versions

Resource Profile: SMART Guidelines Logical Model

Official URL: http://smart.who.int/base/StructureDefinition/SGLogicalModel Version: 0.1.0
Draft as of 2024-10-04 Computable Name: SGLogicalModel

Defines the minimum expectations for Logical Models used in SMART Guidelines

Usage:

Formal Views of Profile Content

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

This structure is derived from StructureDefinition

NameFlagsCard.TypeDescription & Constraintsdoco
.. StructureDefinition StructureDefinition
... title 1..1 string Name for this structure definition (human friendly)
... publisher 1..1 string Name of the publisher (organization or individual)
... description 1..1 markdown Natural language description of the structure definition
... differential
.... element
..... Slices for code 1..* Coding Corresponding codes in terminologies
Slice: Unordered, Open by pattern:system
...... code:smart S 1..1 Coding Corresponding codes in terminologies
....... system 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/smart
...... code:loinc S 0..1 Coding Corresponding codes in terminologies
....... system 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/loinc
...... code:snomed S 0..1 Coding Corresponding codes in terminologies
....... system 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/snomed
...... code:icd-10 S 0..1 Coding Corresponding codes in terminologies
....... system 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/icd-10
...... code:icd-11 S 0..1 Coding Corresponding codes in terminologies
....... system 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/icd-11
...... code:icf S 0..1 Coding Corresponding codes in terminologies
....... system 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/icf
...... code:ichi S 0..1 Coding Corresponding codes in terminologies
....... system 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/ichi
...... code:snomed-gps S 0..1 Coding Corresponding codes in terminologies
....... system 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/smart-gps
...... code:atc S 0..1 Coding Corresponding codes in terminologies
....... system 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/atc
..... short 1..1 string Concise definition for space-constrained presentation
..... definition 1..1 markdown Full formal definition as narrative text
..... type 1..1 Element Data type and Profile for this element

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. StructureDefinition C 0..* StructureDefinition Structural Definition
sdf-0: Name should be usable as an identifier for the module by machine processing applications such as code generation
sdf-1: Element paths must be unique unless the structure is a constraint
sdf-15a: If the first element in a differential has no "." in the path and it's not a logical model, it has no type
sdf-4: If the structure is not abstract, then there SHALL be a baseDefinition
sdf-5: If the structure defines an extension then the structure must have context information
sdf-6: A structure must have either a differential, or a snapshot (or both)
sdf-9: In any snapshot or differential, no label, code or requirements on an element without a "." in the path (e.g. the first element)
sdf-11: If there's a type, its content must match the path name in the first element of a snapshot
sdf-14: All element definitions must have an id
sdf-15: The first element in a snapshot has no type unless model is a logical model.
sdf-16: All element definitions must have unique ids (snapshot)
sdf-17: All element definitions must have unique ids (diff)
sdf-18: Context Invariants can only be used for extensions
sdf-19: FHIR Specification models only use FHIR defined types
sdf-21: Default values can only be specified on specializations
sdf-22: FHIR Specification models never have default values
sdf-23: No slice name on root
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... url Σ 1..1 uri Canonical identifier for this structure definition, represented as a URI (globally unique)
... title Σ 1..1 string Name for this structure definition (human friendly)
... status ?!Σ 1..1 code draft | active | retired | unknown
Binding: PublicationStatus (required): The lifecycle status of an artifact.

... publisher Σ 1..1 string Name of the publisher (organization or individual)
... description 1..1 markdown Natural language description of the structure definition
... kind Σ 1..1 code primitive-type | complex-type | resource | logical
Binding: StructureDefinitionKind (required): Defines the type of structure that a definition is describing.


Required Pattern: logical
... abstract Σ 1..1 boolean Whether the structure is abstract
... type ΣC 1..1 uri Type defined or constrained by this structure
Binding: FHIRDefinedType (extensible): Either a resource or a data type, including logical model types.

... differential C 0..1 BackboneElement Differential view of the structure
sdf-20: No slicing on the root element
sdf-8a: In any differential, all the elements must start with the StructureDefinition's specified type for non-logical models, or with the same type name for logical models
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... element 1..* ElementDefinition Definition of elements in the resource (if no StructureDefinition)
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... path Σ 1..1 string Path of the element in the hierarchy of elements
..... Slices for code Σ 1..* Coding Corresponding codes in terminologies
Slice: Unordered, Open by pattern:system
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


...... code:smart SΣ 1..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... system Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/smart
...... code:loinc SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... system Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/loinc
...... code:snomed SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... system Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/snomed
...... code:icd-10 SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... system Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/icd-10
...... code:icd-11 SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... system Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/icd-11
...... code:icf SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... system Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/icf
...... code:ichi SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... system Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/ichi
...... code:snomed-gps SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... system Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/smart-gps
...... code:atc SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... system Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/atc
..... short Σ 1..1 string Concise definition for space-constrained presentation
..... definition Σ 1..1 markdown Full formal definition as narrative text
..... max ΣC 0..1 string Maximum Cardinality (a number or *)
eld-3: Max SHALL be a number or "*"
..... type ΣC 1..1 Element Data type and Profile for this element
eld-4: Aggregation may only be specified if one of the allowed types for the element is a reference
eld-17: targetProfile is only allowed if the type is Reference or canonical
...... code Σ 1..1 uri Data type or Resource (reference to definition)
Binding: FHIRDefinedType (extensible): Either a resource or a data type, including logical model types.

..... fixed[x] ΣC 0..1 Value must be exactly this
...... fixedBase64Binary base64Binary
...... fixedBoolean boolean
...... fixedCanonical canonical(Any)
...... fixedCode code
...... fixedDate date
...... fixedDateTime dateTime
...... fixedDecimal decimal
...... fixedId id
...... fixedInstant instant
...... fixedInteger integer
...... fixedMarkdown markdown
...... fixedOid oid
...... fixedPositiveInt positiveInt
...... fixedString string
...... fixedTime time
...... fixedUnsignedInt unsignedInt
...... fixedUri uri
...... fixedUrl url
...... fixedUuid uuid
...... fixedAddress Address
...... fixedAge Age
...... fixedAnnotation Annotation
...... fixedAttachment Attachment
...... fixedCodeableConcept CodeableConcept
...... fixedCoding Coding
...... fixedContactPoint ContactPoint
...... fixedCount Count
...... fixedDistance Distance
...... fixedDuration Duration
...... fixedHumanName HumanName
...... fixedIdentifier Identifier
...... fixedMoney Money
...... fixedPeriod Period
...... fixedQuantity Quantity
...... fixedRange Range
...... fixedRatio Ratio
...... fixedReference Reference(Any)
...... fixedSampledData SampledData
...... fixedSignature Signature
...... fixedTiming Timing
...... fixedContactDetail ContactDetail
...... fixedContributor Contributor
...... fixedDataRequirement DataRequirement
...... fixedExpression Expression
...... fixedParameterDefinition ParameterDefinition
...... fixedRelatedArtifact RelatedArtifact
...... fixedTriggerDefinition TriggerDefinition
...... fixedUsageContext UsageContext
...... fixedDosage Dosage
...... fixedMeta Meta
..... pattern[x] ΣC 0..1 Value must have at least these property values
...... patternBase64Binary base64Binary
...... patternBoolean boolean
...... patternCanonical canonical(Any)
...... patternCode code
...... patternDate date
...... patternDateTime dateTime
...... patternDecimal decimal
...... patternId id
...... patternInstant instant
...... patternInteger integer
...... patternMarkdown markdown
...... patternOid oid
...... patternPositiveInt positiveInt
...... patternString string
...... patternTime time
...... patternUnsignedInt unsignedInt
...... patternUri uri
...... patternUrl url
...... patternUuid uuid
...... patternAddress Address
...... patternAge Age
...... patternAnnotation Annotation
...... patternAttachment Attachment
...... patternCodeableConcept CodeableConcept
...... patternCoding Coding
...... patternContactPoint ContactPoint
...... patternCount Count
...... patternDistance Distance
...... patternDuration Duration
...... patternHumanName HumanName
...... patternIdentifier Identifier
...... patternMoney Money
...... patternPeriod Period
...... patternQuantity Quantity
...... patternRange Range
...... patternRatio Ratio
...... patternReference Reference(Any)
...... patternSampledData SampledData
...... patternSignature Signature
...... patternTiming Timing
...... patternContactDetail ContactDetail
...... patternContributor Contributor
...... patternDataRequirement DataRequirement
...... patternExpression Expression
...... patternParameterDefinition ParameterDefinition
...... patternRelatedArtifact RelatedArtifact
...... patternTriggerDefinition TriggerDefinition
...... patternUsageContext UsageContext
...... patternDosage Dosage
...... patternMeta Meta

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet / CodeURI
StructureDefinition.statusrequiredPublicationStatus
http://hl7.org/fhir/ValueSet/publication-status|4.0.1
from the FHIR Standard
StructureDefinition.kindrequiredPattern: logical
http://hl7.org/fhir/ValueSet/structure-definition-kind|4.0.1
from the FHIR Standard
StructureDefinition.typeextensibleFHIRDefinedType
http://hl7.org/fhir/ValueSet/defined-types
from the FHIR Standard
StructureDefinition.differential.element.codeexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:smartexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:loincexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:snomedexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:icd-10exampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:icd-11exampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:icfexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:ichiexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:snomed-gpsexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:atcexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.type.codeextensibleFHIRDefinedType
http://hl7.org/fhir/ValueSet/defined-types
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
dom-2errorStructureDefinitionIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorStructureDefinitionIf 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-4errorStructureDefinitionIf 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-5errorStructureDefinitionIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceStructureDefinitionA 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())
eld-3errorStructureDefinition.differential.element.maxMax SHALL be a number or "*"
: empty() or ($this = '*') or (toInteger() >= 0)
eld-4errorStructureDefinition.differential.element.typeAggregation may only be specified if one of the allowed types for the element is a reference
: aggregation.empty() or (code = 'Reference') or (code = 'canonical')
eld-17errorStructureDefinition.differential.element.typetargetProfile is only allowed if the type is Reference or canonical
: (code='Reference' or code = 'canonical') or targetProfile.empty()
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()
sdf-0warningStructureDefinitionName should be usable as an identifier for the module by machine processing applications such as code generation
: name.matches('[A-Z]([A-Za-z0-9_]){0,254}')
sdf-1errorStructureDefinitionElement paths must be unique unless the structure is a constraint
: derivation = 'constraint' or snapshot.element.select(path).isDistinct()
sdf-4errorStructureDefinitionIf the structure is not abstract, then there SHALL be a baseDefinition
: abstract = true or baseDefinition.exists()
Ensure that the base types are abstract
sdf-5errorStructureDefinitionIf the structure defines an extension then the structure must have context information
: type != 'Extension' or derivation = 'specialization' or (context.exists())
sdf-6errorStructureDefinitionA structure must have either a differential, or a snapshot (or both)
: snapshot.exists() or differential.exists()
sdf-9errorStructureDefinitionIn any snapshot or differential, no label, code or requirements on an element without a "." in the path (e.g. the first element)
: children().element.where(path.contains('.').not()).label.empty() and children().element.where(path.contains('.').not()).code.empty() and children().element.where(path.contains('.').not()).requirements.empty()
Because these 3 fields seem to be have overlapping meaning with the ones in the root of StructureDefinition
sdf-11errorStructureDefinitionIf there's a type, its content must match the path name in the first element of a snapshot
: kind != 'logical' implies snapshot.empty() or snapshot.element.first().path = type
Ensure that the type is not inconsistent with the other information in the structure
sdf-14errorStructureDefinitionAll element definitions must have an id
: snapshot.element.all(id.exists()) and differential.element.all(id.exists())
elements have id
sdf-15errorStructureDefinitionThe first element in a snapshot has no type unless model is a logical model.
: kind!='logical' implies snapshot.element.first().type.empty()
No Type on the root element (snapshot)
sdf-15aerrorStructureDefinitionIf the first element in a differential has no "." in the path and it's not a logical model, it has no type
: (kind!='logical' and differential.element.first().path.contains('.').not()) implies differential.element.first().type.empty()
No Type on the root element (differential)
sdf-16errorStructureDefinitionAll element definitions must have unique ids (snapshot)
: snapshot.element.all(id.exists()) and snapshot.element.id.trace('ids').isDistinct()
element ids need to be unique
sdf-17errorStructureDefinitionAll element definitions must have unique ids (diff)
: differential.element.all(id.exists()) and differential.element.id.trace('ids').isDistinct()
element ids need to be unique
sdf-18errorStructureDefinitionContext Invariants can only be used for extensions
: contextInvariant.exists() implies type = 'Extension'
contextInvariant
sdf-19errorStructureDefinitionFHIR Specification models only use FHIR defined types
: url.startsWith('http://hl7.org/fhir/StructureDefinition') implies (differential.element.type.code.all(matches('^[a-zA-Z0-9]+$') or matches('^http:\\/\\/hl7\\.org\\/fhirpath\\/System\\.[A-Z][A-Za-z]+$')) and snapshot.element.type.code.all(matches('^[a-zA-Z0-9\\.]+$') or matches('^http:\\/\\/hl7\\.org\\/fhirpath\\/System\\.[A-Z][A-Za-z]+$')))
custom types only in logical models
sdf-20errorStructureDefinition.differentialNo slicing on the root element
: element.where(path.contains('.').not()).slicing.empty()
no slicing on root
sdf-21errorStructureDefinitionDefault values can only be specified on specializations
: differential.element.defaultValue.exists() implies (derivation = 'specialization')
no default values on data types or resources
sdf-22errorStructureDefinitionFHIR Specification models never have default values
: url.startsWith('http://hl7.org/fhir/StructureDefinition') implies (snapshot.element.defaultValue.empty() and differential.element.defaultValue.empty())
no default values on data types or resources
sdf-23errorStructureDefinitionNo slice name on root
: (snapshot | differential).element.all(path.contains('.').not() implies sliceName.empty())
no sliceName on root
sdf-8aerrorStructureDefinition.differentialIn any differential, all the elements must start with the StructureDefinition's specified type for non-logical models, or with the same type name for logical models
: (%resource.kind = 'logical' or element.first().path.startsWith(%resource.type)) and (element.tail().empty() or element.tail().all(path.startsWith(%resource.differential.element.first().path.replaceMatches('\\..*','')&'.')))
NameFlagsCard.TypeDescription & Constraintsdoco
.. StructureDefinition C 0..* StructureDefinition Structural Definition
sdf-0: Name should be usable as an identifier for the module by machine processing applications such as code generation
sdf-1: Element paths must be unique unless the structure is a constraint
sdf-15a: If the first element in a differential has no "." in the path and it's not a logical model, it has no type
sdf-4: If the structure is not abstract, then there SHALL be a baseDefinition
sdf-5: If the structure defines an extension then the structure must have context information
sdf-6: A structure must have either a differential, or a snapshot (or both)
sdf-9: In any snapshot or differential, no label, code or requirements on an element without a "." in the path (e.g. the first element)
sdf-11: If there's a type, its content must match the path name in the first element of a snapshot
sdf-14: All element definitions must have an id
sdf-15: The first element in a snapshot has no type unless model is a logical model.
sdf-16: All element definitions must have unique ids (snapshot)
sdf-17: All element definitions must have unique ids (diff)
sdf-18: Context Invariants can only be used for extensions
sdf-19: FHIR Specification models only use FHIR defined types
sdf-21: Default values can only be specified on specializations
sdf-22: FHIR Specification models never have default values
sdf-23: No slice name on root
... 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
... contained 0..* Resource Contained, inline Resources
... extension 0..* Extension Additional content defined by implementations
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... url Σ 1..1 uri Canonical identifier for this structure definition, represented as a URI (globally unique)
... identifier Σ 0..* Identifier Additional identifier for the structure definition
... version Σ 0..1 string Business version of the structure definition
... name ΣC 1..1 string Name for this structure definition (computer friendly)
... title Σ 1..1 string Name for this structure definition (human friendly)
... status ?!Σ 1..1 code draft | active | retired | unknown
Binding: PublicationStatus (required): The lifecycle status of an artifact.

... experimental Σ 0..1 boolean For testing purposes, not real usage
... date Σ 0..1 dateTime Date last changed
... publisher Σ 1..1 string Name of the publisher (organization or individual)
... contact Σ 0..* ContactDetail Contact details for the publisher
... description 1..1 markdown Natural language description of the structure definition
... useContext Σ 0..* UsageContext The context that the content is intended to support
... jurisdiction Σ 0..* CodeableConcept Intended jurisdiction for structure definition (if applicable)
Binding: Jurisdiction ValueSet (extensible): Countries and regions within which this artifact is targeted for use.


... purpose 0..1 markdown Why this structure definition is defined
... copyright 0..1 markdown Use and/or publishing restrictions
... keyword Σ 0..* Coding Assist with indexing and finding
Binding: DefinitionUseCodes (extensible): Codes for the meaning of the defined structure (SNOMED CT and LOINC codes, as an example).


... fhirVersion Σ 0..1 code FHIR Version this StructureDefinition targets
Binding: FHIRVersion (required): All published FHIR Versions.

... mapping C 0..* BackboneElement External specification that the content is mapped to
sdf-2: Must have at least a name or a uri (or both)
.... 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
.... identity 1..1 id Internal id when this mapping is used
.... uri C 0..1 uri Identifies what this mapping refers to
.... name C 0..1 string Names what this mapping refers to
.... comment 0..1 string Versions, Issues, Scope limitations etc.
... kind Σ 1..1 code primitive-type | complex-type | resource | logical
Binding: StructureDefinitionKind (required): Defines the type of structure that a definition is describing.


Required Pattern: logical
... abstract Σ 1..1 boolean Whether the structure is abstract
... context ΣC 0..* BackboneElement If an extension, where it can be used in instances
.... 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
.... type Σ 1..1 code fhirpath | element | extension
Binding: ExtensionContextType (required): How an extension context is interpreted.

.... expression Σ 1..1 string Where the extension can be used in instances
... contextInvariant ΣC 0..* string FHIRPath invariants - when the extension can be used
... type ΣC 1..1 uri Type defined or constrained by this structure
Binding: FHIRDefinedType (extensible): Either a resource or a data type, including logical model types.

... baseDefinition ΣC 0..1 canonical(StructureDefinition) Definition that this type is constrained/specialized from
... derivation Σ 0..1 code specialization | constraint - How relates to base definition
Binding: TypeDerivationRule (required): How a type relates to its baseDefinition.

... snapshot C 0..1 BackboneElement Snapshot view of the structure
sdf-3: Each element definition in a snapshot must have a formal definition and cardinalities
sdf-8: All snapshot elements must start with the StructureDefinition's specified type for non-logical models, or with the same type name for logical models
sdf-8b: All snapshot elements must have a base definition
.... 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
.... element C 1..* ElementDefinition Definition of elements in the resource (if no StructureDefinition)
sdf-10: provide either a binding reference or a description (or both)
... differential C 0..1 BackboneElement Differential view of the structure
sdf-20: No slicing on the root element
sdf-8a: In any differential, all the elements must start with the StructureDefinition's specified type for non-logical models, or with the same type name for logical models
.... 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
.... element 1..* ElementDefinition Definition of elements in the resource (if no StructureDefinition)
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... path Σ 1..1 string Path of the element in the hierarchy of elements
..... representation Σ 0..* code xmlAttr | xmlText | typeAttr | cdaText | xhtml
Binding: PropertyRepresentation (required): How a property is represented when serialized.


..... sliceName Σ 0..1 string Name for this particular element (in a set of slices)
..... sliceIsConstraining Σ 0..1 boolean If this slice definition constrains an inherited slice definition (or not)
..... label Σ 0..1 string Name for element to display with or prompt for element
..... Slices for code Σ 1..* Coding Corresponding codes in terminologies
Slice: Unordered, Open by pattern:system
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


...... code:smart SΣ 1..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... 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 Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/smart
....... version Σ 0..1 string Version of the system - if relevant
....... code Σ 0..1 code Symbol in syntax defined by the system
....... display Σ 0..1 string Representation defined by the system
....... userSelected Σ 0..1 boolean If this coding was chosen directly by the user
...... code:loinc SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... 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 Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/loinc
....... version Σ 0..1 string Version of the system - if relevant
....... code Σ 0..1 code Symbol in syntax defined by the system
....... display Σ 0..1 string Representation defined by the system
....... userSelected Σ 0..1 boolean If this coding was chosen directly by the user
...... code:snomed SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... 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 Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/snomed
....... version Σ 0..1 string Version of the system - if relevant
....... code Σ 0..1 code Symbol in syntax defined by the system
....... display Σ 0..1 string Representation defined by the system
....... userSelected Σ 0..1 boolean If this coding was chosen directly by the user
...... code:icd-10 SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... 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 Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/icd-10
....... version Σ 0..1 string Version of the system - if relevant
....... code Σ 0..1 code Symbol in syntax defined by the system
....... display Σ 0..1 string Representation defined by the system
....... userSelected Σ 0..1 boolean If this coding was chosen directly by the user
...... code:icd-11 SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... 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 Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/icd-11
....... version Σ 0..1 string Version of the system - if relevant
....... code Σ 0..1 code Symbol in syntax defined by the system
....... display Σ 0..1 string Representation defined by the system
....... userSelected Σ 0..1 boolean If this coding was chosen directly by the user
...... code:icf SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... 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 Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/icf
....... version Σ 0..1 string Version of the system - if relevant
....... code Σ 0..1 code Symbol in syntax defined by the system
....... display Σ 0..1 string Representation defined by the system
....... userSelected Σ 0..1 boolean If this coding was chosen directly by the user
...... code:ichi SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... 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 Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/ichi
....... version Σ 0..1 string Version of the system - if relevant
....... code Σ 0..1 code Symbol in syntax defined by the system
....... display Σ 0..1 string Representation defined by the system
....... userSelected Σ 0..1 boolean If this coding was chosen directly by the user
...... code:snomed-gps SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... 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 Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/smart-gps
....... version Σ 0..1 string Version of the system - if relevant
....... code Σ 0..1 code Symbol in syntax defined by the system
....... display Σ 0..1 string Representation defined by the system
....... userSelected Σ 0..1 boolean If this coding was chosen directly by the user
...... code:atc SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... 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 Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/atc
....... version Σ 0..1 string Version of the system - if relevant
....... code Σ 0..1 code Symbol in syntax defined by the system
....... display Σ 0..1 string Representation defined by the system
....... userSelected Σ 0..1 boolean If this coding was chosen directly by the user
..... slicing ΣC 0..1 Element This element is sliced - slices follow
eld-1: If there are no discriminators, there must be a definition
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
...... discriminator Σ 0..* Element Element values that are used to distinguish the slices
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
....... type Σ 1..1 code value | exists | pattern | type | profile
Binding: DiscriminatorType (required): How an element value is interpreted when discrimination is evaluated.

....... path Σ 1..1 string Path to element value
...... description ΣC 0..1 string Text description of how slicing works (or not)
...... ordered Σ 0..1 boolean If elements must be in same order as slices
...... rules Σ 1..1 code closed | open | openAtEnd
Binding: SlicingRules (required): How slices are interpreted when evaluating an instance.

..... short Σ 1..1 string Concise definition for space-constrained presentation
..... definition Σ 1..1 markdown Full formal definition as narrative text
..... comment Σ 0..1 markdown Comments about the use of this element
..... requirements Σ 0..1 markdown Why this resource has been created
..... alias Σ 0..* string Other names
..... min ΣC 0..1 unsignedInt Minimum Cardinality
..... max ΣC 0..1 string Maximum Cardinality (a number or *)
eld-3: Max SHALL be a number or "*"
..... base Σ 0..1 Element Base definition information for tools
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
...... path Σ 1..1 string Path that identifies the base element
...... min Σ 1..1 unsignedInt Min cardinality of the base element
...... max Σ 1..1 string Max cardinality of the base element
..... contentReference ΣC 0..1 uri Reference to definition of content for the element
..... type ΣC 1..1 Element Data type and Profile for this element
eld-4: Aggregation may only be specified if one of the allowed types for the element is a reference
eld-17: targetProfile is only allowed if the type is Reference or canonical
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
...... code Σ 1..1 uri Data type or Resource (reference to definition)
Binding: FHIRDefinedType (extensible): Either a resource or a data type, including logical model types.

...... profile Σ 0..* canonical(StructureDefinition | ImplementationGuide) Profiles (StructureDefinition or IG) - one must apply
...... targetProfile Σ 0..* canonical(StructureDefinition | ImplementationGuide) Profile (StructureDefinition or IG) on the Reference/canonical target - one must apply
...... aggregation ΣC 0..* code contained | referenced | bundled - how aggregated
Binding: AggregationMode (required): How resource references can be aggregated.


...... versioning Σ 0..1 code either | independent | specific
Binding: ReferenceVersionRules (required): Whether a reference needs to be version specific or version independent, or whether either can be used.

..... defaultValue[x] ΣC 0..1 Specified value if missing from instance
...... defaultValueBase64Binary base64Binary
...... defaultValueBoolean boolean
...... defaultValueCanonical canonical(Any)
...... defaultValueCode code
...... defaultValueDate date
...... defaultValueDateTime dateTime
...... defaultValueDecimal decimal
...... defaultValueId id
...... defaultValueInstant instant
...... defaultValueInteger integer
...... defaultValueMarkdown markdown
...... defaultValueOid oid
...... defaultValuePositiveInt positiveInt
...... defaultValueString string
...... defaultValueTime time
...... defaultValueUnsignedInt unsignedInt
...... defaultValueUri uri
...... defaultValueUrl url
...... defaultValueUuid uuid
...... defaultValueAddress Address
...... defaultValueAge Age
...... defaultValueAnnotation Annotation
...... defaultValueAttachment Attachment
...... defaultValueCodeableConcept CodeableConcept
...... defaultValueCoding Coding
...... defaultValueContactPoint ContactPoint
...... defaultValueCount Count
...... defaultValueDistance Distance
...... defaultValueDuration Duration
...... defaultValueHumanName HumanName
...... defaultValueIdentifier Identifier
...... defaultValueMoney Money
...... defaultValuePeriod Period
...... defaultValueQuantity Quantity
...... defaultValueRange Range
...... defaultValueRatio Ratio
...... defaultValueReference Reference(Any)
...... defaultValueSampledData SampledData
...... defaultValueSignature Signature
...... defaultValueTiming Timing
...... defaultValueContactDetail ContactDetail
...... defaultValueContributor Contributor
...... defaultValueDataRequirement DataRequirement
...... defaultValueExpression Expression
...... defaultValueParameterDefinition ParameterDefinition
...... defaultValueRelatedArtifact RelatedArtifact
...... defaultValueTriggerDefinition TriggerDefinition
...... defaultValueUsageContext UsageContext
...... defaultValueDosage Dosage
...... defaultValueMeta Meta
..... meaningWhenMissing ΣC 0..1 markdown Implicit meaning when this element is missing
..... orderMeaning Σ 0..1 string What the order of the elements means
..... fixed[x] ΣC 0..1 Value must be exactly this
...... fixedBase64Binary base64Binary
...... fixedBoolean boolean
...... fixedCanonical canonical(Any)
...... fixedCode code
...... fixedDate date
...... fixedDateTime dateTime
...... fixedDecimal decimal
...... fixedId id
...... fixedInstant instant
...... fixedInteger integer
...... fixedMarkdown markdown
...... fixedOid oid
...... fixedPositiveInt positiveInt
...... fixedString string
...... fixedTime time
...... fixedUnsignedInt unsignedInt
...... fixedUri uri
...... fixedUrl url
...... fixedUuid uuid
...... fixedAddress Address
...... fixedAge Age
...... fixedAnnotation Annotation
...... fixedAttachment Attachment
...... fixedCodeableConcept CodeableConcept
...... fixedCoding Coding
...... fixedContactPoint ContactPoint
...... fixedCount Count
...... fixedDistance Distance
...... fixedDuration Duration
...... fixedHumanName HumanName
...... fixedIdentifier Identifier
...... fixedMoney Money
...... fixedPeriod Period
...... fixedQuantity Quantity
...... fixedRange Range
...... fixedRatio Ratio
...... fixedReference Reference(Any)
...... fixedSampledData SampledData
...... fixedSignature Signature
...... fixedTiming Timing
...... fixedContactDetail ContactDetail
...... fixedContributor Contributor
...... fixedDataRequirement DataRequirement
...... fixedExpression Expression
...... fixedParameterDefinition ParameterDefinition
...... fixedRelatedArtifact RelatedArtifact
...... fixedTriggerDefinition TriggerDefinition
...... fixedUsageContext UsageContext
...... fixedDosage Dosage
...... fixedMeta Meta
..... pattern[x] ΣC 0..1 Value must have at least these property values
...... patternBase64Binary base64Binary
...... patternBoolean boolean
...... patternCanonical canonical(Any)
...... patternCode code
...... patternDate date
...... patternDateTime dateTime
...... patternDecimal decimal
...... patternId id
...... patternInstant instant
...... patternInteger integer
...... patternMarkdown markdown
...... patternOid oid
...... patternPositiveInt positiveInt
...... patternString string
...... patternTime time
...... patternUnsignedInt unsignedInt
...... patternUri uri
...... patternUrl url
...... patternUuid uuid
...... patternAddress Address
...... patternAge Age
...... patternAnnotation Annotation
...... patternAttachment Attachment
...... patternCodeableConcept CodeableConcept
...... patternCoding Coding
...... patternContactPoint ContactPoint
...... patternCount Count
...... patternDistance Distance
...... patternDuration Duration
...... patternHumanName HumanName
...... patternIdentifier Identifier
...... patternMoney Money
...... patternPeriod Period
...... patternQuantity Quantity
...... patternRange Range
...... patternRatio Ratio
...... patternReference Reference(Any)
...... patternSampledData SampledData
...... patternSignature Signature
...... patternTiming Timing
...... patternContactDetail ContactDetail
...... patternContributor Contributor
...... patternDataRequirement DataRequirement
...... patternExpression Expression
...... patternParameterDefinition ParameterDefinition
...... patternRelatedArtifact RelatedArtifact
...... patternTriggerDefinition TriggerDefinition
...... patternUsageContext UsageContext
...... patternDosage Dosage
...... patternMeta Meta
..... example Σ 0..* Element Example value (as defined for type)
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
...... label Σ 1..1 string Describes the purpose of this example
...... value[x] Σ 1..1 Value of Example (one of allowed types)
....... valueBase64Binary base64Binary
....... valueBoolean boolean
....... valueCanonical canonical(Any)
....... valueCode code
....... valueDate date
....... valueDateTime dateTime
....... valueDecimal decimal
....... valueId id
....... valueInstant instant
....... valueInteger integer
....... valueMarkdown markdown
....... valueOid oid
....... valuePositiveInt positiveInt
....... valueString string
....... valueTime time
....... valueUnsignedInt unsignedInt
....... valueUri uri
....... valueUrl url
....... valueUuid uuid
....... valueAddress Address
....... valueAge Age
....... valueAnnotation Annotation
....... valueAttachment Attachment
....... valueCodeableConcept CodeableConcept
....... valueCoding Coding
....... valueContactPoint ContactPoint
....... valueCount Count
....... valueDistance Distance
....... valueDuration Duration
....... valueHumanName HumanName
....... valueIdentifier Identifier
....... valueMoney Money
....... valuePeriod Period
....... valueQuantity Quantity
....... valueRange Range
....... valueRatio Ratio
....... valueReference Reference(Any)
....... valueSampledData SampledData
....... valueSignature Signature
....... valueTiming Timing
....... valueContactDetail ContactDetail
....... valueContributor Contributor
....... valueDataRequirement DataRequirement
....... valueExpression Expression
....... valueParameterDefinition ParameterDefinition
....... valueRelatedArtifact RelatedArtifact
....... valueTriggerDefinition TriggerDefinition
....... valueUsageContext UsageContext
....... valueDosage Dosage
....... valueMeta Meta
..... minValue[x] Σ 0..1 Minimum Allowed Value (for some types)
...... minValueDate date
...... minValueDateTime dateTime
...... minValueInstant instant
...... minValueTime time
...... minValueDecimal decimal
...... minValueInteger integer
...... minValuePositiveInt positiveInt
...... minValueUnsignedInt unsignedInt
...... minValueQuantity Quantity
..... maxValue[x] Σ 0..1 Maximum Allowed Value (for some types)
...... maxValueDate date
...... maxValueDateTime dateTime
...... maxValueInstant instant
...... maxValueTime time
...... maxValueDecimal decimal
...... maxValueInteger integer
...... maxValuePositiveInt positiveInt
...... maxValueUnsignedInt unsignedInt
...... maxValueQuantity Quantity
..... maxLength Σ 0..1 integer Max length for strings
..... condition Σ 0..* id Reference to invariant about presence
..... constraint ΣC 0..* Element Condition that must evaluate to true
eld-21: Constraints should have an expression or else validators will not be able to enforce them
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
...... key ΣC 1..1 id Target of 'condition' reference above
...... requirements Σ 0..1 string Why this constraint is necessary or appropriate
...... severity Σ 1..1 code error | warning
Binding: ConstraintSeverity (required): SHALL applications comply with this constraint?

...... human Σ 1..1 string Human description of constraint
...... expression Σ 0..1 string FHIRPath expression of constraint
...... xpath Σ 0..1 string XPath expression of constraint
...... source Σ 0..1 canonical(StructureDefinition) Reference to original source of constraint
..... mustSupport Σ 0..1 boolean If the element must be supported
..... isModifier Σ 0..1 boolean If this modifies the meaning of other elements
..... isModifierReason Σ 0..1 string Reason that this element is marked as a modifier
..... isSummary Σ 0..1 boolean Include when _summary = true?
..... binding ΣC 0..1 Element ValueSet details if this is coded
eld-12: ValueSet SHALL start with http:// or https:// or urn:
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
...... strength Σ 1..1 code required | extensible | preferred | example
Binding: BindingStrength (required): Indication of the degree of conformance expectations associated with a binding.

...... description Σ 0..1 string Human explanation of the value set
...... valueSet ΣC 0..1 canonical(ValueSet) Source of value set
..... mapping Σ 0..* Element Map element to another set of definitions
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
...... identity Σ 1..1 id Reference to mapping declaration
...... language Σ 0..1 code Computable language of mapping
Binding: Mime Types (required): The mime type of an attachment. Any valid mime type is allowed.

...... map Σ 1..1 string Details of the mapping
...... comment Σ 0..1 string Comments about the mapping or its use

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet / CodeURI
StructureDefinition.languagepreferredCommonLanguages
Additional Bindings Purpose
AllLanguages Max Binding
http://hl7.org/fhir/ValueSet/languages
from the FHIR Standard
StructureDefinition.statusrequiredPublicationStatus
http://hl7.org/fhir/ValueSet/publication-status|4.0.1
from the FHIR Standard
StructureDefinition.jurisdictionextensibleJurisdiction ValueSet
http://hl7.org/fhir/ValueSet/jurisdiction
from the FHIR Standard
StructureDefinition.keywordextensibleDefinitionUseCodes
http://hl7.org/fhir/ValueSet/definition-use
from the FHIR Standard
StructureDefinition.fhirVersionrequiredFHIRVersion
http://hl7.org/fhir/ValueSet/FHIR-version|4.0.1
from the FHIR Standard
StructureDefinition.kindrequiredPattern: logical
http://hl7.org/fhir/ValueSet/structure-definition-kind|4.0.1
from the FHIR Standard
StructureDefinition.context.typerequiredExtensionContextType
http://hl7.org/fhir/ValueSet/extension-context-type|4.0.1
from the FHIR Standard
StructureDefinition.typeextensibleFHIRDefinedType
http://hl7.org/fhir/ValueSet/defined-types
from the FHIR Standard
StructureDefinition.derivationrequiredTypeDerivationRule
http://hl7.org/fhir/ValueSet/type-derivation-rule|4.0.1
from the FHIR Standard
StructureDefinition.differential.element.representationrequiredPropertyRepresentation
http://hl7.org/fhir/ValueSet/property-representation|4.0.1
from the FHIR Standard
StructureDefinition.differential.element.codeexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:smartexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:loincexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:snomedexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:icd-10exampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:icd-11exampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:icfexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:ichiexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:snomed-gpsexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:atcexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.slicing.discriminator.typerequiredDiscriminatorType
http://hl7.org/fhir/ValueSet/discriminator-type|4.0.1
from the FHIR Standard
StructureDefinition.differential.element.slicing.rulesrequiredSlicingRules
http://hl7.org/fhir/ValueSet/resource-slicing-rules|4.0.1
from the FHIR Standard
StructureDefinition.differential.element.type.codeextensibleFHIRDefinedType
http://hl7.org/fhir/ValueSet/defined-types
from the FHIR Standard
StructureDefinition.differential.element.type.aggregationrequiredAggregationMode
http://hl7.org/fhir/ValueSet/resource-aggregation-mode|4.0.1
from the FHIR Standard
StructureDefinition.differential.element.type.versioningrequiredReferenceVersionRules
http://hl7.org/fhir/ValueSet/reference-version-rules|4.0.1
from the FHIR Standard
StructureDefinition.differential.element.constraint.severityrequiredConstraintSeverity
http://hl7.org/fhir/ValueSet/constraint-severity|4.0.1
from the FHIR Standard
StructureDefinition.differential.element.binding.strengthrequiredBindingStrength
http://hl7.org/fhir/ValueSet/binding-strength|4.0.1
from the FHIR Standard
StructureDefinition.differential.element.mapping.languagerequiredMime Types (a valid code from urn:ietf:bcp:13)
http://hl7.org/fhir/ValueSet/mimetypes|4.0.1
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
dom-2errorStructureDefinitionIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorStructureDefinitionIf 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-4errorStructureDefinitionIf 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-5errorStructureDefinitionIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceStructureDefinitionA resource should have narrative for robust management
: text.`div`.exists()
eld-1errorStructureDefinition.differential.element.slicingIf there are no discriminators, there must be a definition
: discriminator.exists() or description.exists()
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
eld-3errorStructureDefinition.differential.element.maxMax SHALL be a number or "*"
: empty() or ($this = '*') or (toInteger() >= 0)
eld-4errorStructureDefinition.differential.element.typeAggregation may only be specified if one of the allowed types for the element is a reference
: aggregation.empty() or (code = 'Reference') or (code = 'canonical')
eld-12errorStructureDefinition.differential.element.bindingValueSet SHALL start with http:// or https:// or urn:
: valueSet.exists() implies (valueSet.startsWith('http:') or valueSet.startsWith('https') or valueSet.startsWith('urn:'))
eld-17errorStructureDefinition.differential.element.typetargetProfile is only allowed if the type is Reference or canonical
: (code='Reference' or code = 'canonical') or targetProfile.empty()
eld-21warningStructureDefinition.differential.element.constraintConstraints should have an expression or else validators will not be able to enforce them
: expression.exists()
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()
sdf-0warningStructureDefinitionName should be usable as an identifier for the module by machine processing applications such as code generation
: name.matches('[A-Z]([A-Za-z0-9_]){0,254}')
sdf-1errorStructureDefinitionElement paths must be unique unless the structure is a constraint
: derivation = 'constraint' or snapshot.element.select(path).isDistinct()
sdf-15aerrorStructureDefinitionIf the first element in a differential has no "." in the path and it's not a logical model, it has no type
: (kind!='logical' and differential.element.first().path.contains('.').not()) implies differential.element.first().type.empty()
No Type on the root element (differential)
sdf-2errorStructureDefinition.mappingMust have at least a name or a uri (or both)
: name.exists() or uri.exists()
sdf-3errorStructureDefinition.snapshotEach element definition in a snapshot must have a formal definition and cardinalities
: element.all(definition.exists() and min.exists() and max.exists())
sdf-4errorStructureDefinitionIf the structure is not abstract, then there SHALL be a baseDefinition
: abstract = true or baseDefinition.exists()
Ensure that the base types are abstract
sdf-5errorStructureDefinitionIf the structure defines an extension then the structure must have context information
: type != 'Extension' or derivation = 'specialization' or (context.exists())
sdf-6errorStructureDefinitionA structure must have either a differential, or a snapshot (or both)
: snapshot.exists() or differential.exists()
sdf-8errorStructureDefinition.snapshotAll snapshot elements must start with the StructureDefinition's specified type for non-logical models, or with the same type name for logical models
: (%resource.kind = 'logical' or element.first().path = %resource.type) and element.tail().all(path.startsWith(%resource.snapshot.element.first().path&'.'))
sdf-10errorStructureDefinition.snapshot.elementprovide either a binding reference or a description (or both)
: binding.empty() or binding.valueSet.exists() or binding.description.exists()
binding is required
sdf-11errorStructureDefinitionIf there's a type, its content must match the path name in the first element of a snapshot
: kind != 'logical' implies snapshot.empty() or snapshot.element.first().path = type
Ensure that the type is not inconsistent with the other information in the structure
sdf-14errorStructureDefinitionAll element definitions must have an id
: snapshot.element.all(id.exists()) and differential.element.all(id.exists())
elements have id
sdf-15errorStructureDefinitionThe first element in a snapshot has no type unless model is a logical model.
: kind!='logical' implies snapshot.element.first().type.empty()
No Type on the root element (snapshot)
sdf-16errorStructureDefinitionAll element definitions must have unique ids (snapshot)
: snapshot.element.all(id.exists()) and snapshot.element.id.trace('ids').isDistinct()
element ids need to be unique
sdf-17errorStructureDefinitionAll element definitions must have unique ids (diff)
: differential.element.all(id.exists()) and differential.element.id.trace('ids').isDistinct()
element ids need to be unique
sdf-18errorStructureDefinitionContext Invariants can only be used for extensions
: contextInvariant.exists() implies type = 'Extension'
contextInvariant
sdf-8aerrorStructureDefinition.differentialIn any differential, all the elements must start with the StructureDefinition's specified type for non-logical models, or with the same type name for logical models
: (%resource.kind = 'logical' or element.first().path.startsWith(%resource.type)) and (element.tail().empty() or element.tail().all(path.startsWith(%resource.differential.element.first().path.replaceMatches('\\..*','')&'.')))
sdf-9errorStructureDefinitionIn any snapshot or differential, no label, code or requirements on an element without a "." in the path (e.g. the first element)
: children().element.where(path.contains('.').not()).label.empty() and children().element.where(path.contains('.').not()).code.empty() and children().element.where(path.contains('.').not()).requirements.empty()
Because these 3 fields seem to be have overlapping meaning with the ones in the root of StructureDefinition
sdf-19errorStructureDefinitionFHIR Specification models only use FHIR defined types
: url.startsWith('http://hl7.org/fhir/StructureDefinition') implies (differential.element.type.code.all(matches('^[a-zA-Z0-9]+$') or matches('^http:\\/\\/hl7\\.org\\/fhirpath\\/System\\.[A-Z][A-Za-z]+$')) and snapshot.element.type.code.all(matches('^[a-zA-Z0-9\\.]+$') or matches('^http:\\/\\/hl7\\.org\\/fhirpath\\/System\\.[A-Z][A-Za-z]+$')))
custom types only in logical models
sdf-20errorStructureDefinition.differentialNo slicing on the root element
: element.where(path.contains('.').not()).slicing.empty()
no slicing on root
sdf-21errorStructureDefinitionDefault values can only be specified on specializations
: differential.element.defaultValue.exists() implies (derivation = 'specialization')
no default values on data types or resources
sdf-22errorStructureDefinitionFHIR Specification models never have default values
: url.startsWith('http://hl7.org/fhir/StructureDefinition') implies (snapshot.element.defaultValue.empty() and differential.element.defaultValue.empty())
no default values on data types or resources
sdf-23errorStructureDefinitionNo slice name on root
: (snapshot | differential).element.all(path.contains('.').not() implies sliceName.empty())
no sliceName on root
sdf-8berrorStructureDefinition.snapshotAll snapshot elements must have a base definition
: element.all(base.exists())

This structure is derived from StructureDefinition

Summary

Mandatory: 3 elements(14 nested mandatory elements)
Must-Support: 9 elements

Slices

This structure defines the following Slices:

  • The element 1 is sliced based on the value of StructureDefinition.differential.element.code

Differential View

This structure is derived from StructureDefinition

NameFlagsCard.TypeDescription & Constraintsdoco
.. StructureDefinition StructureDefinition
... title 1..1 string Name for this structure definition (human friendly)
... publisher 1..1 string Name of the publisher (organization or individual)
... description 1..1 markdown Natural language description of the structure definition
... differential
.... element
..... Slices for code 1..* Coding Corresponding codes in terminologies
Slice: Unordered, Open by pattern:system
...... code:smart S 1..1 Coding Corresponding codes in terminologies
....... system 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/smart
...... code:loinc S 0..1 Coding Corresponding codes in terminologies
....... system 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/loinc
...... code:snomed S 0..1 Coding Corresponding codes in terminologies
....... system 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/snomed
...... code:icd-10 S 0..1 Coding Corresponding codes in terminologies
....... system 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/icd-10
...... code:icd-11 S 0..1 Coding Corresponding codes in terminologies
....... system 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/icd-11
...... code:icf S 0..1 Coding Corresponding codes in terminologies
....... system 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/icf
...... code:ichi S 0..1 Coding Corresponding codes in terminologies
....... system 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/ichi
...... code:snomed-gps S 0..1 Coding Corresponding codes in terminologies
....... system 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/smart-gps
...... code:atc S 0..1 Coding Corresponding codes in terminologies
....... system 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/atc
..... short 1..1 string Concise definition for space-constrained presentation
..... definition 1..1 markdown Full formal definition as narrative text
..... type 1..1 Element Data type and Profile for this element

doco Documentation for this format

Key Elements View

NameFlagsCard.TypeDescription & Constraintsdoco
.. StructureDefinition C 0..* StructureDefinition Structural Definition
sdf-0: Name should be usable as an identifier for the module by machine processing applications such as code generation
sdf-1: Element paths must be unique unless the structure is a constraint
sdf-15a: If the first element in a differential has no "." in the path and it's not a logical model, it has no type
sdf-4: If the structure is not abstract, then there SHALL be a baseDefinition
sdf-5: If the structure defines an extension then the structure must have context information
sdf-6: A structure must have either a differential, or a snapshot (or both)
sdf-9: In any snapshot or differential, no label, code or requirements on an element without a "." in the path (e.g. the first element)
sdf-11: If there's a type, its content must match the path name in the first element of a snapshot
sdf-14: All element definitions must have an id
sdf-15: The first element in a snapshot has no type unless model is a logical model.
sdf-16: All element definitions must have unique ids (snapshot)
sdf-17: All element definitions must have unique ids (diff)
sdf-18: Context Invariants can only be used for extensions
sdf-19: FHIR Specification models only use FHIR defined types
sdf-21: Default values can only be specified on specializations
sdf-22: FHIR Specification models never have default values
sdf-23: No slice name on root
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... url Σ 1..1 uri Canonical identifier for this structure definition, represented as a URI (globally unique)
... title Σ 1..1 string Name for this structure definition (human friendly)
... status ?!Σ 1..1 code draft | active | retired | unknown
Binding: PublicationStatus (required): The lifecycle status of an artifact.

... publisher Σ 1..1 string Name of the publisher (organization or individual)
... description 1..1 markdown Natural language description of the structure definition
... kind Σ 1..1 code primitive-type | complex-type | resource | logical
Binding: StructureDefinitionKind (required): Defines the type of structure that a definition is describing.


Required Pattern: logical
... abstract Σ 1..1 boolean Whether the structure is abstract
... type ΣC 1..1 uri Type defined or constrained by this structure
Binding: FHIRDefinedType (extensible): Either a resource or a data type, including logical model types.

... differential C 0..1 BackboneElement Differential view of the structure
sdf-20: No slicing on the root element
sdf-8a: In any differential, all the elements must start with the StructureDefinition's specified type for non-logical models, or with the same type name for logical models
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... element 1..* ElementDefinition Definition of elements in the resource (if no StructureDefinition)
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... path Σ 1..1 string Path of the element in the hierarchy of elements
..... Slices for code Σ 1..* Coding Corresponding codes in terminologies
Slice: Unordered, Open by pattern:system
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


...... code:smart SΣ 1..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... system Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/smart
...... code:loinc SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... system Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/loinc
...... code:snomed SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... system Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/snomed
...... code:icd-10 SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... system Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/icd-10
...... code:icd-11 SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... system Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/icd-11
...... code:icf SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... system Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/icf
...... code:ichi SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... system Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/ichi
...... code:snomed-gps SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... system Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/smart-gps
...... code:atc SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... system Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/atc
..... short Σ 1..1 string Concise definition for space-constrained presentation
..... definition Σ 1..1 markdown Full formal definition as narrative text
..... max ΣC 0..1 string Maximum Cardinality (a number or *)
eld-3: Max SHALL be a number or "*"
..... type ΣC 1..1 Element Data type and Profile for this element
eld-4: Aggregation may only be specified if one of the allowed types for the element is a reference
eld-17: targetProfile is only allowed if the type is Reference or canonical
...... code Σ 1..1 uri Data type or Resource (reference to definition)
Binding: FHIRDefinedType (extensible): Either a resource or a data type, including logical model types.

..... fixed[x] ΣC 0..1 Value must be exactly this
...... fixedBase64Binary base64Binary
...... fixedBoolean boolean
...... fixedCanonical canonical(Any)
...... fixedCode code
...... fixedDate date
...... fixedDateTime dateTime
...... fixedDecimal decimal
...... fixedId id
...... fixedInstant instant
...... fixedInteger integer
...... fixedMarkdown markdown
...... fixedOid oid
...... fixedPositiveInt positiveInt
...... fixedString string
...... fixedTime time
...... fixedUnsignedInt unsignedInt
...... fixedUri uri
...... fixedUrl url
...... fixedUuid uuid
...... fixedAddress Address
...... fixedAge Age
...... fixedAnnotation Annotation
...... fixedAttachment Attachment
...... fixedCodeableConcept CodeableConcept
...... fixedCoding Coding
...... fixedContactPoint ContactPoint
...... fixedCount Count
...... fixedDistance Distance
...... fixedDuration Duration
...... fixedHumanName HumanName
...... fixedIdentifier Identifier
...... fixedMoney Money
...... fixedPeriod Period
...... fixedQuantity Quantity
...... fixedRange Range
...... fixedRatio Ratio
...... fixedReference Reference(Any)
...... fixedSampledData SampledData
...... fixedSignature Signature
...... fixedTiming Timing
...... fixedContactDetail ContactDetail
...... fixedContributor Contributor
...... fixedDataRequirement DataRequirement
...... fixedExpression Expression
...... fixedParameterDefinition ParameterDefinition
...... fixedRelatedArtifact RelatedArtifact
...... fixedTriggerDefinition TriggerDefinition
...... fixedUsageContext UsageContext
...... fixedDosage Dosage
...... fixedMeta Meta
..... pattern[x] ΣC 0..1 Value must have at least these property values
...... patternBase64Binary base64Binary
...... patternBoolean boolean
...... patternCanonical canonical(Any)
...... patternCode code
...... patternDate date
...... patternDateTime dateTime
...... patternDecimal decimal
...... patternId id
...... patternInstant instant
...... patternInteger integer
...... patternMarkdown markdown
...... patternOid oid
...... patternPositiveInt positiveInt
...... patternString string
...... patternTime time
...... patternUnsignedInt unsignedInt
...... patternUri uri
...... patternUrl url
...... patternUuid uuid
...... patternAddress Address
...... patternAge Age
...... patternAnnotation Annotation
...... patternAttachment Attachment
...... patternCodeableConcept CodeableConcept
...... patternCoding Coding
...... patternContactPoint ContactPoint
...... patternCount Count
...... patternDistance Distance
...... patternDuration Duration
...... patternHumanName HumanName
...... patternIdentifier Identifier
...... patternMoney Money
...... patternPeriod Period
...... patternQuantity Quantity
...... patternRange Range
...... patternRatio Ratio
...... patternReference Reference(Any)
...... patternSampledData SampledData
...... patternSignature Signature
...... patternTiming Timing
...... patternContactDetail ContactDetail
...... patternContributor Contributor
...... patternDataRequirement DataRequirement
...... patternExpression Expression
...... patternParameterDefinition ParameterDefinition
...... patternRelatedArtifact RelatedArtifact
...... patternTriggerDefinition TriggerDefinition
...... patternUsageContext UsageContext
...... patternDosage Dosage
...... patternMeta Meta

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet / CodeURI
StructureDefinition.statusrequiredPublicationStatus
http://hl7.org/fhir/ValueSet/publication-status|4.0.1
from the FHIR Standard
StructureDefinition.kindrequiredPattern: logical
http://hl7.org/fhir/ValueSet/structure-definition-kind|4.0.1
from the FHIR Standard
StructureDefinition.typeextensibleFHIRDefinedType
http://hl7.org/fhir/ValueSet/defined-types
from the FHIR Standard
StructureDefinition.differential.element.codeexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:smartexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:loincexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:snomedexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:icd-10exampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:icd-11exampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:icfexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:ichiexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:snomed-gpsexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:atcexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.type.codeextensibleFHIRDefinedType
http://hl7.org/fhir/ValueSet/defined-types
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
dom-2errorStructureDefinitionIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorStructureDefinitionIf 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-4errorStructureDefinitionIf 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-5errorStructureDefinitionIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceStructureDefinitionA 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())
eld-3errorStructureDefinition.differential.element.maxMax SHALL be a number or "*"
: empty() or ($this = '*') or (toInteger() >= 0)
eld-4errorStructureDefinition.differential.element.typeAggregation may only be specified if one of the allowed types for the element is a reference
: aggregation.empty() or (code = 'Reference') or (code = 'canonical')
eld-17errorStructureDefinition.differential.element.typetargetProfile is only allowed if the type is Reference or canonical
: (code='Reference' or code = 'canonical') or targetProfile.empty()
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()
sdf-0warningStructureDefinitionName should be usable as an identifier for the module by machine processing applications such as code generation
: name.matches('[A-Z]([A-Za-z0-9_]){0,254}')
sdf-1errorStructureDefinitionElement paths must be unique unless the structure is a constraint
: derivation = 'constraint' or snapshot.element.select(path).isDistinct()
sdf-4errorStructureDefinitionIf the structure is not abstract, then there SHALL be a baseDefinition
: abstract = true or baseDefinition.exists()
Ensure that the base types are abstract
sdf-5errorStructureDefinitionIf the structure defines an extension then the structure must have context information
: type != 'Extension' or derivation = 'specialization' or (context.exists())
sdf-6errorStructureDefinitionA structure must have either a differential, or a snapshot (or both)
: snapshot.exists() or differential.exists()
sdf-9errorStructureDefinitionIn any snapshot or differential, no label, code or requirements on an element without a "." in the path (e.g. the first element)
: children().element.where(path.contains('.').not()).label.empty() and children().element.where(path.contains('.').not()).code.empty() and children().element.where(path.contains('.').not()).requirements.empty()
Because these 3 fields seem to be have overlapping meaning with the ones in the root of StructureDefinition
sdf-11errorStructureDefinitionIf there's a type, its content must match the path name in the first element of a snapshot
: kind != 'logical' implies snapshot.empty() or snapshot.element.first().path = type
Ensure that the type is not inconsistent with the other information in the structure
sdf-14errorStructureDefinitionAll element definitions must have an id
: snapshot.element.all(id.exists()) and differential.element.all(id.exists())
elements have id
sdf-15errorStructureDefinitionThe first element in a snapshot has no type unless model is a logical model.
: kind!='logical' implies snapshot.element.first().type.empty()
No Type on the root element (snapshot)
sdf-15aerrorStructureDefinitionIf the first element in a differential has no "." in the path and it's not a logical model, it has no type
: (kind!='logical' and differential.element.first().path.contains('.').not()) implies differential.element.first().type.empty()
No Type on the root element (differential)
sdf-16errorStructureDefinitionAll element definitions must have unique ids (snapshot)
: snapshot.element.all(id.exists()) and snapshot.element.id.trace('ids').isDistinct()
element ids need to be unique
sdf-17errorStructureDefinitionAll element definitions must have unique ids (diff)
: differential.element.all(id.exists()) and differential.element.id.trace('ids').isDistinct()
element ids need to be unique
sdf-18errorStructureDefinitionContext Invariants can only be used for extensions
: contextInvariant.exists() implies type = 'Extension'
contextInvariant
sdf-19errorStructureDefinitionFHIR Specification models only use FHIR defined types
: url.startsWith('http://hl7.org/fhir/StructureDefinition') implies (differential.element.type.code.all(matches('^[a-zA-Z0-9]+$') or matches('^http:\\/\\/hl7\\.org\\/fhirpath\\/System\\.[A-Z][A-Za-z]+$')) and snapshot.element.type.code.all(matches('^[a-zA-Z0-9\\.]+$') or matches('^http:\\/\\/hl7\\.org\\/fhirpath\\/System\\.[A-Z][A-Za-z]+$')))
custom types only in logical models
sdf-20errorStructureDefinition.differentialNo slicing on the root element
: element.where(path.contains('.').not()).slicing.empty()
no slicing on root
sdf-21errorStructureDefinitionDefault values can only be specified on specializations
: differential.element.defaultValue.exists() implies (derivation = 'specialization')
no default values on data types or resources
sdf-22errorStructureDefinitionFHIR Specification models never have default values
: url.startsWith('http://hl7.org/fhir/StructureDefinition') implies (snapshot.element.defaultValue.empty() and differential.element.defaultValue.empty())
no default values on data types or resources
sdf-23errorStructureDefinitionNo slice name on root
: (snapshot | differential).element.all(path.contains('.').not() implies sliceName.empty())
no sliceName on root
sdf-8aerrorStructureDefinition.differentialIn any differential, all the elements must start with the StructureDefinition's specified type for non-logical models, or with the same type name for logical models
: (%resource.kind = 'logical' or element.first().path.startsWith(%resource.type)) and (element.tail().empty() or element.tail().all(path.startsWith(%resource.differential.element.first().path.replaceMatches('\\..*','')&'.')))

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. StructureDefinition C 0..* StructureDefinition Structural Definition
sdf-0: Name should be usable as an identifier for the module by machine processing applications such as code generation
sdf-1: Element paths must be unique unless the structure is a constraint
sdf-15a: If the first element in a differential has no "." in the path and it's not a logical model, it has no type
sdf-4: If the structure is not abstract, then there SHALL be a baseDefinition
sdf-5: If the structure defines an extension then the structure must have context information
sdf-6: A structure must have either a differential, or a snapshot (or both)
sdf-9: In any snapshot or differential, no label, code or requirements on an element without a "." in the path (e.g. the first element)
sdf-11: If there's a type, its content must match the path name in the first element of a snapshot
sdf-14: All element definitions must have an id
sdf-15: The first element in a snapshot has no type unless model is a logical model.
sdf-16: All element definitions must have unique ids (snapshot)
sdf-17: All element definitions must have unique ids (diff)
sdf-18: Context Invariants can only be used for extensions
sdf-19: FHIR Specification models only use FHIR defined types
sdf-21: Default values can only be specified on specializations
sdf-22: FHIR Specification models never have default values
sdf-23: No slice name on root
... 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
... contained 0..* Resource Contained, inline Resources
... extension 0..* Extension Additional content defined by implementations
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... url Σ 1..1 uri Canonical identifier for this structure definition, represented as a URI (globally unique)
... identifier Σ 0..* Identifier Additional identifier for the structure definition
... version Σ 0..1 string Business version of the structure definition
... name ΣC 1..1 string Name for this structure definition (computer friendly)
... title Σ 1..1 string Name for this structure definition (human friendly)
... status ?!Σ 1..1 code draft | active | retired | unknown
Binding: PublicationStatus (required): The lifecycle status of an artifact.

... experimental Σ 0..1 boolean For testing purposes, not real usage
... date Σ 0..1 dateTime Date last changed
... publisher Σ 1..1 string Name of the publisher (organization or individual)
... contact Σ 0..* ContactDetail Contact details for the publisher
... description 1..1 markdown Natural language description of the structure definition
... useContext Σ 0..* UsageContext The context that the content is intended to support
... jurisdiction Σ 0..* CodeableConcept Intended jurisdiction for structure definition (if applicable)
Binding: Jurisdiction ValueSet (extensible): Countries and regions within which this artifact is targeted for use.


... purpose 0..1 markdown Why this structure definition is defined
... copyright 0..1 markdown Use and/or publishing restrictions
... keyword Σ 0..* Coding Assist with indexing and finding
Binding: DefinitionUseCodes (extensible): Codes for the meaning of the defined structure (SNOMED CT and LOINC codes, as an example).


... fhirVersion Σ 0..1 code FHIR Version this StructureDefinition targets
Binding: FHIRVersion (required): All published FHIR Versions.

... mapping C 0..* BackboneElement External specification that the content is mapped to
sdf-2: Must have at least a name or a uri (or both)
.... 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
.... identity 1..1 id Internal id when this mapping is used
.... uri C 0..1 uri Identifies what this mapping refers to
.... name C 0..1 string Names what this mapping refers to
.... comment 0..1 string Versions, Issues, Scope limitations etc.
... kind Σ 1..1 code primitive-type | complex-type | resource | logical
Binding: StructureDefinitionKind (required): Defines the type of structure that a definition is describing.


Required Pattern: logical
... abstract Σ 1..1 boolean Whether the structure is abstract
... context ΣC 0..* BackboneElement If an extension, where it can be used in instances
.... 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
.... type Σ 1..1 code fhirpath | element | extension
Binding: ExtensionContextType (required): How an extension context is interpreted.

.... expression Σ 1..1 string Where the extension can be used in instances
... contextInvariant ΣC 0..* string FHIRPath invariants - when the extension can be used
... type ΣC 1..1 uri Type defined or constrained by this structure
Binding: FHIRDefinedType (extensible): Either a resource or a data type, including logical model types.

... baseDefinition ΣC 0..1 canonical(StructureDefinition) Definition that this type is constrained/specialized from
... derivation Σ 0..1 code specialization | constraint - How relates to base definition
Binding: TypeDerivationRule (required): How a type relates to its baseDefinition.

... snapshot C 0..1 BackboneElement Snapshot view of the structure
sdf-3: Each element definition in a snapshot must have a formal definition and cardinalities
sdf-8: All snapshot elements must start with the StructureDefinition's specified type for non-logical models, or with the same type name for logical models
sdf-8b: All snapshot elements must have a base definition
.... 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
.... element C 1..* ElementDefinition Definition of elements in the resource (if no StructureDefinition)
sdf-10: provide either a binding reference or a description (or both)
... differential C 0..1 BackboneElement Differential view of the structure
sdf-20: No slicing on the root element
sdf-8a: In any differential, all the elements must start with the StructureDefinition's specified type for non-logical models, or with the same type name for logical models
.... 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
.... element 1..* ElementDefinition Definition of elements in the resource (if no StructureDefinition)
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... path Σ 1..1 string Path of the element in the hierarchy of elements
..... representation Σ 0..* code xmlAttr | xmlText | typeAttr | cdaText | xhtml
Binding: PropertyRepresentation (required): How a property is represented when serialized.


..... sliceName Σ 0..1 string Name for this particular element (in a set of slices)
..... sliceIsConstraining Σ 0..1 boolean If this slice definition constrains an inherited slice definition (or not)
..... label Σ 0..1 string Name for element to display with or prompt for element
..... Slices for code Σ 1..* Coding Corresponding codes in terminologies
Slice: Unordered, Open by pattern:system
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


...... code:smart SΣ 1..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... 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 Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/smart
....... version Σ 0..1 string Version of the system - if relevant
....... code Σ 0..1 code Symbol in syntax defined by the system
....... display Σ 0..1 string Representation defined by the system
....... userSelected Σ 0..1 boolean If this coding was chosen directly by the user
...... code:loinc SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... 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 Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/loinc
....... version Σ 0..1 string Version of the system - if relevant
....... code Σ 0..1 code Symbol in syntax defined by the system
....... display Σ 0..1 string Representation defined by the system
....... userSelected Σ 0..1 boolean If this coding was chosen directly by the user
...... code:snomed SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... 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 Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/snomed
....... version Σ 0..1 string Version of the system - if relevant
....... code Σ 0..1 code Symbol in syntax defined by the system
....... display Σ 0..1 string Representation defined by the system
....... userSelected Σ 0..1 boolean If this coding was chosen directly by the user
...... code:icd-10 SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... 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 Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/icd-10
....... version Σ 0..1 string Version of the system - if relevant
....... code Σ 0..1 code Symbol in syntax defined by the system
....... display Σ 0..1 string Representation defined by the system
....... userSelected Σ 0..1 boolean If this coding was chosen directly by the user
...... code:icd-11 SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... 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 Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/icd-11
....... version Σ 0..1 string Version of the system - if relevant
....... code Σ 0..1 code Symbol in syntax defined by the system
....... display Σ 0..1 string Representation defined by the system
....... userSelected Σ 0..1 boolean If this coding was chosen directly by the user
...... code:icf SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... 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 Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/icf
....... version Σ 0..1 string Version of the system - if relevant
....... code Σ 0..1 code Symbol in syntax defined by the system
....... display Σ 0..1 string Representation defined by the system
....... userSelected Σ 0..1 boolean If this coding was chosen directly by the user
...... code:ichi SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... 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 Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/ichi
....... version Σ 0..1 string Version of the system - if relevant
....... code Σ 0..1 code Symbol in syntax defined by the system
....... display Σ 0..1 string Representation defined by the system
....... userSelected Σ 0..1 boolean If this coding was chosen directly by the user
...... code:snomed-gps SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... 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 Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/smart-gps
....... version Σ 0..1 string Version of the system - if relevant
....... code Σ 0..1 code Symbol in syntax defined by the system
....... display Σ 0..1 string Representation defined by the system
....... userSelected Σ 0..1 boolean If this coding was chosen directly by the user
...... code:atc SΣ 0..1 Coding Corresponding codes in terminologies
Binding: LOINCCodes (example): Codes that indicate the meaning of a data element.


....... 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 Σ 1..1 uri Identity of the terminology system
Required Pattern: http://who.smart.codes/atc
....... version Σ 0..1 string Version of the system - if relevant
....... code Σ 0..1 code Symbol in syntax defined by the system
....... display Σ 0..1 string Representation defined by the system
....... userSelected Σ 0..1 boolean If this coding was chosen directly by the user
..... slicing ΣC 0..1 Element This element is sliced - slices follow
eld-1: If there are no discriminators, there must be a definition
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
...... discriminator Σ 0..* Element Element values that are used to distinguish the slices
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
....... type Σ 1..1 code value | exists | pattern | type | profile
Binding: DiscriminatorType (required): How an element value is interpreted when discrimination is evaluated.

....... path Σ 1..1 string Path to element value
...... description ΣC 0..1 string Text description of how slicing works (or not)
...... ordered Σ 0..1 boolean If elements must be in same order as slices
...... rules Σ 1..1 code closed | open | openAtEnd
Binding: SlicingRules (required): How slices are interpreted when evaluating an instance.

..... short Σ 1..1 string Concise definition for space-constrained presentation
..... definition Σ 1..1 markdown Full formal definition as narrative text
..... comment Σ 0..1 markdown Comments about the use of this element
..... requirements Σ 0..1 markdown Why this resource has been created
..... alias Σ 0..* string Other names
..... min ΣC 0..1 unsignedInt Minimum Cardinality
..... max ΣC 0..1 string Maximum Cardinality (a number or *)
eld-3: Max SHALL be a number or "*"
..... base Σ 0..1 Element Base definition information for tools
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
...... path Σ 1..1 string Path that identifies the base element
...... min Σ 1..1 unsignedInt Min cardinality of the base element
...... max Σ 1..1 string Max cardinality of the base element
..... contentReference ΣC 0..1 uri Reference to definition of content for the element
..... type ΣC 1..1 Element Data type and Profile for this element
eld-4: Aggregation may only be specified if one of the allowed types for the element is a reference
eld-17: targetProfile is only allowed if the type is Reference or canonical
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
...... code Σ 1..1 uri Data type or Resource (reference to definition)
Binding: FHIRDefinedType (extensible): Either a resource or a data type, including logical model types.

...... profile Σ 0..* canonical(StructureDefinition | ImplementationGuide) Profiles (StructureDefinition or IG) - one must apply
...... targetProfile Σ 0..* canonical(StructureDefinition | ImplementationGuide) Profile (StructureDefinition or IG) on the Reference/canonical target - one must apply
...... aggregation ΣC 0..* code contained | referenced | bundled - how aggregated
Binding: AggregationMode (required): How resource references can be aggregated.


...... versioning Σ 0..1 code either | independent | specific
Binding: ReferenceVersionRules (required): Whether a reference needs to be version specific or version independent, or whether either can be used.

..... defaultValue[x] ΣC 0..1 Specified value if missing from instance
...... defaultValueBase64Binary base64Binary
...... defaultValueBoolean boolean
...... defaultValueCanonical canonical(Any)
...... defaultValueCode code
...... defaultValueDate date
...... defaultValueDateTime dateTime
...... defaultValueDecimal decimal
...... defaultValueId id
...... defaultValueInstant instant
...... defaultValueInteger integer
...... defaultValueMarkdown markdown
...... defaultValueOid oid
...... defaultValuePositiveInt positiveInt
...... defaultValueString string
...... defaultValueTime time
...... defaultValueUnsignedInt unsignedInt
...... defaultValueUri uri
...... defaultValueUrl url
...... defaultValueUuid uuid
...... defaultValueAddress Address
...... defaultValueAge Age
...... defaultValueAnnotation Annotation
...... defaultValueAttachment Attachment
...... defaultValueCodeableConcept CodeableConcept
...... defaultValueCoding Coding
...... defaultValueContactPoint ContactPoint
...... defaultValueCount Count
...... defaultValueDistance Distance
...... defaultValueDuration Duration
...... defaultValueHumanName HumanName
...... defaultValueIdentifier Identifier
...... defaultValueMoney Money
...... defaultValuePeriod Period
...... defaultValueQuantity Quantity
...... defaultValueRange Range
...... defaultValueRatio Ratio
...... defaultValueReference Reference(Any)
...... defaultValueSampledData SampledData
...... defaultValueSignature Signature
...... defaultValueTiming Timing
...... defaultValueContactDetail ContactDetail
...... defaultValueContributor Contributor
...... defaultValueDataRequirement DataRequirement
...... defaultValueExpression Expression
...... defaultValueParameterDefinition ParameterDefinition
...... defaultValueRelatedArtifact RelatedArtifact
...... defaultValueTriggerDefinition TriggerDefinition
...... defaultValueUsageContext UsageContext
...... defaultValueDosage Dosage
...... defaultValueMeta Meta
..... meaningWhenMissing ΣC 0..1 markdown Implicit meaning when this element is missing
..... orderMeaning Σ 0..1 string What the order of the elements means
..... fixed[x] ΣC 0..1 Value must be exactly this
...... fixedBase64Binary base64Binary
...... fixedBoolean boolean
...... fixedCanonical canonical(Any)
...... fixedCode code
...... fixedDate date
...... fixedDateTime dateTime
...... fixedDecimal decimal
...... fixedId id
...... fixedInstant instant
...... fixedInteger integer
...... fixedMarkdown markdown
...... fixedOid oid
...... fixedPositiveInt positiveInt
...... fixedString string
...... fixedTime time
...... fixedUnsignedInt unsignedInt
...... fixedUri uri
...... fixedUrl url
...... fixedUuid uuid
...... fixedAddress Address
...... fixedAge Age
...... fixedAnnotation Annotation
...... fixedAttachment Attachment
...... fixedCodeableConcept CodeableConcept
...... fixedCoding Coding
...... fixedContactPoint ContactPoint
...... fixedCount Count
...... fixedDistance Distance
...... fixedDuration Duration
...... fixedHumanName HumanName
...... fixedIdentifier Identifier
...... fixedMoney Money
...... fixedPeriod Period
...... fixedQuantity Quantity
...... fixedRange Range
...... fixedRatio Ratio
...... fixedReference Reference(Any)
...... fixedSampledData SampledData
...... fixedSignature Signature
...... fixedTiming Timing
...... fixedContactDetail ContactDetail
...... fixedContributor Contributor
...... fixedDataRequirement DataRequirement
...... fixedExpression Expression
...... fixedParameterDefinition ParameterDefinition
...... fixedRelatedArtifact RelatedArtifact
...... fixedTriggerDefinition TriggerDefinition
...... fixedUsageContext UsageContext
...... fixedDosage Dosage
...... fixedMeta Meta
..... pattern[x] ΣC 0..1 Value must have at least these property values
...... patternBase64Binary base64Binary
...... patternBoolean boolean
...... patternCanonical canonical(Any)
...... patternCode code
...... patternDate date
...... patternDateTime dateTime
...... patternDecimal decimal
...... patternId id
...... patternInstant instant
...... patternInteger integer
...... patternMarkdown markdown
...... patternOid oid
...... patternPositiveInt positiveInt
...... patternString string
...... patternTime time
...... patternUnsignedInt unsignedInt
...... patternUri uri
...... patternUrl url
...... patternUuid uuid
...... patternAddress Address
...... patternAge Age
...... patternAnnotation Annotation
...... patternAttachment Attachment
...... patternCodeableConcept CodeableConcept
...... patternCoding Coding
...... patternContactPoint ContactPoint
...... patternCount Count
...... patternDistance Distance
...... patternDuration Duration
...... patternHumanName HumanName
...... patternIdentifier Identifier
...... patternMoney Money
...... patternPeriod Period
...... patternQuantity Quantity
...... patternRange Range
...... patternRatio Ratio
...... patternReference Reference(Any)
...... patternSampledData SampledData
...... patternSignature Signature
...... patternTiming Timing
...... patternContactDetail ContactDetail
...... patternContributor Contributor
...... patternDataRequirement DataRequirement
...... patternExpression Expression
...... patternParameterDefinition ParameterDefinition
...... patternRelatedArtifact RelatedArtifact
...... patternTriggerDefinition TriggerDefinition
...... patternUsageContext UsageContext
...... patternDosage Dosage
...... patternMeta Meta
..... example Σ 0..* Element Example value (as defined for type)
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
...... label Σ 1..1 string Describes the purpose of this example
...... value[x] Σ 1..1 Value of Example (one of allowed types)
....... valueBase64Binary base64Binary
....... valueBoolean boolean
....... valueCanonical canonical(Any)
....... valueCode code
....... valueDate date
....... valueDateTime dateTime
....... valueDecimal decimal
....... valueId id
....... valueInstant instant
....... valueInteger integer
....... valueMarkdown markdown
....... valueOid oid
....... valuePositiveInt positiveInt
....... valueString string
....... valueTime time
....... valueUnsignedInt unsignedInt
....... valueUri uri
....... valueUrl url
....... valueUuid uuid
....... valueAddress Address
....... valueAge Age
....... valueAnnotation Annotation
....... valueAttachment Attachment
....... valueCodeableConcept CodeableConcept
....... valueCoding Coding
....... valueContactPoint ContactPoint
....... valueCount Count
....... valueDistance Distance
....... valueDuration Duration
....... valueHumanName HumanName
....... valueIdentifier Identifier
....... valueMoney Money
....... valuePeriod Period
....... valueQuantity Quantity
....... valueRange Range
....... valueRatio Ratio
....... valueReference Reference(Any)
....... valueSampledData SampledData
....... valueSignature Signature
....... valueTiming Timing
....... valueContactDetail ContactDetail
....... valueContributor Contributor
....... valueDataRequirement DataRequirement
....... valueExpression Expression
....... valueParameterDefinition ParameterDefinition
....... valueRelatedArtifact RelatedArtifact
....... valueTriggerDefinition TriggerDefinition
....... valueUsageContext UsageContext
....... valueDosage Dosage
....... valueMeta Meta
..... minValue[x] Σ 0..1 Minimum Allowed Value (for some types)
...... minValueDate date
...... minValueDateTime dateTime
...... minValueInstant instant
...... minValueTime time
...... minValueDecimal decimal
...... minValueInteger integer
...... minValuePositiveInt positiveInt
...... minValueUnsignedInt unsignedInt
...... minValueQuantity Quantity
..... maxValue[x] Σ 0..1 Maximum Allowed Value (for some types)
...... maxValueDate date
...... maxValueDateTime dateTime
...... maxValueInstant instant
...... maxValueTime time
...... maxValueDecimal decimal
...... maxValueInteger integer
...... maxValuePositiveInt positiveInt
...... maxValueUnsignedInt unsignedInt
...... maxValueQuantity Quantity
..... maxLength Σ 0..1 integer Max length for strings
..... condition Σ 0..* id Reference to invariant about presence
..... constraint ΣC 0..* Element Condition that must evaluate to true
eld-21: Constraints should have an expression or else validators will not be able to enforce them
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
...... key ΣC 1..1 id Target of 'condition' reference above
...... requirements Σ 0..1 string Why this constraint is necessary or appropriate
...... severity Σ 1..1 code error | warning
Binding: ConstraintSeverity (required): SHALL applications comply with this constraint?

...... human Σ 1..1 string Human description of constraint
...... expression Σ 0..1 string FHIRPath expression of constraint
...... xpath Σ 0..1 string XPath expression of constraint
...... source Σ 0..1 canonical(StructureDefinition) Reference to original source of constraint
..... mustSupport Σ 0..1 boolean If the element must be supported
..... isModifier Σ 0..1 boolean If this modifies the meaning of other elements
..... isModifierReason Σ 0..1 string Reason that this element is marked as a modifier
..... isSummary Σ 0..1 boolean Include when _summary = true?
..... binding ΣC 0..1 Element ValueSet details if this is coded
eld-12: ValueSet SHALL start with http:// or https:// or urn:
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
...... strength Σ 1..1 code required | extensible | preferred | example
Binding: BindingStrength (required): Indication of the degree of conformance expectations associated with a binding.

...... description Σ 0..1 string Human explanation of the value set
...... valueSet ΣC 0..1 canonical(ValueSet) Source of value set
..... mapping Σ 0..* Element Map element to another set of definitions
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
...... identity Σ 1..1 id Reference to mapping declaration
...... language Σ 0..1 code Computable language of mapping
Binding: Mime Types (required): The mime type of an attachment. Any valid mime type is allowed.

...... map Σ 1..1 string Details of the mapping
...... comment Σ 0..1 string Comments about the mapping or its use

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet / CodeURI
StructureDefinition.languagepreferredCommonLanguages
Additional Bindings Purpose
AllLanguages Max Binding
http://hl7.org/fhir/ValueSet/languages
from the FHIR Standard
StructureDefinition.statusrequiredPublicationStatus
http://hl7.org/fhir/ValueSet/publication-status|4.0.1
from the FHIR Standard
StructureDefinition.jurisdictionextensibleJurisdiction ValueSet
http://hl7.org/fhir/ValueSet/jurisdiction
from the FHIR Standard
StructureDefinition.keywordextensibleDefinitionUseCodes
http://hl7.org/fhir/ValueSet/definition-use
from the FHIR Standard
StructureDefinition.fhirVersionrequiredFHIRVersion
http://hl7.org/fhir/ValueSet/FHIR-version|4.0.1
from the FHIR Standard
StructureDefinition.kindrequiredPattern: logical
http://hl7.org/fhir/ValueSet/structure-definition-kind|4.0.1
from the FHIR Standard
StructureDefinition.context.typerequiredExtensionContextType
http://hl7.org/fhir/ValueSet/extension-context-type|4.0.1
from the FHIR Standard
StructureDefinition.typeextensibleFHIRDefinedType
http://hl7.org/fhir/ValueSet/defined-types
from the FHIR Standard
StructureDefinition.derivationrequiredTypeDerivationRule
http://hl7.org/fhir/ValueSet/type-derivation-rule|4.0.1
from the FHIR Standard
StructureDefinition.differential.element.representationrequiredPropertyRepresentation
http://hl7.org/fhir/ValueSet/property-representation|4.0.1
from the FHIR Standard
StructureDefinition.differential.element.codeexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:smartexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:loincexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:snomedexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:icd-10exampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:icd-11exampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:icfexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:ichiexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:snomed-gpsexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.code:atcexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
StructureDefinition.differential.element.slicing.discriminator.typerequiredDiscriminatorType
http://hl7.org/fhir/ValueSet/discriminator-type|4.0.1
from the FHIR Standard
StructureDefinition.differential.element.slicing.rulesrequiredSlicingRules
http://hl7.org/fhir/ValueSet/resource-slicing-rules|4.0.1
from the FHIR Standard
StructureDefinition.differential.element.type.codeextensibleFHIRDefinedType
http://hl7.org/fhir/ValueSet/defined-types
from the FHIR Standard
StructureDefinition.differential.element.type.aggregationrequiredAggregationMode
http://hl7.org/fhir/ValueSet/resource-aggregation-mode|4.0.1
from the FHIR Standard
StructureDefinition.differential.element.type.versioningrequiredReferenceVersionRules
http://hl7.org/fhir/ValueSet/reference-version-rules|4.0.1
from the FHIR Standard
StructureDefinition.differential.element.constraint.severityrequiredConstraintSeverity
http://hl7.org/fhir/ValueSet/constraint-severity|4.0.1
from the FHIR Standard
StructureDefinition.differential.element.binding.strengthrequiredBindingStrength
http://hl7.org/fhir/ValueSet/binding-strength|4.0.1
from the FHIR Standard
StructureDefinition.differential.element.mapping.languagerequiredMime Types (a valid code from urn:ietf:bcp:13)
http://hl7.org/fhir/ValueSet/mimetypes|4.0.1
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
dom-2errorStructureDefinitionIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorStructureDefinitionIf 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-4errorStructureDefinitionIf 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-5errorStructureDefinitionIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceStructureDefinitionA resource should have narrative for robust management
: text.`div`.exists()
eld-1errorStructureDefinition.differential.element.slicingIf there are no discriminators, there must be a definition
: discriminator.exists() or description.exists()
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
eld-3errorStructureDefinition.differential.element.maxMax SHALL be a number or "*"
: empty() or ($this = '*') or (toInteger() >= 0)
eld-4errorStructureDefinition.differential.element.typeAggregation may only be specified if one of the allowed types for the element is a reference
: aggregation.empty() or (code = 'Reference') or (code = 'canonical')
eld-12errorStructureDefinition.differential.element.bindingValueSet SHALL start with http:// or https:// or urn:
: valueSet.exists() implies (valueSet.startsWith('http:') or valueSet.startsWith('https') or valueSet.startsWith('urn:'))
eld-17errorStructureDefinition.differential.element.typetargetProfile is only allowed if the type is Reference or canonical
: (code='Reference' or code = 'canonical') or targetProfile.empty()
eld-21warningStructureDefinition.differential.element.constraintConstraints should have an expression or else validators will not be able to enforce them
: expression.exists()
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()
sdf-0warningStructureDefinitionName should be usable as an identifier for the module by machine processing applications such as code generation
: name.matches('[A-Z]([A-Za-z0-9_]){0,254}')
sdf-1errorStructureDefinitionElement paths must be unique unless the structure is a constraint
: derivation = 'constraint' or snapshot.element.select(path).isDistinct()
sdf-15aerrorStructureDefinitionIf the first element in a differential has no "." in the path and it's not a logical model, it has no type
: (kind!='logical' and differential.element.first().path.contains('.').not()) implies differential.element.first().type.empty()
No Type on the root element (differential)
sdf-2errorStructureDefinition.mappingMust have at least a name or a uri (or both)
: name.exists() or uri.exists()
sdf-3errorStructureDefinition.snapshotEach element definition in a snapshot must have a formal definition and cardinalities
: element.all(definition.exists() and min.exists() and max.exists())
sdf-4errorStructureDefinitionIf the structure is not abstract, then there SHALL be a baseDefinition
: abstract = true or baseDefinition.exists()
Ensure that the base types are abstract
sdf-5errorStructureDefinitionIf the structure defines an extension then the structure must have context information
: type != 'Extension' or derivation = 'specialization' or (context.exists())
sdf-6errorStructureDefinitionA structure must have either a differential, or a snapshot (or both)
: snapshot.exists() or differential.exists()
sdf-8errorStructureDefinition.snapshotAll snapshot elements must start with the StructureDefinition's specified type for non-logical models, or with the same type name for logical models
: (%resource.kind = 'logical' or element.first().path = %resource.type) and element.tail().all(path.startsWith(%resource.snapshot.element.first().path&'.'))
sdf-10errorStructureDefinition.snapshot.elementprovide either a binding reference or a description (or both)
: binding.empty() or binding.valueSet.exists() or binding.description.exists()
binding is required
sdf-11errorStructureDefinitionIf there's a type, its content must match the path name in the first element of a snapshot
: kind != 'logical' implies snapshot.empty() or snapshot.element.first().path = type
Ensure that the type is not inconsistent with the other information in the structure
sdf-14errorStructureDefinitionAll element definitions must have an id
: snapshot.element.all(id.exists()) and differential.element.all(id.exists())
elements have id
sdf-15errorStructureDefinitionThe first element in a snapshot has no type unless model is a logical model.
: kind!='logical' implies snapshot.element.first().type.empty()
No Type on the root element (snapshot)
sdf-16errorStructureDefinitionAll element definitions must have unique ids (snapshot)
: snapshot.element.all(id.exists()) and snapshot.element.id.trace('ids').isDistinct()
element ids need to be unique
sdf-17errorStructureDefinitionAll element definitions must have unique ids (diff)
: differential.element.all(id.exists()) and differential.element.id.trace('ids').isDistinct()
element ids need to be unique
sdf-18errorStructureDefinitionContext Invariants can only be used for extensions
: contextInvariant.exists() implies type = 'Extension'
contextInvariant
sdf-8aerrorStructureDefinition.differentialIn any differential, all the elements must start with the StructureDefinition's specified type for non-logical models, or with the same type name for logical models
: (%resource.kind = 'logical' or element.first().path.startsWith(%resource.type)) and (element.tail().empty() or element.tail().all(path.startsWith(%resource.differential.element.first().path.replaceMatches('\\..*','')&'.')))
sdf-9errorStructureDefinitionIn any snapshot or differential, no label, code or requirements on an element without a "." in the path (e.g. the first element)
: children().element.where(path.contains('.').not()).label.empty() and children().element.where(path.contains('.').not()).code.empty() and children().element.where(path.contains('.').not()).requirements.empty()
Because these 3 fields seem to be have overlapping meaning with the ones in the root of StructureDefinition
sdf-19errorStructureDefinitionFHIR Specification models only use FHIR defined types
: url.startsWith('http://hl7.org/fhir/StructureDefinition') implies (differential.element.type.code.all(matches('^[a-zA-Z0-9]+$') or matches('^http:\\/\\/hl7\\.org\\/fhirpath\\/System\\.[A-Z][A-Za-z]+$')) and snapshot.element.type.code.all(matches('^[a-zA-Z0-9\\.]+$') or matches('^http:\\/\\/hl7\\.org\\/fhirpath\\/System\\.[A-Z][A-Za-z]+$')))
custom types only in logical models
sdf-20errorStructureDefinition.differentialNo slicing on the root element
: element.where(path.contains('.').not()).slicing.empty()
no slicing on root
sdf-21errorStructureDefinitionDefault values can only be specified on specializations
: differential.element.defaultValue.exists() implies (derivation = 'specialization')
no default values on data types or resources
sdf-22errorStructureDefinitionFHIR Specification models never have default values
: url.startsWith('http://hl7.org/fhir/StructureDefinition') implies (snapshot.element.defaultValue.empty() and differential.element.defaultValue.empty())
no default values on data types or resources
sdf-23errorStructureDefinitionNo slice name on root
: (snapshot | differential).element.all(path.contains('.').not() implies sliceName.empty())
no sliceName on root
sdf-8berrorStructureDefinition.snapshotAll snapshot elements must have a base definition
: element.all(base.exists())

This structure is derived from StructureDefinition

Summary

Mandatory: 3 elements(14 nested mandatory elements)
Must-Support: 9 elements

Slices

This structure defines the following Slices:

  • The element 1 is sliced based on the value of StructureDefinition.differential.element.code

 

Other representations of profile: CSV, Excel, Schematron