Canonical Resource Management Infrastructure Implementation Guide
2.0.0-ballot - STU 2 - Ballot International flag

This page is part of the Canonical Resource Management Infrastructure Implementation Guide (v2.0.0-ballot: STU 2 Ballot) based on FHIR (HL7® FHIR® Standard) R4. This version is a pre-release. The current official version is 1.0.0. For a full list of available versions, see the Directory of published versions

Resource Profile: CRMI Publishable StructureDefinition

Official URL: http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishablestructuredefinition Version: 2.0.0-ballot
Standards status: Trial-use Maturity Level: 3 Computable Name: CRMIPublishableStructureDefinition
Other Identifiers: OID:2.16.840.1.113883.4.642.40.38.42.43

Supports declaration of the StructureDefinition metadata required by HL7 and other organizations that share and publish structure definitions with a focus on the aspects of that metadata that are important for post-publication activities including distribution, inclusion in repositories, consumption, and implementation.

Usages:

You can also check for usages in the FHIR IG Statistics

Formal Views of Profile Content

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

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. StructureDefinition C 1..1 StructureDefinition Structural Definition
Constraints: sdf-0, sdf-1, sdf-15a, sdf-4, sdf-5, sdf-6, sdf-9, sdf-11, sdf-14, sdf-15, sdf-16, sdf-17, sdf-18, sdf-19, sdf-21, sdf-22, sdf-23
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... Slices for extension Content/Rules for all slices
.... extension:usage S 0..1 markdown Describes the clinical usage of the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-usage
.... extension:copyrightLabel S 0..1 string Copyright holder and year(s)
URL: http://hl7.org/fhir/StructureDefinition/artifact-copyrightLabel
.... extension:approvalDate S 0..1 date When resource approved by publisher
URL: http://hl7.org/fhir/StructureDefinition/resource-approvalDate
.... extension:lastReviewDate S 0..1 date Last review date for the resource
URL: http://hl7.org/fhir/StructureDefinition/resource-lastReviewDate
.... extension:effectivePeriod S 0..1 Period The effective date range for the resource
URL: http://hl7.org/fhir/StructureDefinition/resource-effectivePeriod
.... extension:topic S 0..* CodeableConcept E.g. Education, Treatment, Assessment, etc.
URL: http://hl7.org/fhir/StructureDefinition/artifact-topic
Binding: DefinitionTopic (example): Topics associated with the artifact
.... extension:author S 0..* ContactDetail Who authored the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-author
.... extension:editor S 0..* ContactDetail Who edited the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-editor
.... extension:reviewer S 0..* ContactDetail Who reviewed the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-reviewer
.... extension:endorser S 0..* ContactDetail Who endorsed the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-endorser
.... extension:relatedArtifact S 0..* (Complex) Additional documentation, citations, etc.
URL: http://hl7.org/fhir/StructureDefinition/artifact-relatedArtifact
..... Slices for extension Content/Rules for all slices
...... extension:publicationDate 0..1 date Publication date of referenced artifact
URL: http://hl7.org/fhir/StructureDefinition/cqf-publicationDate
...... extension:publicationStatus 0..1 code Publication status of referenced artifact
URL: http://hl7.org/fhir/StructureDefinition/cqf-publicationStatus
Binding: PublicationStatus (required): The lifecycle status of a reference artifact
..... url 1..1 uri "http://hl7.org/fhir/StructureDefinition/artifact-relatedArtifact"
..... value[x] 1..1 RelatedArtifact Value of extension
.... extension:artifactComment 0..* (Complex) Additional documentation, review, or usage guidance
URL: http://hl7.org/fhir/StructureDefinition/cqf-artifactComment
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... identifier SΣ 0..* Identifier Additional identifier for the structure definition
... name ΣC 1..1 string Name for this structure definition (computer friendly)
... status ?!Σ 1..1 code draft | active | retired | unknown
Binding: PublicationStatus (required): The lifecycle status of an artifact.
... date SΣ 1..1 dateTime Date last changed
... contact SΣ 0..* ContactDetail Contact details for the publisher
... useContext SΣ 0..* UsageContext The context that the content is intended to support
... jurisdiction SΣ 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 S 0..1 markdown Why this structure definition is defined
... copyright S 0..1 markdown Use and/or publishing restrictions
... kind Σ 1..1 code primitive-type | complex-type | resource | logical
Binding: StructureDefinitionKind (required): Defines the type of structure that a definition is describing.
... 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.

doco Documentation for this format

Terminology Bindings

