FHIR © HL7.org  |  Server Home  |  XIG Home  |  XIG Stats  |  Server Source  |  FHIR  

FHIR IG Statistics: StructureMap/FhirToCdaTypes

Packagech.fhir.ig.cda-fhir-maps
Resource TypeStructureMap
IdFhirToCdaTypes
FHIR VersionR4
Sourcehttp://fhir.ch/ig/cda-fhir-maps/http://fhir.ch/ig/cda-fhir-maps/StructureMap-FhirToCdaTypes.html
URLhttp://fhir.ch/ig/cda-fhir-maps/StructureMap/FhirToCdaTypes
Version0.3.0
Statusdraft
Date2022-02-11T11:14:39+01:00
NameFhirToCdaTypes
Realmch
Authorityhl7
DescriptionAdapted 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/
CopyrightCC-BY-SA-4.0

Resources that use this resource

No resources found


Resources that this resource uses

No resources found


Narrative

Note: links and images are rebased to the (stated) source

Generated Narrative

Resource "FhirToCdaTypes" Version "2" Updated "2021-11-03T11:16:56.175+01:00"

url: http://fhir.ch/ig/cda-fhir-maps/StructureMap/FhirToCdaTypes

version: 0.3.0

name: FhirToCdaTypes

status: draft

date: 2022-02-11T11:14:39+01:00

publisher: ahdis

contact: ahdis: http://www.ahdis.ch/

description: 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: CC-BY-SA-4.0

structure

url: Identifier

mode: source

structure

url: II: InstanceIdentifier (V3 Data Type)

mode: target

group

name: Any

typeMode: none

input

name: src

mode: source

input

name: tgt

mode: target

rule

name: extension

Sources

-ContextElementVariableCondition
*srcextensionextension$this.url = 'http://hl7.org/fhir/StructureDefinition/iso21090-nullFlavor'

Targets

-ContextContextTypeElementVariable
*tgtvariablenullFlavornullFlavor

rule

name: nullFlavor

group

name: IdentifierII

extends: Any

typeMode: types

input

name: src

type: Identifier

mode: source

input

name: tgt

type: II

mode: target

rule

name: idAsUuid

Sources

-ContextElementVariableCondition
*srcvaluevaluesrc.system.empty() and src.value.startsWith('urn:uuid:')

target

context: tgt

contextType: variable

element: root

transform: evaluate

Parameters

-Value[x]
*value.substring(9).upper()

rule

name: idAsUuid

Sources

-ContextElementVariableCondition
*srcvaluevaluesrc.system = 'urn:ietf:rfc:3986'

target

context: tgt

contextType: variable

element: root

transform: evaluate

Parameters

-Value[x]
*value.substring(9).upper()

rule

name: system

Sources

-ContextElementVariableCondition
*srcvaluevaluesrc.system.startsWith('urn:oid:')

rule

name: oidident

group

name: IntegerINT

extends: Any

typeMode: types

input

name: src

type: integer

mode: source

input

name: tgt

type: INT

mode: target

rule

name: integer

Sources

-ContextElementVariable
*srcvaluev

target

context: tgt

contextType: variable

element: value

transform: copy

Parameters

-Value[x]
*v

group

name: InstantTS

extends: Any

typeMode: types

documentation: 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: src

type: instant

mode: source

input

name: tgt

type: TS

mode: target

rule

name: copy

Sources

-ContextElementVariable
*srcvaluev

target

context: tgt

contextType: variable

element: value

transform: copy

Parameters

-Value[x]
*v

group

name: DateTimeTS

extends: InstantTS

typeMode: types

input

name: src

type: dateTime

mode: source

input

name: tgt

type: TS

mode: target

group

name: DateTS

extends: InstantTS

typeMode: types

input

name: src

type: date

mode: source

input

name: tgt

type: TS

mode: target

group

name: CodeCS

extends: Any

typeMode: types

input

name: src

type: code

mode: source

input

name: tgt

type: CS

mode: target

rule

name: code

Sources

-ContextElementVariable
*srccodec

target

context: tgt

contextType: variable

element: value

transform: cast

parameter

value: c

parameter

value: string

group

name: CodeCE

extends: CodeCS

typeMode: types

input

name: src

type: code

mode: source

input

name: tgt

type: CE

mode: target

group

name: CodeCD

extends: CodeCS

typeMode: types

input

name: src

type: code

mode: source

input

name: tgt

type: CD

mode: target

group

name: CodingCE

extends: Any

typeMode: types

input

name: src

type: Coding

mode: source

input

name: tgt

type: CE

mode: target

rule

name: code

Sources

-ContextElementVariable
*srccodecode

target

context: tgt

contextType: variable

element: code

transform: copy

Parameters

-Value[x]
*code

rule

name: system

Sources

-ContextElementVariableCondition
*srcsystemsystem$this.startsWith('http:')

target

context: tgt

contextType: variable

element: codeSystem

transform: translate

parameter

value: system

parameter

value: #uri2oid

parameter

value: code

rule

name: system

Sources

-ContextElementVariableCondition
*srcsystemsystem$this.startsWith('urn:oid:')

