Using CQL with FHIR
1.1.0-cibuild - CIBuild International flag

Using CQL with FHIR, published by HL7 International / Clinical Decision Support. This guide is not an authorized publication; it is the continuous build for version 1.1.0-cibuild built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/cql-ig/ and changes regularly. See the Directory of published versions

Resource Profile: CQL StructureDefinition

Official URL: http://hl7.org/fhir/uv/cql/StructureDefinition/cql-structuredefinition Version: 1.1.0-cibuild
Standards status: Trial-use Maturity Level: 3 Computable Name: CQLStructureDefinition
Other Identifiers: OID:2.16.840.1.113883.4.642.40.37.42.14

Supports configuration of model info information for a StructureDefinition

Usage:

Formal Views of Profile Content

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

NameFlagsCard.TypeDescription & Constraintsdoco
.. StructureDefinition C 1..1 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
... Slices for extension Content/Rules for all slices
.... modelInfo-isIncluded S 0..1 boolean Include in model info
URL: http://hl7.org/fhir/StructureDefinition/cqf-modelInfo-isIncluded
.... modelInfo-isRetrievable S 0..1 boolean Whether the resources can be retrieved
URL: http://hl7.org/fhir/StructureDefinition/cqf-modelInfo-isRetrievable
.... modelInfo-label S 0..1 string What label to use for the class
URL: http://hl7.org/fhir/StructureDefinition/cqf-modelInfo-label
.... primaryCodePath S 0..1 string What default code-valued element
URL: http://hl7.org/fhir/StructureDefinition/cqf-modelInfo-primaryCodePath
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... 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.

... 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.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
NameFlagsCard.TypeDescription & Constraintsdoco
.. StructureDefinition C 1..1 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
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
.... modelInfo-isIncluded S 0..1 boolean Include in model info
URL: http://hl7.org/fhir/StructureDefinition/cqf-modelInfo-isIncluded
.... modelInfo-isRetrievable S 0..1 boolean Whether the resources can be retrieved
URL: http://hl7.org/fhir/StructureDefinition/cqf-modelInfo-isRetrievable
.... modelInfo-label S 0..1 string What label to use for the class
URL: http://hl7.org/fhir/StructureDefinition/cqf-modelInfo-label
.... primaryCodePath S 0..1 string What default code-valued element
URL: http://hl7.org/fhir/StructureDefinition/cqf-modelInfo-primaryCodePath
... 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 Σ 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 Σ 0..1 dateTime Date last changed
... publisher Σ 0..1 string Name of the publisher (organization or individual)
... contact Σ 0..* ContactDetail Contact details for the publisher
... description 0..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.

... 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)

doco Documentation for this format

Terminology Bindings

PathConformanceValueSetURI
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.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 & Constraintsdoco
.. StructureDefinition C 1..1 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
... Slices for extension Content/Rules for all slices
.... modelInfo-isIncluded S 0..1 boolean Include in model info
URL: http://hl7.org/fhir/StructureDefinition/cqf-modelInfo-isIncluded
.... modelInfo-isRetrievable S 0..1 boolean Whether the resources can be retrieved
URL: http://hl7.org/fhir/StructureDefinition/cqf-modelInfo-isRetrievable
.... modelInfo-label S 0..1 string What label to use for the class
URL: http://hl7.org/fhir/StructureDefinition/cqf-modelInfo-label
.... primaryCodePath S 0..1 string What default code-valued element
URL: http://hl7.org/fhir/StructureDefinition/cqf-modelInfo-primaryCodePath
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... 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.

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

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. StructureDefinition C 1..1 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
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
.... modelInfo-isIncluded S 0..1 boolean Include in model info
URL: http://hl7.org/fhir/StructureDefinition/cqf-modelInfo-isIncluded
.... modelInfo-isRetrievable S 0..1 boolean Whether the resources can be retrieved
URL: http://hl7.org/fhir/StructureDefinition/cqf-modelInfo-isRetrievable
.... modelInfo-label S 0..1 string What label to use for the class
URL: http://hl7.org/fhir/StructureDefinition/cqf-modelInfo-label
.... primaryCodePath S 0..1 string What default code-valued element
URL: http://hl7.org/fhir/StructureDefinition/cqf-modelInfo-primaryCodePath
... 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 Σ 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 Σ 0..1 dateTime Date last changed
... publisher Σ 0..1 string Name of the publisher (organization or individual)
... contact Σ 0..* ContactDetail Contact details for the publisher
... description 0..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.

... 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)

doco Documentation for this format

Terminology Bindings

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