This
page
is
part
of
the
FHIR
Specification
(v4.0.1:
R4
(v5.0.0:
R5
-
Mixed
Normative
and
STU
)
).
This
is
the
current
published
version
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
.
Page
versions:
R5
R4B
R4
R3
R2
Work
Group
|
Maturity Level : N | Normative (from v4.0.0) | Security Category : N/A |
Compartments
:
|
A domain resource is a resource that:
As an abstract resource, this resource is never created directly; instead, one of its descendant resources ( see List of Resources ) is created.
This resource extends the base Resource . All of the listed Resources except Bundle , Parameters and Binary extend this resource.
Structure
| Name | Flags | Card. | Type |
Description
&
Constraints
|
|---|---|---|---|---|
|
|
Resource |
A
resource
with
narrative,
extensions,
and
contained
resources
+ Rule: If the resource is contained in another resource, it SHALL NOT contain nested Resources + Rule: If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource + Rule: If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated + Rule: If a resource is contained in another resource, it SHALL NOT have a security label + Guideline: A resource should have narrative for robust management Elements defined in Ancestors: id , meta , implicitRules , language |
|
|
C | 0..1 | Narrative |
Text
summary
of
the
resource,
for
human
interpretation
|
|
C | 0..* | Resource |
Contained,
inline
Resources
|
|
0..* | Extension |
Additional
content
defined
by
implementations
|
|
|
?! Σ | 0..* | Extension |
Extensions
that
cannot
be
ignored
|
Documentation
for
this
format
|
||||
UML Diagram ( Legend )
Structure
| Name | Flags | Card. | Type |
Description
&
Constraints
|
|---|---|---|---|---|
|
|
Resource |
A
resource
with
narrative,
extensions,
and
contained
resources
+ Rule: If the resource is contained in another resource, it SHALL NOT contain nested Resources + Rule: If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource + Rule: If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated + Rule: If a resource is contained in another resource, it SHALL NOT have a security label + Guideline: A resource should have narrative for robust management Elements defined in Ancestors: id , meta , implicitRules , language |
|
|
C | 0..1 | Narrative |
Text
summary
of
the
resource,
for
human
interpretation
|
|
C | 0..* | Resource |
Contained,
inline
Resources
|
|
0..* | Extension |
Additional
content
defined
by
implementations
|
|
|
?! Σ | 0..* | Extension |
Extensions
that
cannot
be
ignored
|
Documentation
for
this
format
|
||||
JSON
Template
Additional
definitions:
Master
Definition
XML
+
JSON
+
ShEx
,
the
spreadsheet
version
&
the
dependency
analysis
,
Resource
Representation
XML
+
JSON
+
Turtle
Template
|
|
Level | Location | Description | Expression |
dom-2
|
Rule | (base) | If the resource is contained in another resource, it SHALL NOT contain nested Resources | contained.contained.empty() |
dom-3
|
Rule | (base) | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource |
contained.where((('#'+id
in
(%resource.descendants().reference
|
|
dom-4
|
Rule | (base) | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated | contained.meta.versionId.empty() and contained.meta.lastUpdated.empty() |
dom-5
|
Rule | (base) | If a resource is contained in another resource, it SHALL NOT have a security label | contained.meta.security.empty() |
dom-6
|
Guideline | (base) | A resource should have narrative for robust management |
text.`div`.exists()
This is (only) a best practice guideline because:
|
To
search
for
extensions,
define
The
'contained'
mechanism
is
not
permitted
as
a
SearchParameter
means
of
reducing
server
calls.
I.e.,
It
is
not
allowed
to
package
a
set
of
resources
as
one
base
resource
and
a
set
of
contained
resources
to
allow
multiple
creates
or
updates
to
happen
in
a
single
transaction,
nor
is
it
permitted
to
use
'contained'
as
a
means
of
retrieving
multiple
resources
in
a
single
'read'.
'contained'
is
only
for
use
when
there
is
a
need
to
reference
another
resource,
but
the
extension.
All
other
search
parameters
are
named
aliases
for
existing
content
in
target
resource
does
not
have
any
independence
from
the
referencing
resource.
Most
commonly,
this
occurs
when
not
enough
information
is
known
to
allow
uniquely
identifying
the
target
resource.
For
example,
if
a
surgeon
is
known
only
as
"Dr.
Smith"
(no
full
name,
no
license
number,
etc.),
then
there
would
be
no
way
of
determining
which
of
the
candidate
"Dr.
Smith"
practitioners
was
being
referenced.
In
some
that
situation,
it
would
be
reasonable
for
the
Procedure
to
have
a
'contained'
reference
to
the
Practitioner.
In
other
cases,
though
there
might
be
enough
information
to
construct
an
independent
resource,
but
system
behavior
does
not
all,
recognize/permit
an
independent
identity.
As
an
example,
a
prescriber
might
create
a
prescription
for
a
custom
compound.
However,
rather
than
registering
the
search
parameter
name
is
compound
as
a
new
'Medication'
instance
(that
could
be
pointed
to
by
many
prescriptions/dispenses),
the
same
system
treats
the
compound
recipe
as
'part'
of
the
element
prescription
-
it
can
only
be
edited/modified
in
the
context
of
that
one
prescription
and
cannot
be
queried
or
manipulated
independently.
If
the
prescription
were
deleted,
the
Medication
would
be
deleted
as
well.
This
would
be
an
appropriate
use
of
'contained'.
A
key
consideration
with
respect
to
'contained'
resources
is
that
if
a
resource
is
sent
to
a
server
as
'contained',
then
it
searches,
but
this
is
not
required.
expected
to
remain
'contained'
(at
least
until
a
formal
update
is
received
that
removes
the
'contained'
resource
and
perhaps
replaces
it
with
a
reference
to
a
stand-alone
resource
due
to
additional
information
now
being
available).
For implementations concerned about minimizing the number of service calls, FHIR provides a number of options:
_include
and
_revinclude
to
return
additional
resources
that
are
relevant
as
part
of
the
query
REST can be somewhat heavy in terms of the number of service calls needed to manipulate all desired resources. This is part of the cost associated with the flexibility that allows a single RESTful interface to support a wide range of use-cases.
The
FHIR
specification
does
not
define
SearchParameters
for
most
of
the
standard
extensions
is
we
publish
and
obviously
cannot
define
SearchParameters
for
extensions
developed
by
implementers
outside
the
same
-
core
FHIR
specification.
However,
implementers
are
free
to
define
a
their
own
SearchParameters
for
any
extensions
they
make
use
of
and
servers
are
free
to
support
SearchParameters
above
and
beyond
those
published
as
part
of
the
FHIR
core
specification.
There
are
no
formal
naming
rules
for
extension-based
search
parameters.
Authors
SHOULD
name
the
search
parameters
in
such
a
way
that
identifies
the
value
linkage
between
the
extension
by
its
URL,
name
and
then
searches
can
filter
based
on
the
value
of
search
parameter
is
obvious.
The
expression
for
the
extension.
search
parameter
would
typically
end
with
extension('http://yourextensionurlhere').value
.
The
expression
would
also
need
to
provide
a
path
to
the
extension,
including
handling
situations
where
an
extension
appears
on
multiple
paths
if
necessary.
Additional
constraints
could
also
be
added
if
necessary
(e.g.
.exists(),
=true
,
etc.)
Common
search
Search
parameters
defined
by
this
resource.
abstract
resource
for
all
descendents.
See
Searching
for
more
information
about
searching
in
REST,
messaging,
and
services.
| Name | Type | Description | Paths |
| _text |
|
Search on the narrative of the resource |