Release 4B Ballot #1

This page is part of the FHIR Specification v4.1.0: R4B Ballot. About the R4B version of FHIR. The current version which supercedes this version is 5.0.0. For a full list of available versions, see the Directory of published versions . Page versions: R4B R4 R3

FHIR Infrastructure Work GroupMaturity Level: N/AStandards Status: Informative

This page provides the detailed descriptions for the data types

Table of Contents

Primitive Types
ElementinstanttimedatedateTimedecimalbooleanintegerstringuribase64BinarycodeidoidunsignedIntpositiveIntmarkdownurlcanonicaluuid
Complex Types
ElementBackboneElementIdentifierHumanNameAddressContactPointTimingQuantitySimpleQuantityAttachmentRangePeriodRatioCodeableConceptCodingSampledDataAgeDistanceDurationCountMoneyMoneyQuantityAnnotationSignatureBackboneElement

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);
}