FHIR Release 3 (STU) 5 Preview #2
This page is part of the FHIR Specification (v3.0.2: STU 3). The current version which supercedes this version is 4.0.1 . For a full list of available versions, see the Directory of published versions
FHIR Infrastructure Work Group Maturity Level : N/A Ballot Standards Status : Informative

This page provides the detailed descriptions for the data types

Table of Contents

Primitive Types
Element PrimitiveType instant time date dateTime decimal boolean integer string uri base64Binary code id oid unsignedInt positiveInt markdown url canonical uuid integer64
Complex Types
Element DataType BackboneType Identifier HumanName Address ContactPoint Timing Quantity SimpleQuantity Attachment Range Period Ratio CodeableConcept Coding SampledData Age Distance Duration Count Money MoneyQuantity Annotation Signature

See also Base Definition , Detailed Descriptions , Examples , Profiles & Extensions and Mappings .

Functional status for this map: Not Mapped (based on R2 -> R3 -> R2 round tripping)

map "http://hl7.org/fhir/StructureMap/primitives2to3" = "R2 to R3 Primitive Conversions"
map "http://hl7.org/fhir/StructureMap/primitives3to4" = "R3 to R4 Primitive Conversions"
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/base64Binary" alias base64BinaryR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/base64Binary" alias base64BinaryR3 as source

uses "http://hl7.org/fhir/StructureDefinition/base64Binary" as target
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/boolean" alias booleanR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/boolean" alias booleanR3 as source

uses "http://hl7.org/fhir/StructureDefinition/boolean" as target
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/code" alias codeR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/canonical" alias canonicalR3 as source
uses "http://hl7.org/fhir/StructureDefinition/canonical" as target
uses "http://hl7.org/fhir/3.0/StructureDefinition/code" alias codeR3 as source

uses "http://hl7.org/fhir/StructureDefinition/code" as target
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/date" alias dateR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/date" alias dateR3 as source

uses "http://hl7.org/fhir/StructureDefinition/date" as target
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/dateTime" alias dateTimeR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/dateTime" alias dateTimeR3 as source

uses "http://hl7.org/fhir/StructureDefinition/dateTime" as target
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/decimal" alias decimalR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/decimal" alias decimalR3 as source

uses "http://hl7.org/fhir/StructureDefinition/decimal" as target
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/id" alias idR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/id" alias idR3 as source

uses "http://hl7.org/fhir/StructureDefinition/id" as target
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/instant" alias instantR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/instant" alias instantR3 as source

uses "http://hl7.org/fhir/StructureDefinition/instant" as target
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/integer" alias integerR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/integer" alias integerR3 as source

uses "http://hl7.org/fhir/StructureDefinition/integer" as target
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/markdown" alias markdownR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/markdown" alias markdownR3 as source

uses "http://hl7.org/fhir/StructureDefinition/markdown" as target
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/oid" alias oidR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/oid" alias oidR3 as source

uses "http://hl7.org/fhir/StructureDefinition/oid" as target
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/positiveInt" alias positiveIntR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/positiveInt" alias positiveIntR3 as source

uses "http://hl7.org/fhir/StructureDefinition/positiveInt" as target
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/string" alias stringR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/string" alias stringR3 as source

uses "http://hl7.org/fhir/StructureDefinition/string" as target
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/time" alias timeR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/time" alias timeR3 as source

uses "http://hl7.org/fhir/StructureDefinition/time" as target
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/unsignedInt" alias unsignedIntR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/unsignedInt" alias unsignedIntR3 as source

uses "http://hl7.org/fhir/StructureDefinition/unsignedInt" as target
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/uri" alias uriR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/uri" alias uriR3 as source

uses "http://hl7.org/fhir/StructureDefinition/uri" as target
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/uuid" alias uuidR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/url" alias urlR3 as source
uses "http://hl7.org/fhir/StructureDefinition/url" as target
uses "http://hl7.org/fhir/3.0/StructureDefinition/uuid" alias uuidR3 as source

uses "http://hl7.org/fhir/StructureDefinition/uuid" as target
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/xhtml" alias xhtmlR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/xhtml" alias xhtmlR3 as source

uses "http://hl7.org/fhir/StructureDefinition/xhtml" as target
imports "http://hl7.org/fhir/StructureMap/Element2to3"
group for type+types base64Binary extends Element
  input src : base64BinaryR2 as source
  input tgt : base64Binary as target
  "base64Binary-value" : for src.value as v make tgt.value = v
endgroup
group for type+types boolean extends Element
  input src : booleanR2 as source
  input tgt : boolean as target
  "boolean-value" : for src.value as v make tgt.value = v
endgroup
group for type+types code extends Element
  input src : codeR2 as source
  input tgt : code as target
  "code-value" : for src.value as v make tgt.value = v
endgroup
group for type+types date extends Element
  input src : dateR2 as source
  input tgt : date as target
  "date-value" : for src.value as v make tgt.value = v
endgroup
group for type+types dateTime extends Element
  input src : dateTimeR2 as source
  input tgt : dateTime as target
  "dateTime-value" : for src.value as v make tgt.value = v
endgroup
group for type+types decimal extends Element
  input src : decimalR2 as source
  input tgt : decimal as target
  "decimal-value" : for src.value as v make tgt.value = v
endgroup
group for type+types id extends Element
  input src : idR2 as source
  input tgt : id as target
  "id-value" : for src.value as v make tgt.value = v
endgroup
group for type+types instant extends Element
  input src : instantR2 as source
  input tgt : instant as target
  "instant-value" : for src.value as v make tgt.value = v
endgroup
group for type+types integer extends Element
  input src : integerR2 as source
  input tgt : integer as target
  "integer-value" : for src.value as v make tgt.value = v
endgroup
group for type+types markdown extends Element
  input src : markdownR2 as source
  input tgt : markdown as target
  "markdown-value" : for src.value as v make tgt.value = v
endgroup
group for type+types oid extends Element
  input src : oidR2 as source
  input tgt : oid as target
  "oid-value" : for src.value as v make tgt.value = v
endgroup
group for type+types positiveInt extends Element
  input src : positiveIntR2 as source
  input tgt : positiveInt as target

imports "http://hl7.org/fhir/StructureMap/Element3to4"

  "positiveInt-value" : for src.value as v make tgt.value = v
endgroup

group base64Binary(source src : base64BinaryR3, target tgt : base64Binary) extends Element <<type+>> {
  src.value as v -> tgt.value = v "base64Binary-value";
}

group for type+types string extends Element
  input src : stringR2 as source
  input tgt : string as target

group boolean(source src : booleanR3, target tgt : boolean) extends Element <<type+>> {
  src.value as v -> tgt.value = v "boolean-value";
}

  "string-value" : for src.value as v make tgt.value = v
endgroup

group canonical(source src : canonicalR3, target tgt : canonical) extends Element <<type+>> {
  src.value as v -> tgt.value = v "canonical-value";
}

group for type+types time extends Element
  input src : timeR2 as source
  input tgt : time as target

group code(source src : codeR3, target tgt : code) extends Element <<type+>> {
  src.value as v -> tgt.value = v "code-value";
}

  "time-value" : for src.value as v make tgt.value = v
endgroup

group date(source src : dateR3, target tgt : date) extends Element <<type+>> {
  src.value as v -> tgt.value = v "date-value";
}

group for type+types unsignedInt extends Element
  input src : unsignedIntR2 as source
  input tgt : unsignedInt as target

group dateTime(source src : dateTimeR3, target tgt : dateTime) extends Element <<type+>> {
  src.value as v -> tgt.value = v "dateTime-value";
}

  "unsignedInt-value" : for src.value as v make tgt.value = v
endgroup

group decimal(source src : decimalR3, target tgt : decimal) extends Element <<type+>> {
  src.value as v -> tgt.value = v "decimal-value";
}

group for type+types uri extends Element
  input src : uriR2 as source
  input tgt : uri as target

group id(source src : idR3, target tgt : id) extends Element <<type+>> {
  src.value as v -> tgt.value = v "id-value";
}

  "uri-value" : for src.value as v make tgt.value = v
endgroup

group instant(source src : instantR3, target tgt : instant) extends Element <<type+>> {
  src.value as v -> tgt.value = v "instant-value";
}

group for type+types uuid extends Element
  input src : uuidR2 as source
  input tgt : uuid as target

group integer(source src : integerR3, target tgt : integer) extends Element <<type+>> {
  src.value as v -> tgt.value = v "integer-value";
}

  "uuid-value" : for src.value as v make tgt.value = v
endgroup

group markdown(source src : markdownR3, target tgt : markdown) extends Element <<type+>> {
  src.value as v -> tgt.value = v "markdown-value";
}

group for type+types xhtml extends Element
  input src : xhtmlR2 as source
  input tgt : xhtml as target

group oid(source src : oidR3, target tgt : oid) extends Element <<type+>> {
  src.value as v -> tgt.value = v "oid-value";
}

  "xhtml-value" : for src.value as v make tgt.value = v
endgroup

group positiveInt(source src : positiveIntR3, target tgt : positiveInt) extends Element <<type+>> {
  src.value as v -> tgt.value = v "positiveInt-value";
}

group for types stringToMarkdown extends Element
  input src : stringR2 as source
  input tgt : markdown as target

group string(source src : stringR3, target tgt : string) extends Element <<type+>> {
  src.value as v -> tgt.value = v "string-value";
}

  "stringToMarkdown-value" : for src.value as v make tgt.value = v
endgroup

group time(source src : timeR3, target tgt : time) extends Element <<type+>> {
  src.value as v -> tgt.value = v "time-value";
}

group for types codeToUri extends Element
  input src : codeR2 as source
  input tgt : uri as target

group unsignedInt(source src : unsignedIntR3, target tgt : unsignedInt) extends Element <<type+>> {
  src.value as v -> tgt.value = v "unsignedInt-value";
}

  "codeToUri-value" : for src.value as v make tgt.value = v
endgroup

group uri(source src : uriR3, target tgt : uri) extends Element <<type+>> {
  src.value as v -> tgt.value = v "uri-value";
}

group for types stringToId extends Element
  input src : stringR2 as source
  input tgt : id as target

group uri2Canonical(source src : uriR3, target tgt : canonical) extends Element <<types>> {
  src.value as v -> tgt.value = v "uri-value";
}

  "stringToId-value" : for src.value as v make tgt.value = v
endgroup

group url(source src : urlR3, target tgt : url) extends Element <<type+>> {
  src.value as v -> tgt.value = v "url-value";
}

group for types idToString extends Element
  input src : idR2 as source
  input tgt : string as target

group uuid(source src : uuidR3, target tgt : uuid) extends Element <<type+>> {
  src.value as v -> tgt.value = v "uuid-value";
}

  "stringToId-value" : for src.value as v make tgt.value = v
endgroup

group xhtml(source src : xhtmlR3, target tgt : xhtml) extends Element <<type+>> {
  src.value as v -> tgt.value = v "xhtml-value";
}

