CH ALIS (R4)
0.2.0 - CI build
Publish Box goes here
{
"resourceType" : "StructureMap",
"id" : "Alis43ToBundle",
"text" : {
"status" : "generated",
"div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\">\n <pre>map "http://fhir.ch/ig/ch-alis/StructureMap/Alis43ToBundle" = "Alis43ToBundle"\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 "serviceMap" {\n prefix s = "http://fhir.ch/ig/ch-alis"\n prefix t = "http://hl7.org/fhir"\n\n s:TARMED == t:"urn:oid:2.16.756.5.30.1.129.1.4"\n s:ICD10 == t:"urn:oid:2.16.756.5.30.1.126.3.2"\n}\n\nconceptmap "gender" {\n prefix s = "http://fhir.ch/ig/ch-alis"\n prefix t = "http://hl7.org/fhir/ValueSet/administrative-gender"\n\n s:M == t:male\n s:F == t:female\n}\n\nuses "http://fhir.ch/ig/ch-alis/StructureDefinition/Header" alias Header as source\nuses "http://fhir.ch/ig/ch-alis/StructureDefinition/Visit" alias Visit as source\nuses "http://fhir.ch/ig/ch-alis/StructureDefinition/Service" alias Service as source\nuses "http://fhir.ch/ig/ch-alis/StructureDefinition/PersonV40" alias PersonV40 as source\nuses "http://fhir.ch/ig/ch-alis/StructureDefinition/ParameterV40" alias ParameterV40 as source\nuses "http://fhir.ch/ig/ch-alis/StructureDefinition/DiagGroup" alias DiagGroup as source\nuses "http://hl7.org/fhir/StructureDefinition/Bundle" alias Bundle as target\nuses "http://hl7.org/fhir/StructureDefinition/ChargeItem" alias ChargeItem as target\nuses "http://hl7.org/fhir/StructureDefinition/Extension" alias Extension as target\nuses "http://hl7.org/fhir/StructureDefinition/MessageHeader" alias MessageHeader as target\nuses "http://hl7.org/fhir/StructureDefinition/BackboneElement" alias BackboneElement as target\nuses "http://hl7.org/fhir/StructureDefinition/HumanName" alias HumanName as target\nuses "http://hl7.org/fhir/StructureDefinition/Condition" alias Condition as target\nuses "http://hl7.org/fhir/StructureDefinition/Encounter" alias Encounter as target\n\ngroup Alis43ToBundle(source header : Header, target bundle : Bundle) {\n header -> 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) "messageHeader";\n header then Alis43ToBundleTransaction(header, transactionBundle) "bundleTransaction";\n } "bundle";\n header -> bundle.type = 'message' "type";\n header.FileCreationDate as fileCreationDate then {\n fileCreationDate as date -> bundle.timestamp = date "date";\n };\n}\n\ngroup Alis43ToMessageHeader(source header : Header, target messageHeader : MessageHeader) {\n // ISSUE1: should be link to a MessageDefinition or a code?\n header -> messageHeader.event = create('uri') as value, value.value = 'http://fhir.ch/ig/ch-alis-43' "eventUri";\n // ISSUE2: MessageControlID cannot be id of entry, needs to be either fullUrl oder uuid, need to map this to an identifier\n header -> messageHeader.source as source then {\n header.SoftwareReleaseNumber as version -> source.version = (%version.data) "version";\n // ISSUE3: " : "urn:SendingApplication:SendingFacility:SendingServiceCode" -> add urn: in example/docu\n header -> source.endpoint = ('urn:' + %header.SendingApplication.data + ':' + %header.SendingFacility.data + ':' + %header.SendingServiceCode.data) "endpoint";\n } "source";\n header -> messageHeader.destination as destination then {\n // ISSUE4: " : "urn:ReceivingApplication, ReceivingFacility, ReceivingServiceCode" -> add urn: in example/docu\n header -> destination.endpoint = ('urn:' + %header.ReceivingApplication.data + ':' + %header.ReceivingFacility.data + ':' + %header.ReceivingServiceCode.data) "endpoint";\n } "destination";\n}\n\ngroup Alis43ToBundleTransaction(source header : Header, target transactionBundle : Bundle) {\n header -> transactionBundle.type = 'transaction' "transaction";\n header.Visit as visit then {\n visit.Service as service -> transactionBundle.entry as e, e.resource = create('ChargeItem') as chargeItem then ServiceToChargeItem(service, visit, chargeItem, e) "ServiceToChargeItem";\n };\n}\n\ngroup ServiceToChargeItem(source service : Service, source visit : Visit, target chargeItem : ChargeItem, target entry) {\n service.ItemNumber as itemNumber -> chargeItem.id = (itemNumber.data.lower()) as uuid, entry.fullUrl = append('urn:uuid:', uuid) "11 Laufnummer (ItemNumber)";\n service -> 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) "patient";\n visit -> chargeItem.contained = create('Encounter') as encounter, encounter.id = 'enc' as containedid, chargeItem.context = create('Reference') as ref, ref.reference = ('#' + %containedid) then VisitToEncounter(visit, encounter) "VisitToEncounter";\n visit.DiagGroup as diaggroup -> chargeItem.contained = create('Condition') as cond, cond.id = 'cond' as containedid then DiagGroupToCondition(diaggroup, cond) "DiagGroupToCondition";\n service where (service.Transaction.exists() = false) -> entry.request as request, request.method = 'POST', request.url = 'ChargeItem' "POSTDEFAULT";\n service.Transaction where (service.Transaction = 'insert') -> entry.request as request, request.method = 'POST', request.url = 'ChargeItem' "POST";\n service.Transaction where (service.Transaction = 'update') -> entry.request as request, request.method = 'PUT', request.url = 'ChargeItem' "UPDATE";\n service.Transaction where (service.Transaction = 'delete') -> entry.request as request, request.method = 'DELETE', request.url = 'ChargeItem' "DELETE";\n service.SessionID as sessionID -> 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) "2 Sitzung (SessionID)";\n service.OrderID as orderID -> 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) "3 Auftragsnummer (OrderID)";\n service.Form as form -> 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) "7 Formularbezeichnung (Form)";\n service.ParameterV40 as parameterV40 -> chargeItem.extension as extension, extension.url = 'http://fhir.ch/ig/ch-alis/StructureDefinition/ch-alis-ext-parameterv40' then ParameterV40ToExtension(parameterV40, extension) "4 ParamterV40 (ParameterV40)";\n service -> chargeItem.status = 'billable' "billable";\n service.RefItemNumber as refItemNumber then {\n refItemNumber.data as data -> chargeItem.partOf = create('Reference') as ref, ref.reference = ('urn:uuid:' + %data.lower()), ref.type = 'ChargeItem' "12 Referenz zu Hauptleistung (RefItemNumber)";\n };\n service.ServiceItem as serviceItem then {\n serviceItem.data as data -> 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 -> coding.system = translate(data, '#serviceMap', 'code') "5 Katalog (ServiceType)";\n } "servicType";\n } "6 Tarifposition (ServiceItem)";\n } "6 Tarifposition";\n service.ServiceDate as serviceData -> chargeItem.occurrence = create('dateTime') as occurrence, occurrence.value = (serviceData.data) "1 Leistungsdatum (ServiceDate)";\n service.PersonV40 as personV40 -> chargeItem.performer = create('BackboneElement') as performer then PersonV40ToPerformer(personV40, performer) "15 PersonV40 (PersonV40)";\n service.ProviderID as providerID -> chargeItem.performingOrganization = create('Reference') as reference, reference.display = (providerID.data) "9 Erbringende Organization (ProviderID)";\n service.ReferrerID as referrerID -> chargeItem.costCenter = create('Reference') as reference, reference.display = (referrerID.data) "4 Auftraggebende Kostenstelle (ReferrerID)";\n service.Quantity as quantity -> chargeItem.quantity = create('Quantity') as q, q.value as value, value.value = (quantity.data) "13 Anzahl (Quantity) ";\n service.EnteredBy as enteredBy -> chargeItem.enterer = create('Reference') as reference, reference.display = (enteredBy.data) "10 Erfasser (EnteredBy)";\n service.EnteredDateTime as enteredDateTime -> chargeItem.enteredDate = create('dateTime') as enteredDate, enteredDate.value = (enteredDateTime.data) "8 Erfassungsdatum (EnteredDateTime)";\n}\n\ngroup PersonV40ToPerformer(source personV40 : PersonV40, target performer : BackboneElement) {\n personV40.PersonTyp as personTyp -> performer.function = cc('http://fhir.ch/ig/ch-alis/CodeSystem/ch-alis-persontyp', personTyp) "1 PersonTyp (PersonTyp)";\n personV40.PersonID as personId -> performer.actor = create('Reference') as reference, reference.display = (personId.data) " PersonID (PersonID)";\n}\n\ngroup ParameterV40ToExtension(source parameterV40 : ParameterV40, target extension : Extension) {\n parameterV40.ParamTyp as paramTyp -> extension.extension as extInner then InnerExtensionParamTyp(paramTyp, extInner);\n parameterV40.ParamValue as paramValue then {\n paramValue.data as data -> extension.extension as extInner then InnerExtensionParamValue(data, extInner);\n };\n}\n\ngroup InnerExtensionParamTyp(source src, target ext : Extension) {\n src -> ext.url = 'ParamTyp' "url";\n src -> ext.value = create('CodeableConcept') as cc, cc.text as text, text.value = src "string";\n}\n\ngroup InnerExtensionParamValue(source src, target ext : Extension) {\n src -> ext.url = 'ParamValue' "url";\n src -> ext.value = create('string') as string, string.value = src "string";\n}\n\ngroup ServiceToPatientName(source visit : Visit, target name : HumanName) {\n visit.PatientName as patientName then {\n patientName.data as data -> name.family = data "Name (PatientName) -";\n } "patientName";\n visit.PatientGivenName as patientGivenName then {\n patientGivenName.data as data -> name.given = data "Vorname (PatientGivenName) -";\n } "patientGivenName";\n}\n\ngroup ServiceToPatient(source service : Service, source visit : Visit, target patient : Patient) {\n visit.PatientID as patientID then {\n patientID.data as patId -> 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') "PID (PatientID)";\n } "patientID";\n // <!-- 2.2 Patient.PID (PatientID) -->\n visit where (visit.PatientName or visit.PatientGivenName) -> patient.name as name then ServiceToPatientName(visit, name) "ServiceToPatient";\n visit.PatientGender as gender then {\n gender.data as v -> patient.gender = translate(v, '#gender', 'code') "gender";\n } "Geschlecht (PatientGender)";\n visit.PatientBirthDate as birthDate then {\n birthDate.data as v -> patient.birthDate = v "birthDate";\n } "GebDatum (PatientBirthDate)";\n}\n\ngroup DiagGroupToCondition(source diagGroup : DiagGroup, target cond : Condition) {\n diagGroup -> cond.subject = create('Reference') as ref, ref.reference = '#pat' "containedpatient";\n diagGroup.DiagCode as data -> 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 -> coding.system = translate(data, '#serviceMap', 'code') "3 Katalogtyp (DiagCatType)";\n } "serviceType";\n } "1 Diagnosecode (DiagCode)";\n}\n\ngroup TerminationToExtension(source visit : Visit, target ext : Extension) {\n visit.TerminationVisit as visit then {\n visit.data as data -> ext.extension as ext1, ext1.url = 'TerminationVisit', ext1.value = create('date') as date, date.value = data "7 Fall Abschluss (TerminationVisit)";\n };\n visit.TerminationReason as visit then {\n visit.data as data -> ext.extension as ext1, ext1.url = 'TerminationReason', ext1.value = create('string') as string, string.value = data "8 Fall Abschlussgrund (TerminationReason)";\n } "TerminationVisit";\n}\n\ngroup VisitToEncounter(source visit : Visit, target encounter : Encounter) {\n visit where (visit.TerminationVisit or visit.TerminationReason) -> encounter.extension as ext, ext.url = 'http://fhir.ch/ig/ch-alis/StructureDefinition/ch-alis-ext-termination' then TerminationToExtension(visit, ext) "TerminationToExtension";\n visit.VisitNumber as visitNumber then {\n // ISSUE9: what to do with falldomain? <system value="http://www.example.ch/fallnummerdomain"/>\n visitNumber.data as data -> 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') "1 Fall (VisitNumber)";\n } "encounterID";\n visit -> encounter.status = 'finished' "Finished";\n visit -> encounter.class = cc('http://terminology.hl7.org/CodeSystem/v3-ActCode', 'IMP') "inpatient encounter";\n visit -> encounter.subject = create('Reference') as ref, ref.reference = '#pat' "subject";\n visit.DiagGroup as diaggroup -> encounter.diagnosis as diag, diag.condition = create('Reference') as ref, ref.reference = '#cond' then {\n diaggroup.DiagType as diagType -> diag.use as use, use.text = (%diagType.data) "2 Diagnosetyp (DiagType)";\n } "9 DiagnoseGruppe (DiagGroup)";\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"
}
]
}
]
}
]
}
]
}
]
}