This
page
is
part
of
the
FHIR
Specification
(v4.0.1:
R4
-
Mixed
Normative
and
STU
v6.0.0-ballot4:
Release
6
Ballot
(1st
Full
Ballot)
(see
Ballot
Notes
)
in
it's
permanent
home
(it
will
always
be
available
at
this
URL).
).
The
current
version
which
supercedes
this
version
is
5.0.0
.
For
a
full
list
of
available
versions,
see
the
Directory
of
published
versions
for
published
versions
.
Page
versions:
R5
R4B
R4
R3
R2
Responsible
Owner:
FHIR
Infrastructure
Work
Group
|
|
Security Category : Anonymous |
Compartments
:
|
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 and helps find the structure when registered in 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
definition
when
it
is
referenced
in
a
specification,
model,
design
or
instance.
This
is
an
arbitrary
value
managed
by
the
structure
definition
author
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
|
|
| Indicates the mechanism used to compare versions to determine which is more current |
| name |
A
Computer-ready
name
(e.g.
a
token)
that
identifies
the
structure
-
suitable
for
code
generation.
Note
that
this
name
(and
other
names
relevant
for
code
generation,
including
element
&
slice
names,
codes
|
| title | A free text natural language name identifying the structure |
| status | The status of the structure allows filtering of StructureDefinitions 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 |
| publisher | Details of the individual or organization who accepts responsibility for publishing the structure. This helps establish the "authority/credibility" of the structure. |
| contact | 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 |
| purpose | Why this structure was created - what the intent of it is |
| useContext & Jurisdiction | Computable details about purpose and scope of use |
|
|
|
| fhirVersion |
The
version
of
the
FHIR
specification
on
which
this
structure
is
based.
It
is
not
necessary
to
specify
the
version,
as
most
|
| type | The type the structure describes. |
| contextType & context | For extensions, the types of contexts in which the extension can be used. For further details, see Defining Extensions |
Notes:
Structure
| Name | Flags | Card. | Type |
Description
&
Constraints
Filter:
|
|---|---|---|---|---|
|
|
DomainResource |
Structural
Definition
+ Warning: Name should be usable as an identifier for the module by machine processing applications such as code generation + Rule: Element paths must be unique unless the structure is a constraint + Rule: If the structure defines an extension then the structure must have context information + Rule: A structure must have either a differential, or a snapshot (or both) + Rule: All element definitions must have an id + Rule: The first element in a snapshot has no type unless model is a logical model. + Rule: If the first element in a differential has no "." in the path and it's not a logical model, it has no type + Rule: In any snapshot or differential, no requirements on an element without a "." in the path (e.g. the first element) + Rule: All element definitions must have unique ids (snapshot) + Rule: All element definitions must have unique ids (diff) + Rule: Context Invariants can only be used for extensions + Rule: FHIR Specification models only use FHIR defined types + Rule: Default values can only be specified on specializations + Rule: FHIR Specification models never have default values + Rule: No slice name on root + Rule: If there's a base definition, there must be a derivation + Warning: Elements in Resources must have a min cardinality or 0 or 1 and a max cardinality of 1 or * + Rule: ContentReferences can only be defined in specializations, not constrained types Elements defined in Ancestors: id , meta , implicitRules , language , text , contained , extension , modifierExtension Interfaces Implemented: CanonicalResource |
|
|
Σ C | 1..1 | uri |
Canonical
identifier
for
this
structure
definition,
represented
as
a
URI
(globally
unique)
+ Warning: URL should not contain | or # - these characters make processing canonical references problematic |
|
Σ | 0..* | Identifier |
Additional
identifier
for
the
structure
definition
|
|
Σ | 0..1 | string |
Business
version
of
the
structure
definition
|
|
Σ
|
0..1 |
How
to
compare
versions
Binding: Version Algorithm ( Extensible ) |
|
| string | |||
| Coding | |||
![]() ![]() | Σ C | 1..1 | string |
Name
for
this
structure
definition
(computer
friendly)
|
|
Σ T | 0..1 | string |
Name
for
this
structure
definition
(human
friendly)
|
|
?! Σ | 1..1 | code |
draft
|
active
|
retired
|
unknown
Binding: PublicationStatus ( Required ) |
|
Σ | 0..1 | boolean |
For
testing
|
|
Σ | 0..1 | dateTime |
Date
last
changed
|
|
Σ T | 0..1 | string |
Name
of
the
|
|
Σ | 0..* | ContactDetail |
Contact
details
for
the
publisher
|
|
T | 0..1 | markdown |
Natural
language
description
of
the
structure
definition
|
|
Σ
|
0..* | UsageContext |
The
context
that
the
content
is
intended
to
support
|
|
Σ | 0..* | CodeableConcept |
Jurisdiction
of
the
authority
that
maintains
the
structure
definition
(if
applicable)
Binding: Jurisdiction ValueSet
(
Extensible
)
|
|
T | 0..1 | markdown |
Why
this
structure
definition
is
defined
|
|
T | 0..1 | markdown |
Notice
about
intellectual
property
ownership,
can
include
restrictions
on
use
|
| T | 0..1 | string |
Copyright
holder
and
year(s)
|
|
Σ | 0..* | Coding |
Assist
with
indexing
and
finding
Binding: Structure Definition Use Codes / Keywords ( Extensible ) |
|
Σ | 0..1 | code |
FHIR
Version
this
StructureDefinition
targets
Binding: FHIRVersion ( Required ) |
|
|
0..* | BackboneElement |
External
specification
that
the
content
is
mapped
to
+ Rule: Must have at least a name or a uri (or both) |
|
1..1 | id |
Internal
id
when
this
mapping
is
used
|
|
|
|
0..1 | uri |
Identifies
what
this
mapping
refers
to
|
|
|
0..1 | string |
Names
what
this
mapping
refers
to
|
|
0..1 | string |
Versions,
Issues,
Scope
limitations
|
|
|
Σ C | 1..1 | code |
primitive-type
|
complex-type
|
resource
|
logical
|
|
Σ C | 1..1 | boolean |
Whether
the
structure
is
abstract
|
|
Σ
|
0..* | BackboneElement |
If
an
extension,
where
it
can
be
used
in
instances
|
|
Σ | 1..1 | code |
fhirpath
|
element
|
extension
|
|
Σ | 1..1 | string |
Where
the
extension
can
be
used
in
instances
|
|
Σ
|
0..* | string |
FHIRPath
invariants
-
when
the
extension
can
be
used
|
|
Σ
|
1..1 | uri |
Type
defined
or
constrained
by
this
structure
|
|
Σ
|
0..1 | canonical ( StructureDefinition ) |
Definition
that
this
type
is
constrained/specialized
from
|
|
Σ C | 0..1 | code |
specialization
|
constraint
-
How
relates
to
base
definition
|
|
|
0..1 | BackboneElement |
Snapshot
view
of
the
structure
+ Rule: Each element definition in a snapshot must have a formal definition and + Rule: All snapshot elements must start with the StructureDefinition's specified type for non-logical models, or with the same type name for logical models + Rule: For CodeableReference elements, target profiles must be listed on the CodeableReference, not the CodeableReference.reference + Rule: For CodeableReference elements, bindings must be listed on the CodeableReference, not the CodeableReference.concept + Guideline: The root element of a profile should not have mustSupport = true + Rule: All snapshot elements must have a base definition |
|
|
1..* | ElementDefinition |
Definition
of
elements
in
the
resource
(if
no
StructureDefinition)
+ Rule: provide either a binding reference or a description (or both) + Rule: If there are no discriminators, there must be a definition |
|
|
0..1 | BackboneElement |
Differential
view
of
the
structure
+ Rule: No slicing on the root element + Rule: 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 |
|
C | 1..* | ElementDefinition |
Definition
of
elements
in
the
resource
(if
no
StructureDefinition)
|
Documentation
for
this
format
|
||||
See the Extensions for this resource
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]"/><!-- I 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 --> <versionAlgorithm[x]><!-- 0..1 string|Coding How to compare versions --></versionAlgorithm[x]> <name value="[string]"/><!-- I 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 only - never for real usage --> <date value="[dateTime]"/><!-- 0..1 Date last changed --> <publisher value="[string]"/><!-- 0..1 Name of the publisher/steward (organization or individual) --> <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact> <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><jurisdiction><!-- 0..* CodeableConcept Jurisdiction of the authority that maintains the structure definition (if applicable)--></jurisdiction> <purpose value="[markdown]"/><!-- 0..1 Why this structure definition is defined -->
< <</keyword> <<copyright value="[markdown]"/><!-- 0..1 Notice about intellectual property ownership, can include restrictions on use --> <copyrightLabel value="[string]"/><!-- 0..1 Copyright holder and year(s) --> <keyword><!-- 0..* Coding Assist with indexing and finding --></keyword> <fhirVersion value="[code]"/><!-- 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]"/><!-- I 0..1 Identifies what this mapping refers to --> <name value="[string]"/><!-- I 0..1 Names what this mapping refers to --> <comment value="[string]"/><!-- 0..1 Versions, Issues, Scope limitations etc --> </mapping>< < <<kind value="[code]"/><!-- I 1..1 primitive-type | complex-type | resource | logical --> <abstract value="[boolean]"/><!-- I 1..1 Whether the structure is abstract --> <context> <!-- I 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>< < <</baseDefinition> < < <</element><contextInvariant value="[string]"/><!-- I 0..* FHIRPath invariants - when the extension can be used --> <type value="[uri]"/><!-- I 1..1 Type defined or constrained by this structure --> <baseDefinition><!-- I 0..1 canonical(StructureDefinition) Definition that this type is constrained/specialized from --></baseDefinition> <derivation value="[code]"/><!-- I 0..1 specialization | constraint - How relates to base definition --> <snapshot> <!-- I 0..1 Snapshot view of the structure --> <element><!-- I 1..* ElementDefinition Definition of elements in the resource (if no StructureDefinition) --></element> </snapshot>< <</element><differential> <!-- I 0..1 Differential view of the structure --> <element><!-- I 1..* ElementDefinition Definition of elements in the resource (if no StructureDefinition) --></element> </differential> </StructureDefinition>
JSON Template
{
"resourceType" : "StructureDefinition",
// from Resource: id, meta, implicitRules, and language
// from DomainResource: text, contained, extension, and modifierExtension
"
"url" : "<uri>", // I 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
// versionAlgorithm[x]: How to compare versions. One of these 2:
"versionAlgorithmString" : "<string>",
"versionAlgorithmCoding" : { Coding },
"name" : "<string>", // I 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 only - never for real usage
"date" : "<dateTime>", // Date last changed
"publisher" : "<string>", // Name of the publisher/steward (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 }], // Jurisdiction of the authority that maintains the structure definition (if applicable)
"purpose" : "<markdown>", // Why this structure definition is defined
"
"
"
"copyright" : "<markdown>", // Notice about intellectual property ownership, can include restrictions on use
"copyrightLabel" : "<string>", // Copyright holder and year(s)
"keyword" : [{ Coding }], // Assist with indexing and finding
"fhirVersion" : "<code>", // 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>", // I Identifies what this mapping refers to
"name" : "<string>", // I Names what this mapping refers to
"comment" : "<string>" // Versions, Issues, Scope limitations etc
}],
"
"
"
"kind" : "<code>", // I R! primitive-type | complex-type | resource | logical
"abstract" : <boolean>, // I R! Whether the structure is abstract
"context" : [{ // I 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>"], // I FHIRPath invariants - when the extension can be used
"type" : "<uri>", // I R! Type defined or constrained by this structure
"baseDefinition" : "<canonical(StructureDefinition)>", // I Definition that this type is constrained/specialized from
"derivation" : "<code>", // I specialization | constraint - How relates to base definition
"snapshot" : { // I Snapshot view of the structure
"element" : [{ ElementDefinition }] // I R! Definition of elements in the resource (if no StructureDefinition)
},
"
"
"differential" : { // I Differential view of the structure
"element" : [{ ElementDefinition }] // I 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 # from fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: ], ...; fhir: fhir: fhir: fhir: fhir: ], ...; fhir: fhir: fhir: fhir: fhir: fhir: ]; fhir: fhir: ];# from Resource: fhir:id, fhir:meta, fhir:implicitRules, and fhir:language # from DomainResource: fhir:text, fhir:contained, fhir:extension, and fhir:modifierExtension fhir:url [ uri ] ; # 1..1 I Canonical identifier for this structure definition, represented as a URI (globally unique) fhir:identifier ( [ Identifier ] ... ) ; # 0..* Additional identifier for the structure definition fhir:version [ string ] ; # 0..1 Business version of the structure definition # versionAlgorithm[x] : 0..1 How to compare versions. One of these 2 fhir:versionAlgorithm [ a fhir:String ; string ] fhir:versionAlgorithm [ a fhir:Coding ; Coding ] fhir:name [ string ] ; # 1..1 I Name for this structure definition (computer friendly) fhir:title [ string ] ; # 0..1 Name for this structure definition (human friendly) fhir:status [ code ] ; # 1..1 draft | active | retired | unknown fhir:experimental [ boolean ] ; # 0..1 For testing only - never for real usage fhir:date [ dateTime ] ; # 0..1 Date last changed fhir:publisher [ string ] ; # 0..1 Name of the publisher/steward (organization or individual) fhir:contact ( [ ContactDetail ] ... ) ; # 0..* Contact details for the publisher fhir:description [ markdown ] ; # 0..1 Natural language description of the structure definition fhir:useContext ( [ UsageContext ] ... ) ; # 0..* The context that the content is intended to support fhir:jurisdiction ( [ CodeableConcept ] ... ) ; # 0..* Jurisdiction of the authority that maintains the structure definition (if applicable) fhir:purpose [ markdown ] ; # 0..1 Why this structure definition is defined fhir:copyright [ markdown ] ; # 0..1 Notice about intellectual property ownership, can include restrictions on use fhir:copyrightLabel [ string ] ; # 0..1 Copyright holder and year(s) fhir:keyword ( [ Coding ] ... ) ; # 0..* Assist with indexing and finding fhir:fhirVersion [ code ] ; # 0..1 FHIR Version this StructureDefinition targets fhir:mapping ( [ # 0..* External specification that the content is mapped to fhir:identity [ id ] ; # 1..1 Internal id when this mapping is used fhir:uri [ uri ] ; # 0..1 I Identifies what this mapping refers to fhir:name [ string ] ; # 0..1 I Names what this mapping refers to fhir:comment [ string ] ; # 0..1 Versions, Issues, Scope limitations etc ] ... ) ; fhir:kind [ code ] ; # 1..1 I primitive-type | complex-type | resource | logical fhir:abstract [ boolean ] ; # 1..1 I Whether the structure is abstract fhir:context ( [ # 0..* I If an extension, where it can be used in instances fhir:type [ code ] ; # 1..1 fhirpath | element | extension fhir:expression [ string ] ; # 1..1 Where the extension can be used in instances ] ... ) ; fhir:contextInvariant ( [ string ] ... ) ; # 0..* I FHIRPath invariants - when the extension can be used fhir:type [ uri ] ; # 1..1 I Type defined or constrained by this structure fhir:baseDefinition [ canonical(StructureDefinition) ] ; # 0..1 I Definition that this type is constrained/specialized from fhir:derivation [ code ] ; # 0..1 I specialization | constraint - How relates to base definition fhir:snapshot [ # 0..1 I Snapshot view of the structure fhir:element ( [ ElementDefinition ] ... ) ; # 1..* I Definition of elements in the resource (if no StructureDefinition) ] ; fhir:differential [ # 0..1 I Differential view of the structure fhir:element ( [ ElementDefinition ] ... ) ; # 1..* I Definition of elements in the resource (if no StructureDefinition) ] ; ]
Changes
since
R3
from
R5
to
R6
| StructureDefinition | |
|
|
|
|
|
|
Changes from R4B to R6
| StructureDefinition | |
| StructureDefinition.versionAlgorithm[x] |
|
|
|
|
| StructureDefinition.copyrightLabel |
|
| StructureDefinition.fhirVersion |
|
|
|
|
Changes from R4 to R6
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
See the Full Difference for further information
This
analysis
is
available
for
R4
as
XML
or
JSON
.
See
R3
<-->
R4
Conversion
Maps
(status
=
206
tests
that
all
execute
ok.
4
fail
round-trip
testing
and
206
r3
resources
are
invalid
(0
errors).
)
for
R4B
as
XML
or
JSON
.
Structure
| Name | Flags | Card. | Type |
Description
&
Constraints
Filter:
|
|---|---|---|---|---|
|
|
DomainResource |
Structural
Definition
+ Warning: Name should be usable as an identifier for the module by machine processing applications such as code generation + Rule: Element paths must be unique unless the structure is a constraint + Rule: If the structure defines an extension then the structure must have context information + Rule: A structure must have either a differential, or a snapshot (or both) + Rule: All element definitions must have an id + Rule: The first element in a snapshot has no type unless model is a logical model. + Rule: If the first element in a differential has no "." in the path and it's not a logical model, it has no type + Rule: In any snapshot or differential, no requirements on an element without a "." in the path (e.g. the first element) + Rule: All element definitions must have unique ids (snapshot) + Rule: All element definitions must have unique ids (diff) + Rule: Context Invariants can only be used for extensions + Rule: FHIR Specification models only use FHIR defined types + Rule: Default values can only be specified on specializations + Rule: FHIR Specification models never have default values + Rule: No slice name on root + Rule: If there's a base definition, there must be a derivation + Warning: Elements in Resources must have a min cardinality or 0 or 1 and a max cardinality of 1 or * + Rule: ContentReferences can only be defined in specializations, not constrained types Elements defined in Ancestors: id , meta , implicitRules , language , text , contained , extension , modifierExtension Interfaces Implemented: CanonicalResource |
|
|
Σ C | 1..1 | uri |
Canonical
identifier
for
this
structure
definition,
represented
as
a
URI
(globally
unique)
+ Warning: URL should not contain | or # - these characters make processing canonical references problematic |
|
Σ | 0..* | Identifier |
Additional
identifier
for
the
structure
definition
|
|
Σ | 0..1 | string |
Business
version
of
the
structure
definition
|
|
Σ
|
0..1 |
How
to
compare
versions
Binding: Version Algorithm ( Extensible ) |
|
|
string | |||
| Coding | |||
![]() ![]() | Σ C | 1..1 | string |
Name
for
this
structure
definition
(computer
friendly)
|
|
Σ T | 0..1 | string |
Name
for
this
structure
definition
(human
friendly)
|
|
?! Σ | 1..1 | code |
draft
|
active
|
retired
|
unknown
Binding: PublicationStatus ( Required ) |
|
Σ | 0..1 | boolean |
For
testing
|
|
Σ | 0..1 | dateTime |
Date
last
changed
|
|
Σ T | 0..1 | string |
Name
of
the
|
|
Σ | 0..* | ContactDetail |
Contact
details
for
the
publisher
|
|
T | 0..1 | markdown |
Natural
language
description
of
the
structure
definition
|
|
Σ
|
0..* | UsageContext |
The
context
that
the
content
is
intended
to
support
|
|
Σ | 0..* | CodeableConcept |
Jurisdiction
of
the
authority
that
maintains
the
structure
definition
(if
applicable)
Binding: Jurisdiction ValueSet
(
Extensible
)
|
|
T | 0..1 | markdown |
Why
this
structure
definition
is
defined
|
|
T | 0..1 | markdown |
Notice
about
intellectual
property
ownership,
can
include
restrictions
on
use
|
| T | 0..1 | string |
Copyright
holder
and
year(s)
|
|
Σ | 0..* | Coding |
Assist
with
indexing
and
finding
Binding: Structure Definition Use Codes / Keywords ( Extensible ) |
|
Σ | 0..1 | code |
FHIR
Version
this
StructureDefinition
targets
Binding: FHIRVersion ( Required ) |
|
|
0..* | BackboneElement |
External
specification
that
the
content
is
mapped
to
+ Rule: Must have at least a name or a uri (or both) |
|
1..1 | id |
Internal
id
when
this
mapping
is
used
|
|
|
|
0..1 | uri |
Identifies
what
this
mapping
refers
to
|
|
|
0..1 | string |
Names
what
this
mapping
refers
to
|
|
0..1 | string |
Versions,
Issues,
Scope
limitations
|
|
|
Σ C | 1..1 | code |
primitive-type
|
complex-type
|
resource
|
logical
|
|
Σ C | 1..1 | boolean |
Whether
the
structure
is
abstract
|
|
Σ
|
0..* | BackboneElement |
If
an
extension,
where
it
can
be
used
in
instances
|
|
Σ | 1..1 | code |
fhirpath
|
element
|
extension
|
|
Σ | 1..1 | string |
Where
the
extension
can
be
used
in
instances
|
|
Σ
|
0..* | string |
FHIRPath
invariants
-
when
the
extension
can
be
used
|
|
Σ
|
1..1 | uri |
Type
defined
or
constrained
by
this
structure
|
|
Σ
|
0..1 | canonical ( StructureDefinition ) |
Definition
that
this
type
is
constrained/specialized
from
|
|
Σ C | 0..1 | code |
specialization
|
constraint
-
How
relates
to
base
definition
|
|
|
0..1 | BackboneElement |
Snapshot
view
of
the
structure
+ Rule: Each element definition in a snapshot must have a formal definition and + Rule: All snapshot elements must start with the StructureDefinition's specified type for non-logical models, or with the same type name for logical models + Rule: For CodeableReference elements, target profiles must be listed on the CodeableReference, not the CodeableReference.reference + Rule: For CodeableReference elements, bindings must be listed on the CodeableReference, not the CodeableReference.concept + Guideline: The root element of a profile should not have mustSupport = true + Rule: All snapshot elements must have a base definition |
|
|
1..* | ElementDefinition |
Definition
of
elements
in
the
resource
(if
no
StructureDefinition)
+ Rule: provide either a binding reference or a description (or both) + Rule: If there are no discriminators, there must be a definition |
|
|
0..1 | BackboneElement |
Differential
view
of
the
structure
+ Rule: No slicing on the root element + Rule: 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 |
|
C | 1..* | ElementDefinition |
Definition
of
elements
in
the
resource
(if
no
StructureDefinition)
|
Documentation
for
this
format
|
||||
See the Extensions for this resource
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]"/><!-- I 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 --> <versionAlgorithm[x]><!-- 0..1 string|Coding How to compare versions --></versionAlgorithm[x]> <name value="[string]"/><!-- I 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 only - never for real usage --> <date value="[dateTime]"/><!-- 0..1 Date last changed --> <publisher value="[string]"/><!-- 0..1 Name of the publisher/steward (organization or individual) --> <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact> <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><jurisdiction><!-- 0..* CodeableConcept Jurisdiction of the authority that maintains the structure definition (if applicable)--></jurisdiction> <purpose value="[markdown]"/><!-- 0..1 Why this structure definition is defined -->
< <</keyword> <<copyright value="[markdown]"/><!-- 0..1 Notice about intellectual property ownership, can include restrictions on use --> <copyrightLabel value="[string]"/><!-- 0..1 Copyright holder and year(s) --> <keyword><!-- 0..* Coding Assist with indexing and finding --></keyword> <fhirVersion value="[code]"/><!-- 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]"/><!-- I 0..1 Identifies what this mapping refers to --> <name value="[string]"/><!-- I 0..1 Names what this mapping refers to --> <comment value="[string]"/><!-- 0..1 Versions, Issues, Scope limitations etc --> </mapping>< < <<kind value="[code]"/><!-- I 1..1 primitive-type | complex-type | resource | logical --> <abstract value="[boolean]"/><!-- I 1..1 Whether the structure is abstract --> <context> <!-- I 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>< < <</baseDefinition> < < <</element><contextInvariant value="[string]"/><!-- I 0..* FHIRPath invariants - when the extension can be used --> <type value="[uri]"/><!-- I 1..1 Type defined or constrained by this structure --> <baseDefinition><!-- I 0..1 canonical(StructureDefinition) Definition that this type is constrained/specialized from --></baseDefinition> <derivation value="[code]"/><!-- I 0..1 specialization | constraint - How relates to base definition --> <snapshot> <!-- I 0..1 Snapshot view of the structure --> <element><!-- I 1..* ElementDefinition Definition of elements in the resource (if no StructureDefinition) --></element> </snapshot>< <</element><differential> <!-- I 0..1 Differential view of the structure --> <element><!-- I 1..* ElementDefinition Definition of elements in the resource (if no StructureDefinition) --></element> </differential> </StructureDefinition>
JSON Template
{
"resourceType" : "StructureDefinition",
// from Resource: id, meta, implicitRules, and language
// from DomainResource: text, contained, extension, and modifierExtension
"
"url" : "<uri>", // I 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
// versionAlgorithm[x]: How to compare versions. One of these 2:
"versionAlgorithmString" : "<string>",
"versionAlgorithmCoding" : { Coding },
"name" : "<string>", // I 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 only - never for real usage
"date" : "<dateTime>", // Date last changed
"publisher" : "<string>", // Name of the publisher/steward (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 }], // Jurisdiction of the authority that maintains the structure definition (if applicable)
"purpose" : "<markdown>", // Why this structure definition is defined
"
"
"
"copyright" : "<markdown>", // Notice about intellectual property ownership, can include restrictions on use
"copyrightLabel" : "<string>", // Copyright holder and year(s)
"keyword" : [{ Coding }], // Assist with indexing and finding
"fhirVersion" : "<code>", // 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>", // I Identifies what this mapping refers to
"name" : "<string>", // I Names what this mapping refers to
"comment" : "<string>" // Versions, Issues, Scope limitations etc
}],
"
"
"
"kind" : "<code>", // I R! primitive-type | complex-type | resource | logical
"abstract" : <boolean>, // I R! Whether the structure is abstract
"context" : [{ // I 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>"], // I FHIRPath invariants - when the extension can be used
"type" : "<uri>", // I R! Type defined or constrained by this structure
"baseDefinition" : "<canonical(StructureDefinition)>", // I Definition that this type is constrained/specialized from
"derivation" : "<code>", // I specialization | constraint - How relates to base definition
"snapshot" : { // I Snapshot view of the structure
"element" : [{ ElementDefinition }] // I R! Definition of elements in the resource (if no StructureDefinition)
},
"
"
"differential" : { // I Differential view of the structure
"element" : [{ ElementDefinition }] // I 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 # from fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: ], ...; fhir: fhir: fhir: fhir: fhir: ], ...; fhir: fhir: fhir: fhir: fhir: fhir: ]; fhir: fhir: ];# from Resource: fhir:id, fhir:meta, fhir:implicitRules, and fhir:language # from DomainResource: fhir:text, fhir:contained, fhir:extension, and fhir:modifierExtension fhir:url [ uri ] ; # 1..1 I Canonical identifier for this structure definition, represented as a URI (globally unique) fhir:identifier ( [ Identifier ] ... ) ; # 0..* Additional identifier for the structure definition fhir:version [ string ] ; # 0..1 Business version of the structure definition # versionAlgorithm[x] : 0..1 How to compare versions. One of these 2 fhir:versionAlgorithm [ a fhir:String ; string ] fhir:versionAlgorithm [ a fhir:Coding ; Coding ] fhir:name [ string ] ; # 1..1 I Name for this structure definition (computer friendly) fhir:title [ string ] ; # 0..1 Name for this structure definition (human friendly) fhir:status [ code ] ; # 1..1 draft | active | retired | unknown fhir:experimental [ boolean ] ; # 0..1 For testing only - never for real usage fhir:date [ dateTime ] ; # 0..1 Date last changed fhir:publisher [ string ] ; # 0..1 Name of the publisher/steward (organization or individual) fhir:contact ( [ ContactDetail ] ... ) ; # 0..* Contact details for the publisher fhir:description [ markdown ] ; # 0..1 Natural language description of the structure definition fhir:useContext ( [ UsageContext ] ... ) ; # 0..* The context that the content is intended to support fhir:jurisdiction ( [ CodeableConcept ] ... ) ; # 0..* Jurisdiction of the authority that maintains the structure definition (if applicable) fhir:purpose [ markdown ] ; # 0..1 Why this structure definition is defined fhir:copyright [ markdown ] ; # 0..1 Notice about intellectual property ownership, can include restrictions on use fhir:copyrightLabel [ string ] ; # 0..1 Copyright holder and year(s) fhir:keyword ( [ Coding ] ... ) ; # 0..* Assist with indexing and finding fhir:fhirVersion [ code ] ; # 0..1 FHIR Version this StructureDefinition targets fhir:mapping ( [ # 0..* External specification that the content is mapped to fhir:identity [ id ] ; # 1..1 Internal id when this mapping is used fhir:uri [ uri ] ; # 0..1 I Identifies what this mapping refers to fhir:name [ string ] ; # 0..1 I Names what this mapping refers to fhir:comment [ string ] ; # 0..1 Versions, Issues, Scope limitations etc ] ... ) ; fhir:kind [ code ] ; # 1..1 I primitive-type | complex-type | resource | logical fhir:abstract [ boolean ] ; # 1..1 I Whether the structure is abstract fhir:context ( [ # 0..* I If an extension, where it can be used in instances fhir:type [ code ] ; # 1..1 fhirpath | element | extension fhir:expression [ string ] ; # 1..1 Where the extension can be used in instances ] ... ) ; fhir:contextInvariant ( [ string ] ... ) ; # 0..* I FHIRPath invariants - when the extension can be used fhir:type [ uri ] ; # 1..1 I Type defined or constrained by this structure fhir:baseDefinition [ canonical(StructureDefinition) ] ; # 0..1 I Definition that this type is constrained/specialized from fhir:derivation [ code ] ; # 0..1 I specialization | constraint - How relates to base definition fhir:snapshot [ # 0..1 I Snapshot view of the structure fhir:element ( [ ElementDefinition ] ... ) ; # 1..* I Definition of elements in the resource (if no StructureDefinition) ] ; fhir:differential [ # 0..1 I Differential view of the structure fhir:element ( [ ElementDefinition ] ... ) ; # 1..* I Definition of elements in the resource (if no StructureDefinition) ] ; ]
Changes
since
Release
3
from
R5
to
R6
| StructureDefinition | |
|
|
|
|
|
|
Changes from R4B to R6
| StructureDefinition | |
| StructureDefinition.versionAlgorithm[x] |
|
|
|
|
| StructureDefinition.copyrightLabel |
|
| StructureDefinition.fhirVersion |
|
|
|
|
Changes from R4 to R6
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
See the Full Difference for further information
This
analysis
is
available
for
R4
as
XML
or
JSON
.
See
R3
<-->
R4
Conversion
Maps
(status
=
206
tests
that
all
execute
ok.
4
fail
round-trip
testing
and
206
r3
resources
are
invalid
(0
errors).
)
for
R4B
as
XML
or
JSON
.
See
the
Profiles
&
Extensions
and
the
alternate
Additional
definitions:
Master
Definition
XML
+
JSON
,
XML
Schema
/
Schematron
+
JSON
Schema
,
ShEx
(for
Turtle
)
+
see
,
the
extensions
spreadsheet
version
&
the
dependency
analysis
| Path |
|
Type |
|
|---|---|---|---|
| StructureDefinition.versionAlgorithm[x] |
|
|
Indicates the mechanism used to compare versions to determine which is more current. |
| StructureDefinition.status | PublicationStatus | Required | The lifecycle status of an artifact. |
| StructureDefinition.jurisdiction |
![]() |
Extensible |
This value set defines a base set of codes for country, country subdivision and region for indicating where a resource is intended to be used.
Note:
The
codes
for
countries
and
country
subdivisions
are
taken
from
ISO
3166
|
| StructureDefinition.keyword |
DefinitionUseCodes
(a
valid
code
from
Structure
Definition
Use
Codes
)
|
Extensible |
Structure Definition Use Codes / Keywords |
| StructureDefinition.fhirVersion |
|
Required |
All published FHIR Versions. |
| StructureDefinition.kind | StructureDefinitionKind | Required |
Defines
the
type
of
structure
that
a
definition
is
describing.
|
| StructureDefinition.context.type |
|
Required |
How an extension context is interpreted. |
| StructureDefinition.type |
|
Extensible |
All FHIR types |
| StructureDefinition.derivation |
|
Required |
How a type relates to its baseDefinition. |
|
|
Level | Location | Description | Expression |
cnl-0
|
Warning | (base) | Name should be usable as an identifier for the module by machine processing applications such as code generation |
|
sdf-1
|
Rule | (base) | Element paths must be unique unless the structure is a constraint | derivation = 'constraint' or snapshot.element.select(path).isDistinct() |
cnl-1
| Warning | StructureDefinition.url | URL should not contain | or # - these characters make processing canonical references problematic | exists() implies matches('^[^|# ]+$') |
sdf-15a
|
Rule | (base) | If 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() |
sdf-2
|
Rule | StructureDefinition.mapping | Must have at least a name or a uri (or both) | name.exists() or uri.exists() |
sdf-3
|
Rule | StructureDefinition.snapshot |
Each
element
definition
in
a
snapshot
must
have
a
formal
definition
and
|
%resource.kind = 'logical' or element.all(definition.exists() and min.exists() and max.exists()) |
sdf-4
|
Rule | (base) | If the structure is not abstract, then there SHALL be a baseDefinition | abstract = true or baseDefinition.exists() |
sdf-5
|
Rule | (base) | If the structure defines an extension then the structure must have context information | type != 'Extension' or baseDefinition != 'http://hl7.org/fhir/StructureDefinition/Extension' or derivation = 'specialization' or (context.exists()) |
sdf-6
|
Rule | (base) | A structure must have either a differential, or a snapshot (or both) | snapshot.exists() or differential.exists() |
sdf-8
|
Rule | StructureDefinition.snapshot | All 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-9
| Rule | (base) | In any snapshot or differential, no requirements on an element without a "." in the path (e.g. the first element) | children().element.where(path.contains('.').not()).requirements.empty() |
sdf-10
|
Rule | StructureDefinition.snapshot.element | provide either a binding reference or a description (or both) | binding.empty() or binding.valueSet.exists() or binding.description.exists() |
sdf-11
|
Rule | (base) | If 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 |
sdf-14
|
Rule | (base) | All element definitions must have an id | snapshot.element.all(id.exists()) and differential.element.all(id.exists()) |
sdf-15
|
Rule | (base) | The first element in a snapshot has no type unless model is a logical model. | kind!='logical' implies snapshot.element.first().type.empty() |
sdf-16
|
Rule | (base) | All element definitions must have unique ids (snapshot) | snapshot.element.all(id.exists()) and snapshot.element.id.trace('ids').isDistinct() |
sdf-17
|
Rule | (base) | All element definitions must have unique ids (diff) | differential.element.all(id.exists()) and differential.element.id.trace('ids').isDistinct() |
sdf-18
|
Rule | (base) | Context Invariants can only be used for extensions | contextInvariant.exists() implies type = 'Extension' |
sdf-19
|
Rule | (base) | FHIR Specification models only use FHIR defined types |
url.startsWith('http://hl7.org/fhir/StructureDefinition')
implies
|
sdf-20
|
Rule | StructureDefinition.differential | No slicing on the root element | element.where(path.contains('.').not()).slicing.empty() |
sdf-21
|
Rule | (base) | Default values can only be specified on specializations | differential.element.defaultValue.exists() implies (derivation = 'specialization') |
sdf-22
|
Rule | (base) | FHIR Specification models never have default values | url.startsWith('http://hl7.org/fhir/StructureDefinition') implies (snapshot.element.defaultValue.empty() and differential.element.defaultValue.empty()) |
sdf-23
|
Rule | (base) | No slice name on root | (snapshot | differential).element.all(path.contains('.').not() implies sliceName.empty()) |
sdf-24
|
Rule |
|
|
|
sdf-25
|
Rule | StructureDefinition.snapshot |
| element.where(type.where(code='CodeableConcept').exists() and path.endsWith('.concept') and binding.exists() and (path.substring(0,$this.path.length()-8) in %context.element.where(type.where(code='CodeableReference').exists()).path)).exists().not() |
sdf-26
| Guideline | StructureDefinition.snapshot | The root element of a profile should not have mustSupport = true |
$this.where(element[0].mustSupport='true').exists().not()
This is (only) a best practice guideline because:
|
sdf-27
| Rule | (base) |
If
there's
a
base
|
|
sdf-28
|
Rule | StructureDefinition.snapshot.element | If there are no discriminators, there must be a definition | slicing.exists().not() or (slicing.discriminator.exists() or slicing.description.exists()) |
sdf-29
| Warning | (base) |
| ((kind in 'resource' | 'complex-type') and (derivation = 'specialization')) implies differential.element.where((min != 0 and min != 1) or (max != '1' and max != '*')).empty() |
sdf-30
| Rule | (base) | ContentReferences can only be defined in specializations, not constrained types | differential.element.where(contentReference.empty().not()).exists() implies derivation = 'specialization' |
sdf-8a
| Rule | StructureDefinition.differential |
In
any
differential,
all
the
|
|
sdf-8b
| Rule | StructureDefinition.snapshot | All snapshot elements must have a base definition | element.all(base.exists()) |
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
"[x]".
(Note:
when
substituting
[x]
with
a
specific
data
type,
always
capitalize
the
first
letter.
Choice
types
are
always
camel-case.
Ex:
"effectiveDateTime"
is
correct,
"effectivedateTime"
is
NOT
correct.)
is
as
operator
.
The
very
first
element
in
a
snapshot
(the
one
with
an
element
id
of
just
the
type
name)
defines
characteristics
that
apply
to
the
type
as
a
whole.
Some
of
these
characteristics
affect
the
constraints
that
can
hold
on
an
element
that
references
the
type.
For
example,
if
the
root
element
cardinality
is
0..1
,
then
an
element
declared
to
be
of
that
type
cannot
have
a
maximum
cardinality
greater
than
1.
(This
is
often
used
when
defining
extensions
to
indicate
that
multiple
extension
repetitions
of
that
type
are
not
allowed
within
a
single
element.)
In some cases, there can be redundancy between content defined on the root element and that defined on the StructureDefinition itself. For example, ElementDefinition has 'definition' while StructureDefinition has 'description'. These may have the same content put both places, though technically the 'definition' is text that describes what the type 'means', while 'description' is broader and may talk a bit about what the resource/data type/profile is for, in addition to its meaning.
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
,
type
,
base
,
and
url
,
using
this
basic
pattern:
{
"url": the identity of this structure definition,
"kind": (primitive-type | complex-type | resource | logical),
"type": the type being constrained (if it's a constraint)
"abstract" : {true | false},
"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": "complex-type",
"abstract" : false,
"baseDefinition": "http://hl7.org/fhir/StructureDefinition/Element"
}
{
"resourceType": "StructureDefinition",
"url": "http://hl7.org/fhir/StructureDefinition/Money",
"name": "Money",
"kind": "complex-type",
"type": "Quantity",
"abstract" : false,
"baseDefinition": "http://hl7.org/fhir/StructureDefinition/Quantity"
}
{
"resourceType": "StructureDefinition",
"url": "http://hl7.org/fhir/StructureDefinition/Patient",
"name": "Patient",
"kind": "resource",
"abstract" : false,
"baseDefinition": "http://hl7.org/fhir/StructureDefinition/DomainResource"
}
{
"resourceType": "StructureDefinition",
"url": "http://hl7.org/fhir/StructureDefinition/Extension",
"name": "Extension",
"kind": "datatype",
"kind": "complex-type",
"abstract" : false,
"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",
"abstract" : false,
"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": "complex-type",
"type": "Extension",
"abstract" : false,
"baseDefinition": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-race"
}
{
"resourceType": "StructureDefinition",
"url": "http://hl7.org/fhir/StructureDefinition/Resource",
"name": "Resource",
"kind": "resource",
"type": "Resource",
"abstract" : true,
"baseDefinition": "http://hl7.org/fhir/us/core/StructureDefinition/Base"
}
{
"resourceType": "StructureDefinition",
"url": "http://hl7.org/fhir/StructureDefinition/CanonicalResource",
"name": "CanonicalResource",
"kind": "resource",
"type": "CanonicalResource",
"abstract" : true,
"baseDefinition": "http://hl7.org/fhir/us/core/StructureDefinition/DomainResource"
}
{
"resourceType": "StructureDefinition",
"url": "http://hl7.org/fhir/StructureDefinition/Definition",
"name": "Definition",
"kind": "logical",
"type": "Definition",
"abstract" : false,
"baseDefinition": "http://hl7.org/fhir/us/core/StructureDefinition/Base"
}
On
this
list,
structure
definitions
of
type
1,
3,
and
5
and
8
-
9
can
only
be
defined
by
the
FHIR
specification
itself.
The
other
kinds
of
structure
definitions
are
(or
may
be)
created
by
the
specification
but
can
also
be
defined
by
other
implementers.
When
the
structure
is
a
constraint
(
derivation
=
constraint
),
see
Extending
and
Restricting
Resources
for
the
rules
that
apply.
Structures are able to map elements to concepts in other definition systems. 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 |
|---|---|
| Logical Mapping |
Formal
URL:
http://hl7.org/fhir/logical
These mappings map logical models to their conceptual equivalents in FHIR. One example of their use is to map from the CDA and V2 coded data types to CodeableConcept and Coding so that the validator can validate them on a terminology server |
ClinicalTrials.gov
Mapping
|
Formal
URL:
http://clinicaltrials.gov
|
Workflow
Pattern
|
Formal
URL:
http://hl7.org/fhir/workflow
|
CDISC
Define
XML
2.0
metadata
standard
|
Formal
URL:
http://www.cdisc.org/define-xml
|
FiveWs
Pattern
Mapping
![]() |
Formal
URL:
http://hl7.org/fhir/fivews
|
BRIDG
5.1
Mapping
![]() |
Formal
URL:
https://bridgmodel.nci.nih.gov
|
IDMP
Mapping
![]() |
Formal
URL:
https://www.iso.org/obp/ui/#iso:std:iso:11615
|
Bluetooth
Technology
![]() |
Formal
URL:
https://www.bluetooth.com
|
R3-ReferalRequest
Mapping
![]() |
Formal
URL:
http://hl7.org/fhir/rr
|
HL7
V2
Mapping
|
Formal
URL:
http://hl7.org/v2
The
mappings
provided
in
this
tab
are
indicative
of
how
HL7
v2
fields
relate
to
,
provides
additional
guidance
on
transforming
an
HL7
v2
message
to
FHIR
resources
for
FHIR
R4
and
FHIR
R6.
|
RIM
Mapping
|
Formal
URL:
http://hl7.org/v3
|
|
Formal
URL:
http://github.com/MDMI/ReferentIndexContent
|
![]() |
Formal
URL:
https://www.isbt128.org/uri/
|
Quality
Improvement
and
Clinical
Knowledge
(QUICK)
![]() |
Formal
URL:
http://siframework.org/cqf
|
Canadian
Pharmacy
Association
eclaims
standard
![]() |
Formal
URL:
http://www.pharmacists.ca/
|
UDI
Mapping
|
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
|
IHE
Data
Element
Exchange
(DEX)
![]() |
Formal
URL:
http://ihe.net/data-element-exchange
|
SNOMED
CT
Attribute
Binding
![]() |
Formal
URL:
http://snomed.org/attributebinding
Attribute bindings link coded data elements in FHIR resources to a corresponding attribute in the SNOMED CT concept model. These bindings help to support:
|
vCard
Mapping
![]() |
Formal
URL:
http://w3.org/vcard
|
Open
EHR
Archetype
Mapping
![]() |
Formal
URL:
http://openehr.org
|
ServD
![]() |
Formal
URL:
http://www.omg.org/spec/ServD/1.0/
|
FHIR
Provenance
Mapping
![]() |
Formal
URL:
http://hl7.org/fhir/provenance
|
FHIR
Consent
Mapping
![]() |
Formal
URL:
http://hl7.org/fhir/consent
|
Mapping
to
NCPDP
SCRIPT
10.6
![]() |
Formal
URL:
http://ncpdp.org/SCRIPT10_6
|
FHIR
Composition
|
Formal
URL:
http://hl7.org/fhir/composition
|
IHE
Structured
Data
Capture
|
Formal
URL:
http://siframework.org/ihe-sdc-profile
|
IDMP
Mapping
(Substance)
![]() |
Formal
URL:
https://www.iso.org/obp/ui/#iso:std:iso:11238
|
Canadian
Dental
Association
eclaims
standard
|
Formal
URL:
http://www.cda-adc.ca/en/services/cdanet/
|
XDS
metadata
equivalent
![]() |
Formal
URL:
https://profiles.ihe.net/ITI/TF/Volume3
|
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:
urn:iso:std:iso:11073:10207
|
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:
urn:iso:std:iso:11073:10206
|
|
Formal
URL:
http://hl7.org/qidam
|
|
Formal
URL:
http://hl7.org/fhir/interface
|
V3
Pharmacy
Dispense
RMIM
|
Formal
URL:
http://www.hl7.org/v3/PORX_RM020070UV
|
|
Formal
URL:
http://nema.org/dicom
|
Equivalent
CAP
Code
|
Formal
URL:
http://cap.org/ecc
|
CDA
(R2)
|
Formal
URL:
http://hl7.org/v3/cda
|
|
Formal
URL:
https://dicomstandard.org/current
|
FHIR
DocumentReference
|
Formal
URL:
http://hl7.org/fhir/documentreference
|
|
Formal
URL:
urn:iso:std:iso:11073:10201
|
FHIR
AuditEvent
Mapping
|
Formal
URL:
http://hl7.org/fhir/auditevent
|
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
|
Ontological
RIM
Mapping
|
Formal
URL:
http://hl7.org/orim
|
LOINC
code
for
the
element
|
Formal
URL:
http://loinc.org
|
iCalendar
|
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:
Additional resources are defined by StructureDefinition resources, following these rules:
http://hl7.org/fhir
6.0.0
or
a
subsequent
published
version
of
FHIR
resource
false
extension
to
indicate
adherence
to
the
CanonicalResource
or
MetadataResource
Interfaces
specialization
http://hl7.org/fhir/StructureDefinition/additional-resource-compartment
Here is an example with other properties removed:
{
"resourceType" : "StructureDefinition",
"url" : "http://hl7.org/fhir/uv/sql-on-fhir/StructureDefinition/ViewDefinition",
"fhirVersion" : "6.0.0",
"kind" : "resource",
"abstract" : false,
"type" : "http://hl7.org/fhir/uv/sql-on-fhir/StructureDefinition/ViewDefinition",
"baseDefinition" : "http://hl7.org/fhir/StructureDefinition/CanonicalResource",
"derivation" : "specialization",
"differential" : {
"element" : [{
"path" : "ViewDefinition",
// snip
}]
}
}
Once defined, additional resources are profiled like any other resource.
Search parameters for this resource. See also the full list of search parameters for this resource , and check the Extensions registry for search parameters on extensions related to 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
|
reference | 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 | |
|
context
|
token | A use context assigned to the structure definition |
|
24 Resources |
|
context-quantity
|
quantity | A quantity- or range-valued use context assigned to the structure definition |
|
24 Resources |
|
context-type
|
token | A type of use context assigned to the structure definition | StructureDefinition.useContext.code | 24 Resources |
|
context-type-quantity
|
composite | A use context type and quantity- or range-based value assigned to the structure definition |
On
StructureDefinition.useContext:
context-type: code context-quantity: |
24 Resources |
|
context-type-value
|
composite | A use context type and value assigned to the structure definition |
On
StructureDefinition.useContext:
context-type: code context: |
24 Resources |
|
date
|
date | The structure definition publication date | StructureDefinition.date | 25 Resources |
|
derivation
|
token | specialization | constraint - How relates to base definition | StructureDefinition.derivation | |
|
description
|
string | The description of the structure definition | StructureDefinition.description | 23 Resources |
|
experimental
|
token |
|
StructureDefinition.experimental | |
|
ext-context
|
composite | An extension context assigned to the structure definition |
On
StructureDefinition.context:
ext-context-type: type ext-context-expression: expression | |
| ext-context-expression | token |
| StructureDefinition.context.expression | |
| ext-context-type | token | A type of extension context assigned to the structure definition | StructureDefinition.context.type | |
|
identifier
|
token | External identifier for the structure definition | StructureDefinition.identifier | 28 Resources |
|
jurisdiction
|
token |
|
StructureDefinition.jurisdiction | 21 Resources |
|
keyword
|
token | A code for the StructureDefinition | StructureDefinition.keyword | |
|
kind
|
token | primitive-type | complex-type | resource | logical | StructureDefinition.kind | |
|
name
|
string | Computationally friendly name of the structure definition | StructureDefinition.name | 23 Resources |
|
path
|
token | A path that is constrained in the StructureDefinition | StructureDefinition.snapshot.element.path | StructureDefinition.differential.element.path | |
|
publisher
|
string | Name of the publisher of the structure definition | StructureDefinition.publisher | 25 Resources |
|
status
|
token | The current status of the structure definition | StructureDefinition.status | 28 Resources |
|
title
|
string | The human-friendly name of the structure definition | StructureDefinition.title | 23 Resources |
|
type
|
uri | Type defined or constrained by this structure | StructureDefinition.type | |
|
url
|
uri | The uri that identifies the structure definition | StructureDefinition.url | 29 Resources |
|
valueset
|
reference | A vocabulary binding reference |
StructureDefinition.snapshot.element.binding.valueSet
( ValueSet ) |
|
|
version
|
token | The business version of the structure definition | StructureDefinition.version | 26 Resources |