This
page
is
part
of
the
FHIR
Specification
(v3.3.0:
R4
Ballot
2).
(v5.0.0-draft-final:
Final
QA
Preview
for
R5
-
see
ballot
notes
).
The
current
version
which
supercedes
this
version
is
5.0.0
.
For
a
full
list
of
available
versions,
see
the
Directory
of
published
versions
.
Page
versions:
R5
R4B
R4
R3
R2
FHIR
Infrastructure
Work
Group
|
Maturity
Level
:
|
Trial
Use
|
Security
Category
:
| Compartments : Not linked to any defined compartments |
A
Map
of
relationships
between
2
structures
that
can
be
made.
used
to
transform
data.
The
RESTful
API
StructureMap
resource
defines
a
detailed
set
of
common
interactions
(read,
update,
search,
etc.)
performed
on
a
repository
rules
that
describe
how
one
Structure
is
related
to
another
and
provides
sufficient
detail
to
allow
for
automated
conversion
of
typed
resources.
These
interactions
follow
the
RESTful
paradigm
instances.
The
intention
of
managing
state
by
C
reate/
R
ead/
U
pdate/
D
elete
actions
on
the
structure
map
resource
is
to
allow
a
specialist
in
formats
and
interoperability
to
specify
the
full
relationships
between
two
structures
(e.g.
a
CDA
document
and
a
set
of
identified
resources.
While
this
approach
solves
FHIR
resources),
and
then
many
use
cases,
there
is
some
specific
functionality
that
different
systems
-
both
testing
and
production
clinical
systems
-
can
leverage
that
to
automatically
transform
from
one
format
to
the
other.
Maps
are
unidirectional:
they
map
from
the
source
structure
to
the
target
structure,
and
no
reverse
map
is
implied.
Even
if
the
mapping
is
simple,
and
loss-less,
it
cannot
be
met
more
efficiently
using
an
RPC-like
paradigm,
where
named
operations
assumed
that
there
are
performed
no
conditions
that
might
additionally
apply
in
the
reverse
direction.
The
mapping
language,
along
with
inputs
a
concrete
syntax,
is
defined
in
detail
in
the
FHIR
Mapping
Language
.
The
StructureMap
resource
represents
the
abstract
syntax,
and
outputs
(
E
xecute).
Operations
the
concrete
syntax
is
the
recommended
narrative
representation
for
a
StructureMap.
See
also
the
Tutorial
.
Note
that
many
mappings
between
models
only
establish
conceptual
equivalence
between
the
structures.
These
models
are
used
(a)
where
useful
because
they
quickly
convey
how
the
server
needs
structures
are
related
to
play
humans,
whereas
more
maps
with
sufficient
detail
to
support
instance
transformation
are
necessarily
full
of
fine
detail
that
can
obscure
the
conceptual
relationships.
The
ConceptMap
resource
is
suitable
for
representing
high
level
relationships
between
models,
while
this
StructureMap
resource
is
intended
to
describe
the
full
details
that
need
to
be
known
in
order
to
transform
an
active
role
instance
of
data
from
one
structure
to
another.
The
StructureMap
resource
assumes
that
both
the
source
and
the
target
models
are
fully
defined
using
StructureDefinition
resources
-
either
resources,
or
logical
models,
and
is
described
accordingly.
However,
there
is
no
direct
relationship
between
the
mapping
language
contained
in
formulating
the
content
StructureMap
resource,
and
the
existence
of
the
response,
appropriate
structure
definitions,
so
that
this
mapping
language
could
be
used
to
define
a
map
from
an
HL7
V2
message
to
a
CDA
document.
Note,
that
various
implementation
contexts
may
introduce
a
direct
relationship
(e.g.
see
[op
to
defined]).
It's
possible
to
apply
the
mapping
language
to
structures
that
do
not
merely
return
existing
information,
or
(b)where
even
have
(or
cannot
have)
formally
defined
types,
although
the
intended
purpose
type-related
parts
of
the
mapping
language
cannot
be
used
in
these
cases.
The
Mapping
Language
and
the
StructureMap
resource
are
built
on
top
of
FHIRPath
,
and
a
FHIRPath
implementation
is
required
in
order
to
execute
a
StructureMap.
Each
structure
map
contains,
in
addition
to
cause
side
effects
such
as
the
modification
standard
metadata
that
all
conformance
resources
contain,
the
following
information:
Each
group
of
rules
defines
a
lightweight
operation
framework
set
of
input
and
output
variables
that
seamlessly
extends
must
be
passed
when
the
RESTful
API.
group
is
invoked
in
a
particular
context.
When
a
group
is
invoked,
all
the
rules
in
the
group
are
checked
to
see
whether
they
apply.
Operations
Each
rule
may
have
some
or
all
of
the
following
general
properties:
The
mapping
language
is
entirely
declarative;
there
is
no
imperative
or
a
whole
system
procedural
aspects
to
the
definitions.
Operations
are
executed
using
Structure
| Name | Flags | Card. | Type |
Description
&
Constraints
![]() |
|---|---|---|---|---|
![]() | TU | DomainResource |
A
Map
of
relationships
between
2
structures
that
can
be
used
to
transform
data
+ Warning: Name should be usable as an identifier for the module by machine processing applications such as code generation Elements defined in Ancestors: id , meta , implicitRules , language , text , contained , extension , modifierExtension Interfaces Implemented: CanonicalResource | |
![]() ![]() | Σ C | 1..1 | uri |
Canonical
identifier
for
this
structure
map,
represented
as
a
URI
(globally
unique)
+ Warning: URL |
![]() ![]() | Σ | 0..* | Identifier |
Additional
identifier
for
the
|
![]() ![]() | Σ | 0..1 | string |
Business
version
of
the
structure
map
|
![]() ![]() | Σ | 0..1 |
How
to
compare
versions
Binding: Version Algorithm ( Extensible ) | |
![]() ![]() ![]() | string | |||
![]() ![]() ![]() | Coding | |||
![]() ![]() |
Σ C | 1..1 | string |
Name
for
this
structure
map
(computer
friendly)
|
![]() ![]() | Σ T | 0..1 | string |
Name
for
this
structure
map
(human
friendly)
|
![]() ![]() | ?! Σ | 1..1 | code |
draft
|
active
|
retired
|
unknown
Binding: PublicationStatus ( Required ) |
![]() ![]() | Σ | 0..1 | boolean |
For
testing
purposes,
not
real
usage
|
![]() ![]() | Σ | 0..1 | dateTime |
Date
last
changed
|
![]() ![]() | Σ T | 0..1 | string |
Name
of
the
|
![]() ![]() | Σ | 0..* | ContactDetail |
Contact
details
for
the
|
![]() ![]() | T | 0..1 | markdown |
Natural
language
description
of
the
|
![]() ![]() | Σ | 0..* | UsageContext |
The
context
that
the
|
![]() ![]() | Σ | 0..* | CodeableConcept |
Intended
jurisdiction
for
structure
map
(if
applicable)
Binding: Jurisdiction ValueSet ( Extensible ) |
![]() ![]() | T | 0..1 | markdown |
Why
this
structure
map
is
defined
|
![]() ![]() | T | 0..1 | markdown |
Use
and/or
publishing
restrictions
|
![]() ![]() | T | 0..1 | string |
Copyright
holder
and
year(s)
|
![]() ![]() | Σ | 0..* | BackboneElement |
Structure
Definition
used
|
![]() ![]() ![]() | Σ | 1..1 | canonical ( StructureDefinition ) |
Canonical
reference
to
structure
definition
|
![]() ![]() ![]() | Σ | 1..1 | code |
source
|
queried
|
target
|
produced
Binding: Structure Map Model Mode ( Required ) |
![]() ![]() ![]() | Σ | 0..1 | string |
Name
for
|
![]() ![]() ![]() |
0..1 | string |
Documentation
on
| |
![]() ![]() | Σ | 0..* | canonical ( StructureMap ) |
Other
maps
used
by
this
map
(canonical
URLs)
|
![]() ![]() | Σ | 0..* | BackboneElement |
Definition
of
|
![]() ![]() ![]() | Σ | 0..1 | id |
Constant
name
|
![]() ![]() ![]() | Σ | 0..1 | string |
FHIRPath
exression
-
value
of
the
|
![]() ![]() | Σ | 1..* | BackboneElement |
Named
sections
for
reader
convenience
|
![]() ![]() ![]() | Σ | 1..1 | id |
Human-readable
label
|
![]() ![]() ![]() | Σ | 0..1 | id |
Another
group
that
|
![]() ![]() ![]() | Σ | 0..1 | code |
types
|
type-and-types
Binding: Structure Map Group Type Mode ( Required ) |
![]() ![]() ![]() | Σ | 0..1 | string |
Additional
description/explanation
for
group
|
![]() ![]() ![]() | Σ | 1..* | BackboneElement |
Named
instance
provided
when
invoking
the
map
|
![]() ![]() ![]() ![]() | Σ | 1..1 | id |
Name
for
this
instance
of
|
![]() ![]() ![]() ![]() |
Σ | 0..1 | string |
Type
for
this
instance
|
![]() ![]() ![]() ![]() | Σ | 1..1 | code |
source
|
target
Binding: Structure Map Input Mode ( Required ) |
![]() ![]() ![]() ![]() | 0..1 | string |
Documentation
for
this
instance
of
data
| |
![]() ![]() ![]() | Σ | 0..* | BackboneElement |
Transform
Rule
from
source
to
target
|
![]() ![]() ![]() ![]() | Σ | 0..1 | id |
Name
of
the
rule
for
internal
references
|
![]() ![]() ![]() ![]() | Σ | 1..* | BackboneElement |
Source
inputs
to
the
mapping
|
![]() ![]() ![]() ![]() ![]() | Σ | 1..1 | id |
Type
or
variable
this
rule
applies
to
|
![]() ![]() ![]() ![]() ![]() | Σ | 0..1 | integer |
Specified
minimum
cardinality
|
![]() ![]() ![]() ![]() ![]() | Σ | 0..1 | string |
Specified
maximum
cardinality
(number
or
*)
|
![]() ![]() ![]() ![]() ![]() | Σ | 0..1 | string |
Rule
only
applies
if
source
has
this
type
|
![]() ![]() ![]() ![]() ![]() | Σ | 0..1 | string |
Default
value
if
no
value
exists
|
![]() ![]() ![]() ![]() ![]() | Σ | 0..1 | string |
Optional
field
for
this
source
|
![]() ![]() ![]() ![]() ![]() | Σ | 0..1 | code |
first
|
not_first
|
last
|
not_last
|
only_one
Binding: Structure Map Source List Mode ( Required ) |
![]() ![]() ![]() ![]() ![]() | Σ | 0..1 | id |
Named
context
for
field,
if
a
|
![]() ![]() ![]() ![]() ![]() | Σ | 0..1 | string |
FHIRPath
expression
-
must
be
true
or
the
|
![]() ![]() ![]() ![]() ![]() | Σ | 0..1 | string |
FHIRPath
expression
-
must
be
true
or
the
mapping
engine
throws
an
error
instead
of
|
![]() ![]() ![]() ![]() ![]() | Σ | 0..1 | string |
Message
to
put
in
log
if
source
exists
(FHIRPath)
|
![]() ![]() ![]() ![]() | Σ C | 0..* | BackboneElement |
Content
to
create
because
of
this
mapping
rule
+ Rule: Can only have an element if you have a |
![]() ![]() ![]() ![]() ![]() | Σ C | 0..1 | string |
Variable
this
rule
applies
to
|
![]() ![]() ![]() ![]() ![]() | Σ C | 0..1 | string |
Field
to
create
in
the
context
|
![]() ![]() ![]() ![]() ![]() | Σ | 0..1 | id |
Named
context
for
field,
if
desired,
and
a
field
is
specified
|
![]() ![]() ![]() ![]() ![]() | Σ | 0..* | code |
first
|
share
|
last
|
single
Binding: Structure Map Target List Mode ( Required ) |
![]() ![]() ![]() ![]() ![]() | Σ | 0..1 | id |
Internal
rule
reference
for
shared
list
items
|
![]() ![]() ![]() ![]() ![]() | Σ | 0..1 | code |
create
|
copy
+
Binding: Structure Map Transform ( Required ) |
![]() ![]() ![]() ![]() ![]() | Σ | 0..* | BackboneElement |
Parameters
to
the
transform
|
![]() ![]() ![]() ![]() ![]() ![]() | Σ | 1..1 |
Parameter
value
-
variable
or
literal
| |
![]() ![]() ![]() ![]() ![]() ![]() ![]() | id | |||
![]() ![]() ![]() ![]() ![]() ![]() ![]() | string | |||
![]() ![]() ![]() ![]() ![]() ![]() ![]() | boolean | |||
![]() ![]() ![]() ![]() ![]() ![]() ![]() | integer | |||
![]() ![]() ![]() ![]() ![]() ![]() ![]() | decimal | |||
![]() ![]() ![]() ![]() ![]() ![]() ![]() | date | |||
![]() ![]() ![]() ![]() ![]() ![]() ![]() | time | |||
![]() ![]() ![]() ![]() ![]() ![]() ![]() | dateTime | |||
![]() ![]() ![]() ![]() | Σ | 0..* | see rule |
Rules
contained
in
this
rule
|
![]() ![]() ![]() ![]() | Σ | 0..* | BackboneElement |
Which
other
rules
to
apply
in
the
context
of
this
rule
|
![]() ![]() ![]() ![]() ![]() | Σ | 1..1 | id |
Name
of
a
|
![]() ![]() ![]() ![]() ![]() | Σ | 1..* | see parameter |
Parameter
to
pass
to
the
rule
or
group
|
![]() ![]() ![]() ![]() | 0..1 | string |
Documentation
for
this
instance
of
| |
Documentation
for
this
format
![]() | ||||
The
body
of
See
the
invocation
contains
a
special
infrastructure
Extensions
for
this
resource
UML Diagram ( Legend )
Each
Operation
is
defined
by:
XML
Template
<StructureMap xmlns="http://hl7.org/fhir"><!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <url value="[uri]"/><!-- 1..1 Canonical identifier for this structure map, represented as a URI (globally unique) --> <identifier><!-- 0..* Identifier Additional identifier for the structure map --></identifier> <version value="[string]"/><!-- 0..1 Business version of the structure map --> <versionAlgorithm[x]><!-- 0..1 string|Coding How to compare versions --></versionAlgorithm[x]> <name value="[string]"/><!-- I 1..1 Name for this structure map (computer friendly) --> <title value="[string]"/><!-- 0..1 Name for this structure map (human friendly) --> <status value="[code]"/><!-- 1..1 draft | active | retired | unknown --> <experimental value="[boolean]"/><!-- 0..1 For testing purposes, not real usage --> <date value="[dateTime]"/><!-- 0..1 Date last changed --> <publisher value="[string]"/><!-- 0..1 Name of the publisher/steward (organization or individual) --> <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact> <description value="[markdown]"/><!-- 0..1 Natural language description of the structure map --> <useContext><!-- 0..* UsageContext The context that the content is intended to support --></useContext> <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for structure map (if applicable) --></jurisdiction> <purpose value="[markdown]"/><!-- 0..1 Why this structure map is defined --> <copyright value="[markdown]"/><!-- 0..1 Use and/or publishing restrictions --> <copyrightLabel value="[string]"/><!-- 0..1 Copyright holder and year(s) --> <structure> <!-- 0..* Structure Definition used by this map --> <url><!-- 1..1 canonical(StructureDefinition) Canonical reference to structure definition --></url> <mode value="[code]"/><!-- 1..1 source | queried | target | produced --> <alias value="[string]"/><!-- 0..1 Name for type in this map --> <documentation value="[string]"/><!-- 0..1 Documentation on use of structure --> </structure> <import><!-- 0..* canonical(StructureMap) Other maps used by this map (canonical URLs) --></import> <const> <!-- 0..* Definition of the constant value used in the map rules --> <name value="[id]"/><!-- 0..1 Constant name --> <value value="[string]"/><!-- 0..1 FHIRPath exression - value of the constant --> </const> <group> <!-- 1..* Named sections for reader convenience --> <name value="[id]"/><!-- 1..1 Human-readable label --> <extends value="[id]"/><!-- 0..1 Another group that this group adds rules to --> <typeMode value="[code]"/><!-- 0..1 types | type-and-types --> <documentation value="[string]"/><!-- 0..1 Additional description/explanation for group --> <input> <!-- 1..* Named instance provided when invoking the map --> <name value="[id]"/><!-- 1..1 Name for this instance of data --> <type value="[string]"/><!-- 0..1 Type for this instance of data --> <mode value="[code]"/><!-- 1..1 source | target --> <documentation value="[string]"/><!-- 0..1 Documentation for this instance of data --> </input> <rule> <!-- 0..* Transform Rule from source to target --> <name value="[id]"/><!-- 0..1 Name of the rule for internal references --> <source> <!-- 1..* Source inputs to the mapping --> <context value="[id]"/><!-- 1..1 Type or variable this rule applies to --> <min value="[integer]"/><!-- 0..1 Specified minimum cardinality --> <max value="[string]"/><!-- 0..1 Specified maximum cardinality (number or *) --> <type value="[string]"/><!-- 0..1 Rule only applies if source has this type --> <defaultValue value="[string]"/><!-- 0..1 Default value if no value exists --> <element value="[string]"/><!-- 0..1 Optional field for this source --> <listMode value="[code]"/><!-- 0..1 first | not_first | last | not_last | only_one --> <variable value="[id]"/><!-- 0..1 Named context for field, if a field is specified --> <condition value="[string]"/><!-- 0..1 FHIRPath expression - must be true or the rule does not apply --> <check value="[string]"/><!-- 0..1 FHIRPath expression - must be true or the mapping engine throws an error instead of completing --> <logMessage value="[string]"/><!-- 0..1 Message to put in log if source exists (FHIRPath) --> </source> <target> <!-- 0..* Content to create because of this mapping rule --> <context value="[string]"/><!-- I 0..1 Variable this rule applies to --> <element value="[string]"/><!-- I 0..1 Field to create in the context --> <variable value="[id]"/><!-- 0..1 Named context for field, if desired, and a field is specified --> <listMode value="[code]"/><!-- 0..* first | share | last | single --> <listRuleId value="[id]"/><!-- 0..1 Internal rule reference for shared list items --> <transform value="[code]"/><!-- 0..1 create | copy + --> <parameter> <!-- 0..* Parameters to the transform --> <value[x]><!-- 1..1 id|string|boolean|integer|decimal|date|time|dateTime Parameter value - variable or literal --></value[x]> </parameter> </target> <rule><!-- 0..* Content as for StructureMap.group.rule Rules contained in this rule --></rule> <dependent> <!-- 0..* Which other rules to apply in the context of this rule --> <name value="[id]"/><!-- 1..1 Name of a rule or group to apply --> <parameter><!-- 1..* Content as for StructureMap.group.rule.target.parameter Parameter to pass to the rule or group --></parameter> </dependent> <documentation value="[string]"/><!-- 0..1 Documentation for this instance of data --> </rule> </group> </StructureMap>
JSON Template
{
"resourceType" : "StructureMap",
// from Resource: id, meta, implicitRules, and language
// from DomainResource: text, contained, extension, and modifierExtension
"url" : "<uri>", // R! Canonical identifier for this structure map, represented as a URI (globally unique)
"identifier" : [{ Identifier }], // Additional identifier for the structure map
"version" : "<string>", // Business version of the structure map
// versionAlgorithm[x]: How to compare versions. One of these 2:
"versionAlgorithmString" : "<string>",
"versionAlgorithmCoding" : { Coding },
"name" : "<string>", // I R! Name for this structure map (computer friendly)
"title" : "<string>", // Name for this structure map (human friendly)
"status" : "<code>", // R! draft | active | retired | unknown
"experimental" : <boolean>, // For testing purposes, not real usage
"date" : "<dateTime>", // Date last changed
"publisher" : "<string>", // Name of the publisher/steward (organization or individual)
"contact" : [{ ContactDetail }], // Contact details for the publisher
"description" : "<markdown>", // Natural language description of the structure map
"useContext" : [{ UsageContext }], // The context that the content is intended to support
"jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for structure map (if applicable)
"purpose" : "<markdown>", // Why this structure map is defined
"copyright" : "<markdown>", // Use and/or publishing restrictions
"copyrightLabel" : "<string>", // Copyright holder and year(s)
"structure" : [{ // Structure Definition used by this map
"url" : "<canonical(StructureDefinition)>", // R! Canonical reference to structure definition
"mode" : "<code>", // R! source | queried | target | produced
"alias" : "<string>", // Name for type in this map
"documentation" : "<string>" // Documentation on use of structure
}],
"import" : ["<canonical(StructureMap)>"], // Other maps used by this map (canonical URLs)
"const" : [{ // Definition of the constant value used in the map rules
"name" : "<id>", // Constant name
"value" : "<string>" // FHIRPath exression - value of the constant
}],
"group" : [{ // R! Named sections for reader convenience
"name" : "<id>", // R! Human-readable label
"extends" : "<id>", // Another group that this group adds rules to
"typeMode" : "<code>", // types | type-and-types
"documentation" : "<string>", // Additional description/explanation for group
"input" : [{ // R! Named instance provided when invoking the map
"name" : "<id>", // R! Name for this instance of data
"type" : "<string>", // Type for this instance of data
"mode" : "<code>", // R! source | target
"documentation" : "<string>" // Documentation for this instance of data
}],
"rule" : [{ // Transform Rule from source to target
"name" : "<id>", // Name of the rule for internal references
"source" : [{ // R! Source inputs to the mapping
"context" : "<id>", // R! Type or variable this rule applies to
"min" : <integer>, // Specified minimum cardinality
"max" : "<string>", // Specified maximum cardinality (number or *)
"type" : "<string>", // Rule only applies if source has this type
"defaultValue" : "<string>", // Default value if no value exists
"element" : "<string>", // Optional field for this source
"listMode" : "<code>", // first | not_first | last | not_last | only_one
"variable" : "<id>", // Named context for field, if a field is specified
"condition" : "<string>", // FHIRPath expression - must be true or the rule does not apply
"check" : "<string>", // FHIRPath expression - must be true or the mapping engine throws an error instead of completing
"logMessage" : "<string>" // Message to put in log if source exists (FHIRPath)
}],
"target" : [{ // Content to create because of this mapping rule
"context" : "<string>", // I Variable this rule applies to
"element" : "<string>", // I Field to create in the context
"variable" : "<id>", // Named context for field, if desired, and a field is specified
"listMode" : ["<code>"], // first | share | last | single
"listRuleId" : "<id>", // Internal rule reference for shared list items
"transform" : "<code>", // create | copy +
"parameter" : [{ // Parameters to the transform
// value[x]: Parameter value - variable or literal. One of these 8:
"valueId" : "<id>",
"valueString" : "<string>",
"valueBoolean" : <boolean>,
"valueInteger" : <integer>,
"valueDecimal" : <decimal>,
"valueDate" : "<date>",
"valueTime" : "<time>",
"valueDateTime" : "<dateTime>"
}]
}],
"rule" : [{ Content as for StructureMap.group.rule }], // Rules contained in this rule
"dependent" : [{ // Which other rules to apply in the context of this rule
"name" : "<id>", // R! Name of a rule or group to apply
"parameter" : [{ Content as for StructureMap.group.rule.target.parameter }] // R! Parameter to pass to the rule or group
}],
"documentation" : "<string>" // Documentation for this instance of data
}]
}]
}
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> .[ a fhir:StructureMap; fhir:nodeRole fhir:treeRoot; # if this is the parser root # from Resource: .id, .meta, .implicitRules, and .language # from DomainResource: .text, .contained, .extension, and .modifierExtension fhir:url [ uri ] ; # 1..1 Canonical identifier for this structure map, represented as a URI (globally unique) fhir:identifier ( [ Identifier ] ... ) ; # 0..* Additional identifier for the structure map fhir:version [ string ] ; # 0..1 Business version of the structure map # 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 map (computer friendly) fhir:title [ string ] ; # 0..1 Name for this structure map (human friendly) fhir:status [ code ] ; # 1..1 draft | active | retired | unknown fhir:experimental [ boolean ] ; # 0..1 For testing purposes, not 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 map fhir:useContext ( [ UsageContext ] ... ) ; # 0..* The context that the content is intended to support fhir:jurisdiction ( [ CodeableConcept ] ... ) ; # 0..* Intended jurisdiction for structure map (if applicable) fhir:purpose [ markdown ] ; # 0..1 Why this structure map is defined fhir:copyright [ markdown ] ; # 0..1 Use and/or publishing restrictions fhir:copyrightLabel [ string ] ; # 0..1 Copyright holder and year(s) fhir:structure ( [ # 0..* Structure Definition used by this map fhir:url [ canonical(StructureDefinition) ] ; # 1..1 Canonical reference to structure definition fhir:mode [ code ] ; # 1..1 source | queried | target | produced fhir:alias [ string ] ; # 0..1 Name for type in this map fhir:documentation [ string ] ; # 0..1 Documentation on use of structure ] ... ) ; fhir:import ( [ canonical(StructureMap) ] ... ) ; # 0..* Other maps used by this map (canonical URLs) fhir:const ( [ # 0..* Definition of the constant value used in the map rules fhir:name [ id ] ; # 0..1 Constant name fhir:value [ string ] ; # 0..1 FHIRPath exression - value of the constant ] ... ) ; fhir:group ( [ # 1..* Named sections for reader convenience fhir:name [ id ] ; # 1..1 Human-readable label fhir:extends [ id ] ; # 0..1 Another group that this group adds rules to fhir:typeMode [ code ] ; # 0..1 types | type-and-types fhir:documentation [ string ] ; # 0..1 Additional description/explanation for group fhir:input ( [ # 1..* Named instance provided when invoking the map fhir:name [ id ] ; # 1..1 Name for this instance of data fhir:type [ string ] ; # 0..1 Type for this instance of data fhir:mode [ code ] ; # 1..1 source | target fhir:documentation [ string ] ; # 0..1 Documentation for this instance of data ] ... ) ; fhir:rule ( [ # 0..* Transform Rule from source to target fhir:name [ id ] ; # 0..1 Name of the rule for internal references fhir:source ( [ # 1..* Source inputs to the mapping fhir:context [ id ] ; # 1..1 Type or variable this rule applies to fhir:min [ integer ] ; # 0..1 Specified minimum cardinality fhir:max [ string ] ; # 0..1 Specified maximum cardinality (number or *) fhir:type [ string ] ; # 0..1 Rule only applies if source has this type fhir:defaultValue [ string ] ; # 0..1 Default value if no value exists fhir:element [ string ] ; # 0..1 Optional field for this source fhir:listMode [ code ] ; # 0..1 first | not_first | last | not_last | only_one fhir:variable [ id ] ; # 0..1 Named context for field, if a field is specified fhir:condition [ string ] ; # 0..1 FHIRPath expression - must be true or the rule does not apply fhir:check [ string ] ; # 0..1 FHIRPath expression - must be true or the mapping engine throws an error instead of completing fhir:logMessage [ string ] ; # 0..1 Message to put in log if source exists (FHIRPath) ] ... ) ; fhir:target ( [ # 0..* Content to create because of this mapping rule fhir:context [ string ] ; # 0..1 I Variable this rule applies to fhir:element [ string ] ; # 0..1 I Field to create in the context fhir:variable [ id ] ; # 0..1 Named context for field, if desired, and a field is specified fhir:listMode ( [ code ] ... ) ; # 0..* first | share | last | single fhir:listRuleId [ id ] ; # 0..1 Internal rule reference for shared list items fhir:transform [ code ] ; # 0..1 create | copy + fhir:parameter ( [ # 0..* Parameters to the transform # value[x] : 1..1 Parameter value - variable or literal. One of these 8 fhir:value [ a fhir:id ; id ] fhir:value [ a fhir:string ; string ] fhir:value [ a fhir:boolean ; boolean ] fhir:value [ a fhir:integer ; integer ] fhir:value [ a fhir:decimal ; decimal ] fhir:value [ a fhir:date ; date ] fhir:value [ a fhir:time ; time ] fhir:value [ a fhir:dateTime ; dateTime ] ] ... ) ; ] ... ) ; fhir:rule ( [ See StructureMap.group.rule ] ... ) ; # 0..* Rules contained in this rule fhir:dependent ( [ # 0..* Which other rules to apply in the context of this rule fhir:name [ id ] ; # 1..1 Name of a rule or group to apply fhir:parameter ( [ See StructureMap.group.rule.target.parameter ] ... ) ; # 1..* Parameter to pass to the rule or group ] ... ) ; fhir:documentation [ string ] ; # 0..1 Documentation for this instance of data ] ... ) ; ] ... ) ; ]
Changes since R4
| StructureMap | |
| StructureMap.versionAlgorithm[x] |
|
| StructureMap.copyrightLabel |
|
| StructureMap.const |
|
| StructureMap.const.name |
|
| StructureMap.const.value |
|
| StructureMap.group.typeMode |
|
| StructureMap.group.rule |
|
| StructureMap.group.rule.name |
|
| StructureMap.group.rule.source.defaultValue |
|
| StructureMap.group.rule.target.context |
|
| StructureMap.group.rule.target.parameter.value[x] |
|
| StructureMap.group.rule.dependent.parameter |
|
| StructureMap.group.rule.source.defaultValue[x] |
|
| StructureMap.group.rule.target.contextType |
|
| StructureMap.group.rule.dependent.variable |
|
For
each
parameter,
See
the
following
Full
Difference
for
further
information
This
analysis
is
needed:
available
as
XML
or
JSON
.
See R3 <--> R4 Conversion Maps (status = 2 tests that all execute ok. All tests pass round-trip testing and 1 r3 resources are invalid (0 errors). )
Structure
| Name | Flags | Card. | Type |
Description
&
Constraints
![]() |
|---|---|---|---|---|
![]() | TU | DomainResource |
A
Map
of
relationships
between
2
structures
that
can
be
used
to
transform
data
+ Warning: Name should be usable as an identifier for the module by machine processing applications such as code generation Elements defined in Ancestors: id , meta , implicitRules , language , text , contained , extension , modifierExtension Interfaces Implemented: CanonicalResource | |
![]() ![]() | Σ C | 1..1 | uri |
Canonical
identifier
for
this
structure
map,
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
|
![]() ![]() | Σ | 0..1 | string |
Business
version
of
the
|
![]() ![]() | Σ | 0..1 |
How
to
compare
versions
Binding: Version Algorithm ( Extensible ) | |
![]() ![]() ![]() | string | |||
![]() ![]() ![]() | Coding | |||
![]() ![]() | Σ C | 1..1 | string |
Name
for
this
structure
map
(computer
friendly)
|
![]() ![]() | Σ T | 0..1 | string |
Name
for
this
structure
map
(human
friendly)
|
![]() ![]() | ?! Σ | 1..1 | code |
draft
|
active
|
retired
|
unknown
Binding: PublicationStatus ( Required ) |
![]() ![]() | Σ | 0..1 | boolean |
For
|
![]() ![]() | Σ | 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
map
|
![]() ![]() | Σ | 0..* | UsageContext |
The
context
that
the
content
is
intended
to
support
|
![]() ![]() | Σ | 0..* | CodeableConcept |
Intended
jurisdiction
for
structure
map
(if
applicable)
Binding: Jurisdiction ValueSet ( Extensible ) |
![]() ![]() | T | 0..1 | markdown |
Why
this
structure
map
is
defined
|
![]() ![]() | T | 0..1 | markdown |
Use
|
![]() ![]() | T | 0..1 | string |
Copyright
holder
and
year(s)
|
![]() ![]() | Σ | 0..* | BackboneElement |
Structure
Definition
used
by
this
map
|
![]() ![]() ![]() | Σ | 1..1 | canonical ( StructureDefinition ) |
Canonical
reference
to
structure
definition
|
![]() ![]() ![]() | Σ | 1..1 | code |
source
|
Binding: Structure Map Model Mode ( Required ) |
![]() ![]() ![]() | Σ | 0..1 | string |
Name
for
type
in
this
map
|
![]() ![]() ![]() | 0..1 |
string
|
Documentation
on
use
of
| |
![]() ![]() | Σ | 0..* | canonical ( StructureMap ) |
Other
maps
used
by
this
map
(canonical
URLs)
|
![]() ![]() | Σ | 0..* | BackboneElement |
Definition
of
|
![]() ![]() ![]() | Σ | 0..1 | id |
Constant
name
|
![]() ![]() ![]() | Σ | 0..1 | string |
FHIRPath
exression
-
|
![]() ![]() |
Σ | 1..* | BackboneElement |
Named
sections
for
reader
convenience
|
![]() ![]() ![]() | Σ | 1..1 | id |
Human-readable
label
|
![]() ![]() ![]() | Σ | 0..1 | id |
Another
group
that
|
![]() ![]() ![]() | Σ | 0..1 | code |
types
|
type-and-types
Binding: Structure Map Group Type Mode ( Required ) |
![]() ![]() ![]() | Σ | 0..1 | string |
Additional
description/explanation
for
group
|
![]() ![]() ![]() | Σ | 1..* | BackboneElement |
Named
instance
provided
when
invoking
the
|
![]() ![]() ![]() ![]() | Σ | 1..1 | id |
Name
for
this
instance
of
data
|
![]() ![]() ![]() ![]() | Σ | 0..1 | string |
Type
for
this
instance
of
data
|
![]() ![]() ![]() ![]() | Σ | 1..1 | code |
source
|
target
Binding: Structure Map Input Mode ( Required ) |
![]() ![]() ![]() ![]() | 0..1 | string |
Documentation
| |
![]() ![]() ![]() | Σ | 0..* | BackboneElement |
Transform
Rule
from
source
to
target
|
![]() ![]() ![]() ![]() | Σ | 0..1 | id |
Name
of
the
|
![]() ![]() ![]() ![]() | Σ | 1..* | BackboneElement |
Source
inputs
to
the
mapping
|
![]() ![]() ![]() ![]() ![]() | Σ | 1..1 | id |
Type
|
![]() ![]() ![]() ![]() ![]() | Σ | 0..1 | integer |
Specified
minimum
cardinality
|
![]() ![]() ![]() ![]() ![]() | Σ | 0..1 | string |
Specified
maximum
cardinality
(number
or
*)
|
![]() ![]() ![]() ![]() ![]() | Σ | 0..1 | string |
Rule
only
applies
if
|
| Σ | 0..1 | string |
Default
value
if
no
value
exists
|
![]() ![]() ![]() ![]() ![]() | Σ | 0..1 | string |
Optional
field
for
this
source
|
![]() ![]() ![]() ![]() ![]() | Σ | 0..1 | code |
first
|
not_first
|
last
|
not_last
|
only_one
Binding: Structure Map Source List Mode ( Required ) |
![]() ![]() ![]() ![]() ![]() | Σ | 0..1 | id |
Named
context
for
field,
if
a
|
![]() ![]() ![]() ![]() ![]() | Σ | 0..1 | string |
FHIRPath
expression
-
must
be
|
![]() ![]() ![]() ![]() ![]() | Σ | 0..1 | string |
FHIRPath
expression
-
must
be
true
or
the
mapping
engine
throws
an
error
instead
of
completing
|
![]() ![]() ![]() ![]() ![]() | Σ | 0..1 | string |
Message
to
put
in
log
if
source
exists
(FHIRPath)
|
![]() ![]() ![]() ![]() | Σ C | 0..* | BackboneElement |
Content
to
create
because
of
this
mapping
rule
+ Rule: Can only have an element if you have a |
![]() ![]() ![]() ![]() ![]() | Σ C | 0..1 | string |
Variable
this
rule
applies
to
|
![]() ![]() ![]() ![]() ![]() | Σ C | 0..1 | string |
Field
to
create
in
the
context
|
![]() ![]() ![]() ![]() ![]() | Σ | 0..1 | id |
Named
context
for
|
![]() ![]() ![]() ![]() ![]() | Σ | 0..* | code |
first
|
share
|
last
|
single
Binding: Structure Map Target List Mode ( Required ) |
![]() ![]() ![]() ![]() ![]() | Σ | 0..1 | id |
Internal
rule
reference
for
shared
list
items
|
![]() ![]() ![]() ![]() ![]() | Σ | 0..1 | code |
create
|
copy
+
Binding: Structure Map Transform ( Required ) |
![]() ![]() ![]() ![]() ![]() |
Σ | 0..* | BackboneElement |
Parameters
to
|
![]() ![]() ![]() ![]() ![]() ![]() |
Σ | 1..1 |
Parameter
value
-
variable
or
literal
| |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
id
|
|||
| string | |||
![]() ![]() ![]() ![]() ![]() ![]() ![]() | boolean | |||
![]() ![]() ![]() ![]() ![]() ![]() ![]() | integer | |||
![]() ![]() ![]() ![]() ![]() ![]() ![]() | decimal | |||
![]() ![]() ![]() ![]() ![]() ![]() ![]() | date | |||
![]() ![]() ![]() ![]() ![]() ![]() ![]() | time | |||
![]() ![]() ![]() ![]() ![]() ![]() ![]() | dateTime | |||
![]() ![]() ![]() ![]() | Σ | 0..* | see rule |
Rules
contained
in
this
rule
|
![]() ![]() ![]() ![]() | Σ | 0..* | BackboneElement |
Which
other
rules
to
|
![]() ![]() ![]() ![]() ![]() | Σ | 1..1 | id |
Name
of
a
rule
or
group
to
|
![]() ![]() ![]() ![]() ![]() | Σ | 1..* | see parameter |
Parameter
to
pass
to
the
|
![]() ![]() ![]() ![]() | 0..1 | string |
Documentation
for
this
instance
of
data
| |
Documentation
for
this
format
![]() | ||||
Note
that
See
the
FHIR
specification
will
never
define
any
parameter
names
starting
with
"x-".
Extensions
for
this
resource
UML Diagram ( Legend )
XML Template
<StructureMap xmlns="http://hl7.org/fhir"><!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <url value="[uri]"/><!-- 1..1 Canonical identifier for this structure map, represented as a URI (globally unique) --> <identifier><!-- 0..* Identifier Additional identifier for the structure map --></identifier> <version value="[string]"/><!-- 0..1 Business version of the structure map --> <versionAlgorithm[x]><!-- 0..1 string|Coding How to compare versions --></versionAlgorithm[x]> <name value="[string]"/><!-- I 1..1 Name for this structure map (computer friendly) --> <title value="[string]"/><!-- 0..1 Name for this structure map (human friendly) --> <status value="[code]"/><!-- 1..1 draft | active | retired | unknown --> <experimental value="[boolean]"/><!-- 0..1 For testing purposes, not real usage --> <date value="[dateTime]"/><!-- 0..1 Date last changed --> <publisher value="[string]"/><!-- 0..1 Name of the publisher/steward (organization or individual) --> <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact> <description value="[markdown]"/><!-- 0..1 Natural language description of the structure map --> <useContext><!-- 0..* UsageContext The context that the content is intended to support --></useContext> <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for structure map (if applicable) --></jurisdiction> <purpose value="[markdown]"/><!-- 0..1 Why this structure map is defined --> <copyright value="[markdown]"/><!-- 0..1 Use and/or publishing restrictions --> <copyrightLabel value="[string]"/><!-- 0..1 Copyright holder and year(s) --> <structure> <!-- 0..* Structure Definition used by this map --> <url><!-- 1..1 canonical(StructureDefinition) Canonical reference to structure definition --></url> <mode value="[code]"/><!-- 1..1 source | queried | target | produced --> <alias value="[string]"/><!-- 0..1 Name for type in this map --> <documentation value="[string]"/><!-- 0..1 Documentation on use of structure --> </structure> <import><!-- 0..* canonical(StructureMap) Other maps used by this map (canonical URLs) --></import> <const> <!-- 0..* Definition of the constant value used in the map rules --> <name value="[id]"/><!-- 0..1 Constant name --> <value value="[string]"/><!-- 0..1 FHIRPath exression - value of the constant --> </const> <group> <!-- 1..* Named sections for reader convenience --> <name value="[id]"/><!-- 1..1 Human-readable label --> <extends value="[id]"/><!-- 0..1 Another group that this group adds rules to --> <typeMode value="[code]"/><!-- 0..1 types | type-and-types --> <documentation value="[string]"/><!-- 0..1 Additional description/explanation for group --> <input> <!-- 1..* Named instance provided when invoking the map --> <name value="[id]"/><!-- 1..1 Name for this instance of data --> <type value="[string]"/><!-- 0..1 Type for this instance of data --> <mode value="[code]"/><!-- 1..1 source | target --> <documentation value="[string]"/><!-- 0..1 Documentation for this instance of data --> </input> <rule> <!-- 0..* Transform Rule from source to target --> <name value="[id]"/><!-- 0..1 Name of the rule for internal references --> <source> <!-- 1..* Source inputs to the mapping --> <context value="[id]"/><!-- 1..1 Type or variable this rule applies to --> <min value="[integer]"/><!-- 0..1 Specified minimum cardinality --> <max value="[string]"/><!-- 0..1 Specified maximum cardinality (number or *) --> <type value="[string]"/><!-- 0..1 Rule only applies if source has this type --> <defaultValue value="[string]"/><!-- 0..1 Default value if no value exists --> <element value="[string]"/><!-- 0..1 Optional field for this source --> <listMode value="[code]"/><!-- 0..1 first | not_first | last | not_last | only_one --> <variable value="[id]"/><!-- 0..1 Named context for field, if a field is specified --> <condition value="[string]"/><!-- 0..1 FHIRPath expression - must be true or the rule does not apply --> <check value="[string]"/><!-- 0..1 FHIRPath expression - must be true or the mapping engine throws an error instead of completing --> <logMessage value="[string]"/><!-- 0..1 Message to put in log if source exists (FHIRPath) --> </source> <target> <!-- 0..* Content to create because of this mapping rule --> <context value="[string]"/><!-- I 0..1 Variable this rule applies to --> <element value="[string]"/><!-- I 0..1 Field to create in the context --> <variable value="[id]"/><!-- 0..1 Named context for field, if desired, and a field is specified --> <listMode value="[code]"/><!-- 0..* first | share | last | single --> <listRuleId value="[id]"/><!-- 0..1 Internal rule reference for shared list items --> <transform value="[code]"/><!-- 0..1 create | copy + --> <parameter> <!-- 0..* Parameters to the transform --> <value[x]><!-- 1..1 id|string|boolean|integer|decimal|date|time|dateTime Parameter value - variable or literal --></value[x]> </parameter> </target> <rule><!-- 0..* Content as for StructureMap.group.rule Rules contained in this rule --></rule> <dependent> <!-- 0..* Which other rules to apply in the context of this rule --> <name value="[id]"/><!-- 1..1 Name of a rule or group to apply --> <parameter><!-- 1..* Content as for StructureMap.group.rule.target.parameter Parameter to pass to the rule or group --></parameter> </dependent> <documentation value="[string]"/><!-- 0..1 Documentation for this instance of data --> </rule> </group> </StructureMap>
Servers
MAY
choose
JSON
Template
{
"resourceType" : "StructureMap",
// from Resource: id, meta, implicitRules, and language
// from DomainResource: text, contained, extension, and modifierExtension
"url" : "<uri>", // R! Canonical identifier for this structure map, represented as a URI (globally unique)
"identifier" : [{ Identifier }], // Additional identifier for the structure map
"version" : "<string>", // Business version of the structure map
// versionAlgorithm[x]: How to compare versions. One of these 2:
"versionAlgorithmString" : "<string>",
"versionAlgorithmCoding" : { Coding },
"name" : "<string>", // I R! Name for this structure map (computer friendly)
"title" : "<string>", // Name for this structure map (human friendly)
"status" : "<code>", // R! draft | active | retired | unknown
"experimental" : <boolean>, // For testing purposes, not real usage
"date" : "<dateTime>", // Date last changed
"publisher" : "<string>", // Name of the publisher/steward (organization or individual)
"contact" : [{ ContactDetail }], // Contact details for the publisher
"description" : "<markdown>", // Natural language description of the structure map
"useContext" : [{ UsageContext }], // The context that the content is intended to support
"jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for structure map (if applicable)
"purpose" : "<markdown>", // Why this structure map is defined
"copyright" : "<markdown>", // Use and/or publishing restrictions
"copyrightLabel" : "<string>", // Copyright holder and year(s)
"structure" : [{ // Structure Definition used by this map
"url" : "<canonical(StructureDefinition)>", // R! Canonical reference to structure definition
"mode" : "<code>", // R! source | queried | target | produced
"alias" : "<string>", // Name for type in this map
"documentation" : "<string>" // Documentation on use of structure
}],
"import" : ["<canonical(StructureMap)>"], // Other maps used by this map (canonical URLs)
"const" : [{ // Definition of the constant value used in the map rules
"name" : "<id>", // Constant name
"value" : "<string>" // FHIRPath exression - value of the constant
}],
"group" : [{ // R! Named sections for reader convenience
"name" : "<id>", // R! Human-readable label
"extends" : "<id>", // Another group that this group adds rules to
"typeMode" : "<code>", // types | type-and-types
"documentation" : "<string>", // Additional description/explanation for group
"input" : [{ // R! Named instance provided when invoking the map
"name" : "<id>", // R! Name for this instance of data
"type" : "<string>", // Type for this instance of data
"mode" : "<code>", // R! source | target
"documentation" : "<string>" // Documentation for this instance of data
}],
"rule" : [{ // Transform Rule from source to target
"name" : "<id>", // Name of the rule for internal references
"source" : [{ // R! Source inputs to the mapping
"context" : "<id>", // R! Type or variable this rule applies to
"min" : <integer>, // Specified minimum cardinality
"max" : "<string>", // Specified maximum cardinality (number or *)
"type" : "<string>", // Rule only applies if source has this type
"defaultValue" : "<string>", // Default value if no value exists
"element" : "<string>", // Optional field for this source
"listMode" : "<code>", // first | not_first | last | not_last | only_one
"variable" : "<id>", // Named context for field, if a field is specified
"condition" : "<string>", // FHIRPath expression - must be true or the rule does not apply
"check" : "<string>", // FHIRPath expression - must be true or the mapping engine throws an error instead of completing
"logMessage" : "<string>" // Message to put in log if source exists (FHIRPath)
}],
"target" : [{ // Content to create because of this mapping rule
"context" : "<string>", // I Variable this rule applies to
"element" : "<string>", // I Field to create in the context
"variable" : "<id>", // Named context for field, if desired, and a field is specified
"listMode" : ["<code>"], // first | share | last | single
"listRuleId" : "<id>", // Internal rule reference for shared list items
"transform" : "<code>", // create | copy +
"parameter" : [{ // Parameters to the transform
// value[x]: Parameter value - variable or literal. One of these 8:
"valueId" : "<id>",
"valueString" : "<string>",
"valueBoolean" : <boolean>,
"valueInteger" : <integer>,
"valueDecimal" : <decimal>,
"valueDate" : "<date>",
"valueTime" : "<time>",
"valueDateTime" : "<dateTime>"
}]
}],
"rule" : [{ Content as for StructureMap.group.rule }], // Rules contained in this rule
"dependent" : [{ // Which other rules to apply in the context of this rule
"name" : "<id>", // R! Name of a rule or group to apply
"parameter" : [{ Content as for StructureMap.group.rule.target.parameter }] // R! Parameter to pass to the rule or group
}],
"documentation" : "<string>" // Documentation for this instance of data
}]
}]
}
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> .[ a fhir:StructureMap; fhir:nodeRole fhir:treeRoot; # if this is the parser root # from Resource: .id, .meta, .implicitRules, and .language # from DomainResource: .text, .contained, .extension, and .modifierExtension fhir:url [ uri ] ; # 1..1 Canonical identifier for this structure map, represented as a URI (globally unique) fhir:identifier ( [ Identifier ] ... ) ; # 0..* Additional identifier for the structure map fhir:version [ string ] ; # 0..1 Business version of the structure map # 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 map (computer friendly) fhir:title [ string ] ; # 0..1 Name for this structure map (human friendly) fhir:status [ code ] ; # 1..1 draft | active | retired | unknown fhir:experimental [ boolean ] ; # 0..1 For testing purposes, not 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 map fhir:useContext ( [ UsageContext ] ... ) ; # 0..* The context that the content is intended to support fhir:jurisdiction ( [ CodeableConcept ] ... ) ; # 0..* Intended jurisdiction for structure map (if applicable) fhir:purpose [ markdown ] ; # 0..1 Why this structure map is defined fhir:copyright [ markdown ] ; # 0..1 Use and/or publishing restrictions fhir:copyrightLabel [ string ] ; # 0..1 Copyright holder and year(s) fhir:structure ( [ # 0..* Structure Definition used by this map fhir:url [ canonical(StructureDefinition) ] ; # 1..1 Canonical reference to structure definition fhir:mode [ code ] ; # 1..1 source | queried | target | produced fhir:alias [ string ] ; # 0..1 Name for type in this map fhir:documentation [ string ] ; # 0..1 Documentation on use of structure ] ... ) ; fhir:import ( [ canonical(StructureMap) ] ... ) ; # 0..* Other maps used by this map (canonical URLs) fhir:const ( [ # 0..* Definition of the constant value used in the map rules fhir:name [ id ] ; # 0..1 Constant name fhir:value [ string ] ; # 0..1 FHIRPath exression - value of the constant ] ... ) ; fhir:group ( [ # 1..* Named sections for reader convenience fhir:name [ id ] ; # 1..1 Human-readable label fhir:extends [ id ] ; # 0..1 Another group that this group adds rules to fhir:typeMode [ code ] ; # 0..1 types | type-and-types fhir:documentation [ string ] ; # 0..1 Additional description/explanation for group fhir:input ( [ # 1..* Named instance provided when invoking the map fhir:name [ id ] ; # 1..1 Name for this instance of data fhir:type [ string ] ; # 0..1 Type for this instance of data fhir:mode [ code ] ; # 1..1 source | target fhir:documentation [ string ] ; # 0..1 Documentation for this instance of data ] ... ) ; fhir:rule ( [ # 0..* Transform Rule from source to target fhir:name [ id ] ; # 0..1 Name of the rule for internal references fhir:source ( [ # 1..* Source inputs to the mapping fhir:context [ id ] ; # 1..1 Type or variable this rule applies to fhir:min [ integer ] ; # 0..1 Specified minimum cardinality fhir:max [ string ] ; # 0..1 Specified maximum cardinality (number or *) fhir:type [ string ] ; # 0..1 Rule only applies if source has this type fhir:defaultValue [ string ] ; # 0..1 Default value if no value exists fhir:element [ string ] ; # 0..1 Optional field for this source fhir:listMode [ code ] ; # 0..1 first | not_first | last | not_last | only_one fhir:variable [ id ] ; # 0..1 Named context for field, if a field is specified fhir:condition [ string ] ; # 0..1 FHIRPath expression - must be true or the rule does not apply fhir:check [ string ] ; # 0..1 FHIRPath expression - must be true or the mapping engine throws an error instead of completing fhir:logMessage [ string ] ; # 0..1 Message to put in log if source exists (FHIRPath) ] ... ) ; fhir:target ( [ # 0..* Content to create because of this mapping rule fhir:context [ string ] ; # 0..1 I Variable this rule applies to fhir:element [ string ] ; # 0..1 I Field to create in the context fhir:variable [ id ] ; # 0..1 Named context for field, if desired, and a field is specified fhir:listMode ( [ code ] ... ) ; # 0..* first | share | last | single fhir:listRuleId [ id ] ; # 0..1 Internal rule reference for shared list items fhir:transform [ code ] ; # 0..1 create | copy + fhir:parameter ( [ # 0..* Parameters to the transform # value[x] : 1..1 Parameter value - variable or literal. One of these 8 fhir:value [ a fhir:id ; id ] fhir:value [ a fhir:string ; string ] fhir:value [ a fhir:boolean ; boolean ] fhir:value [ a fhir:integer ; integer ] fhir:value [ a fhir:decimal ; decimal ] fhir:value [ a fhir:date ; date ] fhir:value [ a fhir:time ; time ] fhir:value [ a fhir:dateTime ; dateTime ] ] ... ) ; ] ... ) ; fhir:rule ( [ See StructureMap.group.rule ] ... ) ; # 0..* Rules contained in this rule fhir:dependent ( [ # 0..* Which other rules to apply in the context of this rule fhir:name [ id ] ; # 1..1 Name of a rule or group to apply fhir:parameter ( [ See StructureMap.group.rule.target.parameter ] ... ) ; # 1..* Parameter to pass to the rule or group ] ... ) ; fhir:documentation [ string ] ; # 0..1 Documentation for this instance of data ] ... ) ; ] ... ) ; ]
Changes since Release 4
| StructureMap | |
| StructureMap.versionAlgorithm[x] |
|
| StructureMap.copyrightLabel |
|
| StructureMap.const |
|
| StructureMap.const.name |
|
| StructureMap.const.value |
|
| StructureMap.group.typeMode |
|
| StructureMap.group.rule |
|
| StructureMap.group.rule.name |
|
| StructureMap.group.rule.source.defaultValue |
|
| StructureMap.group.rule.target.context |
|
| StructureMap.group.rule.target.parameter.value[x] |
|
| StructureMap.group.rule.dependent.parameter |
|
| StructureMap.group.rule.source.defaultValue[x] |
|
| StructureMap.group.rule.target.contextType |
|
| StructureMap.group.rule.dependent.variable |
|
See
the
parameters
represented
in
multi-part/form-data
Full
Difference
format
for
further
information
This
analysis
is
available
as
well,
which
can
be
useful
when
XML
or
JSON
.
See
R3
<-->
R4
Conversion
Maps
(status
=
2
tests
that
all
execute
ok.
All
tests
pass
round-trip
testing
an
operation
using
HTML
forms.
and
1
r3
resources
are
invalid
(0
errors).
)
Additional definitions: Master Definition XML + JSON , XML Schema / Schematron + JSON Schema , ShEx (for Turtle ) , the spreadsheet version & the dependency analysis
| Path | ValueSet | Type | Documentation |
|---|---|---|---|
| StructureMap.versionAlgorithm[x] | VersionAlgorithm | Extensible |
|
| StructureMap.status | PublicationStatus | Required | The lifecycle status of an artifact. |
| StructureMap.jurisdiction | JurisdictionValueSet | Extensible |
This
Note:
The
codes
for
countries
and
country
subdivisions
are
taken
from
ISO
3166
|
| StructureMap.structure.mode | StructureMapModelMode | Required |
How
the
|
| StructureMap.group.typeMode | StructureMapGroupTypeMode | Required |
If
this
is
the
|
| StructureMap.group.input.mode | StructureMapInputMode | Required | Mode for this instance of data. |
| StructureMap.group.rule.source.listMode | StructureMapSourceListMode | Required |
If
field
is
a
list,
how
to
|
| StructureMap.group.rule.target.listMode | StructureMapTargetListMode | Required | If field is a list, how to manage the production. |
| StructureMap.group.rule.target.transform | StructureMapTransform | Required | How data is copied/created. |
| UniqueKey | Level | Location | Description | Expression |
cnl-0
| Warning | (base) |
Name
should
be
usable
as
an
| name.exists() implies name.matches('^[A-Z]([A-Za-z0-9_]){1,254}$') |
cnl-1
| Warning | StructureMap.url |
URL
should
not
contain
|
or
| exists() implies matches('^[^|# ]+$') |
smp-1
| Rule | StructureMap.group.rule.target |
Can
only
have
an
| element.exists() implies context.exists() |
Search
parameters
for
this
resource.
See
also
the
full
list
of
search
parameters
for
this
resource
,
and
an
OperationOutcome
check
the
Extensions
registry
SHOULD
be
returned
with
details.
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
|
| context | token |
A
use
context
assigned
to
the
| (StructureMap.useContext.value.ofType(CodeableConcept)) |
30
Resources
|
| context-quantity | quantity |
A
quantity-
or
| (StructureMap.useContext.value.ofType(Quantity)) | (StructureMap.useContext.value.ofType(Range)) | 30 Resources |
| context-type | token |
A
type
of
use
context
assigned
to
the
| StructureMap.useContext.code | 30 Resources |
| context-type-quantity | composite |
A
use
context
type
and
quantity-
or
range-based
value
assigned
to
the
|
On
StructureMap.useContext:
context-type: code context-quantity: value.ofType(Quantity) | value.ofType(Range) | 30 Resources |
| context-type-value | composite |
A
use
context
type
and
value
assigned
to
the
|
On
StructureMap.useContext:
context-type: code context: value.ofType(CodeableConcept) | 30 Resources |
| date | date |
The
| StructureMap.date | 30 Resources |
| description | string |
The
description
of
the
| StructureMap.description | 28 Resources |
| identifier | token |
External
identifier
for
the
| StructureMap.identifier | 33 Resources |
| jurisdiction | token |
Intended
jurisdiction
for
the
| StructureMap.jurisdiction | 26 Resources |
| name | string |
Computationally
friendly
name
of
the
| StructureMap.name | 26 Resources |
| publisher | string |
Name
of
the
| StructureMap.publisher | 30 Resources |
| status | token |
The
current
status
of
the
| StructureMap.status | 34 Resources |
| title | string | The human-friendly name of the structure map | StructureMap.title | 27 Resources |
| url | uri |
The
uri
that
| StructureMap.url |
33
Resources
|
| version |
token
|
The
business
version
of
the
| StructureMap.version |
30
Resources
|