group for types stringToUri extends Element
  input src : stringR2 as source
  input tgt : uri as target

group stringToMarkdown(source src : stringR3, target tgt : markdown) extends Element <<types>> {
  src.value as v -> tgt.value = v "stringToMarkdown-value";
}

  "stringToUri-value" : for src.value as v make tgt.value = v
endgroup

group id2code(source src : idR3, target tgt : code) extends Element <<types>> {
  src.value as v -> tgt.value = v "id2code-value";
}

group for types stringToCode extends Element
  input src : stringR2 as source
  input tgt : code as target

group code2uri(source src : codeR3, target tgt : uri) extends Element <<types>> {
  src.value as v -> tgt.value = v "code2uri-value";
}

  "stringToCode-value" : for src.value as v make tgt.value = v
endgroup

group code2string(source src : codeR3, target tgt : string) extends Element <<types>> {
  src.value as v -> tgt.value = v "code2uri-value";
}

group for types codeToString extends Element
  input src : codeR2 as source
  input tgt : string as target

group string2code(source src : stringR3, target tgt : code) extends Element <<types>> {
  src.value as v -> tgt.value = v "code2uri-value";
}

  "stringToCode-value" : for src.value as v make tgt.value = v
endgroup

group uri2url(source src : uriR3, target tgt : url) extends Element <<types>> {
  src.value as v -> tgt.value = v "code2uri-value";
}

group for types integerToPositiveInt extends Element
  input src : integerR2 as source
  input tgt : positiveInt as target

group id2string(source src : idR3, target tgt : string) extends Element <<type+>> {
  src.value as v -> tgt.value = v;
}

  "integerToPositiveInt-value" : for src.value as v make tgt.value = v
endgroup

group uri2string(source src : uriR3, target tgt : string) extends Element <<types>> {
  src.value as v -> tgt.value = v "code2uri-value";
}

group for types integerToUnsignedInt extends Element
  input src : integerR2 as source
  input tgt : unsignedInt as target

group unsignedInt2decimal(source src : unsignedIntR3, target tgt : decimal) extends Element <<types>> {
  src.value as v -> tgt.value = v "unsignedInt2decimal-value";
}

  "integerToUnsignedInt-value" : for src.value as v make tgt.value = v
endgroup

group oid2string(source src : oidR3, target tgt : string) extends Element <<type+>> {
  src.value as v -> tgt.value = v;
}

group for types dateToDateTime extends Element
  input src : dateR2 as source
  input tgt : dateTime as target

group oid2id(source src : oidR3, target tgt : id) extends Element <<type+>> {
  src.value as v -> tgt.value = v;
}

  "dateToDateTime-value" : for src.value as v make tgt.value = v
endgroup

group positiveInt2integer(source src : positiveIntR3, target tgt : integer) extends Element <<types>> {
  src.value as v -> tgt.value = v "unsignedInt2decimal-value";
}

group for types dateTimeToDate extends Element
  input src : dateTimeR2 as source
  input tgt : date as target

group integer2positiveInt(source src : integerR3, target tgt : positiveInt) extends Element <<types>> {
  src.value as v -> tgt.value = v "unsignedInt2decimal-value";
}

  "dateTimeToDate-value" : for src.value as v make tgt.value = (v.substring(0, 8))
endgroup

group positiveInt2unsignedInt(source src : positiveIntR3, target tgt : unsignedInt) extends Element <<types>> {
  src.value as v -> tgt.value = v;
}

map "http://hl7.org/fhir/StructureMap/primitives3to2" = "R3 to R2 Primitive Conversions"
map "http://hl7.org/fhir/StructureMap/primitives4to3" = "R4 to R3 Primitive Conversions"
uses "http://hl7.org/fhir/StructureDefinition/base64Binary" as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/base64Binary" alias base64BinaryR2 as target

uses "http://hl7.org/fhir/3.0/StructureDefinition/base64Binary" alias base64BinaryR3 as target

uses "http://hl7.org/fhir/StructureDefinition/boolean" as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/boolean" alias booleanR2 as target

uses "http://hl7.org/fhir/3.0/StructureDefinition/boolean" alias booleanR3 as target
uses "http://hl7.org/fhir/StructureDefinition/canonical" as source
uses "http://hl7.org/fhir/3.0/StructureDefinition/canonical" alias canonicalR3 as target

uses "http://hl7.org/fhir/StructureDefinition/code" as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/code" alias codeR2 as target

uses "http://hl7.org/fhir/3.0/StructureDefinition/code" alias codeR3 as target

uses "http://hl7.org/fhir/StructureDefinition/date" as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/date" alias dateR2 as target

uses "http://hl7.org/fhir/3.0/StructureDefinition/date" alias dateR3 as target

uses "http://hl7.org/fhir/StructureDefinition/dateTime" as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/dateTime" alias dateTimeR2 as target

uses "http://hl7.org/fhir/3.0/StructureDefinition/dateTime" alias dateTimeR3 as target

uses "http://hl7.org/fhir/StructureDefinition/decimal" as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/decimal" alias decimalR2 as target

uses "http://hl7.org/fhir/3.0/StructureDefinition/decimal" alias decimalR3 as target

uses "http://hl7.org/fhir/StructureDefinition/id" as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/id" alias idR2 as target

uses "http://hl7.org/fhir/3.0/StructureDefinition/id" alias idR3 as target

uses "http://hl7.org/fhir/StructureDefinition/instant" as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/instant" alias instantR2 as target

uses "http://hl7.org/fhir/3.0/StructureDefinition/instant" alias instantR3 as target

uses "http://hl7.org/fhir/StructureDefinition/integer" as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/integer" alias integerR2 as target

uses "http://hl7.org/fhir/3.0/StructureDefinition/integer" alias integerR3 as target

uses "http://hl7.org/fhir/StructureDefinition/markdown" as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/markdown" alias markdownR2 as target

uses "http://hl7.org/fhir/3.0/StructureDefinition/markdown" alias markdownR3 as target

uses "http://hl7.org/fhir/StructureDefinition/oid" as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/oid" alias oidR2 as target
uses "http://hl7.org/fhir/StructureDefinition/positiveInt" as source 
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/positiveInt" alias positiveIntR2 as target
uses "http://hl7.org/fhir/StructureDefinition/string" as source 
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/string" alias stringR2 as target
uses "http://hl7.org/fhir/StructureDefinition/time" as source 
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/time" alias timeR2 as target
uses "http://hl7.org/fhir/StructureDefinition/unsignedInt" as source 
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/unsignedInt" alias unsignedIntR2 as target
uses "http://hl7.org/fhir/StructureDefinition/uri" as source 
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/uri" alias uriR2 as target
uses "http://hl7.org/fhir/StructureDefinition/uuid" as source 
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/uuid" alias uuidR2 as target
uses "http://hl7.org/fhir/StructureDefinition/xhtml" as source 
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/xhtml" alias xhtmlR2 as target
imports "http://hl7.org/fhir/StructureMap/Element3to2"
group for type+types base64Binary extends Element
  input src : base64Binary as source 
  input tgt : base64BinaryR2 as target
  "base64Binary-value" : for src.value as v make tgt.value = v
endgroup
group for type+types boolean extends Element
  input src : boolean as source 
  input tgt : booleanR2 as target
  "boolean-value" : for src.value as v make tgt.value = v
endgroup
group for type+types code extends Element
  input src : code as source 
  input tgt : codeR2 as target
  "code-value" : for src.value as v make tgt.value = v
endgroup
group for type+types date extends Element
  input src : date as source 
  input tgt : dateR2 as target
  "date-value" : for src.value as v make tgt.value = v
endgroup
group for type+types dateTime extends Element
  input src : dateTime as source 
  input tgt : dateTimeR2 as target
  "dateTime-value" : for src.value as v make tgt.value = v
endgroup
group for type+types decimal extends Element
  input src : decimal as source 
  input tgt : decimalR2 as target
  "decimal-value" : for src.value as v make tgt.value = v
endgroup
group for type+types id extends Element
  input src : id as source 
  input tgt : idR2 as target
  "id-value" : for src.value as v make tgt.value = v
endgroup
group for type+types instant extends Element
  input src : instant as source 
  input tgt : instantR2 as target
  "instant-value" : for src.value as v make tgt.value = v
endgroup
group for type+types integer extends Element
  input src : integer as source 
  input tgt : integerR2 as target
  "integer-value" : for src.value as v make tgt.value = v
endgroup

uses "http://hl7.org/fhir/3.0/StructureDefinition/oid" alias oidR3 as target
uses "http://hl7.org/fhir/StructureDefinition/positiveInt" as source
uses "http://hl7.org/fhir/3.0/StructureDefinition/positiveInt" alias positiveIntR3 as target
uses "http://hl7.org/fhir/StructureDefinition/string" as source
uses "http://hl7.org/fhir/3.0/StructureDefinition/string" alias stringR3 as target
uses "http://hl7.org/fhir/StructureDefinition/time" as source
uses "http://hl7.org/fhir/3.0/StructureDefinition/time" alias timeR3 as target
uses "http://hl7.org/fhir/StructureDefinition/unsignedInt" as source
uses "http://hl7.org/fhir/3.0/StructureDefinition/unsignedInt" alias unsignedIntR3 as target
uses "http://hl7.org/fhir/StructureDefinition/uri" as source
uses "http://hl7.org/fhir/3.0/StructureDefinition/uri" alias uriR3 as target
uses "http://hl7.org/fhir/StructureDefinition/url" as source
uses "http://hl7.org/fhir/3.0/StructureDefinition/url" alias urlR3 as target
uses "http://hl7.org/fhir/StructureDefinition/uuid" as source
uses "http://hl7.org/fhir/3.0/StructureDefinition/uuid" alias uuidR3 as target
uses "http://hl7.org/fhir/StructureDefinition/xhtml" as source
uses "http://hl7.org/fhir/3.0/StructureDefinition/xhtml" alias xhtmlR3 as target

group for type+types markdown extends Element
  input src : markdown as source 
  input tgt : markdownR2 as target

imports "http://hl7.org/fhir/StructureMap/Element4to3"

  "markdown-value" : for src.value as v make tgt.value = v
endgroup

group base64Binary(source src : base64Binary, target tgt : base64BinaryR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "base64Binary-value";
}

group for type+types oid extends Element
  input src : oid as source 
  input tgt : oidR2 as target

group boolean(source src : boolean, target tgt : booleanR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "boolean-value";
}

  "oid-value" : for src.value as v make tgt.value = v
endgroup

group canonical(source src : canonical, target tgt : canonicalR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "canonical-value";
}

group for type+types positiveInt extends Element
  input src : positiveInt as source 
  input tgt : positiveIntR2 as target

group code(source src : code, target tgt : codeR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "code-value";
}

  "positiveInt-value" : for src.value as v make tgt.value = v