PathConformanceValueSetURI
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.kindrequiredStructureDefinitionKind
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

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())
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-6errorStructureDefinitionA structure must have either a differential, or a snapshot (or both)
: snapshot.exists() or differential.exists()
sdf-14errorStructureDefinitionAll element definitions must have an id
: snapshot.element.all(id.exists()) and differential.element.all(id.exists())
elements have id
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-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-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-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-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-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

This structure is derived from StructureDefinition

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. StructureDefinition 1..1 StructureDefinition Structural Definition
... Slices for extension Content/Rules for all slices
.... extension:usage S 0..1 markdown Describes the clinical usage of the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-usage
.... extension:copyrightLabel S 0..1 string Copyright holder and year(s)
URL: http://hl7.org/fhir/StructureDefinition/artifact-copyrightLabel
.... extension:approvalDate S 0..1 date When resource approved by publisher
URL: http://hl7.org/fhir/StructureDefinition/resource-approvalDate
.... extension:lastReviewDate S 0..1 date Last review date for the resource
URL: http://hl7.org/fhir/StructureDefinition/resource-lastReviewDate
.... extension:effectivePeriod S 0..1 Period The effective date range for the resource
URL: http://hl7.org/fhir/StructureDefinition/resource-effectivePeriod
.... extension:topic S 0..* CodeableConcept E.g. Education, Treatment, Assessment, etc.
URL: http://hl7.org/fhir/StructureDefinition/artifact-topic
Binding: DefinitionTopic (example): Topics associated with the artifact
.... extension:author S 0..* ContactDetail Who authored the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-author
.... extension:editor S 0..* ContactDetail Who edited the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-editor
.... extension:reviewer S 0..* ContactDetail Who reviewed the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-reviewer
.... extension:endorser S 0..* ContactDetail Who endorsed the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-endorser
.... extension:relatedArtifact S 0..* (Complex) Additional documentation, citations, etc.
URL: http://hl7.org/fhir/StructureDefinition/artifact-relatedArtifact
..... Slices for extension Content/Rules for all slices
...... extension:publicationDate 0..1 date Publication date of referenced artifact
URL: http://hl7.org/fhir/StructureDefinition/cqf-publicationDate
...... extension:publicationStatus 0..1 code Publication status of referenced artifact
URL: http://hl7.org/fhir/StructureDefinition/cqf-publicationStatus
Binding: PublicationStatus (required): The lifecycle status of a reference artifact
.... extension:artifactComment 0..* (Complex) Additional documentation, review, or usage guidance
URL: http://hl7.org/fhir/StructureDefinition/cqf-artifactComment
... identifier S 0..* Identifier Additional identifier for the structure definition
... date S 1..1 dateTime Date last changed
... useContext S 0..* UsageContext The context that the content is intended to support
... jurisdiction S 0..* CodeableConcept Intended jurisdiction for structure definition (if applicable)
... purpose S 0..1 markdown Why this structure definition is defined
... copyright S 0..1 markdown Use and/or publishing restrictions

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. StructureDefinition C 1..1 StructureDefinition Structural Definition
Constraints: sdf-0, sdf-1, sdf-15a, sdf-4, sdf-5, sdf-6, sdf-9, sdf-11, sdf-14, sdf-15, sdf-16, sdf-17, sdf-18, sdf-19, sdf-21, sdf-22, sdf-23
... id Σ 0..1 id Logical id of this artifact
... meta Σ 0..1 Meta Metadata about the resource
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... language 0..1 code Language of the resource content
Binding: CommonLanguages (preferred): A human language.
Additional BindingsPurpose
AllLanguages Max Binding
... text 0..1 Narrative Text summary of the resource, for human interpretation
This profile does not constrain the narrative in regard to content, language, or traceability to data elements
... contained 0..* Resource Contained, inline Resources
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:usage S 0..1 markdown Describes the clinical usage of the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-usage
.... extension:copyrightLabel S 0..1 string Copyright holder and year(s)
URL: http://hl7.org/fhir/StructureDefinition/artifact-copyrightLabel
.... extension:approvalDate S 0..1 date When resource approved by publisher
URL: http://hl7.org/fhir/StructureDefinition/resource-approvalDate
.... extension:lastReviewDate S 0..1 date Last review date for the resource
URL: http://hl7.org/fhir/StructureDefinition/resource-lastReviewDate
.... extension:effectivePeriod S 0..1 Period The effective date range for the resource
URL: http://hl7.org/fhir/StructureDefinition/resource-effectivePeriod
.... extension:topic S 0..* CodeableConcept E.g. Education, Treatment, Assessment, etc.
URL: http://hl7.org/fhir/StructureDefinition/artifact-topic
Binding: DefinitionTopic (example): Topics associated with the artifact
.... extension:author S 0..* ContactDetail Who authored the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-author
.... extension:editor S 0..* ContactDetail Who edited the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-editor
.... extension:reviewer S 0..* ContactDetail Who reviewed the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-reviewer
.... extension:endorser S 0..* ContactDetail Who endorsed the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-endorser
.... extension:relatedArtifact S 0..* (Complex) Additional documentation, citations, etc.
URL: http://hl7.org/fhir/StructureDefinition/artifact-relatedArtifact
..... id 0..1 id Unique id for inter-element referencing
..... Slices for extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
...... extension:publicationDate 0..1 date Publication date of referenced artifact
URL: http://hl7.org/fhir/StructureDefinition/cqf-publicationDate
...... extension:publicationStatus 0..1 code Publication status of referenced artifact
URL: http://hl7.org/fhir/StructureDefinition/cqf-publicationStatus
Binding: PublicationStatus (required): The lifecycle status of a reference artifact
..... url 1..1 uri "http://hl7.org/fhir/StructureDefinition/artifact-relatedArtifact"
..... value[x] 1..1 RelatedArtifact Value of extension
.... extension:artifactComment 0..* (Complex) Additional documentation, review, or usage guidance
URL: http://hl7.org/fhir/StructureDefinition/cqf-artifactComment
... 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 SΣ 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 Σ 0..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 SΣ 1..1 dateTime Date last changed
... publisher Σ 0..1 string Name of the publisher (organization or individual)
... contact SΣ 0..* ContactDetail Contact details for the publisher
... description 0..1 markdown Natural language description of the structure definition
... useContext SΣ 0..* UsageContext The context that the content is intended to support
... jurisdiction SΣ 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 S 0..1 markdown Why this structure definition is defined
... copyright S 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
Constraints: sdf-2
.... 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.
... 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
Constraints: sdf-3, sdf-8, sdf-8b
.... 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)
Constraints: sdf-10
... differential C 0..1 BackboneElement Differential view of the structure
Constraints: sdf-20, sdf-8a
.... 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)

