CDA-FHIR-Maps (R4)
0.1.0 - Draft Standard for Trial Use
This page is part of the CDA-FHIR-Maps (R4) (v0.1.0: DSTU 1) based on FHIR R4. . For a full list of available versions, see the Directory of published versions 
Source view
<StructureMap xmlns="http://hl7.org/fhir">
<id value="FhirToCdaTypes"/>
<text>
<status value="generated"/>
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>map "http://fhir.ch/ig/cda-fhir-maps/StructureMap/FhirToCdaTypes" = "FhirToCdaTypes"
// Adapted from https://github.com/HL7/ccda-to-fhir/tree/master/mappings
// CDA: http://build.fhir.org/ig/ahdis/cda-core-2.0/branches/master/index.html
// FHIR: http://hl7.org/fhir/r4/
conceptmap "uri2oid" {
prefix s = "http://hl7.org/fhir"
prefix t = "http://hl7.org/cda"
s:"http://snomed.info/sct" == t:"2.16.840.1.113883.6.96"
s:"http://loinc.org" == t:"2.16.840.1.113883.6.1"
s:"http://hl7.org/fhir/sid/atc" == t:"2.16.840.1.113883.6.73"
s:"http://www.whocc.no/atc" == t:"2.16.840.1.113883.6.73"
s:"http://terminology.hl7.org/CodeSystem/v3-substanceAdminSubstitution" == t:"2.16.840.1.113883.5.1070"
}
conceptmap "uri2system" {
prefix s = "http://hl7.org/fhir"
prefix t = "http://hl7.org/cda"
s:"http://snomed.info/sct" == t:"SNOMED CT"
s:"http://loinc.org" == t:LOINC
s:"http://hl7.org/fhir/sid/atc" == t:"ATC WHO"
s:"http://www.whocc.no/atc" == t:"ATC WHO"
s:"http://terminology.hl7.org/CodeSystem/v3-substanceAdminSubstitution" == t:"HL7 Substance Admin Substitution"
}
conceptmap "oid2system" {
prefix s = "http://hl7.org/fhir"
prefix t = "http://hl7.org/cda"
s:"urn:oid:2.51.1.1" == t:GTIN
s:"urn:oid:1.3.6.1.4.1.19376.1.9.2.1" == t:"IHE Pharmaceutical Advice Status List"
}
conceptmap "addressUse" {
prefix s = "http://hl7.org/fhir/valueset-address-use.html"
prefix t = "http://terminology.hl7.org/ValueSet/v3-AddressUse"
s:home == t:H
s:work == t:WP
s:temp == t:TMP
s:old == t:OLD
}
uses "http://hl7.org/fhir/StructureDefinition/Identifier" as source
uses "http://hl7.org/fhir/cda/StructureDefinition/II" as target
group Any(source src, target tgt) {
src.extension as extension where $this.url = 'http://hl7.org/fhir/StructureDefinition/iso21090-nullFlavor' -> tgt.nullFlavor as nullFlavor then {
extension.valueCode as valueCode then {
valueCode.value as v -> nullFlavor.value = cast(v, 'string');
} "nullFlavor";
};
}
group IdentifierII(source src : Identifier, target tgt : II) extends Any <<types>> {
src.value as value where src.system.empty() and src.value.startsWith('urn:uuid:') -> tgt.root = (value.substring(9).upper()) "idAsUuid";
src.value as value where src.system = 'urn:ietf:rfc:3986' -> tgt.root = (value.substring(9).upper()) "idAsUuid";
src.value as value where src.system.startsWith('urn:oid:') then {
src.system as system -> tgt.root = (system.substring(8)), tgt.extension = value "oidident";
} "system";
}
group IntegerINT(source src : integer, target tgt : INT) extends Any <<types>> {
src.value as v -> tgt.value = v "integer";
}
// group Identifier(source src : Identifier, target tgt : II) extends Any <<types>> {
// src.system as system then {
// src.value as value then {
// value.value as v where system.value = 'urn:ietf:rfc:3986' -> tgt.root = cast(v, 'string') "noExtension";
// system.value as v where system.value != 'urn:ietf:rfc:3986' -> tgt.root = v then {
// value.value as val -> tgt.extension = cast(val, 'string') "extension";
// } "withExtension";
// } "rootValue";
// } "root";
// src.value as value -> tgt.root = '123' "test";
// src -> tgt.root = '123' "test";
// src.assigner as a then {
// a.display as display then {
// display.value as val -> tgt.assigningAuthorityName = cast(val, 'string');
// } "display";
// } "assigner";
// src.extension as ext where ext.url = 'http://hl7.org/fhir/cdaStructureDefinition/extension-displayable' -> tgt.displayable as displayable then {
// ext.value as v -> displayable.value = cast(v, 'string');
// } "displayable";
// }
group InstantTS(source src : instant, target tgt : TS) extends Any <<types>> {
src.value as v -> tgt.value = v "copy";
}
group DateTimeTS(source src : dateTime, target tgt : TS) extends InstantTS <<types>> {
}
group DateTS(source src : date, target tgt : TS) extends InstantTS <<types>> {
}
group CodeCS(source src : code, target tgt : CS) extends Any <<types>> {
src.code as c -> tgt.value = cast(c, 'string');
}
group CodeCE(source src : code, target tgt : CE) extends CodeCS <<types>> {
}
group CodeCD(source src : code, target tgt : CD) extends CodeCS <<types>> {
}
group CodingCE(source src : Coding, target tgt : CE) extends Any <<types>> {
src.code as code -> tgt.code = code;
src.system as system where $this.startsWith('http:') -> tgt.codeSystem = translate(system, '#uri2oid', 'code');
src.system as system where $this.startsWith('urn:oid:') then {
src.system as system -> tgt.codeSystem = (system.substring(8)) "oidident";
};
src.system as system where $this.startsWith('http:') -> tgt.codeSystemName = translate(system, '#uri2system', 'code') "systemName1";
src.system as system where $this.startsWith('urn:oid:') -> tgt.codeSystemName = translate(system, '#oid2system', 'code') "systemName2";
src.display as display -> tgt.displayName = display;
}
group CodeableConceptCE(source src : CodeableConcept, target tgt : CE) extends Any <<types>> {
src.text as text -> tgt.orginialText as originalText, originalText.data = text;
src.coding first as coding then CodingCE(coding, tgt) "first";
src.coding not_first as coding -> tgt.translation as translation then CodingCE(coding, translation) "translation";
}
// group CECodeableConcept(source src : CE, target tgt : CodeableConcept) extends Any <<types>> {
// src.originalText -> tgt.text;
// src -> tgt.coding as coding then {
// src.code as code -> coding.code = cast(code, 'string');
// src.codeSystem as system -> coding.system = translate(system, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri');
// src.displayName as display -> coding.display = cast(display, 'string');
// } "code";
// src.translation as translation -> tgt.coding as coding then {
// translation.code as code -> coding.code = cast(code, 'string');
// translation.codeSystem as system -> coding.system = translate(system, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri');
// translation.displayName as display -> coding.display = cast(display, 'string');
// } "translation";
// }
// group CSCodeableConcept(source src : CS, target tgt : CodeableConcept) extends CECodeableConcept <<types>> {
// }
// group CDCodeableConcept(source src : CD, target tgt : CodeableConcept) extends CECodeableConcept <<types>> {
// }
group AddressAD(source src : Address, target tgt : AD) extends Any <<types>> {
src.line as v -> tgt.streetAddressLine as line, line.data = v "streetAddress";
src.postalCode as v -> tgt.postalCode as postalCode, postalCode.data = v;
src.city as v -> tgt.city as city, city.data = v;
src.state as v -> tgt.state as state, state.data = v;
src.district as v -> tgt.county as county, county.data = v;
src.country as v -> tgt.country as country, country.data = v;
src.use as c -> tgt.use = translate(c, '#addressUse', 'code') "addressUse";
}
group ContactPointTEL(source src : ContactPoint, target tgt : TEL) extends Any <<types>> {
src.value as value -> tgt.value = (iif(%src.system = 'phone', 'tel:', '') + iif(%src.system = 'fax', 'fax:', '') + iif(%src.system = 'email', 'mailto:', '') + iif(%src.system = 'url', 'http:', '') + value);
src.use as use where $this = 'home' -> tgt.use = 'HP';
src.use as use where $this = 'work' -> tgt.use = 'WP';
// not complete see below
src.use as use where $this = 'old' -> tgt.use = 'BAD';
src.use as use where $this = 'temp' -> tgt.use = 'TMP';
src.use as use where $this = 'mobile' -> tgt.use = 'MC';
}
group HumanNameEN(source src : HumanName, target tgt : EN) extends Any <<types>> {
src.family as v -> tgt.family as family, family.data = v;
src.given as v -> tgt.given as given, given.data = v;
src.prefix as v -> tgt.prefix as prefix, prefix.data = v;
src.suffix as v -> tgt.suffix as suffix, suffix.data = v;
}
group QuantityPQ(source src : Quantity, target tgt : PQ) extends Any <<types>> {
// src.code as code -> tgt.unit = code;
src.unit as unit -> tgt.unit = unit;
src.value as value -> tgt.value = value;
}
group RatioRTOPQPQ(source src : Ratio, target tgt : RTO_PQ_PQ) extends Any <<types>> {
src.numerator as numerator -> tgt.numerator as targetNumerator then QuantityPQ(numerator, targetNumerator);
src.denominator as denominator -> tgt.denominator as targetDenominator then QuantityPQ(denominator, targetDenominator);
}
</pre>
</div>
</text>
<contained>
<ConceptMap>
<id value="uri2oid"/>
<status value="draft"/>
<group>
<source value="http://hl7.org/fhir"/>
<target value="http://hl7.org/cda"/>
<element>
<code value="http://snomed.info/sct"/>
<target>
<code value="2.16.840.1.113883.6.96"/>
<equivalence value="equivalent"/>
</target>
</element>
<element>
<code value="http://loinc.org"/>
<target>
<code value="2.16.840.1.113883.6.1"/>
<equivalence value="equivalent"/>
</target>
</element>
<element>
<code value="http://hl7.org/fhir/sid/atc"/>
<target>
<code value="2.16.840.1.113883.6.73"/>
<equivalence value="equivalent"/>
<comment value="see issue #4"/>
</target>
</element>
<element>
<code value="http://www.whocc.no/atc"/>
<target>
<code value="2.16.840.1.113883.6.73"/>
<equivalence value="equivalent"/>
</target>
</element>
<element>
<code
value="http://terminology.hl7.org/CodeSystem/v3-substanceAdminSubstitution"/>
<target>
<code value="2.16.840.1.113883.5.1070"/>
<equivalence value="equivalent"/>
</target>
</element>
</group>
</ConceptMap>
</contained>
<contained>
<ConceptMap>
<id value="uri2system"/>
<status value="draft"/>
<group>
<source value="http://hl7.org/fhir"/>
<target value="http://hl7.org/cda"/>
<element>
<code value="http://snomed.info/sct"/>
<target>
<code value="SNOMED CT"/>
<equivalence value="equivalent"/>
</target>
</element>
<element>
<code value="http://loinc.org"/>
<target>
<code value="LOINC"/>
<equivalence value="equivalent"/>
</target>
</element>
<element>
<code value="http://hl7.org/fhir/sid/atc"/>
<target>
<code value="ATC WHO"/>
<equivalence value="equivalent"/>
<comment value="see issue #4"/>
</target>
</element>
<element>
<code value="http://www.whocc.no/atc"/>
<target>
<code value="ATC WHO"/>
<equivalence value="equivalent"/>
</target>
</element>
<element>
<code
value="http://terminology.hl7.org/CodeSystem/v3-substanceAdminSubstitution"/>
<target>
<code value="HL7 Substance Admin Substitution"/>
<equivalence value="equivalent"/>
</target>
</element>
</group>
</ConceptMap>
</contained>
<contained>
<ConceptMap>
<id value="oid2system"/>
<status value="draft"/>
<group>
<source value="http://hl7.org/fhir"/>
<target value="http://hl7.org/cda"/>
<element>
<code value="urn:oid:2.51.1.1"/>
<target>
<code value="GTIN"/>
<equivalence value="equivalent"/>
</target>
</element>
<element>
<code value="urn:oid:1.3.6.1.4.1.19376.1.9.2.1"/>
<target>
<code value="IHE Pharmaceutical Advice Status List"/>
<equivalence value="equivalent"/>
</target>
</element>
</group>
</ConceptMap>
</contained>
<contained>
<ConceptMap>
<id value="addressUse"/>
<status value="draft"/>
<group>
<source value="http://hl7.org/fhir/valueset-address-use.html"/>
<target value="http://terminology.hl7.org/ValueSet/v3-AddressUse"/>
<element>
<code value="home"/>
<target>
<code value="H"/>
<equivalence value="equivalent"/>
<comment value="home -> home address"/>
</target>
</element>
<element>
<code value="work"/>
<target>
<code value="WP"/>
<equivalence value="equivalent"/>
<comment value="work -> work place"/>
</target>
</element>
<element>
<code value="temp"/>
<target>
<code value="TMP"/>
<equivalence value="equivalent"/>
<comment value="Temporary -> temporary address"/>
</target>
</element>
<element>
<code value="old"/>
<target>
<code value="OLD"/>
<equivalence value="equivalent"/>
<comment
value="Old / Incorrect -> no longer in use, could be also t:"BAD" for bad address"/>
</target>
</element>
</group>
</ConceptMap>
</contained>
<extension url="http://fhir.ch/reference">
<valueReference>
<reference value="#uri2oid"/>
</valueReference>
</extension>
<extension url="http://fhir.ch/reference">
<valueReference>
<reference value="#uri2system"/>
</valueReference>
</extension>
<extension url="http://fhir.ch/reference">
<valueReference>
<reference value="#oid2system"/>
</valueReference>
</extension>
<extension url="http://fhir.ch/reference">
<valueReference>
<reference value="#addressUse"/>
</valueReference>
</extension>
<url value="http://fhir.ch/ig/cda-fhir-maps/StructureMap/FhirToCdaTypes"/>
<version value="0.1.0"/>
<name value="FhirToCdaTypes"/>
<status value="draft"/>
<date value="2020-12-09T15:16:13+01:00"/>
<publisher value="ahdis"/>
<contact>
<name value="ahdis"/>
<telecom>
<system value="url"/>
<value value="http://www.ahdis.ch/"/>
</telecom>
</contact>
<description
value="Adapted from https://github.com/HL7/ccda-to-fhir/tree/master/mappings CDA: http://build.fhir.org/ig/ahdis/cda-core-2.0/branches/master/index.html FHIR: http://hl7.org/fhir/r4/"/>
<copyright value="CC-BY-SA-4.0"/>
<structure>
<url value="http://hl7.org/fhir/StructureDefinition/Identifier"/>
<mode value="source"/>
</structure>
<structure>
<url value="http://hl7.org/fhir/cda/StructureDefinition/II"/>
<mode value="target"/>
</structure>
<group>
<name value="Any"/>
<typeMode value="none"/>
<input>
<name value="src"/>
<mode value="source"/>
</input>
<input>
<name value="tgt"/>
<mode value="target"/>
</input>
<rule>
<name value="extension"/>
<source>
<context value="src"/>
<element value="extension"/>
<variable value="extension"/>
<condition
value="$this.url = 'http://hl7.org/fhir/StructureDefinition/iso21090-nullFlavor'"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="nullFlavor"/>
<variable value="nullFlavor"/>
</target>
<rule>
<name value="nullFlavor"/>
<source>
<context value="extension"/>
<element value="valueCode"/>
<variable value="valueCode"/>
</source>
<rule>
<name value="value"/>
<source>
<context value="valueCode"/>
<element value="value"/>
<variable value="v"/>
</source>
<target>
<context value="nullFlavor"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="cast"/>
<parameter>
<valueId value="v"/>
</parameter>
<parameter>
<valueString value="string"/>
</parameter>
</target>
</rule>
</rule>
</rule>
</group>
<group>
<name value="IdentifierII"/>
<extends value="Any"/>
<typeMode value="types"/>
<input>
<name value="src"/>
<type value="Identifier"/>
<mode value="source"/>
</input>
<input>
<name value="tgt"/>
<type value="II"/>
<mode value="target"/>
</input>
<rule>
<name value="idAsUuid"/>
<source>
<context value="src"/>
<element value="value"/>
<variable value="value"/>
<condition
value="src.system.empty() and src.value.startsWith('urn:uuid:')"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="root"/>
<transform value="evaluate"/>
<parameter>
<valueString value="value.substring(9).upper()"/>
</parameter>
</target>
</rule>
<rule>
<name value="idAsUuid"/>
<source>
<context value="src"/>
<element value="value"/>
<variable value="value"/>
<condition value="src.system = 'urn:ietf:rfc:3986'"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="root"/>
<transform value="evaluate"/>
<parameter>
<valueString value="value.substring(9).upper()"/>
</parameter>
</target>
</rule>
<rule>
<name value="system"/>
<source>
<context value="src"/>
<element value="value"/>
<variable value="value"/>
<condition value="src.system.startsWith('urn:oid:')"/>
</source>
<rule>
<name value="oidident"/>
<source>
<context value="src"/>
<element value="system"/>
<variable value="system"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="root"/>
<transform value="evaluate"/>
<parameter>
<valueString value="system.substring(8)"/>
</parameter>
</target>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="extension"/>
<transform value="copy"/>
<parameter>
<valueId value="value"/>
</parameter>
</target>
</rule>
</rule>
</group>
<group>
<name value="IntegerINT"/>
<extends value="Any"/>
<typeMode value="types"/>
<input>
<name value="src"/>
<type value="integer"/>
<mode value="source"/>
</input>
<input>
<name value="tgt"/>
<type value="INT"/>
<mode value="target"/>
</input>
<rule>
<name value="integer"/>
<source>
<context value="src"/>
<element value="value"/>
<variable value="v"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="copy"/>
<parameter>
<valueId value="v"/>
</parameter>
</target>
</rule>
</group>
<group>
<name value="InstantTS"/>
<extends value="Any"/>
<typeMode value="types"/>
<documentation
value="group Identifier(source src : Identifier, target tgt : II) extends Any <<types>> { src.system as system then { src.value as value then { value.value as v where system.value = 'urn:ietf:rfc:3986' -> tgt.root = cast(v, 'string') "noExtension"; system.value as v where system.value != 'urn:ietf:rfc:3986' -> tgt.root = v then { value.value as val -> tgt.extension = cast(val, 'string') "extension"; } "withExtension"; } "rootValue"; } "root"; src.value as value -> tgt.root = '123' "test"; src -> tgt.root = '123' "test"; src.assigner as a then { a.display as display then { display.value as val -> tgt.assigningAuthorityName = cast(val, 'string'); } "display"; } "assigner"; src.extension as ext where ext.url = 'http://hl7.org/fhir/cdaStructureDefinition/extension-displayable' -> tgt.displayable as displayable then { ext.value as v -> displayable.value = cast(v, 'string'); } "displayable"; }"/>
<input>
<name value="src"/>
<type value="instant"/>
<mode value="source"/>
</input>
<input>
<name value="tgt"/>
<type value="TS"/>
<mode value="target"/>
</input>
<rule>
<name value="copy"/>
<source>
<context value="src"/>
<element value="value"/>
<variable value="v"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="copy"/>
<parameter>
<valueId value="v"/>
</parameter>
</target>
</rule>
</group>
<group>
<name value="DateTimeTS"/>
<extends value="InstantTS"/>
<typeMode value="types"/>
<input>
<name value="src"/>
<type value="dateTime"/>
<mode value="source"/>
</input>
<input>
<name value="tgt"/>
<type value="TS"/>
<mode value="target"/>
</input>
</group>
<group>
<name value="DateTS"/>
<extends value="InstantTS"/>
<typeMode value="types"/>
<input>
<name value="src"/>
<type value="date"/>
<mode value="source"/>
</input>
<input>
<name value="tgt"/>
<type value="TS"/>
<mode value="target"/>
</input>
</group>
<group>
<name value="CodeCS"/>
<extends value="Any"/>
<typeMode value="types"/>
<input>
<name value="src"/>
<type value="code"/>
<mode value="source"/>
</input>
<input>
<name value="tgt"/>
<type value="CS"/>
<mode value="target"/>
</input>
<rule>
<name value="code"/>
<source>
<context value="src"/>
<element value="code"/>
<variable value="c"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="cast"/>
<parameter>
<valueId value="c"/>
</parameter>
<parameter>
<valueString value="string"/>
</parameter>
</target>
</rule>
</group>
<group>
<name value="CodeCE"/>
<extends value="CodeCS"/>
<typeMode value="types"/>
<input>
<name value="src"/>
<type value="code"/>
<mode value="source"/>
</input>
<input>
<name value="tgt"/>
<type value="CE"/>
<mode value="target"/>
</input>
</group>
<group>
<name value="CodeCD"/>
<extends value="CodeCS"/>
<typeMode value="types"/>
<input>
<name value="src"/>
<type value="code"/>
<mode value="source"/>
</input>
<input>
<name value="tgt"/>
<type value="CD"/>
<mode value="target"/>
</input>
</group>
<group>
<name value="CodingCE"/>
<extends value="Any"/>
<typeMode value="types"/>
<input>
<name value="src"/>
<type value="Coding"/>
<mode value="source"/>
</input>
<input>
<name value="tgt"/>
<type value="CE"/>
<mode value="target"/>
</input>
<rule>
<name value="code"/>
<source>
<context value="src"/>
<element value="code"/>
<variable value="code"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="code"/>
<transform value="copy"/>
<parameter>
<valueId value="code"/>
</parameter>
</target>
</rule>
<rule>
<name value="system"/>
<source>
<context value="src"/>
<element value="system"/>
<variable value="system"/>
<condition value="$this.startsWith('http:')"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="codeSystem"/>
<transform value="translate"/>
<parameter>
<valueId value="system"/>
</parameter>
<parameter>
<valueString value="#uri2oid"/>
</parameter>
<parameter>
<valueString value="code"/>
</parameter>
</target>
</rule>
<rule>
<name value="system"/>
<source>
<context value="src"/>
<element value="system"/>
<variable value="system"/>
<condition value="$this.startsWith('urn:oid:')"/>
</source>
<rule>
<name value="oidident"/>
<source>
<context value="src"/>
<element value="system"/>
<variable value="system"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="codeSystem"/>
<transform value="evaluate"/>
<parameter>
<valueString value="system.substring(8)"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="systemName1"/>
<source>
<context value="src"/>
<element value="system"/>
<variable value="system"/>
<condition value="$this.startsWith('http:')"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="codeSystemName"/>
<transform value="translate"/>
<parameter>
<valueId value="system"/>
</parameter>
<parameter>
<valueString value="#uri2system"/>
</parameter>
<parameter>
<valueString value="code"/>
</parameter>
</target>
</rule>
<rule>
<name value="systemName2"/>
<source>
<context value="src"/>
<element value="system"/>
<variable value="system"/>
<condition value="$this.startsWith('urn:oid:')"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="codeSystemName"/>
<transform value="translate"/>
<parameter>
<valueId value="system"/>
</parameter>
<parameter>
<valueString value="#oid2system"/>
</parameter>
<parameter>
<valueString value="code"/>
</parameter>
</target>
</rule>
<rule>
<name value="display"/>
<source>
<context value="src"/>
<element value="display"/>
<variable value="display"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="displayName"/>
<transform value="copy"/>
<parameter>
<valueId value="display"/>
</parameter>
</target>
</rule>
</group>
<group>
<name value="CodeableConceptCE"/>
<extends value="Any"/>
<typeMode value="types"/>
<input>
<name value="src"/>
<type value="CodeableConcept"/>
<mode value="source"/>
</input>
<input>
<name value="tgt"/>
<type value="CE"/>
<mode value="target"/>
</input>
<rule>
<name value="text"/>
<source>
<context value="src"/>
<element value="text"/>
<variable value="text"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="orginialText"/>
<variable value="originalText"/>
</target>
<target>
<context value="originalText"/>
<contextType value="variable"/>
<element value="data"/>
<transform value="copy"/>
<parameter>
<valueId value="text"/>
</parameter>
</target>
</rule>
<rule>
<name value="first"/>
<source>
<context value="src"/>
<element value="coding"/>
<listMode value="first"/>
<variable value="coding"/>
</source>
<dependent>
<name value="CodingCE"/>
<variable value="coding"/>
<variable value="tgt"/>
</dependent>
</rule>
<rule>
<name value="translation"/>
<source>
<context value="src"/>
<element value="coding"/>
<listMode value="not_first"/>
<variable value="coding"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="translation"/>
<variable value="translation"/>
</target>
<dependent>
<name value="CodingCE"/>
<variable value="coding"/>
<variable value="translation"/>
</dependent>
</rule>
</group>
<group>
<name value="AddressAD"/>
<extends value="Any"/>
<typeMode value="types"/>
<documentation
value="group CECodeableConcept(source src : CE, target tgt : CodeableConcept) extends Any <<types>> { src.originalText -> tgt.text; src -> tgt.coding as coding then { src.code as code -> coding.code = cast(code, 'string'); src.codeSystem as system -> coding.system = translate(system, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri'); src.displayName as display -> coding.display = cast(display, 'string'); } "code"; src.translation as translation -> tgt.coding as coding then { translation.code as code -> coding.code = cast(code, 'string'); translation.codeSystem as system -> coding.system = translate(system, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri'); translation.displayName as display -> coding.display = cast(display, 'string'); } "translation"; } group CSCodeableConcept(source src : CS, target tgt : CodeableConcept) extends CECodeableConcept <<types>> { } group CDCodeableConcept(source src : CD, target tgt : CodeableConcept) extends CECodeableConcept <<types>> { }"/>
<input>
<name value="src"/>
<type value="Address"/>
<mode value="source"/>
</input>
<input>
<name value="tgt"/>
<type value="AD"/>
<mode value="target"/>
</input>
<rule>
<name value="streetAddress"/>
<source>
<context value="src"/>
<element value="line"/>
<variable value="v"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="streetAddressLine"/>
<variable value="line"/>
</target>
<target>
<context value="line"/>
<contextType value="variable"/>
<element value="data"/>
<transform value="copy"/>
<parameter>
<valueId value="v"/>
</parameter>
</target>
</rule>
<rule>
<name value="postalCode"/>
<source>
<context value="src"/>
<element value="postalCode"/>
<variable value="v"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="postalCode"/>
<variable value="postalCode"/>
</target>
<target>
<context value="postalCode"/>
<contextType value="variable"/>
<element value="data"/>
<transform value="copy"/>
<parameter>
<valueId value="v"/>
</parameter>
</target>
</rule>
<rule>
<name value="city"/>
<source>
<context value="src"/>
<element value="city"/>
<variable value="v"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="city"/>
<variable value="city"/>
</target>
<target>
<context value="city"/>
<contextType value="variable"/>
<element value="data"/>
<transform value="copy"/>
<parameter>
<valueId value="v"/>
</parameter>
</target>
</rule>
<rule>
<name value="state"/>
<source>
<context value="src"/>
<element value="state"/>
<variable value="v"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="state"/>
<variable value="state"/>
</target>
<target>
<context value="state"/>
<contextType value="variable"/>
<element value="data"/>
<transform value="copy"/>
<parameter>
<valueId value="v"/>
</parameter>
</target>
</rule>
<rule>
<name value="district"/>
<source>
<context value="src"/>
<element value="district"/>
<variable value="v"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="county"/>
<variable value="county"/>
</target>
<target>
<context value="county"/>
<contextType value="variable"/>
<element value="data"/>
<transform value="copy"/>
<parameter>
<valueId value="v"/>
</parameter>
</target>
</rule>
<rule>
<name value="country"/>
<source>
<context value="src"/>
<element value="country"/>
<variable value="v"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="country"/>
<variable value="country"/>
</target>
<target>
<context value="country"/>
<contextType value="variable"/>
<element value="data"/>
<transform value="copy"/>
<parameter>
<valueId value="v"/>
</parameter>
</target>
</rule>
<rule>
<name value="addressUse"/>
<source>
<context value="src"/>
<element value="use"/>
<variable value="c"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="use"/>
<transform value="translate"/>
<parameter>
<valueId value="c"/>
</parameter>
<parameter>
<valueString value="#addressUse"/>
</parameter>
<parameter>
<valueString value="code"/>
</parameter>
</target>
</rule>
</group>
<group>
<name value="ContactPointTEL"/>
<extends value="Any"/>
<typeMode value="types"/>
<input>
<name value="src"/>
<type value="ContactPoint"/>
<mode value="source"/>
</input>
<input>
<name value="tgt"/>
<type value="TEL"/>
<mode value="target"/>
</input>
<rule>
<name value="value"/>
<source>
<context value="src"/>
<element value="value"/>
<variable value="value"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="evaluate"/>
<parameter>
<valueString
value="iif(%src.system = 'phone', 'tel:', '') + iif(%src.system = 'fax', 'fax:', '') + iif(%src.system = 'email', 'mailto:', '') + iif(%src.system = 'url', 'http:', '') + value"/>
</parameter>
</target>
</rule>
<rule>
<name value="use"/>
<source>
<context value="src"/>
<element value="use"/>
<variable value="use"/>
<condition value="$this = 'home'"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="use"/>
<transform value="copy"/>
<parameter>
<valueString value="HP"/>
</parameter>
</target>
</rule>
<rule>
<name value="use"/>
<source>
<context value="src"/>
<element value="use"/>
<variable value="use"/>
<condition value="$this = 'work'"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="use"/>
<transform value="copy"/>
<parameter>
<valueString value="WP"/>
</parameter>
</target>
</rule>
<rule>
<name value="use"/>
<source>
<context value="src"/>
<element value="use"/>
<variable value="use"/>
<condition value="$this = 'old'"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="use"/>
<transform value="copy"/>
<parameter>
<valueString value="BAD"/>
</parameter>
</target>
<documentation value="not complete see below"/>
</rule>
<rule>
<name value="use"/>
<source>
<context value="src"/>
<element value="use"/>
<variable value="use"/>
<condition value="$this = 'temp'"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="use"/>
<transform value="copy"/>
<parameter>
<valueString value="TMP"/>
</parameter>
</target>
</rule>
<rule>
<name value="use"/>
<source>
<context value="src"/>
<element value="use"/>
<variable value="use"/>
<condition value="$this = 'mobile'"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="use"/>
<transform value="copy"/>
<parameter>
<valueString value="MC"/>
</parameter>
</target>
</rule>
</group>
<group>
<name value="HumanNameEN"/>
<extends value="Any"/>
<typeMode value="types"/>
<input>
<name value="src"/>
<type value="HumanName"/>
<mode value="source"/>
</input>
<input>
<name value="tgt"/>
<type value="EN"/>
<mode value="target"/>
</input>
<rule>
<name value="family"/>
<source>
<context value="src"/>
<element value="family"/>
<variable value="v"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="family"/>
<variable value="family"/>
</target>
<target>
<context value="family"/>
<contextType value="variable"/>
<element value="data"/>
<transform value="copy"/>
<parameter>
<valueId value="v"/>
</parameter>
</target>
</rule>
<rule>
<name value="given"/>
<source>
<context value="src"/>
<element value="given"/>
<variable value="v"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="given"/>
<variable value="given"/>
</target>
<target>
<context value="given"/>
<contextType value="variable"/>
<element value="data"/>
<transform value="copy"/>
<parameter>
<valueId value="v"/>
</parameter>
</target>
</rule>
<rule>
<name value="prefix"/>
<source>
<context value="src"/>
<element value="prefix"/>
<variable value="v"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="prefix"/>
<variable value="prefix"/>
</target>
<target>
<context value="prefix"/>
<contextType value="variable"/>
<element value="data"/>
<transform value="copy"/>
<parameter>
<valueId value="v"/>
</parameter>
</target>
</rule>
<rule>
<name value="suffix"/>
<source>
<context value="src"/>
<element value="suffix"/>
<variable value="v"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="suffix"/>
<variable value="suffix"/>
</target>
<target>
<context value="suffix"/>
<contextType value="variable"/>
<element value="data"/>
<transform value="copy"/>
<parameter>
<valueId value="v"/>
</parameter>
</target>
</rule>
</group>
<group>
<name value="QuantityPQ"/>
<extends value="Any"/>
<typeMode value="types"/>
<input>
<name value="src"/>
<type value="Quantity"/>
<mode value="source"/>
</input>
<input>
<name value="tgt"/>
<type value="PQ"/>
<mode value="target"/>
</input>
<rule>
<name value="unit"/>
<source>
<context value="src"/>
<element value="unit"/>
<variable value="unit"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="unit"/>
<transform value="copy"/>
<parameter>
<valueId value="unit"/>
</parameter>
</target>
<documentation value="src.code as code -> tgt.unit = code;"/>
</rule>
<rule>
<name value="value"/>
<source>
<context value="src"/>
<element value="value"/>
<variable value="value"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="copy"/>
<parameter>
<valueId value="value"/>
</parameter>
</target>
</rule>
</group>
<group>
<name value="RatioRTOPQPQ"/>
<extends value="Any"/>
<typeMode value="types"/>
<input>
<name value="src"/>
<type value="Ratio"/>
<mode value="source"/>
</input>
<input>
<name value="tgt"/>
<type value="RTO_PQ_PQ"/>
<mode value="target"/>
</input>
<rule>
<name value="numerator"/>
<source>
<context value="src"/>
<element value="numerator"/>
<variable value="numerator"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="numerator"/>
<variable value="targetNumerator"/>
</target>
<dependent>
<name value="QuantityPQ"/>
<variable value="numerator"/>
<variable value="targetNumerator"/>
</dependent>
</rule>
<rule>
<name value="denominator"/>
<source>
<context value="src"/>
<element value="denominator"/>
<variable value="denominator"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="denominator"/>
<variable value="targetDenominator"/>
</target>
<dependent>
<name value="QuantityPQ"/>
<variable value="denominator"/>
<variable value="targetDenominator"/>
</dependent>
</rule>
</group>
</StructureMap>