<?xml version="1.0" encoding="UTF-8"?>

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