CH ALIS (R4)
0.2.0 - CI build

Publish Box goes here

: Alis43ToBundle - XML Representation

Raw xml | Download



<StructureMap xmlns="http://hl7.org/fhir">
  <id value="Alis43ToBundle"/>
  <text>
    <status value="generated"/>
    <div xmlns="http://www.w3.org/1999/xhtml">
      <pre>map &quot;http://fhir.ch/ig/ch-alis/StructureMap/Alis43ToBundle&quot; = &quot;Alis43ToBundle&quot;

// 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.

conceptmap &quot;serviceMap&quot; {
  prefix s = &quot;http://fhir.ch/ig/ch-alis&quot;
  prefix t = &quot;http://hl7.org/fhir&quot;

  s:TARMED == t:&quot;urn:oid:2.16.756.5.30.1.129.1.4&quot;
  s:ICD10 == t:&quot;urn:oid:2.16.756.5.30.1.126.3.2&quot;
}

conceptmap &quot;gender&quot; {
  prefix s = &quot;http://fhir.ch/ig/ch-alis&quot;
  prefix t = &quot;http://hl7.org/fhir/ValueSet/administrative-gender&quot;

  s:M == t:male
  s:F == t:female
}

uses &quot;http://fhir.ch/ig/ch-alis/StructureDefinition/Header&quot; alias Header as source
uses &quot;http://fhir.ch/ig/ch-alis/StructureDefinition/Visit&quot; alias Visit as source
uses &quot;http://fhir.ch/ig/ch-alis/StructureDefinition/Service&quot; alias Service as source
uses &quot;http://fhir.ch/ig/ch-alis/StructureDefinition/PersonV40&quot; alias PersonV40 as source
uses &quot;http://fhir.ch/ig/ch-alis/StructureDefinition/ParameterV40&quot; alias ParameterV40 as source
uses &quot;http://fhir.ch/ig/ch-alis/StructureDefinition/DiagGroup&quot; alias DiagGroup as source
uses &quot;http://hl7.org/fhir/StructureDefinition/Bundle&quot; alias Bundle as target
uses &quot;http://hl7.org/fhir/StructureDefinition/ChargeItem&quot; alias ChargeItem as target
uses &quot;http://hl7.org/fhir/StructureDefinition/Extension&quot; alias Extension as target
uses &quot;http://hl7.org/fhir/StructureDefinition/MessageHeader&quot; alias MessageHeader as target
uses &quot;http://hl7.org/fhir/StructureDefinition/BackboneElement&quot; alias BackboneElement as target
uses &quot;http://hl7.org/fhir/StructureDefinition/HumanName&quot; alias HumanName as target
uses &quot;http://hl7.org/fhir/StructureDefinition/Condition&quot; alias Condition as target
uses &quot;http://hl7.org/fhir/StructureDefinition/Encounter&quot; alias Encounter as target

group Alis43ToBundle(source header : Header, target bundle : Bundle) {
  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 {
    header then Alis43ToMessageHeader(header, messageHeader) &quot;messageHeader&quot;;
    header then Alis43ToBundleTransaction(header, transactionBundle) &quot;bundleTransaction&quot;;
  } &quot;bundle&quot;;
  header -&gt; bundle.type = 'message' &quot;type&quot;;
  header.FileCreationDate as fileCreationDate then {
    fileCreationDate as date -&gt; bundle.timestamp = date &quot;date&quot;;
  };
}

group Alis43ToMessageHeader(source header : Header, target messageHeader : MessageHeader) {
  // ISSUE1: should be link to a MessageDefinition or a code?
  header -&gt;  messageHeader.event = create('uri') as value,  value.value = 'http://fhir.ch/ig/ch-alis-43' &quot;eventUri&quot;;
  // ISSUE2: MessageControlID cannot be id of entry, needs to be either fullUrl oder uuid, need to map this to an identifier
  header -&gt; messageHeader.source as source then {
    header.SoftwareReleaseNumber as version -&gt; source.version = (%version.data) &quot;version&quot;;
    // ISSUE3: &quot; : &quot;urn:SendingApplication:SendingFacility:SendingServiceCode&quot; -&gt; add urn: in example/docu
    header -&gt; source.endpoint = ('urn:' + %header.SendingApplication.data + ':' + %header.SendingFacility.data + ':' + %header.SendingServiceCode.data) &quot;endpoint&quot;;
  } &quot;source&quot;;
  header -&gt; messageHeader.destination as destination then {
    // ISSUE4: &quot; : &quot;urn:ReceivingApplication, ReceivingFacility, ReceivingServiceCode&quot; -&gt; add urn: in example/docu
    header -&gt; destination.endpoint = ('urn:' + %header.ReceivingApplication.data + ':' + %header.ReceivingFacility.data + ':' + %header.ReceivingServiceCode.data) &quot;endpoint&quot;;
  } &quot;destination&quot;;
}