endgroup

group date(source src : date, target tgt : dateR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "date-value";
}

group for type+types string extends Element
  input src : string as source 
  input tgt : stringR2 as target

group dateTime(source src : dateTime, target tgt : dateTimeR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "dateTime-value";
}

  "string-value" : for src.value as v make tgt.value = v
endgroup

group decimal(source src : decimal, target tgt : decimalR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "decimal-value";
}

group for type+types time extends Element
  input src : time as source 
  input tgt : timeR2 as target

group id(source src : id, target tgt : idR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "id-value";
}

  "time-value" : for src.value as v make tgt.value = v
endgroup

group instant(source src : instant, target tgt : instantR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "instant-value";
}

group for type+types unsignedInt extends Element
  input src : unsignedInt as source 
  input tgt : unsignedIntR2 as target

group integer(source src : integer, target tgt : integerR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "integer-value";
}

  "unsignedInt-value" : for src.value as v make tgt.value = v
endgroup

group markdown(source src : markdown, target tgt : markdownR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "markdown-value";
}

group for type+types uri extends Element
  input src : uri as source 
  input tgt : uriR2 as target

group oid(source src : oid, target tgt : oidR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "oid-value";
}

  "uri-value" : for src.value as v make tgt.value = v
endgroup

group positiveInt(source src : positiveInt, target tgt : positiveIntR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "positiveInt-value";
}

group for type+types uuid extends Element
  input src : uuid as source 
  input tgt : uuidR2 as target

group string(source src : string, target tgt : stringR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "string-value";
}

  "uuid-value" : for src.value as v make tgt.value = v
endgroup

group time(source src : time, target tgt : timeR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "time-value";
}

group for type+types xhtml extends Element
  input src : xhtml as source 
  input tgt : xhtmlR2 as target

group unsignedInt(source src : unsignedInt, target tgt : unsignedIntR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "unsignedInt-value";
}

  "xhtml-value" : for src.value as v make tgt.value = v
endgroup

group uri(source src : uri, target tgt : uriR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "uri-value";
}

group for types markdownToString extends Element
  input src : markdown as source 
  input tgt : stringR2 as target

group url(source src : url, target tgt : urlR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "url-value";
}

  "markdownToString-value" : for src.value as v make tgt.value = v
endgroup

group uuid(source src : uuid, target tgt : uuidR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "uuid-value";
}

group for types uriToCode extends Element
  input src : uri as source 
  input tgt : codeR2 as target

group xhtml(source src : xhtml, target tgt : xhtmlR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "xhtml-value";
}

  "uriToCode-value" : for src.value as v make tgt.value = v
endgroup

group markdownToString(source src : markdown, target tgt : stringR3) extends Element <<types>> {
  src.value as v -> tgt.value = v "markdownToString-value";
}

group for types uriToString extends Element
  input src : uri as source 
  input tgt : stringR2 as target

group code2id(source src : code, target tgt : idR3) extends Element <<types>> {
  src.value as v -> tgt.value = v "code2id-value";
}

  "uriToString-value" : for src.value as v make tgt.value = v
endgroup

group uri2code(source src : uriR3, target tgt : code) extends Element <<types>> {
  src.value as v -> tgt.value = v "uri2code-value";
}

group for types stringToXhtml extends Element
  input src : string as source 
  input tgt : xhtmlR2 as target

group string2code(source src : stringR3, target tgt : code) extends Element <<types>> {
  src.value as v -> tgt.value = v "uri2code-value";
}

  "stringToXhtml-value" : for src.value as v make tgt.value = v
endgroup

group code2string(source src : codeR3, target tgt : string) extends Element <<types>> {
  src.value as v -> tgt.value = v "uri2code-value";
}

group for types codeToString extends Element
  input src : code as source 
  input tgt : stringR2 as target

group canonical2Uri(source src : canonicalR3, target tgt : uri) extends Element <<types>> {
  src.value as v -> tgt.value = v "canonical2uri-value";
}

  "uriToCode-value" : for src.value as v make tgt.value = v
endgroup

group url2uri(source src : url, target tgt : uriR3) extends Element <<types>> {
  src.value as v -> tgt.value = v "code2uri-value";
}

group for types stringToId extends Element
  input src : string as source
  input tgt : idR2 as target

group string2id(source src : string, target tgt : idR3) extends Element <<types>> {
  src.value as v -> tgt.value = v "uri2code-value";
}

  "stringToId-value" : for src.value as v make tgt.value = v
endgroup

group string2uri(source src : string, target tgt : uriR3) extends Element <<types>> {
  src.value as v -> tgt.value = v "code2uri-value";
}

group for types idToString extends Element
  input src : id as source
  input tgt : stringR2 as target

group decimal2unsignedInt(source src : decimal, target tgt : unsignedIntR3) extends Element <<types>> {
  src.value as v -> tgt.value = v "unsignedInt2decimal-value";
}

  "stringToId-value" : for src.value as v make tgt.value = v
endgroup

group canonical2string(source src : canonical, target tgt : stringR3) extends Element <<types>> {
  src.value as v -> tgt.value = v "code2uri-value";
}

group for types positiveIntToInteger extends Element
  input src : positiveIntR2 as source
  input tgt : integer as target

group oid2string(source src : string, target tgt : oidR3) extends Element <<types>> {
  src.value as v -> tgt.value = v;
}

  "positiveIntToInteger-value" : for src.value as v make tgt.value = v
endgroup

group id2oid(source src : id, target tgt : oidR3) extends Element <<types>> {
  src.value as v -> tgt.value = v;
}

group for types unsignedIntToInteger extends Element
  input src : unsignedIntR2 as source
  input tgt : integer as target

group id2string(source src : id, target tgt : stringR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v;
}

  "unsignedIntToInteger-value" : for src.value as v make tgt.value = v
endgroup

group code2oid(source src : code, target tgt : oidR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v;
}

group for types dateToDateTime extends Element
  input src : date as source
  input tgt : dateTimeR2 as target

group integer2positiveInt(source src : integer, target tgt : positiveIntR3) extends Element <<types>> {
  src.value as v -> tgt.value = v "unsignedInt2decimal-value";
}

  "dateToDateTime-value" : for src.value as v make tgt.value = v
endgroup

group positiveInt2integer(source src : positiveInt, target tgt : integerR3) extends Element <<types>> {
  src.value as v -> tgt.value = v "unsignedInt2decimal-value";
}

group for types dateTimeToDate extends Element
  input src : dateTime as source
  input tgt : dateR2 as target

group unsignedInt2positiveInt(source src : unsignedInt, target tgt : positiveIntR3) extends Element <<types>> {
  src.value as v -> tgt.value = v;
}

  "dateTimeToDate-value" : for src.value as v make tgt.value = (v.substring(0, 8))
endgroup

group code2uri(source src : code, target tgt : uriR3) extends Element <<types>> {
  src.value as v -> tgt.value = v;
}

See also Base Definition , Detailed Descriptions , Examples , Profiles & Extensions and Mappings .

Functional status for this map: Not Mapped (based on R2 -> R3 -> R2 round tripping)

map "http://hl7.org/fhir/StructureMap/Attachment2to3" = "R2 to R3 Conversions for Attachment"
map "http://hl7.org/fhir/StructureMap/Attachment3to4" = "R3 to R4 Conversions for Attachment"
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Attachment" alias AttachmentR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/Attachment" alias AttachmentR3 as source

uses "http://hl7.org/fhir/StructureDefinition/Attachment" alias Attachment as target
imports "http://hl7.org/fhir/StructureMap/primitives2to3"
imports "http://hl7.org/fhir/StructureMap/Element2to3"
group for type+types  Attachment extends Element
  input src : AttachmentR2 as source
  input tgt : Attachment as target

imports "http://hl7.org/fhir/StructureMap/*3to4"

  "Attachment-contentType" : for src.contentType make tgt.contentType
  "Attachment-language" : for src.language make tgt.language
  "Attachment-data" : for src.data make tgt.data
  "Attachment-url" : for src.url make tgt.url
  "Attachment-size" : for src.size make tgt.size
  "Attachment-hash" : for src.hash make tgt.hash
  "Attachment-title" : for src.title make tgt.title
  "Attachment-creation" : for src.creation make tgt.creation

group Attachment(source src : AttachmentR3, target tgt : Attachment) extends Element <<type+>> {
  src.contentType -> tgt.contentType;
  src.language -> tgt.language;
  src.data -> tgt.data;
  src.url -> tgt.url;
  src.size -> tgt.size;
  src.hash -> tgt.hash;
  src.title -> tgt.title;
  src.creation -> tgt.creation;
}

endgroup

map "http://hl7.org/fhir/StructureMap/Attachment3to2" = "R3 to R2 Conversion for Attachment"
map "http://hl7.org/fhir/StructureMap/Attachment4to3" = "R4 to R3 Conversion for Attachment"
uses "http://hl7.org/fhir/StructureDefinition/Attachment" alias Attachment as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Attachment" alias AttachmentR2 as target
imports "http://hl7.org/fhir/StructureMap/primitives3to2"
imports "http://hl7.org/fhir/StructureMap/Element3to2"

uses "http://hl7.org/fhir/3.0/StructureDefinition/Attachment" alias AttachmentR3 as target

group for type+types  Attachment extends Element
  input src : Attachment as source
  input tgt : AttachmentR2 as target

imports "http://hl7.org/fhir/StructureMap/*4to3"

  "Attachment-contentType" : for src.contentType make tgt.contentType
  "Attachment-language" : for src.language make tgt.language
  "Attachment-data" : for src.data make tgt.data
  "Attachment-url" : for src.url make tgt.url
  "Attachment-size" : for src.size make tgt.size
  "Attachment-hash" : for src.hash make tgt.hash
  "Attachment-title" : for src.title make tgt.title
  "Attachment-creation" : for src.creation make tgt.creation

group Attachment(source src : Attachment, target tgt : AttachmentR3) extends Element <<type+>> {
  src.contentType -> tgt.contentType;
  src.language -> tgt.language;
  src.data -> tgt.data;
  src.url -> tgt.url;
  src.size -> tgt.size;
  src.hash -> tgt.hash;
  src.title -> tgt.title;
  src.creation -> tgt.creation;
}

endgroup

See also Base Definition , Detailed Descriptions , Examples , Profiles & Extensions and Mappings .

Functional status for this map: Not Mapped (based on R2 -> R3 -> R2 round tripping)

map "http://hl7.org/fhir/StructureMap/Identifier2to3" = "R2 to R3 Conversions for Identifier"
map "http://hl7.org/fhir/StructureMap/Identifier3to4" = "R3 to R4 Conversions for Identifier"
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Identifier" alias IdentifierR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/Identifier" alias IdentifierR3 as source

