German Practice Management FHIR Profiles (R4)
0.90.0 - STU1
Germany
German Practice Management FHIR Profiles (R4) - Local Development build (v0.90.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
| Active as of 2026-07-29 |
{
"resourceType" : "StructureMap",
"id" : "map-upper-arm-injection",
"text" : {
"status" : "generated",
"div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p class=\"res-header-id\"><b>Generated Narrative: StructureMap map-upper-arm-injection</b></p><a name=\"map-upper-arm-injection\"> </a><a name=\"hcmap-upper-arm-injection\"> </a><pre class=\"fml\">\r\n<b>map</b><span style=\"color: navy\"> "</span>https://fhir.cognovis.de/praxis/StructureMap/map-upper-arm-injection<span style=\"color: navy\">" = "</span>MapUpperArmInjection<span style=\"color: navy\">"\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">EXAMPLE-ONLY worked StructureMap for the upper-arm injection Job (GOÄ 252). Not a curated production binding discovery artifact. Executed by the bounded R4 StructureMap rule-tree interpreter. Composition/Condition/Observation/Procedure/ChargeItem candidates. QR.subject/.encounter/.author/.authored supply Composition context (never fabricated). ChargeItem.code is Job-fixed GOÄ 252 (http://fhir.de/CodeSystem/bäk/goä#252); definitionCanonical from cid.primary answer.valueUri only. Procedure carries instantiatesCanonical to the Job; basedOn only when a real ServiceRequest exists (separate fixture, not this map). Binding identity: (job-upper-arm-injection|0.90.0, q-upper-arm-injection|0.90.0, map-upper-arm-injection|0.90.0).</span>\r\n\r\n<b>uses</b><span style=\"color: navy\"> "</span><a href=\"http://hl7.org/fhir/R4/questionnaireresponse.html\" title=\"QuestionnaireResponse\">http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse</a><span style=\"color: navy\">" </span><b>alias </b>qr <b>as </b><b>source</b>\r\n<b>uses</b><span style=\"color: navy\"> "</span><a href=\"http://hl7.org/fhir/R4/bundle.html\" title=\"Bundle\">http://hl7.org/fhir/StructureDefinition/Bundle</a><span style=\"color: navy\">" </span><b>alias </b>bundle <b>as </b><b>target</b>\r\n\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Bind QuestionnaireResponse.subject/.encounter/.author/.authored (standard QR fields; not duplicated Questionnaire items), then invoke fillCondition / fillDocumentation / fillProcedure / fillChargeItems / fillComposition.</span>\r\n<b>group </b>main<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">qr</span><span style=\"color: navy\"> : </span>QuestionnaireResponse, <b>target</b> <span style=\"color: maroon\">bundle</span><span style=\"color: navy\"> : </span>Bundle<span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>bundle.type = <span style=\"color: blue\">'collection'</span> <i>"bundleType"</i><span style=\"color: navy\">;</span>\r\n qr.subject<b> as </b><span style=\"color: maroon\">subjectRef</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr.encounter<b> as </b><span style=\"color: maroon\">encRef</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr.author<b> as </b><span style=\"color: maroon\">authorRef</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr.authored<b> as </b><span style=\"color: maroon\">authoredDt</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr.item<b> as </b><span style=\"color: maroon\">diagCodingItem</span><b> where </b><span style=\"color: navy\">(</span>linkId = 'diag.icd'<span style=\"color: navy\">)</span><b> then </b>fillCondition<span style=\"color: navy\">(</span><span style=\"color: maroon\">diagCodingItem</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">bundle</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">subjectRef</span><span style=\"color: navy\">)</span> <i>"invokeFillCondition"</i><span style=\"color: navy\">;</span>\r\n qr.item<b> as </b><span style=\"color: maroon\">noteItem</span><b> where </b><span style=\"color: navy\">(</span>linkId = 'doc.note'<span style=\"color: navy\">)</span><b> then </b>fillDocumentation<span style=\"color: navy\">(</span><span style=\"color: maroon\">noteItem</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">bundle</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">subjectRef</span><span style=\"color: navy\">)</span> <i>"invokeFillDocumentation"</i><span style=\"color: navy\">;</span>\r\n qr.item<b> as </b><span style=\"color: maroon\">perfItem</span><b> where </b><span style=\"color: navy\">(</span>linkId = 'svc.performed' and answer.valueBoolean = true<span style=\"color: navy\">)</span><b> then </b>fillProcedure<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">bundle</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">subjectRef</span><span style=\"color: navy\">)</span> <i>"invokeFillProcedure"</i><span style=\"color: navy\">;</span>\r\n qr<b> as </b><span style=\"color: maroon\">qrForCharges</span><b> then </b>fillChargeItems<span style=\"color: navy\">(</span><span style=\"color: maroon\">qrForCharges</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">bundle</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">subjectRef</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">encRef</span><span style=\"color: navy\">)</span> <i>"invokeFillChargeItems"</i><span style=\"color: navy\">;</span>\r\n qr<b> as </b><span style=\"color: maroon\">qrForComp</span><b> then </b>fillComposition<span style=\"color: navy\">(</span><span style=\"color: maroon\">qrForComp</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">bundle</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">subjectRef</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">encRef</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">authorRef</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">authoredDt</span><span style=\"color: navy\">)</span> <i>"invokeFillComposition"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"bindAuthoredFromQr"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"bindAuthorFromQr"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"bindEncounterFromQr"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"bindSubjectFromQr"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">diag.icd answer.valueCoding -> Condition; verificationStatus=unconfirmed; subject from QR.subject.</span>\r\n<b>group </b>fillCondition<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">diagItem</span>, <b>target</b> <span style=\"color: maroon\">bundle</span><span style=\"color: navy\"> : </span>Bundle, <b>source</b> <span style=\"color: maroon\">subjectRef</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> diagItem.answer<b> as </b><span style=\"color: maroon\">ans</span><b> then</b><span style=\"color: navy\"> {\r\n</span> ans.value<span style=\"color: navy\"> : </span>Coding<b> as </b><span style=\"color: maroon\">coding</span><span style=\"color: navy\"><b> -> </b></span> bundle.entry = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">condEntry</span><span style=\"color: navy\">, </span> condEntry.fullUrl = <span style=\"color: blue\">'urn:uuid:00000000-0000-4000-8000-000000000001'</span><span style=\"color: navy\">, </span> condEntry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Condition'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">cond</span><span style=\"color: navy\">, </span> cond.code = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'CodeableConcept'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">condCode</span><span style=\"color: navy\">, </span> condCode.coding = <span style=\"color: maroon\">coding</span><span style=\"color: navy\">, </span> cond.verificationStatus = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'CodeableConcept'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">ver</span><span style=\"color: navy\">, </span> ver.coding = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Coding'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">verCoding</span><span style=\"color: navy\">, </span> verCoding.system = <span style=\"color: blue\">'http://terminology.hl7.org/CodeSystem/condition-ver-status'</span><span style=\"color: navy\">, </span> verCoding.code = <span style=\"color: blue\">'unconfirmed'</span><span style=\"color: navy\">, </span> cond.clinicalStatus = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'CodeableConcept'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">clin</span><span style=\"color: navy\">, </span> clin.coding = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Coding'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">clinCoding</span><span style=\"color: navy\">, </span> clinCoding.system = <span style=\"color: blue\">'http://terminology.hl7.org/CodeSystem/condition-clinical'</span><span style=\"color: navy\">, </span> clinCoding.code = <span style=\"color: blue\">'active'</span><span style=\"color: navy\">, </span> cond.subject = <span style=\"color: maroon\">subjectRef</span> <i>"codingValue"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"conditionFromValueCoding"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">doc.note answer.valueString -> Observation.value (serialized as valueString) status=preliminary.</span>\r\n<b>group </b>fillDocumentation<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">noteItem</span>, <b>target</b> <span style=\"color: maroon\">bundle</span><span style=\"color: navy\"> : </span>Bundle, <b>source</b> <span style=\"color: maroon\">subjectRef</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> noteItem.answer<b> as </b><span style=\"color: maroon\">ans</span><b> then</b><span style=\"color: navy\"> {\r\n</span> ans.value<span style=\"color: navy\"> : </span>string<b> as </b><span style=\"color: maroon\">text</span><span style=\"color: navy\"><b> -> </b></span> bundle.entry = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">obsEntry</span><span style=\"color: navy\">, </span> obsEntry.fullUrl = <span style=\"color: blue\">'urn:uuid:00000000-0000-4000-8000-000000000002'</span><span style=\"color: navy\">, </span> obsEntry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Observation'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">obs</span><span style=\"color: navy\">, </span> obs.status = <span style=\"color: blue\">'preliminary'</span><span style=\"color: navy\">, </span> obs.code = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'CodeableConcept'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">obsCode</span><span style=\"color: navy\">, </span> obsCode.coding = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Coding'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">obsCoding</span><span style=\"color: navy\">, </span> obsCoding.system = <span style=\"color: blue\">'http://snomed.info/sct'</span><span style=\"color: navy\">, </span> obsCoding.code = <span style=\"color: blue\">'371524004'</span><span style=\"color: navy\">, </span> obs.value = <span style=\"color: maroon\">text</span><span style=\"color: navy\">, </span> obs.subject = <span style=\"color: maroon\">subjectRef</span> <i>"stringValue"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"obsFromValueString"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">bodySiteFromValueCoding + SNOMED laterality; status=preparation; reasonReference from diag.condition.</span>\r\n<b>group </b>fillProcedure<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">qr</span><span style=\"color: navy\"> : </span>QuestionnaireResponse, <b>target</b> <span style=\"color: maroon\">bundle</span><span style=\"color: navy\"> : </span>Bundle, <b>source</b> <span style=\"color: maroon\">subjectRef</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> qr.item<b> as </b><span style=\"color: maroon\">siteItem</span><b> where </b><span style=\"color: navy\">(</span>linkId = 'site.bodySite'<span style=\"color: navy\">)</span><span style=\"color: navy\">, </span>qr.item<b> as </b><span style=\"color: maroon\">latItem</span><b> where </b><span style=\"color: navy\">(</span>linkId = 'site.laterality'<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span> siteItem.answer<b> as </b><span style=\"color: maroon\">siteAns</span><b> then</b><span style=\"color: navy\"> {\r\n</span> siteAns.value<span style=\"color: navy\"> : </span>Coding<b> as </b><span style=\"color: maroon\">siteCoding</span><b> then</b><span style=\"color: navy\"> {\r\n</span> latItem.answer<b> as </b><span style=\"color: maroon\">latAns</span><b> then</b><span style=\"color: navy\"> {\r\n</span> latAns.value<span style=\"color: navy\"> : </span>Coding<b> as </b><span style=\"color: maroon\">latCoding</span><span style=\"color: navy\"><b> -> </b></span> bundle.entry = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">procEntry</span><span style=\"color: navy\">, </span> procEntry.fullUrl = <span style=\"color: blue\">'urn:uuid:00000000-0000-4000-8000-000000000003'</span><span style=\"color: navy\">, </span> procEntry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Procedure'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">proc</span><span style=\"color: navy\">, </span> proc.status = <span style=\"color: blue\">'preparation'</span><span style=\"color: navy\">, </span> proc.code = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'CodeableConcept'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">procCode</span><span style=\"color: navy\">, </span> procCode.coding = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Coding'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">procCoding</span><span style=\"color: navy\">, </span> procCoding.system = <span style=\"color: blue\">'http://snomed.info/sct'</span><span style=\"color: navy\">, </span> procCoding.code = <span style=\"color: blue\">'59108006'</span><span style=\"color: navy\">, </span> proc.subject = <span style=\"color: maroon\">subjectRef</span><span style=\"color: navy\">, </span> proc.instantiatesCanonical = <span style=\"color: blue\">'https://fhir.cognovis.de/praxis/PlanDefinition/job-upper-arm-injection|0.90.0'</span><span style=\"color: navy\">, </span> proc.bodySite = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'CodeableConcept'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">bs</span><span style=\"color: navy\">, </span> bs.coding = <span style=\"color: maroon\">siteCoding</span><span style=\"color: navy\">, </span> bs.coding = <span style=\"color: maroon\">latCoding</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr.item<b> as </b><span style=\"color: maroon\">diagRefItem</span><b> where </b><span style=\"color: navy\">(</span>linkId = 'diag.condition'<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span> diagRefItem.answer<b> as </b><span style=\"color: maroon\">drAns</span><b> then</b><span style=\"color: navy\"> {\r\n</span> drAns.value<span style=\"color: navy\"> : </span>Reference<b> as </b><span style=\"color: maroon\">reasonRef</span><span style=\"color: navy\"><b> -> </b></span>proc.reasonReference = <span style=\"color: maroon\">reasonRef</span> <i>"diagRefValue"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"diagRefAnswer"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"reasonFromConditionRef"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"latValue"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"latAnswer"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"siteValue"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"siteAnswer"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"bodySiteFromValueCoding"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">One ChargeItem per runtime contract (cid.primary answer.valueUri). ChargeItem.code is the Job-fixed GOÄ 252 Coding (http://fhir.de/CodeSystem/bäk/goä), never derived from CID identity or service codes. context from QR.encounter; subject from QR.subject; 1:n service lineage when performed; supportingInformation from diag.condition.</span>\r\n<b>group </b>fillChargeItems<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">qr</span><span style=\"color: navy\"> : </span>QuestionnaireResponse, <b>target</b> <span style=\"color: maroon\">bundle</span><span style=\"color: navy\"> : </span>Bundle, <b>source</b> <span style=\"color: maroon\">subjectRef</span>, <b>source</b> <span style=\"color: maroon\">encRef</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> qr.item<b> as </b><span style=\"color: maroon\">cidItem</span><b> where </b><span style=\"color: navy\">(</span>linkId = 'cid.primary'<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span> cidItem.answer<b> as </b><span style=\"color: maroon\">cidAns</span><b> then</b><span style=\"color: navy\"> {\r\n</span> cidAns.value<span style=\"color: navy\"> : </span>uri<b> as </b><span style=\"color: maroon\">primaryCid</span><span style=\"color: navy\"><b> -> </b></span> bundle.entry = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">chg1Entry</span><span style=\"color: navy\">, </span> chg1Entry.fullUrl = <span style=\"color: blue\">'urn:uuid:00000000-0000-4000-8000-000000000004'</span><span style=\"color: navy\">, </span> chg1Entry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'ChargeItem'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">chg1</span><span style=\"color: navy\">, </span> chg1.status = <span style=\"color: blue\">'planned'</span><span style=\"color: navy\">, </span> chg1.subject = <span style=\"color: maroon\">subjectRef</span><span style=\"color: navy\">, </span> chg1.context = <span style=\"color: maroon\">encRef</span><span style=\"color: navy\">, </span> chg1.code = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'CodeableConcept'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">chgCode</span><span style=\"color: navy\">, </span> chgCode.coding = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Coding'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">fixedCoding</span><span style=\"color: navy\">, </span> fixedCoding.system = <span style=\"color: blue\">'http://fhir.de/CodeSystem/bäk/goä'</span><span style=\"color: navy\">, </span> fixedCoding.code = <span style=\"color: blue\">'252'</span><span style=\"color: navy\">, </span> fixedCoding.display = <span style=\"color: blue\">'Injektion, s.c./s.m./i.c./i.m.'</span><span style=\"color: navy\">, </span> chg1.definitionCanonical = <span style=\"color: maroon\">primaryCid</span><span style=\"color: navy\">, </span> chg1.quantity = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Quantity'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">qty</span><span style=\"color: navy\">, </span> qty.value = <span style=\"color: blue\">1</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr.item<b> as </b><span style=\"color: maroon\">amtItem</span><b> where </b><span style=\"color: navy\">(</span>linkId = 'fee.amount'<span style=\"color: navy\">)</span><span style=\"color: navy\">, </span>qr.item<b> as </b><span style=\"color: maroon\">curItem</span><b> where </b><span style=\"color: navy\">(</span>linkId = 'fee.currency'<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span> amtItem.answer<b> as </b><span style=\"color: maroon\">amtAns</span><b> then</b><span style=\"color: navy\"> {\r\n</span> amtAns.value<span style=\"color: navy\"> : </span>decimal<b> as </b><span style=\"color: maroon\">amount</span><b> then</b><span style=\"color: navy\"> {\r\n</span> curItem.answer<b> as </b><span style=\"color: maroon\">curAns</span><b> then</b><span style=\"color: navy\"> {\r\n</span> curAns.value<span style=\"color: navy\"> : </span>Coding<b> as </b><span style=\"color: maroon\">curCoding</span><b> then</b><span style=\"color: navy\"> {\r\n</span> curCoding.code<b> as </b><span style=\"color: maroon\">currencyCode</span><span style=\"color: navy\"><b> -> </b></span> chg1.priceOverride = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Money'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">money</span><span style=\"color: navy\">, </span> money.value = <span style=\"color: maroon\">amount</span><span style=\"color: navy\">, </span> money.currency = <span style=\"color: maroon\">currencyCode</span> <i>"currencyCode"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"currencyValue"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"currencyAnswer"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"amountValue"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"amountAnswer"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"moneyFromParts"</i><span style=\"color: navy\">;</span>\r\n qr.item<b> as </b><span style=\"color: maroon\">perfItem</span><b> where </b><span style=\"color: navy\">(</span>linkId = 'svc.performed' and answer.valueBoolean = true<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span> chg1.service = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Reference'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">svcProc</span><span style=\"color: navy\">, </span> svcProc.reference = <span style=\"color: blue\">'urn:uuid:00000000-0000-4000-8000-000000000003'</span><span style=\"color: navy\">, </span> chg1.service = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Reference'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">svcObs</span><span style=\"color: navy\">, </span> svcObs.reference = <span style=\"color: blue\">'urn:uuid:00000000-0000-4000-8000-000000000002'</span> <i>"serviceWhenPerformedPrimary"</i><span style=\"color: navy\">;</span>\r\n qr.item<b> as </b><span style=\"color: maroon\">diagRefItem2</span><b> where </b><span style=\"color: navy\">(</span>linkId = 'diag.condition'<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span> diagRefItem2.answer<b> as </b><span style=\"color: maroon\">dr2Ans</span><b> then</b><span style=\"color: navy\"> {\r\n</span> dr2Ans.value<span style=\"color: navy\"> : </span>Reference<b> as </b><span style=\"color: maroon\">reasonRef2</span><span style=\"color: navy\"><b> -> </b></span>chg1.supportingInformation = <span style=\"color: maroon\">reasonRef2</span> <i>"dr2Value"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"dr2Answer"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"supportingInfoFromConditionRef"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"cidValue"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"cidAnswer"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"primaryFromValueUri"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">Composition proposal (status=preliminary). subject/encounter/author/date from QR.subject/.encounter/.author/.authored only — never fabricated. Sections Reference generated Observation/ChargeItem UUIDs; optional Procedure/Condition sections when those outputs are produced.</span>\r\n<b>group </b>fillComposition<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">qr</span><span style=\"color: navy\"> : </span>QuestionnaireResponse, <b>target</b> <span style=\"color: maroon\">bundle</span><span style=\"color: navy\"> : </span>Bundle, <b>source</b> <span style=\"color: maroon\">subjectRef</span>, <b>source</b> <span style=\"color: maroon\">encRef</span>, <b>source</b> <span style=\"color: maroon\">authorRef</span>, <b>source</b> <span style=\"color: maroon\">authoredDt</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span> bundle.entry = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">compEntry</span><span style=\"color: navy\">, </span> compEntry.fullUrl = <span style=\"color: blue\">'urn:uuid:00000000-0000-4000-8000-000000000006'</span><span style=\"color: navy\">, </span> compEntry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Composition'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">comp</span><span style=\"color: navy\">, </span> comp.status = <span style=\"color: blue\">'preliminary'</span><span style=\"color: navy\">, </span> comp.type = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'CodeableConcept'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">compType</span><span style=\"color: navy\">, </span> compType.coding = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Coding'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">compTypeCoding</span><span style=\"color: navy\">, </span> compTypeCoding.system = <span style=\"color: blue\">'http://loinc.org'</span><span style=\"color: navy\">, </span> compTypeCoding.code = <span style=\"color: blue\">'11506-3'</span><span style=\"color: navy\">, </span> compTypeCoding.display = <span style=\"color: blue\">'Progress note'</span><span style=\"color: navy\">, </span> comp.title = <span style=\"color: blue\">'Upper-arm injection visit - pre-approval proposal'</span><span style=\"color: navy\">, </span> comp.subject = <span style=\"color: maroon\">subjectRef</span><span style=\"color: navy\">, </span> comp.encounter = <span style=\"color: maroon\">encRef</span><span style=\"color: navy\">, </span> comp.author = <span style=\"color: maroon\">authorRef</span><span style=\"color: navy\">, </span> comp.date = <span style=\"color: maroon\">authoredDt</span><span style=\"color: navy\">, </span> comp.section = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">secDoc</span><span style=\"color: navy\">, </span> secDoc.title = <span style=\"color: blue\">'Documentation'</span><span style=\"color: navy\">, </span> secDoc.entry = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Reference'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">docEntry</span><span style=\"color: navy\">, </span> docEntry.reference = <span style=\"color: blue\">'urn:uuid:00000000-0000-4000-8000-000000000002'</span><span style=\"color: navy\">, </span> comp.section = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">secBill</span><span style=\"color: navy\">, </span> secBill.title = <span style=\"color: blue\">'Billing proposal'</span><span style=\"color: navy\">, </span> secBill.entry = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Reference'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">billEntry</span><span style=\"color: navy\">, </span> billEntry.reference = <span style=\"color: blue\">'urn:uuid:00000000-0000-4000-8000-000000000004'</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr.item<b> as </b><span style=\"color: maroon\">perfItem</span><b> where </b><span style=\"color: navy\">(</span>linkId = 'svc.performed' and answer.valueBoolean = true<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span> comp.section = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">secProc</span><span style=\"color: navy\">, </span> secProc.title = <span style=\"color: blue\">'Procedure proposal'</span><span style=\"color: navy\">, </span> secProc.entry = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Reference'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">procEntryRef</span><span style=\"color: navy\">, </span> procEntryRef.reference = <span style=\"color: blue\">'urn:uuid:00000000-0000-4000-8000-000000000003'</span> <i>"sectionProcedureWhenPerformed"</i><span style=\"color: navy\">;</span>\r\n qr.item<b> as </b><span style=\"color: maroon\">diagCodingItem</span><b> where </b><span style=\"color: navy\">(</span>linkId = 'diag.icd'<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span> comp.section = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">secDx</span><span style=\"color: navy\">, </span> secDx.title = <span style=\"color: blue\">'Diagnosis proposal'</span><span style=\"color: navy\">, </span> secDx.entry = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Reference'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">dxEntry</span><span style=\"color: navy\">, </span> dxEntry.reference = <span style=\"color: blue\">'urn:uuid:00000000-0000-4000-8000-000000000001'</span> <i>"sectionDiagnosisWhenCoding"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"compositionShell"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span></pre></div>"
},
"url" : "https://fhir.cognovis.de/praxis/StructureMap/map-upper-arm-injection",
"identifier" : [
{
"system" : "urn:ietf:rfc:3986",
"value" : "urn:oid:2.16.840.1.113883.3.7985.43.1"
}
],
"version" : "0.90.0",
"name" : "MapUpperArmInjection",
"title" : "Upper-arm injection Job — QuestionnaireResponse to pre-approval candidate Bundle",
"status" : "active",
"experimental" : true,
"date" : "2026-07-29T13:00:36+02:00",
"publisher" : "cognovis GmbH",
"contact" : [
{
"name" : "cognovis GmbH",
"telecom" : [
{
"system" : "url",
"value" : "https://www.cognovis.de"
},
{
"system" : "email",
"value" : "info@cognovis.de"
}
]
}
],
"description" : "EXAMPLE-ONLY worked StructureMap for the upper-arm injection Job (GOÄ 252). Not a curated production binding discovery artifact. Executed by the bounded R4 StructureMap rule-tree interpreter. Composition/Condition/Observation/Procedure/ChargeItem candidates. QR.subject/.encounter/.author/.authored supply Composition context (never fabricated). ChargeItem.code is Job-fixed GOÄ 252 (http://fhir.de/CodeSystem/bäk/goä#252); definitionCanonical from cid.primary answer.valueUri only. Procedure carries instantiatesCanonical to the Job; basedOn only when a real ServiceRequest exists (separate fixture, not this map). Binding identity: (job-upper-arm-injection|0.90.0, q-upper-arm-injection|0.90.0, map-upper-arm-injection|0.90.0).",
"jurisdiction" : [
{
"coding" : [
{
"system" : "urn:iso:std:iso:3166",
"code" : "DE",
"display" : "Germany"
}
]
}
],
"structure" : [
{
"url" : "http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse",
"mode" : "source",
"alias" : "qr"
},
{
"url" : "http://hl7.org/fhir/StructureDefinition/Bundle",
"mode" : "target",
"alias" : "bundle"
}
],
"group" : [
{
"name" : "main",
"typeMode" : "none",
"documentation" : "Bind QuestionnaireResponse.subject/.encounter/.author/.authored (standard QR fields; not duplicated Questionnaire items), then invoke fillCondition / fillDocumentation / fillProcedure / fillChargeItems / fillComposition.",
"input" : [
{
"name" : "qr",
"type" : "QuestionnaireResponse",
"mode" : "source"
},
{
"name" : "bundle",
"type" : "Bundle",
"mode" : "target"
}
],
"rule" : [
{
"name" : "bundleType",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "bundle",
"contextType" : "variable",
"element" : "type",
"transform" : "copy",
"parameter" : [
{
"valueString" : "collection"
}
]
}
]
},
{
"name" : "bindSubjectFromQr",
"source" : [
{
"context" : "qr",
"element" : "subject",
"variable" : "subjectRef"
}
],
"rule" : [
{
"name" : "bindEncounterFromQr",
"source" : [
{
"context" : "qr",
"element" : "encounter",
"variable" : "encRef"
}
],
"rule" : [
{
"name" : "bindAuthorFromQr",
"source" : [
{
"context" : "qr",
"element" : "author",
"variable" : "authorRef"
}
],
"rule" : [
{
"name" : "bindAuthoredFromQr",
"source" : [
{
"context" : "qr",
"element" : "authored",
"variable" : "authoredDt"
}
],
"rule" : [
{
"name" : "invokeFillCondition",
"source" : [
{
"context" : "qr",
"element" : "item",
"variable" : "diagCodingItem",
"condition" : "linkId = 'diag.icd'"
}
],
"dependent" : [
{
"name" : "fillCondition",
"variable" : [
"diagCodingItem",
"bundle",
"subjectRef"
]
}
]
},
{
"name" : "invokeFillDocumentation",
"source" : [
{
"context" : "qr",
"element" : "item",
"variable" : "noteItem",
"condition" : "linkId = 'doc.note'"
}
],
"dependent" : [
{
"name" : "fillDocumentation",
"variable" : [
"noteItem",
"bundle",
"subjectRef"
]
}
]
},
{
"name" : "invokeFillProcedure",
"source" : [
{
"context" : "qr",
"element" : "item",
"variable" : "perfItem",
"condition" : "linkId = 'svc.performed' and answer.valueBoolean = true"
}
],
"dependent" : [
{
"name" : "fillProcedure",
"variable" : [
"qr",
"bundle",
"subjectRef"
]
}
]
},
{
"name" : "invokeFillChargeItems",
"source" : [
{
"context" : "qr",
"variable" : "qrForCharges"
}
],
"dependent" : [
{
"name" : "fillChargeItems",
"variable" : [
"qrForCharges",
"bundle",
"subjectRef",
"encRef"
]
}
]
},
{
"name" : "invokeFillComposition",
"source" : [
{
"context" : "qr",
"variable" : "qrForComp"
}
],
"dependent" : [
{
"name" : "fillComposition",
"variable" : [
"qrForComp",
"bundle",
"subjectRef",
"encRef",
"authorRef",
"authoredDt"
]
}
]
}
]
}
]
}
]
}
]
}
]
},
{
"name" : "fillCondition",
"typeMode" : "none",
"documentation" : "diag.icd answer.valueCoding -> Condition; verificationStatus=unconfirmed; subject from QR.subject.",
"input" : [
{
"name" : "diagItem",
"mode" : "source"
},
{
"name" : "bundle",
"type" : "Bundle",
"mode" : "target"
},
{
"name" : "subjectRef",
"mode" : "source"
}
],
"rule" : [
{
"name" : "conditionFromValueCoding",
"source" : [
{
"context" : "diagItem",
"element" : "answer",
"variable" : "ans"
}
],
"rule" : [
{
"name" : "codingValue",
"source" : [
{
"context" : "ans",
"type" : "Coding",
"element" : "value",
"variable" : "coding"
}
],
"target" : [
{
"context" : "bundle",
"contextType" : "variable",
"element" : "entry",
"variable" : "condEntry",
"transform" : "create"
},
{
"context" : "condEntry",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "copy",
"parameter" : [
{
"valueString" : "urn:uuid:00000000-0000-4000-8000-000000000001"
}
]
},
{
"context" : "condEntry",
"contextType" : "variable",
"element" : "resource",
"variable" : "cond",
"transform" : "create",
"parameter" : [
{
"valueString" : "Condition"
}
]
},
{
"context" : "cond",
"contextType" : "variable",
"element" : "code",
"variable" : "condCode",
"transform" : "create",
"parameter" : [
{
"valueString" : "CodeableConcept"
}
]
},
{
"context" : "condCode",
"contextType" : "variable",
"element" : "coding",
"transform" : "copy",
"parameter" : [
{
"valueId" : "coding"
}
]
},
{
"context" : "cond",
"contextType" : "variable",
"element" : "verificationStatus",
"variable" : "ver",
"transform" : "create",
"parameter" : [
{
"valueString" : "CodeableConcept"
}
]
},
{
"context" : "ver",
"contextType" : "variable",
"element" : "coding",
"variable" : "verCoding",
"transform" : "create",
"parameter" : [
{
"valueString" : "Coding"
}
]
},
{
"context" : "verCoding",
"contextType" : "variable",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://terminology.hl7.org/CodeSystem/condition-ver-status"
}
]
},
{
"context" : "verCoding",
"contextType" : "variable",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "unconfirmed"
}
]
},
{
"context" : "cond",
"contextType" : "variable",
"element" : "clinicalStatus",
"variable" : "clin",
"transform" : "create",
"parameter" : [
{
"valueString" : "CodeableConcept"
}
]
},
{
"context" : "clin",
"contextType" : "variable",
"element" : "coding",
"variable" : "clinCoding",
"transform" : "create",
"parameter" : [
{
"valueString" : "Coding"
}
]
},
{
"context" : "clinCoding",
"contextType" : "variable",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://terminology.hl7.org/CodeSystem/condition-clinical"
}
]
},
{
"context" : "clinCoding",
"contextType" : "variable",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "active"
}
]
},
{
"context" : "cond",
"contextType" : "variable",
"element" : "subject",
"transform" : "copy",
"parameter" : [
{
"valueId" : "subjectRef"
}
]
}
]
}
]
}
]
},
{
"name" : "fillDocumentation",
"typeMode" : "none",
"documentation" : "doc.note answer.valueString -> Observation.value (serialized as valueString) status=preliminary.",
"input" : [
{
"name" : "noteItem",
"mode" : "source"
},
{
"name" : "bundle",
"type" : "Bundle",
"mode" : "target"
},
{
"name" : "subjectRef",
"mode" : "source"
}
],
"rule" : [
{
"name" : "obsFromValueString",
"source" : [
{
"context" : "noteItem",
"element" : "answer",
"variable" : "ans"
}
],
"rule" : [
{
"name" : "stringValue",
"source" : [
{
"context" : "ans",
"type" : "string",
"element" : "value",
"variable" : "text"
}
],
"target" : [
{
"context" : "bundle",
"contextType" : "variable",
"element" : "entry",
"variable" : "obsEntry",
"transform" : "create"
},
{
"context" : "obsEntry",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "copy",
"parameter" : [
{
"valueString" : "urn:uuid:00000000-0000-4000-8000-000000000002"
}
]
},
{
"context" : "obsEntry",
"contextType" : "variable",
"element" : "resource",
"variable" : "obs",
"transform" : "create",
"parameter" : [
{
"valueString" : "Observation"
}
]
},
{
"context" : "obs",
"contextType" : "variable",
"element" : "status",
"transform" : "copy",
"parameter" : [
{
"valueString" : "preliminary"
}
]
},
{
"context" : "obs",
"contextType" : "variable",
"element" : "code",
"variable" : "obsCode",
"transform" : "create",
"parameter" : [
{
"valueString" : "CodeableConcept"
}
]
},
{
"context" : "obsCode",
"contextType" : "variable",
"element" : "coding",
"variable" : "obsCoding",
"transform" : "create",
"parameter" : [
{
"valueString" : "Coding"
}
]
},
{
"context" : "obsCoding",
"contextType" : "variable",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://snomed.info/sct"
}
]
},
{
"context" : "obsCoding",
"contextType" : "variable",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "371524004"
}
]
},
{
"context" : "obs",
"contextType" : "variable",
"element" : "value",
"transform" : "copy",
"parameter" : [
{
"valueId" : "text"
}
]
},
{
"context" : "obs",
"contextType" : "variable",
"element" : "subject",
"transform" : "copy",
"parameter" : [
{
"valueId" : "subjectRef"
}
]
}
]
}
]
}
]
},
{
"name" : "fillProcedure",
"typeMode" : "none",
"documentation" : "bodySiteFromValueCoding + SNOMED laterality; status=preparation; reasonReference from diag.condition.",
"input" : [
{
"name" : "qr",
"type" : "QuestionnaireResponse",
"mode" : "source"
},
{
"name" : "bundle",
"type" : "Bundle",
"mode" : "target"
},
{
"name" : "subjectRef",
"mode" : "source"
}
],
"rule" : [
{
"name" : "bodySiteFromValueCoding",
"source" : [
{
"context" : "qr",
"element" : "item",
"variable" : "siteItem",
"condition" : "linkId = 'site.bodySite'"
},
{
"context" : "qr",
"element" : "item",
"variable" : "latItem",
"condition" : "linkId = 'site.laterality'"
}
],
"rule" : [
{
"name" : "siteAnswer",
"source" : [
{
"context" : "siteItem",
"element" : "answer",
"variable" : "siteAns"
}
],
"rule" : [
{
"name" : "siteValue",
"source" : [
{
"context" : "siteAns",
"type" : "Coding",
"element" : "value",
"variable" : "siteCoding"
}
],
"rule" : [
{
"name" : "latAnswer",
"source" : [
{
"context" : "latItem",
"element" : "answer",
"variable" : "latAns"
}
],
"rule" : [
{
"name" : "latValue",
"source" : [
{
"context" : "latAns",
"type" : "Coding",
"element" : "value",
"variable" : "latCoding"
}
],
"target" : [
{
"context" : "bundle",
"contextType" : "variable",
"element" : "entry",
"variable" : "procEntry",
"transform" : "create"
},
{
"context" : "procEntry",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "copy",
"parameter" : [
{
"valueString" : "urn:uuid:00000000-0000-4000-8000-000000000003"
}
]
},
{
"context" : "procEntry",
"contextType" : "variable",
"element" : "resource",
"variable" : "proc",
"transform" : "create",
"parameter" : [
{
"valueString" : "Procedure"
}
]
},
{
"context" : "proc",
"contextType" : "variable",
"element" : "status",
"transform" : "copy",
"parameter" : [
{
"valueString" : "preparation"
}
]
},
{
"context" : "proc",
"contextType" : "variable",
"element" : "code",
"variable" : "procCode",
"transform" : "create",
"parameter" : [
{
"valueString" : "CodeableConcept"
}
]
},
{
"context" : "procCode",
"contextType" : "variable",
"element" : "coding",
"variable" : "procCoding",
"transform" : "create",
"parameter" : [
{
"valueString" : "Coding"
}
]
},
{
"context" : "procCoding",
"contextType" : "variable",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://snomed.info/sct"
}
]
},
{
"context" : "procCoding",
"contextType" : "variable",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "59108006"
}
]
},
{
"context" : "proc",
"contextType" : "variable",
"element" : "subject",
"transform" : "copy",
"parameter" : [
{
"valueId" : "subjectRef"
}
]
},
{
"context" : "proc",
"contextType" : "variable",
"element" : "instantiatesCanonical",
"transform" : "copy",
"parameter" : [
{
"valueString" : "https://fhir.cognovis.de/praxis/PlanDefinition/job-upper-arm-injection|0.90.0"
}
]
},
{
"context" : "proc",
"contextType" : "variable",
"element" : "bodySite",
"variable" : "bs",
"transform" : "create",
"parameter" : [
{
"valueString" : "CodeableConcept"
}
]
},
{
"context" : "bs",
"contextType" : "variable",
"element" : "coding",
"transform" : "copy",
"parameter" : [
{
"valueId" : "siteCoding"
}
]
},
{
"context" : "bs",
"contextType" : "variable",
"element" : "coding",
"transform" : "copy",
"parameter" : [
{
"valueId" : "latCoding"
}
]
}
],
"rule" : [
{
"name" : "reasonFromConditionRef",
"source" : [
{
"context" : "qr",
"element" : "item",
"variable" : "diagRefItem",
"condition" : "linkId = 'diag.condition'"
}
],
"rule" : [
{
"name" : "diagRefAnswer",
"source" : [
{
"context" : "diagRefItem",
"element" : "answer",
"variable" : "drAns"
}
],
"rule" : [
{
"name" : "diagRefValue",
"source" : [
{
"context" : "drAns",
"type" : "Reference",
"element" : "value",
"variable" : "reasonRef"
}
],
"target" : [
{
"context" : "proc",
"contextType" : "variable",
"element" : "reasonReference",
"transform" : "copy",
"parameter" : [
{
"valueId" : "reasonRef"
}
]
}
]
}
]
}
]
}
]
}
]
}
]
}
]
}
]
}
]
},
{
"name" : "fillChargeItems",
"typeMode" : "none",
"documentation" : "One ChargeItem per runtime contract (cid.primary answer.valueUri). ChargeItem.code is the Job-fixed GOÄ 252 Coding (http://fhir.de/CodeSystem/bäk/goä), never derived from CID identity or service codes. context from QR.encounter; subject from QR.subject; 1:n service lineage when performed; supportingInformation from diag.condition.",
"input" : [
{
"name" : "qr",
"type" : "QuestionnaireResponse",
"mode" : "source"
},
{
"name" : "bundle",
"type" : "Bundle",
"mode" : "target"
},
{
"name" : "subjectRef",
"mode" : "source"
},
{
"name" : "encRef",
"mode" : "source"
}
],
"rule" : [
{
"name" : "primaryFromValueUri",
"source" : [
{
"context" : "qr",
"element" : "item",
"variable" : "cidItem",
"condition" : "linkId = 'cid.primary'"
}
],
"rule" : [
{
"name" : "cidAnswer",
"source" : [
{
"context" : "cidItem",
"element" : "answer",
"variable" : "cidAns"
}
],
"rule" : [
{
"name" : "cidValue",
"source" : [
{
"context" : "cidAns",
"type" : "uri",
"element" : "value",
"variable" : "primaryCid"
}
],
"target" : [
{
"context" : "bundle",
"contextType" : "variable",
"element" : "entry",
"variable" : "chg1Entry",
"transform" : "create"
},
{
"context" : "chg1Entry",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "copy",
"parameter" : [
{
"valueString" : "urn:uuid:00000000-0000-4000-8000-000000000004"
}
]
},
{
"context" : "chg1Entry",
"contextType" : "variable",
"element" : "resource",
"variable" : "chg1",
"transform" : "create",
"parameter" : [
{
"valueString" : "ChargeItem"
}
]
},
{
"context" : "chg1",
"contextType" : "variable",
"element" : "status",
"transform" : "copy",
"parameter" : [
{
"valueString" : "planned"
}
]
},
{
"context" : "chg1",
"contextType" : "variable",
"element" : "subject",
"transform" : "copy",
"parameter" : [
{
"valueId" : "subjectRef"
}
]
},
{
"context" : "chg1",
"contextType" : "variable",
"element" : "context",
"transform" : "copy",
"parameter" : [
{
"valueId" : "encRef"
}
]
},
{
"context" : "chg1",
"contextType" : "variable",
"element" : "code",
"variable" : "chgCode",
"transform" : "create",
"parameter" : [
{
"valueString" : "CodeableConcept"
}
]
},
{
"context" : "chgCode",
"contextType" : "variable",
"element" : "coding",
"variable" : "fixedCoding",
"transform" : "create",
"parameter" : [
{
"valueString" : "Coding"
}
]
},
{
"context" : "fixedCoding",
"contextType" : "variable",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://fhir.de/CodeSystem/bäk/goä"
}
]
},
{
"context" : "fixedCoding",
"contextType" : "variable",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "252"
}
]
},
{
"context" : "fixedCoding",
"contextType" : "variable",
"element" : "display",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Injektion, s.c./s.m./i.c./i.m."
}
]
},
{
"context" : "chg1",
"contextType" : "variable",
"element" : "definitionCanonical",
"transform" : "copy",
"parameter" : [
{
"valueId" : "primaryCid"
}
]
},
{
"context" : "chg1",
"contextType" : "variable",
"element" : "quantity",
"variable" : "qty",
"transform" : "create",
"parameter" : [
{
"valueString" : "Quantity"
}
]
},
{
"context" : "qty",
"contextType" : "variable",
"element" : "value",
"transform" : "copy",
"parameter" : [
{
"valueDecimal" : 1
}
]
}
],
"rule" : [
{
"name" : "moneyFromParts",
"source" : [
{
"context" : "qr",
"element" : "item",
"variable" : "amtItem",
"condition" : "linkId = 'fee.amount'"
},
{
"context" : "qr",
"element" : "item",
"variable" : "curItem",
"condition" : "linkId = 'fee.currency'"
}
],
"rule" : [
{
"name" : "amountAnswer",
"source" : [
{
"context" : "amtItem",
"element" : "answer",
"variable" : "amtAns"
}
],
"rule" : [
{
"name" : "amountValue",
"source" : [
{
"context" : "amtAns",
"type" : "decimal",
"element" : "value",
"variable" : "amount"
}
],
"rule" : [
{
"name" : "currencyAnswer",
"source" : [
{
"context" : "curItem",
"element" : "answer",
"variable" : "curAns"
}
],
"rule" : [
{
"name" : "currencyValue",
"source" : [
{
"context" : "curAns",
"type" : "Coding",
"element" : "value",
"variable" : "curCoding"
}
],
"rule" : [
{
"name" : "currencyCode",
"source" : [
{
"context" : "curCoding",
"element" : "code",
"variable" : "currencyCode"
}
],
"target" : [
{
"context" : "chg1",
"contextType" : "variable",
"element" : "priceOverride",
"variable" : "money",
"transform" : "create",
"parameter" : [
{
"valueString" : "Money"
}
]
},
{
"context" : "money",
"contextType" : "variable",
"element" : "value",
"transform" : "copy",
"parameter" : [
{
"valueId" : "amount"
}
]
},
{
"context" : "money",
"contextType" : "variable",
"element" : "currency",
"transform" : "copy",
"parameter" : [
{
"valueId" : "currencyCode"
}
]
}
]
}
]
}
]
}
]
}
]
}
]
},
{
"name" : "serviceWhenPerformedPrimary",
"source" : [
{
"context" : "qr",
"element" : "item",
"variable" : "perfItem",
"condition" : "linkId = 'svc.performed' and answer.valueBoolean = true"
}
],
"target" : [
{
"context" : "chg1",
"contextType" : "variable",
"element" : "service",
"variable" : "svcProc",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
},
{
"context" : "svcProc",
"contextType" : "variable",
"element" : "reference",
"transform" : "copy",
"parameter" : [
{
"valueString" : "urn:uuid:00000000-0000-4000-8000-000000000003"
}
]
},
{
"context" : "chg1",
"contextType" : "variable",
"element" : "service",
"variable" : "svcObs",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
},
{
"context" : "svcObs",
"contextType" : "variable",
"element" : "reference",
"transform" : "copy",
"parameter" : [
{
"valueString" : "urn:uuid:00000000-0000-4000-8000-000000000002"
}
]
}
]
},
{
"name" : "supportingInfoFromConditionRef",
"source" : [
{
"context" : "qr",
"element" : "item",
"variable" : "diagRefItem2",
"condition" : "linkId = 'diag.condition'"
}
],
"rule" : [
{
"name" : "dr2Answer",
"source" : [
{
"context" : "diagRefItem2",
"element" : "answer",
"variable" : "dr2Ans"
}
],
"rule" : [
{
"name" : "dr2Value",
"source" : [
{
"context" : "dr2Ans",
"type" : "Reference",
"element" : "value",
"variable" : "reasonRef2"
}
],
"target" : [
{
"context" : "chg1",
"contextType" : "variable",
"element" : "supportingInformation",
"transform" : "copy",
"parameter" : [
{
"valueId" : "reasonRef2"
}
]
}
]
}
]
}
]
}
]
}
]
}
]
}
]
},
{
"name" : "fillComposition",
"typeMode" : "none",
"documentation" : "Composition proposal (status=preliminary). subject/encounter/author/date from QR.subject/.encounter/.author/.authored only — never fabricated. Sections Reference generated Observation/ChargeItem UUIDs; optional Procedure/Condition sections when those outputs are produced.",
"input" : [
{
"name" : "qr",
"type" : "QuestionnaireResponse",
"mode" : "source"
},
{
"name" : "bundle",
"type" : "Bundle",
"mode" : "target"
},
{
"name" : "subjectRef",
"mode" : "source"
},
{
"name" : "encRef",
"mode" : "source"
},
{
"name" : "authorRef",
"mode" : "source"
},
{
"name" : "authoredDt",
"mode" : "source"
}
],
"rule" : [
{
"name" : "compositionShell",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "bundle",
"contextType" : "variable",
"element" : "entry",
"variable" : "compEntry",
"transform" : "create"
},
{
"context" : "compEntry",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "copy",
"parameter" : [
{
"valueString" : "urn:uuid:00000000-0000-4000-8000-000000000006"
}
]
},
{
"context" : "compEntry",
"contextType" : "variable",
"element" : "resource",
"variable" : "comp",
"transform" : "create",
"parameter" : [
{
"valueString" : "Composition"
}
]
},
{
"context" : "comp",
"contextType" : "variable",
"element" : "status",
"transform" : "copy",
"parameter" : [
{
"valueString" : "preliminary"
}
]
},
{
"context" : "comp",
"contextType" : "variable",
"element" : "type",
"variable" : "compType",
"transform" : "create",
"parameter" : [
{
"valueString" : "CodeableConcept"
}
]
},
{
"context" : "compType",
"contextType" : "variable",
"element" : "coding",
"variable" : "compTypeCoding",
"transform" : "create",
"parameter" : [
{
"valueString" : "Coding"
}
]
},
{
"context" : "compTypeCoding",
"contextType" : "variable",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://loinc.org"
}
]
},
{
"context" : "compTypeCoding",
"contextType" : "variable",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "11506-3"
}
]
},
{
"context" : "compTypeCoding",
"contextType" : "variable",
"element" : "display",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Progress note"
}
]
},
{
"context" : "comp",
"contextType" : "variable",
"element" : "title",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Upper-arm injection visit - pre-approval proposal"
}
]
},
{
"context" : "comp",
"contextType" : "variable",
"element" : "subject",
"transform" : "copy",
"parameter" : [
{
"valueId" : "subjectRef"
}
]
},
{
"context" : "comp",
"contextType" : "variable",
"element" : "encounter",
"transform" : "copy",
"parameter" : [
{
"valueId" : "encRef"
}
]
},
{
"context" : "comp",
"contextType" : "variable",
"element" : "author",
"transform" : "copy",
"parameter" : [
{
"valueId" : "authorRef"
}
]
},
{
"context" : "comp",
"contextType" : "variable",
"element" : "date",
"transform" : "copy",
"parameter" : [
{
"valueId" : "authoredDt"
}
]
},
{
"context" : "comp",
"contextType" : "variable",
"element" : "section",
"variable" : "secDoc",
"transform" : "create"
},
{
"context" : "secDoc",
"contextType" : "variable",
"element" : "title",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Documentation"
}
]
},
{
"context" : "secDoc",
"contextType" : "variable",
"element" : "entry",
"variable" : "docEntry",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
},
{
"context" : "docEntry",
"contextType" : "variable",
"element" : "reference",
"transform" : "copy",
"parameter" : [
{
"valueString" : "urn:uuid:00000000-0000-4000-8000-000000000002"
}
]
},
{
"context" : "comp",
"contextType" : "variable",
"element" : "section",
"variable" : "secBill",
"transform" : "create"
},
{
"context" : "secBill",
"contextType" : "variable",
"element" : "title",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Billing proposal"
}
]
},
{
"context" : "secBill",
"contextType" : "variable",
"element" : "entry",
"variable" : "billEntry",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
},
{
"context" : "billEntry",
"contextType" : "variable",
"element" : "reference",
"transform" : "copy",
"parameter" : [
{
"valueString" : "urn:uuid:00000000-0000-4000-8000-000000000004"
}
]
}
],
"rule" : [
{
"name" : "sectionProcedureWhenPerformed",
"source" : [
{
"context" : "qr",
"element" : "item",
"variable" : "perfItem",
"condition" : "linkId = 'svc.performed' and answer.valueBoolean = true"
}
],
"target" : [
{
"context" : "comp",
"contextType" : "variable",
"element" : "section",
"variable" : "secProc",
"transform" : "create"
},
{
"context" : "secProc",
"contextType" : "variable",
"element" : "title",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Procedure proposal"
}
]
},
{
"context" : "secProc",
"contextType" : "variable",
"element" : "entry",
"variable" : "procEntryRef",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
},
{
"context" : "procEntryRef",
"contextType" : "variable",
"element" : "reference",
"transform" : "copy",
"parameter" : [
{
"valueString" : "urn:uuid:00000000-0000-4000-8000-000000000003"
}
]
}
]
},
{
"name" : "sectionDiagnosisWhenCoding",
"source" : [
{
"context" : "qr",
"element" : "item",
"variable" : "diagCodingItem",
"condition" : "linkId = 'diag.icd'"
}
],
"target" : [
{
"context" : "comp",
"contextType" : "variable",
"element" : "section",
"variable" : "secDx",
"transform" : "create"
},
{
"context" : "secDx",
"contextType" : "variable",
"element" : "title",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Diagnosis proposal"
}
]
},
{
"context" : "secDx",
"contextType" : "variable",
"element" : "entry",
"variable" : "dxEntry",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
},
{
"context" : "dxEntry",
"contextType" : "variable",
"element" : "reference",
"transform" : "copy",
"parameter" : [
{
"valueString" : "urn:uuid:00000000-0000-4000-8000-000000000001"
}
]
}
]
}
]
}
]
}
]
}