group Alis43ToBundleTransaction(source header : Header, target transactionBundle : Bundle) {
  header -&gt; transactionBundle.type = 'transaction' &quot;transaction&quot;;
  header.Visit as visit then {
    visit.Service as service -&gt;  transactionBundle.entry as e,  e.resource = create('ChargeItem') as chargeItem then ServiceToChargeItem(service, visit, chargeItem, e) &quot;ServiceToChargeItem&quot;;
  };
}

group ServiceToChargeItem(source service : Service, source visit : Visit, target chargeItem : ChargeItem, target entry) {
  service.ItemNumber as itemNumber -&gt;  chargeItem.id = (itemNumber.data.lower()) as uuid,  entry.fullUrl = append('urn:uuid:', uuid) &quot;11 Laufnummer (ItemNumber)&quot;;
  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;;
  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;;
  visit.DiagGroup as diaggroup -&gt;  chargeItem.contained = create('Condition') as cond,  cond.id = 'cond' as containedid then DiagGroupToCondition(diaggroup, cond) &quot;DiagGroupToCondition&quot;;
  service where (service.Transaction.exists() = false) -&gt;  entry.request as request,  request.method = 'POST',  request.url = 'ChargeItem' &quot;POSTDEFAULT&quot;;
  service.Transaction where (service.Transaction = 'insert') -&gt;  entry.request as request,  request.method = 'POST',  request.url = 'ChargeItem' &quot;POST&quot;;
  service.Transaction where (service.Transaction = 'update') -&gt;  entry.request as request,  request.method = 'PUT',  request.url = 'ChargeItem' &quot;UPDATE&quot;;
  service.Transaction where (service.Transaction = 'delete') -&gt;  entry.request as request,  request.method = 'DELETE',  request.url = 'ChargeItem' &quot;DELETE&quot;;
  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;;
  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;;
  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;;
  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;;
  service -&gt; chargeItem.status = 'billable' &quot;billable&quot;;
  service.RefItemNumber as refItemNumber then {
    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;;
  };
  service.ServiceItem as serviceItem then {
    serviceItem.data as data -&gt;  chargeItem.code = create('CodeableConcept') as cc,  cc.coding = create('Coding') as coding,  coding.code = data then {
      service.ServiceType as serviceType then {
        serviceType.data as data -&gt; coding.system = translate(data, '#serviceMap', 'code') &quot;5 Katalog (ServiceType)&quot;;
      } &quot;servicType&quot;;
    } &quot;6 Tarifposition (ServiceItem)&quot;;
  } &quot;6 Tarifposition&quot;;
  service.ServiceDate as serviceData -&gt;  chargeItem.occurrence = create('dateTime') as occurrence,  occurrence.value = (serviceData.data) &quot;1 Leistungsdatum (ServiceDate)&quot;;
  service.PersonV40 as personV40 -&gt; chargeItem.performer = create('BackboneElement') as performer then PersonV40ToPerformer(personV40, performer) &quot;15 PersonV40 (PersonV40)&quot;;
  service.ProviderID as providerID -&gt;  chargeItem.performingOrganization = create('Reference') as reference,  reference.display = (providerID.data) &quot;9 Erbringende Organization (ProviderID)&quot;;
  service.ReferrerID as referrerID -&gt;  chargeItem.costCenter = create('Reference') as reference,  reference.display = (referrerID.data) &quot;4 Auftraggebende Kostenstelle (ReferrerID)&quot;;
  service.Quantity as quantity -&gt;  chargeItem.quantity = create('Quantity') as q,  q.value as value,  value.value = (quantity.data) &quot;13 Anzahl (Quantity) &quot;;
  service.EnteredBy as enteredBy -&gt;  chargeItem.enterer = create('Reference') as reference,  reference.display = (enteredBy.data) &quot;10 Erfasser (EnteredBy)&quot;;
  service.EnteredDateTime as enteredDateTime -&gt;  chargeItem.enteredDate = create('dateTime') as enteredDate,  enteredDate.value = (enteredDateTime.data) &quot;8 Erfassungsdatum (EnteredDateTime)&quot;;
}

