SGHI FHIR Profile Implementation Guide
0.1.0 - ci-build

SGHI FHIR Profile Implementation Guide, published by Kathurima Kimathi. This guide is not an authorized publication; it is the continuous build for version 0.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/savannahghi/sil_fhir_profile_ig/ and changes regularly. See the Directory of published versions

: Inpatient Surgical Pre-operative Assessment Extraction - XML Representation

Active as of 2026-09-14

Raw xml | Download


<StructureMap xmlns="http://hl7.org/fhir">
  <id value="ExtractInpatientSurgicalPreoperativeAssessment"/>
  <text>
    <status value="generated"/>
    <div xmlns="http://www.w3.org/1999/xhtml"><p class="res-header-id"><b>Generated Narrative: StructureMap ExtractInpatientSurgicalPreoperativeAssessment</b></p><a name="ExtractInpatientSurgicalPreoperativeAssessment"> </a><a name="hcExtractInpatientSurgicalPreoperativeAssessment"> </a><pre class="fml">
<span style="color: #cc00cc">/// <b>url</b> = </span><span style="color: blue">'https://fhir.slade360.co.ke/fhir/StructureMap/ExtractInpatientSurgicalPreoperativeAssessment'</span>
<span style="color: #cc00cc">/// <b>name</b> = </span><span style="color: blue">'ExtractInpatientSurgicalPreoperativeAssessment'</span>
<span style="color: #cc00cc">/// <b>title</b> = </span><span style="color: blue">'Inpatient Surgical Pre-operative Assessment 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">'The planned procedure becomes a ServiceRequest, the ASA grade and the last oral intake become Observations, and the clinician who took consent becomes a Consent verified by them. The procedure carries the surgeon\'s wording rather than a procedure code -- the form is free text and matching prose to a code system would guess at what is being operated on. Consent.decision is `permit` because the form only exists once consent has been obtained; a refusal is not something this assessment records.'</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>uses</b><span style="color: navy"> &quot;</span><a href="http://hl7.org/fhir/R5/servicerequest.html" title="ServiceRequest">http://hl7.org/fhir/StructureDefinition/ServiceRequest</a><span style="color: navy">&quot; </span><b>alias </b>ServiceRequest <b>as </b><b>target</b>
<b>uses</b><span style="color: navy"> &quot;</span><a href="http://hl7.org/fhir/R5/consent.html" title="Consent">http://hl7.org/fhir/StructureDefinition/Consent</a><span style="color: navy">&quot; </span><b>alias </b>Consent <b>as </b><b>target</b>