uses "http://hl7.org/fhir/StructureDefinition/Identifier" alias Identifier as target
imports "http://hl7.org/fhir/StructureMap/primitives2to3"
imports "http://hl7.org/fhir/StructureMap/Element2to3"
imports "http://hl7.org/fhir/StructureMap/Reference2to3"
imports "http://hl7.org/fhir/StructureMap/Period2to3"
imports "http://hl7.org/fhir/StructureMap/CodeableConcept2to3"

imports "http://hl7.org/fhir/StructureMap/*3to4"

group for type+types  Identifier extends Element
  input src : IdentifierR2 as source
  input tgt : Identifier as target

group Identifier(source src : IdentifierR3, target tgt : Identifier) extends Element <<type+>> {
  src.use -> tgt.use;
  src.type -> tgt.type;
  src.system -> tgt.system;
  src.value -> tgt.value;
  src.period -> tgt.period;
  src.assigner -> tgt.assigner;
}

  "Identifier-use" : for src.use make tgt.use
  "Identifier-type" : for src.type make tgt.type
  "Identifier-system" : for src.system make tgt.system
  "Identifier-value" : for src.value make tgt.value
  "Identifier-period" : for src.period make tgt.period
  "Identifier-assigner" : for src.assigner make tgt.assigner

group Identifier2Codeable(source src, target tgt) extends Element {
  src -> tgt.coding as c then {
    src.system -> c.system;
    src.value -> c.code;
  } "coding";
}

endgroup

map "http://hl7.org/fhir/StructureMap/Identifier3to2" = "R3 to R2 Conversion for Identifier"
map "http://hl7.org/fhir/StructureMap/Identifier4to3" = "R4 to R3 Conversion for Identifier"
uses "http://hl7.org/fhir/StructureDefinition/Identifier" alias Identifier as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Identifier" alias IdentifierR2 as target

uses "http://hl7.org/fhir/3.0/StructureDefinition/Identifier" alias IdentifierR3 as target

imports "http://hl7.org/fhir/StructureMap/primitives3to2"
imports "http://hl7.org/fhir/StructureMap/Element3to2"
imports "http://hl7.org/fhir/StructureMap/Reference3to2"
imports "http://hl7.org/fhir/StructureMap/Period3to2"
imports "http://hl7.org/fhir/StructureMap/CodeableConcept3to2"

imports "http://hl7.org/fhir/StructureMap/*4to3"

group for type+types  Identifier extends Element
  input src : Identifier as source
  input tgt : IdentifierR2 as target

group Identifier(source src : Identifier, target tgt : IdentifierR3) extends Element <<type+>> {
  src.use -> tgt.use;
  src.type -> tgt.type;
  src.system -> tgt.system;
  src.value -> tgt.value;
  src.period -> tgt.period;
  src.assigner -> tgt.assigner;
}

  "Identifier-use" : for src.use make tgt.use
  "Identifier-type" : for src.type make tgt.type
  "Identifier-system" : for src.system make tgt.system
  "Identifier-value" : for src.value make tgt.value
  "Identifier-period" : for src.period make tgt.period
  "Identifier-assigner" : for src.assigner make tgt.assigner

group Codeable2Identifier(source src, target tgt) extends Element {
  src.coding as c then {
    c.system -> tgt.system;
    c.code -> tgt.value;
  };
}

endgroup

See also Base Definition , Detailed Descriptions , Examples , Profiles & Extensions and Mappings .

Functional status for this map: Not Mapped (based on R2 -> R3 -> R2 round tripping)

map "http://hl7.org/fhir/StructureMap/Coding2to3" = "R2 to R3 Conversions for Coding"
map "http://hl7.org/fhir/StructureMap/Coding3to4" = "R3 to R4 Conversions for Coding"
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Coding" alias CodingR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/Coding" alias CodingR3 as source

uses "http://hl7.org/fhir/StructureDefinition/Coding" alias Coding as target
imports "http://hl7.org/fhir/StructureMap/primitives2to3"
imports "http://hl7.org/fhir/StructureMap/Element2to3"
group for type+types  Coding extends Element
  input src : CodingR2 as source
  input tgt : Coding as target

imports "http://hl7.org/fhir/StructureMap/*3to4"

  "Coding-system" : for src.system make tgt.system
  "Coding-version" : for src.version make tgt.version
  "Coding-code" : for src.code make tgt.code
  "Coding-display" : for src.display make tgt.display
  "Coding-userSelected" : for src.userSelected make tgt.userSelected
endgroup

group Coding(source src : CodingR3, target tgt : Coding) extends Element <<type+>> {
  src.system -> tgt.system;
  src.version -> tgt.version;
  src.code -> tgt.code;
  src.display -> tgt.display;
  src.userSelected -> tgt.userSelected;
}

map "http://hl7.org/fhir/StructureMap/Coding3to2" = "R3 to R2 Conversion for Coding"
map "http://hl7.org/fhir/StructureMap/Coding4to3" = "R4 to R3 Conversion for Coding"
uses "http://hl7.org/fhir/StructureDefinition/Coding" alias Coding as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Coding" alias CodingR2 as target

uses "http://hl7.org/fhir/3.0/StructureDefinition/Coding" alias CodingR3 as target

imports "http://hl7.org/fhir/StructureMap/primitives3to2"
imports "http://hl7.org/fhir/StructureMap/Element3to2"

imports "http://hl7.org/fhir/StructureMap/*4to3"

group for type+types  Coding extends Element
  input src : Coding as source
  input tgt : CodingR2 as target

group Coding(source src : Coding, target tgt : CodingR3) extends Element <<type+>> {
  src.system -> tgt.system;
  src.version -> tgt.version;
  src.code -> tgt.code;
  src.display -> tgt.display;
  src.userSelected -> tgt.userSelected;
}

  "Coding-system" : for src.system make tgt.system
  "Coding-version" : for src.version make tgt.version
  "Coding-code" : for src.code make tgt.code
  "Coding-display" : for src.display make tgt.display
  "Coding-userSelected" : for src.userSelected make tgt.userSelected

group Coding2code(source src : Coding, target tgt : codeR3) extends Element <<types>> {
  src.code as vs0 then code(vs0, tgt);
}

endgroup

See also Base Definition , Detailed Descriptions , Examples , Profiles & Extensions and Mappings .

Functional status for this map: Not Mapped (based on R2 -> R3 -> R2 round tripping)

map "http://hl7.org/fhir/StructureMap/CodeableConcept2to3" = "R2 to R3 Conversions for CodeableConcept"
map "http://hl7.org/fhir/StructureMap/CodeableConcept3to4" = "R3 to R4 Conversions for CodeableConcept"
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/CodeableConcept" alias CodeableConceptR2 as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Coding" alias CodingR2 as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/string" alias stringR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/CodeableConcept" alias CodeableConceptR3 as source
uses "http://hl7.org/fhir/3.0/StructureDefinition/Coding" alias CodingR3 as source

uses "http://hl7.org/fhir/StructureDefinition/CodeableConcept" alias CodeableConcept as target
imports "http://hl7.org/fhir/StructureMap/primitives2to3"
imports "http://hl7.org/fhir/StructureMap/Element2to3"
imports "http://hl7.org/fhir/StructureMap/Coding2to3"
group for type+types  CodeableConcept extends Element
  input src : CodeableConceptR2 as source
  input tgt : CodeableConcept as target
  "CodeableConcept-coding" : for src.coding make tgt.coding
  "CodeableConcept-text" : for src.text make tgt.text
endgroup
group for types CodingToCodeableConcept extends Element
  input src : CodingR2 as source
  input tgt : CodeableConcept as target
  "CodingToCodeableConcept-coding" : for src make tgt.coding as vt then Coding(src, vt)
endgroup

imports "http://hl7.org/fhir/StructureMap/*3to4"

group for types CodeableConceptToCoding extends Element
  input src : CodeableConceptR2 as source
  input tgt : Coding as target

group CodeableConcept(source src : CodeableConceptR3, target tgt : CodeableConcept) extends Element <<type+>> {
  src.coding -> tgt.coding;
  src.text -> tgt.text;
}

  "CodeableConcept-coding" : for src.coding only_one as vs then Coding(vs, tgt)
endgroup

group Coding2CodeableConcept(source src : CodingR3, target tgt : CodeableConcept) extends Element <<types>> {
  src -> tgt.coding as vt0 then Coding(src, vt0) "coding";
}

group for types stringToCodeableConcept extends Element
  input src : stringR2 as source
  input tgt : CodeableConcept as target
  "stringToCodeableConcept-text" : for src make tgt.text as vt then string(src, vt)
endgroup

map "http://hl7.org/fhir/StructureMap/CodeableConcept3to2" = "R3 to R2 Conversion for CodeableConcept"
map "http://hl7.org/fhir/StructureMap/CodeableConcept4to3" = "R4 to R3 Conversion for CodeableConcept"
uses "http://hl7.org/fhir/StructureDefinition/CodeableConcept" alias CodeableConcept as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/CodeableConcept" alias CodeableConceptR2 as target
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Coding" alias CodingR2 as target
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/string" alias stringR2 as target
imports "http://hl7.org/fhir/StructureMap/primitives3to2"
imports "http://hl7.org/fhir/StructureMap/Element3to2"
imports "http://hl7.org/fhir/StructureMap/Coding3to2"
group for type+types  CodeableConcept extends Element
  input src : CodeableConcept as source
  input tgt : CodeableConceptR2 as target
  "CodeableConcept-coding" : for src.coding make tgt.coding
  "CodeableConcept-text" : for src.text make tgt.text
endgroup
group for types CodeableConceptToCoding extends Element
  input src : CodeableConcept as source
  input tgt : CodingR2 as target
  "CodeableConcept-coding" : for src.coding only_one as vs then Coding(vs, tgt)
endgroup

uses "http://hl7.org/fhir/3.0/StructureDefinition/CodeableConcept" alias CodeableConceptR3 as target
uses "http://hl7.org/fhir/3.0/StructureDefinition/Coding" alias CodingR3 as target

group for types CodingToCodeableConcept extends Element
  input src : Coding as source
  input tgt : CodeableConceptR2 as target

imports "http://hl7.org/fhir/StructureMap/*4to3"

  "CodingToCodeableConcept-coding" : for src make tgt.coding as vt then Coding(src, vt)
endgroup

group CodeableConcept(source src : CodeableConcept, target tgt : CodeableConceptR3) extends Element <<type+>> {
  src.coding -> tgt.coding;
  src.text -> tgt.text;
}

group CodeableConceptNoExtensions(source src : CodeableConcept, target tgt : CodeableConceptR3) {
  src.coding -> tgt.coding;
  src.text -> tgt.text;
}

group for types CodeableConceptToString extends Element
  input src : CodeableConcept as source
  input tgt : stringR2 as target

group CodeableConcept2Coding(source src : CodeableConcept, target tgt : CodingR3) extends Element <<types>> {
  src.coding first as vs0 then Coding(vs0, tgt);
}

  "CodeableConceptToString-text" : for src.text as vs then string(vs, tgt)
endgroup