rule

name: oidident

rule

name: systemName1

Sources

-ContextElementVariableCondition
*srcsystemsystem$this.startsWith('http:')

target

context: tgt

contextType: variable

element: codeSystemName

transform: translate

parameter

value: system

parameter

value: #uri2system

parameter

value: code

rule

name: systemName2

Sources

-ContextElementVariableCondition
*srcsystemsystem$this.startsWith('urn:oid:')

target

context: tgt

contextType: variable

element: codeSystemName

transform: translate

parameter

value: system

parameter

value: #oid2system

parameter

value: code

rule

name: display

Sources

-ContextElementVariable
*srcdisplaydisplay

target

context: tgt

contextType: variable

element: displayName

transform: copy

Parameters

-Value[x]
*display

group

name: CodeableConceptCE

extends: Any

typeMode: types

input

name: src

type: CodeableConcept

mode: source

input

name: tgt

type: CE

mode: target

rule

name: text

Sources

-ContextElementVariable
*srctexttext

target

context: tgt

contextType: variable

element: orginialText

variable: originalText

target

context: originalText

contextType: variable

element: data

transform: copy

Parameters

-Value[x]
*text

rule

name: first

Sources

-ContextElementListModeVariable
*srccodingfirstcoding

Dependents

-NameVariable
*CodingCEcoding, tgt

rule

name: translation

Sources

-ContextElementListModeVariable
*srccodingnot_firstcoding

Targets

-ContextContextTypeElementVariable
*tgtvariabletranslationtranslation

Dependents

-NameVariable
*CodingCEcoding, translation

group

name: AddressAD

extends: Any

typeMode: types

documentation: 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: src

type: Address

mode: source

input

name: tgt

type: AD

mode: target

rule

name: streetAddress

Sources

-ContextElementVariable
*srclinev

target

context: tgt

contextType: variable

element: streetAddressLine

variable: line

target

context: line

contextType: variable

element: data

transform: copy

Parameters

-Value[x]
*v

rule

name: postalCode

Sources

-ContextElementVariable
*srcpostalCodev

target

context: tgt

contextType: variable

element: postalCode

variable: postalCode

target

context: postalCode

contextType: variable

element: data

transform: copy

Parameters

-Value[x]
*v

rule

name: nullFlavor

Sources

-ContextCondition
*src$this.postalCode.exists() = false

target

context: tgt

contextType: variable

element: postalCode

variable: postalCode

target

context: postalCode

contextType: variable

element: nullFlavor

transform: copy

Parameters

-Value[x]
*NI

rule

name: city

Sources

-ContextElementVariable
*srccityv

target

context: tgt

contextType: variable

element: city

variable: city

target

context: city

contextType: variable

element: data

transform: copy

Parameters

-Value[x]
*v

rule

name: nullFlavor

Sources

-ContextCondition
*src$this.city.exists() = false

target

context: tgt

contextType: variable

element: city

variable: city

target

context: city

contextType: variable

element: nullFlavor

transform: copy

Parameters

-Value[x]
*NI

rule

name: state

Sources

-ContextElementVariable
*srcstatev

target

context: tgt

contextType: variable

element: state

variable: state

target

context: state

contextType: variable

element: data

transform: copy

Parameters

-Value[x]
*v

rule

name: district

Sources

-ContextElementVariable
*srcdistrictv

target

context: tgt

contextType: variable

element: county

variable: county

target

context: county

contextType: variable

element: data

transform: copy

Parameters

-Value[x]
*v

rule

name: country

Sources

-ContextElementVariable
*srccountryv

target

context: tgt

contextType: variable

element: country

variable: country

target

context: country

contextType: variable

element: data

transform: copy

Parameters

-Value[x]
*v

rule

name: nullFlavor

Sources

-ContextCondition
*src$this.country.exists() = false

target

context: tgt

contextType: variable

element: country

variable: country

target

context: country

contextType: variable

element: nullFlavor

transform: copy

Parameters

-Value[x]
*NI

rule

name: addressUse

Sources

-ContextElementVariable
*srcusec

target

context: tgt

contextType: variable

element: use

transform: translate

parameter

value: c

parameter

value: #addressUse

parameter

value: code

group

name: ContactPointTEL

extends: Any

typeMode: types

input

name: src

type: ContactPoint

mode: source

input

name: tgt

type: TEL

mode: target

rule

name: value

Sources

-ContextElementVariable
*srcvaluevalue

target

context: tgt

contextType: variable

element: value

transform: evaluate

Parameters

-Value[x]
*iif(%src.system = 'phone', 'tel:', '') + iif(%src.system = 'fax', 'fax:', '') + iif(%src.system = 'email', 'mailto:', '') + iif(%src.system = 'url', 'http:', '') + value

rule

name: use

Sources

-ContextElementVariableCondition
*srcuseuse$this = 'home'

target

context: tgt

contextType: variable

element: use

transform: copy

Parameters

-Value[x]
*HP

rule

name: use

Sources

-ContextElementVariableCondition
*srcuseuse$this = 'work'

target

context: tgt

