CH ALIS (R4)
0.2.0 - CI build

Publish Box goes here

: Alis43ToBundle - JSON Representation

Raw json | Download


{
  "resourceType" : "StructureMap",
  "id" : "Alis43ToBundle",
  "text" : {
    "status" : "generated",
    "div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\">\n      <pre>map &quot;http://fhir.ch/ig/ch-alis/StructureMap/Alis43ToBundle&quot; = &quot;Alis43ToBundle&quot;\n\n// Convert ALIS43 XML to a Bundle according to the CH ALIS implmementation guide,\n// 2020-12-03 by Oliver Egger, copyright ahdis ag, Apache License,\n// FHIR: http://hl7.org/fhir/r4/.\n// ISSUE7: what are the URL's oid's we have to define.\n\nconceptmap &quot;serviceMap&quot; {\n  prefix s = &quot;http://fhir.ch/ig/ch-alis&quot;\n  prefix t = &quot;http://hl7.org/fhir&quot;\n\n  s:TARMED == t:&quot;urn:oid:2.16.756.5.30.1.129.1.4&quot;\n  s:ICD10 == t:&quot;urn:oid:2.16.756.5.30.1.126.3.2&quot;\n}\n\nconceptmap &quot;gender&quot; {\n  prefix s = &quot;http://fhir.ch/ig/ch-alis&quot;\n  prefix t = &quot;http://hl7.org/fhir/ValueSet/administrative-gender&quot;\n\n  s:M == t:male\n  s:F == t:female\n}\n\nuses &quot;http://fhir.ch/ig/ch-alis/StructureDefinition/Header&quot; alias Header as source\nuses &quot;http://fhir.ch/ig/ch-alis/StructureDefinition/Visit&quot; alias Visit as source\nuses &quot;http://fhir.ch/ig/ch-alis/StructureDefinition/Service&quot; alias Service as source\nuses &quot;http://fhir.ch/ig/ch-alis/StructureDefinition/PersonV40&quot; alias PersonV40 as source\nuses &quot;http://fhir.ch/ig/ch-alis/StructureDefinition/ParameterV40&quot; alias ParameterV40 as source\nuses &quot;http://fhir.ch/ig/ch-alis/StructureDefinition/DiagGroup&quot; alias DiagGroup as source\nuses &quot;http://hl7.org/fhir/StructureDefinition/Bundle&quot; alias Bundle as target\nuses &quot;http://hl7.org/fhir/StructureDefinition/ChargeItem&quot; alias ChargeItem as target\nuses &quot;http://hl7.org/fhir/StructureDefinition/Extension&quot; alias Extension as target\nuses &quot;http://hl7.org/fhir/StructureDefinition/MessageHeader&quot; alias MessageHeader as target\nuses &quot;http://hl7.org/fhir/StructureDefinition/BackboneElement&quot; alias BackboneElement as target\nuses &quot;http://hl7.org/fhir/StructureDefinition/HumanName&quot; alias HumanName as target\nuses &quot;http://hl7.org/fhir/StructureDefinition/Condition&quot; alias Condition as target\nuses &quot;http://hl7.org/fhir/StructureDefinition/Encounter&quot; alias Encounter as target\n\ngroup Alis43ToBundle(source header : Header, target bundle : Bundle) {\n  header -&gt;  bundle.entry as e,  e.resource = create('MessageHeader') as messageHeader,  messageHeader.id = uuid() as uuid,  e.fullUrl = append('urn:uuid:', uuid),  bundle.entry as e2,  e2.resource = create('Bundle') as transactionBundle,  transactionBundle.id = uuid() as uuid2,  e2.fullUrl = append('urn:uuid:', uuid2),  messageHeader.focus = create('Reference') as reference,  reference.type = 'Bundle',  reference.reference = append('urn:uuid:', uuid2) then {\n    header then Alis43ToMessageHeader(header, messageHeader) &quot;messageHeader&quot;;\n    header then Alis43ToBundleTransaction(header, transactionBundle) &quot;bundleTransaction&quot;;\n  } &quot;bundle&quot;;\n  header -&gt; bundle.type = 'message' &quot;type&quot;;\n  header.FileCreationDate as fileCreationDate then {\n    fileCreationDate as date -&gt; bundle.timestamp = date &quot;date&quot;;\n  };\n}\n\ngroup Alis43ToMessageHeader(source header : Header, target messageHeader : MessageHeader) {\n  // ISSUE1: should be link to a MessageDefinition or a code?\n  header -&gt;  messageHeader.event = create('uri') as value,  value.value = 'http://fhir.ch/ig/ch-alis-43' &quot;eventUri&quot;;\n  // ISSUE2: MessageControlID cannot be id of entry, needs to be either fullUrl oder uuid, need to map this to an identifier\n  header -&gt; messageHeader.source as source then {\n    header.SoftwareReleaseNumber as version -&gt; source.version = (%version.data) &quot;version&quot;;\n    // ISSUE3: &quot; : &quot;urn:SendingApplication:SendingFacility:SendingServiceCode&quot; -&gt; add urn: in example/docu\n    header -&gt; source.endpoint = ('urn:' + %header.SendingApplication.data + ':' + %header.SendingFacility.data + ':' + %header.SendingServiceCode.data) &quot;endpoint&quot;;\n  } &quot;source&quot;;\n  header -&gt; messageHeader.destination as destination then {\n    // ISSUE4: &quot; : &quot;urn:ReceivingApplication, ReceivingFacility, ReceivingServiceCode&quot; -&gt; add urn: in example/docu\n    header -&gt; destination.endpoint = ('urn:' + %header.ReceivingApplication.data + ':' + %header.ReceivingFacility.data + ':' + %header.ReceivingServiceCode.data) &quot;endpoint&quot;;\n  } &quot;destination&quot;;\n}\n\ngroup Alis43ToBundleTransaction(source header : Header, target transactionBundle : Bundle) {\n  header -&gt; transactionBundle.type = 'transaction' &quot;transaction&quot;;\n  header.Visit as visit then {\n    visit.Service as service -&gt;  transactionBundle.entry as e,  e.resource = create('ChargeItem') as chargeItem then ServiceToChargeItem(service, visit, chargeItem, e) &quot;ServiceToChargeItem&quot;;\n  };\n}\n\ngroup ServiceToChargeItem(source service : Service, source visit : Visit, target chargeItem : ChargeItem, target entry) {\n  service.ItemNumber as itemNumber -&gt;  chargeItem.id = (itemNumber.data.lower()) as uuid,  entry.fullUrl = append('urn:uuid:', uuid) &quot;11 Laufnummer (ItemNumber)&quot;;\n  service -&gt;  chargeItem.contained = create('Patient') as patient,  patient.id = 'pat' as containedid,  chargeItem.subject = create('Reference') as ref,  ref.reference = ('#' + %containedid) then ServiceToPatient(service, visit, patient) &quot;patient&quot;;\n  visit -&gt;  chargeItem.contained = create('Encounter') as encounter,  encounter.id = 'enc' as containedid,  chargeItem.context = create('Reference') as ref,  ref.reference = ('#' + %containedid) then VisitToEncounter(visit, encounter) &quot;VisitToEncounter&quot;;\n  visit.DiagGroup as diaggroup -&gt;  chargeItem.contained = create('Condition') as cond,  cond.id = 'cond' as containedid then DiagGroupToCondition(diaggroup, cond) &quot;DiagGroupToCondition&quot;;\n  service where (service.Transaction.exists() = false) -&gt;  entry.request as request,  request.method = 'POST',  request.url = 'ChargeItem' &quot;POSTDEFAULT&quot;;\n  service.Transaction where (service.Transaction = 'insert') -&gt;  entry.request as request,  request.method = 'POST',  request.url = 'ChargeItem' &quot;POST&quot;;\n  service.Transaction where (service.Transaction = 'update') -&gt;  entry.request as request,  request.method = 'PUT',  request.url = 'ChargeItem' &quot;UPDATE&quot;;\n  service.Transaction where (service.Transaction = 'delete') -&gt;  entry.request as request,  request.method = 'DELETE',  request.url = 'ChargeItem' &quot;DELETE&quot;;\n  service.SessionID as sessionID -&gt;  chargeItem.extension as extension,  extension.url = 'http://fhir.ch/ig/ch-alis/StructureDefinition/ch-alis-ext-sessionid',  extension.value = create('string') as value,  value.value = (sessionID.data) &quot;2 Sitzung (SessionID)&quot;;\n  service.OrderID as orderID -&gt;  chargeItem.extension as extension,  extension.url = 'http://fhir.ch/ig/ch-alis/StructureDefinition/ch-alis-ext-orderid',  extension.value = create('string') as value,  value.value = (orderID.data) &quot;3 Auftragsnummer (OrderID)&quot;;\n  service.Form as form -&gt;  chargeItem.extension as extension,  extension.url = 'http://fhir.ch/ig/ch-alis/StructureDefinition/ch-alis-ext-form',  extension.value = create('string') as value,  value.value = (form.data) &quot;7 Formularbezeichnung (Form)&quot;;\n  service.ParameterV40 as parameterV40 -&gt;  chargeItem.extension as extension,  extension.url = 'http://fhir.ch/ig/ch-alis/StructureDefinition/ch-alis-ext-parameterv40' then ParameterV40ToExtension(parameterV40, extension) &quot;4 ParamterV40 (ParameterV40)&quot;;\n  service -&gt; chargeItem.status = 'billable' &quot;billable&quot;;\n  service.RefItemNumber as refItemNumber then {\n    refItemNumber.data as data -&gt;  chargeItem.partOf = create('Reference') as ref,  ref.reference = ('urn:uuid:' + %data.lower()),  ref.type = 'ChargeItem' &quot;12 Referenz zu Hauptleistung (RefItemNumber)&quot;;\n  };\n  service.ServiceItem as serviceItem then {\n    serviceItem.data as data -&gt;  chargeItem.code = create('CodeableConcept') as cc,  cc.coding = create('Coding') as coding,  coding.code = data then {\n      service.ServiceType as serviceType then {\n        serviceType.data as data -&gt; coding.system = translate(data, '#serviceMap', 'code') &quot;5 Katalog (ServiceType)&quot;;\n      } &quot;servicType&quot;;\n    } &quot;6 Tarifposition (ServiceItem)&quot;;\n  } &quot;6 Tarifposition&quot;;\n  service.ServiceDate as serviceData -&gt;  chargeItem.occurrence = create('dateTime') as occurrence,  occurrence.value = (serviceData.data) &quot;1 Leistungsdatum (ServiceDate)&quot;;\n  service.PersonV40 as personV40 -&gt; chargeItem.performer = create('BackboneElement') as performer then PersonV40ToPerformer(personV40, performer) &quot;15 PersonV40 (PersonV40)&quot;;\n  service.ProviderID as providerID -&gt;  chargeItem.performingOrganization = create('Reference') as reference,  reference.display = (providerID.data) &quot;9 Erbringende Organization (ProviderID)&quot;;\n  service.ReferrerID as referrerID -&gt;  chargeItem.costCenter = create('Reference') as reference,  reference.display = (referrerID.data) &quot;4 Auftraggebende Kostenstelle (ReferrerID)&quot;;\n  service.Quantity as quantity -&gt;  chargeItem.quantity = create('Quantity') as q,  q.value as value,  value.value = (quantity.data) &quot;13 Anzahl (Quantity) &quot;;\n  service.EnteredBy as enteredBy -&gt;  chargeItem.enterer = create('Reference') as reference,  reference.display = (enteredBy.data) &quot;10 Erfasser (EnteredBy)&quot;;\n  service.EnteredDateTime as enteredDateTime -&gt;  chargeItem.enteredDate = create('dateTime') as enteredDate,  enteredDate.value = (enteredDateTime.data) &quot;8 Erfassungsdatum (EnteredDateTime)&quot;;\n}\n\ngroup PersonV40ToPerformer(source personV40 : PersonV40, target performer : BackboneElement) {\n  personV40.PersonTyp as personTyp -&gt; performer.function = cc('http://fhir.ch/ig/ch-alis/CodeSystem/ch-alis-persontyp', personTyp) &quot;1 PersonTyp (PersonTyp)&quot;;\n  personV40.PersonID as personId -&gt;  performer.actor = create('Reference') as reference,  reference.display = (personId.data) &quot; PersonID (PersonID)&quot;;\n}\n\ngroup ParameterV40ToExtension(source parameterV40 : ParameterV40, target extension : Extension) {\n  parameterV40.ParamTyp as paramTyp -&gt; extension.extension as extInner then InnerExtensionParamTyp(paramTyp, extInner);\n  parameterV40.ParamValue as paramValue then {\n    paramValue.data as data -&gt; extension.extension as extInner then InnerExtensionParamValue(data, extInner);\n  };\n}\n\ngroup InnerExtensionParamTyp(source src, target ext : Extension) {\n  src -&gt; ext.url = 'ParamTyp' &quot;url&quot;;\n  src -&gt;  ext.value = create('CodeableConcept') as cc,  cc.text as text,  text.value = src &quot;string&quot;;\n}\n\ngroup InnerExtensionParamValue(source src, target ext : Extension) {\n  src -&gt; ext.url = 'ParamValue' &quot;url&quot;;\n  src -&gt;  ext.value = create('string') as string,  string.value = src &quot;string&quot;;\n}\n\ngroup ServiceToPatientName(source visit : Visit, target name : HumanName) {\n  visit.PatientName as patientName then {\n    patientName.data as data -&gt; name.family = data &quot;Name (PatientName) -&quot;;\n  } &quot;patientName&quot;;\n  visit.PatientGivenName as patientGivenName then {\n    patientGivenName.data as data -&gt; name.given = data &quot;Vorname (PatientGivenName) -&quot;;\n  } &quot;patientGivenName&quot;;\n}\n\ngroup ServiceToPatient(source service : Service, source visit : Visit, target patient : Patient) {\n  visit.PatientID as patientID then {\n    patientID.data as patId -&gt;  patient.identifier = create('Identifier') as identifier,  identifier.value as value,  value.value = patId,  identifier.type as type,  type.coding = cc('http://terminology.hl7.org/CodeSystem/v2-0203', 'MR') &quot;PID (PatientID)&quot;;\n  } &quot;patientID&quot;;\n  // &lt;!-- 2.2 Patient.PID (PatientID) --&gt;\n  visit where (visit.PatientName or visit.PatientGivenName) -&gt; patient.name as name then ServiceToPatientName(visit, name) &quot;ServiceToPatient&quot;;\n  visit.PatientGender as gender then {\n    gender.data as v -&gt; patient.gender = translate(v, '#gender', 'code') &quot;gender&quot;;\n  } &quot;Geschlecht (PatientGender)&quot;;\n  visit.PatientBirthDate as birthDate then {\n    birthDate.data as v -&gt; patient.birthDate = v &quot;birthDate&quot;;\n  } &quot;GebDatum (PatientBirthDate)&quot;;\n}\n\ngroup DiagGroupToCondition(source diagGroup : DiagGroup, target cond : Condition) {\n  diagGroup -&gt;  cond.subject = create('Reference') as ref,  ref.reference = '#pat' &quot;containedpatient&quot;;\n  diagGroup.DiagCode as data -&gt;  cond.code = create('CodeableConcept') as cc,  cc.coding = create('Coding') as coding,  coding.code = data then {\n    diagGroup.DiagCatType as diagCatType then {\n      diagCatType.data as data -&gt; coding.system = translate(data, '#serviceMap', 'code') &quot;3 Katalogtyp (DiagCatType)&quot;;\n    } &quot;serviceType&quot;;\n  } &quot;1 Diagnosecode (DiagCode)&quot;;\n}\n\ngroup TerminationToExtension(source visit : Visit, target ext : Extension) {\n  visit.TerminationVisit as visit then {\n    visit.data as data -&gt;  ext.extension as ext1,  ext1.url = 'TerminationVisit',  ext1.value = create('date') as date,  date.value = data &quot;7 Fall Abschluss (TerminationVisit)&quot;;\n  };\n  visit.TerminationReason as visit then {\n    visit.data as data -&gt;  ext.extension as ext1,  ext1.url = 'TerminationReason',  ext1.value = create('string') as string,  string.value = data &quot;8 Fall Abschlussgrund (TerminationReason)&quot;;\n  } &quot;TerminationVisit&quot;;\n}\n\ngroup VisitToEncounter(source visit : Visit, target encounter : Encounter) {\n  visit where (visit.TerminationVisit or visit.TerminationReason) -&gt;  encounter.extension as ext,  ext.url = 'http://fhir.ch/ig/ch-alis/StructureDefinition/ch-alis-ext-termination' then TerminationToExtension(visit, ext) &quot;TerminationToExtension&quot;;\n  visit.VisitNumber as visitNumber then {\n    // ISSUE9: what to do with falldomain? &lt;system value=&quot;http://www.example.ch/fallnummerdomain&quot;/&gt;\n    visitNumber.data as data -&gt;  encounter.identifier = create('Identifier') as identifier,  identifier.value as value,  value.value = data,  identifier.type as type,  type.coding = cc('http://terminology.hl7.org/CodeSystem/v2-0203', 'VN') &quot;1 Fall (VisitNumber)&quot;;\n  } &quot;encounterID&quot;;\n  visit -&gt; encounter.status = 'finished' &quot;Finished&quot;;\n  visit -&gt; encounter.class = cc('http://terminology.hl7.org/CodeSystem/v3-ActCode', 'IMP') &quot;inpatient encounter&quot;;\n  visit -&gt;  encounter.subject = create('Reference') as ref,  ref.reference = '#pat' &quot;subject&quot;;\n  visit.DiagGroup as diaggroup -&gt;  encounter.diagnosis as diag,  diag.condition = create('Reference') as ref,  ref.reference = '#cond' then {\n    diaggroup.DiagType as diagType -&gt;  diag.use as use,  use.text = (%diagType.data) &quot;2 Diagnosetyp (DiagType)&quot;;\n  } &quot;9 DiagnoseGruppe (DiagGroup)&quot;;\n}\n\n</pre>\n    </div>"
  },
  "contained" : [
    {
      "resourceType" : "ConceptMap",
      "id" : "serviceMap",
      "status" : "draft",
      "group" : [
        {
          "source" : "http://fhir.ch/ig/ch-alis",
          "target" : "http://hl7.org/fhir",
          "element" : [
            {
              "code" : "TARMED",
              "target" : [
                {
                  "code" : "urn:oid:2.16.756.5.30.1.129.1.4",
                  "equivalence" : "equivalent"
                }
              ]
            },
            {
              "code" : "ICD10",
              "target" : [
                {
                  "code" : "urn:oid:2.16.756.5.30.1.126.3.2",
                  "equivalence" : "equivalent"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "resourceType" : "ConceptMap",
      "id" : "gender",
      "status" : "draft",
      "group" : [
        {
          "source" : "http://fhir.ch/ig/ch-alis",
          "target" : "http://hl7.org/fhir/ValueSet/administrative-gender",
          "element" : [
            {
              "code" : "M",
              "target" : [
                {
                  "code" : "male",
                  "equivalence" : "equivalent"
                }
              ]
            },
            {
              "code" : "F",
              "target" : [
                {
                  "code" : "female",
                  "equivalence" : "equivalent"
                }
              ]
            }
          ]
        }
      ]
    }
  ],
  "extension" : [
    {
      "url" : "http://fhir.ch/reference",
      "valueReference" : {
        "reference" : "#serviceMap"
      }
    },
    {
      "url" : "http://fhir.ch/reference",
      "valueReference" : {
        "reference" : "#gender"
      }
    }
  ],
  "url" : "http://fhir.ch/ig/ch-alis/StructureMap/Alis43ToBundle",
  "version" : "0.2.0",
  "name" : "Alis43ToBundle",
  "status" : "draft",
  "date" : "2021-02-06T16:28:56+01:00",
  "publisher" : "ALIS-Connect",
  "contact" : [
    {
      "name" : "ALIS-Connect",
      "telecom" : [
        {
          "system" : "url",
          "value" : "https://www.alis-connect.ch/"
        }
      ]
    }
  ],
  "description" : "Convert ALIS43 XML to a Bundle according to the CH ALIS implmementation guide, 2020-12-03 by Oliver Egger, copyright ahdis ag, Apache License, FHIR: http://hl7.org/fhir/r4/. ISSUE7: what are the URL's oid's we have to define.",
  "jurisdiction" : [
    {
      "coding" : [
        {
          "system" : "urn:iso:std:iso:3166",
          "code" : "CH"
        }
      ]
    }
  ],
  "copyright" : "CC-BY-SA-4.0",
  "structure" : [
    {
      "url" : "http://fhir.ch/ig/ch-alis/StructureDefinition/Header",
      "mode" : "source",
      "alias" : "Header"
    },
    {
      "url" : "http://fhir.ch/ig/ch-alis/StructureDefinition/Visit",
      "mode" : "source",
      "alias" : "Visit"
    },
    {
      "url" : "http://fhir.ch/ig/ch-alis/StructureDefinition/Service",
      "mode" : "source",
      "alias" : "Service"
    },
    {
      "url" : "http://fhir.ch/ig/ch-alis/StructureDefinition/PersonV40",
      "mode" : "source",
      "alias" : "PersonV40"
    },
    {
      "url" : "http://fhir.ch/ig/ch-alis/StructureDefinition/ParameterV40",
      "mode" : "source",
      "alias" : "ParameterV40"
    },
    {
      "url" : "http://fhir.ch/ig/ch-alis/StructureDefinition/DiagGroup",
      "mode" : "source",
      "alias" : "DiagGroup"
    },
    {
      "url" : "http://hl7.org/fhir/StructureDefinition/Bundle",
      "mode" : "target",
      "alias" : "Bundle"
    },
    {
      "url" : "http://hl7.org/fhir/StructureDefinition/ChargeItem",
      "mode" : "target",
      "alias" : "ChargeItem"
    },
    {
      "url" : "http://hl7.org/fhir/StructureDefinition/Extension",
      "mode" : "target",
      "alias" : "Extension"
    },
    {
      "url" : "http://hl7.org/fhir/StructureDefinition/MessageHeader",
      "mode" : "target",
      "alias" : "MessageHeader"
    },
    {
      "url" : "http://hl7.org/fhir/StructureDefinition/BackboneElement",
      "mode" : "target",
      "alias" : "BackboneElement"
    },
    {
      "url" : "http://hl7.org/fhir/StructureDefinition/HumanName",
      "mode" : "target",
      "alias" : "HumanName"
    },
    {
      "url" : "http://hl7.org/fhir/StructureDefinition/Condition",
      "mode" : "target",
      "alias" : "Condition"
    },
    {
      "url" : "http://hl7.org/fhir/StructureDefinition/Encounter",
      "mode" : "target",
      "alias" : "Encounter"
    }
  ],
  "group" : [
    {
      "name" : "Alis43ToBundle",
      "typeMode" : "none",
      "input" : [
        {
          "name" : "header",
          "type" : "Header",
          "mode" : "source"
        },
        {
          "name" : "bundle",
          "type" : "Bundle",
          "mode" : "target"
        }
      ],
      "rule" : [
        {
          "name" : "bundle",
          "source" : [
            {
              "context" : "header"
            }
          ],
          "target" : [
            {
              "context" : "bundle",
              "contextType" : "variable",
              "element" : "entry",
              "variable" : "e"
            },
            {
              "context" : "e",
              "contextType" : "variable",
              "element" : "resource",
              "variable" : "messageHeader",
              "transform" : "create",
              "parameter" : [
                {
                  "valueString" : "MessageHeader"
                }
              ]
            },
            {
              "context" : "messageHeader",
              "contextType" : "variable",
              "element" : "id",
              "variable" : "uuid",
              "transform" : "uuid"
            },
            {
              "context" : "e",
              "contextType" : "variable",
              "element" : "fullUrl",
              "transform" : "append",
              "parameter" : [
                {
                  "valueString" : "urn:uuid:"
                },
                {
                  "valueId" : "uuid"
                }
              ]
            },
            {
              "context" : "bundle",
              "contextType" : "variable",
              "element" : "entry",
              "variable" : "e2"
            },
            {
              "context" : "e2",
              "contextType" : "variable",
              "element" : "resource",
              "variable" : "transactionBundle",
              "transform" : "create",
              "parameter" : [
                {
                  "valueString" : "Bundle"
                }
              ]
            },
            {
              "context" : "transactionBundle",
              "contextType" : "variable",
              "element" : "id",
              "variable" : "uuid2",
              "transform" : "uuid"
            },
            {
              "context" : "e2",
              "contextType" : "variable",
              "element" : "fullUrl",
              "transform" : "append",
              "parameter" : [
                {
                  "valueString" : "urn:uuid:"
                },
                {
                  "valueId" : "uuid2"
                }
              ]
            },
            {
              "context" : "messageHeader",
              "contextType" : "variable",
              "element" : "focus",
              "variable" : "reference",
              "transform" : "create",
              "parameter" : [
                {
                  "valueString" : "Reference"
                }
              ]
            },
            {
              "context" : "reference",
              "contextType" : "variable",
              "element" : "type",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueString" : "Bundle"
                }
              ]
            },
            {
              "context" : "reference",
              "contextType" : "variable",
              "element" : "reference",
              "transform" : "append",
              "parameter" : [
                {
                  "valueString" : "urn:uuid:"
                },
                {
                  "valueId" : "uuid2"
                }
              ]
            }
          ],
          "rule" : [
            {
              "name" : "messageHeader",
              "source" : [
                {
                  "context" : "header"
                }
              ],
              "dependent" : [
                {
                  "name" : "Alis43ToMessageHeader",
                  "variable" : [
                    "header",
                    "messageHeader"
                  ]
                }
              ]
            },
            {
              "name" : "bundleTransaction",
              "source" : [
                {
                  "context" : "header"
                }
              ],
              "dependent" : [
                {
                  "name" : "Alis43ToBundleTransaction",
                  "variable" : [
                    "header",
                    "transactionBundle"
                  ]
                }
              ]
            }
          ]
        },
        {
          "name" : "type",
          "source" : [
            {
              "context" : "header"
            }
          ],
          "target" : [
            {
              "context" : "bundle",
              "contextType" : "variable",
              "element" : "type",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueString" : "message"
                }
              ]
            }
          ]
        },
        {
          "name" : "FileCreationDate",
          "source" : [
            {
              "context" : "header",
              "element" : "FileCreationDate",
              "variable" : "fileCreationDate"
            }
          ],
          "rule" : [
            {
              "name" : "date",
              "source" : [
                {
                  "context" : "fileCreationDate",
                  "variable" : "date"
                }
              ],
              "target" : [
                {
                  "context" : "bundle",
                  "contextType" : "variable",
                  "element" : "timestamp",
                  "transform" : "copy",
                  "parameter" : [
                    {
                      "valueId" : "date"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name" : "Alis43ToMessageHeader",
      "typeMode" : "none",
      "input" : [
        {
          "name" : "header",
          "type" : "Header",
          "mode" : "source"
        },
        {
          "name" : "messageHeader",
          "type" : "MessageHeader",
          "mode" : "target"
        }
      ],
      "rule" : [
        {
          "name" : "eventUri",
          "source" : [
            {
              "context" : "header"
            }
          ],
          "target" : [
            {
              "context" : "messageHeader",
              "contextType" : "variable",
              "element" : "event",
              "variable" : "value",
              "transform" : "create",
              "parameter" : [
                {
                  "valueString" : "uri"
                }
              ]
            },
            {
              "context" : "value",
              "contextType" : "variable",
              "element" : "value",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueString" : "http://fhir.ch/ig/ch-alis-43"
                }
              ]
            }
          ],
          "documentation" : "ISSUE1: should be link to a MessageDefinition or a code?"
        },
        {
          "name" : "source",
          "source" : [
            {
              "context" : "header"
            }
          ],
          "target" : [
            {
              "context" : "messageHeader",
              "contextType" : "variable",
              "element" : "source",
              "variable" : "source"
            }
          ],
          "rule" : [
            {
              "name" : "version",
              "source" : [
                {
                  "context" : "header",
                  "element" : "SoftwareReleaseNumber",
                  "variable" : "version"
                }
              ],
              "target" : [
                {
                  "context" : "source",
                  "contextType" : "variable",
                  "element" : "version",
                  "transform" : "evaluate",
                  "parameter" : [
                    {
                      "valueString" : "%version.data"
                    }
                  ]
                }
              ]
            },
            {
              "name" : "endpoint",
              "source" : [
                {
                  "context" : "header"
                }
              ],
              "target" : [
                {
                  "context" : "source",
                  "contextType" : "variable",
                  "element" : "endpoint",
                  "transform" : "evaluate",
                  "parameter" : [
                    {
                      "valueString" : "'urn:' + %header.SendingApplication.data + ':' + %header.SendingFacility.data + ':' + %header.SendingServiceCode.data"
                    }
                  ]
                }
              ],
              "documentation" : "ISSUE3: \" : \"urn:SendingApplication:SendingFacility:SendingServiceCode\" -> add urn: in example/docu"
            }
          ],
          "documentation" : "ISSUE2: MessageControlID cannot be id of entry, needs to be either fullUrl oder uuid, need to map this to an identifier"
        },
        {
          "name" : "destination",
          "source" : [
            {
              "context" : "header"
            }
          ],
          "target" : [
            {
              "context" : "messageHeader",
              "contextType" : "variable",
              "element" : "destination",
              "variable" : "destination"
            }
          ],
          "rule" : [
            {
              "name" : "endpoint",
              "source" : [
                {
                  "context" : "header"
                }
              ],
              "target" : [
                {
                  "context" : "destination",
                  "contextType" : "variable",
                  "element" : "endpoint",
                  "transform" : "evaluate",
                  "parameter" : [
                    {
                      "valueString" : "'urn:' + %header.ReceivingApplication.data + ':' + %header.ReceivingFacility.data + ':' + %header.ReceivingServiceCode.data"
                    }
                  ]
                }
              ],
              "documentation" : "ISSUE4: \" : \"urn:ReceivingApplication, ReceivingFacility, ReceivingServiceCode\" -> add urn: in example/docu"
            }
          ]
        }
      ]
    },
    {
      "name" : "Alis43ToBundleTransaction",
      "typeMode" : "none",
      "input" : [
        {
          "name" : "header",
          "type" : "Header",
          "mode" : "source"
        },
        {
          "name" : "transactionBundle",
          "type" : "Bundle",
          "mode" : "target"
        }
      ],
      "rule" : [
        {
          "name" : "transaction",
          "source" : [
            {
              "context" : "header"
            }
          ],
          "target" : [
            {
              "context" : "transactionBundle",
              "contextType" : "variable",
              "element" : "type",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueString" : "transaction"
                }
              ]
            }
          ]
        },
        {
          "name" : "Visit",
          "source" : [
            {
              "context" : "header",
              "element" : "Visit",
              "variable" : "visit"
            }
          ],
          "rule" : [
            {
              "name" : "ServiceToChargeItem",
              "source" : [
                {
                  "context" : "visit",
                  "element" : "Service",
                  "variable" : "service"
                }
              ],
              "target" : [
                {
                  "context" : "transactionBundle",
                  "contextType" : "variable",
                  "element" : "entry",
                  "variable" : "e"
                },
                {
                  "context" : "e",
                  "contextType" : "variable",
                  "element" : "resource",
                  "variable" : "chargeItem",
                  "transform" : "create",
                  "parameter" : [
                    {
                      "valueString" : "ChargeItem"
                    }
                  ]
                }
              ],
              "dependent" : [
                {
                  "name" : "ServiceToChargeItem",
                  "variable" : [
                    "service",
                    "visit",
                    "chargeItem",
                    "e"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name" : "ServiceToChargeItem",
      "typeMode" : "none",
      "input" : [
        {
          "name" : "service",
          "type" : "Service",
          "mode" : "source"
        },
        {
          "name" : "visit",
          "type" : "Visit",
          "mode" : "source"
        },
        {
          "name" : "chargeItem",
          "type" : "ChargeItem",
          "mode" : "target"
        },
        {
          "name" : "entry",
          "mode" : "target"
        }
      ],
      "rule" : [
        {
          "name" : "3.11 Laufnummer (ItemNumber)",
          "source" : [
            {
              "context" : "service",
              "element" : "ItemNumber",
              "variable" : "itemNumber"
            }
          ],
          "target" : [
            {
              "context" : "chargeItem",
              "contextType" : "variable",
              "element" : "id",
              "variable" : "uuid",
              "transform" : "evaluate",
              "parameter" : [
                {
                  "valueString" : "itemNumber.data.lower()"
                }
              ]
            },
            {
              "context" : "entry",
              "contextType" : "variable",
              "element" : "fullUrl",
              "transform" : "append",
              "parameter" : [
                {
                  "valueString" : "urn:uuid:"
                },
                {
                  "valueId" : "uuid"
                }
              ]
            }
          ]
        },
        {
          "name" : "patient",
          "source" : [
            {
              "context" : "service"
            }
          ],
          "target" : [
            {
              "context" : "chargeItem",
              "contextType" : "variable",
              "element" : "contained",
              "variable" : "patient",
              "transform" : "create",
              "parameter" : [
                {
                  "valueString" : "Patient"
                }
              ]
            },
            {
              "context" : "patient",
              "contextType" : "variable",
              "element" : "id",
              "variable" : "containedid",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueString" : "pat"
                }
              ]
            },
            {
              "context" : "chargeItem",
              "contextType" : "variable",
              "element" : "subject",
              "variable" : "ref",
              "transform" : "create",
              "parameter" : [
                {
                  "valueString" : "Reference"
                }
              ]
            },
            {
              "context" : "ref",
              "contextType" : "variable",
              "element" : "reference",
              "transform" : "evaluate",
              "parameter" : [
                {
                  "valueString" : "'#' + %containedid"
                }
              ]
            }
          ],
          "dependent" : [
            {
              "name" : "ServiceToPatient",
              "variable" : [
                "service",
                "visit",
                "patient"
              ]
            }
          ]
        },
        {
          "name" : "VisitToEncounter",
          "source" : [
            {
              "context" : "visit"
            }
          ],
          "target" : [
            {
              "context" : "chargeItem",
              "contextType" : "variable",
              "element" : "contained",
              "variable" : "encounter",
              "transform" : "create",
              "parameter" : [
                {
                  "valueString" : "Encounter"
                }
              ]
            },
            {
              "context" : "encounter",
              "contextType" : "variable",
              "element" : "id",
              "variable" : "containedid",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueString" : "enc"
                }
              ]
            },
            {
              "context" : "chargeItem",
              "contextType" : "variable",
              "element" : "context",
              "variable" : "ref",
              "transform" : "create",
              "parameter" : [
                {
                  "valueString" : "Reference"
                }
              ]
            },
            {
              "context" : "ref",
              "contextType" : "variable",
              "element" : "reference",
              "transform" : "evaluate",
              "parameter" : [
                {
                  "valueString" : "'#' + %containedid"
                }
              ]
            }
          ],
          "dependent" : [
            {
              "name" : "VisitToEncounter",
              "variable" : [
                "visit",
                "encounter"
              ]
            }
          ]
        },
        {
          "name" : "DiagGroupToCondition",
          "source" : [
            {
              "context" : "visit",
              "element" : "DiagGroup",
              "variable" : "diaggroup"
            }
          ],
          "target" : [
            {
              "context" : "chargeItem",
              "contextType" : "variable",
              "element" : "contained",
              "variable" : "cond",
              "transform" : "create",
              "parameter" : [
                {
                  "valueString" : "Condition"
                }
              ]
            },
            {
              "context" : "cond",
              "contextType" : "variable",
              "element" : "id",
              "variable" : "containedid",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueString" : "cond"
                }
              ]
            }
          ],
          "dependent" : [
            {
              "name" : "DiagGroupToCondition",
              "variable" : [
                "diaggroup",
                "cond"
              ]
            }
          ]
        },
        {
          "name" : "POSTDEFAULT",
          "source" : [
            {
              "context" : "service",
              "condition" : "(service.Transaction.exists() = false)"
            }
          ],
          "target" : [
            {
              "context" : "entry",
              "contextType" : "variable",
              "element" : "request",
              "variable" : "request"
            },
            {
              "context" : "request",
              "contextType" : "variable",
              "element" : "method",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueString" : "POST"
                }
              ]
            },
            {
              "context" : "request",
              "contextType" : "variable",
              "element" : "url",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueString" : "ChargeItem"
                }
              ]
            }
          ]
        },
        {
          "name" : "POST",
          "source" : [
            {
              "context" : "service",
              "element" : "Transaction",
              "condition" : "(service.Transaction = 'insert')"
            }
          ],
          "target" : [
            {
              "context" : "entry",
              "contextType" : "variable",
              "element" : "request",
              "variable" : "request"
            },
            {
              "context" : "request",
              "contextType" : "variable",
              "element" : "method",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueString" : "POST"
                }
              ]
            },
            {
              "context" : "request",
              "contextType" : "variable",
              "element" : "url",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueString" : "ChargeItem"
                }
              ]
            }
          ]
        },
        {
          "name" : "UPDATE",
          "source" : [
            {
              "context" : "service",
              "element" : "Transaction",
              "condition" : "(service.Transaction = 'update')"
            }
          ],
          "target" : [
            {
              "context" : "entry",
              "contextType" : "variable",
              "element" : "request",
              "variable" : "request"
            },
            {
              "context" : "request",
              "contextType" : "variable",
              "element" : "method",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueString" : "PUT"
                }
              ]
            },
            {
              "context" : "request",
              "contextType" : "variable",
              "element" : "url",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueString" : "ChargeItem"
                }
              ]
            }
          ]
        },
        {
          "name" : "DELETE",
          "source" : [
            {
              "context" : "service",
              "element" : "Transaction",
              "condition" : "(service.Transaction = 'delete')"
            }
          ],
          "target" : [
            {
              "context" : "entry",
              "contextType" : "variable",
              "element" : "request",
              "variable" : "request"
            },
            {
              "context" : "request",
              "contextType" : "variable",
              "element" : "method",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueString" : "DELETE"
                }
              ]
            },
            {
              "context" : "request",
              "contextType" : "variable",
              "element" : "url",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueString" : "ChargeItem"
                }
              ]
            }
          ]
        },
        {
          "name" : "3.2 Sitzung (SessionID)",
          "source" : [
            {
              "context" : "service",
              "element" : "SessionID",
              "variable" : "sessionID"
            }
          ],
          "target" : [
            {
              "context" : "chargeItem",
              "contextType" : "variable",
              "element" : "extension",
              "variable" : "extension"
            },
            {
              "context" : "extension",
              "contextType" : "variable",
              "element" : "url",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueString" : "http://fhir.ch/ig/ch-alis/StructureDefinition/ch-alis-ext-sessionid"
                }
              ]
            },
            {
              "context" : "extension",
              "contextType" : "variable",
              "element" : "value",
              "variable" : "value",
              "transform" : "create",
              "parameter" : [
                {
                  "valueString" : "string"
                }
              ]
            },
            {
              "context" : "value",
              "contextType" : "variable",
              "element" : "value",
              "transform" : "evaluate",
              "parameter" : [
                {
                  "valueString" : "sessionID.data"
                }
              ]
            }
          ]
        },
        {
          "name" : "3.3 Auftragsnummer (OrderID)",
          "source" : [
            {
              "context" : "service",
              "element" : "OrderID",
              "variable" : "orderID"
            }
          ],
          "target" : [
            {
              "context" : "chargeItem",
              "contextType" : "variable",
              "element" : "extension",
              "variable" : "extension"
            },
            {
              "context" : "extension",
              "contextType" : "variable",
              "element" : "url",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueString" : "http://fhir.ch/ig/ch-alis/StructureDefinition/ch-alis-ext-orderid"
                }
              ]
            },
            {
              "context" : "extension",
              "contextType" : "variable",
              "element" : "value",
              "variable" : "value",
              "transform" : "create",
              "parameter" : [
                {
                  "valueString" : "string"
                }
              ]
            },
            {
              "context" : "value",
              "contextType" : "variable",
              "element" : "value",
              "transform" : "evaluate",
              "parameter" : [
                {
                  "valueString" : "orderID.data"
                }
              ]
            }
          ]
        },
        {
          "name" : "3.7 Formularbezeichnung (Form)",
          "source" : [
            {
              "context" : "service",
              "element" : "Form",
              "variable" : "form"
            }
          ],
          "target" : [
            {
              "context" : "chargeItem",
              "contextType" : "variable",
              "element" : "extension",
              "variable" : "extension"
            },
            {
              "context" : "extension",
              "contextType" : "variable",
              "element" : "url",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueString" : "http://fhir.ch/ig/ch-alis/StructureDefinition/ch-alis-ext-form"
                }
              ]
            },
            {
              "context" : "extension",
              "contextType" : "variable",
              "element" : "value",
              "variable" : "value",
              "transform" : "create",
              "parameter" : [
                {
                  "valueString" : "string"
                }
              ]
            },
            {
              "context" : "value",
              "contextType" : "variable",
              "element" : "value",
              "transform" : "evaluate",
              "parameter" : [
                {
                  "valueString" : "form.data"
                }
              ]
            }
          ]
        },
        {
          "name" : "4 ParamterV40 (ParameterV40)",
          "source" : [
            {
              "context" : "service",
              "element" : "ParameterV40",
              "variable" : "parameterV40"
            }
          ],
          "target" : [
            {
              "context" : "chargeItem",
              "contextType" : "variable",
              "element" : "extension",
              "variable" : "extension"
            },
            {
              "context" : "extension",
              "contextType" : "variable",
              "element" : "url",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueString" : "http://fhir.ch/ig/ch-alis/StructureDefinition/ch-alis-ext-parameterv40"
                }
              ]
            }
          ],
          "dependent" : [
            {
              "name" : "ParameterV40ToExtension",
              "variable" : [
                "parameterV40",
                "extension"
              ]
            }
          ]
        },
        {
          "name" : "billable",
          "source" : [
            {
              "context" : "service"
            }
          ],
          "target" : [
            {
              "context" : "chargeItem",
              "contextType" : "variable",
              "element" : "status",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueString" : "billable"
                }
              ]
            }
          ]
        },
        {
          "name" : "RefItemNumber",
          "source" : [
            {
              "context" : "service",
              "element" : "RefItemNumber",
              "variable" : "refItemNumber"
            }
          ],
          "rule" : [
            {
              "name" : "3.12 Referenz zu Hauptleistung (RefItemNumber)",
              "source" : [
                {
                  "context" : "refItemNumber",
                  "element" : "data",
                  "variable" : "data"
                }
              ],
              "target" : [
                {
                  "context" : "chargeItem",
                  "contextType" : "variable",
                  "element" : "partOf",
                  "variable" : "ref",
                  "transform" : "create",
                  "parameter" : [
                    {
                      "valueString" : "Reference"
                    }
                  ]
                },
                {
                  "context" : "ref",
                  "contextType" : "variable",
                  "element" : "reference",
                  "transform" : "evaluate",
                  "parameter" : [
                    {
                      "valueString" : "'urn:uuid:' + %data.lower()"
                    }
                  ]
                },
                {
                  "context" : "ref",
                  "contextType" : "variable",
                  "element" : "type",
                  "transform" : "copy",
                  "parameter" : [
                    {
                      "valueString" : "ChargeItem"
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "name" : "3.6 Tarifposition",
          "source" : [
            {
              "context" : "service",
              "element" : "ServiceItem",
              "variable" : "serviceItem"
            }
          ],
          "rule" : [
            {
              "name" : "3.6 Tarifposition (ServiceItem)",
              "source" : [
                {
                  "context" : "serviceItem",
                  "element" : "data",
                  "variable" : "data"
                }
              ],
              "target" : [
                {
                  "context" : "chargeItem",
                  "contextType" : "variable",
                  "element" : "code",
                  "variable" : "cc",
                  "transform" : "create",
                  "parameter" : [
                    {
                      "valueString" : "CodeableConcept"
                    }
                  ]
                },
                {
                  "context" : "cc",
                  "contextType" : "variable",
                  "element" : "coding",
                  "variable" : "coding",
                  "transform" : "create",
                  "parameter" : [
                    {
                      "valueString" : "Coding"
                    }
                  ]
                },
                {
                  "context" : "coding",
                  "contextType" : "variable",
                  "element" : "code",
                  "transform" : "copy",
                  "parameter" : [
                    {
                      "valueId" : "data"
                    }
                  ]
                }
              ],
              "rule" : [
                {
                  "name" : "servicType",
                  "source" : [
                    {
                      "context" : "service",
                      "element" : "ServiceType",
                      "variable" : "serviceType"
                    }
                  ],
                  "rule" : [
                    {
                      "name" : "3.5 Katalog (ServiceType)",
                      "source" : [
                        {
                          "context" : "serviceType",
                          "element" : "data",
                          "variable" : "data"
                        }
                      ],
                      "target" : [
                        {
                          "context" : "coding",
                          "contextType" : "variable",
                          "element" : "system",
                          "transform" : "translate",
                          "parameter" : [
                            {
                              "valueId" : "data"
                            },
                            {
                              "valueString" : "#serviceMap"
                            },
                            {
                              "valueString" : "code"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "name" : "3.1 Leistungsdatum (ServiceDate)",
          "source" : [
            {
              "context" : "service",
              "element" : "ServiceDate",
              "variable" : "serviceData"
            }
          ],
          "target" : [
            {
              "context" : "chargeItem",
              "contextType" : "variable",
              "element" : "occurrence",
              "variable" : "occurrence",
              "transform" : "create",
              "parameter" : [
                {
                  "valueString" : "dateTime"
                }
              ]
            },
            {
              "context" : "occurrence",
              "contextType" : "variable",
              "element" : "value",
              "transform" : "evaluate",
              "parameter" : [
                {
                  "valueString" : "serviceData.data"
                }
              ]
            }
          ]
        },
        {
          "name" : "3.15 PersonV40 (PersonV40)",
          "source" : [
            {
              "context" : "service",
              "element" : "PersonV40",
              "variable" : "personV40"
            }
          ],
          "target" : [
            {
              "context" : "chargeItem",
              "contextType" : "variable",
              "element" : "performer",
              "variable" : "performer",
              "transform" : "create",
              "parameter" : [
                {
                  "valueString" : "BackboneElement"
                }
              ]
            }
          ],
          "dependent" : [
            {
              "name" : "PersonV40ToPerformer",
              "variable" : [
                "personV40",
                "performer"
              ]
            }
          ]
        },
        {
          "name" : "3.9 Erbringende Organization (ProviderID)",
          "source" : [
            {
              "context" : "service",
              "element" : "ProviderID",
              "variable" : "providerID"
            }
          ],
          "target" : [
            {
              "context" : "chargeItem",
              "contextType" : "variable",
              "element" : "performingOrganization",
              "variable" : "reference",
              "transform" : "create",
              "parameter" : [
                {
                  "valueString" : "Reference"
                }
              ]
            },
            {
              "context" : "reference",
              "contextType" : "variable",
              "element" : "display",
              "transform" : "evaluate",
              "parameter" : [
                {
                  "valueString" : "providerID.data"
                }
              ]
            }
          ]
        },
        {
          "name" : "3.4 Auftraggebende Kostenstelle (ReferrerID)",
          "source" : [
            {
              "context" : "service",
              "element" : "ReferrerID",
              "variable" : "referrerID"
            }
          ],
          "target" : [
            {
              "context" : "chargeItem",
              "contextType" : "variable",
              "element" : "costCenter",
              "variable" : "reference",
              "transform" : "create",
              "parameter" : [
                {
                  "valueString" : "Reference"
                }
              ]
            },
            {
              "context" : "reference",
              "contextType" : "variable",
              "element" : "display",
              "transform" : "evaluate",
              "parameter" : [
                {
                  "valueString" : "referrerID.data"
                }
              ]
            }
          ]
        },
        {
          "name" : "3.13 Anzahl (Quantity) ",
          "source" : [
            {
              "context" : "service",
              "element" : "Quantity",
              "variable" : "quantity"
            }
          ],
          "target" : [
            {
              "context" : "chargeItem",
              "contextType" : "variable",
              "element" : "quantity",
              "variable" : "q",
              "transform" : "create",
              "parameter" : [
                {
                  "valueString" : "Quantity"
                }
              ]
            },
            {
              "context" : "q",
              "contextType" : "variable",
              "element" : "value",
              "variable" : "value"
            },
            {
              "context" : "value",
              "contextType" : "variable",
              "element" : "value",
              "transform" : "evaluate",
              "parameter" : [
                {
                  "valueString" : "quantity.data"
                }
              ]
            }
          ]
        },
        {
          "name" : "3.10 Erfasser (EnteredBy)",
          "source" : [
            {
              "context" : "service",
              "element" : "EnteredBy",
              "variable" : "enteredBy"
            }
          ],
          "target" : [
            {
              "context" : "chargeItem",
              "contextType" : "variable",
              "element" : "enterer",
              "variable" : "reference",
              "transform" : "create",
              "parameter" : [
                {
                  "valueString" : "Reference"
                }
              ]
            },
            {
              "context" : "reference",
              "contextType" : "variable",
              "element" : "display",
              "transform" : "evaluate",
              "parameter" : [
                {
                  "valueString" : "enteredBy.data"
                }
              ]
            }
          ]
        },
        {
          "name" : "3.8 Erfassungsdatum (EnteredDateTime)",
          "source" : [
            {
              "context" : "service",
              "element" : "EnteredDateTime",
              "variable" : "enteredDateTime"
            }
          ],
          "target" : [
            {
              "context" : "chargeItem",
              "contextType" : "variable",
              "element" : "enteredDate",
              "variable" : "enteredDate",
              "transform" : "create",
              "parameter" : [
                {
                  "valueString" : "dateTime"
                }
              ]
            },
            {
              "context" : "enteredDate",
              "contextType" : "variable",
              "element" : "value",
              "transform" : "evaluate",
              "parameter" : [
                {
                  "valueString" : "enteredDateTime.data"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name" : "PersonV40ToPerformer",
      "typeMode" : "none",
      "input" : [
        {
          "name" : "personV40",
          "type" : "PersonV40",
          "mode" : "source"
        },
        {
          "name" : "performer",
          "type" : "BackboneElement",
          "mode" : "target"
        }
      ],
      "rule" : [
        {
          "name" : "3.15.1 PersonTyp (PersonTyp)",
          "source" : [
            {
              "context" : "personV40",
              "element" : "PersonTyp",
              "variable" : "personTyp"
            }
          ],
          "target" : [
            {
              "context" : "performer",
              "contextType" : "variable",
              "element" : "function",
              "transform" : "cc",
              "parameter" : [
                {
                  "valueString" : "http://fhir.ch/ig/ch-alis/CodeSystem/ch-alis-persontyp"
                },
                {
                  "valueId" : "personTyp"
                }
              ]
            }
          ]
        },
        {
          "name" : "3.15.2. PersonID (PersonID)",
          "source" : [
            {
              "context" : "personV40",
              "element" : "PersonID",
              "variable" : "personId"
            }
          ],
          "target" : [
            {
              "context" : "performer",
              "contextType" : "variable",
              "element" : "actor",
              "variable" : "reference",
              "transform" : "create",
              "parameter" : [
                {
                  "valueString" : "Reference"
                }
              ]
            },
            {
              "context" : "reference",
              "contextType" : "variable",
              "element" : "display",
              "transform" : "evaluate",
              "parameter" : [
                {
                  "valueString" : "personId.data"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name" : "ParameterV40ToExtension",
      "typeMode" : "none",
      "input" : [
        {
          "name" : "parameterV40",
          "type" : "ParameterV40",
          "mode" : "source"
        },
        {
          "name" : "extension",
          "type" : "Extension",
          "mode" : "target"
        }
      ],
      "rule" : [
        {
          "name" : "ParamTyp",
          "source" : [
            {
              "context" : "parameterV40",
              "element" : "ParamTyp",
              "variable" : "paramTyp"
            }
          ],
          "target" : [
            {
              "context" : "extension",
              "contextType" : "variable",
              "element" : "extension",
              "variable" : "extInner"
            }
          ],
          "dependent" : [
            {
              "name" : "InnerExtensionParamTyp",
              "variable" : [
                "paramTyp",
                "extInner"
              ]
            }
          ]
        },
        {
          "name" : "ParamValue",
          "source" : [
            {
              "context" : "parameterV40",
              "element" : "ParamValue",
              "variable" : "paramValue"
            }
          ],
          "rule" : [
            {
              "name" : "data",
              "source" : [
                {
                  "context" : "paramValue",
                  "element" : "data",
                  "variable" : "data"
                }
              ],
              "target" : [
                {
                  "context" : "extension",
                  "contextType" : "variable",
                  "element" : "extension",
                  "variable" : "extInner"
                }
              ],
              "dependent" : [
                {
                  "name" : "InnerExtensionParamValue",
                  "variable" : [
                    "data",
                    "extInner"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name" : "InnerExtensionParamTyp",
      "typeMode" : "none",
      "input" : [
        {
          "name" : "src",
          "mode" : "source"
        },
        {
          "name" : "ext",
          "type" : "Extension",
          "mode" : "target"
        }
      ],
      "rule" : [
        {
          "name" : "url",
          "source" : [
            {
              "context" : "src"
            }
          ],
          "target" : [
            {
              "context" : "ext",
              "contextType" : "variable",
              "element" : "url",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueString" : "ParamTyp"
                }
              ]
            }
          ]
        },
        {
          "name" : "string",
          "source" : [
            {
              "context" : "src"
            }
          ],
          "target" : [
            {
              "context" : "ext",
              "contextType" : "variable",
              "element" : "value",
              "variable" : "cc",
              "transform" : "create",
              "parameter" : [
                {
                  "valueString" : "CodeableConcept"
                }
              ]
            },
            {
              "context" : "cc",
              "contextType" : "variable",
              "element" : "text",
              "variable" : "text"
            },
            {
              "context" : "text",
              "contextType" : "variable",
              "element" : "value",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueId" : "src"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name" : "InnerExtensionParamValue",
      "typeMode" : "none",
      "input" : [
        {
          "name" : "src",
          "mode" : "source"
        },
        {
          "name" : "ext",
          "type" : "Extension",
          "mode" : "target"
        }
      ],
      "rule" : [
        {
          "name" : "url",
          "source" : [
            {
              "context" : "src"
            }
          ],
          "target" : [
            {
              "context" : "ext",
              "contextType" : "variable",
              "element" : "url",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueString" : "ParamValue"
                }
              ]
            }
          ]
        },
        {
          "name" : "string",
          "source" : [
            {
              "context" : "src"
            }
          ],
          "target" : [
            {
              "context" : "ext",
              "contextType" : "variable",
              "element" : "value",
              "variable" : "string",
              "transform" : "create",
              "parameter" : [
                {
                  "valueString" : "string"
                }
              ]
            },
            {
              "context" : "string",
              "contextType" : "variable",
              "element" : "value",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueId" : "src"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name" : "ServiceToPatientName",
      "typeMode" : "none",
      "input" : [
        {
          "name" : "visit",
          "type" : "Visit",
          "mode" : "source"
        },
        {
          "name" : "name",
          "type" : "HumanName",
          "mode" : "target"
        }
      ],
      "rule" : [
        {
          "name" : "patientName",
          "source" : [
            {
              "context" : "visit",
              "element" : "PatientName",
              "variable" : "patientName"
            }
          ],
          "rule" : [
            {
              "name" : "2.3 Patient.Name (PatientName) -",
              "source" : [
                {
                  "context" : "patientName",
                  "element" : "data",
                  "variable" : "data"
                }
              ],
              "target" : [
                {
                  "context" : "name",
                  "contextType" : "variable",
                  "element" : "family",
                  "transform" : "copy",
                  "parameter" : [
                    {
                      "valueId" : "data"
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "name" : "patientGivenName",
          "source" : [
            {
              "context" : "visit",
              "element" : "PatientGivenName",
              "variable" : "patientGivenName"
            }
          ],
          "rule" : [
            {
              "name" : "2.4 Patient.Vorname (PatientGivenName) -",
              "source" : [
                {
                  "context" : "patientGivenName",
                  "element" : "data",
                  "variable" : "data"
                }
              ],
              "target" : [
                {
                  "context" : "name",
                  "contextType" : "variable",
                  "element" : "given",
                  "transform" : "copy",
                  "parameter" : [
                    {
                      "valueId" : "data"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name" : "ServiceToPatient",
      "typeMode" : "none",
      "input" : [
        {
          "name" : "service",
          "type" : "Service",
          "mode" : "source"
        },
        {
          "name" : "visit",
          "type" : "Visit",
          "mode" : "source"
        },
        {
          "name" : "patient",
          "type" : "Patient",
          "mode" : "target"
        }
      ],
      "rule" : [
        {
          "name" : "patientID",
          "source" : [
            {
              "context" : "visit",
              "element" : "PatientID",
              "variable" : "patientID"
            }
          ],
          "rule" : [
            {
              "name" : "2.2 Patient.PID (PatientID)",
              "source" : [
                {
                  "context" : "patientID",
                  "element" : "data",
                  "variable" : "patId"
                }
              ],
              "target" : [
                {
                  "context" : "patient",
                  "contextType" : "variable",
                  "element" : "identifier",
                  "variable" : "identifier",
                  "transform" : "create",
                  "parameter" : [
                    {
                      "valueString" : "Identifier"
                    }
                  ]
                },
                {
                  "context" : "identifier",
                  "contextType" : "variable",
                  "element" : "value",
                  "variable" : "value"
                },
                {
                  "context" : "value",
                  "contextType" : "variable",
                  "element" : "value",
                  "transform" : "copy",
                  "parameter" : [
                    {
                      "valueId" : "patId"
                    }
                  ]
                },
                {
                  "context" : "identifier",
                  "contextType" : "variable",
                  "element" : "type",
                  "variable" : "type"
                },
                {
                  "context" : "type",
                  "contextType" : "variable",
                  "element" : "coding",
                  "transform" : "cc",
                  "parameter" : [
                    {
                      "valueString" : "http://terminology.hl7.org/CodeSystem/v2-0203"
                    },
                    {
                      "valueString" : "MR"
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "name" : "ServiceToPatient",
          "source" : [
            {
              "context" : "visit",
              "condition" : "(visit.PatientName or visit.PatientGivenName)"
            }
          ],
          "target" : [
            {
              "context" : "patient",
              "contextType" : "variable",
              "element" : "name",
              "variable" : "name"
            }
          ],
          "dependent" : [
            {
              "name" : "ServiceToPatientName",
              "variable" : [
                "visit",
                "name"
              ]
            }
          ],
          "documentation" : "<!-- 2.2 Patient.PID (PatientID) -->"
        },
        {
          "name" : "2.6 Patient.Geschlecht (PatientGender)",
          "source" : [
            {
              "context" : "visit",
              "element" : "PatientGender",
              "variable" : "gender"
            }
          ],
          "rule" : [
            {
              "name" : "gender",
              "source" : [
                {
                  "context" : "gender",
                  "element" : "data",
                  "variable" : "v"
                }
              ],
              "target" : [
                {
                  "context" : "patient",
                  "contextType" : "variable",
                  "element" : "gender",
                  "transform" : "translate",
                  "parameter" : [
                    {
                      "valueId" : "v"
                    },
                    {
                      "valueString" : "#gender"
                    },
                    {
                      "valueString" : "code"
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "name" : "2.5 Patient.GebDatum (PatientBirthDate)",
          "source" : [
            {
              "context" : "visit",
              "element" : "PatientBirthDate",
              "variable" : "birthDate"
            }
          ],
          "rule" : [
            {
              "name" : "birthDate",
              "source" : [
                {
                  "context" : "birthDate",
                  "element" : "data",
                  "variable" : "v"
                }
              ],
              "target" : [
                {
                  "context" : "patient",
                  "contextType" : "variable",
                  "element" : "birthDate",
                  "transform" : "copy",
                  "parameter" : [
                    {
                      "valueId" : "v"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name" : "DiagGroupToCondition",
      "typeMode" : "none",
      "input" : [
        {
          "name" : "diagGroup",
          "type" : "DiagGroup",
          "mode" : "source"
        },
        {
          "name" : "cond",
          "type" : "Condition",
          "mode" : "target"
        }
      ],
      "rule" : [
        {
          "name" : "containedpatient",
          "source" : [
            {
              "context" : "diagGroup"
            }
          ],
          "target" : [
            {
              "context" : "cond",
              "contextType" : "variable",
              "element" : "subject",
              "variable" : "ref",
              "transform" : "create",
              "parameter" : [
                {
                  "valueString" : "Reference"
                }
              ]
            },
            {
              "context" : "ref",
              "contextType" : "variable",
              "element" : "reference",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueString" : "#pat"
                }
              ]
            }
          ]
        },
        {
          "name" : "2.9.1 Diagnosecode (DiagCode)",
          "source" : [
            {
              "context" : "diagGroup",
              "element" : "DiagCode",
              "variable" : "data"
            }
          ],
          "target" : [
            {
              "context" : "cond",
              "contextType" : "variable",
              "element" : "code",
              "variable" : "cc",
              "transform" : "create",
              "parameter" : [
                {
                  "valueString" : "CodeableConcept"
                }
              ]
            },
            {
              "context" : "cc",
              "contextType" : "variable",
              "element" : "coding",
              "variable" : "coding",
              "transform" : "create",
              "parameter" : [
                {
                  "valueString" : "Coding"
                }
              ]
            },
            {
              "context" : "coding",
              "contextType" : "variable",
              "element" : "code",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueId" : "data"
                }
              ]
            }
          ],
          "rule" : [
            {
              "name" : "serviceType",
              "source" : [
                {
                  "context" : "diagGroup",
                  "element" : "DiagCatType",
                  "variable" : "diagCatType"
                }
              ],
              "rule" : [
                {
                  "name" : "2.9.3 Katalogtyp (DiagCatType)",
                  "source" : [
                    {
                      "context" : "diagCatType",
                      "element" : "data",
                      "variable" : "data"
                    }
                  ],
                  "target" : [
                    {
                      "context" : "coding",
                      "contextType" : "variable",
                      "element" : "system",
                      "transform" : "translate",
                      "parameter" : [
                        {
                          "valueId" : "data"
                        },
                        {
                          "valueString" : "#serviceMap"
                        },
                        {
                          "valueString" : "code"
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name" : "TerminationToExtension",
      "typeMode" : "none",
      "input" : [
        {
          "name" : "visit",
          "type" : "Visit",
          "mode" : "source"
        },
        {
          "name" : "ext",
          "type" : "Extension",
          "mode" : "target"
        }
      ],
      "rule" : [
        {
          "name" : "TerminationVisit",
          "source" : [
            {
              "context" : "visit",
              "element" : "TerminationVisit",
              "variable" : "visit"
            }
          ],
          "rule" : [
            {
              "name" : "2.7 Fall Abschluss (TerminationVisit)",
              "source" : [
                {
                  "context" : "visit",
                  "element" : "data",
                  "variable" : "data"
                }
              ],
              "target" : [
                {
                  "context" : "ext",
                  "contextType" : "variable",
                  "element" : "extension",
                  "variable" : "ext1"
                },
                {
                  "context" : "ext1",
                  "contextType" : "variable",
                  "element" : "url",
                  "transform" : "copy",
                  "parameter" : [
                    {
                      "valueString" : "TerminationVisit"
                    }
                  ]
                },
                {
                  "context" : "ext1",
                  "contextType" : "variable",
                  "element" : "value",
                  "variable" : "date",
                  "transform" : "create",
                  "parameter" : [
                    {
                      "valueString" : "date"
                    }
                  ]
                },
                {
                  "context" : "date",
                  "contextType" : "variable",
                  "element" : "value",
                  "transform" : "copy",
                  "parameter" : [
                    {
                      "valueId" : "data"
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "name" : "TerminationVisit",
          "source" : [
            {
              "context" : "visit",
              "element" : "TerminationReason",
              "variable" : "visit"
            }
          ],
          "rule" : [
            {
              "name" : "2.8 Fall Abschlussgrund (TerminationReason)",
              "source" : [
                {
                  "context" : "visit",
                  "element" : "data",
                  "variable" : "data"
                }
              ],
              "target" : [
                {
                  "context" : "ext",
                  "contextType" : "variable",
                  "element" : "extension",
                  "variable" : "ext1"
                },
                {
                  "context" : "ext1",
                  "contextType" : "variable",
                  "element" : "url",
                  "transform" : "copy",
                  "parameter" : [
                    {
                      "valueString" : "TerminationReason"
                    }
                  ]
                },
                {
                  "context" : "ext1",
                  "contextType" : "variable",
                  "element" : "value",
                  "variable" : "string",
                  "transform" : "create",
                  "parameter" : [
                    {
                      "valueString" : "string"
                    }
                  ]
                },
                {
                  "context" : "string",
                  "contextType" : "variable",
                  "element" : "value",
                  "transform" : "copy",
                  "parameter" : [
                    {
                      "valueId" : "data"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name" : "VisitToEncounter",
      "typeMode" : "none",
      "input" : [
        {
          "name" : "visit",
          "type" : "Visit",
          "mode" : "source"
        },
        {
          "name" : "encounter",
          "type" : "Encounter",
          "mode" : "target"
        }
      ],
      "rule" : [
        {
          "name" : "TerminationToExtension",
          "source" : [
            {
              "context" : "visit",
              "condition" : "(visit.TerminationVisit or visit.TerminationReason)"
            }
          ],
          "target" : [
            {
              "context" : "encounter",
              "contextType" : "variable",
              "element" : "extension",
              "variable" : "ext"
            },
            {
              "context" : "ext",
              "contextType" : "variable",
              "element" : "url",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueString" : "http://fhir.ch/ig/ch-alis/StructureDefinition/ch-alis-ext-termination"
                }
              ]
            }
          ],
          "dependent" : [
            {
              "name" : "TerminationToExtension",
              "variable" : [
                "visit",
                "ext"
              ]
            }
          ]
        },
        {
          "name" : "encounterID",
          "source" : [
            {
              "context" : "visit",
              "element" : "VisitNumber",
              "variable" : "visitNumber"
            }
          ],
          "rule" : [
            {
              "name" : "2.1 Fall (VisitNumber)",
              "source" : [
                {
                  "context" : "visitNumber",
                  "element" : "data",
                  "variable" : "data"
                }
              ],
              "target" : [
                {
                  "context" : "encounter",
                  "contextType" : "variable",
                  "element" : "identifier",
                  "variable" : "identifier",
                  "transform" : "create",
                  "parameter" : [
                    {
                      "valueString" : "Identifier"
                    }
                  ]
                },
                {
                  "context" : "identifier",
                  "contextType" : "variable",
                  "element" : "value",
                  "variable" : "value"
                },
                {
                  "context" : "value",
                  "contextType" : "variable",
                  "element" : "value",
                  "transform" : "copy",
                  "parameter" : [
                    {
                      "valueId" : "data"
                    }
                  ]
                },
                {
                  "context" : "identifier",
                  "contextType" : "variable",
                  "element" : "type",
                  "variable" : "type"
                },
                {
                  "context" : "type",
                  "contextType" : "variable",
                  "element" : "coding",
                  "transform" : "cc",
                  "parameter" : [
                    {
                      "valueString" : "http://terminology.hl7.org/CodeSystem/v2-0203"
                    },
                    {
                      "valueString" : "VN"
                    }
                  ]
                }
              ],
              "documentation" : "ISSUE9: what to do with falldomain? <system value=\"http://www.example.ch/fallnummerdomain\"/>"
            }
          ]
        },
        {
          "name" : "Finished",
          "source" : [
            {
              "context" : "visit"
            }
          ],
          "target" : [
            {
              "context" : "encounter",
              "contextType" : "variable",
              "element" : "status",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueString" : "finished"
                }
              ]
            }
          ]
        },
        {
          "name" : "inpatient encounter",
          "source" : [
            {
              "context" : "visit"
            }
          ],
          "target" : [
            {
              "context" : "encounter",
              "contextType" : "variable",
              "element" : "class",
              "transform" : "cc",
              "parameter" : [
                {
                  "valueString" : "http://terminology.hl7.org/CodeSystem/v3-ActCode"
                },
                {
                  "valueString" : "IMP"
                }
              ]
            }
          ]
        },
        {
          "name" : "subject",
          "source" : [
            {
              "context" : "visit"
            }
          ],
          "target" : [
            {
              "context" : "encounter",
              "contextType" : "variable",
              "element" : "subject",
              "variable" : "ref",
              "transform" : "create",
              "parameter" : [
                {
                  "valueString" : "Reference"
                }
              ]
            },
            {
              "context" : "ref",
              "contextType" : "variable",
              "element" : "reference",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueString" : "#pat"
                }
              ]
            }
          ]
        },
        {
          "name" : "2.9 DiagnoseGruppe (DiagGroup)",
          "source" : [
            {
              "context" : "visit",
              "element" : "DiagGroup",
              "variable" : "diaggroup"
            }
          ],
          "target" : [
            {
              "context" : "encounter",
              "contextType" : "variable",
              "element" : "diagnosis",
              "variable" : "diag"
            },
            {
              "context" : "diag",
              "contextType" : "variable",
              "element" : "condition",
              "variable" : "ref",
              "transform" : "create",
              "parameter" : [
                {
                  "valueString" : "Reference"
                }
              ]
            },
            {
              "context" : "ref",
              "contextType" : "variable",
              "element" : "reference",
              "transform" : "copy",
              "parameter" : [
                {
                  "valueString" : "#cond"
                }
              ]
            }
          ],
          "rule" : [
            {
              "name" : "2.9.2 Diagnosetyp (DiagType)",
              "source" : [
                {
                  "context" : "diaggroup",
                  "element" : "DiagType",
                  "variable" : "diagType"
                }
              ],
              "target" : [
                {
                  "context" : "diag",
                  "contextType" : "variable",
                  "element" : "use",
                  "variable" : "use"
                },
                {
                  "context" : "use",
                  "contextType" : "variable",
                  "element" : "text",
                  "transform" : "evaluate",
                  "parameter" : [
                    {
                      "valueString" : "%diagType.data"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}