group CodeableConcept2code(source src : CodeableConcept, target tgt : codeR3) extends Element <<types>> {
  src.coding first as vs0 -> tgt.code = create('code') as vt then Coding2code(vs0, vt) "CodeableConcept2code-coding";
}

See also Base Definition , Detailed Descriptions , Examples , Profiles & Extensions and Mappings .

Functional status for this map: Not Mapped (based on R2 -> R3 -> R2 round tripping)

map "http://hl7.org/fhir/StructureMap/Quantity2to3" = "R2 to R3 Conversions for Quantity"
map "http://hl7.org/fhir/StructureMap/Quantity3to4" = "R3 to R4 Conversions for Quantity"
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Quantity" alias QuantityR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/Quantity" alias QuantityR3 as source

uses "http://hl7.org/fhir/StructureDefinition/Quantity" alias Quantity as target
uses "http://hl7.org/fhir/StructureDefinition/Duration" alias Duration as target

imports "http://hl7.org/fhir/StructureMap/primitives2to3"
imports "http://hl7.org/fhir/StructureMap/Element2to3"

imports "http://hl7.org/fhir/StructureMap/*3to4"

group for type+types  Quantity extends Element
  input src : QuantityR2 as source
  input tgt : Quantity as target

group Quantity(source src : QuantityR3, target tgt : Quantity) extends Element <<type+>> {
  src.value -> tgt.value;
  src.comparator -> tgt.comparator;
  src.unit -> tgt.unit;
  src.system -> tgt.system;
  src.code -> tgt.code;
}

  "Quantity-value" : for src.value make tgt.value
  "Quantity-comparator" : for src.comparator make tgt.comparator
  "Quantity-unit" : for src.unit make tgt.unit
  "Quantity-system" : for src.system make tgt.system
  "Quantity-code" : for src.code make tgt.code

endgroup

map "http://hl7.org/fhir/StructureMap/Quantity4to3" = "R4 to R3 Conversion for Quantity"
uses "http://hl7.org/fhir/StructureDefinition/Quantity" alias Quantity as source
uses "http://hl7.org/fhir/3.0/StructureDefinition/Quantity" alias QuantityR3 as target
imports "http://hl7.org/fhir/StructureMap/*4to3"
group Quantity(source src : Quantity, target tgt : QuantityR3) extends Element <<type+>> {
  src.value -> tgt.value;
  src.comparator -> tgt.comparator;
  src.unit -> tgt.unit;
  src.system -> tgt.system;
  src.code -> tgt.code;
}

endgroup

See also Base Definition , Detailed Descriptions , Examples , Profiles & Extensions and Mappings .

Functional status for this map: Not Mapped (based on R2 -> R3 -> R2 round tripping)

map "http://hl7.org/fhir/StructureMap/Quantity3to2" = "R3 to R2 Conversion for Quantity"
map "http://hl7.org/fhir/StructureMap/Money3to4" = "R3 to R4 Conversions for Money"
uses "http://hl7.org/fhir/StructureDefinition/Quantity" alias Quantity as source
uses "http://hl7.org/fhir/StructureDefinition/Duration" alias Duration as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Quantity" alias QuantityR2 as target

uses "http://hl7.org/fhir/3.0/StructureDefinition/Money" alias MoneyR3 as source
uses "http://hl7.org/fhir/StructureDefinition/Money" alias Money as target

imports "http://hl7.org/fhir/StructureMap/primitives3to2"
imports "http://hl7.org/fhir/StructureMap/Element3to2"

imports "http://hl7.org/fhir/StructureMap/*3to4"

group for type+types  Quantity extends Element
  input src : Quantity as source
  input tgt : QuantityR2 as target

group Money(source src : MoneyR3, target tgt : Money) extends Element <<type+>> {
  src.value -> tgt.value;
  src.code -> tgt.currency;
}

  "Quantity-value" : for src.value make tgt.value
  "Quantity-comparator" : for src.comparator make tgt.comparator
  "Quantity-unit" : for src.unit make tgt.unit
  "Quantity-system" : for src.system make tgt.system
  "Quantity-code" : for src.code make tgt.code

endgroup

map "http://hl7.org/fhir/StructureMap/Money4to3" = "R4 to R3 Conversion for Money"
uses "http://hl7.org/fhir/StructureDefinition/Money" alias Money as source
uses "http://hl7.org/fhir/3.0/StructureDefinition/Money" alias MoneyR3 as target
imports "http://hl7.org/fhir/StructureMap/*4to3"
group Money(source src : Money, target tgt : MoneyR3) extends Element <<type+>> {
  src.value -> tgt.value;
  src.currency -> tgt.code "code";
  src.currency as s ->  tgt.unit as t,  t.value = s;
  src ->  tgt.system as vt,  vt.value = 'urn:iso:std:iso:4217' "code";
}

  "Duration-value" : for src.value make tgt.value
  "Duration-comparator" : for src.comparator make tgt.comparator
  "Duration-unit" : for src.unit make tgt.unit
  "Duration-system" : for src.system make tgt.system
  "Duration-code" : for src.code make tgt.code
endgroup

See also Base Definition , Detailed Descriptions , Examples , Profiles & Extensions and Mappings .

Functional status for this map: Not Mapped (based on R2 -> R3 -> R2 round tripping)

map "http://hl7.org/fhir/StructureMap/Range2to3" = "R2 to R3 Conversions for Range"
map "http://hl7.org/fhir/StructureMap/Range3to4" = "R3 to R4 Conversions for Range"
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Range" alias RangeR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/Range" alias RangeR3 as source

uses "http://hl7.org/fhir/StructureDefinition/Range" alias Range as target
imports "http://hl7.org/fhir/StructureMap/primitives2to3"
imports "http://hl7.org/fhir/StructureMap/Element2to3"
imports "http://hl7.org/fhir/StructureMap/Quantity2to3"
group for type+types  Range extends Element
  input src : RangeR2 as source
  input tgt : Range as target

imports "http://hl7.org/fhir/StructureMap/*3to4"

  "Range-low" : for src.low make tgt.low
  "Range-high" : for src.high make tgt.high

group Range(source src : RangeR3, target tgt : Range) extends Element <<type+>> {
  src.low -> tgt.low;
  src.high -> tgt.high;
}

endgroup

map "http://hl7.org/fhir/StructureMap/Range3to2" = "R3 to R2 Conversion for Range"
map "http://hl7.org/fhir/StructureMap/Range4to3" = "R4 to R3 Conversion for Range"
uses "http://hl7.org/fhir/StructureDefinition/Range" alias Range as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Range" alias RangeR2 as target
imports "http://hl7.org/fhir/StructureMap/primitives3to2"
imports "http://hl7.org/fhir/StructureMap/Element3to2"
imports "http://hl7.org/fhir/StructureMap/Quantity3to2"

uses "http://hl7.org/fhir/3.0/StructureDefinition/Range" alias RangeR3 as target

group for type+types  Range extends Element
  input src : Range as source
  input tgt : RangeR2 as target

imports "http://hl7.org/fhir/StructureMap/*4to3"

  "Range-low" : for src.low make tgt.low
  "Range-high" : for src.high make tgt.high

group Range(source src : Range, target tgt : RangeR3) extends Element <<type+>> {
  src.low -> tgt.low;
  src.high -> tgt.high;
}

endgroup

See also Base Definition , Detailed Descriptions , Examples , Profiles & Extensions and Mappings .

Functional status for this map: Not Mapped (based on R2 -> R3 -> R2 round tripping)

map "http://hl7.org/fhir/StructureMap/Ratio2to3" = "R2 to R3 Conversions for Ratio"
map "http://hl7.org/fhir/StructureMap/Ratio3to4" = "R3 to R4 Conversions for Ratio"
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Ratio" alias RatioR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/Ratio" alias RatioR3 as source

uses "http://hl7.org/fhir/StructureDefinition/Ratio" alias Ratio as target
imports "http://hl7.org/fhir/StructureMap/primitives2to3"
imports "http://hl7.org/fhir/StructureMap/Element2to3"
imports "http://hl7.org/fhir/StructureMap/Quantity2to3"
group for type+types  Ratio extends Element
  input src : RatioR2 as source
  input tgt : Ratio as target

imports "http://hl7.org/fhir/StructureMap/*3to4"

  "Ratio-numerator" : for src.numerator make tgt.numerator
  "Ratio-denominator" : for src.denominator make tgt.denominator

group Ratio(source src : RatioR3, target tgt : Ratio) extends Element <<type+>> {
  src.numerator -> tgt.numerator;
  src.denominator -> tgt.denominator;
}

endgroup

map "http://hl7.org/fhir/StructureMap/Ratio3to2" = "R3 to R2 Conversion for Ratio"
map "http://hl7.org/fhir/StructureMap/Ratio4to3" = "R4 to R3 Conversion for Ratio"
uses "http://hl7.org/fhir/StructureDefinition/Ratio" alias Ratio as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Ratio" alias RatioR2 as target
imports "http://hl7.org/fhir/StructureMap/primitives3to2"
imports "http://hl7.org/fhir/StructureMap/Element3to2"
imports "http://hl7.org/fhir/StructureMap/Quantity3to2"

uses "http://hl7.org/fhir/3.0/StructureDefinition/Ratio" alias RatioR3 as target

group for type+types  Ratio extends Element
  input src : Ratio as source
  input tgt : RatioR2 as target

imports "http://hl7.org/fhir/StructureMap/*4to3"

  "Ratio-numerator" : for src.numerator make tgt.numerator
  "Ratio-denominator" : for src.denominator make tgt.denominator

group Ratio(source src : Ratio, target tgt : RatioR3) extends Element <<type+>> {
  src.numerator -> tgt.numerator;
  src.denominator -> tgt.denominator;
}

endgroup

See also Base Definition , Detailed Descriptions , Examples , Profiles & Extensions and Mappings .

Functional status for this map: Not Mapped (based on R2 -> R3 -> R2 round tripping)

map "http://hl7.org/fhir/StructureMap/Period2to3" = "R2 to R3 Conversions for Period"
map "http://hl7.org/fhir/StructureMap/Period3to4" = "R3 to R4 Conversions for Period"
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Period" alias PeriodR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/Period" alias PeriodR3 as source

uses "http://hl7.org/fhir/StructureDefinition/Period" alias Period as target
imports "http://hl7.org/fhir/StructureMap/primitives2to3"
imports "http://hl7.org/fhir/StructureMap/Element2to3"
group for type+types  Period extends Element
  input src : PeriodR2 as source
  input tgt : Period as target

imports "http://hl7.org/fhir/StructureMap/*3to4"

  "Period-start" : for src.start make tgt.start
  "Period-end" : for src.end make tgt.end

group Period(source src : PeriodR3, target tgt : Period) extends Element <<type+>> {
  src.start -> tgt.start;
  src.end -> tgt.end;
}

endgroup

