This page is part of the FHIR Specification (v1.6.0: STU 3 Ballot 4). 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: 0 | 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 of rules that describe how one Structure is related to another, and provides sufficient detail to allow for autoamted conversion of instances.
The intention of the structure map resource is to allow a specialist in a 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 autoamtically transform from one format to the other.
Maps are uni-directional: 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 Mappping Language, which defines a concrete syntax for the 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 to defined).
It's possible to apply the mapping language to structures that do not even have (or cannot have) formally defined types, though of course 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 resoures 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 gruop is invoked, all the rules in the group are checked to see whether they apply.
Each rule may has 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
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
StructureMap | DomainResource | A Map of relationships between 2 structures that can be used to transform data | ||
url | Σ | 1..1 | uri | Absolute URL used to reference this StructureMap |
identifier | Σ | 0..* | Identifier | Other identifiers for the StructureMap |
version | Σ | 0..1 | string | Logical id for this version of the StructureMap |
name | Σ | 1..1 | string | Informal name for this StructureMap |
status | ?!Σ | 1..1 | code | draft | active | retired ConformanceResourceStatus (Required) |
experimental | Σ | 0..1 | boolean | If for testing purposes, not real usage |
publisher | Σ | 0..1 | string | Name of the publisher (Organization or individual) |
contact | Σ | 0..* | BackboneElement | Contact details of the publisher |
name | Σ | 0..1 | string | Name of an individual to contact |
telecom | Σ | 0..* | ContactPoint | Contact details for individual or publisher |
date | Σ | 0..1 | dateTime | Date for this version of the StructureMap |
description | Σ | 0..1 | markdown | Natural language description of the StructureMap |
useContext | Σ | 0..* | CodeableConcept | Content intends to support these contexts Context of Use ValueSet (Extensible) |
requirements | 0..1 | markdown | Scope and Usage this structure map is for | |
copyright | 0..1 | string | Use and/or publishing restrictions | |
structure | Σ | 0..* | BackboneElement | Structure Definition used by this map |
url | Σ | 1..1 | uri | Canonical URL for structure definition |
mode | Σ | 1..1 | code | source | queried | target | produced StructureMapModelMode (Required) |
documentation | 0..1 | string | Documentation on use of structure | |
import | Σ | 0..* | uri | Other maps used by this map (canonical URLs) |
group | Σ | 1..* | BackboneElement | Named sections for reader convenience |
name | Σ | 1..1 | id | Descriptive name for a user |
extends | Σ | 0..1 | id | Another group that this group adds rules to |
documentation | Σ | 0..1 | string | Documentation for this group |
input | Σ | 1..* | BackboneElement | Named instance provided when invoking the map |
name | Σ | 1..1 | id | Name for this instance of data |
type | Σ | 0..1 | string | Type for this instance of data |
mode | Σ | 1..1 | code | source | target StructureMapInputMode (Required) |
documentation | 0..1 | string | Documentation for this instance of data | |
rule | Σ | 1..* | BackboneElement | Transform Rule from source to target |
name | Σ | 1..1 | id | Name of the rule for internal references |
source | Σ | 1..* | BackboneElement | Source inputs to the mapping |
required | Σ | 1..1 | boolean | Whether this rule applies if the source isn't found |
context | Σ | 1..1 | id | Type or variable this rule applies to |
contextType | Σ | 1..1 | code | type | variable StructureMapContextType (Required) |
element | Σ | 0..1 | string | Optional field for this source |
listMode | Σ | 0..1 | code | first | share | last StructureMapListMode (Required) |
variable | Σ | 0..1 | id | Named context for field, if a field is specified |
condition | Σ | 0..1 | string | FluentPath expression - must be true or the rule does not apply |
check | Σ | 0..1 | string | FluentPath expression - must be true or the mapping engine throws an error instead of completing |
target | Σ | 0..* | BackboneElement | Content to create because of this mapping rule |
context | Σ | 1..1 | id | Type or variable this rule applies to |
contextType | Σ | 1..1 | code | type | variable StructureMapContextType (Required) |
element | Σ | 0..1 | string | Field to create in the context |
variable | Σ | 0..1 | id | Named context for field, if desired, and a field is specified |
listMode | Σ | 0..* | code | first | share | last StructureMapListMode (Required) |
listRuleId | Σ | 0..1 | id | Internal rule reference for shared list items |
transform | Σ | 0..1 | code | create | copy + StructureMapTransform (Required) |
parameter | Σ | 0..* | BackboneElement | Parameters to the transform |
value[x] | Σ | 1..1 | Parameter value - variable or literal | |
valueId | id | |||
valueString | string | |||
valueBoolean | boolean | |||
valueInteger | integer | |||
valueDecimal | decimal | |||
rule | Σ | 0..* | see rule | Rules contained in this rule |
dependent | Σ | 0..* | BackboneElement | Which other rules to apply in the context of this rule |
name | Σ | 1..1 | id | Name of a rule or group to apply |
variable | Σ | 1..* | string | Names of variables to pass to the rule or group |
documentation | 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 Absolute URL used to reference this StructureMap --> <identifier><!-- 0..* Identifier Other identifiers for the StructureMap --></identifier> <version value="[string]"/><!-- 0..1 Logical id for this version of the StructureMap --> <name value="[string]"/><!-- 1..1 Informal name for this StructureMap --> <status value="[code]"/><!-- 1..1 draft | active | retired --> <experimental value="[boolean]"/><!-- 0..1 If for testing purposes, not real usage --> <publisher value="[string]"/><!-- 0..1 Name of the publisher (Organization or individual) --> <contact> <!-- 0..* Contact details of the publisher --> <name value="[string]"/><!-- 0..1 Name of an individual to contact --> <telecom><!-- 0..* ContactPoint Contact details for individual or publisher --></telecom> </contact> <date value="[dateTime]"/><!-- 0..1 Date for this version of the StructureMap --> <description value="[markdown]"/><!-- 0..1 Natural language description of the StructureMap --> <useContext><!-- 0..* CodeableConcept Content intends to support these contexts --></useContext> <requirements value="[markdown]"/><!-- 0..1 Scope and Usage this structure map is for --> <copyright value="[string]"/><!-- 0..1 Use and/or publishing restrictions --> <structure> <!-- 0..* Structure Definition used by this map --> <url value="[uri]"/><!-- 1..1 Canonical URL for structure definition --> <mode value="[code]"/><!-- 1..1 source | queried | target | produced --> <documentation value="[string]"/><!-- 0..1 Documentation on use of structure --> </structure> <import value="[uri]"/><!-- 0..* Other maps used by this map (canonical URLs) --> <group> <!-- 1..* Named sections for reader convenience --> <name value="[id]"/><!-- 1..1 Descriptive name for a user --> <extends value="[id]"/><!-- 0..1 Another group that this group adds rules to --> <documentation value="[string]"/><!-- 0..1 Documentation for this 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 --> <required value="[boolean]"/><!-- 1..1 Whether this rule applies if the source isn't found --> <context value="[id]"/><!-- 1..1 Type or variable this rule applies to --> <contextType value="[code]"/><!-- 1..1 type | variable --> <element value="[string]"/><!-- 0..1 Optional field for this source --> <listMode value="[code]"/><!-- 0..1 first | share | last --> <variable value="[id]"/><!-- 0..1 Named context for field, if a field is specified --> <condition value="[string]"/><!-- 0..1 FluentPath expression - must be true or the rule does not apply --> <check value="[string]"/><!-- 0..1 FluentPath expression - must be true or the mapping engine throws an error instead of completing --> </source> <target> <!-- 0..* Content to create because of this mapping rule --> <context value="[id]"/><!-- 1..1 Type or variable this rule applies to --> <contextType value="[code]"/><!-- 1..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 --> <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..* Names of variables 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" : "StructureMap", // from Resource: id, meta, implicitRules, and language // from DomainResource: text, contained, extension, and modifierExtension "url" : "<uri>", // R! Absolute URL used to reference this StructureMap "identifier" : [{ Identifier }], // Other identifiers for the StructureMap "version" : "<string>", // Logical id for this version of the StructureMap "name" : "<string>", // R! Informal name for this StructureMap "status" : "<code>", // R! draft | active | retired "experimental" : <boolean>, // If for testing purposes, not real usage "publisher" : "<string>", // Name of the publisher (Organization or individual) "contact" : [{ // Contact details of the publisher "name" : "<string>", // Name of an individual to contact "telecom" : [{ ContactPoint }] // Contact details for individual or publisher }], "date" : "<dateTime>", // Date for this version of the StructureMap "description" : "<markdown>", // Natural language description of the StructureMap "useContext" : [{ CodeableConcept }], // Content intends to support these contexts "requirements" : "<markdown>", // Scope and Usage this structure map is for "copyright" : "<string>", // Use and/or publishing restrictions "structure" : [{ // Structure Definition used by this map "url" : "<uri>", // R! Canonical URL for structure definition "mode" : "<code>", // R! source | queried | target | produced "documentation" : "<string>" // Documentation on use of structure }], "import" : ["<uri>"], // Other maps used by this map (canonical URLs) "group" : [{ // R! Named sections for reader convenience "name" : "<id>", // R! Descriptive name for a user "extends" : "<id>", // Another group that this group adds rules to "documentation" : "<string>", // Documentation for this 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 "required" : <boolean>, // R! Whether this rule applies if the source isn't found "context" : "<id>", // R! Type or variable this rule applies to "contextType" : "<code>", // R! type | variable "element" : "<string>", // Optional field for this source "listMode" : "<code>", // first | share | last "variable" : "<id>", // Named context for field, if a field is specified "condition" : "<string>", // FluentPath expression - must be true or the rule does not apply "check" : "<string>" // FluentPath expression - must be true or the mapping engine throws an error instead of completing }], "target" : [{ // Content to create because of this mapping rule "context" : "<id>", // R! Type or variable this rule applies to "contextType" : "<code>", // R! 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 "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! Names of variables 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:StructureMap.url [ uri ]; # 1..1 Absolute URL used to reference this StructureMap fhir:StructureMap.identifier [ Identifier ], ... ; # 0..* Other identifiers for the StructureMap fhir:StructureMap.version [ string ]; # 0..1 Logical id for this version of the StructureMap fhir:StructureMap.name [ string ]; # 1..1 Informal name for this StructureMap fhir:StructureMap.status [ code ]; # 1..1 draft | active | retired fhir:StructureMap.experimental [ boolean ]; # 0..1 If for testing purposes, not real usage fhir:StructureMap.publisher [ string ]; # 0..1 Name of the publisher (Organization or individual) fhir:StructureMap.contact [ # 0..* Contact details of the publisher fhir:StructureMap.contact.name [ string ]; # 0..1 Name of an individual to contact fhir:StructureMap.contact.telecom [ ContactPoint ], ... ; # 0..* Contact details for individual or publisher ], ...; fhir:StructureMap.date [ dateTime ]; # 0..1 Date for this version of the StructureMap fhir:StructureMap.description [ markdown ]; # 0..1 Natural language description of the StructureMap fhir:StructureMap.useContext [ CodeableConcept ], ... ; # 0..* Content intends to support these contexts fhir:StructureMap.requirements [ markdown ]; # 0..1 Scope and Usage this structure map is for fhir:StructureMap.copyright [ string ]; # 0..1 Use and/or publishing restrictions fhir:StructureMap.structure [ # 0..* Structure Definition used by this map fhir:StructureMap.structure.url [ uri ]; # 1..1 Canonical URL for structure definition fhir:StructureMap.structure.mode [ code ]; # 1..1 source | queried | target | produced fhir:StructureMap.structure.documentation [ string ]; # 0..1 Documentation on use of structure ], ...; fhir:StructureMap.import [ uri ], ... ; # 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 Descriptive name for a user fhir:StructureMap.group.extends [ id ]; # 0..1 Another group that this group adds rules to fhir:StructureMap.group.documentation [ string ]; # 0..1 Documentation for this 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.required [ boolean ]; # 1..1 Whether this rule applies if the source isn't found fhir:StructureMap.group.rule.source.context [ id ]; # 1..1 Type or variable this rule applies to fhir:StructureMap.group.rule.source.contextType [ code ]; # 1..1 type | variable fhir:StructureMap.group.rule.source.element [ string ]; # 0..1 Optional field for this source fhir:StructureMap.group.rule.source.listMode [ code ]; # 0..1 first | share | last 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 FluentPath expression - must be true or the rule does not apply fhir:StructureMap.group.rule.source.check [ string ]; # 0..1 FluentPath expression - must be true or the mapping engine throws an error instead of completing ], ...; fhir:StructureMap.group.rule.target [ # 0..* Content to create because of this mapping rule fhir:StructureMap.group.rule.target.context [ id ]; # 1..1 Type or variable this rule applies to fhir:StructureMap.group.rule.target.contextType [ code ]; # 1..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 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..* Names of variables to pass to the rule or group ], ...; fhir:StructureMap.group.rule.documentation [ string ]; # 0..1 Documentation for this instance of data ], ...; ], ...; ]
Changes since DSTU2
This resource did not exist in Release 2
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
StructureMap | DomainResource | A Map of relationships between 2 structures that can be used to transform data | ||
url | Σ | 1..1 | uri | Absolute URL used to reference this StructureMap |
identifier | Σ | 0..* | Identifier | Other identifiers for the StructureMap |
version | Σ | 0..1 | string | Logical id for this version of the StructureMap |
name | Σ | 1..1 | string | Informal name for this StructureMap |
status | ?!Σ | 1..1 | code | draft | active | retired ConformanceResourceStatus (Required) |
experimental | Σ | 0..1 | boolean | If for testing purposes, not real usage |
publisher | Σ | 0..1 | string | Name of the publisher (Organization or individual) |
contact | Σ | 0..* | BackboneElement | Contact details of the publisher |
name | Σ | 0..1 | string | Name of an individual to contact |
telecom | Σ | 0..* | ContactPoint | Contact details for individual or publisher |
date | Σ | 0..1 | dateTime | Date for this version of the StructureMap |
description | Σ | 0..1 | markdown | Natural language description of the StructureMap |
useContext | Σ | 0..* | CodeableConcept | Content intends to support these contexts Context of Use ValueSet (Extensible) |
requirements | 0..1 | markdown | Scope and Usage this structure map is for | |
copyright | 0..1 | string | Use and/or publishing restrictions | |
structure | Σ | 0..* | BackboneElement | Structure Definition used by this map |
url | Σ | 1..1 | uri | Canonical URL for structure definition |
mode | Σ | 1..1 | code | source | queried | target | produced StructureMapModelMode (Required) |
documentation | 0..1 | string | Documentation on use of structure | |
import | Σ | 0..* | uri | Other maps used by this map (canonical URLs) |
group | Σ | 1..* | BackboneElement | Named sections for reader convenience |
name | Σ | 1..1 | id | Descriptive name for a user |
extends | Σ | 0..1 | id | Another group that this group adds rules to |
documentation | Σ | 0..1 | string | Documentation for this group |
input | Σ | 1..* | BackboneElement | Named instance provided when invoking the map |
name | Σ | 1..1 | id | Name for this instance of data |
type | Σ | 0..1 | string | Type for this instance of data |
mode | Σ | 1..1 | code | source | target StructureMapInputMode (Required) |
documentation | 0..1 | string | Documentation for this instance of data | |
rule | Σ | 1..* | BackboneElement | Transform Rule from source to target |
name | Σ | 1..1 | id | Name of the rule for internal references |
source | Σ | 1..* | BackboneElement | Source inputs to the mapping |
required | Σ | 1..1 | boolean | Whether this rule applies if the source isn't found |
context | Σ | 1..1 | id | Type or variable this rule applies to |
contextType | Σ | 1..1 | code | type | variable StructureMapContextType (Required) |
element | Σ | 0..1 | string | Optional field for this source |
listMode | Σ | 0..1 | code | first | share | last StructureMapListMode (Required) |
variable | Σ | 0..1 | id | Named context for field, if a field is specified |
condition | Σ | 0..1 | string | FluentPath expression - must be true or the rule does not apply |
check | Σ | 0..1 | string | FluentPath expression - must be true or the mapping engine throws an error instead of completing |
target | Σ | 0..* | BackboneElement | Content to create because of this mapping rule |
context | Σ | 1..1 | id | Type or variable this rule applies to |
contextType | Σ | 1..1 | code | type | variable StructureMapContextType (Required) |
element | Σ | 0..1 | string | Field to create in the context |
variable | Σ | 0..1 | id | Named context for field, if desired, and a field is specified |
listMode | Σ | 0..* | code | first | share | last StructureMapListMode (Required) |
listRuleId | Σ | 0..1 | id | Internal rule reference for shared list items |
transform | Σ | 0..1 | code | create | copy + StructureMapTransform (Required) |
parameter | Σ | 0..* | BackboneElement | Parameters to the transform |
value[x] | Σ | 1..1 | Parameter value - variable or literal | |
valueId | id | |||
valueString | string | |||
valueBoolean | boolean | |||
valueInteger | integer | |||
valueDecimal | decimal | |||
rule | Σ | 0..* | see rule | Rules contained in this rule |
dependent | Σ | 0..* | BackboneElement | Which other rules to apply in the context of this rule |
name | Σ | 1..1 | id | Name of a rule or group to apply |
variable | Σ | 1..* | string | Names of variables to pass to the rule or group |
documentation | 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 Absolute URL used to reference this StructureMap --> <identifier><!-- 0..* Identifier Other identifiers for the StructureMap --></identifier> <version value="[string]"/><!-- 0..1 Logical id for this version of the StructureMap --> <name value="[string]"/><!-- 1..1 Informal name for this StructureMap --> <status value="[code]"/><!-- 1..1 draft | active | retired --> <experimental value="[boolean]"/><!-- 0..1 If for testing purposes, not real usage --> <publisher value="[string]"/><!-- 0..1 Name of the publisher (Organization or individual) --> <contact> <!-- 0..* Contact details of the publisher --> <name value="[string]"/><!-- 0..1 Name of an individual to contact --> <telecom><!-- 0..* ContactPoint Contact details for individual or publisher --></telecom> </contact> <date value="[dateTime]"/><!-- 0..1 Date for this version of the StructureMap --> <description value="[markdown]"/><!-- 0..1 Natural language description of the StructureMap --> <useContext><!-- 0..* CodeableConcept Content intends to support these contexts --></useContext> <requirements value="[markdown]"/><!-- 0..1 Scope and Usage this structure map is for --> <copyright value="[string]"/><!-- 0..1 Use and/or publishing restrictions --> <structure> <!-- 0..* Structure Definition used by this map --> <url value="[uri]"/><!-- 1..1 Canonical URL for structure definition --> <mode value="[code]"/><!-- 1..1 source | queried | target | produced --> <documentation value="[string]"/><!-- 0..1 Documentation on use of structure --> </structure> <import value="[uri]"/><!-- 0..* Other maps used by this map (canonical URLs) --> <group> <!-- 1..* Named sections for reader convenience --> <name value="[id]"/><!-- 1..1 Descriptive name for a user --> <extends value="[id]"/><!-- 0..1 Another group that this group adds rules to --> <documentation value="[string]"/><!-- 0..1 Documentation for this 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 --> <required value="[boolean]"/><!-- 1..1 Whether this rule applies if the source isn't found --> <context value="[id]"/><!-- 1..1 Type or variable this rule applies to --> <contextType value="[code]"/><!-- 1..1 type | variable --> <element value="[string]"/><!-- 0..1 Optional field for this source --> <listMode value="[code]"/><!-- 0..1 first | share | last --> <variable value="[id]"/><!-- 0..1 Named context for field, if a field is specified --> <condition value="[string]"/><!-- 0..1 FluentPath expression - must be true or the rule does not apply --> <check value="[string]"/><!-- 0..1 FluentPath expression - must be true or the mapping engine throws an error instead of completing --> </source> <target> <!-- 0..* Content to create because of this mapping rule --> <context value="[id]"/><!-- 1..1 Type or variable this rule applies to --> <contextType value="[code]"/><!-- 1..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 --> <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..* Names of variables 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" : "StructureMap", // from Resource: id, meta, implicitRules, and language // from DomainResource: text, contained, extension, and modifierExtension "url" : "<uri>", // R! Absolute URL used to reference this StructureMap "identifier" : [{ Identifier }], // Other identifiers for the StructureMap "version" : "<string>", // Logical id for this version of the StructureMap "name" : "<string>", // R! Informal name for this StructureMap "status" : "<code>", // R! draft | active | retired "experimental" : <boolean>, // If for testing purposes, not real usage "publisher" : "<string>", // Name of the publisher (Organization or individual) "contact" : [{ // Contact details of the publisher "name" : "<string>", // Name of an individual to contact "telecom" : [{ ContactPoint }] // Contact details for individual or publisher }], "date" : "<dateTime>", // Date for this version of the StructureMap "description" : "<markdown>", // Natural language description of the StructureMap "useContext" : [{ CodeableConcept }], // Content intends to support these contexts "requirements" : "<markdown>", // Scope and Usage this structure map is for "copyright" : "<string>", // Use and/or publishing restrictions "structure" : [{ // Structure Definition used by this map "url" : "<uri>", // R! Canonical URL for structure definition "mode" : "<code>", // R! source | queried | target | produced "documentation" : "<string>" // Documentation on use of structure }], "import" : ["<uri>"], // Other maps used by this map (canonical URLs) "group" : [{ // R! Named sections for reader convenience "name" : "<id>", // R! Descriptive name for a user "extends" : "<id>", // Another group that this group adds rules to "documentation" : "<string>", // Documentation for this 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 "required" : <boolean>, // R! Whether this rule applies if the source isn't found "context" : "<id>", // R! Type or variable this rule applies to "contextType" : "<code>", // R! type | variable "element" : "<string>", // Optional field for this source "listMode" : "<code>", // first | share | last "variable" : "<id>", // Named context for field, if a field is specified "condition" : "<string>", // FluentPath expression - must be true or the rule does not apply "check" : "<string>" // FluentPath expression - must be true or the mapping engine throws an error instead of completing }], "target" : [{ // Content to create because of this mapping rule "context" : "<id>", // R! Type or variable this rule applies to "contextType" : "<code>", // R! 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 "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! Names of variables 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:StructureMap.url [ uri ]; # 1..1 Absolute URL used to reference this StructureMap fhir:StructureMap.identifier [ Identifier ], ... ; # 0..* Other identifiers for the StructureMap fhir:StructureMap.version [ string ]; # 0..1 Logical id for this version of the StructureMap fhir:StructureMap.name [ string ]; # 1..1 Informal name for this StructureMap fhir:StructureMap.status [ code ]; # 1..1 draft | active | retired fhir:StructureMap.experimental [ boolean ]; # 0..1 If for testing purposes, not real usage fhir:StructureMap.publisher [ string ]; # 0..1 Name of the publisher (Organization or individual) fhir:StructureMap.contact [ # 0..* Contact details of the publisher fhir:StructureMap.contact.name [ string ]; # 0..1 Name of an individual to contact fhir:StructureMap.contact.telecom [ ContactPoint ], ... ; # 0..* Contact details for individual or publisher ], ...; fhir:StructureMap.date [ dateTime ]; # 0..1 Date for this version of the StructureMap fhir:StructureMap.description [ markdown ]; # 0..1 Natural language description of the StructureMap fhir:StructureMap.useContext [ CodeableConcept ], ... ; # 0..* Content intends to support these contexts fhir:StructureMap.requirements [ markdown ]; # 0..1 Scope and Usage this structure map is for fhir:StructureMap.copyright [ string ]; # 0..1 Use and/or publishing restrictions fhir:StructureMap.structure [ # 0..* Structure Definition used by this map fhir:StructureMap.structure.url [ uri ]; # 1..1 Canonical URL for structure definition fhir:StructureMap.structure.mode [ code ]; # 1..1 source | queried | target | produced fhir:StructureMap.structure.documentation [ string ]; # 0..1 Documentation on use of structure ], ...; fhir:StructureMap.import [ uri ], ... ; # 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 Descriptive name for a user fhir:StructureMap.group.extends [ id ]; # 0..1 Another group that this group adds rules to fhir:StructureMap.group.documentation [ string ]; # 0..1 Documentation for this 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.required [ boolean ]; # 1..1 Whether this rule applies if the source isn't found fhir:StructureMap.group.rule.source.context [ id ]; # 1..1 Type or variable this rule applies to fhir:StructureMap.group.rule.source.contextType [ code ]; # 1..1 type | variable fhir:StructureMap.group.rule.source.element [ string ]; # 0..1 Optional field for this source fhir:StructureMap.group.rule.source.listMode [ code ]; # 0..1 first | share | last 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 FluentPath expression - must be true or the rule does not apply fhir:StructureMap.group.rule.source.check [ string ]; # 0..1 FluentPath expression - must be true or the mapping engine throws an error instead of completing ], ...; fhir:StructureMap.group.rule.target [ # 0..* Content to create because of this mapping rule fhir:StructureMap.group.rule.target.context [ id ]; # 1..1 Type or variable this rule applies to fhir:StructureMap.group.rule.target.contextType [ code ]; # 1..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 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..* Names of variables to pass to the rule or group ], ...; fhir:StructureMap.group.rule.documentation [ string ]; # 0..1 Documentation for this instance of data ], ...; ], ...; ]
Changes since DSTU2
This resource did not exist in Release 2
Alternate definitions: Master Definition (XML, JSON), XML Schema/Schematron (for ) + JSON Schema, ShEx (for Turtle)
Path | Definition | Type | Reference |
---|---|---|---|
StructureMap.status | The lifecycle status of a Value Set or Concept Map. | Required | ConformanceResourceStatus |
StructureMap.useContext | Indicates the countries, regions, disciplines and other aspects of use within which this artifact is targeted for use. | Extensible | Context of Use ValueSet |
StructureMap.structure.mode | How the referenced structure is used in this mapping | Required | StructureMapModelMode |
StructureMap.group.input.mode | Mode for this instance of data | Required | StructureMapInputMode |
StructureMap.group.rule.source.contextType StructureMap.group.rule.target.contextType | How to interpret the context | Required | StructureMapContextType |
StructureMap.group.rule.source.listMode StructureMap.group.rule.target.listMode | If field is a list, how to manage the list | Required | StructureMapListMode |
StructureMap.group.rule.target.transform | How data is copied / created | Required | StructureMapTransform |
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 | Paths |
context | token | A use context assigned to the structure | StructureMap.useContext |
date | date | The profile publication date | StructureMap.date |
description | string | Text search in the description of the profile | StructureMap.description |
experimental | token | Whether the map is defined purely for experimental reasons | StructureMap.experimental |
identifier | token | The identifier of the profile | StructureMap.identifier |
name | string | Name of the profile | StructureMap.name |
publisher | string | Name of the publisher of the profile | StructureMap.publisher |
status | token | The current status of the profile | StructureMap.status |
url | uri | The url that identifies the structure map | StructureMap.url |
version | token | The version identifier of the profile | StructureMap.version |