contextType: variable

element: use

transform: copy

Parameters

-Value[x]
*WP

rule

name: use

Sources

-ContextElementVariableCondition
*srcuseuse$this = 'old'

target

context: tgt

contextType: variable

element: use

transform: copy

Parameters

-Value[x]
*BAD

rule

name: use

Sources

-ContextElementVariableCondition
*srcuseuse$this = 'temp'

target

context: tgt

contextType: variable

element: use

transform: copy

Parameters

-Value[x]
*TMP

rule

name: use

Sources

-ContextElementVariableCondition
*srcuseuse$this = 'mobile'

target

context: tgt

contextType: variable

element: use

transform: copy

Parameters

-Value[x]
*MC

group

name: HumanNameEN

extends: Any

typeMode: types

input

name: src

type: HumanName

mode: source

input

name: tgt

type: EN

mode: target

rule

name: family

Sources

-ContextElementVariable
*srcfamilyv

target

context: tgt

contextType: variable

element: family

variable: family

target

context: family

contextType: variable

element: data

transform: copy

Parameters

-Value[x]
*v

rule

name: given

Sources

-ContextElementVariable
*srcgivenv

target

context: tgt

contextType: variable

element: given

variable: given

target

context: given

contextType: variable

element: data

transform: copy

Parameters

-Value[x]
*v

rule

name: prefix

Sources

-ContextElementVariable
*srcprefixv

target

context: tgt

contextType: variable

element: prefix

variable: prefix

target

context: prefix

contextType: variable

element: data

transform: copy

Parameters

-Value[x]
*v

rule

name: suffix

Sources

-ContextElementVariable
*srcsuffixv

target

context: tgt

contextType: variable

element: suffix

variable: suffix

target

context: suffix

contextType: variable

element: data

transform: copy

Parameters

-Value[x]
*v

group

name: QuantityPQ

extends: Any

typeMode: types

input

name: src

type: Quantity

mode: source

input

name: tgt

type: PQ

mode: target

rule

name: code

Sources

-ContextElementVariable
*srccodecode

target

context: tgt

contextType: variable

element: unit

transform: copy

Parameters

-Value[x]
*code

rule

name: value

Sources

-ContextElementVariable
*srcvaluevalue

target

context: tgt

contextType: variable

element: value

transform: copy

Parameters

-Value[x]
*value

group

name: RatioRTOPQPQ

extends: Any

typeMode: types

input

name: src

type: Ratio

mode: source

input

name: tgt

type: RTO_PQ_PQ

mode: target

rule

name: numerator

Sources

-ContextElementVariable
*srcnumeratornumerator

Targets

-ContextContextTypeElementVariable
*tgtvariablenumeratortargetNumerator

Dependents

-NameVariable
*QuantityPQnumerator, targetNumerator

rule

name: denominator

Sources

-ContextElementVariable
*srcdenominatordenominator

Targets

-ContextContextTypeElementVariable
*tgtvariabledenominatortargetDenominator

Dependents

-NameVariable
*QuantityPQdenominator, targetDenominator

Source