map "http://hl7.org/fhir/StructureMap/Period3to2" = "R3 to R2 Conversion for Period"
map "http://hl7.org/fhir/StructureMap/Period4to3" = "R4 to R3 Conversion for Period"
uses "http://hl7.org/fhir/StructureDefinition/Period" alias Period as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Period" alias PeriodR2 as target
imports "http://hl7.org/fhir/StructureMap/primitives3to2"
imports "http://hl7.org/fhir/StructureMap/Element3to2"

uses "http://hl7.org/fhir/3.0/StructureDefinition/Period" alias PeriodR3 as target

group for type+types  Period extends Element
  input src : Period as source
  input tgt : PeriodR2 as target

imports "http://hl7.org/fhir/StructureMap/*4to3"

  "Period-start" : for src.start make tgt.start
  "Period-end" : for src.end make tgt.end

group Period(source src : Period, target tgt : PeriodR3) extends Element <<type+>> {
  src.start -> tgt.start;
  src.end -> tgt.end;
}

endgroup

See also Base Definition , Detailed Descriptions , Examples , Profiles & Extensions and Mappings .

Functional status for this map: Not Mapped (based on R2 -> R3 -> R2 round tripping)

map "http://hl7.org/fhir/StructureMap/SampledData2to3" = "R2 to R3 Conversions for SampledData"
map "http://hl7.org/fhir/StructureMap/SampledData3to4" = "R3 to R4 Conversions for SampledData"
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/SampledData" alias SampledDataR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/SampledData" alias SampledDataR3 as source

uses "http://hl7.org/fhir/StructureDefinition/SampledData" alias SampledData as target
imports "http://hl7.org/fhir/StructureMap/primitives2to3"
imports "http://hl7.org/fhir/StructureMap/Element2to3"
imports "http://hl7.org/fhir/StructureMap/Quantity2to3"
group for type+types  SampledData extends Element
  input src : SampledDataR2 as source
  input tgt : SampledData as target

imports "http://hl7.org/fhir/StructureMap/*3to4"

  "SampledData-origin" : for src.origin make tgt.origin
  "SampledData-period" : for src.period make tgt.period
  "SampledData-factor" : for src.factor make tgt.factor
  "SampledData-lowerLimit" : for src.lowerLimit make tgt.lowerLimit
  "SampledData-upperLimit" : for src.upperLimit make tgt.upperLimit
  "SampledData-dimensions" : for src.dimensions make tgt.dimensions
  "SampledData-data" : for src.data make tgt.data

group SampledData(source src : SampledDataR3, target tgt : SampledData) extends Element <<type+>> {
  src.origin -> tgt.origin;
  src.period -> tgt.period;
  src.factor -> tgt.factor;
  src.lowerLimit -> tgt.lowerLimit;
  src.upperLimit -> tgt.upperLimit;
  src.dimensions -> tgt.dimensions;
  src.data -> tgt.data;
}

endgroup

map "http://hl7.org/fhir/StructureMap/SampledData3to2" = "R3 to R2 Conversion for SampledData"
map "http://hl7.org/fhir/StructureMap/SampledData4to3" = "R4 to R3 Conversion for SampledData"
uses "http://hl7.org/fhir/StructureDefinition/SampledData" alias SampledData as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/SampledData" alias SampledDataR2 as target
imports "http://hl7.org/fhir/StructureMap/primitives3to2"
imports "http://hl7.org/fhir/StructureMap/Element3to2"
imports "http://hl7.org/fhir/StructureMap/Quantity3to2"

uses "http://hl7.org/fhir/3.0/StructureDefinition/SampledData" alias SampledDataR3 as target

group for type+types  SampledData extends Element
  input src : SampledData as source
  input tgt : SampledDataR2 as target

imports "http://hl7.org/fhir/StructureMap/*4to3"

  "SampledData-origin" : for src.origin make tgt.origin
  "SampledData-period" : for src.period make tgt.period
  "SampledData-factor" : for src.factor make tgt.factor
  "SampledData-lowerLimit" : for src.lowerLimit make tgt.lowerLimit
  "SampledData-upperLimit" : for src.upperLimit make tgt.upperLimit
  "SampledData-dimensions" : for src.dimensions make tgt.dimensions
  "SampledData-data" : for src.data make tgt.data

group SampledData(source src : SampledData, target tgt : SampledDataR3) extends Element <<type+>> {
  src.origin -> tgt.origin;
  src.period -> tgt.period;
  src.factor -> tgt.factor;
  src.lowerLimit -> tgt.lowerLimit;
  src.upperLimit -> tgt.upperLimit;
  src.dimensions -> tgt.dimensions;
  src.data -> tgt.data;
}

endgroup

See also Base Definition , Detailed Descriptions , Examples , Profiles & Extensions and Mappings .

Functional status for this map: Not Mapped (based on R2 -> R3 -> R2 round tripping)

map "http://hl7.org/fhir/StructureMap/HumanName2to3" = "R2 to R3 Conversions for HumanName"
map "http://hl7.org/fhir/StructureMap/HumanName3to4" = "R3 to R4 Conversions for HumanName"
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/HumanName" alias HumanNameR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/HumanName" alias HumanNameR3 as source

uses "http://hl7.org/fhir/StructureDefinition/HumanName" alias HumanName as target
imports "http://hl7.org/fhir/StructureMap/*2to3"
group for type+types  HumanName extends Element
  input src : HumanNameR2 as source
  input tgt : HumanName as target

imports "http://hl7.org/fhir/StructureMap/*3to4"

  "HumanName-use" : for src.use make tgt.use
  "HumanName-text" : for src.text make tgt.text
  "HumanName-family" : for src.family first make tgt.family
  "HumanName-family-rpt" : for src.family not_first as f make tgt.extension as ex, ex.url = "http://hl7.org/fhir/StructureDefinition/HumanName-familyRepeat", ex.value = f
  "HumanName-given" : for src.given make tgt.given
  "HumanName-prefix" : for src.prefix make tgt.prefix
  "HumanName-suffix" : for src.suffix make tgt.suffix
  "HumanName-period" : for src.period make tgt.period

group HumanName(source src : HumanNameR3, target tgt : HumanName) extends Element <<type+>> {
  src.use -> tgt.use;
  src.text -> tgt.text;
  src.family -> tgt.family;
  src.given -> tgt.given;
  src.prefix -> tgt.prefix;
  src.suffix -> tgt.suffix;
  src.period -> tgt.period;
}

endgroup

map "http://hl7.org/fhir/StructureMap/HumanName3to2" = "R3 to R2 Conversion for HumanName"
map "http://hl7.org/fhir/StructureMap/HumanName4to3" = "R4 to R3 Conversion for HumanName"
uses "http://hl7.org/fhir/StructureDefinition/HumanName" alias HumanName as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/HumanName" alias HumanNameR2 as target
imports "http://hl7.org/fhir/StructureMap/*3to2"
group for type+types  HumanName 
  input src : HumanName as source
  input tgt : HumanNameR2 as target
  "HumanName-id" : for src.id make tgt.id
  "HumanName-extensions" : for src.extension where url != 'http://hl7.org/fhir/StructureDefinition/HumanName-familyRepeat' make tgt.extension
  
  "HumanName-use" : for src.use make tgt.use
  "HumanName-text" : for src.text make tgt.text
  "HumanName-family" : for src.family first make tgt.family
  "HumanName-family-rpt-ex" : for src.extension as ex where url = 'http://hl7.org/fhir/StructureDefinition/HumanName-familyRepeat' make tgt.family as f then nameRepeat(ex, f)
  "HumanName-given" : for src.given make tgt.given
  "HumanName-prefix" : for src.prefix make tgt.prefix
  "HumanName-suffix" : for src.suffix make tgt.suffix
  "HumanName-period" : for src.period make tgt.period
endgroup

uses "http://hl7.org/fhir/3.0/StructureDefinition/HumanName" alias HumanNameR3 as target

group nameRepeat 
  input src as source
  input tgt as target

imports "http://hl7.org/fhir/StructureMap/*4to3"

  "HumanName-family-rpt-2" : for src.value as v then string(v, tgt)
endgroup

group HumanName(source src : HumanName, target tgt : HumanNameR3) extends Element <<type+>> {
  src.use -> tgt.use;
  src.text -> tgt.text;
  src.family -> tgt.family;
  src.given -> tgt.given;
  src.prefix -> tgt.prefix;
  src.suffix -> tgt.suffix;
  src.period -> tgt.period;
}

See also Base Definition , Detailed Descriptions , Examples , Profiles & Extensions and Mappings .

Functional status for this map: Not Mapped (based on R2 -> R3 -> R2 round tripping)

map "http://hl7.org/fhir/StructureMap/Address2to3" = "R2 to R3 Conversions for Address"
map "http://hl7.org/fhir/StructureMap/Address3to4" = "R3 to R4 Conversions for Address"
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Address" alias AddressR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/Address" alias AddressR3 as source

uses "http://hl7.org/fhir/StructureDefinition/Address" alias Address as target
imports "http://hl7.org/fhir/StructureMap/primitives2to3"
imports "http://hl7.org/fhir/StructureMap/Element2to3"
imports "http://hl7.org/fhir/StructureMap/Period2to3"
group for type+types  Address extends Element
  input src : AddressR2 as source
  input tgt : Address as target

imports "http://hl7.org/fhir/StructureMap/*3to4"

  "Address-use" : for src.use make tgt.use
  "Address-type" : for src.type make tgt.type
  "Address-text" : for src.text make tgt.text
  "Address-line" : for src.line make tgt.line
  "Address-city" : for src.city make tgt.city
  "Address-district" : for src.district make tgt.district
  "Address-state" : for src.state make tgt.state
  "Address-postalCode" : for src.postalCode make tgt.postalCode
  "Address-country" : for src.country make tgt.country
  "Address-period" : for src.period make tgt.period

group Address(source src : AddressR3, target tgt : Address) extends Element <<type+>> {
  src.use -> tgt.use;
  src.type -> tgt.type;
  src.text -> tgt.text;
  src.line -> tgt.line;
  src.city -> tgt.city;
  src.district -> tgt.district;
  src.state -> tgt.state;
  src.postalCode -> tgt.postalCode;
  src.country -> tgt.country;
  src.period -> tgt.period;
}

endgroup

map "http://hl7.org/fhir/StructureMap/Address3to2" = "R3 to R2 Conversion for Address"
map "http://hl7.org/fhir/StructureMap/Address4to3" = "R4 to R3 Conversion for Address"
uses "http://hl7.org/fhir/StructureDefinition/Address" alias Address as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Address" alias AddressR2 as target
imports "http://hl7.org/fhir/StructureMap/primitives3to2"
imports "http://hl7.org/fhir/StructureMap/Element3to2"
imports "http://hl7.org/fhir/StructureMap/Period3to2"

uses "http://hl7.org/fhir/3.0/StructureDefinition/Address" alias AddressR3 as target