group PersonV40ToPerformer(source personV40 : PersonV40, target performer : BackboneElement) {
  personV40.PersonTyp as personTyp -&gt; performer.function = cc('http://fhir.ch/ig/ch-alis/CodeSystem/ch-alis-persontyp', personTyp) &quot;1 PersonTyp (PersonTyp)&quot;;
  personV40.PersonID as personId -&gt;  performer.actor = create('Reference') as reference,  reference.display = (personId.data) &quot; PersonID (PersonID)&quot;;
}

group ParameterV40ToExtension(source parameterV40 : ParameterV40, target extension : Extension) {
  parameterV40.ParamTyp as paramTyp -&gt; extension.extension as extInner then InnerExtensionParamTyp(paramTyp, extInner);
  parameterV40.ParamValue as paramValue then {
    paramValue.data as data -&gt; extension.extension as extInner then InnerExtensionParamValue(data, extInner);
  };
}

group InnerExtensionParamTyp(source src, target ext : Extension) {
  src -&gt; ext.url = 'ParamTyp' &quot;url&quot;;
  src -&gt;  ext.value = create('CodeableConcept') as cc,  cc.text as text,  text.value = src &quot;string&quot;;
}

group InnerExtensionParamValue(source src, target ext : Extension) {
  src -&gt; ext.url = 'ParamValue' &quot;url&quot;;
  src -&gt;  ext.value = create('string') as string,  string.value = src &quot;string&quot;;
}

group ServiceToPatientName(source visit : Visit, target name : HumanName) {
  visit.PatientName as patientName then {
    patientName.data as data -&gt; name.family = data &quot;Name (PatientName) -&quot;;
  } &quot;patientName&quot;;
  visit.PatientGivenName as patientGivenName then {
    patientGivenName.data as data -&gt; name.given = data &quot;Vorname (PatientGivenName) -&quot;;
  } &quot;patientGivenName&quot;;
}

group ServiceToPatient(source service : Service, source visit : Visit, target patient : Patient) {
  visit.PatientID as patientID then {
    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;;
  } &quot;patientID&quot;;
  // &lt;!-- 2.2 Patient.PID (PatientID) --&gt;
  visit where (visit.PatientName or visit.PatientGivenName) -&gt; patient.name as name then ServiceToPatientName(visit, name) &quot;ServiceToPatient&quot;;
  visit.PatientGender as gender then {
    gender.data as v -&gt; patient.gender = translate(v, '#gender', 'code') &quot;gender&quot;;
  } &quot;Geschlecht (PatientGender)&quot;;
  visit.PatientBirthDate as birthDate then {
    birthDate.data as v -&gt; patient.birthDate = v &quot;birthDate&quot;;
  } &quot;GebDatum (PatientBirthDate)&quot;;
}

group DiagGroupToCondition(source diagGroup : DiagGroup, target cond : Condition) {
  diagGroup -&gt;  cond.subject = create('Reference') as ref,  ref.reference = '#pat' &quot;containedpatient&quot;;
  diagGroup.DiagCode as data -&gt;  cond.code = create('CodeableConcept') as cc,  cc.coding = create('Coding') as coding,  coding.code = data then {
    diagGroup.DiagCatType as diagCatType then {
      diagCatType.data as data -&gt; coding.system = translate(data, '#serviceMap', 'code') &quot;3 Katalogtyp (DiagCatType)&quot;;
    } &quot;serviceType&quot;;
  } &quot;1 Diagnosecode (DiagCode)&quot;;
}

group TerminationToExtension(source visit : Visit, target ext : Extension) {
  visit.TerminationVisit as visit then {
    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;;
  };
  visit.TerminationReason as visit then {
    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;;
  } &quot;TerminationVisit&quot;;
}

group VisitToEncounter(source visit : Visit, target encounter : Encounter) {
  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;;
  visit.VisitNumber as visitNumber then {
    // ISSUE9: what to do with falldomain? &lt;system value=&quot;http://www.example.ch/fallnummerdomain&quot;/&gt;
    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;;
  } &quot;encounterID&quot;;
  visit -&gt; encounter.status = 'finished' &quot;Finished&quot;;
  visit -&gt; encounter.class = cc('http://terminology.hl7.org/CodeSystem/v3-ActCode', 'IMP') &quot;inpatient encounter&quot;;
  visit -&gt;  encounter.subject = create('Reference') as ref,  ref.reference = '#pat' &quot;subject&quot;;
  visit.DiagGroup as diaggroup -&gt;  encounter.diagnosis as diag,  diag.condition = create('Reference') as ref,  ref.reference = '#cond' then {
    diaggroup.DiagType as diagType -&gt;  diag.use as use,  use.text = (%diagType.data) &quot;2 Diagnosetyp (DiagType)&quot;;
  } &quot;9 DiagnoseGruppe (DiagGroup)&quot;;
}

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