{
  "resourceType" : "StructureMap",
  "id" : "ExtractDischargeClearancePatientEducation",
  "text" : {
    "status" : "generated",
    "div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p class=\"res-header-id\"><b>Generated Narrative: StructureMap ExtractDischargeClearancePatientEducation</b></p><a name=\"ExtractDischargeClearancePatientEducation\"> </a><a name=\"hcExtractDischargeClearancePatientEducation\"> </a><pre class=\"fml\">\r\n<span style=\"color: #cc00cc\">/// <b>url</b> = </span><span style=\"color: blue\">'https://fhir.slade360.co.ke/fhir/StructureMap/ExtractDischargeClearancePatientEducation'</span>\r\n<span style=\"color: #cc00cc\">/// <b>name</b> = </span><span style=\"color: blue\">'ExtractDischargeClearancePatientEducation'</span>\r\n<span style=\"color: #cc00cc\">/// <b>title</b> = </span><span style=\"color: blue\">'Discharge Clearance: Patient Education Extraction'</span>\r\n<span style=\"color: #cc00cc\">/// <b>status</b> = </span><span style=\"color: blue\">'active'</span>\r\n<span style=\"color: #cc00cc\">/// <b>description</b> = </span><span style=\"color: blue\">&quot;&quot;&quot;Turns the record of what the patient and their family were told into three survey Observations: the danger signs explained, who was briefed alongside the patient, and whether the take-home medicines were gone through. \nCommunication would be the truer resource for a briefing, and this IG has no Communication profile and no map that creates one, so the briefing is recorded as an assertion that it happened rather than as the message itself.\nName and relationship ride on one Observation as value and component, the way a blood pressure carries systolic and diastolic, rather than minting a RelatedPerson per discharge for a relative the record may already know. The follow-up arrangement rides as a note: the discharge note already raises a ServiceRequest for the follow-up it arranges, and a second request from here would leave one patient with two.&quot;&quot;&quot;</span>\r\n\r\n<b>uses</b><span style=\"color: navy\"> &quot;</span><a href=\"http://hl7.org/fhir/R5/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/R5/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<b>uses</b><span style=\"color: navy\"> &quot;</span><a href=\"http://hl7.org/fhir/R5/observation.html\" title=\"Observation\">http://hl7.org/fhir/StructureDefinition/Observation</a><span style=\"color: navy\">&quot; </span><b>alias </b>Observation <b>as </b><b>target</b>\r\n\r\n<b>group </b>ExtractDischargeClearancePatientEducation<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">qr</span><span style=\"color: navy\"> : </span>QR, <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\">'transaction'</span> <i>&quot;setBundleType&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">linkId 369703222200 — &quot;Danger signs explained&quot;. The substance of the</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">briefing, and the Observation the follow-up note hangs on.</span>\r\n  qr.item<b> as </b><span style=\"color: maroon\">it</span><b> where </b><span style=\"color: navy\">(</span>(linkId = '369703222200') and answer.value.exists()<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    it.answer first<b> as </b><span style=\"color: maroon\">a</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      a<span style=\"color: navy\"><b> -&gt; </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.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><b> then</b><span style=\"color: navy\"> {\r\n</span>        qr<span style=\"color: navy\"><b> -&gt; </b></span> obs<span style=\"color: navy\">, </span> entry<b> then </b>BuildClearanceObs<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>&quot;dangerSignsBase&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>obs.code<b> as </b><span style=\"color: maroon\">dangerSignsCodeCc</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          qr<span style=\"color: navy\"><b> -&gt; </b></span>dangerSignsCodeCc.coding<b> as </b><span style=\"color: maroon\">dangerSignsCodeCoding</span><b> then</b><span style=\"color: navy\"> {\r\n</span>            qr<span style=\"color: navy\"><b> -&gt; </b></span>dangerSignsCodeCoding.system = <span style=\"color: blue\">'https://fhir.slade360.co.ke/fhir/CodeSystem/inpatient-clinical-concept-codesystem'</span> <i>&quot;dangerSignsCodeSystem&quot;</i><span style=\"color: navy\">;</span>\r\n            qr<span style=\"color: navy\"><b> -&gt; </b></span>dangerSignsCodeCoding.code = <span style=\"color: blue\">'danger-signs-explained'</span> <i>&quot;dangerSignsCodeCode&quot;</i><span style=\"color: navy\">;</span>\r\n            qr<span style=\"color: navy\"><b> -&gt; </b></span>dangerSignsCodeCoding.display = <span style=\"color: blue\">'Danger signs explained at discharge'</span> <i>&quot;dangerSignsCodeDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n          <span style=\"color: navy\">}</span> <i>&quot;dangerSignsCodeCodingRule&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;dangerSignsCode&quot;</i><span style=\"color: navy\">;</span>\r\n        a.value<b> as </b><span style=\"color: maroon\">v</span><span style=\"color: navy\"><b> -&gt; </b></span>obs.value = <span style=\"color: maroon\">v</span> <i>&quot;dangerSignsValue&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">// </span><span style=\"color: green\">linkId 286776232661 — &quot;Follow-up arrangement given&quot;</span>\r\n        qr.item<b> as </b><span style=\"color: maroon\">itFollowUp</span><b> where </b><span style=\"color: navy\">(</span>(linkId = '286776232661') and answer.value.exists()<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          itFollowUp.answer first<b> as </b><span style=\"color: maroon\">aFollowUp</span><b> then</b><span style=\"color: navy\"> {\r\n</span>            aFollowUp.value<b> as </b><span style=\"color: maroon\">fv</span><span style=\"color: navy\"><b> -&gt; </b></span>obs.note<b> as </b><span style=\"color: maroon\">note</span><b> then</b><span style=\"color: navy\"> {\r\n</span>              fv<span style=\"color: navy\"><b> -&gt; </b></span>note.text = <span style=\"color: maroon\">fv</span> <i>&quot;followUpNoteText&quot;</i><span style=\"color: navy\">;</span>\r\n              qr.authored<b> as </b><span style=\"color: maroon\">t</span><span style=\"color: navy\"><b> -&gt; </b></span>note.time = <span style=\"color: maroon\">t</span> <i>&quot;followUpNoteTime&quot;</i><span style=\"color: navy\">;</span>\r\n            <span style=\"color: navy\">}</span> <i>&quot;followUpNote&quot;</i><span style=\"color: navy\">;</span>\r\n          <span style=\"color: navy\">}</span> <i>&quot;followUpAnswer&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;followUpRule&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;dangerSignsObs&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;dangerSignsAnswer&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;dangerSignsRule&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">linkId 526135349614 — &quot;Next of kin briefed, name&quot;, with linkId 747571800699</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">— &quot;Relationship&quot; — as its component.</span>\r\n  qr.item<b> as </b><span style=\"color: maroon\">it</span><b> where </b><span style=\"color: navy\">(</span>(linkId = '526135349614') and answer.value.exists()<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    it.answer first<b> as </b><span style=\"color: maroon\">a</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      a<span style=\"color: navy\"><b> -&gt; </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.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><b> then</b><span style=\"color: navy\"> {\r\n</span>        qr<span style=\"color: navy\"><b> -&gt; </b></span> obs<span style=\"color: navy\">, </span> entry<b> then </b>BuildClearanceObs<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>&quot;kinBase&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>obs.code<b> as </b><span style=\"color: maroon\">kinCodeCc</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          qr<span style=\"color: navy\"><b> -&gt; </b></span>kinCodeCc.coding<b> as </b><span style=\"color: maroon\">kinCodeCoding</span><b> then</b><span style=\"color: navy\"> {\r\n</span>            qr<span style=\"color: navy\"><b> -&gt; </b></span>kinCodeCoding.system = <span style=\"color: blue\">'https://fhir.slade360.co.ke/fhir/CodeSystem/inpatient-clinical-concept-codesystem'</span> <i>&quot;kinCodeSystem&quot;</i><span style=\"color: navy\">;</span>\r\n            qr<span style=\"color: navy\"><b> -&gt; </b></span>kinCodeCoding.code = <span style=\"color: blue\">'next-of-kin-briefed'</span> <i>&quot;kinCodeCode&quot;</i><span style=\"color: navy\">;</span>\r\n            qr<span style=\"color: navy\"><b> -&gt; </b></span>kinCodeCoding.display = <span style=\"color: blue\">'Next of kin briefed at discharge'</span> <i>&quot;kinCodeDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n          <span style=\"color: navy\">}</span> <i>&quot;kinCodeCodingRule&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;kinCode&quot;</i><span style=\"color: navy\">;</span>\r\n        a.value<b> as </b><span style=\"color: maroon\">v</span><span style=\"color: navy\"><b> -&gt; </b></span>obs.value = <span style=\"color: maroon\">v</span> <i>&quot;kinNameValue&quot;</i><span style=\"color: navy\">;</span>\r\n        qr.item<b> as </b><span style=\"color: maroon\">itRelation</span><b> where </b><span style=\"color: navy\">(</span>(linkId = '747571800699') and answer.value.exists()<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          itRelation.answer first<b> as </b><span style=\"color: maroon\">aRelation</span><span style=\"color: navy\"><b> -&gt; </b></span>obs.component<b> as </b><span style=\"color: maroon\">comp</span><b> then</b><span style=\"color: navy\"> {\r\n</span>            aRelation<span style=\"color: navy\"><b> -&gt; </b></span>comp.code<b> as </b><span style=\"color: maroon\">relationCodeCc</span><b> then</b><span style=\"color: navy\"> {\r\n</span>              aRelation<span style=\"color: navy\"><b> -&gt; </b></span>relationCodeCc.coding<b> as </b><span style=\"color: maroon\">relationCodeCoding</span><b> then</b><span style=\"color: navy\"> {\r\n</span>                aRelation<span style=\"color: navy\"><b> -&gt; </b></span>relationCodeCoding.system = <span style=\"color: blue\">'https://fhir.slade360.co.ke/fhir/CodeSystem/inpatient-clinical-concept-codesystem'</span> <i>&quot;relationCodeSystem&quot;</i><span style=\"color: navy\">;</span>\r\n                aRelation<span style=\"color: navy\"><b> -&gt; </b></span>relationCodeCoding.code = <span style=\"color: blue\">'relationship-to-patient'</span> <i>&quot;relationCodeCode&quot;</i><span style=\"color: navy\">;</span>\r\n                aRelation<span style=\"color: navy\"><b> -&gt; </b></span>relationCodeCoding.display = <span style=\"color: blue\">'Relationship to the patient'</span> <i>&quot;relationCodeDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n              <span style=\"color: navy\">}</span> <i>&quot;relationCodeCodingRule&quot;</i><span style=\"color: navy\">;</span>\r\n            <span style=\"color: navy\">}</span> <i>&quot;relationCode&quot;</i><span style=\"color: navy\">;</span>\r\n            aRelation.value<b> as </b><span style=\"color: maroon\">cv</span><span style=\"color: navy\"><b> -&gt; </b></span>comp.value = <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\">concept</span><b> then</b><span style=\"color: navy\"> {\r\n</span>              cv<span style=\"color: navy\"><b> -&gt; </b></span>concept.coding = <span style=\"color: maroon\">cv</span> <i>&quot;relationCoding&quot;</i><span style=\"color: navy\">;</span>\r\n              cv.display<b> as </b><span style=\"color: maroon\">d</span><span style=\"color: navy\"><b> -&gt; </b></span>concept.text = <span style=\"color: maroon\">d</span> <i>&quot;relationText&quot;</i><span style=\"color: navy\">;</span>\r\n            <span style=\"color: navy\">}</span> <i>&quot;relationValue&quot;</i><span style=\"color: navy\">;</span>\r\n          <span style=\"color: navy\">}</span> <i>&quot;relationComponent&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;relationRule&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;kinObs&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;kinAnswer&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;kinRule&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">linkId 331980677989 — &quot;Take-home medicines explained&quot;</span>\r\n  qr.item<b> as </b><span style=\"color: maroon\">it</span><b> where </b><span style=\"color: navy\">(</span>(linkId = '331980677989') and answer.value.exists()<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    it.answer first<b> as </b><span style=\"color: maroon\">a</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      a<span style=\"color: navy\"><b> -&gt; </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.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><b> then</b><span style=\"color: navy\"> {\r\n</span>        qr<span style=\"color: navy\"><b> -&gt; </b></span> obs<span style=\"color: navy\">, </span> entry<b> then </b>BuildClearanceObs<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>&quot;medicinesBase&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>obs.code<b> as </b><span style=\"color: maroon\">medicinesCodeCc</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          qr<span style=\"color: navy\"><b> -&gt; </b></span>medicinesCodeCc.coding<b> as </b><span style=\"color: maroon\">medicinesCodeCoding</span><b> then</b><span style=\"color: navy\"> {\r\n</span>            qr<span style=\"color: navy\"><b> -&gt; </b></span>medicinesCodeCoding.system = <span style=\"color: blue\">'https://fhir.slade360.co.ke/fhir/CodeSystem/inpatient-clinical-concept-codesystem'</span> <i>&quot;medicinesCodeSystem&quot;</i><span style=\"color: navy\">;</span>\r\n            qr<span style=\"color: navy\"><b> -&gt; </b></span>medicinesCodeCoding.code = <span style=\"color: blue\">'medicines-explained-at-discharge'</span> <i>&quot;medicinesCodeCode&quot;</i><span style=\"color: navy\">;</span>\r\n            qr<span style=\"color: navy\"><b> -&gt; </b></span>medicinesCodeCoding.display = <span style=\"color: blue\">'Take-home medicines explained at discharge'</span> <i>&quot;medicinesCodeDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n          <span style=\"color: navy\">}</span> <i>&quot;medicinesCodeCodingRule&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;medicinesCode&quot;</i><span style=\"color: navy\">;</span>\r\n        a<span style=\"color: navy\"><b> -&gt; </b></span>obs<b> then </b>SetCodedValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">a</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">)</span> <i>&quot;medicinesValue&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;medicinesObs&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;medicinesAnswer&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;medicinesRule&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\">─────────────────────────────────────────────────────────────────────────────</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Shared scaffolding. Repeated in each clearance map rather than imported: the</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">transform engine resolves `imports` against whatever StructureMaps happen to</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">be on the server, and a clearance that stops extracting because a shared map</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">was not uploaded is a worse failure than a duplicated group.</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Source parameters are left untyped on purpose. Writing `: Element` makes the</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">publisher's StructureMap validator compare QuestionnaireResponse.item against</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">the literal 'Element' and report them as incompatible, which is noise.</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">─────────────────────────────────────────────────────────────────────────────</span>\r\n<b>group </b>BuildClearanceObs<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">qr</span><span style=\"color: navy\"> : </span>QR, <b>target</b> <span style=\"color: maroon\">obs</span><span style=\"color: navy\"> : </span>Observation, <b>target</b> <span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span>  qr<span style=\"color: navy\"><b> -&gt; </b></span>obs.id = <b>uuid</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> then </b>SetObservationFullUrl<span style=\"color: navy\">(</span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>&quot;idAndFullUrl&quot;</i><span style=\"color: navy\">;</span>\r\n  qr<span style=\"color: navy\"><b> -&gt; </b></span>entry.request<b> as </b><span style=\"color: maroon\">request</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    qr<span style=\"color: navy\"><b> -&gt; </b></span>request.method = <span style=\"color: blue\">'POST'</span> <i>&quot;requestMethod&quot;</i><span style=\"color: navy\">;</span>\r\n    qr<span style=\"color: navy\"><b> -&gt; </b></span>request.url = <span style=\"color: blue\">'Observation'</span> <i>&quot;requestUrl&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;entryRequest&quot;</i><span style=\"color: navy\">;</span>\r\n  qr<span style=\"color: navy\"><b> -&gt; </b></span>obs.status = <span style=\"color: blue\">'final'</span> <i>&quot;status&quot;</i><span style=\"color: navy\">;</span>\r\n  qr<span style=\"color: navy\"><b> -&gt; </b></span>obs.category<b> as </b><span style=\"color: maroon\">categoryCc</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    qr<span style=\"color: navy\"><b> -&gt; </b></span>categoryCc.coding<b> as </b><span style=\"color: maroon\">categoryCoding</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      qr<span style=\"color: navy\"><b> -&gt; </b></span>categoryCoding.system = <span style=\"color: blue\">'http://terminology.hl7.org/CodeSystem/observation-category'</span> <i>&quot;categorySystem&quot;</i><span style=\"color: navy\">;</span>\r\n      qr<span style=\"color: navy\"><b> -&gt; </b></span>categoryCoding.code = <span style=\"color: blue\">'survey'</span> <i>&quot;categoryCode&quot;</i><span style=\"color: navy\">;</span>\r\n      qr<span style=\"color: navy\"><b> -&gt; </b></span>categoryCoding.display = <span style=\"color: blue\">'Survey'</span> <i>&quot;categoryDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;categoryCodingRule&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;category&quot;</i><span style=\"color: navy\">;</span>\r\n  qr.subject<b> as </b><span style=\"color: maroon\">s</span><span style=\"color: navy\"><b> -&gt; </b></span>obs.subject = <span style=\"color: maroon\">s</span><span style=\"color: navy\">;</span>\r\n  qr.encounter<b> as </b><span style=\"color: maroon\">e</span><span style=\"color: navy\"><b> -&gt; </b></span>obs.encounter = <span style=\"color: maroon\">e</span><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">`effective`, not `effectiveInstant`: the R5 transform engine writes choice</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">elements by their base name and rejects the typed form.</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">Advantage stamps `authored` when the clearances are submitted, not when each</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">was signed, so a clearance signed at two in the morning and submitted at the</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">handover carries the handover time. Sending the signature time on the</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">response would fix it at the source; there is nothing on the response for a</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">map to read it from.</span>\r\n  qr.authored<b> as </b><span style=\"color: maroon\">t</span><span style=\"color: navy\"><b> -&gt; </b></span>obs.effective = <span style=\"color: maroon\">t</span> <i>&quot;effective&quot;</i><span style=\"color: navy\">;</span>\r\n  qr.authored<b> as </b><span style=\"color: maroon\">t</span><span style=\"color: navy\"><b> -&gt; </b></span>obs.issued = <b>cast</b><span style=\"color: navy\">(</span><span style=\"color: maroon\">t</span><span style=\"color: navy\">, </span><span style=\"color: blue\">'instant'</span><span style=\"color: navy\">)</span> <i>&quot;issued&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">The facility, not the person who signed: SGHIObservation admits only an</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">Organization or a Patient as performer, and the form's signature is a typed</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">name that resolves to neither.</span>\r\n  qr.source<b> as </b><span style=\"color: maroon\">src</span><span style=\"color: navy\"><b> -&gt; </b></span>obs.performer = <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\">perf</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    src.reference<b> as </b><span style=\"color: maroon\">ref</span><span style=\"color: navy\"><b> -&gt; </b></span>perf.reference = <span style=\"color: maroon\">ref</span> <i>&quot;performerRef&quot;</i><span style=\"color: navy\">;</span>\r\n    src.display<b> as </b><span style=\"color: maroon\">disp</span><span style=\"color: navy\"><b> -&gt; </b></span>perf.display = <span style=\"color: maroon\">disp</span> <i>&quot;performerDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;performer&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">One identifier per resource. Copying the response's own would give every</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">Observation from a single form the same business identity.</span>\r\n  qr<span style=\"color: navy\"><b> -&gt; </b></span>obs.identifier<b> as </b><span style=\"color: maroon\">ident</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    qr<span style=\"color: navy\"><b> -&gt; </b></span>ident.use = <span style=\"color: blue\">'official'</span> <i>&quot;identifierUse&quot;</i><span style=\"color: navy\">;</span>\r\n    qr<span style=\"color: navy\"><b> -&gt; </b></span>ident.type<b> as </b><span style=\"color: maroon\">identifierTypeCc</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      qr<span style=\"color: navy\"><b> -&gt; </b></span>identifierTypeCc.coding<b> as </b><span style=\"color: maroon\">identifierTypeCoding</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        qr<span style=\"color: navy\"><b> -&gt; </b></span>identifierTypeCoding.system = <span style=\"color: blue\">'https://fhir.slade360.co.ke/fhir/CodeSystem/default-identifier-codesystem'</span> <i>&quot;identifierTypeSystem&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>identifierTypeCoding.code = <span style=\"color: blue\">'default-id'</span> <i>&quot;identifierTypeCode&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>identifierTypeCoding.display = <span style=\"color: blue\">'Default Resource Identifier'</span> <i>&quot;identifierTypeDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;identifierTypeCodingRule&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;identifierType&quot;</i><span style=\"color: navy\">;</span>\r\n    qr<span style=\"color: navy\"><b> -&gt; </b></span>ident.system = <span style=\"color: blue\">'https://fhir.slade360.co.ke/fhir/CodeSystem/default-identifier-codesystem'</span> <i>&quot;identifierSystem&quot;</i><span style=\"color: navy\">;</span>\r\n    qr<span style=\"color: navy\"><b> -&gt; </b></span>ident.value = <b>uuid</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span> <i>&quot;identifierValue&quot;</i><span style=\"color: navy\">;</span>\r\n    qr.source<b> as </b><span style=\"color: maroon\">src</span><span style=\"color: navy\"><b> -&gt; </b></span>ident.assigner = <span style=\"color: maroon\">src</span> <i>&quot;identifierAssigner&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;identifier&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">No append: under this engine `qr.id` already resolves to the type-qualified</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">relative reference, so prefixing it again produces a reference to nothing.</span>\r\n  qr<span style=\"color: navy\"><b> -&gt; </b></span>obs.derivedFrom = <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\">ref</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    qr.id<b> as </b><span style=\"color: maroon\">qid</span><span style=\"color: navy\"><b> -&gt; </b></span>ref.reference = <span style=\"color: maroon\">qid</span> <i>&quot;derivedFromRef&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;linkQuestionnaireResponse&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>SetCodedValue<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">a</span>, <b>target</b> <span style=\"color: maroon\">obs</span><span style=\"color: navy\"> : </span>Observation<span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span>  a.value<b> as </b><span style=\"color: maroon\">cv</span><span style=\"color: navy\"><b> -&gt; </b></span>obs.value = <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\">concept</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    cv<span style=\"color: navy\"><b> -&gt; </b></span>concept.coding = <span style=\"color: maroon\">cv</span> <i>&quot;valueCoding&quot;</i><span style=\"color: navy\">;</span>\r\n    cv.display<b> as </b><span style=\"color: maroon\">d</span><span style=\"color: navy\"><b> -&gt; </b></span>concept.text = <span style=\"color: maroon\">d</span> <i>&quot;valueText&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;codedValue&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>SetObservationFullUrl<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">obs</span><span style=\"color: navy\"> : </span>Observation, <b>target</b> <span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span>  obs.id<b> as </b><span style=\"color: maroon\">id</span><span style=\"color: navy\"><b> -&gt; </b></span>entry.fullUrl = <b>append</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'https://fhir.slade360.co.ke/fhir/Observation/'</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">id</span><span style=\"color: navy\">)</span> <i>&quot;assignFullUrl&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span></pre></div>"
  },
  "url" : "https://fhir.slade360.co.ke/fhir/StructureMap/ExtractDischargeClearancePatientEducation",
  "version" : "0.1.0",
  "name" : "ExtractDischargeClearancePatientEducation",
  "title" : "Discharge Clearance: Patient Education Extraction",
  "status" : "active",
  "date" : "2026-09-14T06:31:13+00:00",
  "publisher" : "Kathurima Kimathi",
  "contact" : [{
    "name" : "Kathurima Kimathi",
    "telecom" : [{
      "system" : "url",
      "value" : "https://www.linkedin.com/in/kathurima-kimathi/"
    },
    {
      "system" : "email",
      "value" : "kathurimakimathi415@gmail.com"
    }]
  },
  {
    "name" : "Oscar John",
    "telecom" : [{
      "system" : "email",
      "value" : "oscarjohnotieno@gmail.com",
      "use" : "work"
    }]
  },
  {
    "name" : "Kennedy Omondi",
    "telecom" : [{
      "system" : "email",
      "value" : "kennankole@gmail.com",
      "use" : "work"
    }]
  }],
  "description" : "Turns the record of what the patient and their family were told into three survey Observations: the danger signs explained, who was briefed alongside the patient, and whether the take-home medicines were gone through. \nCommunication would be the truer resource for a briefing, and this IG has no Communication profile and no map that creates one, so the briefing is recorded as an assertion that it happened rather than as the message itself.\nName and relationship ride on one Observation as value and component, the way a blood pressure carries systolic and diastolic, rather than minting a RelatedPerson per discharge for a relative the record may already know. The follow-up arrangement rides as a note: the discharge note already raises a ServiceRequest for the follow-up it arranges, and a second request from here would leave one patient with two.",
  "structure" : [{
    "url" : "http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse",
    "mode" : "source",
    "alias" : "QR"
  },
  {
    "url" : "http://hl7.org/fhir/StructureDefinition/Bundle",
    "mode" : "target",
    "alias" : "Bundle"
  },
  {
    "url" : "http://hl7.org/fhir/StructureDefinition/Observation",
    "mode" : "target",
    "alias" : "Observation"
  }],
  "group" : [{
    "name" : "ExtractDischargeClearancePatientEducation",
    "input" : [{
      "name" : "qr",
      "type" : "QR",
      "mode" : "source"
    },
    {
      "name" : "bundle",
      "type" : "Bundle",
      "mode" : "target"
    }],
    "rule" : [{
      "name" : "setBundleType",
      "source" : [{
        "context" : "qr"
      }],
      "target" : [{
        "context" : "bundle",
        "element" : "type",
        "transform" : "copy",
        "parameter" : [{
          "valueString" : "transaction"
        }]
      }]
    },
    {
      "name" : "dangerSignsRule",
      "source" : [{
        "context" : "qr",
        "element" : "item",
        "variable" : "it",
        "condition" : "(linkId = '369703222200') and answer.value.exists()"
      }],
      "rule" : [{
        "name" : "dangerSignsAnswer",
        "source" : [{
          "context" : "it",
          "element" : "answer",
          "listMode" : "first",
          "variable" : "a"
        }],
        "rule" : [{
          "name" : "dangerSignsObs",
          "source" : [{
            "context" : "a"
          }],
          "target" : [{
            "context" : "bundle",
            "element" : "entry",
            "variable" : "entry"
          },
          {
            "context" : "entry",
            "element" : "resource",
            "variable" : "obs",
            "transform" : "create",
            "parameter" : [{
              "valueString" : "Observation"
            }]
          }],
          "rule" : [{
            "name" : "dangerSignsBase",
            "source" : [{
              "context" : "qr"
            }],
            "target" : [{
              "context" : "obs"
            },
            {
              "context" : "entry"
            }],
            "dependent" : [{
              "name" : "BuildClearanceObs",
              "parameter" : [{
                "valueId" : "qr"
              },
              {
                "valueId" : "obs"
              },
              {
                "valueId" : "entry"
              }]
            }]
          },
          {
            "name" : "dangerSignsCode",
            "source" : [{
              "context" : "qr"
            }],
            "target" : [{
              "context" : "obs",
              "element" : "code",
              "variable" : "dangerSignsCodeCc"
            }],
            "rule" : [{
              "name" : "dangerSignsCodeCodingRule",
              "source" : [{
                "context" : "qr"
              }],
              "target" : [{
                "context" : "dangerSignsCodeCc",
                "element" : "coding",
                "variable" : "dangerSignsCodeCoding"
              }],
              "rule" : [{
                "name" : "dangerSignsCodeSystem",
                "source" : [{
                  "context" : "qr"
                }],
                "target" : [{
                  "context" : "dangerSignsCodeCoding",
                  "element" : "system",
                  "transform" : "copy",
                  "parameter" : [{
                    "valueString" : "https://fhir.slade360.co.ke/fhir/CodeSystem/inpatient-clinical-concept-codesystem"
                  }]
                }]
              },
              {
                "name" : "dangerSignsCodeCode",
                "source" : [{
                  "context" : "qr"
                }],
                "target" : [{
                  "context" : "dangerSignsCodeCoding",
                  "element" : "code",
                  "transform" : "copy",
                  "parameter" : [{
                    "valueString" : "danger-signs-explained"
                  }]
                }]
              },
              {
                "name" : "dangerSignsCodeDisplay",
                "source" : [{
                  "context" : "qr"
                }],
                "target" : [{
                  "context" : "dangerSignsCodeCoding",
                  "element" : "display",
                  "transform" : "copy",
                  "parameter" : [{
                    "valueString" : "Danger signs explained at discharge"
                  }]
                }]
              }]
            }]
          },
          {
            "name" : "dangerSignsValue",
            "source" : [{
              "context" : "a",
              "element" : "value",
              "variable" : "v"
            }],
            "target" : [{
              "context" : "obs",
              "element" : "value",
              "transform" : "copy",
              "parameter" : [{
                "valueId" : "v"
              }]
            }]
          },
          {
            "name" : "followUpRule",
            "source" : [{
              "context" : "qr",
              "element" : "item",
              "variable" : "itFollowUp",
              "condition" : "(linkId = '286776232661') and answer.value.exists()"
            }],
            "rule" : [{
              "name" : "followUpAnswer",
              "source" : [{
                "context" : "itFollowUp",
                "element" : "answer",
                "listMode" : "first",
                "variable" : "aFollowUp"
              }],
              "rule" : [{
                "name" : "followUpNote",
                "source" : [{
                  "context" : "aFollowUp",
                  "element" : "value",
                  "variable" : "fv"
                }],
                "target" : [{
                  "context" : "obs",
                  "element" : "note",
                  "variable" : "note"
                }],
                "rule" : [{
                  "name" : "followUpNoteText",
                  "source" : [{
                    "context" : "fv"
                  }],
                  "target" : [{
                    "context" : "note",
                    "element" : "text",
                    "transform" : "copy",
                    "parameter" : [{
                      "valueId" : "fv"
                    }]
                  }]
                },
                {
                  "name" : "followUpNoteTime",
                  "source" : [{
                    "context" : "qr",
                    "element" : "authored",
                    "variable" : "t"
                  }],
                  "target" : [{
                    "context" : "note",
                    "element" : "time",
                    "transform" : "copy",
                    "parameter" : [{
                      "valueId" : "t"
                    }]
                  }]
                }]
              }]
            }],
            "documentation" : "linkId 286776232661 — \"Follow-up arrangement given\""
          }]
        }]
      }],
      "documentation" : "linkId 369703222200 — \"Danger signs explained\". The substance of the\r\nbriefing, and the Observation the follow-up note hangs on."
    },
    {
      "name" : "kinRule",
      "source" : [{
        "context" : "qr",
        "element" : "item",
        "variable" : "it",
        "condition" : "(linkId = '526135349614') and answer.value.exists()"
      }],
      "rule" : [{
        "name" : "kinAnswer",
        "source" : [{
          "context" : "it",
          "element" : "answer",
          "listMode" : "first",
          "variable" : "a"
        }],
        "rule" : [{
          "name" : "kinObs",
          "source" : [{
            "context" : "a"
          }],
          "target" : [{
            "context" : "bundle",
            "element" : "entry",
            "variable" : "entry"
          },
          {
            "context" : "entry",
            "element" : "resource",
            "variable" : "obs",
            "transform" : "create",
            "parameter" : [{
              "valueString" : "Observation"
            }]
          }],
          "rule" : [{
            "name" : "kinBase",
            "source" : [{
              "context" : "qr"
            }],
            "target" : [{
              "context" : "obs"
            },
            {
              "context" : "entry"
            }],
            "dependent" : [{
              "name" : "BuildClearanceObs",
              "parameter" : [{
                "valueId" : "qr"
              },
              {
                "valueId" : "obs"
              },
              {
                "valueId" : "entry"
              }]
            }]
          },
          {
            "name" : "kinCode",
            "source" : [{
              "context" : "qr"
            }],
            "target" : [{
              "context" : "obs",
              "element" : "code",
              "variable" : "kinCodeCc"
            }],
            "rule" : [{
              "name" : "kinCodeCodingRule",
              "source" : [{
                "context" : "qr"
              }],
              "target" : [{
                "context" : "kinCodeCc",
                "element" : "coding",
                "variable" : "kinCodeCoding"
              }],
              "rule" : [{
                "name" : "kinCodeSystem",
                "source" : [{
                  "context" : "qr"
                }],
                "target" : [{
                  "context" : "kinCodeCoding",
                  "element" : "system",
                  "transform" : "copy",
                  "parameter" : [{
                    "valueString" : "https://fhir.slade360.co.ke/fhir/CodeSystem/inpatient-clinical-concept-codesystem"
                  }]
                }]
              },
              {
                "name" : "kinCodeCode",
                "source" : [{
                  "context" : "qr"
                }],
                "target" : [{
                  "context" : "kinCodeCoding",
                  "element" : "code",
                  "transform" : "copy",
                  "parameter" : [{
                    "valueString" : "next-of-kin-briefed"
                  }]
                }]
              },
              {
                "name" : "kinCodeDisplay",
                "source" : [{
                  "context" : "qr"
                }],
                "target" : [{
                  "context" : "kinCodeCoding",
                  "element" : "display",
                  "transform" : "copy",
                  "parameter" : [{
                    "valueString" : "Next of kin briefed at discharge"
                  }]
                }]
              }]
            }]
          },
          {
            "name" : "kinNameValue",
            "source" : [{
              "context" : "a",
              "element" : "value",
              "variable" : "v"
            }],
            "target" : [{
              "context" : "obs",
              "element" : "value",
              "transform" : "copy",
              "parameter" : [{
                "valueId" : "v"
              }]
            }]
          },
          {
            "name" : "relationRule",
            "source" : [{
              "context" : "qr",
              "element" : "item",
              "variable" : "itRelation",
              "condition" : "(linkId = '747571800699') and answer.value.exists()"
            }],
            "rule" : [{
              "name" : "relationComponent",
              "source" : [{
                "context" : "itRelation",
                "element" : "answer",
                "listMode" : "first",
                "variable" : "aRelation"
              }],
              "target" : [{
                "context" : "obs",
                "element" : "component",
                "variable" : "comp"
              }],
              "rule" : [{
                "name" : "relationCode",
                "source" : [{
                  "context" : "aRelation"
                }],
                "target" : [{
                  "context" : "comp",
                  "element" : "code",
                  "variable" : "relationCodeCc"
                }],
                "rule" : [{
                  "name" : "relationCodeCodingRule",
                  "source" : [{
                    "context" : "aRelation"
                  }],
                  "target" : [{
                    "context" : "relationCodeCc",
                    "element" : "coding",
                    "variable" : "relationCodeCoding"
                  }],
                  "rule" : [{
                    "name" : "relationCodeSystem",
                    "source" : [{
                      "context" : "aRelation"
                    }],
                    "target" : [{
                      "context" : "relationCodeCoding",
                      "element" : "system",
                      "transform" : "copy",
                      "parameter" : [{
                        "valueString" : "https://fhir.slade360.co.ke/fhir/CodeSystem/inpatient-clinical-concept-codesystem"
                      }]
                    }]
                  },
                  {
                    "name" : "relationCodeCode",
                    "source" : [{
                      "context" : "aRelation"
                    }],
                    "target" : [{
                      "context" : "relationCodeCoding",
                      "element" : "code",
                      "transform" : "copy",
                      "parameter" : [{
                        "valueString" : "relationship-to-patient"
                      }]
                    }]
                  },
                  {
                    "name" : "relationCodeDisplay",
                    "source" : [{
                      "context" : "aRelation"
                    }],
                    "target" : [{
                      "context" : "relationCodeCoding",
                      "element" : "display",
                      "transform" : "copy",
                      "parameter" : [{
                        "valueString" : "Relationship to the patient"
                      }]
                    }]
                  }]
                }]
              },
              {
                "name" : "relationValue",
                "source" : [{
                  "context" : "aRelation",
                  "element" : "value",
                  "variable" : "cv"
                }],
                "target" : [{
                  "context" : "comp",
                  "element" : "value",
                  "variable" : "concept",
                  "transform" : "create",
                  "parameter" : [{
                    "valueString" : "CodeableConcept"
                  }]
                }],
                "rule" : [{
                  "name" : "relationCoding",
                  "source" : [{
                    "context" : "cv"
                  }],
                  "target" : [{
                    "context" : "concept",
                    "element" : "coding",
                    "transform" : "copy",
                    "parameter" : [{
                      "valueId" : "cv"
                    }]
                  }]
                },
                {
                  "name" : "relationText",
                  "source" : [{
                    "context" : "cv",
                    "element" : "display",
                    "variable" : "d"
                  }],
                  "target" : [{
                    "context" : "concept",
                    "element" : "text",
                    "transform" : "copy",
                    "parameter" : [{
                      "valueId" : "d"
                    }]
                  }]
                }]
              }]
            }]
          }]
        }]
      }],
      "documentation" : "linkId 526135349614 — \"Next of kin briefed, name\", with linkId 747571800699\r\n— \"Relationship\" — as its component."
    },
    {
      "name" : "medicinesRule",
      "source" : [{
        "context" : "qr",
        "element" : "item",
        "variable" : "it",
        "condition" : "(linkId = '331980677989') and answer.value.exists()"
      }],
      "rule" : [{
        "name" : "medicinesAnswer",
        "source" : [{
          "context" : "it",
          "element" : "answer",
          "listMode" : "first",
          "variable" : "a"
        }],
        "rule" : [{
          "name" : "medicinesObs",
          "source" : [{
            "context" : "a"
          }],
          "target" : [{
            "context" : "bundle",
            "element" : "entry",
            "variable" : "entry"
          },
          {
            "context" : "entry",
            "element" : "resource",
            "variable" : "obs",
            "transform" : "create",
            "parameter" : [{
              "valueString" : "Observation"
            }]
          }],
          "rule" : [{
            "name" : "medicinesBase",
            "source" : [{
              "context" : "qr"
            }],
            "target" : [{
              "context" : "obs"
            },
            {
              "context" : "entry"
            }],
            "dependent" : [{
              "name" : "BuildClearanceObs",
              "parameter" : [{
                "valueId" : "qr"
              },
              {
                "valueId" : "obs"
              },
              {
                "valueId" : "entry"
              }]
            }]
          },
          {
            "name" : "medicinesCode",
            "source" : [{
              "context" : "qr"
            }],
            "target" : [{
              "context" : "obs",
              "element" : "code",
              "variable" : "medicinesCodeCc"
            }],
            "rule" : [{
              "name" : "medicinesCodeCodingRule",
              "source" : [{
                "context" : "qr"
              }],
              "target" : [{
                "context" : "medicinesCodeCc",
                "element" : "coding",
                "variable" : "medicinesCodeCoding"
              }],
              "rule" : [{
                "name" : "medicinesCodeSystem",
                "source" : [{
                  "context" : "qr"
                }],
                "target" : [{
                  "context" : "medicinesCodeCoding",
                  "element" : "system",
                  "transform" : "copy",
                  "parameter" : [{
                    "valueString" : "https://fhir.slade360.co.ke/fhir/CodeSystem/inpatient-clinical-concept-codesystem"
                  }]
                }]
              },
              {
                "name" : "medicinesCodeCode",
                "source" : [{
                  "context" : "qr"
                }],
                "target" : [{
                  "context" : "medicinesCodeCoding",
                  "element" : "code",
                  "transform" : "copy",
                  "parameter" : [{
                    "valueString" : "medicines-explained-at-discharge"
                  }]
                }]
              },
              {
                "name" : "medicinesCodeDisplay",
                "source" : [{
                  "context" : "qr"
                }],
                "target" : [{
                  "context" : "medicinesCodeCoding",
                  "element" : "display",
                  "transform" : "copy",
                  "parameter" : [{
                    "valueString" : "Take-home medicines explained at discharge"
                  }]
                }]
              }]
            }]
          },
          {
            "name" : "medicinesValue",
            "source" : [{
              "context" : "a"
            }],
            "target" : [{
              "context" : "obs"
            }],
            "dependent" : [{
              "name" : "SetCodedValue",
              "parameter" : [{
                "valueId" : "a"
              },
              {
                "valueId" : "obs"
              }]
            }]
          }]
        }]
      }],
      "documentation" : "linkId 331980677989 — \"Take-home medicines explained\""
    }]
  },
  {
    "name" : "BuildClearanceObs",
    "documentation" : "─────────────────────────────────────────────────────────────────────────────\r\nShared scaffolding. Repeated in each clearance map rather than imported: the\r\ntransform engine resolves `imports` against whatever StructureMaps happen to\r\nbe on the server, and a clearance that stops extracting because a shared map\r\nwas not uploaded is a worse failure than a duplicated group.\r\nSource parameters are left untyped on purpose. Writing `: Element` makes the\r\npublisher's StructureMap validator compare QuestionnaireResponse.item against\r\nthe literal 'Element' and report them as incompatible, which is noise.\r\n─────────────────────────────────────────────────────────────────────────────",
    "input" : [{
      "name" : "qr",
      "type" : "QR",
      "mode" : "source"
    },
    {
      "name" : "obs",
      "type" : "Observation",
      "mode" : "target"
    },
    {
      "name" : "entry",
      "mode" : "target"
    }],
    "rule" : [{
      "name" : "idAndFullUrl",
      "source" : [{
        "context" : "qr"
      }],
      "target" : [{
        "context" : "obs",
        "element" : "id",
        "transform" : "uuid"
      }],
      "dependent" : [{
        "name" : "SetObservationFullUrl",
        "parameter" : [{
          "valueId" : "obs"
        },
        {
          "valueId" : "entry"
        }]
      }]
    },
    {
      "name" : "entryRequest",
      "source" : [{
        "context" : "qr"
      }],
      "target" : [{
        "context" : "entry",
        "element" : "request",
        "variable" : "request"
      }],
      "rule" : [{
        "name" : "requestMethod",
        "source" : [{
          "context" : "qr"
        }],
        "target" : [{
          "context" : "request",
          "element" : "method",
          "transform" : "copy",
          "parameter" : [{
            "valueString" : "POST"
          }]
        }]
      },
      {
        "name" : "requestUrl",
        "source" : [{
          "context" : "qr"
        }],
        "target" : [{
          "context" : "request",
          "element" : "url",
          "transform" : "copy",
          "parameter" : [{
            "valueString" : "Observation"
          }]
        }]
      }]
    },
    {
      "name" : "status",
      "source" : [{
        "context" : "qr"
      }],
      "target" : [{
        "context" : "obs",
        "element" : "status",
        "transform" : "copy",
        "parameter" : [{
          "valueString" : "final"
        }]
      }]
    },
    {
      "name" : "category",
      "source" : [{
        "context" : "qr"
      }],
      "target" : [{
        "context" : "obs",
        "element" : "category",
        "variable" : "categoryCc"
      }],
      "rule" : [{
        "name" : "categoryCodingRule",
        "source" : [{
          "context" : "qr"
        }],
        "target" : [{
          "context" : "categoryCc",
          "element" : "coding",
          "variable" : "categoryCoding"
        }],
        "rule" : [{
          "name" : "categorySystem",
          "source" : [{
            "context" : "qr"
          }],
          "target" : [{
            "context" : "categoryCoding",
            "element" : "system",
            "transform" : "copy",
            "parameter" : [{
              "valueString" : "http://terminology.hl7.org/CodeSystem/observation-category"
            }]
          }]
        },
        {
          "name" : "categoryCode",
          "source" : [{
            "context" : "qr"
          }],
          "target" : [{
            "context" : "categoryCoding",
            "element" : "code",
            "transform" : "copy",
            "parameter" : [{
              "valueString" : "survey"
            }]
          }]
        },
        {
          "name" : "categoryDisplay",
          "source" : [{
            "context" : "qr"
          }],
          "target" : [{
            "context" : "categoryCoding",
            "element" : "display",
            "transform" : "copy",
            "parameter" : [{
              "valueString" : "Survey"
            }]
          }]
        }]
      }]
    },
    {
      "name" : "subject",
      "source" : [{
        "context" : "qr",
        "element" : "subject",
        "variable" : "s"
      }],
      "target" : [{
        "context" : "obs",
        "element" : "subject",
        "transform" : "copy",
        "parameter" : [{
          "valueId" : "s"
        }]
      }]
    },
    {
      "name" : "encounter",
      "source" : [{
        "context" : "qr",
        "element" : "encounter",
        "variable" : "e"
      }],
      "target" : [{
        "context" : "obs",
        "element" : "encounter",
        "transform" : "copy",
        "parameter" : [{
          "valueId" : "e"
        }]
      }]
    },
    {
      "name" : "effective",
      "source" : [{
        "context" : "qr",
        "element" : "authored",
        "variable" : "t"
      }],
      "target" : [{
        "context" : "obs",
        "element" : "effective",
        "transform" : "copy",
        "parameter" : [{
          "valueId" : "t"
        }]
      }],
      "documentation" : "`effective`, not `effectiveInstant`: the R5 transform engine writes choice\r\nelements by their base name and rejects the typed form.\r\nAdvantage stamps `authored` when the clearances are submitted, not when each\r\nwas signed, so a clearance signed at two in the morning and submitted at the\r\nhandover carries the handover time. Sending the signature time on the\r\nresponse would fix it at the source; there is nothing on the response for a\r\nmap to read it from."
    },
    {
      "name" : "issued",
      "source" : [{
        "context" : "qr",
        "element" : "authored",
        "variable" : "t"
      }],
      "target" : [{
        "context" : "obs",
        "element" : "issued",
        "transform" : "cast",
        "parameter" : [{
          "valueId" : "t"
        },
        {
          "valueString" : "instant"
        }]
      }]
    },
    {
      "name" : "performer",
      "source" : [{
        "context" : "qr",
        "element" : "source",
        "variable" : "src"
      }],
      "target" : [{
        "context" : "obs",
        "element" : "performer",
        "variable" : "perf",
        "transform" : "create",
        "parameter" : [{
          "valueString" : "Reference"
        }]
      }],
      "rule" : [{
        "name" : "performerRef",
        "source" : [{
          "context" : "src",
          "element" : "reference",
          "variable" : "ref"
        }],
        "target" : [{
          "context" : "perf",
          "element" : "reference",
          "transform" : "copy",
          "parameter" : [{
            "valueId" : "ref"
          }]
        }]
      },
      {
        "name" : "performerDisplay",
        "source" : [{
          "context" : "src",
          "element" : "display",
          "variable" : "disp"
        }],
        "target" : [{
          "context" : "perf",
          "element" : "display",
          "transform" : "copy",
          "parameter" : [{
            "valueId" : "disp"
          }]
        }]
      }],
      "documentation" : "The facility, not the person who signed: SGHIObservation admits only an\r\nOrganization or a Patient as performer, and the form's signature is a typed\r\nname that resolves to neither."
    },
    {
      "name" : "identifier",
      "source" : [{
        "context" : "qr"
      }],
      "target" : [{
        "context" : "obs",
        "element" : "identifier",
        "variable" : "ident"
      }],
      "rule" : [{
        "name" : "identifierUse",
        "source" : [{
          "context" : "qr"
        }],
        "target" : [{
          "context" : "ident",
          "element" : "use",
          "transform" : "copy",
          "parameter" : [{
            "valueString" : "official"
          }]
        }]
      },
      {
        "name" : "identifierType",
        "source" : [{
          "context" : "qr"
        }],
        "target" : [{
          "context" : "ident",
          "element" : "type",
          "variable" : "identifierTypeCc"
        }],
        "rule" : [{
          "name" : "identifierTypeCodingRule",
          "source" : [{
            "context" : "qr"
          }],
          "target" : [{
            "context" : "identifierTypeCc",
            "element" : "coding",
            "variable" : "identifierTypeCoding"
          }],
          "rule" : [{
            "name" : "identifierTypeSystem",
            "source" : [{
              "context" : "qr"
            }],
            "target" : [{
              "context" : "identifierTypeCoding",
              "element" : "system",
              "transform" : "copy",
              "parameter" : [{
                "valueString" : "https://fhir.slade360.co.ke/fhir/CodeSystem/default-identifier-codesystem"
              }]
            }]
          },
          {
            "name" : "identifierTypeCode",
            "source" : [{
              "context" : "qr"
            }],
            "target" : [{
              "context" : "identifierTypeCoding",
              "element" : "code",
              "transform" : "copy",
              "parameter" : [{
                "valueString" : "default-id"
              }]
            }]
          },
          {
            "name" : "identifierTypeDisplay",
            "source" : [{
              "context" : "qr"
            }],
            "target" : [{
              "context" : "identifierTypeCoding",
              "element" : "display",
              "transform" : "copy",
              "parameter" : [{
                "valueString" : "Default Resource Identifier"
              }]
            }]
          }]
        }]
      },
      {
        "name" : "identifierSystem",
        "source" : [{
          "context" : "qr"
        }],
        "target" : [{
          "context" : "ident",
          "element" : "system",
          "transform" : "copy",
          "parameter" : [{
            "valueString" : "https://fhir.slade360.co.ke/fhir/CodeSystem/default-identifier-codesystem"
          }]
        }]
      },
      {
        "name" : "identifierValue",
        "source" : [{
          "context" : "qr"
        }],
        "target" : [{
          "context" : "ident",
          "element" : "value",
          "transform" : "uuid"
        }]
      },
      {
        "name" : "identifierAssigner",
        "source" : [{
          "context" : "qr",
          "element" : "source",
          "variable" : "src"
        }],
        "target" : [{
          "context" : "ident",
          "element" : "assigner",
          "transform" : "copy",
          "parameter" : [{
            "valueId" : "src"
          }]
        }]
      }],
      "documentation" : "One identifier per resource. Copying the response's own would give every\r\nObservation from a single form the same business identity."
    },
    {
      "name" : "linkQuestionnaireResponse",
      "source" : [{
        "context" : "qr"
      }],
      "target" : [{
        "context" : "obs",
        "element" : "derivedFrom",
        "variable" : "ref",
        "transform" : "create",
        "parameter" : [{
          "valueString" : "Reference"
        }]
      }],
      "rule" : [{
        "name" : "derivedFromRef",
        "source" : [{
          "context" : "qr",
          "element" : "id",
          "variable" : "qid"
        }],
        "target" : [{
          "context" : "ref",
          "element" : "reference",
          "transform" : "copy",
          "parameter" : [{
            "valueId" : "qid"
          }]
        }]
      }],
      "documentation" : "No append: under this engine `qr.id` already resolves to the type-qualified\r\nrelative reference, so prefixing it again produces a reference to nothing."
    }]
  },
  {
    "name" : "SetCodedValue",
    "input" : [{
      "name" : "a",
      "mode" : "source"
    },
    {
      "name" : "obs",
      "type" : "Observation",
      "mode" : "target"
    }],
    "rule" : [{
      "name" : "codedValue",
      "source" : [{
        "context" : "a",
        "element" : "value",
        "variable" : "cv"
      }],
      "target" : [{
        "context" : "obs",
        "element" : "value",
        "variable" : "concept",
        "transform" : "create",
        "parameter" : [{
          "valueString" : "CodeableConcept"
        }]
      }],
      "rule" : [{
        "name" : "valueCoding",
        "source" : [{
          "context" : "cv"
        }],
        "target" : [{
          "context" : "concept",
          "element" : "coding",
          "transform" : "copy",
          "parameter" : [{
            "valueId" : "cv"
          }]
        }]
      },
      {
        "name" : "valueText",
        "source" : [{
          "context" : "cv",
          "element" : "display",
          "variable" : "d"
        }],
        "target" : [{
          "context" : "concept",
          "element" : "text",
          "transform" : "copy",
          "parameter" : [{
            "valueId" : "d"
          }]
        }]
      }]
    }]
  },
  {
    "name" : "SetObservationFullUrl",
    "input" : [{
      "name" : "obs",
      "type" : "Observation",
      "mode" : "source"
    },
    {
      "name" : "entry",
      "mode" : "target"
    }],
    "rule" : [{
      "name" : "assignFullUrl",
      "source" : [{
        "context" : "obs",
        "element" : "id",
        "variable" : "id"
      }],
      "target" : [{
        "context" : "entry",
        "element" : "fullUrl",
        "transform" : "append",
        "parameter" : [{
          "valueString" : "https://fhir.slade360.co.ke/fhir/Observation/"
        },
        {
          "valueId" : "id"
        }]
      }]
    }]
  }]
}