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