This
page
is
part
of
the
FHIR
Specification
(v3.0.2:
STU
3).
(v3.3.0:
R4
Ballot
2).
The
current
version
which
supercedes
this
version
is
5.0.0
.
For
a
full
list
of
available
versions,
see
the
Directory
of
published
versions
.
Page
versions:
R5
R4B
R4
R3
R2
FHIR
Infrastructure
Work
Group
|
Maturity Level : 5 |
|
Compartments : Not linked to any defined compartments |
Normative Candidate Note: This page is candidate normative content for R4 in the Conformance Package . Once normative, it will lose it's Maturity Level, and breaking changes will no longer be made.
A definition of a FHIR structure. This resource is used to describe the underlying resources, data types defined in FHIR, and also for describing extensions and constraints on resources and data types.
The StructureDefinition resource describes a structure - a set of data element definitions, and their associated rules of usage. These structure definitions are used to describe both the content defined in the FHIR specification itself - Resources, data types, the underlying infrastructural types, and also are used to describe how these structures are used in implementations. This allows the definitions of the structures to be shared and published through repositories of structure definitions, compared with each other, and used as the basis for code, report and UI generation.
Note that as part of the specification itself, a full set of structure definitions for all resources and data types is published.
Implementers should be familiar with the background and concepts described in Profiling FHIR before working with this resource.
The
StructureDefinition
resource
has
a
set
of
metadata
that
is
mostly
shared
with
the
Value
Set
,
CapabilityStatement
and
other
infrastructure
resources.
The
metadata
describes
the
structure,
structure
and
helps
find
the
structure
when
registered
in
profile
repositories.
| url | The identifier that is used to identify this structure when it is referenced in a specification, model, design or an instance. This URL is where the structure can be accessed |
| identifier | Other identifiers that are used to identify this structure |
| version |
The identifier that is used to identify this version of the structure when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the structure author manually and the value should be a timestamp. Note that there may be multiple resource versions of the structure that have this same identifier. The resource will have updates that create new versions for technical reasons, whereas the stated version number needs to be under the author's control |
| name | A Computer=ready name (e.g. a token) that identifies the structure - suitable for code generation |
| title | A free text natural language name identifying the structure |
| publisher |
Details
of
the
individual
or
organization
who
accepts
responsibility
for
publishing
the
structure.
This
helps
establish
the
|
| telecom | Contact details to assist a user in finding and communicating with the publisher |
| description | A free text natural language description of the structure and its use |
| requirements | The Scope and Usage that this structure was created to meet |
| code | A set of terms from external terminologies that may be used to assist with indexing and searching of profiles |
| status | The status of the structure allows filtering of profiles that are appropriate for use vs. not. See the Status Codes |
| experimental | This structure was authored for testing purposes (or education/evaluation/marketing), and is not intended for genuine usage |
| date | The date this version of the structure was published |
| fhirVersion | The version of the FHIR specification on which this structure is based. It is not necessary to specify the version, as most profiles are valid across multiple versions, and the validity of a structure against a particular version of FHIR can easily be checked by tooling. |
| type | The type the structure describes. |
| contextType | For extensions, the types of contexts in which the extension can be used (resources, datatypes, or extensions). |
| context | For extensions, the specific types of resources or data types on which the extension can be used. |
Notes:
This
resource
is
referenced
by
CapabilityStatement
,
GraphDefinition
,
ImplementationGuide
,
MessageDefinition
and
,
OperationDefinition
,
StructureMap
and
TerminologyCapabilities
Structure
| Name | Flags | Card. | Type |
Description
&
Constraints
|
|---|---|---|---|---|
|
I N | DomainResource |
Structural
Definition
+ In any snapshot or differential, no label, code or requirements on + Custom types can only be used in logical models + All element definitions must have unique ids (snapshot) + Context Invariants can only be used for extensions + All element definitions must have unique ids (diff) + element.base cannot appear if there is no base on the structure definition + If there's a type, its content must match the path name in the first element of a snapshot + All element definitions must have an id + Element paths must be unique unless the structure is a constraint + Default values can only be specified on logical models + If the structure describes a base Resource or Type, the URL has to start with + A structure must have either a differential, or a snapshot (or both) + If the structure defines an extension then the structure must have context information + If the structure is not abstract, then there SHALL be a baseDefinition Elements defined in Ancestors: id , meta , implicitRules , language , text , contained , extension , modifierExtension |
|
|
Σ | 1..1 | uri |
|
|
Σ | 0..* | Identifier |
Additional
identifier
for
the
structure
definition
|
|
Σ | 0..1 | string | Business version of the structure definition |
|
Σ | 1..1 | string | Name for this structure definition (computer friendly) |
|
Σ | 0..1 | string | Name for this structure definition (human friendly) |
|
?! Σ | 1..1 | code |
draft
|
active
|
retired
|
unknown
PublicationStatus ( Required ) |
|
?! Σ | 0..1 | boolean | For testing purposes, not real usage |
|
Σ | 0..1 | dateTime |
Date
|
|
Σ | 0..1 | string | Name of the publisher (organization or individual) |
|
Σ | 0..* | ContactDetail |
Contact
details
for
the
publisher
|
|
0..1 | markdown | Natural language description of the structure definition | |
|
Σ TU | 0..* | UsageContext |
|
|
Σ | 0..* | CodeableConcept |
Intended
jurisdiction
for
structure
definition
(if
applicable)
Jurisdiction ValueSet ( Extensible ) |
|
0..1 | markdown | Why this structure definition is defined | |
|
0..1 | markdown | Use and/or publishing restrictions | |
|
Σ | 0..* | Coding |
Assist
with
indexing
and
finding
Structure Definition Codes ( Example ) |
|
Σ | 0..1 | id |
FHIR
Version
this
StructureDefinition
targets
All Published FHIR versions ( Required ) |
|
I | 0..* | BackboneElement |
External
specification
that
the
content
is
mapped
to
+ Must have at least a name or a uri (or both) |
|
1..1 | id | Internal id when this mapping is used | |
|
I | 0..1 | uri | Identifies what this mapping refers to |
|
I | 0..1 | string | Names what this mapping refers to |
|
0..1 | string | Versions, Issues, Scope limitations etc. | |
|
Σ | 1..1 | code |
primitive-type
|
complex-type
|
resource
|
logical
StructureDefinitionKind ( Required ) |
|
Σ | 1..1 | boolean | Whether the structure is abstract |
|
Σ I |
| BackboneElement |
If
an
extension,
where
it
can
be
used
in
instances
|
![]() ![]() ![]() | Σ | 1..1 | code |
|
|
Σ
|
|
string | Where the extension can be used in instances |
|
Σ I | 0..* | string |
FHIRPath
invariants
-
when
the
extension
can
be
used
|
|
Σ I | 1..1 |
|
Type
defined
or
constrained
by
this
structure
FHIRDefinedType ( Extensible ) |
|
Σ I | 0..1 |
|
Definition that this type is constrained/specialized from |
|
Σ
|
0..1 | code |
specialization
|
constraint
-
How
relates
to
base
definition
TypeDerivationRule ( Required ) |
|
I | 0..1 | BackboneElement |
Snapshot
view
of
the
structure
+ The first element in a snapshot has no type + In any snapshot, all the elements must be in the specified + Each element definition in a snapshot must have a formal definition and cardinalities |
|
I | 1..* | ElementDefinition |
Definition
of
elements
in
the
resource
(if
no
StructureDefinition)
+ provide either a binding reference or a description (or both) |
|
I | 0..1 | BackboneElement |
Differential
view
of
the
structure
+ If the first element in a differential has no + No slicing on the root element + In any differential, all the elements must be in the specified type |
|
1..* | ElementDefinition |
Definition
of
elements
in
the
resource
(if
no
StructureDefinition)
|
|
Documentation
for
this
format
|
||||
UML Diagram ( Legend )
XML Template
<<StructureDefinition xmlns="http://hl7.org/fhir"><!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension -->
<<url value="[uri]"/><!-- 1..1 Canonical identifier for this structure definition, represented as a URI (globally unique) --> <identifier><!-- 0..* Identifier Additional identifier for the structure definition --></identifier>< < < < < < <<version value="[string]"/><!-- 0..1 Business version of the structure definition --> <name value="[string]"/><!-- 1..1 Name for this structure definition (computer friendly) --> <title value="[string]"/><!-- 0..1 Name for this structure definition (human friendly) --> <status value="[code]"/><!-- 1..1 draft | active | retired | unknown --> <experimental value="[boolean]"/><!-- 0..1 For testing purposes, not real usage --> <date value="[dateTime]"/><!-- 0..1 Date last changed --> <publisher value="[string]"/><!-- 0..1 Name of the publisher (organization or individual) --> <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact>< <</useContext><description value="[markdown]"/><!-- 0..1 Natural language description of the structure definition --> <useContext><!-- 0..* UsageContext The context that the content is intended to support --></useContext> <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for structure definition (if applicable) --></jurisdiction>< <<purpose value="[markdown]"/><!-- 0..1 Why this structure definition is defined --> <copyright value="[markdown]"/><!-- 0..1 Use and/or publishing restrictions --> <keyword><!-- 0..* Coding Assist with indexing and finding --></keyword><<fhirVersion value="[id]"/><!-- 0..1 FHIR Version this StructureDefinition targets --> <mapping> <!-- 0..* External specification that the content is mapped to -->< < < <<identity value="[id]"/><!-- 1..1 Internal id when this mapping is used --> <uri value="[uri]"/><!--0..1 Identifies what this mapping refers to --> <name value="[string]"/><!--
0..1 Names what this mapping refers to --> <comment value="[string]"/><!-- 0..1 Versions, Issues, Scope limitations etc. --> </mapping>
< < < < < < < < <<kind value="[code]"/><!-- 1..1 primitive-type | complex-type | resource | logical --> <abstract value="[boolean]"/><!-- 1..1 Whether the structure is abstract --> <context> <!--0..* If an extension, where it can be used in instances --> <type value="[code]"/><!-- 1..1 fhirpath | element | extension --> <expression value="[string]"/><!-- 1..1 Where the extension can be used in instances --> </context> <contextInvariant value="[string]"/><!--
0..* FHIRPath invariants - when the extension can be used --> <type value="[uri]"/><!--
1..1 Type defined or constrained by this structure --> <baseDefinition><!--
0..1 canonical(StructureDefinition) Definition that this type is constrained/specialized from --></baseDefinition> <derivation value="[code]"/><!-- 0..1 specialization | constraint - How relates to base definition --> <snapshot> <!--
0..1 Snapshot view of the structure --> <element><!--
1..* ElementDefinition Definition of elements in the resource (if no StructureDefinition) --></element> </snapshot> <differential> <!--
0..1 Differential view of the structure --> <element><!-- 1..* ElementDefinition Definition of elements in the resource (if no StructureDefinition) --></element> </differential> </StructureDefinition>
JSON Template
{
"resourceType" : "",
"resourceType" : "StructureDefinition",
// from Resource: id, meta, implicitRules, and language
// from DomainResource: text, contained, extension, and modifierExtension
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"url" : "<uri>", // R! Canonical identifier for this structure definition, represented as a URI (globally unique)
"identifier" : [{ Identifier }], // Additional identifier for the structure definition
"version" : "<string>", // Business version of the structure definition
"name" : "<string>", // R! Name for this structure definition (computer friendly)
"title" : "<string>", // Name for this structure definition (human friendly)
"status" : "<code>", // R! draft | active | retired | unknown
"experimental" : <boolean>, // For testing purposes, not real usage
"date" : "<dateTime>", // Date last changed
"publisher" : "<string>", // Name of the publisher (organization or individual)
"contact" : [{ ContactDetail }], // Contact details for the publisher
"description" : "<markdown>", // Natural language description of the structure definition
"useContext" : [{ UsageContext }], // The context that the content is intended to support
"jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for structure definition (if applicable)
"purpose" : "<markdown>", // Why this structure definition is defined
"copyright" : "<markdown>", // Use and/or publishing restrictions
"keyword" : [{ Coding }], // Assist with indexing and finding
"fhirVersion" : "<id>", // FHIR Version this StructureDefinition targets
"mapping" : [{ // External specification that the content is mapped to
"identity" : "<id>", // R! Internal id when this mapping is used
"uri" : "<uri>", // C? Identifies what this mapping refers to
"name" : "<string>", // C? Names what this mapping refers to
"comment" : "<string>" // Versions, Issues, Scope limitations etc.
}],
"
"
"
"
"
"
"
"
"
"
"kind" : "<code>", // R! primitive-type | complex-type | resource | logical
"abstract" : <boolean>, // R! Whether the structure is abstract
"context" : [{ // C? If an extension, where it can be used in instances
"type" : "<code>", // R! fhirpath | element | extension
"expression" : "<string>" // R! Where the extension can be used in instances
}],
"contextInvariant" : ["<string>"], // C? FHIRPath invariants - when the extension can be used
"type" : "<uri>", // C? R! Type defined or constrained by this structure
"baseDefinition" : "<canonical>", // C? Definition that this type is constrained/specialized from
"derivation" : "<code>", // specialization | constraint - How relates to base definition
"snapshot" : { // C? Snapshot view of the structure
"element" : [{ ElementDefinition }] // C? R! Definition of elements in the resource (if no StructureDefinition)
},
"
"
"differential" : { // C? Differential view of the structure
"element" : [{ ElementDefinition }] // R! Definition of elements in the resource (if no StructureDefinition)
}
}
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> .[ a fhir:StructureDefinition; fhir:nodeRole fhir:treeRoot; # if this is the parser root # from Resource: .id, .meta, .implicitRules, and .language # from DomainResource: .text, .contained, .extension, and .modifierExtension
fhir:fhir:StructureDefinition.url [ uri ]; # 1..1 Canonical identifier for this structure definition, represented as a URI (globally unique) fhir:StructureDefinition.identifier [ Identifier ], ... ; # 0..* Additional identifier for the structure definition fhir:StructureDefinition.version [ string ]; # 0..1 Business version of the structure definition fhir:StructureDefinition.name [ string ]; # 1..1 Name for this structure definition (computer friendly) fhir:StructureDefinition.title [ string ]; # 0..1 Name for this structure definition (human friendly) fhir:StructureDefinition.status [ code ]; # 1..1 draft | active | retired | unknownfhir: fhir: fhir:fhir:StructureDefinition.experimental [ boolean ]; # 0..1 For testing purposes, not real usage fhir:StructureDefinition.date [ dateTime ]; # 0..1 Date last changed fhir:StructureDefinition.publisher [ string ]; # 0..1 Name of the publisher (organization or individual) fhir:StructureDefinition.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher fhir:StructureDefinition.description [ markdown ]; # 0..1 Natural language description of the structure definitionfhir:fhir:StructureDefinition.useContext [ UsageContext ], ... ; # 0..* The context that the content is intended to support fhir:StructureDefinition.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for structure definition (if applicable)fhir:fhir:StructureDefinition.purpose [ markdown ]; # 0..1 Why this structure definition is defined fhir:StructureDefinition.copyright [ markdown ]; # 0..1 Use and/or publishing restrictions fhir:StructureDefinition.keyword [ Coding ], ... ; # 0..* Assist with indexing and findingfhir:fhir:StructureDefinition.fhirVersion [ id ]; # 0..1 FHIR Version this StructureDefinition targets fhir:StructureDefinition.mapping [ # 0..* External specification that the content is mapped to fhir:StructureDefinition.mapping.identity [ id ]; # 1..1 Internal id when this mapping is used fhir:StructureDefinition.mapping.uri [ uri ]; # 0..1 Identifies what this mapping refers to fhir:StructureDefinition.mapping.name [ string ]; # 0..1 Names what this mapping refers to fhir:StructureDefinition.mapping.comment [ string ]; # 0..1 Versions, Issues, Scope limitations etc. ], ...; fhir:StructureDefinition.kind [ code ]; # 1..1 primitive-type | complex-type | resource | logical fhir:StructureDefinition.abstract [ boolean ]; # 1..1 Whether the structure is abstractfhir: fhir: fhir: fhir: fhir:fhir:StructureDefinition.context [ # 0..* If an extension, where it can be used in instances fhir:StructureDefinition.context.type [ code ]; # 1..1 fhirpath | element | extension fhir:StructureDefinition.context.expression [ string ]; # 1..1 Where the extension can be used in instances ], ...; fhir:StructureDefinition.contextInvariant [ string ], ... ; # 0..* FHIRPath invariants - when the extension can be used fhir:StructureDefinition.type [ uri ]; # 1..1 Type defined or constrained by this structure fhir:StructureDefinition.baseDefinition [ canonical(StructureDefinition) ]; # 0..1 Definition that this type is constrained/specialized from fhir:StructureDefinition.derivation [ code ]; # 0..1 specialization | constraint - How relates to base definitionfhir:fhir:StructureDefinition.snapshot [ # 0..1 Snapshot view of the structure fhir:StructureDefinition.snapshot.element [ ElementDefinition ], ... ; # 1..* Definition of elements in the resource (if no StructureDefinition) ]; fhir:StructureDefinition.differential [ # 0..1 Differential view of the structure fhir:StructureDefinition.differential.element [ ElementDefinition ], ... ; # 1..* Definition of elements in the resource (if no StructureDefinition) ]; ]
Changes
since
DSTU2
R3
| StructureDefinition |
|
|
|
|
|
|
|
|
|
|
|
|
|
| StructureDefinition.type |
|
| StructureDefinition.baseDefinition |
|
|
|
|
See the Full Difference for further information
This analysis is available as XML or JSON .
See R2 <--> R3 Conversion Maps (status = 248 tests that all execute ok. 60 fail round-trip testing and 145 r3 resources are invalid (441 errors). ). Note: these have note yet been updated to be R3 to R4
Structure
| Name | Flags | Card. | Type |
Description
&
Constraints
|
|---|---|---|---|---|
|
I N | DomainResource |
Structural
Definition
+ In any snapshot or differential, no label, code or requirements on + Custom types can only be used in logical models + All element definitions must have unique ids (snapshot) + Context Invariants can only be used for extensions + All element definitions must have unique ids (diff) + element.base cannot appear if there is no base on the structure definition + If there's a type, its content must match the path name in the first element of a snapshot + All element definitions must have an id + Element paths must be unique unless the structure is a constraint + Default values can only be specified on logical models + If the structure describes a base Resource or Type, the URL has to start with + A structure must have either a differential, or a snapshot (or both) + If the structure defines an extension then the structure must have context information + If the structure is not abstract, then there SHALL be a baseDefinition Elements defined in Ancestors: id , meta , implicitRules , language , text , contained , extension , modifierExtension |
|
|
Σ | 1..1 | uri |
|
|
Σ | 0..* | Identifier |
Additional
identifier
for
the
structure
definition
|
|
Σ | 0..1 | string | Business version of the structure definition |
|
Σ | 1..1 | string | Name for this structure definition (computer friendly) |
|
Σ | 0..1 | string | Name for this structure definition (human friendly) |
|
?! Σ | 1..1 | code |
draft
|
active
|
retired
|
unknown
PublicationStatus ( Required ) |
|
?! Σ | 0..1 | boolean | For testing purposes, not real usage |
|
Σ | 0..1 | dateTime |
Date
|
|
Σ | 0..1 | string | Name of the publisher (organization or individual) |
|
Σ | 0..* | ContactDetail |
Contact
details
for
the
publisher
|
|
0..1 | markdown | Natural language description of the structure definition | |
|
Σ TU | 0..* | UsageContext |
|
|
Σ | 0..* | CodeableConcept |
Intended
jurisdiction
for
structure
definition
(if
applicable)
Jurisdiction ValueSet ( Extensible ) |
|
0..1 | markdown | Why this structure definition is defined | |
|
0..1 | markdown | Use and/or publishing restrictions | |
|
Σ | 0..* | Coding |
Assist
with
indexing
and
finding
Structure Definition Codes ( Example ) |
|
Σ | 0..1 | id |
FHIR
Version
this
StructureDefinition
targets
All Published FHIR versions ( Required ) |
|
I | 0..* | BackboneElement |
External
specification
that
the
content
is
mapped
to
+ Must have at least a name or a uri (or both) |
|
1..1 | id | Internal id when this mapping is used | |
|
I | 0..1 | uri | Identifies what this mapping refers to |
|
I | 0..1 | string | Names what this mapping refers to |
|
0..1 | string | Versions, Issues, Scope limitations etc. | |
|
Σ | 1..1 | code |
primitive-type
|
complex-type
|
resource
|
logical
StructureDefinitionKind ( Required ) |
|
Σ | 1..1 | boolean | Whether the structure is abstract |
|
Σ I |
| BackboneElement |
If
an
extension,
where
it
can
be
used
in
instances
|
![]() ![]() ![]() | Σ | 1..1 | code |
|
|
Σ
|
|
string | Where the extension can be used in instances |
|
Σ I | 0..* | string |
FHIRPath
invariants
-
when
the
extension
can
be
used
|
|
Σ I | 1..1 |
|
Type
defined
or
constrained
by
this
structure
FHIRDefinedType ( Extensible ) |
|
Σ I | 0..1 |
|
Definition that this type is constrained/specialized from |
|
Σ
|
0..1 | code |
specialization
|
constraint
-
How
relates
to
base
definition
TypeDerivationRule ( Required ) |
|
I | 0..1 | BackboneElement |
Snapshot
view
of
the
structure
+ The first element in a snapshot has no type + In any snapshot, all the elements must be in the specified + Each element definition in a snapshot must have a formal definition and cardinalities |
|
I | 1..* | ElementDefinition |
Definition
of
elements
in
the
resource
(if
no
StructureDefinition)
+ provide either a binding reference or a description (or both) |
|
I | 0..1 | BackboneElement |
Differential
view
of
the
structure
+ If the first element in a differential has no + No slicing on the root element + In any differential, all the elements must be in the specified type |
|
1..* | ElementDefinition |
Definition
of
elements
in
the
resource
(if
no
StructureDefinition)
|
|
Documentation
for
this
format
|
||||
XML Template
<<StructureDefinition xmlns="http://hl7.org/fhir"><!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension -->
<<url value="[uri]"/><!-- 1..1 Canonical identifier for this structure definition, represented as a URI (globally unique) --> <identifier><!-- 0..* Identifier Additional identifier for the structure definition --></identifier>< < < < < < <<version value="[string]"/><!-- 0..1 Business version of the structure definition --> <name value="[string]"/><!-- 1..1 Name for this structure definition (computer friendly) --> <title value="[string]"/><!-- 0..1 Name for this structure definition (human friendly) --> <status value="[code]"/><!-- 1..1 draft | active | retired | unknown --> <experimental value="[boolean]"/><!-- 0..1 For testing purposes, not real usage --> <date value="[dateTime]"/><!-- 0..1 Date last changed --> <publisher value="[string]"/><!-- 0..1 Name of the publisher (organization or individual) --> <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact>< <</useContext><description value="[markdown]"/><!-- 0..1 Natural language description of the structure definition --> <useContext><!-- 0..* UsageContext The context that the content is intended to support --></useContext> <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for structure definition (if applicable) --></jurisdiction>< <<purpose value="[markdown]"/><!-- 0..1 Why this structure definition is defined --> <copyright value="[markdown]"/><!-- 0..1 Use and/or publishing restrictions --> <keyword><!-- 0..* Coding Assist with indexing and finding --></keyword><<fhirVersion value="[id]"/><!-- 0..1 FHIR Version this StructureDefinition targets --> <mapping> <!-- 0..* External specification that the content is mapped to -->< < < <<identity value="[id]"/><!-- 1..1 Internal id when this mapping is used --> <uri value="[uri]"/><!--0..1 Identifies what this mapping refers to --> <name value="[string]"/><!--
0..1 Names what this mapping refers to --> <comment value="[string]"/><!-- 0..1 Versions, Issues, Scope limitations etc. --> </mapping>
< < < < < < < < <<kind value="[code]"/><!-- 1..1 primitive-type | complex-type | resource | logical --> <abstract value="[boolean]"/><!-- 1..1 Whether the structure is abstract --> <context> <!--0..* If an extension, where it can be used in instances --> <type value="[code]"/><!-- 1..1 fhirpath | element | extension --> <expression value="[string]"/><!-- 1..1 Where the extension can be used in instances --> </context> <contextInvariant value="[string]"/><!--
0..* FHIRPath invariants - when the extension can be used --> <type value="[uri]"/><!--
1..1 Type defined or constrained by this structure --> <baseDefinition><!--
0..1 canonical(StructureDefinition) Definition that this type is constrained/specialized from --></baseDefinition> <derivation value="[code]"/><!-- 0..1 specialization | constraint - How relates to base definition --> <snapshot> <!--
0..1 Snapshot view of the structure --> <element><!--
1..* ElementDefinition Definition of elements in the resource (if no StructureDefinition) --></element> </snapshot> <differential> <!--
0..1 Differential view of the structure --> <element><!-- 1..* ElementDefinition Definition of elements in the resource (if no StructureDefinition) --></element> </differential> </StructureDefinition>
JSON Template
{
"resourceType" : "",
"resourceType" : "StructureDefinition",
// from Resource: id, meta, implicitRules, and language
// from DomainResource: text, contained, extension, and modifierExtension
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"url" : "<uri>", // R! Canonical identifier for this structure definition, represented as a URI (globally unique)
"identifier" : [{ Identifier }], // Additional identifier for the structure definition
"version" : "<string>", // Business version of the structure definition
"name" : "<string>", // R! Name for this structure definition (computer friendly)
"title" : "<string>", // Name for this structure definition (human friendly)
"status" : "<code>", // R! draft | active | retired | unknown
"experimental" : <boolean>, // For testing purposes, not real usage
"date" : "<dateTime>", // Date last changed
"publisher" : "<string>", // Name of the publisher (organization or individual)
"contact" : [{ ContactDetail }], // Contact details for the publisher
"description" : "<markdown>", // Natural language description of the structure definition
"useContext" : [{ UsageContext }], // The context that the content is intended to support
"jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for structure definition (if applicable)
"purpose" : "<markdown>", // Why this structure definition is defined
"copyright" : "<markdown>", // Use and/or publishing restrictions
"keyword" : [{ Coding }], // Assist with indexing and finding
"fhirVersion" : "<id>", // FHIR Version this StructureDefinition targets
"mapping" : [{ // External specification that the content is mapped to
"identity" : "<id>", // R! Internal id when this mapping is used
"uri" : "<uri>", // C? Identifies what this mapping refers to
"name" : "<string>", // C? Names what this mapping refers to
"comment" : "<string>" // Versions, Issues, Scope limitations etc.
}],
"
"
"
"
"
"
"
"
"
"
"kind" : "<code>", // R! primitive-type | complex-type | resource | logical
"abstract" : <boolean>, // R! Whether the structure is abstract
"context" : [{ // C? If an extension, where it can be used in instances
"type" : "<code>", // R! fhirpath | element | extension
"expression" : "<string>" // R! Where the extension can be used in instances
}],
"contextInvariant" : ["<string>"], // C? FHIRPath invariants - when the extension can be used
"type" : "<uri>", // C? R! Type defined or constrained by this structure
"baseDefinition" : "<canonical>", // C? Definition that this type is constrained/specialized from
"derivation" : "<code>", // specialization | constraint - How relates to base definition
"snapshot" : { // C? Snapshot view of the structure
"element" : [{ ElementDefinition }] // C? R! Definition of elements in the resource (if no StructureDefinition)
},
"
"
"differential" : { // C? Differential view of the structure
"element" : [{ ElementDefinition }] // R! Definition of elements in the resource (if no StructureDefinition)
}
}
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> .[ a fhir:StructureDefinition; fhir:nodeRole fhir:treeRoot; # if this is the parser root # from Resource: .id, .meta, .implicitRules, and .language # from DomainResource: .text, .contained, .extension, and .modifierExtension
fhir:fhir:StructureDefinition.url [ uri ]; # 1..1 Canonical identifier for this structure definition, represented as a URI (globally unique) fhir:StructureDefinition.identifier [ Identifier ], ... ; # 0..* Additional identifier for the structure definition fhir:StructureDefinition.version [ string ]; # 0..1 Business version of the structure definition fhir:StructureDefinition.name [ string ]; # 1..1 Name for this structure definition (computer friendly) fhir:StructureDefinition.title [ string ]; # 0..1 Name for this structure definition (human friendly) fhir:StructureDefinition.status [ code ]; # 1..1 draft | active | retired | unknownfhir: fhir: fhir:fhir:StructureDefinition.experimental [ boolean ]; # 0..1 For testing purposes, not real usage fhir:StructureDefinition.date [ dateTime ]; # 0..1 Date last changed fhir:StructureDefinition.publisher [ string ]; # 0..1 Name of the publisher (organization or individual) fhir:StructureDefinition.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher fhir:StructureDefinition.description [ markdown ]; # 0..1 Natural language description of the structure definitionfhir:fhir:StructureDefinition.useContext [ UsageContext ], ... ; # 0..* The context that the content is intended to support fhir:StructureDefinition.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for structure definition (if applicable)fhir:fhir:StructureDefinition.purpose [ markdown ]; # 0..1 Why this structure definition is defined fhir:StructureDefinition.copyright [ markdown ]; # 0..1 Use and/or publishing restrictions fhir:StructureDefinition.keyword [ Coding ], ... ; # 0..* Assist with indexing and findingfhir:fhir:StructureDefinition.fhirVersion [ id ]; # 0..1 FHIR Version this StructureDefinition targets fhir:StructureDefinition.mapping [ # 0..* External specification that the content is mapped to fhir:StructureDefinition.mapping.identity [ id ]; # 1..1 Internal id when this mapping is used fhir:StructureDefinition.mapping.uri [ uri ]; # 0..1 Identifies what this mapping refers to fhir:StructureDefinition.mapping.name [ string ]; # 0..1 Names what this mapping refers to fhir:StructureDefinition.mapping.comment [ string ]; # 0..1 Versions, Issues, Scope limitations etc. ], ...; fhir:StructureDefinition.kind [ code ]; # 1..1 primitive-type | complex-type | resource | logical fhir:StructureDefinition.abstract [ boolean ]; # 1..1 Whether the structure is abstractfhir: fhir: fhir: fhir: fhir:fhir:StructureDefinition.context [ # 0..* If an extension, where it can be used in instances fhir:StructureDefinition.context.type [ code ]; # 1..1 fhirpath | element | extension fhir:StructureDefinition.context.expression [ string ]; # 1..1 Where the extension can be used in instances ], ...; fhir:StructureDefinition.contextInvariant [ string ], ... ; # 0..* FHIRPath invariants - when the extension can be used fhir:StructureDefinition.type [ uri ]; # 1..1 Type defined or constrained by this structure fhir:StructureDefinition.baseDefinition [ canonical(StructureDefinition) ]; # 0..1 Definition that this type is constrained/specialized from fhir:StructureDefinition.derivation [ code ]; # 0..1 specialization | constraint - How relates to base definitionfhir:fhir:StructureDefinition.snapshot [ # 0..1 Snapshot view of the structure fhir:StructureDefinition.snapshot.element [ ElementDefinition ], ... ; # 1..* Definition of elements in the resource (if no StructureDefinition) ]; fhir:StructureDefinition.differential [ # 0..1 Differential view of the structure fhir:StructureDefinition.differential.element [ ElementDefinition ], ... ; # 1..* Definition of elements in the resource (if no StructureDefinition) ]; ]
Changes since DSTU2
| StructureDefinition |
|
|
|
|
|
|
|
|
|
|
|
|
|
| StructureDefinition.type |
|
| StructureDefinition.baseDefinition |
|
|
|
|
See the Full Difference for further information
This analysis is available as XML or JSON .
See R2 <--> R3 Conversion Maps (status = 248 tests that all execute ok. 60 fail round-trip testing and 145 r3 resources are invalid (441 errors). ). Note: these have note yet been updated to be R3 to R4
Alternate
definitions:
Master
Definition
(
XML
,
+
JSON
),
,
XML
Schema
/
Schematron
(for
)
+
JSON
Schema
,
ShEx
(for
Turtle
)
+
see
the
extensions
&
the
dependency
analysis
| Path | Definition | Type | Reference |
|---|---|---|---|
| StructureDefinition.status |
The
lifecycle
status
of
|
Required | PublicationStatus |
| StructureDefinition.jurisdiction | Countries and regions within which this artifact is targeted for use | Extensible | Jurisdiction ValueSet |
| StructureDefinition.keyword | Codes for the meaning of the defined structure (SNOMED CT and LOINC codes, as an example). | Example | Structure Definition Codes |
| StructureDefinition.fhirVersion | All published FHIR Versions | Required | All Published FHIR versions |
| StructureDefinition.kind | Defines the type of structure that a definition is describing. | Required | StructureDefinitionKind |
| StructureDefinition.context.type | How an extension context is interpreted. | Required |
|
| StructureDefinition.type | Either a resource or a data type, including logical model types | Extensible | FHIRDefinedType |
| StructureDefinition.derivation | How a type relates to its baseDefinition. | Required | TypeDerivationRule |
:
derivation
=
'constraint'
or
snapshot.element.select(path).isDistinct()
)
on
StructureDefinition.snapshot.element:
binding.empty()
or
binding.valueSet.exists()
or
binding.description.exists()
)
:
kind
!=
'logical'
implies
snapshot.empty()
or
snapshot.element.first().path
=
type
)
:
snapshot.exists()
implies
(snapshot.element.base.exists()
=
baseDefinition.exists())
)
:
snapshot.element.all(id.exists())
and
differential.element.all(id.exists())
)
on
StructureDefinition.snapshot:
element.first().type.empty()
)
on
StructureDefinition.differential:
element.first().path.contains('.').not()
implies
element.first().type.empty()
)
:
snapshot.element.all(id)
and
snapshot.element.id.trace('ids').isDistinct()
)
:
differential.element.all(id)
and
differential.element.id.trace('ids').isDistinct()
)
:
contextInvariant.exists()
implies
type
=
'Extension'
)
:
kind
=
'logical'
or
(differential.element.type.code.all(hasValue()
implies
matches('^[a-zA-Z0-9]+$'))
and
snapshot.element.type.code.all(hasValue()
implies
matches('^[a-zA-Z0-9]+$')))
)
on
StructureDefinition.mapping:
name.exists()
or
uri.exists()
)
on
StructureDefinition.differential:
element.where(path.contains('.').not()).slicing.empty()
)
:
(snapshot.element.defaultValue.exists()
or
differential.element.defaultValue.exists())
implies
((kind
=
'logical')
and
(derivation
=
'specialization'))
)
on
StructureDefinition.snapshot:
:
abstract
=
true
or
baseDefinition.exists()
)
:
type
!=
'Extension'
or
derivation
=
'specialization'
or
:
snapshot.exists()
or
differential.exists()
)
:
(derivation
=
'constraint')
or
(kind
=
'logical')
or
(url
=
'http://hl7.org/fhir/StructureDefinition/'+id)
)
on
StructureDefinition.snapshot:
on
StructureDefinition.differential:
element.first().path.startsWith(%resource.type)
and
element.tail().all(path.startsWith(%resource.type&'.'))
)
:
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()
)
element.path
provides
the
overall
structure.
element.short
,
element.formal
,
element.comments
and
element.mapping
provide
the
specific
definition
for
the
field
in
a
specific
context.
element.type
is
used
to
specify
which
types
may
be
used
for
this
element.
If
there
is
more
than
one
type,
the
element
offers
a
choice
of
types
and
must
have
a
name
that
terminates
in
is
operator
.
The
base
structure
definition
is
used
in
a
number
of
different
ways
to
support
the
FHIR
specification.
The
various
uses
of
the
StructureDefinition
are
controlled
by
the
elements
kind
,
constrainedType
,
base
,
and
url
,
using
this
basic
pattern:
{
"url": the identity of this structure definition,
"kind": (datatype | resource),
"type": the type being constrained (if it's a constraint)
"baseDefinition": the structure definition from which this is derived
"url": the identity of this structure definition,
"kind": (primitive-type | complex-type | resource | logical),
"type": the type being constrained (if it's a constraint)
"baseDefinition": the structure definition from which this is derived
}
This list shows a number of examples, with links to real examples for each:
{
"resourceType": "StructureDefinition",
"url": "http://hl7.org/fhir/StructureDefinition/Quantity",
"name": "Quantity",
"kind": "datatype",
"baseDefinition": "http://hl7.org/fhir/StructureDefinition/Element"
"resourceType": "StructureDefinition",
"url": "http://hl7.org/fhir/StructureDefinition/Quantity",
"name": "Quantity",
"kind": "complex-type",
"baseDefinition": "http://hl7.org/fhir/StructureDefinition/Element"
}
{
"resourceType": "StructureDefinition",
"url": "http://hl7.org/fhir/StructureDefinition/Money",
"name": "Money",
"kind": "datatype",
"type": "Quantity",
"baseDefinition": "http://hl7.org/fhir/StructureDefinition/Quantity"
"resourceType": "StructureDefinition",
"url": "http://hl7.org/fhir/StructureDefinition/Money",
"name": "Money",
"kind": "complex-type",
"type": "Quantity",
"baseDefinition": "http://hl7.org/fhir/StructureDefinition/Quantity"
}
{
"resourceType": "StructureDefinition",
"url": "http://hl7.org/fhir/StructureDefinition/Patient",
"name": "Patient",
"kind": "resource",
"baseDefinition": "http://hl7.org/fhir/StructureDefinition/DomainResource"
"resourceType": "StructureDefinition",
"url": "http://hl7.org/fhir/StructureDefinition/Patient",
"name": "Patient",
"kind": "resource",
"baseDefinition": "http://hl7.org/fhir/StructureDefinition/DomainResource"
}
{
"resourceType": "StructureDefinition",
"url": "http://hl7.org/fhir/StructureDefinition/clinicaldocument",
"name": "Clinical Document Profile for Composition",
"kind": "resource",
"type": "Composition",
"baseDefinition": "http://hl7.org/fhir/StructureDefinition/Composition"
"resourceType": "StructureDefinition",
"url": "http://hl7.org/fhir/StructureDefinition/clinicaldocument",
"name": "Clinical Document Profile for Composition",
"kind": "resource",
"type": "Composition",
"baseDefinition": "http://hl7.org/fhir/StructureDefinition/Composition"
}
{
"resourceType": "StructureDefinition",
"url": "http://hl7.org/fhir/StructureDefinition/Extension",
"name": "Extension",
"kind": "datatype",
"baseDefinition": "http://hl7.org/fhir/StructureDefinition/Element"
"resourceType": "StructureDefinition",
"url": "http://hl7.org/fhir/StructureDefinition/Extension",
"name": "Extension",
"kind": "datatype",
"baseDefinition": "http://hl7.org/fhir/StructureDefinition/Element"
}
{
"resourceType": "StructureDefinition",
"url": "http://hl7.org/fhir/StructureDefinition/data-absent-reason",
"name": "Data Absent Reason",
"kind": "complex-type",
"type": "Extension",
"baseDefinition": "http://hl7.org/fhir/StructureDefinition/Extension"
"resourceType": "StructureDefinition",
"url": "http://hl7.org/fhir/StructureDefinition/data-absent-reason",
"name": "Data Absent Reason",
"kind": "complex-type",
"type": "Extension",
"baseDefinition": "http://hl7.org/fhir/StructureDefinition/Extension"
}
{
"resourceType": "StructureDefinition",
"url": "http://example.org/fhir/StructureDefinition/race",
"name": "Race codes used by institution (a subset of meaningful use codes)",
"kind": "datatype",
"type": "Extension",
"baseDefinition": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-race"
"resourceType": "StructureDefinition",
"url": "http://example.org/fhir/StructureDefinition/race",
"name": "Race codes used by institution (a subset of meaningful use codes)",
"kind": "complex-type",
"type": "Extension",
"baseDefinition": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-race"
}
On
this
list,
structure
definitions
of
type
1,
3,
and
5
can
only
be
defined
by
the
FHIR
specification
itself.
The
other
kinds
of
structure
definitions
are
(or
may
be)
created
by
the
specification,
specification
but
can
also
be
defined
by
other
implementers.
When the structure is a constraint (constrainedType is not null), see Extending and Restricting Resources for the rules that apply.
Structures
are
able
to
map
elements
to
concepts
in
other
definition
systems.
Generally
Generally,
these
are
used
to
map
the
elements
to
local
implementation
models,
data
paths,
and
concepts.
However
they
are
also
used
to
map
to
other
standards
and
published
terminologies.
These
are
the
standard
URIs
used
for
common
targets
of
the
mapping:
| Name | Details |
|---|---|
|
|
Formal URL: http://hl7.org/fhir/logical |
|
Formal URL: http://clinicaltrials.gov |
Workflow
Pattern
![]() |
|
CDISC
Define
XML
2.0
metadata
standard
|
|
|
Formal URL: http://ncpdp.org/SCRIPT10_6 |
FiveWs
Pattern
|
|
IHE
Structured
Data
Capture
|
|
|
|
SNOMED
CT
Concept
Domain
Binding
|
Formal
URL:
http://snomed.info/conceptdomain
Concept domain bindings link a resource or an element to a set of SNOMED CT concepts that represent the intended semantics of the instances (whether or not SNOMED CT is used to encode that data element). This set of concepts is represented using a SNOMED CT expression constraint. Note that the 'Concept domain binding' may be a superset of the 'value set binding'. These bindings help to support:
|
![]() |
|
|
|
Formal URL: http://hl7.org/v2 |
|
|
Formal URL: http://hl7.org/v3 |
ISO
11179
|
Formal
URL:
http://metadata-standards.org/11179/
These mappings are included to indicate where properties of the data elements defined by the FHIR specification relate to similar fields in the ISO 11179 specification. |
|
Formal
URL:
http://snomed.info/sct
Attribute bindings link coded data elements in FHIR resources to a corresponding attribute in the SNOMED CT concept model. These bindings help to support:
|
Quality
Improvement
Domain
Analysis
Model
![]() |
|
DICOM
Tag
Mapping
|
|
MDMI
Referent
Index
|
Formal URL: http://github.com/MDMI/ReferentIndexContent |
V3
Pharmacy
Dispense
RMIM
|
|
XDS
metadata
equivalent
|
|
CAP
Code
|
|
| CDA (R2) | Formal URL: http://hl7.org/v3/cda |
|
|
Canadian
Pharmacy
Associaiton
eclaims
standard
|
Formal URL: http://www.pharmacists.ca/ |
|
Formal
URL:
http://fda.gov/UDI
UDI is a unique numeric or alphanumeric code that consists of two parts: (1) a device identifier (DI), a mandatory, fixed portion of a UDI that identifies the labeler and the specific version or model of a device, and (2) a production identifier (PI), a conditional, variable portion of a UDI that identifies one or more of the following when included on the label of a device: (2a) the lot or batch number within which a device was manufactured; (2b) the serial number of a specific device; (2c) the expiration date of a specific device; (2d) the date a specific device was manufactured; (2e) the distinct identification code required by §1271.290(c) for a human cell, tissue, or cellular and tissue-based product (HCT/P) regulated as a device. |
Quality
Data
Model
|
Formal URL: http://www.healthit.gov/quality-data-model |
| FHIR AuditEvent | Formal URL: http://hl7.org/fhir/auditevent |
IHE
Data
Element
Exchange
(DEX)
![]() |
|
W3C
PROV
|
Formal
URL:
http://www.w3.org/ns/prov
The
provenance
resource
is
based
on
known
practices
in
the
HL7
implementation
space,
particularly
those
found
in
the
v2
EVN
segment,
the
v3
ControlAct
Wrapper,
the
CDA
header,
and
IHE
ATNA.
The
conceptual
model
underlying
the
design
is
the
W3C
provenance
Specification
|
|
|
Formal URL: http://hl7.org/orim |
|
|
vCard
Mapping
|
|
Open
EHR
Archetype
Mapping
|
|
![]() |
|
|
|
Formal URL: http://hl7.org/fhir/provenance |
|
Formal URL: http://ietf.org/rfc/2445 |
StructureDefinitions are used to define the basic structures of FHIR: data types, resources, extensions, and profiles. The same definition structure can also be used to define any arbitrary structures that are a directed acyclic graph with typed nodes, where the primitive types are those defined by the FHIR specification.
This technique has many uses:
Search parameters for this resource. The common parameters also apply. See Searching for more information about searching in REST, messaging, and services.
| Name | Type | Description | Expression | In Common |
| abstract | token | Whether the structure is abstract | StructureDefinition.abstract | |
| base |
|
Definition that this type is constrained/specialized from |
StructureDefinition.baseDefinition
( StructureDefinition ) |
|
| base-path | token | Path that identifies the base element | StructureDefinition.snapshot.element.base.path | StructureDefinition.differential.element.base.path |
|
| date | date | The structure definition publication date | StructureDefinition.date | |
| derivation | token | specialization | constraint - How relates to base definition | StructureDefinition.derivation | |
| description | string | The description of the structure definition | StructureDefinition.description | |
| experimental | token | For testing purposes, not real usage | StructureDefinition.experimental | |
| ext-context |
|
|
StructureDefinition.context | |
| identifier | token | External identifier for the structure definition | StructureDefinition.identifier | |
| jurisdiction | token | Intended jurisdiction for the structure definition | StructureDefinition.jurisdiction | |
| keyword | token | A code for the profile | StructureDefinition.keyword | |
| kind | token | primitive-type | complex-type | resource | logical | StructureDefinition.kind | |
| name | string | Computationally friendly name of the structure definition | StructureDefinition.name | |
| path | token | A path that is constrained in the profile | StructureDefinition.snapshot.element.path | StructureDefinition.differential.element.path | |
| publisher | string | Name of the publisher of the structure definition | StructureDefinition.publisher | |
| status | token | The current status of the structure definition | StructureDefinition.status | |
| title | string | The human-friendly name of the structure definition | StructureDefinition.title | |
| type |
|
Type defined or constrained by this structure | StructureDefinition.type | |
| url | uri | The uri that identifies the structure definition | StructureDefinition.url | |
| valueset | reference | A vocabulary binding reference |
StructureDefinition.snapshot.element.binding.valueSet
( ValueSet ) |
|
| version | token | The business version of the structure definition | StructureDefinition.version |