group for type+types  Address extends Element
  input src : Address as source
  input tgt : AddressR2 as target

imports "http://hl7.org/fhir/StructureMap/*4to3"

  "Address-use" : for src.use make tgt.use
  "Address-type" : for src.type make tgt.type
  "Address-text" : for src.text make tgt.text
  "Address-line" : for src.line make tgt.line
  "Address-city" : for src.city make tgt.city
  "Address-district" : for src.district make tgt.district
  "Address-state" : for src.state make tgt.state
  "Address-postalCode" : for src.postalCode make tgt.postalCode
  "Address-country" : for src.country make tgt.country
  "Address-period" : for src.period make tgt.period

group Address(source src : Address, target tgt : AddressR3) extends Element <<type+>> {
  src.use -> tgt.use;
  src.type -> tgt.type;
  src.text -> tgt.text;
  src.line -> tgt.line;
  src.city -> tgt.city;
  src.district -> tgt.district;
  src.state -> tgt.state;
  src.postalCode -> tgt.postalCode;
  src.country -> tgt.country;
  src.period -> tgt.period;
}

endgroup

See also Base Definition , Detailed Descriptions , Examples , Profiles & Extensions and Mappings .

Functional status for this map: Not Mapped (based on R2 -> R3 -> R2 round tripping)

map "http://hl7.org/fhir/StructureMap/ContactPoint2to3" = "R2 to R3 Conversions for ContactPoint"
map "http://hl7.org/fhir/StructureMap/ContactPoint3to4" = "R3 to R4 Conversions for ContactPoint"
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/ContactPoint" alias ContactPointR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/ContactPoint" alias ContactPointR3 as source

uses "http://hl7.org/fhir/StructureDefinition/ContactPoint" alias ContactPoint as target
imports "http://hl7.org/fhir/StructureMap/primitives2to3"
imports "http://hl7.org/fhir/StructureMap/Element2to3"
imports "http://hl7.org/fhir/StructureMap/Period2to3"
group for type+types  ContactPoint extends Element
  input src : ContactPointR2 as source
  input tgt : ContactPoint as target

imports "http://hl7.org/fhir/StructureMap/*3to4"

  "ContactPoint-system" : for src.system make tgt.system
  "ContactPoint-value" : for src.value make tgt.value
  "ContactPoint-use" : for src.use make tgt.use
  "ContactPoint-rank" : for src.rank make tgt.rank
  "ContactPoint-period" : for src.period make tgt.period

group ContactPoint(source src : ContactPointR3, target tgt : ContactPoint) extends Element <<type+>> {
  src.system -> tgt.system;
  src.value -> tgt.value;
  src.use -> tgt.use;
  src.rank -> tgt.rank;
  src.period -> tgt.period;
}

endgroup

map "http://hl7.org/fhir/StructureMap/ContactPoint3to2" = "R3 to R2 Conversion for ContactPoint"
map "http://hl7.org/fhir/StructureMap/ContactPoint4to3" = "R4 to R3 Conversion for ContactPoint"
uses "http://hl7.org/fhir/StructureDefinition/ContactPoint" alias ContactPoint as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/ContactPoint" alias ContactPointR2 as target
imports "http://hl7.org/fhir/StructureMap/primitives3to2"
imports "http://hl7.org/fhir/StructureMap/Element3to2"
imports "http://hl7.org/fhir/StructureMap/Period3to2"

uses "http://hl7.org/fhir/3.0/StructureDefinition/ContactPoint" alias ContactPointR3 as target

group for type+types  ContactPoint extends Element
  input src : ContactPoint as source
  input tgt : ContactPointR2 as target

imports "http://hl7.org/fhir/StructureMap/*4to3"

  "ContactPoint-system" : for src.system make tgt.system
  "ContactPoint-value" : for src.value make tgt.value
  "ContactPoint-use" : for src.use make tgt.use
  "ContactPoint-rank" : for src.rank make tgt.rank
  "ContactPoint-period" : for src.period make tgt.period

group ContactPoint(source src : ContactPoint, target tgt : ContactPointR3) extends Element <<type+>> {
  src.system -> tgt.system;
  src.value -> tgt.value;
  src.use -> tgt.use;
  src.rank -> tgt.rank;
  src.period -> tgt.period;
}

endgroup

See also Base Definition , Detailed Descriptions , Examples , Profiles & Extensions and Mappings .

Functional status for this map: Not Mapped (based on R2 -> R3 -> R2 round tripping)

map "http://hl7.org/fhir/StructureMap/Timing2to3" = "R2 to R3 Conversions for Timing" conceptmap "EventTiming" { prefix s = "http://hl7.org/fhir/v3/TimingEvent" prefix t = "http://hl7.org/fhir/event-timing" s:HS ~ t:MORN s:HS ~ t:MORN s:HS ~ t:MORN s:HS ~ t:MORN s:HS ~ t:MORN s:HS ~ t:MORN s:HS ~ t:MORN s:HS ~ t:MORN s:HS ~ t:MORN s:HS ~ t:MORN s:HS ~ t:MORN s:HS ~ t:MORN s:HS ~ t:MORN s:HS ~ t:MORN }
map "http://hl7.org/fhir/StructureMap/Timing3to4" = "R3 to R4 Conversions for Timing"
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Timing" alias TimingR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/Timing" alias TimingR3 as source

uses "http://hl7.org/fhir/StructureDefinition/Timing" alias Timing as target
imports "http://hl7.org/fhir/StructureMap/primitives2to3"
imports "http://hl7.org/fhir/StructureMap/Element2to3"
imports "http://hl7.org/fhir/StructureMap/Period2to3"
imports "http://hl7.org/fhir/StructureMap/Range2to3"
imports "http://hl7.org/fhir/StructureMap/CodeableConcept2to3"
group for type+types  Timing extends Element
  input src : TimingR2 as source
  input tgt : Timing as target

imports "http://hl7.org/fhir/StructureMap/*3to4"

  "Timing-event" : for src.event make tgt.event
  "Timing-repeat" : for src.repeat as vs0 make tgt.repeat as vt0 then {
    "Timing.repeat-bounds-Range" : for vs0.bounds : Range as vs make vt0.bounds = create("Range") as vt then Range(vs, vt)
    "Timing.repeat-bounds-Period" : for vs0.bounds : Period as vs make vt0.bounds = create("Period") as vt then Period(vs, vt)
    "Timing.repeat-count" : for vs0.count make vt0.count
    "Timing.repeat-duration" : for vs0.duration make vt0.duration
    "Timing.repeat-durationMax" : for vs0.durationMax make vt0.durationMax
    "Timing.repeat-durationUnit" : for vs0.durationUnits make vt0.durationUnit
    "Timing.repeat-frequency" : for vs0.frequency make vt0.frequency
    "Timing.repeat-frequencyMax" : for vs0.frequencyMax make vt0.frequencyMax
    "Timing.repeat-period" : for vs0.period make vt0.period
    "Timing.repeat-periodMax" : for vs0.periodMax make vt0.periodMax
    "Timing.repeat-periodUnit" : for vs0.periodUnits make vt0.periodUnit
    "Timing.repeat-when" : for vs0.when as v make vt0.when = translate(v, "#EventTiming", "code")
  }

group Timing(source src : TimingR3, target tgt : Timing) extends BackboneElement <<type+>> {
  src.event -> tgt.event;
  src.repeat as vs0 -> tgt.repeat as vt0 then repeat(vs0, vt0);
  src.code -> tgt.code;
}

  "Timing-code" : for src.code make tgt.code

group repeat(source src, target tgt) extends Element {
  src.bounds : Duration as vs -> tgt.bounds = create('Duration') as vt then Duration(vs, vt);
  src.bounds : Range as vs -> tgt.bounds = create('Range') as vt then Range(vs, vt);
  src.bounds : Period as vs -> tgt.bounds = create('Period') as vt then Period(vs, vt);
  src.count -> tgt.count;
  src.countMax -> tgt.countMax;
  src.duration -> tgt.duration;
  src.durationMax -> tgt.durationMax;
  src.durationUnit -> tgt.durationUnit;
  src.frequency -> tgt.frequency;
  src.frequencyMax -> tgt.frequencyMax;
  src.period -> tgt.period;
  src.periodMax -> tgt.periodMax;
  src.periodUnit -> tgt.periodUnit;
  src.dayOfWeek -> tgt.dayOfWeek;
  src.timeOfDay -> tgt.timeOfDay;
  src.when -> tgt.when;
  src.offset -> tgt.offset;
}

endgroup

map "http://hl7.org/fhir/StructureMap/Timing3to2" = "R3 to R2 Conversion for Timing" conceptmap "EventTiming" { prefix s = "http://hl7.org/fhir/event-timing" prefix t = "http://hl7.org/fhir/v3/TimingEvent" s:MORN ~ t:HS s:MORN ~ t:HS s:MORN ~ t:HS s:MORN ~ t:HS s:MORN ~ t:HS s:MORN ~ t:HS s:MORN ~ t:HS s:MORN ~ t:HS s:MORN ~ t:HS s:MORN ~ t:HS s:MORN ~ t:HS s:MORN ~ t:HS s:MORN ~ t:HS s:MORN ~ t:HS }
map "http://hl7.org/fhir/StructureMap/Timing4to3" = "R4 to R3 Conversion for Timing"
uses "http://hl7.org/fhir/StructureDefinition/Timing" alias Timing as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Timing" alias TimingR2 as target
imports "http://hl7.org/fhir/StructureMap/primitives3to2"
imports "http://hl7.org/fhir/StructureMap/Element3to2"
imports "http://hl7.org/fhir/StructureMap/Period3to2"
imports "http://hl7.org/fhir/StructureMap/Range3to2"
imports "http://hl7.org/fhir/StructureMap/CodeableConcept3to2"

uses "http://hl7.org/fhir/3.0/StructureDefinition/Timing" alias TimingR3 as target

group for type+types  Timing extends Element
  input src : Timing as source
  input tgt : TimingR2 as target

imports "http://hl7.org/fhir/StructureMap/*4to3"

  "Timing-event" : for src.event make tgt.event
  "Timing-repeat" : for src.repeat as vs0 make tgt.repeat as vt0 then {
    "Timing.repeat-bounds-Range" : for vs0.bounds : Range as vs make vt0.bounds = create("Range") as vt then Range(vs, vt)
    "Timing.repeat-bounds-Period" : for vs0.bounds : Period as vs make vt0.bounds = create("Period") as vt then Period(vs, vt)
    "Timing.repeat-count" : for vs0.count make vt0.count
    "Timing.repeat-duration" : for vs0.duration make vt0.duration
    "Timing.repeat-durationMax" : for vs0.durationMax make vt0.durationMax
    "Timing.repeat-durationUnits" : for vs0.durationUnit make vt0.durationUnits
    "Timing.repeat-frequency" : for vs0.frequency make vt0.frequency
    "Timing.repeat-frequencyMax" : for vs0.frequencyMax make vt0.frequencyMax
    "Timing.repeat-period" : for vs0.period make vt0.period
    "Timing.repeat-periodMax" : for vs0.periodMax make vt0.periodMax
    "Timing.repeat-periodUnits" : for vs0.periodUnit make vt0.periodUnits
    "Timing.repeat-when" : for vs0.when as v make vt0.when = translate(v, "#EventTiming", "code")
  }

