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 Critical Care Assessment Extraction - TTL Representation

Active as of 2026-09-14

Raw ttl | Download

@prefix fhir: <http://hl7.org/fhir/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

# - resource -------------------------------------------------------------------

<http://hl7.org/fhir/StructureMap/ExtractInpatientCriticalCareAssessment> a fhir:StructureMap ;
  fhir:nodeRole fhir:treeRoot ;
  fhir:id [ fhir:v "ExtractInpatientCriticalCareAssessment"] ; # 
  fhir:text [
     fhir:status [ fhir:v "generated" ] ;
     fhir:div [ fhir:v "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p class=\"res-header-id\"><b>Generated Narrative: StructureMap ExtractInpatientCriticalCareAssessment</b></p><a name=\"ExtractInpatientCriticalCareAssessment\"> </a><a name=\"hcExtractInpatientCriticalCareAssessment\"> </a><pre class=\"fml\">\r\n<span style=\"color: #cc00cc\">/// <b>url</b> = </span><span style=\"color: blue\">'https://fhir.slade360.co.ke/fhir/StructureMap/ExtractInpatientCriticalCareAssessment'</span>\r\n<span style=\"color: #cc00cc\">/// <b>name</b> = </span><span style=\"color: blue\">'ExtractInpatientCriticalCareAssessment'</span>\r\n<span style=\"color: #cc00cc\">/// <b>title</b> = </span><span style=\"color: blue\">'Inpatient Critical Care Assessment Extraction'</span>\r\n<span style=\"color: #cc00cc\">/// <b>status</b> = </span><span style=\"color: blue\">'active'</span>\r\n<span style=\"color: #cc00cc\">/// <b>description</b> = </span><span style=\"color: blue\">'One Observation for the Glasgow Coma Scale, carrying the total as its value and the eye, verbal and motor sub-scores as components; one for the method of oxygen delivery; one for the organ support narrative; and a MedicationAdministration for the vasopressor the patient is on. The GCS total prefers the calculated total the form submits and falls back to summing the answer weights itself, so the score still extracts from a client that does not evaluate SDC expressions.'</span>\r\n\r\n<b>uses</b><span style=\"color: navy\"> &quot;</span><a href=\"http://hl7.org/fhir/R5/questionnaireresponse.html\" title=\"QuestionnaireResponse\">http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse</a><span style=\"color: navy\">&quot; </span><b>alias </b>QR <b>as </b><b>source</b>\r\n<b>uses</b><span style=\"color: navy\"> &quot;</span><a href=\"http://hl7.org/fhir/R5/bundle.html\" title=\"Bundle\">http://hl7.org/fhir/StructureDefinition/Bundle</a><span style=\"color: navy\">&quot; </span><b>alias </b>Bundle <b>as </b><b>target</b>\r\n<b>uses</b><span style=\"color: navy\"> &quot;</span><a href=\"http://hl7.org/fhir/R5/observation.html\" title=\"Observation\">http://hl7.org/fhir/StructureDefinition/Observation</a><span style=\"color: navy\">&quot; </span><b>alias </b>Observation <b>as </b><b>target</b>\r\n<b>uses</b><span style=\"color: navy\"> &quot;</span><a href=\"http://hl7.org/fhir/R5/medicationadministration.html\" title=\"MedicationAdministration\">http://hl7.org/fhir/StructureDefinition/MedicationAdministration</a><span style=\"color: navy\">&quot; </span><b>alias </b>MedicationAdministration <b>as </b><b>target</b>\r\n\r\n<b>group </b>ExtractInpatientCriticalCareAssessment<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">qr</span><span style=\"color: navy\"> : </span>QR, <b>target</b> <span style=\"color: maroon\">bundle</span><span style=\"color: navy\"> : </span>Bundle<span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span>  qr<span style=\"color: navy\"><b> -&gt; </b></span>bundle.type = <span style=\"color: blue\">'transaction'</span> <i>&quot;setBundleType&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">── Glasgow Coma Scale ─────────────────────────────────────────────────────</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">One Observation, not three. The total is the reading a clinician acts on</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">and the three sub-scores are how it was arrived at, which is exactly what</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">Observation.component is for. (The older GlasgowCommaScaleExtract map emits</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">three separate Observations from a different questionnaire; it is untouched.)</span>\r\n  qr.item<b> as </b><span style=\"color: maroon\">gG</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'gcs') and item.answer.value.ofType(Coding).exists()<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    gG<span style=\"color: navy\"><b> -&gt; </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entryG</span><span style=\"color: navy\">, </span> entryG.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\">obsG</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      qr<span style=\"color: navy\"><b> -&gt; </b></span> obsG<span style=\"color: navy\">, </span> entryG<b> then </b>BuildObsBase<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obsG</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entryG</span><span style=\"color: navy\">)</span> <i>&quot;gcsBase&quot;</i><span style=\"color: navy\">;</span>\r\n      qr<span style=\"color: navy\"><b> -&gt; </b></span>obsG<b> then </b>SetSurveyCategory<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obsG</span><span style=\"color: navy\">)</span> <i>&quot;gcsCategory&quot;</i><span style=\"color: navy\">;</span>\r\n      qr<span style=\"color: navy\"><b> -&gt; </b></span>obsG.code<b> as </b><span style=\"color: maroon\">code</span><b> then</b><span style=\"color: navy\"> {\r\n</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\"> {\r\n</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>\r\n          qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.code = <span style=\"color: blue\">'9269-2'</span> <i>&quot;codeCode&quot;</i><span style=\"color: navy\">;</span>\r\n          qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.display = <span style=\"color: blue\">'Glasgow coma score total'</span> <i>&quot;codeDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;codeCoding&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;gcsCode&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">// </span><span style=\"color: green\">The submitted total wins; otherwise sum the answers. Every scored answer</span>\r\n      <span style=\"color: navy\">// </span><span style=\"color: green\">in SGHIClinicalScoreCodeSystem ends in its own weight -- gcs-motor-6 is</span>\r\n      <span style=\"color: navy\">// </span><span style=\"color: green\">worth 6 -- so the fallback reads the weight off the code. The two paths</span>\r\n      <span style=\"color: navy\">// </span><span style=\"color: green\">are the same arithmetic as the questionnaire's calculatedExpression, so</span>\r\n      <span style=\"color: navy\">// </span><span style=\"color: green\">they cannot disagree.</span>\r\n      <span style=\"color: navy\">// </span><span style=\"color: green\">Guarded on all three sub-scores being present. A GCS of 7 summed from</span>\r\n      <span style=\"color: navy\">// </span><span style=\"color: green\">eye and motor alone reads as a comatose patient; the components still</span>\r\n      <span style=\"color: navy\">// </span><span style=\"color: green\">extract, but the total does not, because a partial GCS is not a GCS.</span>\r\n      gG<b> where </b><span style=\"color: navy\">(</span>item.answer.value.ofType(Coding).count() = 3<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        gG<span style=\"color: navy\"><b> -&gt; </b></span>obsG.value = evaluate<span style=\"color: navy\">(</span>gG<span style=\"color: navy\">, </span>iif(item.where(linkId = 'gcs.total').answer.value.exists(), item.where(linkId = 'gcs.total').answer.value, item.answer.value.ofType(Coding).code.select($this.split('-').last().toInteger()).aggregate($this + $total, 0))<span style=\"color: navy\">)</span> <i>&quot;gcsTotalValue&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;gcsTotalRule&quot;</i><span style=\"color: navy\">;</span>\r\n      gG.item<b> as </b><span style=\"color: maroon\">itE</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'gcs.eye') and answer.value.exists()<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -&gt; </b></span>obsG.component<b> as </b><span style=\"color: maroon\">comp</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        itE<span style=\"color: navy\"><b> -&gt; </b></span>comp.code<b> as </b><span style=\"color: maroon\">code</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          itE<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\"> {\r\n</span>            itE<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>\r\n            itE<span style=\"color: navy\"><b> -&gt; </b></span>coding.code = <span style=\"color: blue\">'9267-6'</span> <i>&quot;codeCode&quot;</i><span style=\"color: navy\">;</span>\r\n            itE<span style=\"color: navy\"><b> -&gt; </b></span>coding.display = <span style=\"color: blue\">'Glasgow coma score eye opening'</span> <i>&quot;codeDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n          <span style=\"color: navy\">}</span> <i>&quot;codeCoding&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;eyeCode&quot;</i><span style=\"color: navy\">;</span>\r\n        itE<span style=\"color: navy\"><b> -&gt; </b></span>comp<b> then </b>SetComponentCodedValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">itE</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">comp</span><span style=\"color: navy\">)</span> <i>&quot;eyeValue&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;gcsEyeRule&quot;</i><span style=\"color: navy\">;</span>\r\n      gG.item<b> as </b><span style=\"color: maroon\">itV</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'gcs.verbal') and answer.value.exists()<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -&gt; </b></span>obsG.component<b> as </b><span style=\"color: maroon\">comp</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        itV<span style=\"color: navy\"><b> -&gt; </b></span>comp.code<b> as </b><span style=\"color: maroon\">code</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          itV<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\"> {\r\n</span>            itV<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>\r\n            itV<span style=\"color: navy\"><b> -&gt; </b></span>coding.code = <span style=\"color: blue\">'9270-0'</span> <i>&quot;codeCode&quot;</i><span style=\"color: navy\">;</span>\r\n            itV<span style=\"color: navy\"><b> -&gt; </b></span>coding.display = <span style=\"color: blue\">'Glasgow coma score verbal'</span> <i>&quot;codeDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n          <span style=\"color: navy\">}</span> <i>&quot;codeCoding&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;verbalCode&quot;</i><span style=\"color: navy\">;</span>\r\n        itV<span style=\"color: navy\"><b> -&gt; </b></span>comp<b> then </b>SetComponentCodedValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">itV</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">comp</span><span style=\"color: navy\">)</span> <i>&quot;verbalValue&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;gcsVerbalRule&quot;</i><span style=\"color: navy\">;</span>\r\n      gG.item<b> as </b><span style=\"color: maroon\">itM</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'gcs.motor') and answer.value.exists()<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -&gt; </b></span>obsG.component<b> as </b><span style=\"color: maroon\">comp</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        itM<span style=\"color: navy\"><b> -&gt; </b></span>comp.code<b> as </b><span style=\"color: maroon\">code</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          itM<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\"> {\r\n</span>            itM<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>\r\n            itM<span style=\"color: navy\"><b> -&gt; </b></span>coding.code = <span style=\"color: blue\">'9268-4'</span> <i>&quot;codeCode&quot;</i><span style=\"color: navy\">;</span>\r\n            itM<span style=\"color: navy\"><b> -&gt; </b></span>coding.display = <span style=\"color: blue\">'Glasgow coma score motor'</span> <i>&quot;codeDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n          <span style=\"color: navy\">}</span> <i>&quot;codeCoding&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;motorCode&quot;</i><span style=\"color: navy\">;</span>\r\n        itM<span style=\"color: navy\"><b> -&gt; </b></span>comp<b> then </b>SetComponentCodedValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">itM</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">comp</span><span style=\"color: navy\">)</span> <i>&quot;motorValue&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;gcsMotorRule&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;gcsObservation&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;gcsRule&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">── Oxygen support ─────────────────────────────────────────────────────────</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">Category `therapy`: this records a treatment being delivered, not a</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">measurement taken.</span>\r\n  qr.item<b> as </b><span style=\"color: maroon\">itO</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'oxygen') and answer.value.exists()<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    itO.answer first<b> as </b><span style=\"color: maroon\">aO</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      aO<span style=\"color: navy\"><b> -&gt; </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entryO</span><span style=\"color: navy\">, </span> entryO.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\">obsO</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        qr<span style=\"color: navy\"><b> -&gt; </b></span> obsO<span style=\"color: navy\">, </span> entryO<b> then </b>BuildObsBase<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obsO</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entryO</span><span style=\"color: navy\">)</span> <i>&quot;oxygenBase&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>obsO<b> then </b>SetTherapyCategory<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obsO</span><span style=\"color: navy\">)</span> <i>&quot;oxygenCategory&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>obsO.code<b> as </b><span style=\"color: maroon\">code</span><b> then</b><span style=\"color: navy\"> {\r\n</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\"> {\r\n</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>\r\n            qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.code = <span style=\"color: blue\">'107117-4'</span> <i>&quot;codeCode&quot;</i><span style=\"color: navy\">;</span>\r\n            qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.display = <span style=\"color: blue\">'Method of oxygen delivery'</span> <i>&quot;codeDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n          <span style=\"color: navy\">}</span> <i>&quot;codeCoding&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;oxygenCode&quot;</i><span style=\"color: navy\">;</span>\r\n        aO<span style=\"color: navy\"><b> -&gt; </b></span>obsO<b> then </b>SetCodedValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">aO</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obsO</span><span style=\"color: navy\">)</span> <i>&quot;oxygenValue&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;oxygenObservation&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;oxygenAnswer&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;oxygenRule&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">── Organ support ──────────────────────────────────────────────────────────</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">LOINC has codes for individual supports but none for the summary the form</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">asks for, so a local code. See SGHIInpatientClinicalConceptCodeSystem.</span>\r\n  qr.item<b> as </b><span style=\"color: maroon\">itS</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'organSupport') and answer.value.exists()<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    itS.answer first<b> as </b><span style=\"color: maroon\">aS</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      aS<span style=\"color: navy\"><b> -&gt; </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entryS</span><span style=\"color: navy\">, </span> entryS.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\">obsS</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        qr<span style=\"color: navy\"><b> -&gt; </b></span> obsS<span style=\"color: navy\">, </span> entryS<b> then </b>BuildObsBase<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obsS</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entryS</span><span style=\"color: navy\">)</span> <i>&quot;organSupportBase&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>obsS<b> then </b>SetTherapyCategory<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obsS</span><span style=\"color: navy\">)</span> <i>&quot;organSupportCategory&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>obsS.code<b> as </b><span style=\"color: maroon\">code</span><b> then</b><span style=\"color: navy\"> {\r\n</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\"> {\r\n</span>            qr<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>\r\n            qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.code = <span style=\"color: blue\">'organ-support'</span> <i>&quot;codeCode&quot;</i><span style=\"color: navy\">;</span>\r\n            qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.display = <span style=\"color: blue\">'Organ support needed'</span> <i>&quot;codeDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n          <span style=\"color: navy\">}</span> <i>&quot;codeCoding&quot;</i><span style=\"color: navy\">;</span>\r\n          qr<span style=\"color: navy\"><b> -&gt; </b></span>code.text = <span style=\"color: blue\">'Organ support needed'</span> <i>&quot;codeText&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;organSupportCode&quot;</i><span style=\"color: navy\">;</span>\r\n        aS.value<b> as </b><span style=\"color: maroon\">v</span><span style=\"color: navy\"><b> -&gt; </b></span>obsS.value = <span style=\"color: maroon\">v</span> <i>&quot;organSupportValue&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;organSupportObservation&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;organSupportAnswer&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;organSupportRule&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">── Vasopressor ────────────────────────────────────────────────────────────</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">The form captures a dose description (&quot;Noradrenaline 0.1 mcg/kg/min&quot;), not</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">a medication reference, so the wording lands in medication.concept.text</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">rather than being matched against a drug dictionary. Status is</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">`in-progress`: the assessment records an infusion running at the moment it</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">was written, and `completed` would assert it had finished, which is not</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">what the nurse wrote.</span>\r\n  qr.item<b> as </b><span style=\"color: maroon\">itV</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'vasopressor') and answer.value.exists()<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    itV.answer first<b> as </b><span style=\"color: maroon\">aV</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      aV<span style=\"color: navy\"><b> -&gt; </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entryV</span><span style=\"color: navy\">, </span> entryV.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'MedicationAdministration'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">ma</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        qr<span style=\"color: navy\"><b> -&gt; </b></span>ma.id = <b>uuid</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> then </b>SetMedicationAdministrationFullUrl<span style=\"color: navy\">(</span><span style=\"color: maroon\">ma</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entryV</span><span style=\"color: navy\">)</span> <i>&quot;idAndFullUrl&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>entryV.request<b> as </b><span style=\"color: maroon\">request</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          qr<span style=\"color: navy\"><b> -&gt; </b></span>request.method = <span style=\"color: blue\">'POST'</span> <i>&quot;requestMethod&quot;</i><span style=\"color: navy\">;</span>\r\n          qr<span style=\"color: navy\"><b> -&gt; </b></span>request.url = <span style=\"color: blue\">'MedicationAdministration'</span> <i>&quot;requestUrl&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;entryRequest&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>ma.status = <span style=\"color: blue\">'in-progress'</span> <i>&quot;status&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>ma.category<b> as </b><span style=\"color: maroon\">cat</span><b> then</b><span style=\"color: navy\"> {\r\n</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\"> {\r\n</span>            qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.system = <span style=\"color: blue\">'http://terminology.hl7.org/CodeSystem/medication-admin-location'</span> <i>&quot;categorySystem&quot;</i><span style=\"color: navy\">;</span>\r\n            qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.code = <span style=\"color: blue\">'inpatient'</span> <i>&quot;categoryCode&quot;</i><span style=\"color: navy\">;</span>\r\n            qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.display = <span style=\"color: blue\">'Inpatient'</span> <i>&quot;categoryDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n          <span style=\"color: navy\">}</span> <i>&quot;categoryCoding&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;category&quot;</i><span style=\"color: navy\">;</span>\r\n        aV.value<b> as </b><span style=\"color: maroon\">v</span><span style=\"color: navy\"><b> -&gt; </b></span>ma.medication<b> as </b><span style=\"color: maroon\">medRef</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          v<span style=\"color: navy\"><b> -&gt; </b></span>medRef.concept<b> as </b><span style=\"color: maroon\">concept</span><b> then</b><span style=\"color: navy\"> {\r\n</span>            v<span style=\"color: navy\"><b> -&gt; </b></span>concept.text = <span style=\"color: maroon\">v</span> <i>&quot;medicationText&quot;</i><span style=\"color: navy\">;</span>\r\n          <span style=\"color: navy\">}</span> <i>&quot;medicationConcept&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;medication&quot;</i><span style=\"color: navy\">;</span>\r\n        qr.subject<b> as </b><span style=\"color: maroon\">s</span><span style=\"color: navy\"><b> -&gt; </b></span>ma.subject = <span style=\"color: maroon\">s</span><span style=\"color: navy\">;</span>\r\n        qr.encounter<b> as </b><span style=\"color: maroon\">e</span><span style=\"color: navy\"><b> -&gt; </b></span>ma.encounter = <span style=\"color: maroon\">e</span><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">// </span><span style=\"color: green\">R5 spells this element `occurence[x]`. That is the specification's own</span>\r\n        <span style=\"color: navy\">// </span><span style=\"color: green\">typo, not one here.</span>\r\n        qr.authored<b> as </b><span style=\"color: maroon\">t</span><span style=\"color: navy\"><b> -&gt; </b></span>ma.occurence = <span style=\"color: maroon\">t</span> <i>&quot;occurrence&quot;</i><span style=\"color: navy\">;</span>\r\n        qr.authored<b> as </b><span style=\"color: maroon\">t</span><span style=\"color: navy\"><b> -&gt; </b></span>ma.recorded = <span style=\"color: maroon\">t</span> <i>&quot;recorded&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>ma.supportingInformation = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Reference'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">ref</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          qr.id<b> as </b><span style=\"color: maroon\">qid</span><span style=\"color: navy\"><b> -&gt; </b></span>ref.reference = <span style=\"color: maroon\">qid</span> <i>&quot;supportingInformationRef&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;linkQuestionnaireResponse&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;medicationAdministration&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;vasopressorAnswer&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;vasopressorRule&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">─────────────────────────────────────────────────────────────────────────────</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Shared scaffolding. Repeated in each map rather than imported: the transform</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">engine resolves `imports` against whatever StructureMaps happen to be on the</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">server, and a form that stops extracting because a shared map was not</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">uploaded is a worse failure than a duplicated group.</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">─────────────────────────────────────────────────────────────────────────────</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Two notes on what the publisher's StructureMap validator says about this file.</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Source parameters below are left untyped on purpose. Writing `: Element` makes</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">the validator compare QuestionnaireResponse.item against the literal 'Element'</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">and report them as incompatible with each other, which is noise, not a finding.</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Untyped, it says only that it cannot check the paths.</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">`evaluate(context, expression)` is flagged as &quot;takes 1 parameter but 2 were</span>\r\n<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>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">outright -- it wants a parameter, a comma, then the FHIRPath -- so the publisher</span>\r\n<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>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">compiles, and it is what the R5 transform engine executes.</span>\r\n<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\"> {\r\n</span>  qr<span style=\"color: navy\"><b> -&gt; </b></span>obs.id = <b>uuid</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> then </b>SetObservationFullUrl<span style=\"color: navy\">(</span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>&quot;idAndFullUrl&quot;</i><span style=\"color: navy\">;</span>\r\n  qr<span style=\"color: navy\"><b> -&gt; </b></span>entry.request<b> as </b><span style=\"color: maroon\">request</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    qr<span style=\"color: navy\"><b> -&gt; </b></span>request.method = <span style=\"color: blue\">'POST'</span> <i>&quot;requestMethod&quot;</i><span style=\"color: navy\">;</span>\r\n    qr<span style=\"color: navy\"><b> -&gt; </b></span>request.url = <span style=\"color: blue\">'Observation'</span> <i>&quot;requestUrl&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;entryRequest&quot;</i><span style=\"color: navy\">;</span>\r\n  qr<span style=\"color: navy\"><b> -&gt; </b></span>obs.status = <span style=\"color: blue\">'final'</span> <i>&quot;status&quot;</i><span style=\"color: navy\">;</span>\r\n  qr.subject<b> as </b><span style=\"color: maroon\">s</span><span style=\"color: navy\"><b> -&gt; </b></span>obs.subject = <span style=\"color: maroon\">s</span><span style=\"color: navy\">;</span>\r\n  qr.encounter<b> as </b><span style=\"color: maroon\">e</span><span style=\"color: navy\"><b> -&gt; </b></span>obs.encounter = <span style=\"color: maroon\">e</span><span style=\"color: navy\">;</span>\r\n  qr.authored<b> as </b><span style=\"color: maroon\">t</span><span style=\"color: navy\"><b> -&gt; </b></span>obs.effective = <span style=\"color: maroon\">t</span> <i>&quot;effective&quot;</i><span style=\"color: navy\">;</span>\r\n  qr.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>\r\n  qr<b> where </b><span style=\"color: navy\">(</span>source.exists().not()<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</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>\r\n  <span style=\"color: navy\">}</span> <i>&quot;performerFallback&quot;</i><span style=\"color: navy\">;</span>\r\n  qr<span style=\"color: navy\"><b> -&gt; </b></span>obs.derivedFrom = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Reference'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">ref</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    qr.id<b> as </b><span style=\"color: maroon\">qid</span><span style=\"color: navy\"><b> -&gt; </b></span>ref.reference = <span style=\"color: maroon\">qid</span> <i>&quot;derivedFromRef&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;linkQuestionnaireResponse&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>SetCodedValue<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">a</span>, <b>target</b> <span style=\"color: maroon\">obs</span><span style=\"color: navy\"> : </span>Observation<span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span>  a.value<b> as </b><span style=\"color: maroon\">cv</span><span style=\"color: navy\"><b> -&gt; </b></span>obs.value = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'CodeableConcept'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">cc</span><b> then</b><span style=\"color: navy\"> {\r\n</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>\r\n    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>\r\n  <span style=\"color: navy\">}</span> <i>&quot;codedValue&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>SetComponentCodedValue<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">it</span>, <b>target</b> <span style=\"color: maroon\">comp</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span>  it.answer first<b> as </b><span style=\"color: maroon\">a</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    a.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\">cc</span><b> then</b><span style=\"color: navy\"> {\r\n</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>\r\n      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>\r\n    <span style=\"color: navy\">}</span> <i>&quot;codedValue&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;componentAnswer&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</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\"> {\r\n</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\"> {\r\n</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\"> {\r\n</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>\r\n      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>\r\n      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>\r\n    <span style=\"color: navy\">}</span> <i>&quot;categoryCoding&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;category&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>SetTherapyCategory<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\"> {\r\n</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\"> {\r\n</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\"> {\r\n</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>\r\n      qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.code = <span style=\"color: blue\">'therapy'</span> <i>&quot;categoryCode&quot;</i><span style=\"color: navy\">;</span>\r\n      qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.display = <span style=\"color: blue\">'Therapy'</span> <i>&quot;categoryDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;categoryCoding&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;category&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>SetObservationFullUrl<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">obs</span><span style=\"color: navy\"> : </span>Observation, <b>target</b> <span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span>  obs.id<b> as </b><span style=\"color: maroon\">id</span><span style=\"color: navy\"><b> -&gt; </b></span>entry.fullUrl = <b>append</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'https://fhir.slade360.co.ke/fhir/Observation/'</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">id</span><span style=\"color: navy\">)</span> <i>&quot;assignFullUrl&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>SetMedicationAdministrationFullUrl<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">ma</span><span style=\"color: navy\"> : </span>MedicationAdministration, <b>target</b> <span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span>  ma.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/MedicationAdministration/'</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">id</span><span style=\"color: navy\">)</span> <i>&quot;assignFullUrl&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span></pre></div>"^^rdf:XMLLiteral ]
  ] ; # 
  fhir:url [ fhir:v "https://fhir.slade360.co.ke/fhir/StructureMap/ExtractInpatientCriticalCareAssessment"^^xsd:anyURI] ; # 
  fhir:version [ fhir:v "0.1.0"] ; # 
  fhir:name [ fhir:v "ExtractInpatientCriticalCareAssessment"] ; # 
  fhir:title [ fhir:v "Inpatient Critical Care Assessment Extraction"] ; # 
  fhir:status [ fhir:v "active"] ; # 
  fhir:date [ fhir:v "2026-09-14T06:31:13+00:00"^^xsd:dateTime] ; # 
  fhir:publisher [ fhir:v "Kathurima Kimathi"] ; # 
  fhir:contact ( [
     fhir:name [ fhir:v "Kathurima Kimathi" ] ;
     fhir:telecom ( [
       fhir:system [ fhir:v "url" ] ;
       fhir:value [ fhir:v "https://www.linkedin.com/in/kathurima-kimathi/" ]
     ] [
       fhir:system [ fhir:v "email" ] ;
       fhir:value [ fhir:v "kathurimakimathi415@gmail.com" ]
     ] )
  ] [
     fhir:name [ fhir:v "Oscar John" ] ;
     fhir:telecom ( [
       fhir:system [ fhir:v "email" ] ;
       fhir:value [ fhir:v "oscarjohnotieno@gmail.com" ] ;
       fhir:use [ fhir:v "work" ]
     ] )
  ] [
     fhir:name [ fhir:v "Kennedy Omondi" ] ;
     fhir:telecom ( [
       fhir:system [ fhir:v "email" ] ;
       fhir:value [ fhir:v "kennankole@gmail.com" ] ;
       fhir:use [ fhir:v "work" ]
     ] )
  ] ) ; # 
  fhir:description [ fhir:v "One Observation for the Glasgow Coma Scale, carrying the total as its value and the eye, verbal and motor sub-scores as components; one for the method of oxygen delivery; one for the organ support narrative; and a MedicationAdministration for the vasopressor the patient is on. The GCS total prefers the calculated total the form submits and falls back to summing the answer weights itself, so the score still extracts from a client that does not evaluate SDC expressions."] ; # 
  fhir:structure ( [
     fhir:url [
       fhir:v "http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse"^^xsd:anyURI ;
       fhir:link <http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse>
     ] ;
     fhir:mode [ fhir:v "source" ] ;
     fhir:alias [ fhir:v "QR" ]
  ] [
     fhir:url [
       fhir:v "http://hl7.org/fhir/StructureDefinition/Bundle"^^xsd:anyURI ;
       fhir:link <http://hl7.org/fhir/StructureDefinition/Bundle>
     ] ;
     fhir:mode [ fhir:v "target" ] ;
     fhir:alias [ fhir:v "Bundle" ]
  ] [
     fhir:url [
       fhir:v "http://hl7.org/fhir/StructureDefinition/Observation"^^xsd:anyURI ;
       fhir:link <http://hl7.org/fhir/StructureDefinition/Observation>
     ] ;
     fhir:mode [ fhir:v "target" ] ;
     fhir:alias [ fhir:v "Observation" ]
  ] [
     fhir:url [
       fhir:v "http://hl7.org/fhir/StructureDefinition/MedicationAdministration"^^xsd:anyURI ;
       fhir:link <http://hl7.org/fhir/StructureDefinition/MedicationAdministration>
     ] ;
     fhir:mode [ fhir:v "target" ] ;
     fhir:alias [ fhir:v "MedicationAdministration" ]
  ] ) ; # 
  fhir:group ( [
     fhir:name [ fhir:v "ExtractInpatientCriticalCareAssessment" ] ;
     fhir:input ( [
       fhir:name [ fhir:v "qr" ] ;
       fhir:type [ fhir:v "QR" ] ;
       fhir:mode [ fhir:v "source" ]
     ] [
       fhir:name [ fhir:v "bundle" ] ;
       fhir:type [ fhir:v "Bundle" ] ;
       fhir:mode [ fhir:v "target" ]
     ] ) ;
     fhir:rule ( [
       fhir:name [ fhir:v "setBundleType" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ]
       ] ) ;
       fhir:target ( [
         fhir:context [ fhir:v "bundle" ] ;
         fhir:element [ fhir:v "type" ] ;
         fhir:transform [ fhir:v "copy" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:string ;
             fhir:v "transaction"
           ]
         ] )
       ] )
     ] [
       fhir:name [ fhir:v "gcsRule" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ] ;
         fhir:element [ fhir:v "item" ] ;
         fhir:variable [ fhir:v "gG" ] ;
         fhir:condition [ fhir:v "(linkId = 'gcs') and item.answer.value.ofType(Coding).exists()" ]
       ] ) ;
       fhir:rule ( [
         fhir:name [ fhir:v "gcsObservation" ] ;
         fhir:source ( [
           fhir:context [ fhir:v "gG" ]
         ] ) ;
         fhir:target ( [
           fhir:context [ fhir:v "bundle" ] ;
           fhir:element [ fhir:v "entry" ] ;
           fhir:variable [ fhir:v "entryG" ]
         ] [
           fhir:context [ fhir:v "entryG" ] ;
           fhir:element [ fhir:v "resource" ] ;
           fhir:variable [ fhir:v "obsG" ] ;
           fhir:transform [ fhir:v "create" ] ;
           fhir:parameter ( [
             fhir:value [
               a fhir:string ;
               fhir:v "Observation"
             ]
           ] )
         ] ) ;
         fhir:rule ( [
           fhir:name [ fhir:v "gcsBase" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "qr" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "obsG" ]
           ] [
             fhir:context [ fhir:v "entryG" ]
           ] ) ;
           fhir:dependent ( [
             fhir:name [ fhir:v "BuildObsBase" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:id ;
                 fhir:v "qr"
               ]
             ] [
               fhir:value [
                 a fhir:id ;
                 fhir:v "obsG"
               ]
             ] [
               fhir:value [
                 a fhir:id ;
                 fhir:v "entryG"
               ]
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "gcsCategory" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "qr" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "obsG" ]
           ] ) ;
           fhir:dependent ( [
             fhir:name [ fhir:v "SetSurveyCategory" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:id ;
                 fhir:v "qr"
               ]
             ] [
               fhir:value [
                 a fhir:id ;
                 fhir:v "obsG"
               ]
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "gcsCode" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "qr" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "obsG" ] ;
             fhir:element [ fhir:v "code" ] ;
             fhir:variable [ fhir:v "code" ]
           ] ) ;
           fhir:rule ( [
             fhir:name [ fhir:v "codeCoding" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "code" ] ;
               fhir:element [ fhir:v "coding" ] ;
               fhir:variable [ fhir:v "coding" ]
             ] ) ;
             fhir:rule ( [
               fhir:name [ fhir:v "codeSystem" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "qr" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "coding" ] ;
                 fhir:element [ fhir:v "system" ] ;
                 fhir:transform [ fhir:v "copy" ] ;
                 fhir:parameter ( [
                   fhir:value [
                     a fhir:string ;
                     fhir:v "http://loinc.org"
                   ]
                 ] )
               ] )
             ] [
               fhir:name [ fhir:v "codeCode" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "qr" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "coding" ] ;
                 fhir:element [ fhir:v "code" ] ;
                 fhir:transform [ fhir:v "copy" ] ;
                 fhir:parameter ( [
                   fhir:value [
                     a fhir:string ;
                     fhir:v "9269-2"
                   ]
                 ] )
               ] )
             ] [
               fhir:name [ fhir:v "codeDisplay" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "qr" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "coding" ] ;
                 fhir:element [ fhir:v "display" ] ;
                 fhir:transform [ fhir:v "copy" ] ;
                 fhir:parameter ( [
                   fhir:value [
                     a fhir:string ;
                     fhir:v "Glasgow coma score total"
                   ]
                 ] )
               ] )
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "gcsTotalRule" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "gG" ] ;
             fhir:condition [ fhir:v "item.answer.value.ofType(Coding).count() = 3" ]
           ] ) ;
           fhir:rule ( [
             fhir:name [ fhir:v "gcsTotalValue" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "gG" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "obsG" ] ;
               fhir:element [ fhir:v "value" ] ;
               fhir:transform [ fhir:v "evaluate" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "gG"
                 ]
               ] [
                 fhir:value [
                   a fhir:string ;
                   fhir:v "iif(item.where(linkId = 'gcs.total').answer.value.exists(), item.where(linkId = 'gcs.total').answer.value, item.answer.value.ofType(Coding).code.select($this.split('-').last().toInteger()).aggregate($this + $total, 0))"
                 ]
               ] )
             ] )
           ] ) ;
           fhir:documentation [ fhir:v "The submitted total wins; otherwise sum the answers. Every scored answer\r\nin SGHIClinicalScoreCodeSystem ends in its own weight -- gcs-motor-6 is\r\nworth 6 -- so the fallback reads the weight off the code. The two paths\r\nare the same arithmetic as the questionnaire's calculatedExpression, so\r\nthey cannot disagree.\r\nGuarded on all three sub-scores being present. A GCS of 7 summed from\r\neye and motor alone reads as a comatose patient; the components still\r\nextract, but the total does not, because a partial GCS is not a GCS." ]
         ] [
           fhir:name [ fhir:v "gcsEyeRule" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "gG" ] ;
             fhir:element [ fhir:v "item" ] ;
             fhir:variable [ fhir:v "itE" ] ;
             fhir:condition [ fhir:v "(linkId = 'gcs.eye') and answer.value.exists()" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "obsG" ] ;
             fhir:element [ fhir:v "component" ] ;
             fhir:variable [ fhir:v "comp" ]
           ] ) ;
           fhir:rule ( [
             fhir:name [ fhir:v "eyeCode" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "itE" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "comp" ] ;
               fhir:element [ fhir:v "code" ] ;
               fhir:variable [ fhir:v "code" ]
             ] ) ;
             fhir:rule ( [
               fhir:name [ fhir:v "codeCoding" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "itE" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "code" ] ;
                 fhir:element [ fhir:v "coding" ] ;
                 fhir:variable [ fhir:v "coding" ]
               ] ) ;
               fhir:rule ( [
                 fhir:name [ fhir:v "codeSystem" ] ;
                 fhir:source ( [
                   fhir:context [ fhir:v "itE" ]
                 ] ) ;
                 fhir:target ( [
                   fhir:context [ fhir:v "coding" ] ;
                   fhir:element [ fhir:v "system" ] ;
                   fhir:transform [ fhir:v "copy" ] ;
                   fhir:parameter ( [
                     fhir:value [
                       a fhir:string ;
                       fhir:v "http://loinc.org"
                     ]
                   ] )
                 ] )
               ] [
                 fhir:name [ fhir:v "codeCode" ] ;
                 fhir:source ( [
                   fhir:context [ fhir:v "itE" ]
                 ] ) ;
                 fhir:target ( [
                   fhir:context [ fhir:v "coding" ] ;
                   fhir:element [ fhir:v "code" ] ;
                   fhir:transform [ fhir:v "copy" ] ;
                   fhir:parameter ( [
                     fhir:value [
                       a fhir:string ;
                       fhir:v "9267-6"
                     ]
                   ] )
                 ] )
               ] [
                 fhir:name [ fhir:v "codeDisplay" ] ;
                 fhir:source ( [
                   fhir:context [ fhir:v "itE" ]
                 ] ) ;
                 fhir:target ( [
                   fhir:context [ fhir:v "coding" ] ;
                   fhir:element [ fhir:v "display" ] ;
                   fhir:transform [ fhir:v "copy" ] ;
                   fhir:parameter ( [
                     fhir:value [
                       a fhir:string ;
                       fhir:v "Glasgow coma score eye opening"
                     ]
                   ] )
                 ] )
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "eyeValue" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "itE" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "comp" ]
             ] ) ;
             fhir:dependent ( [
               fhir:name [ fhir:v "SetComponentCodedValue" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "itE"
                 ]
               ] [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "comp"
                 ]
               ] )
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "gcsVerbalRule" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "gG" ] ;
             fhir:element [ fhir:v "item" ] ;
             fhir:variable [ fhir:v "itV" ] ;
             fhir:condition [ fhir:v "(linkId = 'gcs.verbal') and answer.value.exists()" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "obsG" ] ;
             fhir:element [ fhir:v "component" ] ;
             fhir:variable [ fhir:v "comp" ]
           ] ) ;
           fhir:rule ( [
             fhir:name [ fhir:v "verbalCode" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "itV" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "comp" ] ;
               fhir:element [ fhir:v "code" ] ;
               fhir:variable [ fhir:v "code" ]
             ] ) ;
             fhir:rule ( [
               fhir:name [ fhir:v "codeCoding" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "itV" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "code" ] ;
                 fhir:element [ fhir:v "coding" ] ;
                 fhir:variable [ fhir:v "coding" ]
               ] ) ;
               fhir:rule ( [
                 fhir:name [ fhir:v "codeSystem" ] ;
                 fhir:source ( [
                   fhir:context [ fhir:v "itV" ]
                 ] ) ;
                 fhir:target ( [
                   fhir:context [ fhir:v "coding" ] ;
                   fhir:element [ fhir:v "system" ] ;
                   fhir:transform [ fhir:v "copy" ] ;
                   fhir:parameter ( [
                     fhir:value [
                       a fhir:string ;
                       fhir:v "http://loinc.org"
                     ]
                   ] )
                 ] )
               ] [
                 fhir:name [ fhir:v "codeCode" ] ;
                 fhir:source ( [
                   fhir:context [ fhir:v "itV" ]
                 ] ) ;
                 fhir:target ( [
                   fhir:context [ fhir:v "coding" ] ;
                   fhir:element [ fhir:v "code" ] ;
                   fhir:transform [ fhir:v "copy" ] ;
                   fhir:parameter ( [
                     fhir:value [
                       a fhir:string ;
                       fhir:v "9270-0"
                     ]
                   ] )
                 ] )
               ] [
                 fhir:name [ fhir:v "codeDisplay" ] ;
                 fhir:source ( [
                   fhir:context [ fhir:v "itV" ]
                 ] ) ;
                 fhir:target ( [
                   fhir:context [ fhir:v "coding" ] ;
                   fhir:element [ fhir:v "display" ] ;
                   fhir:transform [ fhir:v "copy" ] ;
                   fhir:parameter ( [
                     fhir:value [
                       a fhir:string ;
                       fhir:v "Glasgow coma score verbal"
                     ]
                   ] )
                 ] )
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "verbalValue" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "itV" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "comp" ]
             ] ) ;
             fhir:dependent ( [
               fhir:name [ fhir:v "SetComponentCodedValue" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "itV"
                 ]
               ] [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "comp"
                 ]
               ] )
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "gcsMotorRule" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "gG" ] ;
             fhir:element [ fhir:v "item" ] ;
             fhir:variable [ fhir:v "itM" ] ;
             fhir:condition [ fhir:v "(linkId = 'gcs.motor') and answer.value.exists()" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "obsG" ] ;
             fhir:element [ fhir:v "component" ] ;
             fhir:variable [ fhir:v "comp" ]
           ] ) ;
           fhir:rule ( [
             fhir:name [ fhir:v "motorCode" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "itM" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "comp" ] ;
               fhir:element [ fhir:v "code" ] ;
               fhir:variable [ fhir:v "code" ]
             ] ) ;
             fhir:rule ( [
               fhir:name [ fhir:v "codeCoding" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "itM" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "code" ] ;
                 fhir:element [ fhir:v "coding" ] ;
                 fhir:variable [ fhir:v "coding" ]
               ] ) ;
               fhir:rule ( [
                 fhir:name [ fhir:v "codeSystem" ] ;
                 fhir:source ( [
                   fhir:context [ fhir:v "itM" ]
                 ] ) ;
                 fhir:target ( [
                   fhir:context [ fhir:v "coding" ] ;
                   fhir:element [ fhir:v "system" ] ;
                   fhir:transform [ fhir:v "copy" ] ;
                   fhir:parameter ( [
                     fhir:value [
                       a fhir:string ;
                       fhir:v "http://loinc.org"
                     ]
                   ] )
                 ] )
               ] [
                 fhir:name [ fhir:v "codeCode" ] ;
                 fhir:source ( [
                   fhir:context [ fhir:v "itM" ]
                 ] ) ;
                 fhir:target ( [
                   fhir:context [ fhir:v "coding" ] ;
                   fhir:element [ fhir:v "code" ] ;
                   fhir:transform [ fhir:v "copy" ] ;
                   fhir:parameter ( [
                     fhir:value [
                       a fhir:string ;
                       fhir:v "9268-4"
                     ]
                   ] )
                 ] )
               ] [
                 fhir:name [ fhir:v "codeDisplay" ] ;
                 fhir:source ( [
                   fhir:context [ fhir:v "itM" ]
                 ] ) ;
                 fhir:target ( [
                   fhir:context [ fhir:v "coding" ] ;
                   fhir:element [ fhir:v "display" ] ;
                   fhir:transform [ fhir:v "copy" ] ;
                   fhir:parameter ( [
                     fhir:value [
                       a fhir:string ;
                       fhir:v "Glasgow coma score motor"
                     ]
                   ] )
                 ] )
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "motorValue" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "itM" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "comp" ]
             ] ) ;
             fhir:dependent ( [
               fhir:name [ fhir:v "SetComponentCodedValue" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "itM"
                 ]
               ] [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "comp"
                 ]
               ] )
             ] )
           ] )
         ] )
       ] ) ;
       fhir:documentation [ fhir:v "── Glasgow Coma Scale ─────────────────────────────────────────────────────\r\nOne Observation, not three. The total is the reading a clinician acts on\r\nand the three sub-scores are how it was arrived at, which is exactly what\r\nObservation.component is for. (The older GlasgowCommaScaleExtract map emits\r\nthree separate Observations from a different questionnaire; it is untouched.)" ]
     ] [
       fhir:name [ fhir:v "oxygenRule" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ] ;
         fhir:element [ fhir:v "item" ] ;
         fhir:variable [ fhir:v "itO" ] ;
         fhir:condition [ fhir:v "(linkId = 'oxygen') and answer.value.exists()" ]
       ] ) ;
       fhir:rule ( [
         fhir:name [ fhir:v "oxygenAnswer" ] ;
         fhir:source ( [
           fhir:context [ fhir:v "itO" ] ;
           fhir:element [ fhir:v "answer" ] ;
           fhir:listMode [ fhir:v "first" ] ;
           fhir:variable [ fhir:v "aO" ]
         ] ) ;
         fhir:rule ( [
           fhir:name [ fhir:v "oxygenObservation" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "aO" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "bundle" ] ;
             fhir:element [ fhir:v "entry" ] ;
             fhir:variable [ fhir:v "entryO" ]
           ] [
             fhir:context [ fhir:v "entryO" ] ;
             fhir:element [ fhir:v "resource" ] ;
             fhir:variable [ fhir:v "obsO" ] ;
             fhir:transform [ fhir:v "create" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:string ;
                 fhir:v "Observation"
               ]
             ] )
           ] ) ;
           fhir:rule ( [
             fhir:name [ fhir:v "oxygenBase" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "obsO" ]
             ] [
               fhir:context [ fhir:v "entryO" ]
             ] ) ;
             fhir:dependent ( [
               fhir:name [ fhir:v "BuildObsBase" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "qr"
                 ]
               ] [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "obsO"
                 ]
               ] [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "entryO"
                 ]
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "oxygenCategory" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "obsO" ]
             ] ) ;
             fhir:dependent ( [
               fhir:name [ fhir:v "SetTherapyCategory" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "qr"
                 ]
               ] [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "obsO"
                 ]
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "oxygenCode" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "obsO" ] ;
               fhir:element [ fhir:v "code" ] ;
               fhir:variable [ fhir:v "code" ]
             ] ) ;
             fhir:rule ( [
               fhir:name [ fhir:v "codeCoding" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "qr" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "code" ] ;
                 fhir:element [ fhir:v "coding" ] ;
                 fhir:variable [ fhir:v "coding" ]
               ] ) ;
               fhir:rule ( [
                 fhir:name [ fhir:v "codeSystem" ] ;
                 fhir:source ( [
                   fhir:context [ fhir:v "qr" ]
                 ] ) ;
                 fhir:target ( [
                   fhir:context [ fhir:v "coding" ] ;
                   fhir:element [ fhir:v "system" ] ;
                   fhir:transform [ fhir:v "copy" ] ;
                   fhir:parameter ( [
                     fhir:value [
                       a fhir:string ;
                       fhir:v "http://loinc.org"
                     ]
                   ] )
                 ] )
               ] [
                 fhir:name [ fhir:v "codeCode" ] ;
                 fhir:source ( [
                   fhir:context [ fhir:v "qr" ]
                 ] ) ;
                 fhir:target ( [
                   fhir:context [ fhir:v "coding" ] ;
                   fhir:element [ fhir:v "code" ] ;
                   fhir:transform [ fhir:v "copy" ] ;
                   fhir:parameter ( [
                     fhir:value [
                       a fhir:string ;
                       fhir:v "107117-4"
                     ]
                   ] )
                 ] )
               ] [
                 fhir:name [ fhir:v "codeDisplay" ] ;
                 fhir:source ( [
                   fhir:context [ fhir:v "qr" ]
                 ] ) ;
                 fhir:target ( [
                   fhir:context [ fhir:v "coding" ] ;
                   fhir:element [ fhir:v "display" ] ;
                   fhir:transform [ fhir:v "copy" ] ;
                   fhir:parameter ( [
                     fhir:value [
                       a fhir:string ;
                       fhir:v "Method of oxygen delivery"
                     ]
                   ] )
                 ] )
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "oxygenValue" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "aO" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "obsO" ]
             ] ) ;
             fhir:dependent ( [
               fhir:name [ fhir:v "SetCodedValue" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "aO"
                 ]
               ] [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "obsO"
                 ]
               ] )
             ] )
           ] )
         ] )
       ] ) ;
       fhir:documentation [ fhir:v "── Oxygen support ─────────────────────────────────────────────────────────\r\nCategory `therapy`: this records a treatment being delivered, not a\r\nmeasurement taken." ]
     ] [
       fhir:name [ fhir:v "organSupportRule" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ] ;
         fhir:element [ fhir:v "item" ] ;
         fhir:variable [ fhir:v "itS" ] ;
         fhir:condition [ fhir:v "(linkId = 'organSupport') and answer.value.exists()" ]
       ] ) ;
       fhir:rule ( [
         fhir:name [ fhir:v "organSupportAnswer" ] ;
         fhir:source ( [
           fhir:context [ fhir:v "itS" ] ;
           fhir:element [ fhir:v "answer" ] ;
           fhir:listMode [ fhir:v "first" ] ;
           fhir:variable [ fhir:v "aS" ]
         ] ) ;
         fhir:rule ( [
           fhir:name [ fhir:v "organSupportObservation" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "aS" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "bundle" ] ;
             fhir:element [ fhir:v "entry" ] ;
             fhir:variable [ fhir:v "entryS" ]
           ] [
             fhir:context [ fhir:v "entryS" ] ;
             fhir:element [ fhir:v "resource" ] ;
             fhir:variable [ fhir:v "obsS" ] ;
             fhir:transform [ fhir:v "create" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:string ;
                 fhir:v "Observation"
               ]
             ] )
           ] ) ;
           fhir:rule ( [
             fhir:name [ fhir:v "organSupportBase" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "obsS" ]
             ] [
               fhir:context [ fhir:v "entryS" ]
             ] ) ;
             fhir:dependent ( [
               fhir:name [ fhir:v "BuildObsBase" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "qr"
                 ]
               ] [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "obsS"
                 ]
               ] [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "entryS"
                 ]
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "organSupportCategory" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "obsS" ]
             ] ) ;
             fhir:dependent ( [
               fhir:name [ fhir:v "SetTherapyCategory" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "qr"
                 ]
               ] [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "obsS"
                 ]
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "organSupportCode" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "obsS" ] ;
               fhir:element [ fhir:v "code" ] ;
               fhir:variable [ fhir:v "code" ]
             ] ) ;
             fhir:rule ( [
               fhir:name [ fhir:v "codeCoding" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "qr" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "code" ] ;
                 fhir:element [ fhir:v "coding" ] ;
                 fhir:variable [ fhir:v "coding" ]
               ] ) ;
               fhir:rule ( [
                 fhir:name [ fhir:v "codeSystem" ] ;
                 fhir:source ( [
                   fhir:context [ fhir:v "qr" ]
                 ] ) ;
                 fhir:target ( [
                   fhir:context [ fhir:v "coding" ] ;
                   fhir:element [ fhir:v "system" ] ;
                   fhir:transform [ fhir:v "copy" ] ;
                   fhir:parameter ( [
                     fhir:value [
                       a fhir:string ;
                       fhir:v "https://fhir.slade360.co.ke/fhir/CodeSystem/inpatient-clinical-concept-codesystem"
                     ]
                   ] )
                 ] )
               ] [
                 fhir:name [ fhir:v "codeCode" ] ;
                 fhir:source ( [
                   fhir:context [ fhir:v "qr" ]
                 ] ) ;
                 fhir:target ( [
                   fhir:context [ fhir:v "coding" ] ;
                   fhir:element [ fhir:v "code" ] ;
                   fhir:transform [ fhir:v "copy" ] ;
                   fhir:parameter ( [
                     fhir:value [
                       a fhir:string ;
                       fhir:v "organ-support"
                     ]
                   ] )
                 ] )
               ] [
                 fhir:name [ fhir:v "codeDisplay" ] ;
                 fhir:source ( [
                   fhir:context [ fhir:v "qr" ]
                 ] ) ;
                 fhir:target ( [
                   fhir:context [ fhir:v "coding" ] ;
                   fhir:element [ fhir:v "display" ] ;
                   fhir:transform [ fhir:v "copy" ] ;
                   fhir:parameter ( [
                     fhir:value [
                       a fhir:string ;
                       fhir:v "Organ support needed"
                     ]
                   ] )
                 ] )
               ] )
             ] [
               fhir:name [ fhir:v "codeText" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "qr" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "code" ] ;
                 fhir:element [ fhir:v "text" ] ;
                 fhir:transform [ fhir:v "copy" ] ;
                 fhir:parameter ( [
                   fhir:value [
                     a fhir:string ;
                     fhir:v "Organ support needed"
                   ]
                 ] )
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "organSupportValue" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "aS" ] ;
               fhir:element [ fhir:v "value" ] ;
               fhir:variable [ fhir:v "v" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "obsS" ] ;
               fhir:element [ fhir:v "value" ] ;
               fhir:transform [ fhir:v "copy" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "v"
                 ]
               ] )
             ] )
           ] )
         ] )
       ] ) ;
       fhir:documentation [ fhir:v "── Organ support ──────────────────────────────────────────────────────────\r\nLOINC has codes for individual supports but none for the summary the form\r\nasks for, so a local code. See SGHIInpatientClinicalConceptCodeSystem." ]
     ] [
       fhir:name [ fhir:v "vasopressorRule" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ] ;
         fhir:element [ fhir:v "item" ] ;
         fhir:variable [ fhir:v "itV" ] ;
         fhir:condition [ fhir:v "(linkId = 'vasopressor') and answer.value.exists()" ]
       ] ) ;
       fhir:rule ( [
         fhir:name [ fhir:v "vasopressorAnswer" ] ;
         fhir:source ( [
           fhir:context [ fhir:v "itV" ] ;
           fhir:element [ fhir:v "answer" ] ;
           fhir:listMode [ fhir:v "first" ] ;
           fhir:variable [ fhir:v "aV" ]
         ] ) ;
         fhir:rule ( [
           fhir:name [ fhir:v "medicationAdministration" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "aV" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "bundle" ] ;
             fhir:element [ fhir:v "entry" ] ;
             fhir:variable [ fhir:v "entryV" ]
           ] [
             fhir:context [ fhir:v "entryV" ] ;
             fhir:element [ fhir:v "resource" ] ;
             fhir:variable [ fhir:v "ma" ] ;
             fhir:transform [ fhir:v "create" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:string ;
                 fhir:v "MedicationAdministration"
               ]
             ] )
           ] ) ;
           fhir:rule ( [
             fhir:name [ fhir:v "idAndFullUrl" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "ma" ] ;
               fhir:element [ fhir:v "id" ] ;
               fhir:transform [ fhir:v "uuid" ]
             ] ) ;
             fhir:dependent ( [
               fhir:name [ fhir:v "SetMedicationAdministrationFullUrl" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "ma"
                 ]
               ] [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "entryV"
                 ]
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "entryRequest" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "entryV" ] ;
               fhir:element [ fhir:v "request" ] ;
               fhir:variable [ fhir:v "request" ]
             ] ) ;
             fhir:rule ( [
               fhir:name [ fhir:v "requestMethod" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "qr" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "request" ] ;
                 fhir:element [ fhir:v "method" ] ;
                 fhir:transform [ fhir:v "copy" ] ;
                 fhir:parameter ( [
                   fhir:value [
                     a fhir:string ;
                     fhir:v "POST"
                   ]
                 ] )
               ] )
             ] [
               fhir:name [ fhir:v "requestUrl" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "qr" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "request" ] ;
                 fhir:element [ fhir:v "url" ] ;
                 fhir:transform [ fhir:v "copy" ] ;
                 fhir:parameter ( [
                   fhir:value [
                     a fhir:string ;
                     fhir:v "MedicationAdministration"
                   ]
                 ] )
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "status" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "ma" ] ;
               fhir:element [ fhir:v "status" ] ;
               fhir:transform [ fhir:v "copy" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:string ;
                   fhir:v "in-progress"
                 ]
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "category" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "ma" ] ;
               fhir:element [ fhir:v "category" ] ;
               fhir:variable [ fhir:v "cat" ]
             ] ) ;
             fhir:rule ( [
               fhir:name [ fhir:v "categoryCoding" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "qr" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "cat" ] ;
                 fhir:element [ fhir:v "coding" ] ;
                 fhir:variable [ fhir:v "coding" ]
               ] ) ;
               fhir:rule ( [
                 fhir:name [ fhir:v "categorySystem" ] ;
                 fhir:source ( [
                   fhir:context [ fhir:v "qr" ]
                 ] ) ;
                 fhir:target ( [
                   fhir:context [ fhir:v "coding" ] ;
                   fhir:element [ fhir:v "system" ] ;
                   fhir:transform [ fhir:v "copy" ] ;
                   fhir:parameter ( [
                     fhir:value [
                       a fhir:string ;
                       fhir:v "http://terminology.hl7.org/CodeSystem/medication-admin-location"
                     ]
                   ] )
                 ] )
               ] [
                 fhir:name [ fhir:v "categoryCode" ] ;
                 fhir:source ( [
                   fhir:context [ fhir:v "qr" ]
                 ] ) ;
                 fhir:target ( [
                   fhir:context [ fhir:v "coding" ] ;
                   fhir:element [ fhir:v "code" ] ;
                   fhir:transform [ fhir:v "copy" ] ;
                   fhir:parameter ( [
                     fhir:value [
                       a fhir:string ;
                       fhir:v "inpatient"
                     ]
                   ] )
                 ] )
               ] [
                 fhir:name [ fhir:v "categoryDisplay" ] ;
                 fhir:source ( [
                   fhir:context [ fhir:v "qr" ]
                 ] ) ;
                 fhir:target ( [
                   fhir:context [ fhir:v "coding" ] ;
                   fhir:element [ fhir:v "display" ] ;
                   fhir:transform [ fhir:v "copy" ] ;
                   fhir:parameter ( [
                     fhir:value [
                       a fhir:string ;
                       fhir:v "Inpatient"
                     ]
                   ] )
                 ] )
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "medication" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "aV" ] ;
               fhir:element [ fhir:v "value" ] ;
               fhir:variable [ fhir:v "v" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "ma" ] ;
               fhir:element [ fhir:v "medication" ] ;
               fhir:variable [ fhir:v "medRef" ]
             ] ) ;
             fhir:rule ( [
               fhir:name [ fhir:v "medicationConcept" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "v" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "medRef" ] ;
                 fhir:element [ fhir:v "concept" ] ;
                 fhir:variable [ fhir:v "concept" ]
               ] ) ;
               fhir:rule ( [
                 fhir:name [ fhir:v "medicationText" ] ;
                 fhir:source ( [
                   fhir:context [ fhir:v "v" ]
                 ] ) ;
                 fhir:target ( [
                   fhir:context [ fhir:v "concept" ] ;
                   fhir:element [ fhir:v "text" ] ;
                   fhir:transform [ fhir:v "copy" ] ;
                   fhir:parameter ( [
                     fhir:value [
                       a fhir:id ;
                       fhir:v "v"
                     ]
                   ] )
                 ] )
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "subject" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ] ;
               fhir:element [ fhir:v "subject" ] ;
               fhir:variable [ fhir:v "s" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "ma" ] ;
               fhir:element [ fhir:v "subject" ] ;
               fhir:transform [ fhir:v "copy" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "s"
                 ]
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "encounter" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ] ;
               fhir:element [ fhir:v "encounter" ] ;
               fhir:variable [ fhir:v "e" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "ma" ] ;
               fhir:element [ fhir:v "encounter" ] ;
               fhir:transform [ fhir:v "copy" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "e"
                 ]
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "occurrence" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ] ;
               fhir:element [ fhir:v "authored" ] ;
               fhir:variable [ fhir:v "t" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "ma" ] ;
               fhir:element [ fhir:v "occurence" ] ;
               fhir:transform [ fhir:v "copy" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "t"
                 ]
               ] )
             ] ) ;
             fhir:documentation [ fhir:v "R5 spells this element `occurence[x]`. That is the specification's own\r\ntypo, not one here." ]
           ] [
             fhir:name [ fhir:v "recorded" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ] ;
               fhir:element [ fhir:v "authored" ] ;
               fhir:variable [ fhir:v "t" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "ma" ] ;
               fhir:element [ fhir:v "recorded" ] ;
               fhir:transform [ fhir:v "copy" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "t"
                 ]
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "linkQuestionnaireResponse" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "ma" ] ;
               fhir:element [ fhir:v "supportingInformation" ] ;
               fhir:variable [ fhir:v "ref" ] ;
               fhir:transform [ fhir:v "create" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:string ;
                   fhir:v "Reference"
                 ]
               ] )
             ] ) ;
             fhir:rule ( [
               fhir:name [ fhir:v "supportingInformationRef" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "qr" ] ;
                 fhir:element [ fhir:v "id" ] ;
                 fhir:variable [ fhir:v "qid" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "ref" ] ;
                 fhir:element [ fhir:v "reference" ] ;
                 fhir:transform [ fhir:v "copy" ] ;
                 fhir:parameter ( [
                   fhir:value [
                     a fhir:id ;
                     fhir:v "qid"
                   ]
                 ] )
               ] )
             ] )
           ] )
         ] )
       ] ) ;
       fhir:documentation [ fhir:v "── Vasopressor ────────────────────────────────────────────────────────────\r\nThe form captures a dose description (\"Noradrenaline 0.1 mcg/kg/min\"), not\r\na medication reference, so the wording lands in medication.concept.text\r\nrather than being matched against a drug dictionary. Status is\r\n`in-progress`: the assessment records an infusion running at the moment it\r\nwas written, and `completed` would assert it had finished, which is not\r\nwhat the nurse wrote." ]
     ] )
  ] [
     fhir:name [ fhir:v "BuildObsBase" ] ;
     fhir:documentation [ fhir:v "─────────────────────────────────────────────────────────────────────────────\r\nShared scaffolding. Repeated in each map rather than imported: the transform\r\nengine resolves `imports` against whatever StructureMaps happen to be on the\r\nserver, and a form that stops extracting because a shared map was not\r\nuploaded is a worse failure than a duplicated group.\r\n─────────────────────────────────────────────────────────────────────────────\r\nTwo notes on what the publisher's StructureMap validator says about this file.\r\nSource parameters below are left untyped on purpose. Writing `: Element` makes\r\nthe validator compare QuestionnaireResponse.item against the literal 'Element'\r\nand report them as incompatible with each other, which is noise, not a finding.\r\nUntyped, it says only that it cannot check the paths.\r\n`evaluate(context, expression)` is flagged as \"takes 1 parameter but 2 were\r\nfound\". Leave it. The FML parser in the same jar refuses the one-argument form\r\noutright -- it wants a parameter, a comma, then the FHIRPath -- so the publisher\r\nis objecting to what its own compiler emits. Two arguments is the only form that\r\ncompiles, and it is what the R5 transform engine executes." ] ;
     fhir:input ( [
       fhir:name [ fhir:v "qr" ] ;
       fhir:type [ fhir:v "QR" ] ;
       fhir:mode [ fhir:v "source" ]
     ] [
       fhir:name [ fhir:v "obs" ] ;
       fhir:type [ fhir:v "Observation" ] ;
       fhir:mode [ fhir:v "target" ]
     ] [
       fhir:name [ fhir:v "entry" ] ;
       fhir:mode [ fhir:v "target" ]
     ] ) ;
     fhir:rule ( [
       fhir:name [ fhir:v "idAndFullUrl" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ]
       ] ) ;
       fhir:target ( [
         fhir:context [ fhir:v "obs" ] ;
         fhir:element [ fhir:v "id" ] ;
         fhir:transform [ fhir:v "uuid" ]
       ] ) ;
       fhir:dependent ( [
         fhir:name [ fhir:v "SetObservationFullUrl" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:id ;
             fhir:v "obs"
           ]
         ] [
           fhir:value [
             a fhir:id ;
             fhir:v "entry"
           ]
         ] )
       ] )
     ] [
       fhir:name [ fhir:v "entryRequest" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ]
       ] ) ;
       fhir:target ( [
         fhir:context [ fhir:v "entry" ] ;
         fhir:element [ fhir:v "request" ] ;
         fhir:variable [ fhir:v "request" ]
       ] ) ;
       fhir:rule ( [
         fhir:name [ fhir:v "requestMethod" ] ;
         fhir:source ( [
           fhir:context [ fhir:v "qr" ]
         ] ) ;
         fhir:target ( [
           fhir:context [ fhir:v "request" ] ;
           fhir:element [ fhir:v "method" ] ;
           fhir:transform [ fhir:v "copy" ] ;
           fhir:parameter ( [
             fhir:value [
               a fhir:string ;
               fhir:v "POST"
             ]
           ] )
         ] )
       ] [
         fhir:name [ fhir:v "requestUrl" ] ;
         fhir:source ( [
           fhir:context [ fhir:v "qr" ]
         ] ) ;
         fhir:target ( [
           fhir:context [ fhir:v "request" ] ;
           fhir:element [ fhir:v "url" ] ;
           fhir:transform [ fhir:v "copy" ] ;
           fhir:parameter ( [
             fhir:value [
               a fhir:string ;
               fhir:v "Observation"
             ]
           ] )
         ] )
       ] )
     ] [
       fhir:name [ fhir:v "status" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ]
       ] ) ;
       fhir:target ( [
         fhir:context [ fhir:v "obs" ] ;
         fhir:element [ fhir:v "status" ] ;
         fhir:transform [ fhir:v "copy" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:string ;
             fhir:v "final"
           ]
         ] )
       ] )
     ] [
       fhir:name [ fhir:v "subject" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ] ;
         fhir:element [ fhir:v "subject" ] ;
         fhir:variable [ fhir:v "s" ]
       ] ) ;
       fhir:target ( [
         fhir:context [ fhir:v "obs" ] ;
         fhir:element [ fhir:v "subject" ] ;
         fhir:transform [ fhir:v "copy" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:id ;
             fhir:v "s"
           ]
         ] )
       ] )
     ] [
       fhir:name [ fhir:v "encounter" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ] ;
         fhir:element [ fhir:v "encounter" ] ;
         fhir:variable [ fhir:v "e" ]
       ] ) ;
       fhir:target ( [
         fhir:context [ fhir:v "obs" ] ;
         fhir:element [ fhir:v "encounter" ] ;
         fhir:transform [ fhir:v "copy" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:id ;
             fhir:v "e"
           ]
         ] )
       ] )
     ] [
       fhir:name [ fhir:v "effective" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ] ;
         fhir:element [ fhir:v "authored" ] ;
         fhir:variable [ fhir:v "t" ]
       ] ) ;
       fhir:target ( [
         fhir:context [ fhir:v "obs" ] ;
         fhir:element [ fhir:v "effective" ] ;
         fhir:transform [ fhir:v "copy" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:id ;
             fhir:v "t"
           ]
         ] )
       ] )
     ] [
       fhir:name [ fhir:v "performerFromSource" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ] ;
         fhir:element [ fhir:v "source" ] ;
         fhir:variable [ fhir:v "src" ]
       ] ) ;
       fhir:target ( [
         fhir:context [ fhir:v "obs" ] ;
         fhir:element [ fhir:v "performer" ] ;
         fhir:transform [ fhir:v "copy" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:id ;
             fhir:v "src"
           ]
         ] )
       ] )
     ] [
       fhir:name [ fhir:v "performerFallback" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ] ;
         fhir:condition [ fhir:v "source.exists().not()" ]
       ] ) ;
       fhir:rule ( [
         fhir:name [ fhir:v "performerFromAuthor" ] ;
         fhir:source ( [
           fhir:context [ fhir:v "qr" ] ;
           fhir:element [ fhir:v "author" ] ;
           fhir:variable [ fhir:v "a" ]
         ] ) ;
         fhir:target ( [
           fhir:context [ fhir:v "obs" ] ;
           fhir:element [ fhir:v "performer" ] ;
           fhir:transform [ fhir:v "copy" ] ;
           fhir:parameter ( [
             fhir:value [
               a fhir:id ;
               fhir:v "a"
             ]
           ] )
         ] )
       ] )
     ] [
       fhir:name [ fhir:v "linkQuestionnaireResponse" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ]
       ] ) ;
       fhir:target ( [
         fhir:context [ fhir:v "obs" ] ;
         fhir:element [ fhir:v "derivedFrom" ] ;
         fhir:variable [ fhir:v "ref" ] ;
         fhir:transform [ fhir:v "create" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:string ;
             fhir:v "Reference"
           ]
         ] )
       ] ) ;
       fhir:rule ( [
         fhir:name [ fhir:v "derivedFromRef" ] ;
         fhir:source ( [
           fhir:context [ fhir:v "qr" ] ;
           fhir:element [ fhir:v "id" ] ;
           fhir:variable [ fhir:v "qid" ]
         ] ) ;
         fhir:target ( [
           fhir:context [ fhir:v "ref" ] ;
           fhir:element [ fhir:v "reference" ] ;
           fhir:transform [ fhir:v "copy" ] ;
           fhir:parameter ( [
             fhir:value [
               a fhir:id ;
               fhir:v "qid"
             ]
           ] )
         ] )
       ] )
     ] )
  ] [
     fhir:name [ fhir:v "SetCodedValue" ] ;
     fhir:input ( [
       fhir:name [ fhir:v "a" ] ;
       fhir:mode [ fhir:v "source" ]
     ] [
       fhir:name [ fhir:v "obs" ] ;
       fhir:type [ fhir:v "Observation" ] ;
       fhir:mode [ fhir:v "target" ]
     ] ) ;
     fhir:rule ( [
       fhir:name [ fhir:v "codedValue" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "a" ] ;
         fhir:element [ fhir:v "value" ] ;
         fhir:variable [ fhir:v "cv" ]
       ] ) ;
       fhir:target ( [
         fhir:context [ fhir:v "obs" ] ;
         fhir:element [ fhir:v "value" ] ;
         fhir:variable [ fhir:v "cc" ] ;
         fhir:transform [ fhir:v "create" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:string ;
             fhir:v "CodeableConcept"
           ]
         ] )
       ] ) ;
       fhir:rule ( [
         fhir:name [ fhir:v "valueCoding" ] ;
         fhir:source ( [
           fhir:context [ fhir:v "cv" ]
         ] ) ;
         fhir:target ( [
           fhir:context [ fhir:v "cc" ] ;
           fhir:element [ fhir:v "coding" ] ;
           fhir:transform [ fhir:v "copy" ] ;
           fhir:parameter ( [
             fhir:value [
               a fhir:id ;
               fhir:v "cv"
             ]
           ] )
         ] )
       ] [
         fhir:name [ fhir:v "valueText" ] ;
         fhir:source ( [
           fhir:context [ fhir:v "cv" ] ;
           fhir:element [ fhir:v "display" ] ;
           fhir:variable [ fhir:v "d" ]
         ] ) ;
         fhir:target ( [
           fhir:context [ fhir:v "cc" ] ;
           fhir:element [ fhir:v "text" ] ;
           fhir:transform [ fhir:v "copy" ] ;
           fhir:parameter ( [
             fhir:value [
               a fhir:id ;
               fhir:v "d"
             ]
           ] )
         ] )
       ] )
     ] )
  ] [
     fhir:name [ fhir:v "SetComponentCodedValue" ] ;
     fhir:input ( [
       fhir:name [ fhir:v "it" ] ;
       fhir:mode [ fhir:v "source" ]
     ] [
       fhir:name [ fhir:v "comp" ] ;
       fhir:mode [ fhir:v "target" ]
     ] ) ;
     fhir:rule ( [
       fhir:name [ fhir:v "componentAnswer" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "it" ] ;
         fhir:element [ fhir:v "answer" ] ;
         fhir:listMode [ fhir:v "first" ] ;
         fhir:variable [ fhir:v "a" ]
       ] ) ;
       fhir:rule ( [
         fhir:name [ fhir:v "codedValue" ] ;
         fhir:source ( [
           fhir:context [ fhir:v "a" ] ;
           fhir:element [ fhir:v "value" ] ;
           fhir:variable [ fhir:v "cv" ]
         ] ) ;
         fhir:target ( [
           fhir:context [ fhir:v "comp" ] ;
           fhir:element [ fhir:v "value" ] ;
           fhir:variable [ fhir:v "cc" ] ;
           fhir:transform [ fhir:v "create" ] ;
           fhir:parameter ( [
             fhir:value [
               a fhir:string ;
               fhir:v "CodeableConcept"
             ]
           ] )
         ] ) ;
         fhir:rule ( [
           fhir:name [ fhir:v "valueCoding" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "cv" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "cc" ] ;
             fhir:element [ fhir:v "coding" ] ;
             fhir:transform [ fhir:v "copy" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:id ;
                 fhir:v "cv"
               ]
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "valueText" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "cv" ] ;
             fhir:element [ fhir:v "display" ] ;
             fhir:variable [ fhir:v "d" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "cc" ] ;
             fhir:element [ fhir:v "text" ] ;
             fhir:transform [ fhir:v "copy" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:id ;
                 fhir:v "d"
               ]
             ] )
           ] )
         ] )
       ] )
     ] )
  ] [
     fhir:name [ fhir:v "SetSurveyCategory" ] ;
     fhir:input ( [
       fhir:name [ fhir:v "qr" ] ;
       fhir:type [ fhir:v "QR" ] ;
       fhir:mode [ fhir:v "source" ]
     ] [
       fhir:name [ fhir:v "obs" ] ;
       fhir:type [ fhir:v "Observation" ] ;
       fhir:mode [ fhir:v "target" ]
     ] ) ;
     fhir:rule ( [
       fhir:name [ fhir:v "category" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ]
       ] ) ;
       fhir:target ( [
         fhir:context [ fhir:v "obs" ] ;
         fhir:element [ fhir:v "category" ] ;
         fhir:variable [ fhir:v "cat" ]
       ] ) ;
       fhir:rule ( [
         fhir:name [ fhir:v "categoryCoding" ] ;
         fhir:source ( [
           fhir:context [ fhir:v "qr" ]
         ] ) ;
         fhir:target ( [
           fhir:context [ fhir:v "cat" ] ;
           fhir:element [ fhir:v "coding" ] ;
           fhir:variable [ fhir:v "coding" ]
         ] ) ;
         fhir:rule ( [
           fhir:name [ fhir:v "categorySystem" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "qr" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "coding" ] ;
             fhir:element [ fhir:v "system" ] ;
             fhir:transform [ fhir:v "copy" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:string ;
                 fhir:v "http://terminology.hl7.org/CodeSystem/observation-category"
               ]
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "categoryCode" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "qr" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "coding" ] ;
             fhir:element [ fhir:v "code" ] ;
             fhir:transform [ fhir:v "copy" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:string ;
                 fhir:v "survey"
               ]
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "categoryDisplay" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "qr" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "coding" ] ;
             fhir:element [ fhir:v "display" ] ;
             fhir:transform [ fhir:v "copy" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:string ;
                 fhir:v "Survey"
               ]
             ] )
           ] )
         ] )
       ] )
     ] )
  ] [
     fhir:name [ fhir:v "SetTherapyCategory" ] ;
     fhir:input ( [
       fhir:name [ fhir:v "qr" ] ;
       fhir:type [ fhir:v "QR" ] ;
       fhir:mode [ fhir:v "source" ]
     ] [
       fhir:name [ fhir:v "obs" ] ;
       fhir:type [ fhir:v "Observation" ] ;
       fhir:mode [ fhir:v "target" ]
     ] ) ;
     fhir:rule ( [
       fhir:name [ fhir:v "category" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ]
       ] ) ;
       fhir:target ( [
         fhir:context [ fhir:v "obs" ] ;
         fhir:element [ fhir:v "category" ] ;
         fhir:variable [ fhir:v "cat" ]
       ] ) ;
       fhir:rule ( [
         fhir:name [ fhir:v "categoryCoding" ] ;
         fhir:source ( [
           fhir:context [ fhir:v "qr" ]
         ] ) ;
         fhir:target ( [
           fhir:context [ fhir:v "cat" ] ;
           fhir:element [ fhir:v "coding" ] ;
           fhir:variable [ fhir:v "coding" ]
         ] ) ;
         fhir:rule ( [
           fhir:name [ fhir:v "categorySystem" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "qr" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "coding" ] ;
             fhir:element [ fhir:v "system" ] ;
             fhir:transform [ fhir:v "copy" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:string ;
                 fhir:v "http://terminology.hl7.org/CodeSystem/observation-category"
               ]
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "categoryCode" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "qr" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "coding" ] ;
             fhir:element [ fhir:v "code" ] ;
             fhir:transform [ fhir:v "copy" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:string ;
                 fhir:v "therapy"
               ]
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "categoryDisplay" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "qr" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "coding" ] ;
             fhir:element [ fhir:v "display" ] ;
             fhir:transform [ fhir:v "copy" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:string ;
                 fhir:v "Therapy"
               ]
             ] )
           ] )
         ] )
       ] )
     ] )
  ] [
     fhir:name [ fhir:v "SetObservationFullUrl" ] ;
     fhir:input ( [
       fhir:name [ fhir:v "obs" ] ;
       fhir:type [ fhir:v "Observation" ] ;
       fhir:mode [ fhir:v "source" ]
     ] [
       fhir:name [ fhir:v "entry" ] ;
       fhir:mode [ fhir:v "target" ]
     ] ) ;
     fhir:rule ( [
       fhir:name [ fhir:v "assignFullUrl" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "obs" ] ;
         fhir:element [ fhir:v "id" ] ;
         fhir:variable [ fhir:v "id" ]
       ] ) ;
       fhir:target ( [
         fhir:context [ fhir:v "entry" ] ;
         fhir:element [ fhir:v "fullUrl" ] ;
         fhir:transform [ fhir:v "append" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:string ;
             fhir:v "https://fhir.slade360.co.ke/fhir/Observation/"
           ]
         ] [
           fhir:value [
             a fhir:id ;
             fhir:v "id"
           ]
         ] )
       ] )
     ] )
  ] [
     fhir:name [ fhir:v "SetMedicationAdministrationFullUrl" ] ;
     fhir:input ( [
       fhir:name [ fhir:v "ma" ] ;
       fhir:type [ fhir:v "MedicationAdministration" ] ;
       fhir:mode [ fhir:v "source" ]
     ] [
       fhir:name [ fhir:v "entry" ] ;
       fhir:mode [ fhir:v "target" ]
     ] ) ;
     fhir:rule ( [
       fhir:name [ fhir:v "assignFullUrl" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "ma" ] ;
         fhir:element [ fhir:v "id" ] ;
         fhir:variable [ fhir:v "id" ]
       ] ) ;
       fhir:target ( [
         fhir:context [ fhir:v "entry" ] ;
         fhir:element [ fhir:v "fullUrl" ] ;
         fhir:transform [ fhir:v "append" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:string ;
             fhir:v "https://fhir.slade360.co.ke/fhir/MedicationAdministration/"
           ]
         ] [
           fhir:value [
             a fhir:id ;
             fhir:v "id"
           ]
         ] )
       ] )
     ] )
  ] ) . #