This
page
is
part
of
the
FHIR
Specification
(v3.0.2:
STU
3).
(v3.5.0:
R4
Ballot
#2).
The
current
version
which
supercedes
this
version
is
5.0.0
.
For
a
full
list
of
available
versions,
see
the
Directory
of
published
versions
.
Page
versions:
R5
R4B
R4
R3
FHIR
Infrastructure
Work
Group
|
Maturity Level : 2 | Trial Use | Compartments : Not linked to any defined compartments |
A Map of relationships between 2 structures that can be used to transform data.
The
StructureMap
resource
defines
a
detailed
set
of
rules
that
describe
how
one
Structure
is
related
to
another,
another
and
provides
sufficient
detail
to
allow
for
automated
conversion
of
instances.
The intention of 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 FHIR resources), and then many different systems - both testing and production clinical systems - can leverage that to automatically transform from one format to the other.
Maps
are
uni-directional:
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
assumed
that
there
are
no
conditions
that
might
additionally
apply
in
the
reverse
direction.
The mapping language, along with a concrete syntax, is defined in detail in the FHIR Mapping Language . The StructureMap resource represents the abstract syntax, and 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 useful because they quickly convey how the structures are related to 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 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
the
StructureMap
resource,
and
the
existence
of
the
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
xxxxxxx
op
[op
to
defined).
defined]).
It's possible to apply the mapping language to structures that do not even have (or cannot have) formally defined types, although the type-related parts of the mapping language cannot be used in these cases.
Each structure map contains, in addition to the standard metadata that all conformance resources contain, the following information:
Each group of rules defines a set of input and output variables that must be passed when the 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.
Each rule may have some or all of the following properties:
The mapping language is entirely declarative; there is no imperative or procedural aspects to the definitions.
This
resource
is
referenced
by
ActivityDefinition
and
,
PlanDefinition
and
itself
Structure
| Name | Flags | Card. | Type |
Description
&
Constraints
|
|---|---|---|---|---|
|
I 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 |
|
|
Σ | 1..1 | uri |
|
|
Σ | 0..* | Identifier |
Additional
identifier
for
the
structure
map
|
|
Σ | 0..1 | string | Business version of the structure map |
|
Σ I | 1..1 | string | Name for this structure map (computer friendly) |
|
Σ | 0..1 | string | Name for this structure map (human friendly) |
|
?! Σ | 1..1 | code |
draft
|
active
|
retired
|
unknown
PublicationStatus ( Required ) |
|
|
0..1 | boolean | For testing purposes, not real usage |
|
Σ | 0..1 | dateTime |
Date
|
|
Σ | 0..1 | string | Name of the publisher (organization or individual) |
|
Σ | 0..* | ContactDetail |
Contact
details
for
the
publisher
|
|
0..1 | markdown | Natural language description of the structure map | |
|
Σ | 0..* | UsageContext |
|
|
Σ | 0..* | CodeableConcept |
Intended
jurisdiction
for
structure
map
(if
applicable)
Jurisdiction |
|
0..1 | markdown | Why this structure map is defined | |
|
0..1 | markdown | Use and/or publishing restrictions | |
|
Σ | 0..* | BackboneElement |
Structure
Definition
used
by
this
map
|
|
Σ | 1..1 |
|
Canonical URL for structure definition |
|
Σ | 1..1 | code |
source
|
queried
|
target
|
produced
StructureMapModelMode ( Required ) |
|
Σ | 0..1 | string | Name for type in this map |
|
0..1 | string | Documentation on use of structure | |
|
Σ | 0..* |
|
Other
maps
used
by
this
map
(canonical
URLs)
|
|
Σ | 1..* | BackboneElement |
Named
sections
for
reader
convenience
|
|
Σ | 1..1 | id | Human-readable label |
|
Σ | 0..1 | id | Another group that this group adds rules to |
|
Σ | 1..1 | code |
none
|
types
|
type-and-types
StructureMapGroupTypeMode ( Required ) |
|
Σ | 0..1 | string |
Additional
|
|
Σ | 1..* | BackboneElement |
Named
instance
provided
when
invoking
the
map
|
|
Σ | 1..1 | id | Name for this instance of data |
|
Σ | 0..1 | string | Type for this instance of data |
|
Σ | 1..1 | code |
source
|
target
StructureMapInputMode ( Required ) |
|
0..1 | string | Documentation for this instance of data | |
|
Σ | 1..* | BackboneElement |
Transform
Rule
from
source
to
target
|
|
Σ | 1..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 | * | 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
StructureMapSourceListMode ( Required ) |
|
Σ | 0..1 | id | Named context for field, if a field is specified |
|
Σ | 0..1 | string | FHIRPath expression - must be true or the rule does not apply |
|
Σ | 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) |
|
Σ I | 0..* | BackboneElement |
Content
to
create
because
of
this
mapping
rule
+ + |
|
Σ | 0..1 | id | Type or variable this rule applies to |
|
Σ | 0..1 | code |
type
|
variable
StructureMapContextType ( Required ) |
|
Σ | 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
|
collate
StructureMapTargetListMode ( Required ) |
|
Σ | 0..1 | id | Internal rule reference for shared list items |
|
Σ | 0..1 | code |
create
|
copy
+
StructureMapTransform ( Required ) |
|
Σ | 0..* | BackboneElement |
Parameters
to
the
transform
|
|
Σ | 1..1 | Parameter value - variable or literal | |
|
id | |||
|
string | |||
|
boolean | |||
|
integer | |||
|
decimal | |||
|
Σ | 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 rule or group to apply |
|
Σ | 1..* | string |
Variable
to
pass
to
the
rule
or
group
|
|
0..1 | string | Documentation for this instance of data | |
Documentation
for
this
format
|
||||
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 --> <name value="[string]"/><!--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 (organization or individual) --> <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact>
< <</useContext><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 --> <structure> <!-- 0..* Structure Definition used by this map -->< < < <<url><!-- 1..1 canonical(StructureDefinition) Canonical URL for 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> <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]"/><!-- 1..1 none | 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> <!-- 1..* Transform Rule from source to target --><<name value="[id]"/><!-- 1..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[x]><!-- 0..1 * Default value if no value exists --></defaultValue[x]>< < < < <<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="[id]"/><!-- 0..1 Type or variable this rule applies to --> <contextType value="[code]"/><!-- 0..1 type | variable --> <element value="[string]"/><!-- 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 | collate --> <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 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 --> <variable value="[string]"/><!-- 1..* Variable to pass to the rule or group --> </dependent><<documentation value="[string]"/><!-- 0..1 Documentation for this instance of data --> </rule> </group> </StructureMap>
JSON Template
{
"resourceType" : "",
"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
"name" : "<string>", // C? 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 (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
"structure" : [{ // Structure Definition used by this map
"url" : { canonical(StructureDefinition) }, // R! Canonical URL for 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)
"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>", // R! none | 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" : [{ // R! Transform Rule from source to target
"name" : "<id>", // R! 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[x]: Default value if no value exists. One of these 49:
"defaultValueBase64Binary" : "<base64Binary>",
"defaultValueBoolean" : <boolean>,
"defaultValueCanonical" : "<canonical>",
"defaultValueCode" : "<code>",
"defaultValueDate" : "<date>",
"defaultValueDateTime" : "<dateTime>",
"defaultValueDecimal" : <decimal>,
"defaultValueId" : "<id>",
"defaultValueInstant" : "<instant>",
"defaultValueInteger" : <integer>,
"defaultValueMarkdown" : "<markdown>",
"defaultValueOid" : "<oid>",
"defaultValuePositiveInt" : "<positiveInt>",
"defaultValueString" : "<string>",
"defaultValueTime" : "<time>",
"defaultValueUnsignedInt" : "<unsignedInt>",
"defaultValueUri" : "<uri>",
"defaultValueUrl" : "<url>",
"defaultValueUuid" : "<uuid>",
"defaultValueAddress" : { Address },
"defaultValueAge" : { Age },
"defaultValueAnnotation" : { Annotation },
"defaultValueAttachment" : { Attachment },
"defaultValueCodeableConcept" : { CodeableConcept },
"defaultValueCoding" : { Coding },
"defaultValueContactPoint" : { ContactPoint },
"defaultValueCount" : { Count },
"defaultValueDistance" : { Distance },
"defaultValueDuration" : { Duration },
"defaultValueHumanName" : { HumanName },
"defaultValueIdentifier" : { Identifier },
"defaultValueMoney" : { Money },
"defaultValuePeriod" : { Period },
"defaultValueQuantity" : { Quantity },
"defaultValueRange" : { Range },
"defaultValueRatio" : { Ratio },
"defaultValueReference" : { Reference },
"defaultValueSampledData" : { SampledData },
"defaultValueSignature" : { Signature },
"defaultValueTiming" : { Timing },
"defaultValueParameterDefinition" : { ParameterDefinition },
"defaultValueDataRequirement" : { DataRequirement },
"defaultValueRelatedArtifact" : { RelatedArtifact },
"defaultValueContactDetail" : { ContactDetail },
"defaultValueContributor" : { Contributor },
"defaultValueTriggerDefinition" : { TriggerDefinition },
"defaultValueExpression" : { Expression },
"defaultValueUsageContext" : { UsageContext },
"defaultValueDosage" : { Dosage },
"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" : "<id>", // Type or variable this rule applies to
"contextType" : "<code>", // type | variable
"element" : "<string>", // Field to create in the context
"variable" : "<id>", // Named context for field, if desired, and a field is specified
"listMode" : ["<code>"], // first | share | last | collate
"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 5:
">"
">"
">
">
">
"valueId" : "<id>"
"valueString" : "<string>"
"valueBoolean" : <boolean>
"valueInteger" : <integer>
"valueDecimal" : <decimal>
}]
}],
"
"
"
"
"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
"variable" : ["<string>"] // R! Variable 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:fhir:StructureMap.url [ uri ]; # 1..1 Canonical identifier for this structure map, represented as a URI (globally unique) fhir:StructureMap.identifier [ Identifier ], ... ; # 0..* Additional identifier for the structure map fhir:StructureMap.version [ string ]; # 0..1 Business version of the structure map fhir:StructureMap.name [ string ]; # 1..1 Name for this structure map (computer friendly) fhir:StructureMap.title [ string ]; # 0..1 Name for this structure map (human friendly) fhir:StructureMap.status [ code ]; # 1..1 draft | active | retired | unknownfhir: fhir: fhir:fhir:StructureMap.experimental [ boolean ]; # 0..1 For testing purposes, not real usage fhir:StructureMap.date [ dateTime ]; # 0..1 Date last changed fhir:StructureMap.publisher [ string ]; # 0..1 Name of the publisher (organization or individual) fhir:StructureMap.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher fhir:StructureMap.description [ markdown ]; # 0..1 Natural language description of the structure mapfhir:fhir:StructureMap.useContext [ UsageContext ], ... ; # 0..* The context that the content is intended to support fhir:StructureMap.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for structure map (if applicable)fhir:fhir:StructureMap.purpose [ markdown ]; # 0..1 Why this structure map is defined fhir:StructureMap.copyright [ markdown ]; # 0..1 Use and/or publishing restrictions fhir:StructureMap.structure [ # 0..* Structure Definition used by this mapfhir:fhir:StructureMap.structure.url [ canonical(StructureDefinition) ]; # 1..1 Canonical URL for structure definition fhir:StructureMap.structure.mode [ code ]; # 1..1 source | queried | target | produced fhir:StructureMap.structure.alias [ string ]; # 0..1 Name for type in this map fhir:StructureMap.structure.documentation [ string ]; # 0..1 Documentation on use of structure ], ...;fhir: fhir:fhir:StructureMap.import [ canonical(StructureMap) ], ... ; # 0..* Other maps used by this map (canonical URLs) fhir:StructureMap.group [ # 1..* Named sections for reader convenience fhir:StructureMap.group.name [ id ]; # 1..1 Human-readable label fhir:StructureMap.group.extends [ id ]; # 0..1 Another group that this group adds rules tofhir: fhir:fhir:StructureMap.group.typeMode [ code ]; # 1..1 none | types | type-and-types fhir:StructureMap.group.documentation [ string ]; # 0..1 Additional description/explanation for group fhir:StructureMap.group.input [ # 1..* Named instance provided when invoking the map fhir:StructureMap.group.input.name [ id ]; # 1..1 Name for this instance of data fhir:StructureMap.group.input.type [ string ]; # 0..1 Type for this instance of data fhir:StructureMap.group.input.mode [ code ]; # 1..1 source | target fhir:StructureMap.group.input.documentation [ string ]; # 0..1 Documentation for this instance of data ], ...; fhir:StructureMap.group.rule [ # 1..* Transform Rule from source to target fhir:StructureMap.group.rule.name [ id ]; # 1..1 Name of the rule for internal references fhir:StructureMap.group.rule.source [ # 1..* Source inputs to the mapping fhir:StructureMap.group.rule.source.context [ id ]; # 1..1 Type or variable this rule applies to fhir:StructureMap.group.rule.source.min [ integer ]; # 0..1 Specified minimum cardinality fhir:StructureMap.group.rule.source.max [ string ]; # 0..1 Specified maximum cardinality (number or *) fhir:StructureMap.group.rule.source.type [ string ]; # 0..1 Rule only applies if source has this type# . One of these 38# StructureMap.group.rule.source.defaultValue[x] : 0..1 Default value if no value exists. One of these 49 fhir:StructureMap.group.rule.source.defaultValueBase64Binary [ base64Binary ] fhir:StructureMap.group.rule.source.defaultValueBoolean [ boolean ] fhir:StructureMap.group.rule.source.defaultValueCanonical [ canonical ] fhir:StructureMap.group.rule.source.defaultValueCode [ code ] fhir:StructureMap.group.rule.source.defaultValueDate [ date ] fhir:StructureMap.group.rule.source.defaultValueDateTime [ dateTime ] fhir:StructureMap.group.rule.source.defaultValueDecimal [ decimal ] fhir:StructureMap.group.rule.source.defaultValueId [ id ] fhir:StructureMap.group.rule.source.defaultValueInstant [ instant ] fhir:StructureMap.group.rule.source.defaultValueInteger [ integer ] fhir:StructureMap.group.rule.source.defaultValueMarkdown [ markdown ] fhir:StructureMap.group.rule.source.defaultValueOid [ oid ] fhir:StructureMap.group.rule.source.defaultValuePositiveInt [ positiveInt ] fhir:StructureMap.group.rule.source.defaultValueString [ string ] fhir:StructureMap.group.rule.source.defaultValueTime [ time ] fhir:StructureMap.group.rule.source.defaultValueUnsignedInt [ unsignedInt ] fhir:StructureMap.group.rule.source.defaultValueUri [ uri ] fhir:StructureMap.group.rule.source.defaultValueUrl [ url ] fhir:StructureMap.group.rule.source.defaultValueUuid [ uuid ] fhir:StructureMap.group.rule.source.defaultValueAddress [ Address ] fhir:StructureMap.group.rule.source.defaultValueAge [ Age ] fhir:StructureMap.group.rule.source.defaultValueAnnotation [ Annotation ] fhir:StructureMap.group.rule.source.defaultValueAttachment [ Attachment ] fhir:StructureMap.group.rule.source.defaultValueCodeableConcept [ CodeableConcept ] fhir:StructureMap.group.rule.source.defaultValueCoding [ Coding ] fhir:StructureMap.group.rule.source.defaultValueContactPoint [ ContactPoint ] fhir:StructureMap.group.rule.source.defaultValueCount [ Count ] fhir:StructureMap.group.rule.source.defaultValueDistance [ Distance ] fhir:StructureMap.group.rule.source.defaultValueDuration [ Duration ] fhir:StructureMap.group.rule.source.defaultValueHumanName [ HumanName ] fhir:StructureMap.group.rule.source.defaultValueIdentifier [ Identifier ] fhir:StructureMap.group.rule.source.defaultValueMoney [ Money ] fhir:StructureMap.group.rule.source.defaultValuePeriod [ Period ] fhir:StructureMap.group.rule.source.defaultValueQuantity [ Quantity ] fhir:StructureMap.group.rule.source.defaultValueRange [ Range ] fhir:StructureMap.group.rule.source.defaultValueRatio [ Ratio ] fhir:StructureMap.group.rule.source.defaultValueReference [ Reference ] fhir:StructureMap.group.rule.source.defaultValueSampledData [ SampledData ] fhir:StructureMap.group.rule.source.defaultValueSignature [ Signature ] fhir:StructureMap.group.rule.source.defaultValueTiming [ Timing ]fhir: ]fhir:StructureMap.group.rule.source.defaultValueParameterDefinition [ ParameterDefinition ] fhir:StructureMap.group.rule.source.defaultValueDataRequirement [ DataRequirement ] fhir:StructureMap.group.rule.source.defaultValueRelatedArtifact [ RelatedArtifact ] fhir:StructureMap.group.rule.source.defaultValueContactDetail [ ContactDetail ] fhir:StructureMap.group.rule.source.defaultValueContributor [ Contributor ] fhir:StructureMap.group.rule.source.defaultValueTriggerDefinition [ TriggerDefinition ] fhir:StructureMap.group.rule.source.defaultValueExpression [ Expression ] fhir:StructureMap.group.rule.source.defaultValueUsageContext [ UsageContext ] fhir:StructureMap.group.rule.source.defaultValueDosage [ Dosage ] fhir:StructureMap.group.rule.source.element [ string ]; # 0..1 Optional field for this source fhir:StructureMap.group.rule.source.listMode [ code ]; # 0..1 first | not_first | last | not_last | only_one fhir:StructureMap.group.rule.source.variable [ id ]; # 0..1 Named context for field, if a field is specified fhir:StructureMap.group.rule.source.condition [ string ]; # 0..1 FHIRPath expression - must be true or the rule does not apply fhir:StructureMap.group.rule.source.check [ string ]; # 0..1 FHIRPath expression - must be true or the mapping engine throws an error instead of completing fhir:StructureMap.group.rule.source.logMessage [ string ]; # 0..1 Message to put in log if source exists (FHIRPath) ], ...; fhir:StructureMap.group.rule.target [ # 0..* Content to create because of this mapping rule fhir:StructureMap.group.rule.target.context [ id ]; # 0..1 Type or variable this rule applies to fhir:StructureMap.group.rule.target.contextType [ code ]; # 0..1 type | variable fhir:StructureMap.group.rule.target.element [ string ]; # 0..1 Field to create in the context fhir:StructureMap.group.rule.target.variable [ id ]; # 0..1 Named context for field, if desired, and a field is specified fhir:StructureMap.group.rule.target.listMode [ code ], ... ; # 0..* first | share | last | collate fhir:StructureMap.group.rule.target.listRuleId [ id ]; # 0..1 Internal rule reference for shared list items fhir:StructureMap.group.rule.target.transform [ code ]; # 0..1 create | copy + fhir:StructureMap.group.rule.target.parameter [ # 0..* Parameters to the transform # StructureMap.group.rule.target.parameter.value[x] : 1..1 Parameter value - variable or literal. One of these 5 fhir:StructureMap.group.rule.target.parameter.valueId [ id ] fhir:StructureMap.group.rule.target.parameter.valueString [ string ] fhir:StructureMap.group.rule.target.parameter.valueBoolean [ boolean ] fhir:StructureMap.group.rule.target.parameter.valueInteger [ integer ] fhir:StructureMap.group.rule.target.parameter.valueDecimal [ decimal ] ], ...; ], ...; fhir:StructureMap.group.rule.rule [ See StructureMap.group.rule ], ... ; # 0..* Rules contained in this rule fhir:StructureMap.group.rule.dependent [ # 0..* Which other rules to apply in the context of this rule fhir:StructureMap.group.rule.dependent.name [ id ]; # 1..1 Name of a rule or group to apply fhir:StructureMap.group.rule.dependent.variable [ string ], ... ; # 1..* Variable to pass to the rule or group ], ...; fhir:StructureMap.group.rule.documentation [ string ]; # 0..1 Documentation for this instance of data ], ...; ], ...; ]
Changes
since
DSTU2
R3
| StructureMap | |
| StructureMap.experimental |
|
| StructureMap.structure.url |
|
| StructureMap.import |
|
| StructureMap.group.rule.source.defaultValue[x] |
|
| StructureMap.group.rule.source.logMessage |
|
This
resource
did
not
exist
in
Release
2
See
the
Full
Difference
for
further
information
This analysis is available as XML or JSON .
See R3 <--> R4 Conversion Maps (status = 2 tests that all execute ok. 2 fail round-trip testing and 2 r3 resources are invalid (0 errors). )
Structure
| Name | Flags | Card. | Type |
Description
&
Constraints
|
|---|---|---|---|---|
|
I 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 |
|
|
Σ | 1..1 | uri |
|
|
Σ | 0..* | Identifier |
Additional
identifier
for
the
structure
map
|
|
Σ | 0..1 | string | Business version of the structure map |
|
Σ I | 1..1 | string | Name for this structure map (computer friendly) |
|
Σ | 0..1 | string | Name for this structure map (human friendly) |
|
?! Σ | 1..1 | code |
draft
|
active
|
retired
|
unknown
PublicationStatus ( Required ) |
|
|
0..1 | boolean | For testing purposes, not real usage |
|
Σ | 0..1 | dateTime |
Date
|
|
Σ | 0..1 | string | Name of the publisher (organization or individual) |
|
Σ | 0..* | ContactDetail |
Contact
details
for
the
publisher
|
|
0..1 | markdown | Natural language description of the structure map | |
|
Σ | 0..* | UsageContext |
|
|
Σ | 0..* | CodeableConcept |
Intended
jurisdiction
for
structure
map
(if
applicable)
Jurisdiction |
|
0..1 | markdown | Why this structure map is defined | |
|
0..1 | markdown | Use and/or publishing restrictions | |
|
Σ | 0..* | BackboneElement |
Structure
Definition
used
by
this
map
|
|
Σ | 1..1 |
|
Canonical URL for structure definition |
|
Σ | 1..1 | code |
source
|
queried
|
target
|
produced
StructureMapModelMode ( Required ) |
|
Σ | 0..1 | string | Name for type in this map |
|
0..1 | string | Documentation on use of structure | |
|
Σ | 0..* |
|
Other
maps
used
by
this
map
(canonical
URLs)
|
|
Σ | 1..* | BackboneElement |
Named
sections
for
reader
convenience
|
|
Σ | 1..1 | id | Human-readable label |
|
Σ | 0..1 | id | Another group that this group adds rules to |
|
Σ | 1..1 | code |
none
|
types
|
type-and-types
StructureMapGroupTypeMode ( Required ) |
|
Σ | 0..1 | string |
Additional
|
|
Σ | 1..* | BackboneElement |
Named
instance
provided
when
invoking
the
map
|
|
Σ | 1..1 | id | Name for this instance of data |
|
Σ | 0..1 | string | Type for this instance of data |
|
Σ | 1..1 | code |
source
|
target
StructureMapInputMode ( Required ) |
|
0..1 | string | Documentation for this instance of data | |
|
Σ | 1..* | BackboneElement |
Transform
Rule
from
source
to
target
|
|
Σ | 1..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 | * | 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
StructureMapSourceListMode ( Required ) |
|
Σ | 0..1 | id | Named context for field, if a field is specified |
|
Σ | 0..1 | string | FHIRPath expression - must be true or the rule does not apply |
|
Σ | 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) |
|
Σ I | 0..* | BackboneElement |
Content
to
create
because
of
this
mapping
rule
+ + |
|
Σ | 0..1 | id | Type or variable this rule applies to |
|
Σ | 0..1 | code |
type
|
variable
StructureMapContextType ( Required ) |
|
Σ | 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
|
collate
StructureMapTargetListMode ( Required ) |
|
Σ | 0..1 | id | Internal rule reference for shared list items |
|
Σ | 0..1 | code |
create
|
copy
+
StructureMapTransform ( Required ) |
|
Σ | 0..* | BackboneElement |
Parameters
to
the
transform
|
|
Σ | 1..1 | Parameter value - variable or literal | |
|
id | |||
|
string | |||
|
boolean | |||
|
integer | |||
|
decimal | |||
|
Σ | 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 rule or group to apply |
|
Σ | 1..* | string |
Variable
to
pass
to
the
rule
or
group
|
|
0..1 | string | Documentation for this instance of data | |
Documentation
for
this
format
|
||||
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 --> <name value="[string]"/><!--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 (organization or individual) --> <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact>
< <</useContext><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 --> <structure> <!-- 0..* Structure Definition used by this map -->< < < <<url><!-- 1..1 canonical(StructureDefinition) Canonical URL for 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> <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]"/><!-- 1..1 none | 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> <!-- 1..* Transform Rule from source to target --><<name value="[id]"/><!-- 1..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[x]><!-- 0..1 * Default value if no value exists --></defaultValue[x]>< < < < <<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="[id]"/><!-- 0..1 Type or variable this rule applies to --> <contextType value="[code]"/><!-- 0..1 type | variable --> <element value="[string]"/><!-- 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 | collate --> <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 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 --> <variable value="[string]"/><!-- 1..* Variable to pass to the rule or group --> </dependent><<documentation value="[string]"/><!-- 0..1 Documentation for this instance of data --> </rule> </group> </StructureMap>
JSON Template
{
"resourceType" : "",
"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
"name" : "<string>", // C? 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 (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
"structure" : [{ // Structure Definition used by this map
"url" : { canonical(StructureDefinition) }, // R! Canonical URL for 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)
"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>", // R! none | 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" : [{ // R! Transform Rule from source to target
"name" : "<id>", // R! 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[x]: Default value if no value exists. One of these 49:
"defaultValueBase64Binary" : "<base64Binary>",
"defaultValueBoolean" : <boolean>,
"defaultValueCanonical" : "<canonical>",
"defaultValueCode" : "<code>",
"defaultValueDate" : "<date>",
"defaultValueDateTime" : "<dateTime>",
"defaultValueDecimal" : <decimal>,
"defaultValueId" : "<id>",
"defaultValueInstant" : "<instant>",
"defaultValueInteger" : <integer>,
"defaultValueMarkdown" : "<markdown>",
"defaultValueOid" : "<oid>",
"defaultValuePositiveInt" : "<positiveInt>",
"defaultValueString" : "<string>",
"defaultValueTime" : "<time>",
"defaultValueUnsignedInt" : "<unsignedInt>",
"defaultValueUri" : "<uri>",
"defaultValueUrl" : "<url>",
"defaultValueUuid" : "<uuid>",
"defaultValueAddress" : { Address },
"defaultValueAge" : { Age },
"defaultValueAnnotation" : { Annotation },
"defaultValueAttachment" : { Attachment },
"defaultValueCodeableConcept" : { CodeableConcept },
"defaultValueCoding" : { Coding },
"defaultValueContactPoint" : { ContactPoint },
"defaultValueCount" : { Count },
"defaultValueDistance" : { Distance },
"defaultValueDuration" : { Duration },
"defaultValueHumanName" : { HumanName },
"defaultValueIdentifier" : { Identifier },
"defaultValueMoney" : { Money },
"defaultValuePeriod" : { Period },
"defaultValueQuantity" : { Quantity },
"defaultValueRange" : { Range },
"defaultValueRatio" : { Ratio },
"defaultValueReference" : { Reference },
"defaultValueSampledData" : { SampledData },
"defaultValueSignature" : { Signature },
"defaultValueTiming" : { Timing },
"defaultValueParameterDefinition" : { ParameterDefinition },
"defaultValueDataRequirement" : { DataRequirement },
"defaultValueRelatedArtifact" : { RelatedArtifact },
"defaultValueContactDetail" : { ContactDetail },
"defaultValueContributor" : { Contributor },
"defaultValueTriggerDefinition" : { TriggerDefinition },
"defaultValueExpression" : { Expression },
"defaultValueUsageContext" : { UsageContext },
"defaultValueDosage" : { Dosage },
"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" : "<id>", // Type or variable this rule applies to
"contextType" : "<code>", // type | variable
"element" : "<string>", // Field to create in the context
"variable" : "<id>", // Named context for field, if desired, and a field is specified
"listMode" : ["<code>"], // first | share | last | collate
"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 5:
">"
">"
">
">
">
"valueId" : "<id>"
"valueString" : "<string>"
"valueBoolean" : <boolean>
"valueInteger" : <integer>
"valueDecimal" : <decimal>
}]
}],
"
"
"
"
"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
"variable" : ["<string>"] // R! Variable 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:fhir:StructureMap.url [ uri ]; # 1..1 Canonical identifier for this structure map, represented as a URI (globally unique) fhir:StructureMap.identifier [ Identifier ], ... ; # 0..* Additional identifier for the structure map fhir:StructureMap.version [ string ]; # 0..1 Business version of the structure map fhir:StructureMap.name [ string ]; # 1..1 Name for this structure map (computer friendly) fhir:StructureMap.title [ string ]; # 0..1 Name for this structure map (human friendly) fhir:StructureMap.status [ code ]; # 1..1 draft | active | retired | unknownfhir: fhir: fhir:fhir:StructureMap.experimental [ boolean ]; # 0..1 For testing purposes, not real usage fhir:StructureMap.date [ dateTime ]; # 0..1 Date last changed fhir:StructureMap.publisher [ string ]; # 0..1 Name of the publisher (organization or individual) fhir:StructureMap.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher fhir:StructureMap.description [ markdown ]; # 0..1 Natural language description of the structure mapfhir:fhir:StructureMap.useContext [ UsageContext ], ... ; # 0..* The context that the content is intended to support fhir:StructureMap.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for structure map (if applicable)fhir:fhir:StructureMap.purpose [ markdown ]; # 0..1 Why this structure map is defined fhir:StructureMap.copyright [ markdown ]; # 0..1 Use and/or publishing restrictions fhir:StructureMap.structure [ # 0..* Structure Definition used by this mapfhir:fhir:StructureMap.structure.url [ canonical(StructureDefinition) ]; # 1..1 Canonical URL for structure definition fhir:StructureMap.structure.mode [ code ]; # 1..1 source | queried | target | produced fhir:StructureMap.structure.alias [ string ]; # 0..1 Name for type in this map fhir:StructureMap.structure.documentation [ string ]; # 0..1 Documentation on use of structure ], ...;fhir: fhir:fhir:StructureMap.import [ canonical(StructureMap) ], ... ; # 0..* Other maps used by this map (canonical URLs) fhir:StructureMap.group [ # 1..* Named sections for reader convenience fhir:StructureMap.group.name [ id ]; # 1..1 Human-readable label fhir:StructureMap.group.extends [ id ]; # 0..1 Another group that this group adds rules tofhir: fhir:fhir:StructureMap.group.typeMode [ code ]; # 1..1 none | types | type-and-types fhir:StructureMap.group.documentation [ string ]; # 0..1 Additional description/explanation for group fhir:StructureMap.group.input [ # 1..* Named instance provided when invoking the map fhir:StructureMap.group.input.name [ id ]; # 1..1 Name for this instance of data fhir:StructureMap.group.input.type [ string ]; # 0..1 Type for this instance of data fhir:StructureMap.group.input.mode [ code ]; # 1..1 source | target fhir:StructureMap.group.input.documentation [ string ]; # 0..1 Documentation for this instance of data ], ...; fhir:StructureMap.group.rule [ # 1..* Transform Rule from source to target fhir:StructureMap.group.rule.name [ id ]; # 1..1 Name of the rule for internal references fhir:StructureMap.group.rule.source [ # 1..* Source inputs to the mapping fhir:StructureMap.group.rule.source.context [ id ]; # 1..1 Type or variable this rule applies to fhir:StructureMap.group.rule.source.min [ integer ]; # 0..1 Specified minimum cardinality fhir:StructureMap.group.rule.source.max [ string ]; # 0..1 Specified maximum cardinality (number or *) fhir:StructureMap.group.rule.source.type [ string ]; # 0..1 Rule only applies if source has this type# . One of these 38# StructureMap.group.rule.source.defaultValue[x] : 0..1 Default value if no value exists. One of these 49 fhir:StructureMap.group.rule.source.defaultValueBase64Binary [ base64Binary ] fhir:StructureMap.group.rule.source.defaultValueBoolean [ boolean ] fhir:StructureMap.group.rule.source.defaultValueCanonical [ canonical ] fhir:StructureMap.group.rule.source.defaultValueCode [ code ] fhir:StructureMap.group.rule.source.defaultValueDate [ date ] fhir:StructureMap.group.rule.source.defaultValueDateTime [ dateTime ] fhir:StructureMap.group.rule.source.defaultValueDecimal [ decimal ] fhir:StructureMap.group.rule.source.defaultValueId [ id ] fhir:StructureMap.group.rule.source.defaultValueInstant [ instant ] fhir:StructureMap.group.rule.source.defaultValueInteger [ integer ] fhir:StructureMap.group.rule.source.defaultValueMarkdown [ markdown ] fhir:StructureMap.group.rule.source.defaultValueOid [ oid ] fhir:StructureMap.group.rule.source.defaultValuePositiveInt [ positiveInt ] fhir:StructureMap.group.rule.source.defaultValueString [ string ] fhir:StructureMap.group.rule.source.defaultValueTime [ time ] fhir:StructureMap.group.rule.source.defaultValueUnsignedInt [ unsignedInt ] fhir:StructureMap.group.rule.source.defaultValueUri [ uri ] fhir:StructureMap.group.rule.source.defaultValueUrl [ url ] fhir:StructureMap.group.rule.source.defaultValueUuid [ uuid ] fhir:StructureMap.group.rule.source.defaultValueAddress [ Address ] fhir:StructureMap.group.rule.source.defaultValueAge [ Age ] fhir:StructureMap.group.rule.source.defaultValueAnnotation [ Annotation ] fhir:StructureMap.group.rule.source.defaultValueAttachment [ Attachment ] fhir:StructureMap.group.rule.source.defaultValueCodeableConcept [ CodeableConcept ] fhir:StructureMap.group.rule.source.defaultValueCoding [ Coding ] fhir:StructureMap.group.rule.source.defaultValueContactPoint [ ContactPoint ] fhir:StructureMap.group.rule.source.defaultValueCount [ Count ] fhir:StructureMap.group.rule.source.defaultValueDistance [ Distance ] fhir:StructureMap.group.rule.source.defaultValueDuration [ Duration ] fhir:StructureMap.group.rule.source.defaultValueHumanName [ HumanName ] fhir:StructureMap.group.rule.source.defaultValueIdentifier [ Identifier ] fhir:StructureMap.group.rule.source.defaultValueMoney [ Money ] fhir:StructureMap.group.rule.source.defaultValuePeriod [ Period ] fhir:StructureMap.group.rule.source.defaultValueQuantity [ Quantity ] fhir:StructureMap.group.rule.source.defaultValueRange [ Range ] fhir:StructureMap.group.rule.source.defaultValueRatio [ Ratio ] fhir:StructureMap.group.rule.source.defaultValueReference [ Reference ] fhir:StructureMap.group.rule.source.defaultValueSampledData [ SampledData ] fhir:StructureMap.group.rule.source.defaultValueSignature [ Signature ] fhir:StructureMap.group.rule.source.defaultValueTiming [ Timing ]fhir: ]fhir:StructureMap.group.rule.source.defaultValueParameterDefinition [ ParameterDefinition ] fhir:StructureMap.group.rule.source.defaultValueDataRequirement [ DataRequirement ] fhir:StructureMap.group.rule.source.defaultValueRelatedArtifact [ RelatedArtifact ] fhir:StructureMap.group.rule.source.defaultValueContactDetail [ ContactDetail ] fhir:StructureMap.group.rule.source.defaultValueContributor [ Contributor ] fhir:StructureMap.group.rule.source.defaultValueTriggerDefinition [ TriggerDefinition ] fhir:StructureMap.group.rule.source.defaultValueExpression [ Expression ] fhir:StructureMap.group.rule.source.defaultValueUsageContext [ UsageContext ] fhir:StructureMap.group.rule.source.defaultValueDosage [ Dosage ] fhir:StructureMap.group.rule.source.element [ string ]; # 0..1 Optional field for this source fhir:StructureMap.group.rule.source.listMode [ code ]; # 0..1 first | not_first | last | not_last | only_one fhir:StructureMap.group.rule.source.variable [ id ]; # 0..1 Named context for field, if a field is specified fhir:StructureMap.group.rule.source.condition [ string ]; # 0..1 FHIRPath expression - must be true or the rule does not apply fhir:StructureMap.group.rule.source.check [ string ]; # 0..1 FHIRPath expression - must be true or the mapping engine throws an error instead of completing fhir:StructureMap.group.rule.source.logMessage [ string ]; # 0..1 Message to put in log if source exists (FHIRPath) ], ...; fhir:StructureMap.group.rule.target [ # 0..* Content to create because of this mapping rule fhir:StructureMap.group.rule.target.context [ id ]; # 0..1 Type or variable this rule applies to fhir:StructureMap.group.rule.target.contextType [ code ]; # 0..1 type | variable fhir:StructureMap.group.rule.target.element [ string ]; # 0..1 Field to create in the context fhir:StructureMap.group.rule.target.variable [ id ]; # 0..1 Named context for field, if desired, and a field is specified fhir:StructureMap.group.rule.target.listMode [ code ], ... ; # 0..* first | share | last | collate fhir:StructureMap.group.rule.target.listRuleId [ id ]; # 0..1 Internal rule reference for shared list items fhir:StructureMap.group.rule.target.transform [ code ]; # 0..1 create | copy + fhir:StructureMap.group.rule.target.parameter [ # 0..* Parameters to the transform # StructureMap.group.rule.target.parameter.value[x] : 1..1 Parameter value - variable or literal. One of these 5 fhir:StructureMap.group.rule.target.parameter.valueId [ id ] fhir:StructureMap.group.rule.target.parameter.valueString [ string ] fhir:StructureMap.group.rule.target.parameter.valueBoolean [ boolean ] fhir:StructureMap.group.rule.target.parameter.valueInteger [ integer ] fhir:StructureMap.group.rule.target.parameter.valueDecimal [ decimal ] ], ...; ], ...; fhir:StructureMap.group.rule.rule [ See StructureMap.group.rule ], ... ; # 0..* Rules contained in this rule fhir:StructureMap.group.rule.dependent [ # 0..* Which other rules to apply in the context of this rule fhir:StructureMap.group.rule.dependent.name [ id ]; # 1..1 Name of a rule or group to apply fhir:StructureMap.group.rule.dependent.variable [ string ], ... ; # 1..* Variable to pass to the rule or group ], ...; fhir:StructureMap.group.rule.documentation [ string ]; # 0..1 Documentation for this instance of data ], ...; ], ...; ]
Changes
since
DSTU2
Release
3
| StructureMap | |
| StructureMap.experimental |
|
| StructureMap.structure.url |
|
| StructureMap.import |
|
| StructureMap.group.rule.source.defaultValue[x] |
|
| StructureMap.group.rule.source.logMessage |
|
This
resource
did
not
exist
in
Release
2
See
the
Full
Difference
for
further
information
This analysis is available as XML or JSON .
See R3 <--> R4 Conversion Maps (status = 2 tests that all execute ok. 2 fail round-trip testing and 2 r3 resources are invalid (0 errors). )
Alternate
See
the
Profiles
&
Extensions
and
the
alternate
definitions:
Master
Definition
(
XML
,
+
JSON
),
,
XML
Schema
/
Schematron
(for
)
+
JSON
Schema
,
ShEx
(for
Turtle
)
+
see
the
extensions
&
the
dependency
analysis
| Path | Definition | Type | Reference |
|---|---|---|---|
| StructureMap.status |
The
lifecycle
status
of
|
Required | PublicationStatus |
| StructureMap.jurisdiction |
Countries
and
regions
within
which
this
artifact
is
targeted
for
|
Extensible | Jurisdiction ValueSet |
| StructureMap.structure.mode |
How
the
referenced
structure
is
used
in
this
|
Required | StructureMapModelMode |
| StructureMap.group.typeMode |
If
this
is
the
default
rule
set
to
apply
for
the
source
type,
or
this
combination
of
|
Required | StructureMapGroupTypeMode |
| StructureMap.group.input.mode |
Mode
for
this
instance
of
|
Required | StructureMapInputMode |
| StructureMap.group.rule.source.listMode |
If
field
is
a
list,
how
to
manage
the
|
Required | StructureMapSourceListMode |
| StructureMap.group.rule.target.contextType |
How
to
interpret
the
|
Required | StructureMapContextType |
| StructureMap.group.rule.target.listMode |
If
field
is
a
list,
how
to
manage
the
|
Required | StructureMapTargetListMode |
| StructureMap.group.rule.target.transform |
How
data
is
|
Required | StructureMapTransform |
| id | Level | Location | Description | Expression |
| smp-0 | Warning | (base) | Name should be usable as an identifier for the module by machine processing applications such as code generation | name.matches('[A-Z]([A-Za-z0-9_]){0,254}') |
|
smp-1
|
Rule | StructureMap.group.rule.target |
Can
only
have
a
element
if
you
have
a
context
|
|
|
smp-2
|
Rule | StructureMap.group.rule.target |
Must
have
a
contextType
if
you
have
a
context
|
|
Search parameters for this resource. The common parameters also apply. See Searching for more information about searching in REST, messaging, and services.
| Name | Type | Description | Expression | In Common |
| context | token | A use context assigned to the structure map | (StructureMap.useContext.value as CodeableConcept) | |
| context-quantity | quantity | A quantity- or range-valued use context assigned to the structure map | (StructureMap.useContext.value as Quantity) | (StructureMap.useContext.value as Range) | |
| context-type | token | A type of use context assigned to the structure map | StructureMap.useContext.code | |
| context-type-quantity | composite | A use context type and quantity- or range-based value assigned to the structure map |
On
StructureMap.useContext:
context-type: code context-quantity: value.as(Quantity) | value.as(Range) | |
| context-type-value | composite | A use context type and value assigned to the structure map |
On
StructureMap.useContext:
context-type: code context: value.as(CodeableConcept) | |
| date | date | The structure map publication date | StructureMap.date | |
| description | string | The description of the structure map | StructureMap.description | |
| identifier | token | External identifier for the structure map | StructureMap.identifier | |
| jurisdiction | token | Intended jurisdiction for the structure map | StructureMap.jurisdiction | |
| name | string | Computationally friendly name of the structure map | StructureMap.name | |
| publisher | string | Name of the publisher of the structure map | StructureMap.publisher | |
| status | token | The current status of the structure map | StructureMap.status | |
| title | string | The human-friendly name of the structure map | StructureMap.title | |
| url | uri | The uri that identifies the structure map | StructureMap.url | |
| version | token | The business version of the structure map | StructureMap.version |