{
  "resourceType": "StructureMap",
  "id": "FhirToCdaTypes",
  "meta": {
    "versionId": "2",
    "lastUpdated": "2021-11-03T11:16:56.175+01:00"
  },
  "text": {
    "status": "generated",
    "div": "<!-- snip (see above) -->"
  },
  "contained": [
    {
      "resourceType": "ConceptMap",
      "id": "uri2oid",
      "status": "draft",
      "group": [
        {
          "source": "http://hl7.org/fhir",
          "target": "http://hl7.org/cda",
          "element": [
            {
              "code": "http://snomed.info/sct",
              "target": [
                {
                  "code": "2.16.840.1.113883.6.96",
                  "equivalence": "equivalent"
                }
              ]
            },
            {
              "code": "http://loinc.org",
              "target": [
                {
                  "code": "2.16.840.1.113883.6.1",
                  "equivalence": "equivalent"
                }
              ]
            },
            {
              "code": "http://hl7.org/fhir/sid/atc",
              "target": [
                {
                  "code": "2.16.840.1.113883.6.73",
                  "equivalence": "equivalent",
                  "comment": "see issue #4"
                }
              ]
            },
            {
              "code": "http://www.whocc.no/atc",
              "target": [
                {
                  "code": "2.16.840.1.113883.6.73",
                  "equivalence": "equivalent"
                }
              ]
            },
            {
              "code": "http://terminology.hl7.org/CodeSystem/v3-substanceAdminSubstitution",
              "target": [
                {
                  "code": "2.16.840.1.113883.5.1070",
                  "equivalence": "equivalent"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "resourceType": "ConceptMap",
      "id": "uri2system",
      "status": "draft",
      "group": [
        {
          "source": "http://hl7.org/fhir",
          "target": "http://hl7.org/cda",
          "element": [
            {
              "code": "http://snomed.info/sct",
              "target": [
                {
                  "code": "SNOMED CT",
                  "equivalence": "equivalent"
                }
              ]
            },
            {
              "code": "http://loinc.org",
              "target": [
                {
                  "code": "LOINC",
                  "equivalence": "equivalent"
                }
              ]
            },
            {
              "code": "http://hl7.org/fhir/sid/atc",
              "target": [
                {
                  "code": "ATC WHO",
                  "equivalence": "equivalent",
                  "comment": "see issue #4"
                }
              ]
            },
            {
              "code": "http://www.whocc.no/atc",
              "target": [
                {
                  "code": "ATC WHO",
                  "equivalence": "equivalent"
                }
              ]
            },
            {
              "code": "http://terminology.hl7.org/CodeSystem/v3-substanceAdminSubstitution",
              "target": [
                {
                  "code": "HL7 Substance Admin Substitution",
                  "equivalence": "equivalent"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "resourceType": "ConceptMap",
      "id": "oid2system",
      "status": "draft",
      "group": [
        {
          "source": "http://hl7.org/fhir",
          "target": "http://hl7.org/cda",
          "element": [
            {
              "code": "urn:oid:2.51.1.1",
              "target": [
                {
                  "code": "GTIN",
                  "equivalence": "equivalent"
                }
              ]
            },
            {
              "code": "urn:oid:1.3.6.1.4.1.19376.1.9.2.1",
              "target": [
                {
                  "code": "IHE Pharmaceutical Advice Status List",
                  "equivalence": "equivalent"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "resourceType": "ConceptMap",
      "id": "addressUse",
      "status": "draft",
      "group": [
        {
          "source": "http://hl7.org/fhir/valueset-address-use.html",
          "target": "http://terminology.hl7.org/ValueSet/v3-AddressUse",
          "element": [
            {
              "code": "home",
              "target": [
                {
                  "code": "H",
                  "equivalence": "equivalent",
                  "comment": "home -> home address"
                }
              ]
            },
            {
              "code": "work",
              "target": [
                {
                  "code": "WP",
                  "equivalence": "equivalent",
                  "comment": "work -> work place"
                }
              ]
            },
            {
              "code": "temp",
              "target": [
                {
                  "code": "TMP",
                  "equivalence": "equivalent",
                  "comment": "Temporary -> temporary address"
                }
              ]
            },
            {
              "code": "old",
              "target": [
                {
                  "code": "OLD",
                  "equivalence": "equivalent",
                  "comment": "Old / Incorrect -> no longer in use, could be also t:\"BAD\" for bad address"
                }
              ]
            }
          ]
        }
      ]
    }
  ],
  "extension": [
    {
      "url": "http://fhir.ch/reference",
      "valueReference": {
        "reference": "#uri2oid"
      }
    },
    {
      "url": "http://fhir.ch/reference",
      "valueReference": {
        "reference": "#uri2system"
      }
    },
    {
      "url": "http://fhir.ch/reference",
      "valueReference": {
        "reference": "#oid2system"
      }
    },
    {
      "url": "http://fhir.ch/reference",
      "valueReference": {
        "reference": "#addressUse"
      }
    }
  ],
  "url": "http://fhir.ch/ig/cda-fhir-maps/StructureMap/FhirToCdaTypes",
  "version": "0.3.0",
  "name": "FhirToCdaTypes",
  "status": "draft",
  "date": "2022-02-11T11:14:39+01:00",
  "publisher": "ahdis",
  "contact": [
    {
      "name": "ahdis",
      "telecom": [
        {
          "system": "url",
          "value": "http://www.ahdis.ch/"
        }
      ]
    }
  ],
  "description": "Adapted from https://github.com/HL7/ccda-to-fhir/tree/master/mappings\r\nCDA:  http://build.fhir.org/ig/ahdis/cda-core-2.0/branches/master/index.html\r\nFHIR: http://hl7.org/fhir/r4/",
  "copyright": "CC-BY-SA-4.0",
  "structure": [
    {
      "url": "http://hl7.org/fhir/StructureDefinition/Identifier",
      "mode": "source"
    },
    {
      "url": "http://hl7.org/fhir/cda/StructureDefinition/II",
      "mode": "target"
    }
  ],
  "group": [
    {
      "name": "Any",
      "typeMode": "none",
      "input": [
        {
          "name": "src",
          "mode": "source"
        },
        {
          "name": "tgt",
          "mode": "target"
        }
      ],
      "rule": [
        {
          "name": "extension",
          "source": [
            {
              "context": "src",
              "element": "extension",
              "variable": "extension",
              "condition": "$this.url = 'http://hl7.org/fhir/StructureDefinition/iso21090-nullFlavor'"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "nullFlavor",
              "variable": "nullFlavor"
            }
          ],
          "rule": [
            {
              "name": "nullFlavor",
              "source": [
                {
                  "context": "extension",
                  "element": "valueCode",
                  "variable": "valueCode"
                }
              ],
              "rule": [
                {
                  "name": "value",
                  "source": [
                    {
                      "context": "valueCode",
                      "element": "value",
                      "variable": "v"
                    }
                  ],
                  "target": [
                    {
                      "context": "nullFlavor",
                      "contextType": "variable",
                      "element": "value",
                      "transform": "cast",
                      "parameter": [
                        {
                          "valueId": "v"
                        },
                        {
                          "valueString": "string"
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "IdentifierII",
      "extends": "Any",
      "typeMode": "types",
      "input": [
        {
          "name": "src",
          "type": "Identifier",
          "mode": "source"
        },
        {
          "name": "tgt",
          "type": "II",
          "mode": "target"
        }
      ],
      "rule": [
        {
          "name": "idAsUuid",
          "source": [
            {
              "context": "src",
              "element": "value",
              "variable": "value",
              "condition": "src.system.empty() and src.value.startsWith('urn:uuid:')"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "root",
              "transform": "evaluate",
              "parameter": [
                {
                  "valueString": "value.substring(9).upper()"
                }
              ]
            }
          ]
        },
        {
          "name": "idAsUuid",
          "source": [
            {
              "context": "src",
              "element": "value",
              "variable": "value",
              "condition": "src.system = 'urn:ietf:rfc:3986'"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "root",
              "transform": "evaluate",
              "parameter": [
                {
                  "valueString": "value.substring(9).upper()"
                }
              ]
            }
          ]
        },
        {
          "name": "system",
          "source": [
            {
              "context": "src",
              "element": "value",
              "variable": "value",
              "condition": "src.system.startsWith('urn:oid:')"
            }
          ],
          "rule": [
            {
              "name": "oidident",
              "source": [
                {
                  "context": "src",
                  "element": "system",
                  "variable": "system"
                }
              ],
              "target": [
                {
                  "context": "tgt",
                  "contextType": "variable",
                  "element": "root",
                  "transform": "evaluate",
                  "parameter": [
                    {
                      "valueString": "system.substring(8)"
                    }
                  ]
                },
                {
                  "context": "tgt",
                  "contextType": "variable",
                  "element": "extension",
                  "transform": "copy",
                  "parameter": [
                    {
                      "valueId": "value"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "IntegerINT",
      "extends": "Any",
      "typeMode": "types",
      "input": [
        {
          "name": "src",
          "type": "integer",
          "mode": "source"
        },
        {
          "name": "tgt",
          "type": "INT",
          "mode": "target"
        }
      ],
      "rule": [
        {
          "name": "integer",
          "source": [
            {
              "context": "src",
              "element": "value",
              "variable": "v"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "value",
              "transform": "copy",
              "parameter": [
                {
                  "valueId": "v"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "InstantTS",
      "extends": "Any",
      "typeMode": "types",
      "documentation": "group Identifier(source src : Identifier, target tgt : II) extends Any <<types>> {\r\nsrc.system as system then {\r\nsrc.value as value then {\r\nvalue.value as v where system.value = 'urn:ietf:rfc:3986' -> tgt.root = cast(v, 'string') \"noExtension\";\r\nsystem.value as v where system.value != 'urn:ietf:rfc:3986' -> tgt.root = v then {\r\nvalue.value as val -> tgt.extension = cast(val, 'string') \"extension\";\r\n} \"withExtension\";\r\n} \"rootValue\";\r\n} \"root\";\r\nsrc.value as value -> tgt.root = '123' \"test\";\r\nsrc -> tgt.root = '123' \"test\";\r\nsrc.assigner as a then {\r\na.display as display then {\r\ndisplay.value as val -> tgt.assigningAuthorityName = cast(val, 'string');\r\n} \"display\";\r\n} \"assigner\";\r\nsrc.extension as ext where ext.url = 'http://hl7.org/fhir/cdaStructureDefinition/extension-displayable' -> tgt.displayable as displayable then {\r\next.value as v -> displayable.value = cast(v, 'string');\r\n} \"displayable\";\r\n}",
      "input": [
        {
          "name": "src",
          "type": "instant",
          "mode": "source"
        },
        {
          "name": "tgt",
          "type": "TS",
          "mode": "target"
        }
      ],
      "rule": [
        {
          "name": "copy",
          "source": [
            {
              "context": "src",
              "element": "value",
              "variable": "v"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "value",
              "transform": "copy",
              "parameter": [
                {
                  "valueId": "v"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "DateTimeTS",
      "extends": "InstantTS",
      "typeMode": "types",
      "input": [
        {
          "name": "src",
          "type": "dateTime",
          "mode": "source"
        },
        {
          "name": "tgt",
          "type": "TS",
          "mode": "target"
        }
      ]
    },
    {
      "name": "DateTS",
      "extends": "InstantTS",
      "typeMode": "types",
      "input": [
        {
          "name": "src",
          "type": "date",
          "mode": "source"
        },
        {
          "name": "tgt",
          "type": "TS",
          "mode": "target"
        }
      ]
    },
    {
      "name": "CodeCS",
      "extends": "Any",
      "typeMode": "types",
      "input": [
        {
          "name": "src",
          "type": "code",
          "mode": "source"
        },
        {
          "name": "tgt",
          "type": "CS",
          "mode": "target"
        }
      ],
      "rule": [
        {
          "name": "code",
          "source": [
            {
              "context": "src",
              "element": "code",
              "variable": "c"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "value",
              "transform": "cast",
              "parameter": [
                {
                  "valueId": "c"
                },
                {
                  "valueString": "string"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "CodeCE",
      "extends": "CodeCS",
      "typeMode": "types",
      "input": [
        {
          "name": "src",
          "type": "code",
          "mode": "source"
        },
        {
          "name": "tgt",
          "type": "CE",
          "mode": "target"
        }
      ]
    },
    {
      "name": "CodeCD",
      "extends": "CodeCS",
      "typeMode": "types",
      "input": [
        {
          "name": "src",
          "type": "code",
          "mode": "source"
        },
        {
          "name": "tgt",
          "type": "CD",
          "mode": "target"
        }
      ]
    },
    {
      "name": "CodingCE",
      "extends": "Any",
      "typeMode": "types",
      "input": [
        {
          "name": "src",
          "type": "Coding",
          "mode": "source"
        },
        {
          "name": "tgt",
          "type": "CE",
          "mode": "target"
        }
      ],
      "rule": [
        {
          "name": "code",
          "source": [
            {
              "context": "src",
              "element": "code",
              "variable": "code"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "code",
              "transform": "copy",
              "parameter": [
                {
                  "valueId": "code"
                }
              ]
            }
          ]
        },
        {
          "name": "system",
          "source": [
            {
              "context": "src",
              "element": "system",
              "variable": "system",
              "condition": "$this.startsWith('http:')"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "codeSystem",
              "transform": "translate",
              "parameter": [
                {
                  "valueId": "system"
                },
                {
                  "valueString": "#uri2oid"
                },
                {
                  "valueString": "code"
                }
              ]
            }
          ]
        },
        {
          "name": "system",
          "source": [
            {
              "context": "src",
              "element": "system",
              "variable": "system",
              "condition": "$this.startsWith('urn:oid:')"
            }
          ],
          "rule": [
            {
              "name": "oidident",
              "source": [
                {
                  "context": "src",
                  "element": "system",
                  "variable": "system"
                }
              ],
              "target": [
                {
                  "context": "tgt",
                  "contextType": "variable",
                  "element": "codeSystem",
                  "transform": "evaluate",
                  "parameter": [
                    {
                      "valueString": "system.substring(8)"
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "name": "systemName1",
          "source": [
            {
              "context": "src",
              "element": "system",
              "variable": "system",
              "condition": "$this.startsWith('http:')"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "codeSystemName",
              "transform": "translate",
              "parameter": [
                {
                  "valueId": "system"
                },
                {
                  "valueString": "#uri2system"
                },
                {
                  "valueString": "code"
                }
              ]
            }
          ]
        },
        {
          "name": "systemName2",
          "source": [
            {
              "context": "src",
              "element": "system",
              "variable": "system",
              "condition": "$this.startsWith('urn:oid:')"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "codeSystemName",
              "transform": "translate",
              "parameter": [
                {
                  "valueId": "system"
                },
                {
                  "valueString": "#oid2system"
                },
                {
                  "valueString": "code"
                }
              ]
            }
          ]
        },
        {
          "name": "display",
          "source": [
            {
              "context": "src",
              "element": "display",
              "variable": "display"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "displayName",
              "transform": "copy",
              "parameter": [
                {
                  "valueId": "display"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "CodeableConceptCE",
      "extends": "Any",
      "typeMode": "types",
      "input": [
        {
          "name": "src",
          "type": "CodeableConcept",
          "mode": "source"
        },
        {
          "name": "tgt",
          "type": "CE",
          "mode": "target"
        }
      ],
      "rule": [
        {
          "name": "text",
          "source": [
            {
              "context": "src",
              "element": "text",
              "variable": "text"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "orginialText",
              "variable": "originalText"
            },
            {
              "context": "originalText",
              "contextType": "variable",
              "element": "data",
              "transform": "copy",
              "parameter": [
                {
                  "valueId": "text"
                }
              ]
            }
          ]
        },
        {
          "name": "first",
          "source": [
            {
              "context": "src",
              "element": "coding",
              "listMode": "first",
              "variable": "coding"
            }
          ],
          "dependent": [
            {
              "name": "CodingCE",
              "variable": [
                "coding",
                "tgt"
              ]
            }
          ]
        },
        {
          "name": "translation",
          "source": [
            {
              "context": "src",
              "element": "coding",
              "listMode": "not_first",
              "variable": "coding"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "translation",
              "variable": "translation"
            }
          ],
          "dependent": [
            {
              "name": "CodingCE",
              "variable": [
                "coding",
                "translation"
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "AddressAD",
      "extends": "Any",
      "typeMode": "types",
      "documentation": "group CECodeableConcept(source src : CE, target tgt : CodeableConcept) extends Any <<types>> {\r\nsrc.originalText -> tgt.text;\r\nsrc -> tgt.coding as coding then {\r\nsrc.code as code -> coding.code = cast(code, 'string');\r\nsrc.codeSystem as system -> coding.system = translate(system, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri');\r\nsrc.displayName as display -> coding.display = cast(display, 'string');\r\n} \"code\";\r\nsrc.translation as translation -> tgt.coding as coding then {\r\ntranslation.code as code -> coding.code = cast(code, 'string');\r\ntranslation.codeSystem as system -> coding.system = translate(system, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri');\r\ntranslation.displayName as display -> coding.display = cast(display, 'string');\r\n} \"translation\";\r\n}\r\ngroup CSCodeableConcept(source src : CS, target tgt : CodeableConcept) extends CECodeableConcept <<types>> {\r\n}\r\ngroup CDCodeableConcept(source src : CD, target tgt : CodeableConcept) extends CECodeableConcept <<types>> {\r\n}",
      "input": [
        {
          "name": "src",
          "type": "Address",
          "mode": "source"
        },
        {
          "name": "tgt",
          "type": "AD",
          "mode": "target"
        }
      ],
      "rule": [
        {
          "name": "streetAddress",
          "source": [
            {
              "context": "src",
              "element": "line",
              "variable": "v"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "streetAddressLine",
              "variable": "line"
            },
            {
              "context": "line",
              "contextType": "variable",
              "element": "data",
              "transform": "copy",
              "parameter": [
                {
                  "valueId": "v"
                }
              ]
            }
          ]
        },
        {
          "name": "postalCode",
          "source": [
            {
              "context": "src",
              "element": "postalCode",
              "variable": "v"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "postalCode",
              "variable": "postalCode"
            },
            {
              "context": "postalCode",
              "contextType": "variable",
              "element": "data",
              "transform": "copy",
              "parameter": [
                {
                  "valueId": "v"
                }
              ]
            }
          ]
        },
        {
          "name": "nullFlavor",
          "source": [
            {
              "context": "src",
              "condition": "$this.postalCode.exists() = false"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "postalCode",
              "variable": "postalCode"
            },
            {
              "context": "postalCode",
              "contextType": "variable",
              "element": "nullFlavor",
              "transform": "copy",
              "parameter": [
                {
                  "valueString": "NI"
                }
              ]
            }
          ]
        },
        {
          "name": "city",
          "source": [
            {
              "context": "src",
              "element": "city",
              "variable": "v"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "city",
              "variable": "city"
            },
            {
              "context": "city",
              "contextType": "variable",
              "element": "data",
              "transform": "copy",
              "parameter": [
                {
                  "valueId": "v"
                }
              ]
            }
          ]
        },
        {
          "name": "nullFlavor",
          "source": [
            {
              "context": "src",
              "condition": "$this.city.exists() = false"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "city",
              "variable": "city"
            },
            {
              "context": "city",
              "contextType": "variable",
              "element": "nullFlavor",
              "transform": "copy",
              "parameter": [
                {
                  "valueString": "NI"
                }
              ]
            }
          ]
        },
        {
          "name": "state",
          "source": [
            {
              "context": "src",
              "element": "state",
              "variable": "v"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "state",
              "variable": "state"
            },
            {
              "context": "state",
              "contextType": "variable",
              "element": "data",
              "transform": "copy",
              "parameter": [
                {
                  "valueId": "v"
                }
              ]
            }
          ]
        },
        {
          "name": "district",
          "source": [
            {
              "context": "src",
              "element": "district",
              "variable": "v"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "county",
              "variable": "county"
            },
            {
              "context": "county",
              "contextType": "variable",
              "element": "data",
              "transform": "copy",
              "parameter": [
                {
                  "valueId": "v"
                }
              ]
            }
          ]
        },
        {
          "name": "country",
          "source": [
            {
              "context": "src",
              "element": "country",
              "variable": "v"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "country",
              "variable": "country"
            },
            {
              "context": "country",
              "contextType": "variable",
              "element": "data",
              "transform": "copy",
              "parameter": [
                {
                  "valueId": "v"
                }
              ]
            }
          ]
        },
        {
          "name": "nullFlavor",
          "source": [
            {
              "context": "src",
              "condition": "$this.country.exists() = false"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "country",
              "variable": "country"
            },
            {
              "context": "country",
              "contextType": "variable",
              "element": "nullFlavor",
              "transform": "copy",
              "parameter": [
                {
                  "valueString": "NI"
                }
              ]
            }
          ]
        },
        {
          "name": "addressUse",
          "source": [
            {
              "context": "src",
              "element": "use",
              "variable": "c"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "use",
              "transform": "translate",
              "parameter": [
                {
                  "valueId": "c"
                },
                {
                  "valueString": "#addressUse"
                },
                {
                  "valueString": "code"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "ContactPointTEL",
      "extends": "Any",
      "typeMode": "types",
      "input": [
        {
          "name": "src",
          "type": "ContactPoint",
          "mode": "source"
        },
        {
          "name": "tgt",
          "type": "TEL",
          "mode": "target"
        }
      ],
      "rule": [
        {
          "name": "value",
          "source": [
            {
              "context": "src",
              "element": "value",
              "variable": "value"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "value",
              "transform": "evaluate",
              "parameter": [
                {
                  "valueString": "iif(%src.system = 'phone', 'tel:', '') + iif(%src.system = 'fax', 'fax:', '') + iif(%src.system = 'email', 'mailto:', '') + iif(%src.system = 'url', 'http:', '') + value"
                }
              ]
            }
          ]
        },
        {
          "name": "use",
          "source": [
            {
              "context": "src",
              "element": "use",
              "variable": "use",
              "condition": "$this = 'home'"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "use",
              "transform": "copy",
              "parameter": [
                {
                  "valueString": "HP"
                }
              ]
            }
          ]
        },
        {
          "name": "use",
          "source": [
            {
              "context": "src",
              "element": "use",
              "variable": "use",
              "condition": "$this = 'work'"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "use",
              "transform": "copy",
              "parameter": [
                {
                  "valueString": "WP"
                }
              ]
            }
          ]
        },
        {
          "name": "use",
          "source": [
            {
              "context": "src",
              "element": "use",
              "variable": "use",
              "condition": "$this = 'old'"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "use",
              "transform": "copy",
              "parameter": [
                {
                  "valueString": "BAD"
                }
              ]
            }
          ]
        },
        {
          "name": "use",
          "source": [
            {
              "context": "src",
              "element": "use",
              "variable": "use",
              "condition": "$this = 'temp'"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "use",
              "transform": "copy",
              "parameter": [
                {
                  "valueString": "TMP"
                }
              ]
            }
          ]
        },
        {
          "name": "use",
          "source": [
            {
              "context": "src",
              "element": "use",
              "variable": "use",
              "condition": "$this = 'mobile'"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "use",
              "transform": "copy",
              "parameter": [
                {
                  "valueString": "MC"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "HumanNameEN",
      "extends": "Any",
      "typeMode": "types",
      "input": [
        {
          "name": "src",
          "type": "HumanName",
          "mode": "source"
        },
        {
          "name": "tgt",
          "type": "EN",
          "mode": "target"
        }
      ],
      "rule": [
        {
          "name": "family",
          "source": [
            {
              "context": "src",
              "element": "family",
              "variable": "v"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "family",
              "variable": "family"
            },
            {
              "context": "family",
              "contextType": "variable",
              "element": "data",
              "transform": "copy",
              "parameter": [
                {
                  "valueId": "v"
                }
              ]
            }
          ]
        },
        {
          "name": "given",
          "source": [
            {
              "context": "src",
              "element": "given",
              "variable": "v"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "given",
              "variable": "given"
            },
            {
              "context": "given",
              "contextType": "variable",
              "element": "data",
              "transform": "copy",
              "parameter": [
                {
                  "valueId": "v"
                }
              ]
            }
          ]
        },
        {
          "name": "prefix",
          "source": [
            {
              "context": "src",
              "element": "prefix",
              "variable": "v"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "prefix",
              "variable": "prefix"
            },
            {
              "context": "prefix",
              "contextType": "variable",
              "element": "data",
              "transform": "copy",
              "parameter": [
                {
                  "valueId": "v"
                }
              ]
            }
          ]
        },
        {
          "name": "suffix",
          "source": [
            {
              "context": "src",
              "element": "suffix",
              "variable": "v"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "suffix",
              "variable": "suffix"
            },
            {
              "context": "suffix",
              "contextType": "variable",
              "element": "data",
              "transform": "copy",
              "parameter": [
                {
                  "valueId": "v"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "QuantityPQ",
      "extends": "Any",
      "typeMode": "types",
      "input": [
        {
          "name": "src",
          "type": "Quantity",
          "mode": "source"
        },
        {
          "name": "tgt",
          "type": "PQ",
          "mode": "target"
        }
      ],
      "rule": [
        {
          "name": "code",
          "source": [
            {
              "context": "src",
              "element": "code",
              "variable": "code"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "unit",
              "transform": "copy",
              "parameter": [
                {
                  "valueId": "code"
                }
              ]
            }
          ]
        },
        {
          "name": "value",
          "source": [
            {
              "context": "src",
              "element": "value",
              "variable": "value"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "value",
              "transform": "copy",
              "parameter": [
                {
                  "valueId": "value"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "RatioRTOPQPQ",
      "extends": "Any",
      "typeMode": "types",
      "input": [
        {
          "name": "src",
          "type": "Ratio",
          "mode": "source"
        },
        {
          "name": "tgt",
          "type": "RTO_PQ_PQ",
          "mode": "target"
        }
      ],
      "rule": [
        {
          "name": "numerator",
          "source": [
            {
              "context": "src",
              "element": "numerator",
              "variable": "numerator"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "numerator",
              "variable": "targetNumerator"
            }
          ],
          "dependent": [
            {
              "name": "QuantityPQ",
              "variable": [
                "numerator",
                "targetNumerator"
              ]
            }
          ]
        },
        {
          "name": "denominator",
          "source": [
            {
              "context": "src",
              "element": "denominator",
              "variable": "denominator"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "denominator",
              "variable": "targetDenominator"
            }
          ],
          "dependent": [
            {
              "name": "QuantityPQ",
              "variable": [
                "denominator",
                "targetDenominator"
              ]
            }
          ]
        }
      ]
    }
  ]
}