|
StructureDefinition
|
|
Definition
|
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.
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.
|
|
Control
|
1..1
|
Alternate
Names
Alternate Names
|
Template;
Profile
Template; Profile
|
|
Invariants
|
Defined
on
this
element
Defined on this element
sdf-1
:
Element
paths
must
be
unique
unless
the
structure
is
a
constraint
(xpath:
exists(f:constrainedType)
or
(count(f:snapshot/f:element)
=
count(distinct-values(f:snapshot/f:element/f:path/@value))))
sdf-10
:
If
the
structure
is
not
abstract,
or
there's
a
constrained
type,
then
there
SHALL
be
a
base
(xpath:
(f:abstract/@value=true())
or
not(exists(f:constrainedType))
or
exists(f:base))
: Element paths must be unique unless the structure is a constraint (
expression
: derivation = 'constraint' or snapshot.element.select(path).distinct(), xpath: exists(f:baseType) or (count(f:snapshot/f:element) = count(distinct-values(f:snapshot/f:element/f:path/@value))))
sdf-11
:
If
there's
a
constrained
type,
its
content
must
match
the
path
name
in
the
first
element
of
a
snapshot
(xpath:
not(exists(f:constrainedType))
or
not(exists(f:snapshot))
or
(f:constrainedType/@value
=
f:snapshot/f:element[1]/f:path/@value))
: If there's a constrained type, its content must match the path name in the first element of a snapshot (
expression
: derivation = 'constraint' implies baseType and (snapshot.empty() or snapshot.element.first().path = baseType), xpath: not(exists(f:baseType)) or (f:derivation/@value != 'constraint') or not(exists(f:snapshot)) or (f:baseType/@value = f:snapshot/f:element[1]/f:path/@value))
sdf-12
:
element.base
cannot
appear
if
there
is
no
base
on
the
structure
definition
(xpath:
f:base
or
not(exists(f:snapshot/f:element/f:base)
or
exists(f:differential/f:element/f:base)))
: element.base cannot appear if there is no base on the structure definition (
expression
: snapshot.element.base implies baseType, xpath: f:baseType or not(exists(f:snapshot/f:element/f:base) or exists(f:differential/f:element/f:base)))
sdf-13
:
element.base
must
appear
if
there
is
a
base
on
the
structure
definition
(xpath:
not(f:constrainedType)
or
not(f:snapshot/f:element[not(f:base)]))
: baseType implies derivation (
expression
: baseType implies derivation, xpath: not(exists(f:baseType)) or exists(f:derivation))
sdf-4
:
A
structure
must
have
a
base
unless
abstract
=
true
(xpath:
(f:abstract/@value
=true())
or
exists(f:base))
: If the structure is not abstract, or there's a constrained type, then there SHALL be a base (
expression
: abstract = true or (baseType and baseDefinition), xpath: (f:abstract/@value=true()) or (exists(f:baseType) and exists(f:baseDefinition)))
sdf-5
:
If
the
structure
defines
an
extension
then
the
structure
must
have
context
information
(xpath:
not(f:constrainedType/@value
=
'extension')
or
(exists(f:context)
and
exists(f:contextType)))
: If the structure defines an extension then the structure must have context information (
expression
: baseType != 'Extension' or (context and contextType), xpath: not(f:baseType/@value = 'extension') or (exists(f:context) and exists(f:contextType)))
sdf-6
:
A
structure
must
have
either
a
differential,
or
a
snapshot
(or
both)
(xpath:
exists(f:snapshot)
or
exists(f:differential))
: A structure must have either a differential, or a snapshot (or both) (
expression
: snapshot or differential, xpath: exists(f:snapshot) or exists(f:differential))
sdf-7
:
If
the
structure
describes
a
base
Resource
or
Type,
the
URL
has
to
start
with
"http://hl7.org/fhir/StructureDefinition/"
and
the
tail
must
match
the
id
(xpath:
exists(f:constrainedType)
or
f:url/@value=concat('http://hl7.org/fhir/StructureDefinition/',
f:id/@value))
: If the structure describes a base Resource or Type, the URL has to start with "http://hl7.org/fhir/StructureDefinition/" and the tail must match the id (
expression
: (derivation = 'constraint') or (url = 'http://hl7.org/fhir/StructureDefinition/'+id), xpath: (f:derivation/@value = 'constraint') or f:url/@value=concat('http://hl7.org/fhir/StructureDefinition/', f:id/@value))
sdf-8
:
In
any
snapshot
or
differential,
all
the
elements
except
the
first
have
to
have
a
path
that
starts
with
the
path
of
the
first
+
"."
(xpath:
string-join(for
$elementName
in
f:*[self::f:snapshot
or
self::f:differential]/f:element[position()>1]/f:path/@value
return
if
(starts-with($elementName,
concat($elementName/ancestor::f:element/parent::f:*/f:element[1]/f:path/@value,
'.')))
then
''
else
$elementName,'')='')
: In any snapshot or differential, all the elements except the first have to have a path that starts with the path of the first + "." (
expression
: snapshot.element.tail().all(path.startsWith($context.snapshot.element.first().path+'.')) and differential.element.tail().all(path.startsWith($context.differential.element.first().path+'.')), xpath: string-join(for $elementName in f:*[self::f:snapshot or self::f:differential]/f:element[position()>1]/f:path/@value return if (starts-with($elementName, concat($elementName/ancestor::f:element/parent::f:*/f:element[1]/f:path/@value, '.'))) then '' else $elementName,'')='')
sdf-9
:
In
any
snapshot
or
differential,
no
label,
code
or
requirements
on
the
an
element
without
a
"."
in
the
path
(e.g.
the
first
element)
(xpath:
not(exists(f:snapshot/f:element[not(contains(f:path/@value,
'.'))
and
(f:label
or
f:code
or
f:requirements)]))
and
not(exists(f:differential/f:element[not(contains(f:path/@value,
'.'))
and
(f:label
or
f:code
or
f:requirements)])))
: In any snapshot or differential, no label, code or requirements on the an element without a "." in the path (e.g. the first element) (
expression
: children().element.first().label.empty() and children().element.first().code.empty() and children().element.first().requirements.empty(), xpath: not(exists(f:snapshot/f:element[not(contains(f:path/@value, '.')) and (f:label or f:code or f:requirements)])) and not(exists(f:differential/f:element[not(contains(f:path/@value, '.')) and (f:label or f:code or f:requirements)])))
|
|
StructureDefinition.url
|
|
Definition
|
An
absolute
URL
that
is
used
to
identify
this
structure
definition
when
it
is
referenced
in
a
specification,
model,
design
or
an
instance.
This
SHALL
be
a
URL,
SHOULD
be
globally
unique,
and
SHOULD
be
an
address
at
which
this
structure
definition
is
(or
will
be)
published.
An absolute URL that is used to identify this structure definition when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this structure definition is (or will be) published.
|
|
Control
|
1..1
|
|
Type
|
uri
|
|
Requirements
|
So
you
can
say,
in
a
StructureDefinition,
what
the
full
extension
URLs
should
be.
This
is
required
to
allow
hosting
StructureDefinitions
on
multiple
different
servers,
and
to
allow
for
the
editorial
process.
So you can say, in a StructureDefinition, what the full extension URLs should be. This is required to allow hosting StructureDefinitions on multiple different servers, and to allow for the editorial process.
|
Alternate
Names
Alternate Names
|
url;
authoritative-url;
destination;
identity
url; authoritative-url; destination; identity
|
|
Summary
|
true
|
gForge
Tasks
gForge Tasks
|
3265
3265
|
|
StructureDefinition.identifier
|
|
Definition
|
Formal
identifier
that
is
used
to
identify
this
StructureDefinition
when
it
is
represented
in
other
formats,
or
referenced
in
a
specification,
model,
design
or
an
instance
(should
be
globally
unique
OID,
UUID,
or
URI),
(if
it's
not
possible
to
use
the
literal
URI).
Formal identifier that is used to identify this StructureDefinition when it is represented in other formats, or referenced in a specification, model, design or an instance (should be globally unique OID, UUID, or URI), (if it's not possible to use the literal URI).
|
|
Note
|
This
is
a
business
identifer,
not
a
resource
identifier
(see
This is a business identifer, not a resource identifier (see
discussion
)
|
|
Control
|
0..*
|
|
Type
|
Identifier
|
|
Summary
|
true
|
|
StructureDefinition.version
|
|
Definition
|
The
identifier
that
is
used
to
identify
this
version
of
the
StructureDefinition
when
it
is
referenced
in
a
specification,
model,
design
or
instance.
This
is
an
arbitrary
value
managed
by
the
StructureDefinition
author
manually.
The identifier that is used to identify this version of the StructureDefinition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the StructureDefinition author manually.
|
|
Note
|
This
is
a
business
versionId,
not
a
resource
identifier
(see
This is a business versionId, not a resource version id (see
discussion
)
|
|
Control
|
0..1
|
|
Type
|
string
|
|
Requirements
|
There
may
be
multiple
resource
versions
of
the
StructureDefinition
that
have
this
same
identifier.
The
resource
version
id
will
change
for
technical
reasons,
whereas
the
stated
version
number
needs
to
be
under
the
author's
control.
There may be multiple resource versions of the StructureDefinition that have this same identifier. The resource version id will change for technical reasons, whereas the stated version number needs to be under the author's control.
|
|
Summary
|
true
|
|
StructureDefinition.name
|
|
Definition
|
A
free
text
natural
language
name
identifying
the
StructureDefinition.
A free text natural language name identifying the StructureDefinition.
|
|
Control
|
1..1
|
|
Type
|
string
|
|
Summary
|
true
|
|
Comments
|
Not
expected
to
be
globally
unique.
Not expected to be globally unique.
|
|
StructureDefinition.display
|
|
Definition
|
Defined
so
that
applications
can
use
this
name
when
displaying
the
value
of
the
extension
to
the
user.
Defined so that applications can use this name when displaying the value of the extension to the user.
|
|
Control
|
0..1
|
|
Type
|
string
|
|
Summary
|
true
|
|
Comments
|
Applications
don't
have
to
use
this
name,
but
can
always
fall
back
to
it.
In
the
absence
of
a
value
for
this
element,
use
the
name.
Applications don't have to use this name, but can always fall back to it. In the absence of a value for this element, use the name.
|
|
StructureDefinition.status
|
|
Definition
|
The
status
of
the
StructureDefinition.
The status of the StructureDefinition.
|
|
Control
|
1..1
|
|
Binding
|
ConformanceResourceStatus:
The
lifecycle
status
of
a
Value
Set
or
Concept
Map.
(
ConformanceResourceStatus:
The lifecycle status of a Value Set or Concept Map.
(
Required
)
|
|
Type
|
code
|
Is
Modifier
Is Modifier
|
true
|
|
Requirements
|
Allows
filtering
of
StructureDefinitions
that
are
appropriate
for
use
vs.
not.
Allows filtering of StructureDefinitions that are appropriate for use vs. not.
|
|
Summary
|
true
|
|
StructureDefinition.experimental
|
|
Definition
|
This
StructureDefinition
was
authored
for
testing
purposes
(or
education/evaluation/marketing),
and
is
not
intended
to
be
used
for
genuine
usage.
This StructureDefinition was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage.
|
|
Control
|
0..1
|
|
Type
|
boolean
|
|
Requirements
|
Allows
filtering
of
StructureDefinitions
that
are
appropriate
for
use
vs.
not.
Allows filtering of StructureDefinitions that are appropriate for use vs. not.
|
|
Summary
|
true
|
|
StructureDefinition.publisher
|
|
Definition
|
The
name
of
the
individual
or
organization
that
published
the
structure
definition.
The name of the individual or organization that published the structure definition.
|
|
Control
|
0..1
|
|
Type
|
string
|
|
Requirements
|
Helps
establish
the
"authority/credibility"
of
the
structure
definition.
May
also
allow
for
contact.
Helps establish the "authority/credibility" of the structure definition. May also allow for contact.
|
|
Summary
|
true
|
|
Comments
|
Usually
an
organization,
but
may
be
an
individual.
This
item
SHOULD
be
populated
unless
the
information
is
available
from
context.
Usually an organization, but may be an individual. This item SHOULD be populated unless the information is available from context.
|
|
StructureDefinition.contact
|
|
Definition
|
Contacts
to
assist
a
user
in
finding
and
communicating
with
the
publisher.
Contacts to assist a user in finding and communicating with the publisher.
|
|
Control
|
0..*
|
|
Summary
|
true
|
|
Comments
|
May
be
a
web
site,
an
email
address,
a
telephone
number
(tel:),
etc.
May be a web site, an email address, a telephone number (tel:), etc.
|
|
StructureDefinition.contact.name
|
|
Definition
|
The
name
of
an
individual
to
contact
regarding
the
structure
definition.
The name of an individual to contact regarding the structure definition.
|
|
Control
|
0..1
|
|
Type
|
string
|
|
Summary
|
true
|
|
Comments
|
If
there
is
no
named
individual,
the
telecom
is
for
the
organization
as
a
whole.
If there is no named individual, the telecom is for the organization as a whole.
|
|
StructureDefinition.contact.telecom
|
|
Definition
|
Contact
details
for
individual
(if
a
name
was
provided)
or
the
publisher.
Contact details for individual (if a name was provided) or the publisher.
|
|
Control
|
0..*
|
|
Type
|
ContactPoint
|
|
Summary
|
true
|
|
StructureDefinition.date
|
|
Definition
|
The
date
this
version
of
the
structure
definition
was
published.
The
date
must
change
when
the
business
version
changes,
if
it
does,
and
it
must
change
if
the
status
code
changes.
In
addition,
it
should
change
when
the
substantive
content
of
the
structure
definition
changes.
The date this version of the structure definition was published. The date must change when the business version changes, if it does, and it must change if the status code changes. In addition, it should change when the substantive content of the structure definition changes.
|
|
Control
|
0..1
|
|
Type
|
dateTime
|
|
Summary
|
true
|
|
Comments
|
Additional
specific
dates
may
be
added
as
extensions.
Additional specific dates may be added as extensions.
|
|
StructureDefinition.description
|
|
Definition
|
A
free
text
natural
language
description
of
the
StructureDefinition
and
its
use.
A free text natural language description of the StructureDefinition and its use.
|
|
Control
|
0..1
|
|
Type
|
string
|
|
Summary
|
true
|
|
Comments
|
This
field
can
be
used
for
things
such
as
why
the
StructureDefinition
was
written,
comments
about
misuse,
instructions
for
clinical
use
and
interpretation,
literature
references,
examples
from
the
paper
world,
etc.
It
is
This field can be used for things such as why the StructureDefinition was written, comments about misuse, instructions for clinical use and interpretation, literature references, examples from the paper world, etc. It is
not
a
rendering
of
the
StructureDefinition
as
conveyed
in
StructureDefinition.text.
This
item
SHOULD
be
populated
unless
the
information
is
available
from
context.
a rendering of the StructureDefinition as conveyed in StructureDefinition.text. This item SHOULD be populated unless the information is available from context.
|
|
StructureDefinition.useContext
|
|
Definition
|
The
content
was
developed
with
a
focus
and
intent
of
supporting
the
contexts
that
are
listed.
These
terms
may
be
used
to
assist
with
indexing
and
searching
of
structure
definitions.
The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of structure definitions.
|
|
Control
|
0..*
|
|
Binding
|
Context
of
Use
ValueSet:
Indicates
the
countries,
regions,
disciplines
and
other
aspects
of
use
within
which
this
artifact
is
targeted
for
use.
(
Context of Use ValueSet:
Indicates the countries, regions, disciplines and other aspects of use within which this artifact is targeted for use.
(
Extensible
)
|
|
Type
|
CodeableConcept
|
|
Requirements
|
Assist
in
searching
for
appropriate
content.
Assist in searching for appropriate content.
|
|
Summary
|
true
|
|
StructureDefinition.requirements
|
|
Definition
|
Explains
why
this
structure
definition
is
needed
and
why
it's
been
constrained
as
it
has.
Explains why this structure definition is needed and why it's been constrained as it has.
|
|
Control
|
0..1
|
|
Type
|
string
|
|
Comments
|
This
element
does
not
describe
the
usage
of
the
structure
definition
(that's
done
in
comments),
rather
it's
for
traceability
of
why
the
element
is
either
needed
or
This element does not describe the usage of the structure definition (that's done in comments), rather it's for traceability of
why
the
constraints
exist
as
they
do.
This
may
be
used
to
point
to
source
materials
or
specifications
that
drove
the
structure
of
this
data
element.
the element is either needed or why the constraints exist as they do. This may be used to point to source materials or specifications that drove the structure of this data element.
|
|
StructureDefinition.copyright
|
|
Definition
|
A
copyright
statement
relating
to
the
structure
definition
and/or
its
contents.
Copyright
statements
are
generally
legal
restrictions
on
the
use
and
publishing
of
the
details
of
the
constraints
and
mappings.
A copyright statement relating to the structure definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the details of the constraints and mappings.
|
|
Control
|
0..1
|
|
Type
|
string
|
Alternate
Names
Alternate Names
|
License;
Restrictions
License; Restrictions
|
|
StructureDefinition.code
|
|
Definition
|
A
set
of
terms
from
external
terminologies
that
may
be
used
to
assist
with
indexing
and
searching
of
templates.
A set of terms from external terminologies that may be used to assist with indexing and searching of templates.
|
|
Control
|
0..*
|
|
Binding
|
Structure
Definition
Codes:
Codes
for
the
meaning
of
the
defined
structure
(SNOMED
CT
and
LOINC
codes,
as
an
example).
(
Structure Definition Codes:
Codes for the meaning of the defined structure (SNOMED CT and LOINC codes, as an example).
(
Example
)
|
|
Type
|
Coding
|
|
Requirements
|
Assist
in
searching
for
appropriate
StructureDefinitions.
Assist in searching for appropriate StructureDefinitions.
|
|
Summary
|
true
|
|
StructureDefinition.fhirVersion
|
|
Definition
|
The
version
of
the
FHIR
specification
on
which
this
StructureDefinition
is
based
-
this
is
the
formal
version
of
the
specification,
without
the
revision
number,
e.g.
[publication].[major].[minor],
which
is
1.0.2
for
this
version.
The version of the FHIR specification on which this StructureDefinition is based - this is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is 1.4.0 for this version.
|
|
Control
|
0..1
|
|
Type
|
id
|
|
Summary
|
true
|
|
Comments
|
A
StructureDefinition
does
not
need
to
specify
the
target
it
applies
to,as
StructureDefinitions
will
often
be
valid
across
multiple
versions
of
FHIR.
FHIR
tooling
can
determine
whether
a
StructureDefinition
is
consistent
with
a
particular
StructureDefinition
if
desired.
A StructureDefinition does not need to specify the target it applies to,as StructureDefinitions will often be valid across multiple versions of FHIR. FHIR tooling can determine whether a StructureDefinition is consistent with a particular StructureDefinition if desired.
|
|
StructureDefinition.mapping
|
|
Definition
|
An
external
specification
that
the
content
is
mapped
to.
An external specification that the content is mapped to.
|
|
Control
|
0..*
|
|
Invariants
|
Defined
on
this
element
Defined on this element
sdf-2
:
Must
have
at
a
name
or
a
uri
(or
both)
(xpath:
exists(f:uri)
or
exists(f:name))
: Must have at a name or a uri (or both) (
expression
: name or uri, xpath: exists(f:uri) or exists(f:name))
|
|
StructureDefinition.mapping.identity
|
|
Definition
|
An
Internal
id
that
is
used
to
identify
this
mapping
set
when
specific
mappings
are
made.
An Internal id that is used to identify this mapping set when specific mappings are made.
|
|
Control
|
1..1
|
|
Type
|
id
|
|
Comments
|
The
specification
is
described
once,
with
general
comments,
and
then
specific
mappings
are
made
that
reference
this
declaration.
The specification is described once, with general comments, and then specific mappings are made that reference this declaration.
|
|
StructureDefinition.mapping.uri
|
|
Definition
|
An
absolute
URI
that
identifies
the
specification
that
this
mapping
is
expressed
to.
An absolute URI that identifies the specification that this mapping is expressed to.
|
|
Control
|
0..1
|
|
Type
|
uri
|
|
Comments
|
A
formal
identity
for
the
specification
being
mapped
to
helps
with
identifying
maps
consistently.
A formal identity for the specification being mapped to helps with identifying maps consistently.
|
|
Invariants
|
Affect
this
element
Affect this element
sdf-2
:
Must
have
at
a
name
or
a
uri
(or
both)
(xpath:
exists(f:uri)
or
exists(f:name))
: Must have at a name or a uri (or both) (
expression
: name or uri, xpath: exists(f:uri) or exists(f:name))
|
|
StructureDefinition.mapping.name
|
|
Definition
|
A
name
for
the
specification
that
is
being
mapped
to.
A name for the specification that is being mapped to.
|
|
Control
|
0..1
|
|
Type
|
string
|
|
Invariants
|
Affect
this
element
Affect this element
sdf-2
:
Must
have
at
a
name
or
a
uri
(or
both)
(xpath:
exists(f:uri)
or
exists(f:name))
: Must have at a name or a uri (or both) (
expression
: name or uri, xpath: exists(f:uri) or exists(f:name))
|
|
StructureDefinition.mapping.comments
|
|
Definition
|
Comments
about
this
mapping,
including
version
notes,
issues,
scope
limitations,
and
other
important
notes
for
usage.
Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usage.
|
|
Control
|
0..1
|
|
Type
|
string
|
|
StructureDefinition.kind
|
|
Definition
|
Defines
the
kind
of
structure
that
this
definition
is
describing.
Defines the kind of structure that this definition is describing.
|
|
Control
|
1..1
|
|
Binding
|
StructureDefinitionKind:
Defines
the
type
of
structure
that
a
definition
is
describing.
(
StructureDefinitionKind:
Defines the type of structure that a definition is describing.
(
Required
)
|
|
Type
|
code
|
|
Summary
|
true
|
StructureDefinition.constrainedType
StructureDefinition.abstract
|
|
Definition
|
The
type
of
type
that
is
being
constrained
-
a
data
type,
an
extension,
a
resource,
including
abstract
ones.
If
this
field
is
present,
it
indicates
that
the
structure
definition
is
a
constraint.
If
it
is
not
present,
then
the
structure
definition
is
the
definition
of
a
base
structure.
Whether structure this definition describes is abstract or not - that is, whether an actual exchanged item can ever be of this type.
|
|
Control
|
1..1
|
|
Type
|
boolean
|
|
Summary
|
true
|
|
Comments
|
Abstract Resources cannot be instantiated - a concrete sub-type must be used. Abstract datatypes and extensions cannot be used in an instance. Flagging a constraint structure as abstract conveys design intent but makes no difference to how the structure definition is handled. Note that inline declared elements that are given the type "Element" in the profile, but have children described, are anonymous concrete types that specialise Element. Abstract is not relevant for logical models.
|
|
StructureDefinition.contextType
|
|
Definition
|
If this is an extension, Identifies the context within FHIR resources where the extension can be used.
|
|
Control
|
0..1
|
|
Binding
|
FHIRDefinedType:
Any
defined
Resource
or
Data
Type
name
ExtensionContext:
How an extension context is interpreted.
(
Required
)
|
|
Type
|
code
|
|
Summary
|
true
|
Comments
if
a
constrained
type
is
present,
then
there
SHALL
be
a
base
resource
as
well.
Note
that
the
constrained
type
could
be
determined
by
chasing
through
the
base
references
until
the
base
definition
is
reached,
or
by
looking
at
the
path
of
the
first
element
in
the
snapshot
-
if
present
-
but
providing
the
constrainedType
directly
makes
for
simpler
tooling
and
indexing.
|
Invariants
|
Affect
this
element
Affect this element
sdf-10
:
If
the
structure
is
not
abstract,
or
there's
a
constrained
type,
then
there
SHALL
be
a
base
(xpath:
(f:abstract/@value=true())
or
not(exists(f:constrainedType))
or
exists(f:base))
sdf-11
:
If
there's
a
constrained
type,
its
content
must
match
the
path
name
in
the
first
element
of
a
snapshot
(xpath:
not(exists(f:constrainedType))
or
not(exists(f:snapshot))
or
(f:constrainedType/@value
=
f:snapshot/f:element[1]/f:path/@value))
sdf-5
: If the structure defines an extension then the structure must have context information (
expression
: baseType != 'Extension' or (context and contextType), xpath: not(f:baseType/@value = 'extension') or (exists(f:context) and exists(f:contextType)))
|
StructureDefinition.abstract
StructureDefinition.context
|
|
Definition
|
Whether
structure
this
definition
describes
is
abstract
or
not
-
that
is,
whether
an
actual
exchanged
item
can
ever
be
of
this
type.
Identifies the types of resource or data type elements to which the extension can be applied.
|
|
Control
|
1..1
0..*
|
|
Type
|
boolean
string
|
|
Summary
|
true
|
|
Comments
|
Abstract
Resources
cannot
be
instantiated
-
a
concrete
sub-type
must
be
used.
Abstract
datatypes
and
extensions
cannot
be
used
in
an
instance.
Flagging
a
constraint
structure
as
abstract
conveys
design
intent
but
makes
no
difference
to
how
the
structure
definition
is
handled.
Note
that
inline
declared
elements
that
are
given
the
type
"Element"
in
the
profile,
but
have
children
described,
are
anonymous
concrete
types
that
specialise
Element.
Abstract
is
not
relevant
for
logical
models.
If the context is an element that can have multiple types, then use (e.g.) value[x] if the extension works on all choice types, or otherwise an enumeration of explicitly named elements if not. Note that a context of "string" doesn't mean that the extension can be used with one of the string patterns such as "id" etc.
|
|
Invariants
|
Affect this element
sdf-5
: If the structure defines an extension then the structure must have context information (
expression
: baseType != 'Extension' or (context and contextType), xpath: not(f:baseType/@value = 'extension') or (exists(f:context) and exists(f:contextType))) |
StructureDefinition.contextType
StructureDefinition.baseType
|
|
Definition
|
If
this
is
an
extension,
Identifies
the
context
within
FHIR
resources
where
the
extension
can
be
used.
The type of type that this structure is derived from - a data type, an extension, a resource, including abstract ones. If this field is present, it indicates that the structure definition is deriving from this type. If it is not present, then the structure definition is the definition of a base abstract structure.
|
|
Control
|
0..1
|
|
Binding
|
ExtensionContext:
How
an
extension
context
is
interpreted.
(
Required
FHIRDefinedType:
Any defined Resource or Data Type name
)
|
|
Type
|
code
|
|
Summary
|
true
|
|
Comments
|
if a baseType is present, then there SHALL be a baseDefinition as well. Note that the baseType could be determined by chasing through the baseDefinition references until a concrete structure (derivation = specialization) is reached, or by looking at the path of the first element in the snapshot - if present - but providing the baseType directly makes for simpler tooling and indexing.
|
|
Invariants
|
Affect
this
element
Affect this element
sdf-4
: If the structure is not abstract, or there's a constrained type, then there SHALL be a base (
expression
: abstract = true or (baseType and baseDefinition), xpath: (f:abstract/@value=true()) or (exists(f:baseType) and exists(f:baseDefinition)))
sdf-5
:
If
the
structure
defines
an
extension
then
the
structure
must
have
context
information
(xpath:
not(f:constrainedType/@value
=
'extension')
or
(exists(f:context)
and
exists(f:contextType)))
sdf-11
: If there's a constrained type, its content must match the path name in the first element of a snapshot (
expression
: derivation = 'constraint' implies baseType and (snapshot.empty() or snapshot.element.first().path = baseType), xpath: not(exists(f:baseType)) or (f:derivation/@value != 'constraint') or not(exists(f:snapshot)) or (f:baseType/@value = f:snapshot/f:element[1]/f:path/@value))
|
StructureDefinition.context
StructureDefinition.baseDefinition
|
|
Definition
|
Identifies
the
types
of
resource
or
data
type
elements
to
which
the
extension
can
be
applied.
An absolute URI that is the base structure from which this type is derived, either by specialization or constraint.
|
|
Control
|
0..*
0..1
|
|
Type
|
string
uri
|
|
Summary
|
true
|
|
Comments
|
If
the
context
is
an
element
that
can
have
multiple
types,
then
use
(e.g.)
value[x]
if
the
extension
works
on
all
choice
types,
or
otherwise
an
enumeration
of
explicitly
named
elements
if
not.
Note
that
a
context
of
"string"
doesn't
mean
that
the
extension
can
be
used
with
one
of
the
string
patterns
such
as
"id"
etc.
If differential constraints are specified in this structure, they are applied to the base in a "differential" fashion. If there is no base, then the differential constraints cannot be provided (snapshot only). Differential structures are useful for the editing perspective, and snapshot structures are suitable for operational use. The FHIR Project provides a number of tools/services to populate snapshots from differential constraints. Logical Models have a base of "Element" or another logical model.
|
|
Invariants
|
Affect
this
element
Affect this element
sdf-5
:
If
the
structure
defines
an
extension
then
the
structure
must
have
context
information
(xpath:
not(f:constrainedType/@value
=
'extension')
or
(exists(f:context)
and
exists(f:contextType)))
sdf-4
: If the structure is not abstract, or there's a constrained type, then there SHALL be a base (
expression
: abstract = true or (baseType and baseDefinition), xpath: (f:abstract/@value=true()) or (exists(f:baseType) and exists(f:baseDefinition)))
|
StructureDefinition.base
StructureDefinition.derivation
|
|
Definition
|
An
absolute
URI
that
is
the
base
structure
from
which
this
set
of
constraints
is
derived.
How the type relates to the baseDefinition.
|
|
Control
|
0..1
|
|
Binding
|
TypeDerivationRule:
How a type relates to it's baseDefinition.
(
Required
)
|
|
Type
|
uri
code
|
|
Summary
|
true
|
|
Comments
|
If
differential
constraints
are
specified
in
this
structure,
they
are
applied
to
the
base
in
a
"differential"
fashion.
If
there
is
no
base,
then
the
differential
constraints
cannot
be
provided
(snapshot
only).
Differential
structures
are
useful
for
the
editing
perspective,
and
snapshot
structures
are
suitable
for
operational
use.
The
FHIR
Project
provides
a
number
of
tools/services
to
populate
snapshots
from
differential
constraints.
Logical
Models
have
a
base
of
"Element"
or
another
logical
model.
If the definition is a specialization, then it adds new elements in the differential, and the snapshot includes the inherited elements.
If the definition is a constraint, then it can not define new elements, it can only make new rules about existing content (see
Profiling Resources
).
|
|
Invariants
|
Affect
this
element
Affect this element
sdf-4
:
A
structure
must
have
a
base
unless
abstract
=
true
(xpath:
(f:abstract/@value
=true())
or
exists(f:base))
sdf-10
:
If
the
structure
is
not
abstract,
or
there's
a
constrained
type,
then
there
SHALL
be
a
base
(xpath:
(f:abstract/@value=true())
or
not(exists(f:constrainedType))
or
exists(f:base))
sdf-13
: baseType implies derivation (
expression
: baseType implies derivation, xpath: not(exists(f:baseType)) or exists(f:derivation))
|
|
StructureDefinition.snapshot
|
|
Definition
|
A
snapshot
view
is
expressed
in
a
stand
alone
form
that
can
be
used
and
interpreted
without
considering
the
base
StructureDefinition.
A snapshot view is expressed in a stand alone form that can be used and interpreted without considering the base StructureDefinition.
|
|
Control
|
0..1
|
|
Invariants
|
Defined
on
this
element
Defined on this element
sdf-3
:
Each
element
definition
in
a
snapshot
must
have
a
formal
definition
and
cardinalities
(xpath:
count(f:element)
=
count(f:element[exists(f:definition)
and
exists(f:min)
and
exists(f:max)]))
: Each element definition in a snapshot must have a formal definition and cardinalities (
expression
: element.all(definition and min and max), xpath: count(f:element) = count(f:element[exists(f:definition) and exists(f:min) and exists(f:max)]))
Affect
this
element
Affect this element
sdf-6
:
A
structure
must
have
either
a
differential,
or
a
snapshot
(or
both)
(xpath:
exists(f:snapshot)
or
exists(f:differential))
: A structure must have either a differential, or a snapshot (or both) (
expression
: snapshot or differential, xpath: exists(f:snapshot) or exists(f:differential))
|
|
StructureDefinition.snapshot.element
|
|
Definition
|
Captures
constraints
on
each
element
within
the
resource.
Captures constraints on each element within the resource.
|
|
Control
|
1..*
|
|
Type
|
ElementDefinition
|
|
Invariants
|
Affect
this
element
Affect this element
sdf-3
:
Each
element
definition
in
a
snapshot
must
have
a
formal
definition
and
cardinalities
(xpath:
count(f:element)
=
count(f:element[exists(f:definition)
and
exists(f:min)
and
exists(f:max)]))
: Each element definition in a snapshot must have a formal definition and cardinalities (
expression
: element.all(definition and min and max), xpath: count(f:element) = count(f:element[exists(f:definition) and exists(f:min) and exists(f:max)]))
|
|
StructureDefinition.differential
|
|
Definition
|
A
differential
view
is
expressed
relative
to
the
base
StructureDefinition
-
a
statement
of
differences
that
it
applies.
A differential view is expressed relative to the base StructureDefinition - a statement of differences that it applies.
|
|
Control
|
0..1
|
|
Invariants
|
Affect
this
element
Affect this element
sdf-6
:
A
structure
must
have
either
a
differential,
or
a
snapshot
(or
both)
(xpath:
exists(f:snapshot)
or
exists(f:differential))
: A structure must have either a differential, or a snapshot (or both) (
expression
: snapshot or differential, xpath: exists(f:snapshot) or exists(f:differential))
|
|
StructureDefinition.differential.element
|
|
Definition
|
Captures
constraints
on
each
element
within
the
resource.
Captures constraints on each element within the resource.
|
|
Control
|
1..*
|
|
Type
|
ElementDefinition
|
©
HL7.org
2011+.
FHIR
DSTU2
(v1.0.2-7202)
generated
on
Sat,
Oct
24,
2015
07:44+1100.
Links:
Search