group Timing(source src : Timing, target tgt : TimingR3) extends BackboneElement <<type+>> {
  src.event -> tgt.event;
  src.repeat as vs0 -> tgt.repeat as vt0 then repeat(vs0, vt0);
  src.code -> tgt.code;
}

  "Timing-code" : for src.code make tgt.code

group repeat(source src, target tgt) extends Element {
  src.bounds : Duration as vs -> tgt.bounds = create('Duration') as vt then Duration(vs, vt);
  src.bounds : Range as vs -> tgt.bounds = create('Range') as vt then Range(vs, vt);
  src.bounds : Period as vs -> tgt.bounds = create('Period') as vt then Period(vs, vt);
  src.count -> tgt.count;
  src.countMax -> tgt.countMax;
  src.duration -> tgt.duration;
  src.durationMax -> tgt.durationMax;
  src.durationUnit -> tgt.durationUnit;
  src.frequency -> tgt.frequency;
  src.frequencyMax -> tgt.frequencyMax;
  src.period -> tgt.period;
  src.periodMax -> tgt.periodMax;
  src.periodUnit -> tgt.periodUnit;
  src.dayOfWeek -> tgt.dayOfWeek;
  src.timeOfDay -> tgt.timeOfDay;
  src.when -> tgt.when;
  src.offset -> tgt.offset;
}

endgroup

See also Base Definition , Detailed Descriptions , Examples , Profiles & Extensions and Mappings .

Functional status for this map: Not Mapped (based on R2 -> R3 -> R2 round tripping)

map "http://hl7.org/fhir/StructureMap/Signature2to3" = "R2 to R3 Conversions for Signature"
map "http://hl7.org/fhir/StructureMap/Signature3to4" = "R3 to R4 Conversions for Signature"
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Signature" alias SignatureR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/Signature" alias SignatureR3 as source

uses "http://hl7.org/fhir/StructureDefinition/Signature" alias Signature as target
imports "http://hl7.org/fhir/StructureMap/primitives2to3"
imports "http://hl7.org/fhir/StructureMap/Element2to3"
imports "http://hl7.org/fhir/StructureMap/Coding2to3"
imports "http://hl7.org/fhir/StructureMap/Reference2to3"
group for type+types  Signature extends Element
  input src : SignatureR2 as source
  input tgt : Signature as target

imports "http://hl7.org/fhir/StructureMap/*3to4"

  "Signature-type" : for src.type make tgt.type
  "Signature-when" : for src.when make tgt.when
  "Signature-who-uri" : for src.who : uri as vs make tgt.who = create("uri") as vt then uri(vs, vt)
  "Signature-who-Reference" : for src.who : Reference as vs make tgt.who = create("Reference") as vt then Reference(vs, vt)
  "Signature-contentType" : for src.contentType make tgt.contentType
  "Signature-blob" : for src.blob make tgt.blob

group Signature(source src : SignatureR3, target tgt : Signature) extends Element <<type+>> {
  src.type -> tgt.type;
  src.when -> tgt.when;
  src.who : uri as vs ->  tgt.who as ref,  ref.reference = vs,  ref.extension as ext,  ext.url = 'http://hl7.org/fhir/3.0/StructureDefinition/BaseType',  ext.value = 'uri';
  src.who : Reference as vs0 -> tgt.who as vt0 then Reference(vs0, vt0);
  src.onBehalfOf : uri as vs ->  tgt.onBehalfOf as ref,  ref.reference = vs,  ref.extension as ext,  ext.url = 'http://hl7.org/fhir/3.0/StructureDefinition/BaseType',  ext.value = 'uri';
  src.onBehalfOf : Reference as vs0 -> tgt.onBehalfOf as vt0 then Reference(vs0, vt0);
  src.contentType -> tgt.sigFormat;
  src.blob -> tgt.data;
}

endgroup

map "http://hl7.org/fhir/StructureMap/Signature3to2" = "R3 to R2 Conversion for Signature"
map "http://hl7.org/fhir/StructureMap/Signature4to3" = "R4 to R3 Conversion for Signature"
uses "http://hl7.org/fhir/StructureDefinition/Signature" alias Signature as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Signature" alias SignatureR2 as target
imports "http://hl7.org/fhir/StructureMap/primitives3to2"
imports "http://hl7.org/fhir/StructureMap/Element3to2"
imports "http://hl7.org/fhir/StructureMap/Coding3to2"
imports "http://hl7.org/fhir/StructureMap/Reference3to2"

uses "http://hl7.org/fhir/3.0/StructureDefinition/Signature" alias SignatureR3 as target

group for type+types  Signature extends Element
  input src : Signature as source
  input tgt : SignatureR2 as target

imports "http://hl7.org/fhir/StructureMap/*4to3"

  "Signature-type" : for src.type make tgt.type
  "Signature-when" : for src.when make tgt.when
  "Signature-who-uri" : for src.who : uri as vs make tgt.who = create("uri") as vt then uri(vs, vt)
  "Signature-who-Reference" : for src.who : Reference as vs make tgt.who = create("Reference") as vt then Reference(vs, vt)
  "Signature-contentType" : for src.contentType make tgt.contentType
  "Signature-blob" : for src.blob make tgt.blob

group Signature(source src : Signature, target tgt : SignatureR3) extends Element <<type+>> {
  src.type -> tgt.type;
  src.when -> tgt.when;
  src.who as vs0 where extension('http://hl7.org/fhir/3.0/StructureDefinition/BaseType').empty() -> tgt.who = create('Reference') as vt0 then Reference(vs0, vt0);
  src.who as vs0 where extension('http://hl7.org/fhir/3.0/StructureDefinition/BaseType').exists() -> tgt.who = create('uri') as vt0 then {
    vs0.reference as vs1 then uri(vs1, vt0);
  };
  src.onBehalfOf as vs0 where extension('http://hl7.org/fhir/3.0/StructureDefinition/BaseType').empty() -> tgt.onBehalfOf = create('Reference') as vt0 then Reference(vs0, vt0);
  src.onBehalfOf as vs0 where extension('http://hl7.org/fhir/3.0/StructureDefinition/BaseType').exists() -> tgt.onBehalfOf = create('uri') as vt0 then {
    vs0.reference as vs1 then uri(vs1, vt0);
  };
  src.sigFormat -> tgt.contentType;
  src.data -> tgt.blob;
}

endgroup

See also Base Definition , Detailed Descriptions , Examples , Profiles & Extensions and Mappings .

Functional status for this map: Not Mapped (based on R2 -> R3 -> R2 round tripping)

map "http://hl7.org/fhir/StructureMap/Annotation2to3" = "R2 to R3 Conversions for Annotation"
map "http://hl7.org/fhir/StructureMap/Annotation3to4" = "R3 to R4 Conversions for Annotation"
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Annotation" alias AnnotationR2 as source
  uses "http://hl7.org/fhir/DSTU2/StructureDefinition/string" alias stringR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/Annotation" alias AnnotationR3 as source
uses "http://hl7.org/fhir/3.0/StructureDefinition/string" alias StringR3 as source

uses "http://hl7.org/fhir/StructureDefinition/Annotation" alias Annotation as target
imports "http://hl7.org/fhir/StructureMap/*2to3"
group for type+types  Annotation extends Element
  input src : AnnotationR2 as source
  input tgt : Annotation as target
  "Annotation-author-Reference" : for src.author : Reference as vs make tgt.author = create("Reference") as vt then Reference(vs, vt)
  "Annotation-author-string" : for src.author : string as vs make tgt.author = create("string") as vt then string(vs, vt)
  "Annotation-time" : for src.time make tgt.time
  "Annotation-text" : for src.text make tgt.text

imports "http://hl7.org/fhir/StructureMap/*3to4"

endgroup

group Annotation(source src : AnnotationR3, target tgt : Annotation) extends Element <<type+>> {
  src.author : Reference as vs -> tgt.author = create('Reference') as vt then Reference(vs, vt);
  src.author : string as vs -> tgt.author = create('string') as vt then string(vs, vt);
  src.time -> tgt.time;
  src.text -> tgt.text;
}

group for types stringToAnnotation extends Element
  input src : stringR2 as source
  input tgt : Annotation as target

group string2Annotation(source src : stringR3, target tgt : Annotation) extends Element <<types>> {
  src -> tgt.text as vt0 then string(src, vt0) "text";
}

  "Annotation-text1" : for src make tgt.text = src
endgroup

map "http://hl7.org/fhir/StructureMap/Annotation3to2" = "R3 to R2 Conversion for Annotation"
map "http://hl7.org/fhir/StructureMap/Annotation4to3" = "R4 to R3 Conversion for Annotation"
uses "http://hl7.org/fhir/StructureDefinition/Annotation" alias Annotation as source
uses "http://hl7.org/fhir/StructureDefinition/string" alias string as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Annotation" alias AnnotationR2 as target
imports "http://hl7.org/fhir/StructureMap/primitives3to2"
imports "http://hl7.org/fhir/StructureMap/Element3to2"
imports "http://hl7.org/fhir/StructureMap/Reference3to2"
group for type+types  Annotation extends Element
  input src : Annotation as source
  input tgt : AnnotationR2 as target
  "Annotation-author-Reference" : for src.author : Reference as vs make tgt.author = create("Reference") as vt then Reference(vs, vt)
  "Annotation-author-string" : for src.author : string as vs make tgt.author = create("string") as vt then string(vs, vt)
  "Annotation-time" : for src.time make tgt.time
  "Annotation-text" : for src.text make tgt.text

uses "http://hl7.org/fhir/3.0/StructureDefinition/Annotation" alias AnnotationR3 as target
uses "http://hl7.org/fhir/3.0/StructureDefinition/string" alias StringR3 as target

endgroup

imports "http://hl7.org/fhir/StructureMap/*4to3"

group for type+types  AnnotationToString extends Element
  input src : AnnotationR2 as source
  input tgt : string as target

group Annotation(source src : Annotation, target tgt : AnnotationR3) extends Element <<type+>> {
  src.author : Reference as vs -> tgt.author = create('Reference') as vt then Reference(vs, vt);
  src.author : string as vs -> tgt.author = create('string') as vt then string(vs, vt);
  src.time -> tgt.time;
  src.text -> tgt.text;
}

  "Annotation-text1" : for src.text as v make tgt.value = v

group Annotation2string(source src : Annotation, target tgt : stringR3) extends Element <<types>> {
  src.text as vs0 then string(vs0, tgt);
}

endgroup