FHIR R4 Current Build
This page is part of FHIR R4 - the current version v4.0.0 - in it's permanent home (it will always be available at this URL). For a full list of available versions, see the Directory of published versions .
FHIR Infrastructure Work Group Maturity Level : N/A Standards Status : Informative

This page provides the detailed descriptions for the data types

Table of Contents

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

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/primitives3to4" = "R3 to R4 Primitive Conversions"
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/3.0/StructureDefinition/boolean" alias booleanR3 as source
uses "http://hl7.org/fhir/StructureDefinition/boolean" as target
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/3.0/StructureDefinition/date" alias dateR3 as source
uses "http://hl7.org/fhir/StructureDefinition/date" as target
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/3.0/StructureDefinition/decimal" alias decimalR3 as source
uses "http://hl7.org/fhir/StructureDefinition/decimal" as target
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/3.0/StructureDefinition/instant" alias instantR3 as source
uses "http://hl7.org/fhir/StructureDefinition/instant" as target
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/3.0/StructureDefinition/markdown" alias markdownR3 as source
uses "http://hl7.org/fhir/StructureDefinition/markdown" as target
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/3.0/StructureDefinition/positiveInt" alias positiveIntR3 as source
uses "http://hl7.org/fhir/StructureDefinition/positiveInt" as target
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/3.0/StructureDefinition/time" alias timeR3 as source
uses "http://hl7.org/fhir/StructureDefinition/time" as target
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/3.0/StructureDefinition/uri" alias uriR3 as source
uses "http://hl7.org/fhir/StructureDefinition/uri" as target
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/3.0/StructureDefinition/xhtml" alias xhtmlR3 as source
uses "http://hl7.org/fhir/StructureDefinition/xhtml" as target
imports "http://hl7.org/fhir/StructureMap/Element3to4"
group base64Binary(source src : base64BinaryR3, target tgt : base64Binary) extends Element <<type+>> {
  src.value as v -> tgt.value = v "base64Binary-value";
}
group boolean(source src : booleanR3, target tgt : boolean) extends Element <<type+>> {
  src.value as v -> tgt.value = v "boolean-value";
}
group canonical(source src : canonicalR3, target tgt : canonical) extends Element <<type+>> {
  src.value as v -> tgt.value = v "canonical-value";
}
group code(source src : codeR3, target tgt : code) extends Element <<type+>> {
  src.value as v -> tgt.value = v "code-value";
}
group date(source src : dateR3, target tgt : date) extends Element <<type+>> {
  src.value as v -> tgt.value = v "date-value";
}
group dateTime(source src : dateTimeR3, target tgt : dateTime) extends Element <<type+>> {
  src.value as v -> tgt.value = v "dateTime-value";
}
group decimal(source src : decimalR3, target tgt : decimal) extends Element <<type+>> {
  src.value as v -> tgt.value = v "decimal-value";
}
group id(source src : idR3, target tgt : id) extends Element <<type+>> {
  src.value as v -> tgt.value = v "id-value";
}
group instant(source src : instantR3, target tgt : instant) extends Element <<type+>> {
  src.value as v -> tgt.value = v "instant-value";
}
group integer(source src : integerR3, target tgt : integer) extends Element <<type+>> {
  src.value as v -> tgt.value = v "integer-value";
}
group markdown(source src : markdownR3, target tgt : markdown) extends Element <<type+>> {
  src.value as v -> tgt.value = v "markdown-value";
}
group oid(source src : oidR3, target tgt : oid) extends Element <<type+>> {
  src.value as v -> tgt.value = v "oid-value";
}
group positiveInt(source src : positiveIntR3, target tgt : positiveInt) extends Element <<type+>> {
  src.value as v -> tgt.value = v "positiveInt-value";
}
group string(source src : stringR3, target tgt : string) extends Element <<type+>> {
  src.value as v -> tgt.value = v "string-value";
}
group time(source src : timeR3, target tgt : time) extends Element <<type+>> {
  src.value as v -> tgt.value = v "time-value";
}
group unsignedInt(source src : unsignedIntR3, target tgt : unsignedInt) extends Element <<type+>> {
  src.value as v -> tgt.value = v "unsignedInt-value";
}
group uri(source src : uriR3, target tgt : uri) extends Element <<type+>> {
  src.value as v -> tgt.value = v "uri-value";
}
group uri2Canonical(source src : uriR3, target tgt : canonical) extends Element <<types>> {
  src.value as v -> tgt.value = v "uri-value";
}
group url(source src : urlR3, target tgt : url) extends Element <<type+>> {
  src.value as v -> tgt.value = v "url-value";
}
group uuid(source src : uuidR3, target tgt : uuid) extends Element <<type+>> {
  src.value as v -> tgt.value = v "uuid-value";
}
group xhtml(source src : xhtmlR3, target tgt : xhtml) extends Element <<type+>> {
  src.value as v -> tgt.value = v "xhtml-value";
}
group stringToMarkdown(source src : stringR3, target tgt : markdown) extends Element <<types>> {
  src.value as v -> tgt.value = v "stringToMarkdown-value";
}
group id2code(source src : idR3, target tgt : code) extends Element <<types>> {
  src.value as v -> tgt.value = v "id2code-value";
}
group code2uri(source src : codeR3, target tgt : uri) extends Element <<types>> {
  src.value as v -> tgt.value = v "code2uri-value";
}
group code2string(source src : codeR3, target tgt : string) extends Element <<types>> {
  src.value as v -> tgt.value = v "code2uri-value";
}
group string2code(source src : stringR3, target tgt : code) extends Element <<types>> {
  src.value as v -> tgt.value = v "code2uri-value";
}
group uri2url(source src : uriR3, target tgt : url) extends Element <<types>> {
  src.value as v -> tgt.value = v "code2uri-value";
}
group id2string(source src : idR3, target tgt : string) extends Element <<type+>> {
  src.value as v -> tgt.value = v;
}
group uri2string(source src : uriR3, target tgt : string) extends Element <<types>> {
  src.value as v -> tgt.value = v "code2uri-value";
}
group unsignedInt2decimal(source src : unsignedIntR3, target tgt : decimal) extends Element <<types>> {
  src.value as v -> tgt.value = v "unsignedInt2decimal-value";
}
group oid2string(source src : oidR3, target tgt : string) extends Element <<type+>> {
  src.value as v -> tgt.value = v;
}
group oid2id(source src : oidR3, target tgt : id) extends Element <<type+>> {
  src.value as v -> tgt.value = v;
}
group positiveInt2integer(source src : positiveIntR3, target tgt : integer) extends Element <<types>> {
  src.value as v -> tgt.value = v "unsignedInt2decimal-value";
}
group integer2positiveInt(source src : integerR3, target tgt : positiveInt) extends Element <<types>> {
  src.value as v -> tgt.value = v "unsignedInt2decimal-value";
}
group positiveInt2unsignedInt(source src : positiveIntR3, target tgt : unsignedInt) extends Element <<types>> {
  src.value as v -> tgt.value = v;
}
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/3.0/StructureDefinition/base64Binary" alias base64BinaryR3 as target
uses "http://hl7.org/fhir/StructureDefinition/boolean" as source
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/3.0/StructureDefinition/code" alias codeR3 as target
uses "http://hl7.org/fhir/StructureDefinition/date" as source
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/3.0/StructureDefinition/dateTime" alias dateTimeR3 as target
uses "http://hl7.org/fhir/StructureDefinition/decimal" as source
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/3.0/StructureDefinition/id" alias idR3 as target
uses "http://hl7.org/fhir/StructureDefinition/instant" as source
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/3.0/StructureDefinition/integer" alias integerR3 as target
uses "http://hl7.org/fhir/StructureDefinition/markdown" as source
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/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
imports "http://hl7.org/fhir/StructureMap/Element4to3"
group base64Binary(source src : base64Binary, target tgt : base64BinaryR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "base64Binary-value";
}
group boolean(source src : boolean, target tgt : booleanR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "boolean-value";
}
group canonical(source src : canonical, target tgt : canonicalR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "canonical-value";
}
group code(source src : code, target tgt : codeR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "code-value";
}
group date(source src : date, target tgt : dateR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "date-value";
}
group dateTime(source src : dateTime, target tgt : dateTimeR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "dateTime-value";
}
group decimal(source src : decimal, target tgt : decimalR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "decimal-value";
}
group id(source src : id, target tgt : idR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "id-value";
}
group instant(source src : instant, target tgt : instantR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "instant-value";
}
group integer(source src : integer, target tgt : integerR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "integer-value";
}
group markdown(source src : markdown, target tgt : markdownR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "markdown-value";
}
group oid(source src : oid, target tgt : oidR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "oid-value";
}
group positiveInt(source src : positiveInt, target tgt : positiveIntR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "positiveInt-value";
}
group string(source src : string, target tgt : stringR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "string-value";
}
group time(source src : time, target tgt : timeR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "time-value";
}
group unsignedInt(source src : unsignedInt, target tgt : unsignedIntR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "unsignedInt-value";
}
group uri(source src : uri, target tgt : uriR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "uri-value";
}
group url(source src : url, target tgt : urlR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "url-value";
}
group uuid(source src : uuid, target tgt : uuidR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "uuid-value";
}
group xhtml(source src : xhtml, target tgt : xhtmlR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v "xhtml-value";
}
group markdownToString(source src : markdown, target tgt : stringR3) extends Element <<types>> {
  src.value as v -> tgt.value = v "markdownToString-value";
}
group code2id(source src : code, target tgt : idR3) extends Element <<types>> {
  src.value as v -> tgt.value = v "code2id-value";
}
group uri2code(source src : uriR3, target tgt : code) extends Element <<types>> {
  src.value as v -> tgt.value = v "uri2code-value";
}
group string2code(source src : stringR3, target tgt : code) extends Element <<types>> {
  src.value as v -> tgt.value = v "uri2code-value";
}
group code2string(source src : codeR3, target tgt : string) extends Element <<types>> {
  src.value as v -> tgt.value = v "uri2code-value";
}
group canonical2Uri(source src : canonicalR3, target tgt : uri) extends Element <<types>> {
  src.value as v -> tgt.value = v "canonical2uri-value";
}
group url2uri(source src : url, target tgt : uriR3) extends Element <<types>> {
  src.value as v -> tgt.value = v "code2uri-value";
}
group string2id(source src : string, target tgt : idR3) extends Element <<types>> {
  src.value as v -> tgt.value = v "uri2code-value";
}
group string2uri(source src : string, target tgt : uriR3) extends Element <<types>> {
  src.value as v -> tgt.value = v "code2uri-value";
}
group decimal2unsignedInt(source src : decimal, target tgt : unsignedIntR3) extends Element <<types>> {
  src.value as v -> tgt.value = v "unsignedInt2decimal-value";
}
group canonical2string(source src : canonical, target tgt : stringR3) extends Element <<types>> {
  src.value as v -> tgt.value = v "code2uri-value";
}
group oid2string(source src : string, target tgt : oidR3) extends Element <<types>> {
  src.value as v -> tgt.value = v;
}
group id2oid(source src : id, target tgt : oidR3) extends Element <<types>> {
  src.value as v -> tgt.value = v;
}
group id2string(source src : id, target tgt : stringR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v;
}
group code2oid(source src : code, target tgt : oidR3) extends Element <<type+>> {
  src.value as v -> tgt.value = v;
}
group integer2positiveInt(source src : integer, target tgt : positiveIntR3) extends Element <<types>> {
  src.value as v -> tgt.value = v "unsignedInt2decimal-value";
}
group positiveInt2integer(source src : positiveInt, target tgt : integerR3) extends Element <<types>> {
  src.value as v -> tgt.value = v "unsignedInt2decimal-value";
}
group unsignedInt2positiveInt(source src : unsignedInt, target tgt : positiveIntR3) extends Element <<types>> {
  src.value as v -> tgt.value = v;
}
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/Attachment3to4" = "R3 to R4 Conversions for Attachment"
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/*3to4"
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;
}
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/3.0/StructureDefinition/Attachment" alias AttachmentR3 as target
imports "http://hl7.org/fhir/StructureMap/*4to3"
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;
}

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/Identifier3to4" = "R3 to R4 Conversions for Identifier"
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/*3to4"
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;
}
group Identifier2Codeable(source src, target tgt) extends Element {
  src -> tgt.coding as c then {
    src.system -> c.system;
    src.value -> c.code;
  } "coding";
}
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/3.0/StructureDefinition/Identifier" alias IdentifierR3 as target
imports "http://hl7.org/fhir/StructureMap/*4to3"
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;
}
group Codeable2Identifier(source src, target tgt) extends Element {
  src.coding as c then {
    c.system -> tgt.system;
    c.code -> tgt.value;
  };
}

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/Coding3to4" = "R3 to R4 Conversions for Coding"
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/*3to4"
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/Coding4to3" = "R4 to R3 Conversion for Coding"
uses "http://hl7.org/fhir/StructureDefinition/Coding" alias Coding as source
uses "http://hl7.org/fhir/3.0/StructureDefinition/Coding" alias CodingR3 as target
imports "http://hl7.org/fhir/StructureMap/*4to3"
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;
}
group Coding2code(source src : Coding, target tgt : codeR3) extends Element <<types>> {
  src.code as vs0 then code(vs0, tgt);
}

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/CodeableConcept3to4" = "R3 to R4 Conversions for CodeableConcept"
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/*3to4"
group CodeableConcept(source src : CodeableConceptR3, target tgt : CodeableConcept) extends Element <<type+>> {
  src.coding -> tgt.coding;
  src.text -> tgt.text;
}
group Coding2CodeableConcept(source src : CodingR3, target tgt : CodeableConcept) extends Element <<types>> {
  src -> tgt.coding as vt0 then Coding(src, vt0) "coding";
}
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/3.0/StructureDefinition/CodeableConcept" alias CodeableConceptR3 as target
uses "http://hl7.org/fhir/3.0/StructureDefinition/Coding" alias CodingR3 as target
imports "http://hl7.org/fhir/StructureMap/*4to3"
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 CodeableConcept2Coding(source src : CodeableConcept, target tgt : CodingR3) extends Element <<types>> {
  src.coding first as vs0 then Coding(vs0, tgt);
}
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/Quantity3to4" = "R3 to R4 Conversions for Quantity"
uses "http://hl7.org/fhir/3.0/StructureDefinition/Quantity" alias QuantityR3 as source
uses "http://hl7.org/fhir/StructureDefinition/Quantity" alias Quantity as target
imports "http://hl7.org/fhir/StructureMap/*3to4"
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;
}
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;
}

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/Money3to4" = "R3 to R4 Conversions for Money"
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/*3to4"
group Money(source src : MoneyR3, target tgt : Money) extends Element <<type+>> {
  src.value -> tgt.value;
  src.code -> tgt.currency;
}
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";
}

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/Range3to4" = "R3 to R4 Conversions for Range"
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/*3to4"
group Range(source src : RangeR3, target tgt : Range) extends Element <<type+>> {
  src.low -> tgt.low;
  src.high -> tgt.high;
}
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/3.0/StructureDefinition/Range" alias RangeR3 as target
imports "http://hl7.org/fhir/StructureMap/*4to3"
group Range(source src : Range, target tgt : RangeR3) extends Element <<type+>> {
  src.low -> tgt.low;
  src.high -> tgt.high;
}

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/Ratio3to4" = "R3 to R4 Conversions for Ratio"
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/*3to4"
group Ratio(source src : RatioR3, target tgt : Ratio) extends Element <<type+>> {
  src.numerator -> tgt.numerator;
  src.denominator -> tgt.denominator;
}
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/3.0/StructureDefinition/Ratio" alias RatioR3 as target
imports "http://hl7.org/fhir/StructureMap/*4to3"
group Ratio(source src : Ratio, target tgt : RatioR3) extends Element <<type+>> {
  src.numerator -> tgt.numerator;
  src.denominator -> tgt.denominator;
}

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/Period3to4" = "R3 to R4 Conversions for Period"
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/*3to4"
group Period(source src : PeriodR3, target tgt : Period) extends Element <<type+>> {
  src.start -> tgt.start;
  src.end -> tgt.end;
}
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/3.0/StructureDefinition/Period" alias PeriodR3 as target
imports "http://hl7.org/fhir/StructureMap/*4to3"
group Period(source src : Period, target tgt : PeriodR3) extends Element <<type+>> {
  src.start -> tgt.start;
  src.end -> tgt.end;
}

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/SampledData3to4" = "R3 to R4 Conversions for SampledData"
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/*3to4"
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;
}
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/3.0/StructureDefinition/SampledData" alias SampledDataR3 as target
imports "http://hl7.org/fhir/StructureMap/*4to3"
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;
}

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/HumanName3to4" = "R3 to R4 Conversions for HumanName"
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/*3to4"
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;
}
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/3.0/StructureDefinition/HumanName" alias HumanNameR3 as target
imports "http://hl7.org/fhir/StructureMap/*4to3"
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/Address3to4" = "R3 to R4 Conversions for Address"
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/*3to4"
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;
}
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/3.0/StructureDefinition/Address" alias AddressR3 as target
imports "http://hl7.org/fhir/StructureMap/*4to3"
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;
}

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/ContactPoint3to4" = "R3 to R4 Conversions for ContactPoint"
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/*3to4"
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;
}
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/3.0/StructureDefinition/ContactPoint" alias ContactPointR3 as target
imports "http://hl7.org/fhir/StructureMap/*4to3"
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;
}

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/Timing3to4" = "R3 to R4 Conversions for Timing"
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/*3to4"
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;
}
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;
}
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/3.0/StructureDefinition/Timing" alias TimingR3 as target
imports "http://hl7.org/fhir/StructureMap/*4to3"
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;
}
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;
}

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/Signature3to4" = "R3 to R4 Conversions for Signature"
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/*3to4"
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;
}
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/3.0/StructureDefinition/Signature" alias SignatureR3 as target
imports "http://hl7.org/fhir/StructureMap/*4to3"
group Signature(source src : SignatureR3, target tgt : Signature) 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;
}

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/Annotation3to4" = "R3 to R4 Conversions for Annotation"
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/*3to4"
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 string2Annotation(source src : stringR3, target tgt : Annotation) extends Element <<types>> {
  src -> tgt.text as vt0 then string(src, vt0) "text";
}
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/3.0/StructureDefinition/Annotation" alias AnnotationR3 as target
uses "http://hl7.org/fhir/3.0/StructureDefinition/string" alias StringR3 as target
imports "http://hl7.org/fhir/StructureMap/*4to3"
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;
}
group Annotation2string(source src : Annotation, target tgt : stringR3) extends Element <<types>> {
  src.text as vs0 then string(vs0, tgt);
}