doco Documentation for this format

Terminology Bindings

PathConformanceValueSetURI
StructureDefinition.languagepreferredCommonLanguages
http://hl7.org/fhir/ValueSet/languages
From the FHIR Standard
Additional Bindings Purpose
AllLanguages Max Binding
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.kindrequiredStructureDefinitionKind
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

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())
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-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-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-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('\\..*','')&'.')))
sdf-8berrorStructureDefinition.snapshotAll snapshot elements must have a base definition
: element.all(base.exists())

Key Elements View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. StructureDefinition C 1..1 StructureDefinition Structural Definition
Constraints: sdf-0, sdf-1, sdf-15a, sdf-4, sdf-5, sdf-6, sdf-9, sdf-11, sdf-14, sdf-15, sdf-16, sdf-17, sdf-18, sdf-19, sdf-21, sdf-22, sdf-23
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... Slices for extension Content/Rules for all slices
.... extension:usage S 0..1 markdown Describes the clinical usage of the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-usage
.... extension:copyrightLabel S 0..1 string Copyright holder and year(s)
URL: http://hl7.org/fhir/StructureDefinition/artifact-copyrightLabel
.... extension:approvalDate S 0..1 date When resource approved by publisher
URL: http://hl7.org/fhir/StructureDefinition/resource-approvalDate
.... extension:lastReviewDate S 0..1 date Last review date for the resource
URL: http://hl7.org/fhir/StructureDefinition/resource-lastReviewDate
.... extension:effectivePeriod S 0..1 Period The effective date range for the resource
URL: http://hl7.org/fhir/StructureDefinition/resource-effectivePeriod
.... extension:topic S 0..* CodeableConcept E.g. Education, Treatment, Assessment, etc.
URL: http://hl7.org/fhir/StructureDefinition/artifact-topic
Binding: DefinitionTopic (example): Topics associated with the artifact
.... extension:author S 0..* ContactDetail Who authored the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-author
.... extension:editor S 0..* ContactDetail Who edited the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-editor
.... extension:reviewer S 0..* ContactDetail Who reviewed the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-reviewer
.... extension:endorser S 0..* ContactDetail Who endorsed the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-endorser
.... extension:relatedArtifact S 0..* (Complex) Additional documentation, citations, etc.
URL: http://hl7.org/fhir/StructureDefinition/artifact-relatedArtifact
..... Slices for extension Content/Rules for all slices
...... extension:publicationDate 0..1 date Publication date of referenced artifact
URL: http://hl7.org/fhir/StructureDefinition/cqf-publicationDate
...... extension:publicationStatus 0..1 code Publication status of referenced artifact
URL: http://hl7.org/fhir/StructureDefinition/cqf-publicationStatus
Binding: PublicationStatus (required): The lifecycle status of a reference artifact
..... url 1..1 uri "http://hl7.org/fhir/StructureDefinition/artifact-relatedArtifact"
..... value[x] 1..1 RelatedArtifact Value of extension
.... extension:artifactComment 0..* (Complex) Additional documentation, review, or usage guidance
URL: http://hl7.org/fhir/StructureDefinition/cqf-artifactComment
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... identifier SΣ 0..* Identifier Additional identifier for the structure definition
... name ΣC 1..1 string Name for this structure definition (computer friendly)
... status ?!Σ 1..1 code draft | active | retired | unknown
Binding: PublicationStatus (required): The lifecycle status of an artifact.
... date SΣ 1..1 dateTime Date last changed
... contact SΣ 0..* ContactDetail Contact details for the publisher
... useContext SΣ 0..* UsageContext The context that the content is intended to support
... jurisdiction SΣ 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 S 0..1 markdown Why this structure definition is defined
... copyright S 0..1 markdown Use and/or publishing restrictions
... kind Σ 1..1 code primitive-type | complex-type | resource | logical
Binding: StructureDefinitionKind (required): Defines the type of structure that a definition is describing.
... 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.

