{
  "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\"> &quot;</span>https://fhir.cognovis.de/praxis/StructureMap/map-upper-arm-injection<span style=\"color: navy\">&quot; = &quot;</span>MapUpperArmInjection<span style=\"color: navy\">&quot;\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\"> &quot;</span><a href=\"http://hl7.org/fhir/R4/questionnaireresponse.html\" title=\"QuestionnaireResponse\">http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse</a><span style=\"color: navy\">&quot; </span><b>alias </b>qr <b>as </b><b>source</b>\r\n<b>uses</b><span style=\"color: navy\"> &quot;</span><a href=\"http://hl7.org/fhir/R4/bundle.html\" title=\"Bundle\">http://hl7.org/fhir/StructureDefinition/Bundle</a><span style=\"color: navy\">&quot; </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> -&gt; </b></span>bundle.type = <span style=\"color: blue\">'collection'</span> <i>&quot;bundleType&quot;</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>&quot;invokeFillCondition&quot;</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>&quot;invokeFillDocumentation&quot;</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>&quot;invokeFillProcedure&quot;</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>&quot;invokeFillChargeItems&quot;</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>&quot;invokeFillComposition&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;bindAuthoredFromQr&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;bindAuthorFromQr&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;bindEncounterFromQr&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;bindSubjectFromQr&quot;</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 -&gt; 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> -&gt; </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>&quot;codingValue&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;conditionFromValueCoding&quot;</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 -&gt; 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> -&gt; </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>&quot;stringValue&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;obsFromValueString&quot;</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> -&gt; </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> -&gt; </b></span>proc.reasonReference = <span style=\"color: maroon\">reasonRef</span> <i>&quot;diagRefValue&quot;</i><span style=\"color: navy\">;</span>\r\n              <span style=\"color: navy\">}</span> <i>&quot;diagRefAnswer&quot;</i><span style=\"color: navy\">;</span>\r\n            <span style=\"color: navy\">}</span> <i>&quot;reasonFromConditionRef&quot;</i><span style=\"color: navy\">;</span>\r\n          <span style=\"color: navy\">}</span> <i>&quot;latValue&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;latAnswer&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;siteValue&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;siteAnswer&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;bodySiteFromValueCoding&quot;</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> -&gt; </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> -&gt; </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>&quot;currencyCode&quot;</i><span style=\"color: navy\">;</span>\r\n                <span style=\"color: navy\">}</span> <i>&quot;currencyValue&quot;</i><span style=\"color: navy\">;</span>\r\n              <span style=\"color: navy\">}</span> <i>&quot;currencyAnswer&quot;</i><span style=\"color: navy\">;</span>\r\n            <span style=\"color: navy\">}</span> <i>&quot;amountValue&quot;</i><span style=\"color: navy\">;</span>\r\n          <span style=\"color: navy\">}</span> <i>&quot;amountAnswer&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;moneyFromParts&quot;</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> -&gt; </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>&quot;serviceWhenPerformedPrimary&quot;</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> -&gt; </b></span>chg1.supportingInformation = <span style=\"color: maroon\">reasonRef2</span> <i>&quot;dr2Value&quot;</i><span style=\"color: navy\">;</span>\r\n          <span style=\"color: navy\">}</span> <i>&quot;dr2Answer&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;supportingInfoFromConditionRef&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;cidValue&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;cidAnswer&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;primaryFromValueUri&quot;</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> -&gt; </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> -&gt; </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>&quot;sectionProcedureWhenPerformed&quot;</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> -&gt; </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>&quot;sectionDiagnosisWhenCoding&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;compositionShell&quot;</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"
          }]
        }]
      }]
    }]
  }]
}