<b>group </b>ExtractInpatientSurgicalPreoperativeAssessment<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">── Planned procedure ──────────────────────────────────────────────────────</span>
  qr.item<b> as </b><span style="color: maroon">itP</span><b> where </b><span style="color: navy">(</span>(linkId = 'procedure') and answer.value.exists()<span style="color: navy">)</span><b> then</b><span style="color: navy"> {
</span>    itP.answer first<b> as </b><span style="color: maroon">aP</span><b> then</b><span style="color: navy"> {
</span>      aP<span style="color: navy"><b> -&gt; </b></span> bundle.entry<b> as </b><span style="color: maroon">entryP</span><span style="color: navy">, </span> entryP.resource = <b>create</b><span style="color: navy">(</span><span style="color: blue">'ServiceRequest'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">sr</span><b> then</b><span style="color: navy"> {
</span>        qr<span style="color: navy"><b> -&gt; </b></span>sr.id = <b>uuid</b><span style="color: navy">(</span><span style="color: navy">)</span><b> then </b>SetServiceRequestFullUrl<span style="color: navy">(</span><span style="color: maroon">sr</span><span style="color: navy">, </span><span style="color: maroon">entryP</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>entryP.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">'ServiceRequest'</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>sr.status = <span style="color: blue">'active'</span> <i>&quot;status&quot;</i><span style="color: navy">;</span>
        qr<span style="color: navy"><b> -&gt; </b></span>sr.intent = <span style="color: blue">'plan'</span> <i>&quot;intent&quot;</i><span style="color: navy">;</span>
        qr<span style="color: navy"><b> -&gt; </b></span>sr.priority = <span style="color: blue">'routine'</span> <i>&quot;priority&quot;</i><span style="color: navy">;</span>
        <span style="color: navy">// </span><span style="color: green">R5 ServiceRequest.code is a CodeableReference, so the concept sits one</span>
        <span style="color: navy">// </span><span style="color: green">level down.</span>
        aP.value<b> as </b><span style="color: maroon">v</span><span style="color: navy"><b> -&gt; </b></span>sr.code<b> as </b><span style="color: maroon">codeRef</span><b> then</b><span style="color: navy"> {
</span>          aP<span style="color: navy"><b> -&gt; </b></span>codeRef.concept<b> as </b><span style="color: maroon">concept</span><b> then</b><span style="color: navy"> {
</span>            aP<span style="color: navy"><b> -&gt; </b></span>concept.coding<b> as </b><span style="color: maroon">coding</span><b> then</b><span style="color: navy"> {
</span>              aP<span style="color: navy"><b> -&gt; </b></span>coding.system = <span style="color: blue">'https://fhir.slade360.co.ke/fhir/CodeSystem/inpatient-clinical-concept-codesystem'</span> <i>&quot;codeSystem&quot;</i><span style="color: navy">;</span>
              aP<span style="color: navy"><b> -&gt; </b></span>coding.code = <span style="color: blue">'planned-procedure'</span> <i>&quot;codeCode&quot;</i><span style="color: navy">;</span>
              aP<span style="color: navy"><b> -&gt; </b></span>coding.display = <span style="color: blue">'Planned procedure'</span> <i>&quot;codeDisplay&quot;</i><span style="color: navy">;</span>
            <span style="color: navy">}</span> <i>&quot;codeCoding&quot;</i><span style="color: navy">;</span>
            v<span style="color: navy"><b> -&gt; </b></span>concept.text = <span style="color: maroon">v</span> <i>&quot;codeText&quot;</i><span style="color: navy">;</span>
          <span style="color: navy">}</span> <i>&quot;codeConcept&quot;</i><span style="color: navy">;</span>
        <span style="color: navy">}</span> <i>&quot;serviceRequestCode&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>sr.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>sr.encounter = <span style="color: maroon">e</span><span style="color: navy">;</span>
        qr.authored<b> as </b><span style="color: maroon">t</span><span style="color: navy"><b> -&gt; </b></span>sr.authoredOn = <span style="color: maroon">t</span> <i>&quot;authoredOn&quot;</i><span style="color: navy">;</span>
        qr.author<b> as </b><span style="color: maroon">a</span><span style="color: navy"><b> -&gt; </b></span>sr.requester = <span style="color: maroon">a</span> <i>&quot;requesterFromAuthor&quot;</i><span style="color: navy">;</span>
        qr<b> where </b><span style="color: navy">(</span>author.exists().not()<span style="color: navy">)</span><b> then</b><span style="color: navy"> {
</span>          qr.source<b> as </b><span style="color: maroon">src</span><span style="color: navy"><b> -&gt; </b></span>sr.requester = <span style="color: maroon">src</span> <i>&quot;requesterFromSource&quot;</i><span style="color: navy">;</span>
        <span style="color: navy">}</span> <i>&quot;requesterFallback&quot;</i><span style="color: navy">;</span>
        qr<span style="color: navy"><b> -&gt; </b></span>sr.supportingInfo<b> as </b><span style="color: maroon">si</span><b> then</b><span style="color: navy"> {
</span>          qr<span style="color: navy"><b> -&gt; </b></span>si.reference = <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;supportingInfoRef&quot;</i><span style="color: navy">;</span>
          <span style="color: navy">}</span> <i>&quot;supportingInfoTarget&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> <i>&quot;serviceRequest&quot;</i><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;procedureAnswer&quot;</i><span style="color: navy">;</span>
  <span style="color: navy">}</span> <i>&quot;procedureRule&quot;</i><span style="color: navy">;</span>
  <span style="color: navy">// </span><span style="color: green">── ASA grade ──────────────────────────────────────────────────────────────</span>
  qr.item<b> as </b><span style="color: maroon">itA</span><b> where </b><span style="color: navy">(</span>(linkId = 'asa') and answer.value.exists()<span style="color: navy">)</span><b> then</b><span style="color: navy"> {
</span>    itA.answer first<b> as </b><span style="color: maroon">aA</span><b> then</b><span style="color: navy"> {
</span>      aA<span style="color: navy"><b> -&gt; </b></span> bundle.entry<b> as </b><span style="color: maroon">entryA</span><span style="color: navy">, </span> entryA.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">obsA</span><b> then</b><span style="color: navy"> {
</span>        qr<span style="color: navy"><b> -&gt; </b></span> obsA<span style="color: navy">, </span> entryA<b> then </b>BuildObsBase<span style="color: navy">(</span><span style="color: maroon">qr</span><span style="color: navy">, </span><span style="color: maroon">obsA</span><span style="color: navy">, </span><span style="color: maroon">entryA</span><span style="color: navy">)</span> <i>&quot;asaBase&quot;</i><span style="color: navy">;</span>
        qr<span style="color: navy"><b> -&gt; </b></span>obsA<b> then </b>SetSurveyCategory<span style="color: navy">(</span><span style="color: maroon">qr</span><span style="color: navy">, </span><span style="color: maroon">obsA</span><span style="color: navy">)</span> <i>&quot;asaCategory&quot;</i><span style="color: navy">;</span>
        qr<span style="color: navy"><b> -&gt; </b></span>obsA.code<b> as </b><span style="color: maroon">code</span><b> then</b><span style="color: navy"> {
</span>          qr<span style="color: navy"><b> -&gt; </b></span>code.coding<b> as </b><span style="color: maroon">coding</span><b> then</b><span style="color: navy"> {
</span>            qr<span style="color: navy"><b> -&gt; </b></span>coding.system = <span style="color: blue">'http://loinc.org'</span> <i>&quot;codeSystem&quot;</i><span style="color: navy">;</span>
            qr<span style="color: navy"><b> -&gt; </b></span>coding.code = <span style="color: blue">'97816-3'</span> <i>&quot;codeCode&quot;</i><span style="color: navy">;</span>
            qr<span style="color: navy"><b> -&gt; </b></span>coding.display = <span style="color: blue">'American society of anesthesiologists morbidity state'</span> <i>&quot;codeDisplay&quot;</i><span style="color: navy">;</span>
          <span style="color: navy">}</span> <i>&quot;codeCoding&quot;</i><span style="color: navy">;</span>
        <span style="color: navy">}</span> <i>&quot;asaCode&quot;</i><span style="color: navy">;</span>
        aA<span style="color: navy"><b> -&gt; </b></span>obsA<b> then </b>SetCodedValue<span style="color: navy">(</span><span style="color: maroon">aA</span><span style="color: navy">, </span><span style="color: maroon">obsA</span><span style="color: navy">)</span> <i>&quot;asaValue&quot;</i><span style="color: navy">;</span>
      <span style="color: navy">}</span> <i>&quot;asaObservation&quot;</i><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;asaAnswer&quot;</i><span style="color: navy">;</span>
  <span style="color: navy">}</span> <i>&quot;asaRule&quot;</i><span style="color: navy">;</span>
  <span style="color: navy">// </span><span style="color: green">── Last oral intake ───────────────────────────────────────────────────────</span>
  <span style="color: navy">// </span><span style="color: green">Reported by the patient rather than measured, hence `social-history`. The</span>
  <span style="color: navy">// </span><span style="color: green">answer is a dateTime and goes through as one: LOINC 67517-3 is defined as a</span>
  <span style="color: navy">// </span><span style="color: green">date and time, so no Quantity is involved.</span>
  qr.item<b> as </b><span style="color: maroon">itN</span><b> where </b><span style="color: navy">(</span>(linkId = 'nbm') and answer.value.exists()<span style="color: navy">)</span><b> then</b><span style="color: navy"> {
</span>    itN.answer first<b> as </b><span style="color: maroon">aN</span><b> then</b><span style="color: navy"> {
</span>      aN<span style="color: navy"><b> -&gt; </b></span> bundle.entry<b> as </b><span style="color: maroon">entryN</span><span style="color: navy">, </span> entryN.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">obsN</span><b> then</b><span style="color: navy"> {
</span>        qr<span style="color: navy"><b> -&gt; </b></span> obsN<span style="color: navy">, </span> entryN<b> then </b>BuildObsBase<span style="color: navy">(</span><span style="color: maroon">qr</span><span style="color: navy">, </span><span style="color: maroon">obsN</span><span style="color: navy">, </span><span style="color: maroon">entryN</span><span style="color: navy">)</span> <i>&quot;nbmBase&quot;</i><span style="color: navy">;</span>
        qr<span style="color: navy"><b> -&gt; </b></span>obsN<b> then </b>SetSocialHistoryCategory<span style="color: navy">(</span><span style="color: maroon">qr</span><span style="color: navy">, </span><span style="color: maroon">obsN</span><span style="color: navy">)</span> <i>&quot;nbmCategory&quot;</i><span style="color: navy">;</span>
        qr<span style="color: navy"><b> -&gt; </b></span>obsN.code<b> as </b><span style="color: maroon">code</span><b> then</b><span style="color: navy"> {
</span>          qr<span style="color: navy"><b> -&gt; </b></span>code.coding<b> as </b><span style="color: maroon">coding</span><b> then</b><span style="color: navy"> {
</span>            qr<span style="color: navy"><b> -&gt; </b></span>coding.system = <span style="color: blue">'http://loinc.org'</span> <i>&quot;codeSystem&quot;</i><span style="color: navy">;</span>
            qr<span style="color: navy"><b> -&gt; </b></span>coding.code = <span style="color: blue">'67517-3'</span> <i>&quot;codeCode&quot;</i><span style="color: navy">;</span>
            qr<span style="color: navy"><b> -&gt; </b></span>coding.display = <span style="color: blue">'Last oral intake [Date and time]'</span> <i>&quot;codeDisplay&quot;</i><span style="color: navy">;</span>
          <span style="color: navy">}</span> <i>&quot;codeCoding&quot;</i><span style="color: navy">;</span>
        <span style="color: navy">}</span> <i>&quot;nbmCode&quot;</i><span style="color: navy">;</span>
        aN.value<b> as </b><span style="color: maroon">v</span><span style="color: navy"><b> -&gt; </b></span>obsN.value = <span style="color: maroon">v</span> <i>&quot;nbmValue&quot;</i><span style="color: navy">;</span>
      <span style="color: navy">}</span> <i>&quot;nbmObservation&quot;</i><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;nbmAnswer&quot;</i><span style="color: navy">;</span>
  <span style="color: navy">}</span> <i>&quot;nbmRule&quot;</i><span style="color: navy">;</span>
  <span style="color: navy">// </span><span style="color: green">── Consent ────────────────────────────────────────────────────────────────</span>
  <span style="color: navy">// </span><span style="color: green">The person named on the form is the person who took the consent, which is</span>
  <span style="color: navy">// </span><span style="color: green">verification.verifiedBy: the patient is the grantor, and the clinician</span>
  <span style="color: navy">// </span><span style="color: green">attests that the conversation happened.</span>
  qr.item<b> as </b><span style="color: maroon">itC</span><b> where </b><span style="color: navy">(</span>(linkId = 'consentBy') and answer.value.exists()<span style="color: navy">)</span><b> then</b><span style="color: navy"> {
</span>    itC.answer first<b> as </b><span style="color: maroon">aC</span><b> then</b><span style="color: navy"> {
</span>      aC<span style="color: navy"><b> -&gt; </b></span> bundle.entry<b> as </b><span style="color: maroon">entryC</span><span style="color: navy">, </span> entryC.resource = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Consent'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">consent</span><b> then</b><span style="color: navy"> {
</span>        qr<span style="color: navy"><b> -&gt; </b></span>consent.id = <b>uuid</b><span style="color: navy">(</span><span style="color: navy">)</span><b> then </b>SetConsentFullUrl<span style="color: navy">(</span><span style="color: maroon">consent</span><span style="color: navy">, </span><span style="color: maroon">entryC</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>entryC.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">'Consent'</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>consent.status = <span style="color: blue">'active'</span> <i>&quot;status&quot;</i><span style="color: navy">;</span>
        qr<span style="color: navy"><b> -&gt; </b></span>consent.category<b> as </b><span style="color: maroon">cat</span><b> then</b><span style="color: navy"> {
</span>          qr<span style="color: navy"><b> -&gt; </b></span>cat.coding<b> as </b><span style="color: maroon">coding</span><b> then</b><span style="color: navy"> {
</span>            qr<span style="color: navy"><b> -&gt; </b></span>coding.system = <span style="color: blue">'http://loinc.org'</span> <i>&quot;categorySystem&quot;</i><span style="color: navy">;</span>
            qr<span style="color: navy"><b> -&gt; </b></span>coding.code = <span style="color: blue">'59284-0'</span> <i>&quot;categoryCode&quot;</i><span style="color: navy">;</span>
            qr<span style="color: navy"><b> -&gt; </b></span>coding.display = <span style="color: blue">'Consent Document'</span> <i>&quot;categoryDisplay&quot;</i><span style="color: navy">;</span>
          <span style="color: navy">}</span> <i>&quot;categoryCoding&quot;</i><span style="color: navy">;</span>
          qr<span style="color: navy"><b> -&gt; </b></span>cat.text = <span style="color: blue">'Consent for the planned procedure'</span> <i>&quot;categoryText&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>consent.subject = <span style="color: maroon">s</span><span style="color: navy">;</span>
        <span style="color: navy">// </span><span style="color: green">Consent.date is a `date`, not a dateTime, so the day is taken off the</span>
        <span style="color: navy">// </span><span style="color: green">front of the authored timestamp rather than assigned whole.</span>
        qr<span style="color: navy"><b> -&gt; </b></span>consent.date = evaluate<span style="color: navy">(</span>qr<span style="color: navy">, </span>authored.toString().substring(0, 10)<span style="color: navy">)</span> <i>&quot;date&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>consent.grantor = <span style="color: maroon">s</span> <i>&quot;grantor&quot;</i><span style="color: navy">;</span>
        qr<span style="color: navy"><b> -&gt; </b></span>consent.decision = <span style="color: blue">'permit'</span> <i>&quot;decision&quot;</i><span style="color: navy">;</span>
        aC.value<b> as </b><span style="color: maroon">cv</span><span style="color: navy"><b> -&gt; </b></span>consent.verification<b> as </b><span style="color: maroon">ver</span><b> then</b><span style="color: navy"> {
</span>          aC<span style="color: navy"><b> -&gt; </b></span>ver.verified = <span style="color: blue">true</span> <i>&quot;verified&quot;</i><span style="color: navy">;</span>
          cv<span style="color: navy"><b> -&gt; </b></span>ver.verifiedBy = <span style="color: maroon">cv</span> <i>&quot;verifiedBy&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>ver.verificationDate = <span style="color: maroon">t</span> <i>&quot;verificationDate&quot;</i><span style="color: navy">;</span>
        <span style="color: navy">}</span> <i>&quot;verification&quot;</i><span style="color: navy">;</span>
        qr<span style="color: navy"><b> -&gt; </b></span>consent.sourceReference = <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;sourceReferenceRef&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> <i>&quot;consent&quot;</i><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;consentByAnswer&quot;</i><span style="color: navy">;</span>
  <span style="color: navy">}</span> <i>&quot;consentRule&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 map rather than imported: the transform</span>
<span style="color: navy">// </span><span style="color: green">engine resolves `imports` against whatever StructureMaps happen to be on the</span>
<span style="color: navy">// </span><span style="color: green">server, and a form that stops extracting because a shared map was not</span>
<span style="color: navy">// </span><span style="color: green">uploaded is a worse failure than a duplicated group.</span>
<span style="color: navy">// </span><span style="color: green">─────────────────────────────────────────────────────────────────────────────</span>
<span style="color: navy">// </span><span style="color: green">Two notes on what the publisher's StructureMap validator says about this file.</span>
<span style="color: navy">// </span><span style="color: green">Source parameters below are left untyped on purpose. Writing `: Element` makes</span>
<span style="color: navy">// </span><span style="color: green">the validator compare QuestionnaireResponse.item against the literal 'Element'</span>
<span style="color: navy">// </span><span style="color: green">and report them as incompatible with each other, which is noise, not a finding.</span>
<span style="color: navy">// </span><span style="color: green">Untyped, it says only that it cannot check the paths.</span>
<span style="color: navy">// </span><span style="color: green">`evaluate(context, expression)` is flagged as &quot;takes 1 parameter but 2 were</span>
<span style="color: navy">// </span><span style="color: green">found&quot;. Leave it. The FML parser in the same jar refuses the one-argument form</span>
<span style="color: navy">// </span><span style="color: green">outright -- it wants a parameter, a comma, then the FHIRPath -- so the publisher</span>
<span style="color: navy">// </span><span style="color: green">is objecting to what its own compiler emits. Two arguments is the only form that</span>
<span style="color: navy">// </span><span style="color: green">compiles, and it is what the R5 transform engine executes.</span>
<b>group </b>BuildObsBase<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.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>
  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.source<b> as </b><span style="color: maroon">src</span><span style="color: navy"><b> -&gt; </b></span>obs.performer = <span style="color: maroon">src</span> <i>&quot;performerFromSource&quot;</i><span style="color: navy">;</span>
  qr<b> where </b><span style="color: navy">(</span>source.exists().not()<span style="color: navy">)</span><b> then</b><span style="color: navy"> {
</span>    qr.author<b> as </b><span style="color: maroon">a</span><span style="color: navy"><b> -&gt; </b></span>obs.performer = <span style="color: maroon">a</span> <i>&quot;performerFromAuthor&quot;</i><span style="color: navy">;</span>
  <span style="color: navy">}</span> <i>&quot;performerFallback&quot;</i><span style="color: navy">;</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">cc</span><b> then</b><span style="color: navy"> {
</span>    cv<span style="color: navy"><b> -&gt; </b></span>cc.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>cc.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>SetSurveyCategory<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<span style="color: navy">)</span><span style="color: navy"> {
</span>  qr<span style="color: navy"><b> -&gt; </b></span>obs.category<b> as </b><span style="color: maroon">cat</span><b> then</b><span style="color: navy"> {
</span>    qr<span style="color: navy"><b> -&gt; </b></span>cat.coding<b> as </b><span style="color: maroon">coding</span><b> then</b><span style="color: navy"> {
</span>      qr<span style="color: navy"><b> -&gt; </b></span>coding.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>coding.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>coding.display = <span style="color: blue">'Survey'</span> <i>&quot;categoryDisplay&quot;</i><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;categoryCoding&quot;</i><span style="color: navy">;</span>
  <span style="color: navy">}</span> <i>&quot;category&quot;</i><span style="color: navy">;</span>
<span style="color: navy">}

</span><b>group </b>SetSocialHistoryCategory<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<span style="color: navy">)</span><span style="color: navy"> {
</span>  qr<span style="color: navy"><b> -&gt; </b></span>obs.category<b> as </b><span style="color: maroon">cat</span><b> then</b><span style="color: navy"> {
</span>    qr<span style="color: navy"><b> -&gt; </b></span>cat.coding<b> as </b><span style="color: maroon">coding</span><b> then</b><span style="color: navy"> {
</span>      qr<span style="color: navy"><b> -&gt; </b></span>coding.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>coding.code = <span style="color: blue">'social-history'</span> <i>&quot;categoryCode&quot;</i><span style="color: navy">;</span>
      qr<span style="color: navy"><b> -&gt; </b></span>coding.display = <span style="color: blue">'Social History'</span> <i>&quot;categoryDisplay&quot;</i><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;categoryCoding&quot;</i><span style="color: navy">;</span>
  <span style="color: navy">}</span> <i>&quot;category&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><b>group </b>SetServiceRequestFullUrl<span style="color: navy">(</span><b>source</b> <span style="color: maroon">sr</span><span style="color: navy"> : </span>ServiceRequest, <b>target</b> <span style="color: maroon">entry</span><span style="color: navy">)</span><span style="color: navy"> {
</span>  sr.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/ServiceRequest/'</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><b>group </b>SetConsentFullUrl<span style="color: navy">(</span><b>source</b> <span style="color: maroon">consent</span><span style="color: navy"> : </span>Consent, <b>target</b> <span style="color: maroon">entry</span><span style="color: navy">)</span><span style="color: navy"> {
</span>  consent.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/Consent/'</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/ExtractInpatientSurgicalPreoperativeAssessment"/>
  <version value="0.1.0"/>
  <name value="ExtractInpatientSurgicalPreoperativeAssessment"/>
  <title value="Inpatient Surgical Pre-operative Assessment 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="The planned procedure becomes a ServiceRequest, the ASA grade and the last oral intake become Observations, and the clinician who took consent becomes a Consent verified by them. The procedure carries the surgeon's wording rather than a procedure code -- the form is free text and matching prose to a code system would guess at what is being operated on. Consent.decision is `permit` because the form only exists once consent has been obtained; a refusal is not something this assessment records."/>
  <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>
  <structure>
    <url value="http://hl7.org/fhir/StructureDefinition/ServiceRequest"/>
    <mode value="target"/>
    <alias value="ServiceRequest"/>
  </structure>
  <structure>
    <url value="http://hl7.org/fhir/StructureDefinition/Consent"/>
    <mode value="target"/>
    <alias value="Consent"/>
  </structure>
  <group>
    <name value="ExtractInpatientSurgicalPreoperativeAssessment"/>
    <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="procedureRule"/>
      <source>
        <context value="qr"/>
        <element value="item"/>
        <variable value="itP"/>
        <condition value="(linkId = 'procedure') and answer.value.exists()"/>
      </source>
      <rule>
        <name value="procedureAnswer"/>
        <source>
          <context value="itP"/>
          <element value="answer"/>
          <listMode value="first"/>
          <variable value="aP"/>
        </source>
        <rule>
          <name value="serviceRequest"/>
          <source>
            <context value="aP"/>
          </source>
          <target>
            <context value="bundle"/>
            <element value="entry"/>
            <variable value="entryP"/>
          </target>
          <target>
            <context value="entryP"/>
            <element value="resource"/>
            <variable value="sr"/>
            <transform value="create"/>
            <parameter>
              <valueString value="ServiceRequest"/>
            </parameter>
          </target>
          <rule>
            <name value="idAndFullUrl"/>
            <source>
              <context value="qr"/>
            </source>
            <target>
              <context value="sr"/>
              <element value="id"/>
              <transform value="uuid"/>
            </target>
            <dependent>
              <name value="SetServiceRequestFullUrl"/>
              <parameter>
                <valueId value="sr"/>
              </parameter>
              <parameter>
                <valueId value="entryP"/>
              </parameter>
            </dependent>
          </rule>
          <rule>
            <name value="entryRequest"/>
            <source>
              <context value="qr"/>
            </source>
            <target>
              <context value="entryP"/>
              <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="ServiceRequest"/>
                </parameter>
              </target>
            </rule>
          </rule>
          <rule>
            <name value="status"/>
            <source>
              <context value="qr"/>
            </source>
            <target>
              <context value="sr"/>
              <element value="status"/>
              <transform value="copy"/>
              <parameter>
                <valueString value="active"/>
              </parameter>
            </target>
          </rule>
          <rule>
            <name value="intent"/>
            <source>
              <context value="qr"/>
            </source>
            <target>
              <context value="sr"/>
              <element value="intent"/>
              <transform value="copy"/>
              <parameter>
                <valueString value="plan"/>
              </parameter>
            </target>
          </rule>
          <rule>
            <name value="priority"/>
            <source>
              <context value="qr"/>
            </source>
            <target>
              <context value="sr"/>
              <element value="priority"/>
              <transform value="copy"/>
              <parameter>
                <valueString value="routine"/>
              </parameter>
            </target>
          </rule>
          <rule>
            <name value="serviceRequestCode"/>
            <source>
              <context value="aP"/>
              <element value="value"/>
              <variable value="v"/>
            </source>
            <target>
              <context value="sr"/>
              <element value="code"/>
              <variable value="codeRef"/>
            </target>
            <rule>
              <name value="codeConcept"/>
              <source>
                <context value="aP"/>
              </source>
              <target>
                <context value="codeRef"/>
                <element value="concept"/>
                <variable value="concept"/>
              </target>
              <rule>
                <name value="codeCoding"/>
                <source>
                  <context value="aP"/>
                </source>
                <target>
                  <context value="concept"/>
                  <element value="coding"/>
                  <variable value="coding"/>
                </target>
                <rule>
                  <name value="codeSystem"/>
                  <source>
                    <context value="aP"/>
                  </source>
                  <target>
                    <context value="coding"/>
                    <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="codeCode"/>
                  <source>
                    <context value="aP"/>
                  </source>
                  <target>
                    <context value="coding"/>
                    <element value="code"/>
                    <transform value="copy"/>
                    <parameter>
                      <valueString value="planned-procedure"/>
                    </parameter>
                  </target>
                </rule>
                <rule>
                  <name value="codeDisplay"/>
                  <source>
                    <context value="aP"/>
                  </source>
                  <target>
                    <context value="coding"/>
                    <element value="display"/>
                    <transform value="copy"/>
                    <parameter>
                      <valueString value="Planned procedure"/>
                    </parameter>
                  </target>
                </rule>
              </rule>
              <rule>
                <name value="codeText"/>
                <source>
                  <context value="v"/>
                </source>
                <target>
                  <context value="concept"/>
                  <element value="text"/>
                  <transform value="copy"/>
                  <parameter>
                    <valueId value="v"/>
                  </parameter>
                </target>
              </rule>
            </rule>
            <documentation
                           value="R5 ServiceRequest.code is a CodeableReference, so the concept sits one
level down."/>
          </rule>
          <rule>
            <name value="subject"/>
            <source>
              <context value="qr"/>
              <element value="subject"/>
              <variable value="s"/>
            </source>
            <target>
              <context value="sr"/>
              <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="sr"/>
              <element value="encounter"/>
              <transform value="copy"/>
              <parameter>
                <valueId value="e"/>
              </parameter>
            </target>
          </rule>
          <rule>
            <name value="authoredOn"/>
            <source>
              <context value="qr"/>
              <element value="authored"/>
              <variable value="t"/>
            </source>
            <target>
              <context value="sr"/>
              <element value="authoredOn"/>
              <transform value="copy"/>
              <parameter>
                <valueId value="t"/>
              </parameter>
            </target>
          </rule>
          <rule>
            <name value="requesterFromAuthor"/>
            <source>
              <context value="qr"/>
              <element value="author"/>
              <variable value="a"/>
            </source>
            <target>
              <context value="sr"/>
              <element value="requester"/>
              <transform value="copy"/>
              <parameter>
                <valueId value="a"/>
              </parameter>
            </target>
          </rule>
          <rule>
            <name value="requesterFallback"/>
            <source>
              <context value="qr"/>
              <condition value="author.exists().not()"/>
            </source>
            <rule>
              <name value="requesterFromSource"/>
              <source>
                <context value="qr"/>
                <element value="source"/>
                <variable value="src"/>
              </source>
              <target>
                <context value="sr"/>
                <element value="requester"/>
                <transform value="copy"/>
                <parameter>
                  <valueId value="src"/>
                </parameter>
              </target>
            </rule>
          </rule>
          <rule>
            <name value="linkQuestionnaireResponse"/>
            <source>
              <context value="qr"/>
            </source>
            <target>
              <context value="sr"/>
              <element value="supportingInfo"/>
              <variable value="si"/>
            </target>
            <rule>
              <name value="supportingInfoTarget"/>
              <source>
                <context value="qr"/>
              </source>
              <target>
                <context value="si"/>
                <element value="reference"/>
                <variable value="ref"/>
                <transform value="create"/>
                <parameter>
                  <valueString value="Reference"/>
                </parameter>
              </target>
              <rule>
                <name value="supportingInfoRef"/>
                <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>
            </rule>
          </rule>
        </rule>
      </rule>
      <documentation
                     value="── Planned procedure ──────────────────────────────────────────────────────"/>
    </rule>
    <rule>
      <name value="asaRule"/>
      <source>
        <context value="qr"/>
        <element value="item"/>
        <variable value="itA"/>
        <condition value="(linkId = 'asa') and answer.value.exists()"/>
      </source>
      <rule>
        <name value="asaAnswer"/>
        <source>
          <context value="itA"/>
          <element value="answer"/>
          <listMode value="first"/>
          <variable value="aA"/>
        </source>
        <rule>
          <name value="asaObservation"/>
          <source>
            <context value="aA"/>
          </source>
          <target>
            <context value="bundle"/>
            <element value="entry"/>
            <variable value="entryA"/>
          </target>
          <target>
            <context value="entryA"/>
            <element value="resource"/>
            <variable value="obsA"/>
            <transform value="create"/>
            <parameter>
              <valueString value="Observation"/>
            </parameter>
          </target>
          <rule>
            <name value="asaBase"/>
            <source>
              <context value="qr"/>
            </source>
            <target>
              <context value="obsA"/>
            </target>
            <target>
              <context value="entryA"/>
            </target>
            <dependent>
              <name value="BuildObsBase"/>
              <parameter>
                <valueId value="qr"/>
              </parameter>
              <parameter>
                <valueId value="obsA"/>
              </parameter>
              <parameter>
                <valueId value="entryA"/>
              </parameter>
            </dependent>
          </rule>
          <rule>
            <name value="asaCategory"/>
            <source>
              <context value="qr"/>
            </source>
            <target>
              <context value="obsA"/>
            </target>
            <dependent>
              <name value="SetSurveyCategory"/>
              <parameter>
                <valueId value="qr"/>
              </parameter>
              <parameter>
                <valueId value="obsA"/>
              </parameter>
            </dependent>
          </rule>
          <rule>
            <name value="asaCode"/>
            <source>
              <context value="qr"/>
            </source>
            <target>
              <context value="obsA"/>
              <element value="code"/>
              <variable value="code"/>
            </target>
            <rule>
              <name value="codeCoding"/>
              <source>
                <context value="qr"/>
              </source>
              <target>
                <context value="code"/>
                <element value="coding"/>
                <variable value="coding"/>
              </target>
              <rule>
                <name value="codeSystem"/>
                <source>
                  <context value="qr"/>
                </source>
                <target>
                  <context value="coding"/>
                  <element value="system"/>
                  <transform value="copy"/>
                  <parameter>
                    <valueString value="http://loinc.org"/>
                  </parameter>
                </target>
              </rule>
              <rule>
                <name value="codeCode"/>
                <source>
                  <context value="qr"/>
                </source>
                <target>
                  <context value="coding"/>
                  <element value="code"/>
                  <transform value="copy"/>
                  <parameter>
                    <valueString value="97816-3"/>
                  </parameter>
                </target>
              </rule>
              <rule>
                <name value="codeDisplay"/>
                <source>
                  <context value="qr"/>
                </source>
                <target>
                  <context value="coding"/>
                  <element value="display"/>
                  <transform value="copy"/>
                  <parameter>
                    <valueString
                                 value="American society of anesthesiologists morbidity state"/>
                  </parameter>
                </target>
              </rule>
            </rule>
          </rule>
          <rule>
            <name value="asaValue"/>
            <source>
              <context value="aA"/>
            </source>
            <target>
              <context value="obsA"/>
            </target>
            <dependent>
              <name value="SetCodedValue"/>
              <parameter>
                <valueId value="aA"/>
              </parameter>
              <parameter>
                <valueId value="obsA"/>
              </parameter>
            </dependent>
          </rule>
        </rule>
      </rule>
      <documentation
                     value="── ASA grade ──────────────────────────────────────────────────────────────"/>
    </rule>
    <rule>
      <name value="nbmRule"/>
      <source>
        <context value="qr"/>
        <element value="item"/>
        <variable value="itN"/>
        <condition value="(linkId = 'nbm') and answer.value.exists()"/>
      </source>
      <rule>
        <name value="nbmAnswer"/>
        <source>
          <context value="itN"/>
          <element value="answer"/>
          <listMode value="first"/>
          <variable value="aN"/>
        </source>
        <rule>
          <name value="nbmObservation"/>
          <source>
            <context value="aN"/>
          </source>
          <target>
            <context value="bundle"/>
            <element value="entry"/>
            <variable value="entryN"/>
          </target>
          <target>
            <context value="entryN"/>
            <element value="resource"/>
            <variable value="obsN"/>
            <transform value="create"/>
            <parameter>
              <valueString value="Observation"/>
            </parameter>
          </target>
          <rule>
            <name value="nbmBase"/>
            <source>
              <context value="qr"/>
            </source>
            <target>
              <context value="obsN"/>
            </target>
            <target>
              <context value="entryN"/>
            </target>
            <dependent>
              <name value="BuildObsBase"/>
              <parameter>
                <valueId value="qr"/>
              </parameter>
              <parameter>
                <valueId value="obsN"/>
              </parameter>
              <parameter>
                <valueId value="entryN"/>
              </parameter>
            </dependent>
          </rule>
          <rule>
            <name value="nbmCategory"/>
            <source>
              <context value="qr"/>
            </source>
            <target>
              <context value="obsN"/>
            </target>
            <dependent>
              <name value="SetSocialHistoryCategory"/>
              <parameter>
                <valueId value="qr"/>
              </parameter>
              <parameter>
                <valueId value="obsN"/>
              </parameter>
            </dependent>
          </rule>
          <rule>
            <name value="nbmCode"/>
            <source>
              <context value="qr"/>
            </source>
            <target>
              <context value="obsN"/>
              <element value="code"/>
              <variable value="code"/>
            </target>
            <rule>
              <name value="codeCoding"/>
              <source>
                <context value="qr"/>
              </source>
              <target>
                <context value="code"/>
                <element value="coding"/>
                <variable value="coding"/>
              </target>
              <rule>
                <name value="codeSystem"/>
                <source>
                  <context value="qr"/>
                </source>
                <target>
                  <context value="coding"/>
                  <element value="system"/>
                  <transform value="copy"/>
                  <parameter>
                    <valueString value="http://loinc.org"/>
                  </parameter>
                </target>
              </rule>
              <rule>
                <name value="codeCode"/>
                <source>
                  <context value="qr"/>
                </source>
                <target>
                  <context value="coding"/>
                  <element value="code"/>
                  <transform value="copy"/>
                  <parameter>
                    <valueString value="67517-3"/>
                  </parameter>
                </target>
              </rule>
              <rule>
                <name value="codeDisplay"/>
                <source>
                  <context value="qr"/>
                </source>
                <target>
                  <context value="coding"/>
                  <element value="display"/>
                  <transform value="copy"/>
                  <parameter>
                    <valueString value="Last oral intake [Date and time]"/>
                  </parameter>
                </target>
              </rule>
            </rule>
          </rule>
          <rule>
            <name value="nbmValue"/>
            <source>
              <context value="aN"/>
              <element value="value"/>
              <variable value="v"/>
            </source>
            <target>
              <context value="obsN"/>
              <element value="value"/>
              <transform value="copy"/>
              <parameter>
                <valueId value="v"/>
              </parameter>
            </target>
          </rule>
        </rule>
      </rule>
      <documentation
                     value="── Last oral intake ───────────────────────────────────────────────────────
Reported by the patient rather than measured, hence `social-history`. The
answer is a dateTime and goes through as one: LOINC 67517-3 is defined as a
date and time, so no Quantity is involved."/>
    </rule>
    <rule>
      <name value="consentRule"/>
      <source>
        <context value="qr"/>
        <element value="item"/>
        <variable value="itC"/>
        <condition value="(linkId = 'consentBy') and answer.value.exists()"/>
      </source>
      <rule>
        <name value="consentByAnswer"/>
        <source>
          <context value="itC"/>
          <element value="answer"/>
          <listMode value="first"/>
          <variable value="aC"/>
        </source>
        <rule>
          <name value="consent"/>
          <source>
            <context value="aC"/>
          </source>
          <target>
            <context value="bundle"/>
            <element value="entry"/>
            <variable value="entryC"/>
          </target>
          <target>
            <context value="entryC"/>
            <element value="resource"/>
            <variable value="consent"/>
            <transform value="create"/>
            <parameter>
              <valueString value="Consent"/>
            </parameter>
          </target>
          <rule>
            <name value="idAndFullUrl"/>
            <source>
              <context value="qr"/>
            </source>
            <target>
              <context value="consent"/>
              <element value="id"/>
              <transform value="uuid"/>
            </target>
            <dependent>
              <name value="SetConsentFullUrl"/>
              <parameter>
                <valueId value="consent"/>
              </parameter>
              <parameter>
                <valueId value="entryC"/>
              </parameter>
            </dependent>
          </rule>
          <rule>
            <name value="entryRequest"/>
            <source>
              <context value="qr"/>
            </source>
            <target>
              <context value="entryC"/>
              <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="Consent"/>
                </parameter>
              </target>
            </rule>
          </rule>
          <rule>
            <name value="status"/>
            <source>
              <context value="qr"/>
            </source>
            <target>
              <context value="consent"/>
              <element value="status"/>
              <transform value="copy"/>
              <parameter>
                <valueString value="active"/>
              </parameter>
            </target>
          </rule>
          <rule>
            <name value="category"/>
            <source>
              <context value="qr"/>
            </source>
            <target>
              <context value="consent"/>
              <element value="category"/>
              <variable value="cat"/>
            </target>
            <rule>
              <name value="categoryCoding"/>
              <source>
                <context value="qr"/>
              </source>
              <target>
                <context value="cat"/>
                <element value="coding"/>
                <variable value="coding"/>
              </target>
              <rule>
                <name value="categorySystem"/>
                <source>
                  <context value="qr"/>
                </source>
                <target>
                  <context value="coding"/>
                  <element value="system"/>
                  <transform value="copy"/>
                  <parameter>
                    <valueString value="http://loinc.org"/>
                  </parameter>
                </target>
              </rule>
              <rule>
                <name value="categoryCode"/>
                <source>
                  <context value="qr"/>
                </source>
                <target>
                  <context value="coding"/>
                  <element value="code"/>
                  <transform value="copy"/>
                  <parameter>
                    <valueString value="59284-0"/>
                  </parameter>
                </target>
              </rule>
              <rule>
                <name value="categoryDisplay"/>
                <source>
                  <context value="qr"/>
                </source>
                <target>
                  <context value="coding"/>
                  <element value="display"/>
                  <transform value="copy"/>
                  <parameter>
                    <valueString value="Consent Document"/>
                  </parameter>
                </target>
              </rule>
            </rule>
            <rule>
              <name value="categoryText"/>
              <source>
                <context value="qr"/>
              </source>
              <target>
                <context value="cat"/>
                <element value="text"/>
                <transform value="copy"/>
                <parameter>
                  <valueString value="Consent for the planned procedure"/>
                </parameter>
              </target>
            </rule>
          </rule>
          <rule>
            <name value="subject"/>
            <source>
              <context value="qr"/>
              <element value="subject"/>
              <variable value="s"/>
            </source>
            <target>
              <context value="consent"/>
              <element value="subject"/>
              <transform value="copy"/>
              <parameter>
                <valueId value="s"/>
              </parameter>
            </target>
          </rule>
          <rule>
            <name value="date"/>
            <source>
              <context value="qr"/>
            </source>
            <target>
              <context value="consent"/>
              <element value="date"/>
              <transform value="evaluate"/>
              <parameter>
                <valueId value="qr"/>
              </parameter>
              <parameter>
                <valueString value="authored.toString().substring(0, 10)"/>
              </parameter>
            </target>
            <documentation
                           value="Consent.date is a `date`, not a dateTime, so the day is taken off the
front of the authored timestamp rather than assigned whole."/>
          </rule>
          <rule>
            <name value="grantor"/>
            <source>
              <context value="qr"/>
              <element value="subject"/>
              <variable value="s"/>
            </source>
            <target>
              <context value="consent"/>
              <element value="grantor"/>
              <transform value="copy"/>
              <parameter>
                <valueId value="s"/>
              </parameter>
            </target>
          </rule>
          <rule>
            <name value="decision"/>
            <source>
              <context value="qr"/>
            </source>
            <target>
              <context value="consent"/>
              <element value="decision"/>
              <transform value="copy"/>
              <parameter>
                <valueString value="permit"/>
              </parameter>
            </target>
          </rule>
          <rule>
            <name value="verification"/>
            <source>
              <context value="aC"/>
              <element value="value"/>
              <variable value="cv"/>
            </source>
            <target>
              <context value="consent"/>
              <element value="verification"/>
              <variable value="ver"/>
            </target>
            <rule>
              <name value="verified"/>
              <source>
                <context value="aC"/>
              </source>
              <target>
                <context value="ver"/>
                <element value="verified"/>
                <transform value="copy"/>
                <parameter>
                  <valueBoolean value="true"/>
                </parameter>
              </target>
            </rule>
            <rule>
              <name value="verifiedBy"/>
              <source>
                <context value="cv"/>
              </source>
              <target>
                <context value="ver"/>
                <element value="verifiedBy"/>
                <transform value="copy"/>
                <parameter>
                  <valueId value="cv"/>
                </parameter>
              </target>
            </rule>
            <rule>
              <name value="verificationDate"/>
              <source>
                <context value="qr"/>
                <element value="authored"/>
                <variable value="t"/>
              </source>
              <target>
                <context value="ver"/>
                <element value="verificationDate"/>
                <transform value="copy"/>
                <parameter>
                  <valueId value="t"/>
                </parameter>
              </target>
            </rule>
          </rule>
          <rule>
            <name value="linkQuestionnaireResponse"/>
            <source>
              <context value="qr"/>
            </source>
            <target>
              <context value="consent"/>
              <element value="sourceReference"/>
              <variable value="ref"/>
              <transform value="create"/>
              <parameter>
                <valueString value="Reference"/>
              </parameter>
            </target>
            <rule>
              <name value="sourceReferenceRef"/>
              <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>
          </rule>
        </rule>
      </rule>
      <documentation
                     value="── Consent ────────────────────────────────────────────────────────────────
The person named on the form is the person who took the consent, which is
verification.verifiedBy: the patient is the grantor, and the clinician
attests that the conversation happened."/>
    </rule>
  </group>
  <group>
    <name value="BuildObsBase"/>
    <documentation
                   value="─────────────────────────────────────────────────────────────────────────────
Shared scaffolding. Repeated in each map rather than imported: the transform
engine resolves `imports` against whatever StructureMaps happen to be on the
server, and a form that stops extracting because a shared map was not
uploaded is a worse failure than a duplicated group.
─────────────────────────────────────────────────────────────────────────────
Two notes on what the publisher's StructureMap validator says about this file.
Source parameters below are left untyped on purpose. Writing `: Element` makes
the validator compare QuestionnaireResponse.item against the literal 'Element'
and report them as incompatible with each other, which is noise, not a finding.
Untyped, it says only that it cannot check the paths.
`evaluate(context, expression)` is flagged as &quot;takes 1 parameter but 2 were
found&quot;. Leave it. The FML parser in the same jar refuses the one-argument form
outright -- it wants a parameter, a comma, then the FHIRPath -- so the publisher
is objecting to what its own compiler emits. Two arguments is the only form that
compiles, and it is what the R5 transform engine executes."/>
    <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="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>
    </rule>
    <rule>
      <name value="performerFromSource"/>
      <source>
        <context value="qr"/>
        <element value="source"/>
        <variable value="src"/>
      </source>
      <target>
        <context value="obs"/>
        <element value="performer"/>
        <transform value="copy"/>
        <parameter>
          <valueId value="src"/>
        </parameter>
      </target>
    </rule>
    <rule>
      <name value="performerFallback"/>
      <source>
        <context value="qr"/>
        <condition value="source.exists().not()"/>
      </source>
      <rule>
        <name value="performerFromAuthor"/>
        <source>
          <context value="qr"/>
          <element value="author"/>
          <variable value="a"/>
        </source>
        <target>
          <context value="obs"/>
          <element value="performer"/>
          <transform value="copy"/>
          <parameter>
            <valueId value="a"/>
          </parameter>
        </target>
      </rule>
    </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>
    </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="cc"/>
        <transform value="create"/>
        <parameter>
          <valueString value="CodeableConcept"/>
        </parameter>
      </target>
      <rule>
        <name value="valueCoding"/>
        <source>
          <context value="cv"/>
        </source>
        <target>
          <context value="cc"/>
          <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="cc"/>
          <element value="text"/>
          <transform value="copy"/>
          <parameter>
            <valueId value="d"/>
          </parameter>
        </target>
      </rule>
    </rule>
  </group>
  <group>
    <name value="SetSurveyCategory"/>
    <input>
      <name value="qr"/>
      <type value="QR"/>
      <mode value="source"/>
    </input>
    <input>
      <name value="obs"/>
      <type value="Observation"/>
      <mode value="target"/>
    </input>
    <rule>
      <name value="category"/>
      <source>
        <context value="qr"/>
      </source>
      <target>
        <context value="obs"/>
        <element value="category"/>
        <variable value="cat"/>
      </target>
      <rule>
        <name value="categoryCoding"/>
        <source>
          <context value="qr"/>
        </source>
        <target>
          <context value="cat"/>
          <element value="coding"/>
          <variable value="coding"/>
        </target>
        <rule>
          <name value="categorySystem"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="coding"/>
            <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="coding"/>
            <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="coding"/>
            <element value="display"/>
            <transform value="copy"/>
            <parameter>
              <valueString value="Survey"/>
            </parameter>
          </target>
        </rule>
      </rule>
    </rule>
  </group>
  <group>
    <name value="SetSocialHistoryCategory"/>
    <input>
      <name value="qr"/>
      <type value="QR"/>
      <mode value="source"/>
    </input>
    <input>
      <name value="obs"/>
      <type value="Observation"/>
      <mode value="target"/>
    </input>
    <rule>
      <name value="category"/>
      <source>
        <context value="qr"/>
      </source>
      <target>
        <context value="obs"/>
        <element value="category"/>
        <variable value="cat"/>
      </target>
      <rule>
        <name value="categoryCoding"/>
        <source>
          <context value="qr"/>
        </source>
        <target>
          <context value="cat"/>
          <element value="coding"/>
          <variable value="coding"/>
        </target>
        <rule>
          <name value="categorySystem"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="coding"/>
            <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="coding"/>
            <element value="code"/>
            <transform value="copy"/>
            <parameter>
              <valueString value="social-history"/>
            </parameter>
          </target>
        </rule>
        <rule>
          <name value="categoryDisplay"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="coding"/>
            <element value="display"/>
            <transform value="copy"/>
            <parameter>
              <valueString value="Social History"/>
            </parameter>
          </target>
        </rule>
      </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>
  <group>
    <name value="SetServiceRequestFullUrl"/>
    <input>
      <name value="sr"/>
      <type value="ServiceRequest"/>
      <mode value="source"/>
    </input>
    <input>
      <name value="entry"/>
      <mode value="target"/>
    </input>
    <rule>
      <name value="assignFullUrl"/>
      <source>
        <context value="sr"/>
        <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/ServiceRequest/"/>
        </parameter>
        <parameter>
          <valueId value="id"/>
        </parameter>
      </target>
    </rule>
  </group>
  <group>
    <name value="SetConsentFullUrl"/>
    <input>
      <name value="consent"/>
      <type value="Consent"/>
      <mode value="source"/>
    </input>
    <input>
      <name value="entry"/>
      <mode value="target"/>
    </input>
    <rule>
      <name value="assignFullUrl"/>
      <source>
        <context value="consent"/>
        <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/Consent/"/>
        </parameter>
        <parameter>
          <valueId value="id"/>
        </parameter>
      </target>
    </rule>
  </group>
</StructureMap>