doco Documentation for this format

Terminology Bindings

PathConformanceValueSetURI
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.kindrequiredStructureDefinitionKind
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

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())
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-6errorStructureDefinitionA structure must have either a differential, or a snapshot (or both)
: snapshot.exists() or differential.exists()
sdf-14errorStructureDefinitionAll element definitions must have an id
: snapshot.element.all(id.exists()) and differential.element.all(id.exists())
elements have id
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-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-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-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-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-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

Differential View

This structure is derived from StructureDefinition

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. StructureDefinition 1..1 StructureDefinition Structural Definition
... Slices for extension Content/Rules for all slices
.... extension:usage S 0..1 markdown Describes the clinical usage of the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-usage
.... extension:copyrightLabel S 0..1 string Copyright holder and year(s)
URL: http://hl7.org/fhir/StructureDefinition/artifact-copyrightLabel
.... extension:approvalDate S 0..1 date When resource approved by publisher
URL: http://hl7.org/fhir/StructureDefinition/resource-approvalDate
.... extension:lastReviewDate S 0..1 date Last review date for the resource
URL: http://hl7.org/fhir/StructureDefinition/resource-lastReviewDate
.... extension:effectivePeriod S 0..1 Period The effective date range for the resource
URL: http://hl7.org/fhir/StructureDefinition/resource-effectivePeriod
.... extension:topic S 0..* CodeableConcept E.g. Education, Treatment, Assessment, etc.
URL: http://hl7.org/fhir/StructureDefinition/artifact-topic
Binding: DefinitionTopic (example): Topics associated with the artifact
.... extension:author S 0..* ContactDetail Who authored the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-author
.... extension:editor S 0..* ContactDetail Who edited the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-editor
.... extension:reviewer S 0..* ContactDetail Who reviewed the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-reviewer
.... extension:endorser S 0..* ContactDetail Who endorsed the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-endorser
.... extension:relatedArtifact S 0..* (Complex) Additional documentation, citations, etc.
URL: http://hl7.org/fhir/StructureDefinition/artifact-relatedArtifact
..... Slices for extension Content/Rules for all slices
...... extension:publicationDate 0..1 date Publication date of referenced artifact
URL: http://hl7.org/fhir/StructureDefinition/cqf-publicationDate
...... extension:publicationStatus 0..1 code Publication status of referenced artifact
URL: http://hl7.org/fhir/StructureDefinition/cqf-publicationStatus
Binding: PublicationStatus (required): The lifecycle status of a reference artifact
.... extension:artifactComment 0..* (Complex) Additional documentation, review, or usage guidance
URL: http://hl7.org/fhir/StructureDefinition/cqf-artifactComment
... identifier S 0..* Identifier Additional identifier for the structure definition
... date S 1..1 dateTime Date last changed
... useContext S 0..* UsageContext The context that the content is intended to support
... jurisdiction S 0..* CodeableConcept Intended jurisdiction for structure definition (if applicable)
... purpose S 0..1 markdown Why this structure definition is defined
... copyright S 0..1 markdown Use and/or publishing restrictions

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. StructureDefinition C 1..1 StructureDefinition Structural Definition
Constraints: sdf-0, sdf-1, sdf-15a, sdf-4, sdf-5, sdf-6, sdf-9, sdf-11, sdf-14, sdf-15, sdf-16, sdf-17, sdf-18, sdf-19, sdf-21, sdf-22, sdf-23
... id Σ 0..1 id Logical id of this artifact
... meta Σ 0..1 Meta Metadata about the resource
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... language 0..1 code Language of the resource content
Binding: CommonLanguages (preferred): A human language.
Additional BindingsPurpose
AllLanguages Max Binding
... text 0..1 Narrative Text summary of the resource, for human interpretation
This profile does not constrain the narrative in regard to content, language, or traceability to data elements
... contained 0..* Resource Contained, inline Resources
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:usage S 0..1 markdown Describes the clinical usage of the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-usage
.... extension:copyrightLabel S 0..1 string Copyright holder and year(s)
URL: http://hl7.org/fhir/StructureDefinition/artifact-copyrightLabel
.... extension:approvalDate S 0..1 date When resource approved by publisher
URL: http://hl7.org/fhir/StructureDefinition/resource-approvalDate
.... extension:lastReviewDate S 0..1 date Last review date for the resource
URL: http://hl7.org/fhir/StructureDefinition/resource-lastReviewDate
.... extension:effectivePeriod S 0..1 Period The effective date range for the resource
URL: http://hl7.org/fhir/StructureDefinition/resource-effectivePeriod
.... extension:topic S 0..* CodeableConcept E.g. Education, Treatment, Assessment, etc.
URL: http://hl7.org/fhir/StructureDefinition/artifact-topic
Binding: DefinitionTopic (example): Topics associated with the artifact
.... extension:author S 0..* ContactDetail Who authored the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-author
.... extension:editor S 0..* ContactDetail Who edited the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-editor
.... extension:reviewer S 0..* ContactDetail Who reviewed the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-reviewer
.... extension:endorser S 0..* ContactDetail Who endorsed the artifact
URL: http://hl7.org/fhir/StructureDefinition/artifact-endorser
.... extension:relatedArtifact S 0..* (Complex) Additional documentation, citations, etc.
URL: http://hl7.org/fhir/StructureDefinition/artifact-relatedArtifact
..... id 0..1 id Unique id for inter-element referencing
..... Slices for extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
...... extension:publicationDate 0..1 date Publication date of referenced artifact
URL: http://hl7.org/fhir/StructureDefinition/cqf-publicationDate
...... extension:publicationStatus 0..1 code Publication status of referenced artifact
URL: http://hl7.org/fhir/StructureDefinition/cqf-publicationStatus
Binding: PublicationStatus (required): The lifecycle status of a reference artifact
..... url 1..1 uri "http://hl7.org/fhir/StructureDefinition/artifact-relatedArtifact"
..... value[x] 1..1 RelatedArtifact Value of extension
.... extension:artifactComment 0..* (Complex) Additional documentation, review, or usage guidance
URL: http://hl7.org/fhir/StructureDefinition/cqf-artifactComment
... 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 SΣ 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 Σ 0..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 SΣ 1..1 dateTime Date last changed
... publisher Σ 0..1 string Name of the publisher (organization or individual)
... contact SΣ 0..* ContactDetail Contact details for the publisher
... description 0..1 markdown Natural language description of the structure definition
... useContext SΣ 0..* UsageContext The context that the content is intended to support
... jurisdiction SΣ 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 S 0..1 markdown Why this structure definition is defined
... copyright S 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
Constraints: sdf-2
.... 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.
... 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
Constraints: sdf-3, sdf-8, sdf-8b
.... 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)
Constraints: sdf-10
... differential C 0..1 BackboneElement Differential view of the structure
Constraints: sdf-20, sdf-8a
.... 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)

doco Documentation for this format

Terminology Bindings

PathConformanceValueSetURI
StructureDefinition.languagepreferredCommonLanguages
http://hl7.org/fhir/ValueSet/languages
From the FHIR Standard
Additional Bindings Purpose
AllLanguages Max Binding
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.kindrequiredStructureDefinitionKind
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

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())
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-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-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-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('\\..*','')&'.')))
sdf-8berrorStructureDefinition.snapshotAll snapshot elements must have a base definition
: element.all(base.exists())

 

Other representations of profile: CSV, Excel, Schematron