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-10-06 |
{
"resourceType" : "StructureMap",
"id" : "ExtractInpatientFallsAndPressureUlcerRiskAssessment",
"text" : {
"status" : "generated",
"div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p class=\"res-header-id\"><b>Generated Narrative: StructureMap ExtractInpatientFallsAndPressureUlcerRiskAssessment</b></p><a name=\"ExtractInpatientFallsAndPressureUlcerRiskAssessment\"> </a><a name=\"hcExtractInpatientFallsAndPressureUlcerRiskAssessment\"> </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/ExtractInpatientFallsAndPressureUlcerRiskAssessment'</span>\r\n<span style=\"color: #cc00cc\">/// <b>name</b> = </span><span style=\"color: blue\">'ExtractInpatientFallsAndPressureUlcerRiskAssessment'</span>\r\n<span style=\"color: #cc00cc\">/// <b>title</b> = </span><span style=\"color: blue\">'Inpatient Falls and Pressure Ulcer Risk 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\">'Two scored instruments out. Braden becomes one Observation carrying the total with its six sub-scores as components, plus a RiskAssessment for the band; the falls score -- which is the Morse Fall Scale item for item -- becomes the same shape against the LOINC Morse panel. The measures put in place become a CarePlan. A total is only emitted when every sub-score has been answered: a Braden computed from four of six items is not a Braden score, and banding one would put a number a nurse can act on next to a risk tier that is wrong.'</span>\r\n\r\n<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>\r\n<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>\r\n<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>\r\n<b>uses</b><span style=\"color: navy\"> "</span><a href=\"http://hl7.org/fhir/R5/riskassessment.html\" title=\"RiskAssessment\">http://hl7.org/fhir/StructureDefinition/RiskAssessment</a><span style=\"color: navy\">" </span><b>alias </b>RiskAssessment <b>as </b><b>target</b>\r\n<b>uses</b><span style=\"color: navy\"> "</span><a href=\"http://hl7.org/fhir/R5/careplan.html\" title=\"CarePlan\">http://hl7.org/fhir/StructureDefinition/CarePlan</a><span style=\"color: navy\">" </span><b>alias </b>CarePlan <b>as </b><b>target</b>\r\n\r\n<b>group </b>ExtractInpatientFallsAndPressureUlcerRiskAssessment<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> -> </b></span>bundle.type = <span style=\"color: blue\">'transaction'</span> <i>"setBundleType"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">── Braden pressure ulcer risk ─────────────────────────────────────────────</span>\r\n qr.item<b> as </b><span style=\"color: maroon\">gB</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'braden') and item.answer.value.ofType(Coding).exists()<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span> gB<span style=\"color: navy\"><b> -> </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entryB</span><span style=\"color: navy\">, </span> entryB.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\">obsB</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>obsB<b> then </b>CopyResponseTags<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obsB</span><span style=\"color: navy\">)</span> <i>"responseTags"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span> obsB<span style=\"color: navy\">, </span> entryB<b> then </b>BuildObsBase<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obsB</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entryB</span><span style=\"color: navy\">)</span> <i>"bradenBase"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>obsB<b> then </b>SetSurveyCategory<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obsB</span><span style=\"color: navy\">)</span> <i>"bradenCategory"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>obsB.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> -> </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> -> </b></span>coding.system = <span style=\"color: blue\">'http://loinc.org'</span> <i>"codeSystem"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'38227-5'</span> <i>"codeCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'Braden scale total score'</span> <i>"codeDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"codeCoding"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"bradenCode"</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 -- braden-sensory-3</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">is worth 3 -- so the fallback reads the weight off the code. Both paths</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">are the arithmetic the questionnaire's calculatedExpression performs, so</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">they cannot disagree. Guarded on all six sub-scores being present.</span>\r\n gB<b> where </b><span style=\"color: navy\">(</span>item.answer.value.ofType(Coding).count() = 6<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span> gB<span style=\"color: navy\"><b> -> </b></span>obsB.value = evaluate<span style=\"color: navy\">(</span>gB<span style=\"color: navy\">, </span>iif(item.where(linkId = 'braden.total').answer.value.exists(), item.where(linkId = 'braden.total').answer.value, item.answer.value.ofType(Coding).code.select($this.split('-').last().toInteger()).aggregate($this + $total, 0))<span style=\"color: navy\">)</span> <i>"bradenTotalValue"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"bradenTotalRule"</i><span style=\"color: navy\">;</span>\r\n gB.item<b> as </b><span style=\"color: maroon\">it</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'braden.sensory') and answer.value.exists()<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>obsB.component<b> as </b><span style=\"color: maroon\">comp</span><b> then</b><span style=\"color: navy\"> {\r\n</span> it<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\"> {\r\n</span> it<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\"> {\r\n</span> it<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>\r\n it<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'38222-6'</span> <i>"codeCode"</i><span style=\"color: navy\">;</span>\r\n it<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'Sensory perception Braden scale'</span> <i>"codeDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"codeCoding"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"sensoryCode"</i><span style=\"color: navy\">;</span>\r\n it<span style=\"color: navy\"><b> -> </b></span>comp<b> then </b>SetComponentCodedValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">it</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">comp</span><span style=\"color: navy\">)</span> <i>"sensoryValue"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"bradenSensoryRule"</i><span style=\"color: navy\">;</span>\r\n gB.item<b> as </b><span style=\"color: maroon\">it</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'braden.moisture') and answer.value.exists()<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>obsB.component<b> as </b><span style=\"color: maroon\">comp</span><b> then</b><span style=\"color: navy\"> {\r\n</span> it<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\"> {\r\n</span> it<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\"> {\r\n</span> it<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>\r\n it<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'38229-1'</span> <i>"codeCode"</i><span style=\"color: navy\">;</span>\r\n it<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'Moisture exposure Braden scale'</span> <i>"codeDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"codeCoding"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"moistureCode"</i><span style=\"color: navy\">;</span>\r\n it<span style=\"color: navy\"><b> -> </b></span>comp<b> then </b>SetComponentCodedValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">it</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">comp</span><span style=\"color: navy\">)</span> <i>"moistureValue"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"bradenMoistureRule"</i><span style=\"color: navy\">;</span>\r\n gB.item<b> as </b><span style=\"color: maroon\">it</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'braden.activity') and answer.value.exists()<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>obsB.component<b> as </b><span style=\"color: maroon\">comp</span><b> then</b><span style=\"color: navy\"> {\r\n</span> it<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\"> {\r\n</span> it<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\"> {\r\n</span> it<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>\r\n it<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'38223-4'</span> <i>"codeCode"</i><span style=\"color: navy\">;</span>\r\n it<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'Physical activity Braden scale'</span> <i>"codeDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"codeCoding"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"activityCode"</i><span style=\"color: navy\">;</span>\r\n it<span style=\"color: navy\"><b> -> </b></span>comp<b> then </b>SetComponentCodedValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">it</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">comp</span><span style=\"color: navy\">)</span> <i>"activityValue"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"bradenActivityRule"</i><span style=\"color: navy\">;</span>\r\n gB.item<b> as </b><span style=\"color: maroon\">it</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'braden.mobility') and answer.value.exists()<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>obsB.component<b> as </b><span style=\"color: maroon\">comp</span><b> then</b><span style=\"color: navy\"> {\r\n</span> it<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\"> {\r\n</span> it<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\"> {\r\n</span> it<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>\r\n it<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'38224-2'</span> <i>"codeCode"</i><span style=\"color: navy\">;</span>\r\n it<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'Physical mobility Braden scale'</span> <i>"codeDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"codeCoding"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"mobilityCode"</i><span style=\"color: navy\">;</span>\r\n it<span style=\"color: navy\"><b> -> </b></span>comp<b> then </b>SetComponentCodedValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">it</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">comp</span><span style=\"color: navy\">)</span> <i>"mobilityValue"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"bradenMobilityRule"</i><span style=\"color: navy\">;</span>\r\n gB.item<b> as </b><span style=\"color: maroon\">it</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'braden.nutrition') and answer.value.exists()<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>obsB.component<b> as </b><span style=\"color: maroon\">comp</span><b> then</b><span style=\"color: navy\"> {\r\n</span> it<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\"> {\r\n</span> it<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\"> {\r\n</span> it<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>\r\n it<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'38225-9'</span> <i>"codeCode"</i><span style=\"color: navy\">;</span>\r\n it<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'Nutrition intake pattern Braden scale'</span> <i>"codeDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"codeCoding"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"nutritionCode"</i><span style=\"color: navy\">;</span>\r\n it<span style=\"color: navy\"><b> -> </b></span>comp<b> then </b>SetComponentCodedValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">it</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">comp</span><span style=\"color: navy\">)</span> <i>"nutritionValue"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"bradenNutritionRule"</i><span style=\"color: navy\">;</span>\r\n gB.item<b> as </b><span style=\"color: maroon\">it</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'braden.friction') and answer.value.exists()<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>obsB.component<b> as </b><span style=\"color: maroon\">comp</span><b> then</b><span style=\"color: navy\"> {\r\n</span> it<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\"> {\r\n</span> it<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\"> {\r\n</span> it<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>\r\n it<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'38226-7'</span> <i>"codeCode"</i><span style=\"color: navy\">;</span>\r\n it<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'Friction and shear Braden scale'</span> <i>"codeDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"codeCoding"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"frictionCode"</i><span style=\"color: navy\">;</span>\r\n it<span style=\"color: navy\"><b> -> </b></span>comp<b> then </b>SetComponentCodedValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">it</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">comp</span><span style=\"color: navy\">)</span> <i>"frictionValue"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"bradenFrictionRule"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span> obsB<span style=\"color: navy\">, </span> bundle<b> then </b>AddBradenRiskAssessment<span style=\"color: navy\">(</span><span style=\"color: maroon\">obsB</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">bundle</span><span style=\"color: navy\">)</span> <i>"bradenBand"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"bradenObservation"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"bradenRule"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">── Falls risk (Morse Fall Scale) ──────────────────────────────────────────</span>\r\n qr.item<b> as </b><span style=\"color: maroon\">gF</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'fallsRisk') and item.answer.value.ofType(Coding).exists()<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span> gF<span style=\"color: navy\"><b> -> </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entryF</span><span style=\"color: navy\">, </span> entryF.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\">obsF</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>obsF<b> then </b>CopyResponseTags<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obsF</span><span style=\"color: navy\">)</span> <i>"responseTags"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span> obsF<span style=\"color: navy\">, </span> entryF<b> then </b>BuildObsBase<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obsF</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entryF</span><span style=\"color: navy\">)</span> <i>"fallsBase"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>obsF<b> then </b>SetSurveyCategory<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obsF</span><span style=\"color: navy\">)</span> <i>"fallsCategory"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>obsF.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> -> </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> -> </b></span>coding.system = <span style=\"color: blue\">'http://loinc.org'</span> <i>"codeSystem"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'59460-6'</span> <i>"codeCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'Fall risk total [Morse Fall Scale]'</span> <i>"codeDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"codeCoding"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"fallsCode"</i><span style=\"color: navy\">;</span>\r\n gF<b> where </b><span style=\"color: navy\">(</span>item.answer.value.ofType(Coding).count() = 6<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span> gF<span style=\"color: navy\"><b> -> </b></span>obsF.value = evaluate<span style=\"color: navy\">(</span>gF<span style=\"color: navy\">, </span>iif(item.where(linkId = 'fallsRisk.total').answer.value.exists(), item.where(linkId = 'fallsRisk.total').answer.value, item.answer.value.ofType(Coding).code.select($this.split('-').last().toInteger()).aggregate($this + $total, 0))<span style=\"color: navy\">)</span> <i>"fallsTotalValue"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"fallsTotalRule"</i><span style=\"color: navy\">;</span>\r\n gF.item<b> as </b><span style=\"color: maroon\">it</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'fallsRisk.history') and answer.value.exists()<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>obsF.component<b> as </b><span style=\"color: maroon\">comp</span><b> then</b><span style=\"color: navy\"> {\r\n</span> it<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\"> {\r\n</span> it<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\"> {\r\n</span> it<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>\r\n it<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'59454-9'</span> <i>"codeCode"</i><span style=\"color: navy\">;</span>\r\n it<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'History of falling; immediate or within 3 months [Morse Fall Scale]'</span> <i>"codeDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"codeCoding"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"historyCode"</i><span style=\"color: navy\">;</span>\r\n it<span style=\"color: navy\"><b> -> </b></span>comp<b> then </b>SetComponentCodedValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">it</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">comp</span><span style=\"color: navy\">)</span> <i>"historyValue"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"fallsHistoryRule"</i><span style=\"color: navy\">;</span>\r\n gF.item<b> as </b><span style=\"color: maroon\">it</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'fallsRisk.diagnoses') and answer.value.exists()<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>obsF.component<b> as </b><span style=\"color: maroon\">comp</span><b> then</b><span style=\"color: navy\"> {\r\n</span> it<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\"> {\r\n</span> it<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\"> {\r\n</span> it<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>\r\n it<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'59455-6'</span> <i>"codeCode"</i><span style=\"color: navy\">;</span>\r\n it<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'Secondary diagnosis is present'</span> <i>"codeDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"codeCoding"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"diagnosesCode"</i><span style=\"color: navy\">;</span>\r\n it<span style=\"color: navy\"><b> -> </b></span>comp<b> then </b>SetComponentCodedValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">it</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">comp</span><span style=\"color: navy\">)</span> <i>"diagnosesValue"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"fallsDiagnosesRule"</i><span style=\"color: navy\">;</span>\r\n gF.item<b> as </b><span style=\"color: maroon\">it</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'fallsRisk.aid') and answer.value.exists()<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>obsF.component<b> as </b><span style=\"color: maroon\">comp</span><b> then</b><span style=\"color: navy\"> {\r\n</span> it<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\"> {\r\n</span> it<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\"> {\r\n</span> it<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>\r\n it<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'59456-4'</span> <i>"codeCode"</i><span style=\"color: navy\">;</span>\r\n it<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'Ambulatory aid [Morse Fall Scale]'</span> <i>"codeDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"codeCoding"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"aidCode"</i><span style=\"color: navy\">;</span>\r\n it<span style=\"color: navy\"><b> -> </b></span>comp<b> then </b>SetComponentCodedValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">it</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">comp</span><span style=\"color: navy\">)</span> <i>"aidValue"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"fallsAidRule"</i><span style=\"color: navy\">;</span>\r\n gF.item<b> as </b><span style=\"color: maroon\">it</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'fallsRisk.iv') and answer.value.exists()<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>obsF.component<b> as </b><span style=\"color: maroon\">comp</span><b> then</b><span style=\"color: navy\"> {\r\n</span> it<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\"> {\r\n</span> it<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\"> {\r\n</span> it<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>\r\n it<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'59457-2'</span> <i>"codeCode"</i><span style=\"color: navy\">;</span>\r\n it<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'Intravenous apparatus [Morse Fall Scale]'</span> <i>"codeDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"codeCoding"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"ivCode"</i><span style=\"color: navy\">;</span>\r\n it<span style=\"color: navy\"><b> -> </b></span>comp<b> then </b>SetComponentCodedValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">it</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">comp</span><span style=\"color: navy\">)</span> <i>"ivValue"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"fallsIvRule"</i><span style=\"color: navy\">;</span>\r\n gF.item<b> as </b><span style=\"color: maroon\">it</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'fallsRisk.gait') and answer.value.exists()<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>obsF.component<b> as </b><span style=\"color: maroon\">comp</span><b> then</b><span style=\"color: navy\"> {\r\n</span> it<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\"> {\r\n</span> it<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\"> {\r\n</span> it<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>\r\n it<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'59458-0'</span> <i>"codeCode"</i><span style=\"color: navy\">;</span>\r\n it<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'Gait [Morse Fall Scale]'</span> <i>"codeDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"codeCoding"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"gaitCode"</i><span style=\"color: navy\">;</span>\r\n it<span style=\"color: navy\"><b> -> </b></span>comp<b> then </b>SetComponentCodedValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">it</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">comp</span><span style=\"color: navy\">)</span> <i>"gaitValue"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"fallsGaitRule"</i><span style=\"color: navy\">;</span>\r\n gF.item<b> as </b><span style=\"color: maroon\">it</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'fallsRisk.mental') and answer.value.exists()<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>obsF.component<b> as </b><span style=\"color: maroon\">comp</span><b> then</b><span style=\"color: navy\"> {\r\n</span> it<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\"> {\r\n</span> it<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\"> {\r\n</span> it<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>\r\n it<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'59459-8'</span> <i>"codeCode"</i><span style=\"color: navy\">;</span>\r\n it<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'Mental status [Morse Fall Scale]'</span> <i>"codeDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"codeCoding"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"mentalCode"</i><span style=\"color: navy\">;</span>\r\n it<span style=\"color: navy\"><b> -> </b></span>comp<b> then </b>SetComponentCodedValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">it</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">comp</span><span style=\"color: navy\">)</span> <i>"mentalValue"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"fallsMentalRule"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span> obsF<span style=\"color: navy\">, </span> bundle<b> then </b>AddFallsRiskAssessment<span style=\"color: navy\">(</span><span style=\"color: maroon\">obsF</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">bundle</span><span style=\"color: navy\">)</span> <i>"fallsBand"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"fallsObservation"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"fallsRiskRule"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">── Measures in place ──────────────────────────────────────────────────────</span>\r\n qr.item<b> as </b><span style=\"color: maroon\">itM</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'measures') and answer.value.exists()<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span> itM.answer first<b> as </b><span style=\"color: maroon\">aM</span><b> then</b><span style=\"color: navy\"> {\r\n</span> aM<span style=\"color: navy\"><b> -> </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entryC</span><span style=\"color: navy\">, </span> entryC.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'CarePlan'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">plan</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>plan<b> then </b>CopyResponseTags<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">plan</span><span style=\"color: navy\">)</span> <i>"responseTags"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>plan.id = <b>uuid</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> then </b>SetCarePlanFullUrl<span style=\"color: navy\">(</span><span style=\"color: maroon\">plan</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entryC</span><span style=\"color: navy\">)</span> <i>"idAndFullUrl"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>entryC.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> -> </b></span>request.method = <span style=\"color: blue\">'POST'</span> <i>"requestMethod"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>request.url = <span style=\"color: blue\">'CarePlan'</span> <i>"requestUrl"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"entryRequest"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>plan.status = <span style=\"color: blue\">'active'</span> <i>"status"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>plan.intent = <span style=\"color: blue\">'plan'</span> <i>"intent"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>plan.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> -> </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> -> </b></span>coding.system = <span style=\"color: blue\">'https://fhir.slade360.co.ke/fhir/CodeSystem/inpatient-clinical-concept-codesystem'</span> <i>"categorySystem"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'falls-prevention-plan'</span> <i>"categoryCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'Falls and pressure ulcer prevention measures'</span> <i>"categoryDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"categoryCoding"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"category"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>plan.title = <span style=\"color: blue\">'Falls and pressure ulcer prevention measures'</span> <i>"title"</i><span style=\"color: navy\">;</span>\r\n aM.value<b> as </b><span style=\"color: maroon\">v</span><span style=\"color: navy\"><b> -> </b></span>plan.description = <span style=\"color: maroon\">v</span> <i>"description"</i><span style=\"color: navy\">;</span>\r\n qr.subject<b> as </b><span style=\"color: maroon\">s</span><b> where </b><span style=\"color: navy\">(</span>(reference.exists() and (reference.startsWith('Patient/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient')))<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>plan.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><b> where </b><span style=\"color: navy\">(</span>(reference.exists() and (reference.startsWith('Encounter/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Encounter')))<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>plan.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> -> </b></span>plan.created = <span style=\"color: maroon\">t</span> <i>"created"</i><span style=\"color: navy\">;</span>\r\n qr.author<b> as </b><span style=\"color: maroon\">a</span><b> where </b><span style=\"color: navy\">(</span>(reference.exists() and (reference.startsWith('Patient/') or reference.startsWith('Practitioner/') or reference.startsWith('PractitionerRole/') or reference.startsWith('Device/') or reference.startsWith('RelatedPerson/') or reference.startsWith('Organization/') or reference.startsWith('CareTeam/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/Practitioner') or ('/' + type).endsWith('/PractitionerRole') or ('/' + type).endsWith('/Device') or ('/' + type).endsWith('/RelatedPerson') or ('/' + type).endsWith('/Organization') or ('/' + type).endsWith('/CareTeam')))<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>plan.contributor = <span style=\"color: maroon\">a</span> <i>"contributorFromAuthor"</i><span style=\"color: navy\">;</span>\r\n qr<b> where </b><span style=\"color: navy\">(</span>author.where(((reference.exists() and (reference.startsWith('Patient/') or reference.startsWith('Practitioner/') or reference.startsWith('PractitionerRole/') or reference.startsWith('Device/') or reference.startsWith('RelatedPerson/') or reference.startsWith('Organization/') or reference.startsWith('CareTeam/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/Practitioner') or ('/' + type).endsWith('/PractitionerRole') or ('/' + type).endsWith('/Device') or ('/' + type).endsWith('/RelatedPerson') or ('/' + type).endsWith('/Organization') or ('/' + type).endsWith('/CareTeam'))))).exists().not()<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr.source<b> as </b><span style=\"color: maroon\">src</span><b> where </b><span style=\"color: navy\">(</span>(reference.exists() and (reference.startsWith('Patient/') or reference.startsWith('Practitioner/') or reference.startsWith('PractitionerRole/') or reference.startsWith('Device/') or reference.startsWith('RelatedPerson/') or reference.startsWith('Organization/') or reference.startsWith('CareTeam/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/Practitioner') or ('/' + type).endsWith('/PractitionerRole') or ('/' + type).endsWith('/Device') or ('/' + type).endsWith('/RelatedPerson') or ('/' + type).endsWith('/Organization') or ('/' + type).endsWith('/CareTeam')))<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>plan.contributor = <span style=\"color: maroon\">src</span> <i>"contributorFromSource"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"contributorFallback"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>plan.supportingInfo = <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> -> </b></span>ref.reference = <span style=\"color: maroon\">qid</span> <i>"supportingInfoRef"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"linkQuestionnaireResponse"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"carePlan"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"measuresAnswer"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"measuresRule"</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\">Risk bands</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Braden (Bergstrom): 19 and over no risk, 15-18 mild, 13-14 moderate, 10-12</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">high, 9 and under very high. Lower is worse.</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Morse (Morse, Preventing Patient Falls): 0-24 no risk, 25-50 low, 51 and over</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">high. Higher is worse.</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">The published band is the text; the coding is HL7's risk-probability, which</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">has five concepts and so collapses Braden's "very high" and "high" onto one</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">code. Consumers that need the exact tier read the text, consumers that need</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">to escalate read the code.</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">─────────────────────────────────────────────────────────────────────────────</span>\r\n<b>group </b>AddBradenRiskAssessment<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">obs</span><span style=\"color: navy\"> : </span>Observation, <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> obs<b> where </b><span style=\"color: navy\">(</span>value.ofType(integer) <= 9<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'RiskAssessment'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">ra</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>ra<b> then </b>CopyResponseTags<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">)</span> <i>"responseTags"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span> ra<span style=\"color: navy\">, </span> entry<b> then </b>BuildRiskBase<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>"riskBase"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>ra<b> then </b>SetBradenRiskCode<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">)</span> <i>"riskCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>ra.prediction<b> as </b><span style=\"color: maroon\">pred</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>pred.qualitativeRisk<b> as </b><span style=\"color: maroon\">risk</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>risk.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> -> </b></span>coding.system = <span style=\"color: blue\">'http://terminology.hl7.org/CodeSystem/risk-probability'</span> <i>"riskSystem"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'high'</span> <i>"riskCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'High likelihood'</span> <i>"riskDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"riskCoding"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>risk.text = <span style=\"color: blue\">'Very high risk'</span> <i>"riskText"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"qualitativeRisk"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"prediction"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"bradenVeryHigh"</i><span style=\"color: navy\">;</span>\r\n obs<b> where </b><span style=\"color: navy\">(</span>(value.ofType(integer) >= 10) and (value.ofType(integer) <= 12)<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'RiskAssessment'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">ra</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>ra<b> then </b>CopyResponseTags<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">)</span> <i>"responseTags"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span> ra<span style=\"color: navy\">, </span> entry<b> then </b>BuildRiskBase<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>"riskBase"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>ra<b> then </b>SetBradenRiskCode<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">)</span> <i>"riskCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>ra.prediction<b> as </b><span style=\"color: maroon\">pred</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>pred.qualitativeRisk<b> as </b><span style=\"color: maroon\">risk</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>risk.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> -> </b></span>coding.system = <span style=\"color: blue\">'http://terminology.hl7.org/CodeSystem/risk-probability'</span> <i>"riskSystem"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'high'</span> <i>"riskCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'High likelihood'</span> <i>"riskDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"riskCoding"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>risk.text = <span style=\"color: blue\">'High risk'</span> <i>"riskText"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"qualitativeRisk"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"prediction"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"bradenHigh"</i><span style=\"color: navy\">;</span>\r\n obs<b> where </b><span style=\"color: navy\">(</span>(value.ofType(integer) >= 13) and (value.ofType(integer) <= 14)<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'RiskAssessment'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">ra</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>ra<b> then </b>CopyResponseTags<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">)</span> <i>"responseTags"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span> ra<span style=\"color: navy\">, </span> entry<b> then </b>BuildRiskBase<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>"riskBase"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>ra<b> then </b>SetBradenRiskCode<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">)</span> <i>"riskCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>ra.prediction<b> as </b><span style=\"color: maroon\">pred</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>pred.qualitativeRisk<b> as </b><span style=\"color: maroon\">risk</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>risk.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> -> </b></span>coding.system = <span style=\"color: blue\">'http://terminology.hl7.org/CodeSystem/risk-probability'</span> <i>"riskSystem"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'moderate'</span> <i>"riskCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'Moderate likelihood'</span> <i>"riskDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"riskCoding"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>risk.text = <span style=\"color: blue\">'Moderate risk'</span> <i>"riskText"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"qualitativeRisk"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"prediction"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"bradenModerate"</i><span style=\"color: navy\">;</span>\r\n obs<b> where </b><span style=\"color: navy\">(</span>(value.ofType(integer) >= 15) and (value.ofType(integer) <= 18)<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'RiskAssessment'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">ra</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>ra<b> then </b>CopyResponseTags<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">)</span> <i>"responseTags"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span> ra<span style=\"color: navy\">, </span> entry<b> then </b>BuildRiskBase<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>"riskBase"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>ra<b> then </b>SetBradenRiskCode<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">)</span> <i>"riskCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>ra.prediction<b> as </b><span style=\"color: maroon\">pred</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>pred.qualitativeRisk<b> as </b><span style=\"color: maroon\">risk</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>risk.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> -> </b></span>coding.system = <span style=\"color: blue\">'http://terminology.hl7.org/CodeSystem/risk-probability'</span> <i>"riskSystem"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'low'</span> <i>"riskCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'Low likelihood'</span> <i>"riskDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"riskCoding"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>risk.text = <span style=\"color: blue\">'Mild risk'</span> <i>"riskText"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"qualitativeRisk"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"prediction"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"bradenMild"</i><span style=\"color: navy\">;</span>\r\n obs<b> where </b><span style=\"color: navy\">(</span>value.ofType(integer) >= 19<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'RiskAssessment'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">ra</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>ra<b> then </b>CopyResponseTags<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">)</span> <i>"responseTags"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span> ra<span style=\"color: navy\">, </span> entry<b> then </b>BuildRiskBase<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>"riskBase"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>ra<b> then </b>SetBradenRiskCode<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">)</span> <i>"riskCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>ra.prediction<b> as </b><span style=\"color: maroon\">pred</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>pred.qualitativeRisk<b> as </b><span style=\"color: maroon\">risk</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>risk.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> -> </b></span>coding.system = <span style=\"color: blue\">'http://terminology.hl7.org/CodeSystem/risk-probability'</span> <i>"riskSystem"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'negligible'</span> <i>"riskCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'Negligible likelihood'</span> <i>"riskDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"riskCoding"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>risk.text = <span style=\"color: blue\">'No risk identified'</span> <i>"riskText"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"qualitativeRisk"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"prediction"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"bradenNoRisk"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>SetBradenRiskCode<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\">ra</span><span style=\"color: navy\"> : </span>RiskAssessment<span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>ra.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> -> </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> -> </b></span>coding.system = <span style=\"color: blue\">'http://loinc.org'</span> <i>"codeSystem"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'81636-3'</span> <i>"codeCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'Pressure injury risk level Braden scale'</span> <i>"codeDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"codeCoding"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"code"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>AddFallsRiskAssessment<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">obs</span><span style=\"color: navy\"> : </span>Observation, <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> obs<b> where </b><span style=\"color: navy\">(</span>value.ofType(integer) <= 24<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'RiskAssessment'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">ra</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>ra<b> then </b>CopyResponseTags<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">)</span> <i>"responseTags"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span> ra<span style=\"color: navy\">, </span> entry<b> then </b>BuildRiskBase<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>"riskBase"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>ra<b> then </b>SetFallsRiskCode<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">)</span> <i>"riskCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>ra.prediction<b> as </b><span style=\"color: maroon\">pred</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>pred.qualitativeRisk<b> as </b><span style=\"color: maroon\">risk</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>risk.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> -> </b></span>coding.system = <span style=\"color: blue\">'http://terminology.hl7.org/CodeSystem/risk-probability'</span> <i>"riskSystem"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'negligible'</span> <i>"riskCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'Negligible likelihood'</span> <i>"riskDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"riskCoding"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>risk.text = <span style=\"color: blue\">'No risk'</span> <i>"riskText"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"qualitativeRisk"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"prediction"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"fallsNoRisk"</i><span style=\"color: navy\">;</span>\r\n obs<b> where </b><span style=\"color: navy\">(</span>(value.ofType(integer) >= 25) and (value.ofType(integer) <= 50)<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'RiskAssessment'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">ra</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>ra<b> then </b>CopyResponseTags<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">)</span> <i>"responseTags"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span> ra<span style=\"color: navy\">, </span> entry<b> then </b>BuildRiskBase<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>"riskBase"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>ra<b> then </b>SetFallsRiskCode<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">)</span> <i>"riskCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>ra.prediction<b> as </b><span style=\"color: maroon\">pred</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>pred.qualitativeRisk<b> as </b><span style=\"color: maroon\">risk</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>risk.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> -> </b></span>coding.system = <span style=\"color: blue\">'http://terminology.hl7.org/CodeSystem/risk-probability'</span> <i>"riskSystem"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'low'</span> <i>"riskCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'Low likelihood'</span> <i>"riskDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"riskCoding"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>risk.text = <span style=\"color: blue\">'Low risk'</span> <i>"riskText"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"qualitativeRisk"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"prediction"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"fallsLow"</i><span style=\"color: navy\">;</span>\r\n obs<b> where </b><span style=\"color: navy\">(</span>value.ofType(integer) >= 51<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'RiskAssessment'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">ra</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>ra<b> then </b>CopyResponseTags<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">)</span> <i>"responseTags"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span> ra<span style=\"color: navy\">, </span> entry<b> then </b>BuildRiskBase<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>"riskBase"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>ra<b> then </b>SetFallsRiskCode<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">)</span> <i>"riskCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>ra.prediction<b> as </b><span style=\"color: maroon\">pred</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>pred.qualitativeRisk<b> as </b><span style=\"color: maroon\">risk</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>risk.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> -> </b></span>coding.system = <span style=\"color: blue\">'http://terminology.hl7.org/CodeSystem/risk-probability'</span> <i>"riskSystem"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'high'</span> <i>"riskCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'High likelihood'</span> <i>"riskDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"riskCoding"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>risk.text = <span style=\"color: blue\">'High risk'</span> <i>"riskText"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"qualitativeRisk"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"prediction"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"fallsHigh"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>SetFallsRiskCode<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\">ra</span><span style=\"color: navy\"> : </span>RiskAssessment<span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>ra.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> -> </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> -> </b></span>coding.system = <span style=\"color: blue\">'http://loinc.org'</span> <i>"codeSystem"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'59461-4'</span> <i>"codeCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'Fall risk level [Morse Fall Scale]'</span> <i>"codeDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"codeCoding"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"code"</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 "takes 1 parameter but 2 were</span>\r\n<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>\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> -> </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>\r\n 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\"> {\r\n</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>\r\n qr<span style=\"color: navy\"><b> -> </b></span>request.url = <span style=\"color: blue\">'Observation'</span> <i>"requestUrl"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"entryRequest"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>obs.status = <span style=\"color: blue\">'final'</span> <i>"status"</i><span style=\"color: navy\">;</span>\r\n qr.subject<b> as </b><span style=\"color: maroon\">s</span><b> where </b><span style=\"color: navy\">(</span>(reference.exists() and (reference.startsWith('Patient/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient')))<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </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><b> where </b><span style=\"color: navy\">(</span>(reference.exists() and (reference.startsWith('Encounter/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Encounter')))<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </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> -> </b></span>obs.effective = <span style=\"color: maroon\">t</span> <i>"effective"</i><span style=\"color: navy\">;</span>\r\n qr.source<b> as </b><span style=\"color: maroon\">src</span><b> where </b><span style=\"color: navy\">(</span>(reference.exists() and (reference.startsWith('Organization/') or reference.startsWith('Patient/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Organization') or ('/' + type).endsWith('/Patient')))<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>obs.performer = <span style=\"color: maroon\">src</span> <i>"performerFromSource"</i><span style=\"color: navy\">;</span>\r\n qr<b> where </b><span style=\"color: navy\">(</span>source.where(((reference.exists() and (reference.startsWith('Organization/') or reference.startsWith('Patient/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Organization') or ('/' + type).endsWith('/Patient'))))).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><b> where </b><span style=\"color: navy\">(</span>(reference.exists() and (reference.startsWith('Organization/') or reference.startsWith('Patient/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Organization') or ('/' + type).endsWith('/Patient')))<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>obs.performer = <span style=\"color: maroon\">a</span> <i>"performerFromAuthor"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"performerFallback"</i><span style=\"color: navy\">;</span>\r\n 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\"> {\r\n</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>\r\n <span style=\"color: navy\">}</span> <i>"linkQuestionnaireResponse"</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\">The RiskAssessment stands on two things: the response that was filled in and</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">the Observation that holds the number. Both go in basis, which is what the</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">SGHI RiskAssessment profile binds to a QuestionnaireResponse.</span>\r\n<b>group </b>BuildRiskBase<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">qr</span><span style=\"color: navy\"> : </span>QR, <b>source</b> <span style=\"color: maroon\">obs</span><span style=\"color: navy\"> : </span>Observation, <b>target</b> <span style=\"color: maroon\">ra</span><span style=\"color: navy\"> : </span>RiskAssessment, <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> -> </b></span>ra.id = <b>uuid</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> then </b>SetRiskAssessmentFullUrl<span style=\"color: navy\">(</span><span style=\"color: maroon\">ra</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>\r\n 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\"> {\r\n</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>\r\n qr<span style=\"color: navy\"><b> -> </b></span>request.url = <span style=\"color: blue\">'RiskAssessment'</span> <i>"requestUrl"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"entryRequest"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>ra.status = <span style=\"color: blue\">'final'</span> <i>"status"</i><span style=\"color: navy\">;</span>\r\n qr.subject<b> as </b><span style=\"color: maroon\">s</span><b> where </b><span style=\"color: navy\">(</span>(reference.exists() and (reference.startsWith('Patient/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient')))<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>ra.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><b> where </b><span style=\"color: navy\">(</span>(reference.exists() and (reference.startsWith('Encounter/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Encounter')))<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>ra.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> -> </b></span>ra.occurrence = <span style=\"color: maroon\">t</span> <i>"occurrence"</i><span style=\"color: navy\">;</span>\r\n qr.author<b> as </b><span style=\"color: maroon\">a</span><b> where </b><span style=\"color: navy\">(</span>(reference.exists() and (reference.startsWith('Patient/') or reference.startsWith('Practitioner/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/Practitioner')))<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>ra.performer = <span style=\"color: maroon\">a</span> <i>"performerFromAuthor"</i><span style=\"color: navy\">;</span>\r\n qr<b> where </b><span style=\"color: navy\">(</span>author.where(((reference.exists() and (reference.startsWith('Patient/') or reference.startsWith('Practitioner/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/Practitioner'))))).exists().not()<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr.source<b> as </b><span style=\"color: maroon\">src</span><b> where </b><span style=\"color: navy\">(</span>(reference.exists() and (reference.startsWith('Patient/') or reference.startsWith('Practitioner/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/Practitioner')))<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>ra.performer = <span style=\"color: maroon\">src</span> <i>"performerFromSource"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"performerFallback"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>ra.basis = <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\">qref</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> -> </b></span>qref.reference = <span style=\"color: maroon\">qid</span> <i>"basisQuestionnaireResponse"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"basisResponse"</i><span style=\"color: navy\">;</span>\r\n obs.id<b> as </b><span style=\"color: maroon\">oid</span><span style=\"color: navy\"><b> -> </b></span>ra.basis = <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\">oref</span><b> then</b><span style=\"color: navy\"> {\r\n</span> oid<span style=\"color: navy\"><b> -> </b></span>oref.reference = <b>append</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Observation/'</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">oid</span><span style=\"color: navy\">)</span> <i>"basisObservationRef"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"basisObservation"</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> -> </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> -> </b></span>cc.coding = <span style=\"color: maroon\">cv</span> <i>"valueCoding"</i><span style=\"color: navy\">;</span>\r\n 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>\r\n <span style=\"color: navy\">}</span> <i>"codedValue"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"componentAnswer"</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> -> </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> -> </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> -> </b></span>coding.system = <span style=\"color: blue\">'http://terminology.hl7.org/CodeSystem/observation-category'</span> <i>"categorySystem"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'survey'</span> <i>"categoryCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'Survey'</span> <i>"categoryDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"categoryCoding"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"category"</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> -> </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>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>SetRiskAssessmentFullUrl<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">ra</span><span style=\"color: navy\"> : </span>RiskAssessment, <b>target</b> <span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> ra.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/RiskAssessment/'</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>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>SetCarePlanFullUrl<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">plan</span><span style=\"color: navy\"> : </span>CarePlan, <b>target</b> <span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> plan.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/CarePlan/'</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>\r\n<span style=\"color: navy\">}\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">── Tenancy ──────────────────────────────────────────────────────────────────</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Whose this is. The platform says which tenant a response belongs to with a</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">tag on the response, and every tag the response carries is copied onto</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">everything this map creates, as it is. Copied rather than named here, so the</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">map never has to know which tenant it is running for, nor which system the</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">tag is under: that system has moved more than once.</span>\r\n<b>group </b>CopyResponseTags<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\">r</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> qr.meta<b> as </b><span style=\"color: maroon\">qm</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qm.tag<b> as </b><span style=\"color: maroon\">qt</span><span style=\"color: navy\"><b> -> </b></span> r.meta<b> as </b><span style=\"color: maroon\">m</span><span style=\"color: navy\">, </span> m.tag = <span style=\"color: maroon\">qt</span> <i>"copyTag"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"tenantTags"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span></pre></div>"
},
"url" : "https://fhir.slade360.co.ke/fhir/StructureMap/ExtractInpatientFallsAndPressureUlcerRiskAssessment",
"version" : "0.1.0",
"name" : "ExtractInpatientFallsAndPressureUlcerRiskAssessment",
"title" : "Inpatient Falls and Pressure Ulcer Risk Assessment Extraction",
"status" : "active",
"date" : "2026-10-06T18:48:22+00:00",
"publisher" : "Kathurima Kimathi",
"contact" : [
{
"name" : "Kathurima Kimathi",
"telecom" : [
{
"system" : "url",
"value" : "https://www.linkedin.com/in/kathurima-kimathi/"
},
{
"system" : "email",
"value" : "kathurimakimathi415@gmail.com"
}
]
},
{
"name" : "Oscar John",
"telecom" : [
{
"system" : "email",
"value" : "oscarjohnotieno@gmail.com",
"use" : "work"
}
]
},
{
"name" : "Kennedy Omondi",
"telecom" : [
{
"system" : "email",
"value" : "kennankole@gmail.com",
"use" : "work"
}
]
}
],
"description" : "Two scored instruments out. Braden becomes one Observation carrying the total with its six sub-scores as components, plus a RiskAssessment for the band; the falls score -- which is the Morse Fall Scale item for item -- becomes the same shape against the LOINC Morse panel. The measures put in place become a CarePlan. A total is only emitted when every sub-score has been answered: a Braden computed from four of six items is not a Braden score, and banding one would put a number a nurse can act on next to a risk tier that is wrong.",
"structure" : [
{
"url" : "http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse",
"mode" : "source",
"alias" : "QR"
},
{
"url" : "http://hl7.org/fhir/StructureDefinition/Bundle",
"mode" : "target",
"alias" : "Bundle"
},
{
"url" : "http://hl7.org/fhir/StructureDefinition/Observation",
"mode" : "target",
"alias" : "Observation"
},
{
"url" : "http://hl7.org/fhir/StructureDefinition/RiskAssessment",
"mode" : "target",
"alias" : "RiskAssessment"
},
{
"url" : "http://hl7.org/fhir/StructureDefinition/CarePlan",
"mode" : "target",
"alias" : "CarePlan"
}
],
"group" : [
{
"name" : "ExtractInpatientFallsAndPressureUlcerRiskAssessment",
"input" : [
{
"name" : "qr",
"type" : "QR",
"mode" : "source"
},
{
"name" : "bundle",
"type" : "Bundle",
"mode" : "target"
}
],
"rule" : [
{
"name" : "setBundleType",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "bundle",
"element" : "type",
"transform" : "copy",
"parameter" : [
{
"valueString" : "transaction"
}
]
}
]
},
{
"name" : "bradenRule",
"source" : [
{
"context" : "qr",
"element" : "item",
"variable" : "gB",
"condition" : "(linkId = 'braden') and item.answer.value.ofType(Coding).exists()"
}
],
"rule" : [
{
"name" : "bradenObservation",
"source" : [
{
"context" : "gB"
}
],
"target" : [
{
"context" : "bundle",
"element" : "entry",
"variable" : "entryB"
},
{
"context" : "entryB",
"element" : "resource",
"variable" : "obsB",
"transform" : "create",
"parameter" : [
{
"valueString" : "Observation"
}
]
}
],
"rule" : [
{
"name" : "responseTags",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "obsB"
}
],
"dependent" : [
{
"name" : "CopyResponseTags",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "obsB"
}
]
}
]
},
{
"name" : "bradenBase",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "obsB"
},
{
"context" : "entryB"
}
],
"dependent" : [
{
"name" : "BuildObsBase",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "obsB"
},
{
"valueId" : "entryB"
}
]
}
]
},
{
"name" : "bradenCategory",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "obsB"
}
],
"dependent" : [
{
"name" : "SetSurveyCategory",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "obsB"
}
]
}
]
},
{
"name" : "bradenCode",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "obsB",
"element" : "code",
"variable" : "code"
}
],
"rule" : [
{
"name" : "codeCoding",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "code",
"element" : "coding",
"variable" : "coding"
}
],
"rule" : [
{
"name" : "codeSystem",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://loinc.org"
}
]
}
]
},
{
"name" : "codeCode",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "38227-5"
}
]
}
]
},
{
"name" : "codeDisplay",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "display",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Braden scale total score"
}
]
}
]
}
]
}
]
},
{
"name" : "bradenTotalRule",
"source" : [
{
"context" : "gB",
"condition" : "item.answer.value.ofType(Coding).count() = 6"
}
],
"rule" : [
{
"name" : "bradenTotalValue",
"source" : [
{
"context" : "gB"
}
],
"target" : [
{
"context" : "obsB",
"element" : "value",
"transform" : "evaluate",
"parameter" : [
{
"valueId" : "gB"
},
{
"valueString" : "iif(item.where(linkId = 'braden.total').answer.value.exists(), item.where(linkId = 'braden.total').answer.value, item.answer.value.ofType(Coding).code.select($this.split('-').last().toInteger()).aggregate($this + $total, 0))"
}
]
}
]
}
],
"documentation" : "The submitted total wins; otherwise sum the answers. Every scored answer\r\nin SGHIClinicalScoreCodeSystem ends in its own weight -- braden-sensory-3\r\nis worth 3 -- so the fallback reads the weight off the code. Both paths\r\nare the arithmetic the questionnaire's calculatedExpression performs, so\r\nthey cannot disagree. Guarded on all six sub-scores being present."
},
{
"name" : "bradenSensoryRule",
"source" : [
{
"context" : "gB",
"element" : "item",
"variable" : "it",
"condition" : "(linkId = 'braden.sensory') and answer.value.exists()"
}
],
"target" : [
{
"context" : "obsB",
"element" : "component",
"variable" : "comp"
}
],
"rule" : [
{
"name" : "sensoryCode",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "comp",
"element" : "code",
"variable" : "code"
}
],
"rule" : [
{
"name" : "codeCoding",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "code",
"element" : "coding",
"variable" : "coding"
}
],
"rule" : [
{
"name" : "codeSystem",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://loinc.org"
}
]
}
]
},
{
"name" : "codeCode",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "38222-6"
}
]
}
]
},
{
"name" : "codeDisplay",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "display",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Sensory perception Braden scale"
}
]
}
]
}
]
}
]
},
{
"name" : "sensoryValue",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "comp"
}
],
"dependent" : [
{
"name" : "SetComponentCodedValue",
"parameter" : [
{
"valueId" : "it"
},
{
"valueId" : "comp"
}
]
}
]
}
]
},
{
"name" : "bradenMoistureRule",
"source" : [
{
"context" : "gB",
"element" : "item",
"variable" : "it",
"condition" : "(linkId = 'braden.moisture') and answer.value.exists()"
}
],
"target" : [
{
"context" : "obsB",
"element" : "component",
"variable" : "comp"
}
],
"rule" : [
{
"name" : "moistureCode",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "comp",
"element" : "code",
"variable" : "code"
}
],
"rule" : [
{
"name" : "codeCoding",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "code",
"element" : "coding",
"variable" : "coding"
}
],
"rule" : [
{
"name" : "codeSystem",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://loinc.org"
}
]
}
]
},
{
"name" : "codeCode",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "38229-1"
}
]
}
]
},
{
"name" : "codeDisplay",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "display",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Moisture exposure Braden scale"
}
]
}
]
}
]
}
]
},
{
"name" : "moistureValue",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "comp"
}
],
"dependent" : [
{
"name" : "SetComponentCodedValue",
"parameter" : [
{
"valueId" : "it"
},
{
"valueId" : "comp"
}
]
}
]
}
]
},
{
"name" : "bradenActivityRule",
"source" : [
{
"context" : "gB",
"element" : "item",
"variable" : "it",
"condition" : "(linkId = 'braden.activity') and answer.value.exists()"
}
],
"target" : [
{
"context" : "obsB",
"element" : "component",
"variable" : "comp"
}
],
"rule" : [
{
"name" : "activityCode",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "comp",
"element" : "code",
"variable" : "code"
}
],
"rule" : [
{
"name" : "codeCoding",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "code",
"element" : "coding",
"variable" : "coding"
}
],
"rule" : [
{
"name" : "codeSystem",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://loinc.org"
}
]
}
]
},
{
"name" : "codeCode",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "38223-4"
}
]
}
]
},
{
"name" : "codeDisplay",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "display",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Physical activity Braden scale"
}
]
}
]
}
]
}
]
},
{
"name" : "activityValue",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "comp"
}
],
"dependent" : [
{
"name" : "SetComponentCodedValue",
"parameter" : [
{
"valueId" : "it"
},
{
"valueId" : "comp"
}
]
}
]
}
]
},
{
"name" : "bradenMobilityRule",
"source" : [
{
"context" : "gB",
"element" : "item",
"variable" : "it",
"condition" : "(linkId = 'braden.mobility') and answer.value.exists()"
}
],
"target" : [
{
"context" : "obsB",
"element" : "component",
"variable" : "comp"
}
],
"rule" : [
{
"name" : "mobilityCode",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "comp",
"element" : "code",
"variable" : "code"
}
],
"rule" : [
{
"name" : "codeCoding",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "code",
"element" : "coding",
"variable" : "coding"
}
],
"rule" : [
{
"name" : "codeSystem",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://loinc.org"
}
]
}
]
},
{
"name" : "codeCode",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "38224-2"
}
]
}
]
},
{
"name" : "codeDisplay",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "display",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Physical mobility Braden scale"
}
]
}
]
}
]
}
]
},
{
"name" : "mobilityValue",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "comp"
}
],
"dependent" : [
{
"name" : "SetComponentCodedValue",
"parameter" : [
{
"valueId" : "it"
},
{
"valueId" : "comp"
}
]
}
]
}
]
},
{
"name" : "bradenNutritionRule",
"source" : [
{
"context" : "gB",
"element" : "item",
"variable" : "it",
"condition" : "(linkId = 'braden.nutrition') and answer.value.exists()"
}
],
"target" : [
{
"context" : "obsB",
"element" : "component",
"variable" : "comp"
}
],
"rule" : [
{
"name" : "nutritionCode",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "comp",
"element" : "code",
"variable" : "code"
}
],
"rule" : [
{
"name" : "codeCoding",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "code",
"element" : "coding",
"variable" : "coding"
}
],
"rule" : [
{
"name" : "codeSystem",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://loinc.org"
}
]
}
]
},
{
"name" : "codeCode",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "38225-9"
}
]
}
]
},
{
"name" : "codeDisplay",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "display",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Nutrition intake pattern Braden scale"
}
]
}
]
}
]
}
]
},
{
"name" : "nutritionValue",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "comp"
}
],
"dependent" : [
{
"name" : "SetComponentCodedValue",
"parameter" : [
{
"valueId" : "it"
},
{
"valueId" : "comp"
}
]
}
]
}
]
},
{
"name" : "bradenFrictionRule",
"source" : [
{
"context" : "gB",
"element" : "item",
"variable" : "it",
"condition" : "(linkId = 'braden.friction') and answer.value.exists()"
}
],
"target" : [
{
"context" : "obsB",
"element" : "component",
"variable" : "comp"
}
],
"rule" : [
{
"name" : "frictionCode",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "comp",
"element" : "code",
"variable" : "code"
}
],
"rule" : [
{
"name" : "codeCoding",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "code",
"element" : "coding",
"variable" : "coding"
}
],
"rule" : [
{
"name" : "codeSystem",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://loinc.org"
}
]
}
]
},
{
"name" : "codeCode",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "38226-7"
}
]
}
]
},
{
"name" : "codeDisplay",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "display",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Friction and shear Braden scale"
}
]
}
]
}
]
}
]
},
{
"name" : "frictionValue",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "comp"
}
],
"dependent" : [
{
"name" : "SetComponentCodedValue",
"parameter" : [
{
"valueId" : "it"
},
{
"valueId" : "comp"
}
]
}
]
}
]
},
{
"name" : "bradenBand",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "obsB"
},
{
"context" : "bundle"
}
],
"dependent" : [
{
"name" : "AddBradenRiskAssessment",
"parameter" : [
{
"valueId" : "obsB"
},
{
"valueId" : "qr"
},
{
"valueId" : "bundle"
}
]
}
]
}
]
}
],
"documentation" : "── Braden pressure ulcer risk ─────────────────────────────────────────────"
},
{
"name" : "fallsRiskRule",
"source" : [
{
"context" : "qr",
"element" : "item",
"variable" : "gF",
"condition" : "(linkId = 'fallsRisk') and item.answer.value.ofType(Coding).exists()"
}
],
"rule" : [
{
"name" : "fallsObservation",
"source" : [
{
"context" : "gF"
}
],
"target" : [
{
"context" : "bundle",
"element" : "entry",
"variable" : "entryF"
},
{
"context" : "entryF",
"element" : "resource",
"variable" : "obsF",
"transform" : "create",
"parameter" : [
{
"valueString" : "Observation"
}
]
}
],
"rule" : [
{
"name" : "responseTags",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "obsF"
}
],
"dependent" : [
{
"name" : "CopyResponseTags",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "obsF"
}
]
}
]
},
{
"name" : "fallsBase",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "obsF"
},
{
"context" : "entryF"
}
],
"dependent" : [
{
"name" : "BuildObsBase",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "obsF"
},
{
"valueId" : "entryF"
}
]
}
]
},
{
"name" : "fallsCategory",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "obsF"
}
],
"dependent" : [
{
"name" : "SetSurveyCategory",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "obsF"
}
]
}
]
},
{
"name" : "fallsCode",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "obsF",
"element" : "code",
"variable" : "code"
}
],
"rule" : [
{
"name" : "codeCoding",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "code",
"element" : "coding",
"variable" : "coding"
}
],
"rule" : [
{
"name" : "codeSystem",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://loinc.org"
}
]
}
]
},
{
"name" : "codeCode",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "59460-6"
}
]
}
]
},
{
"name" : "codeDisplay",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "display",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Fall risk total [Morse Fall Scale]"
}
]
}
]
}
]
}
]
},
{
"name" : "fallsTotalRule",
"source" : [
{
"context" : "gF",
"condition" : "item.answer.value.ofType(Coding).count() = 6"
}
],
"rule" : [
{
"name" : "fallsTotalValue",
"source" : [
{
"context" : "gF"
}
],
"target" : [
{
"context" : "obsF",
"element" : "value",
"transform" : "evaluate",
"parameter" : [
{
"valueId" : "gF"
},
{
"valueString" : "iif(item.where(linkId = 'fallsRisk.total').answer.value.exists(), item.where(linkId = 'fallsRisk.total').answer.value, item.answer.value.ofType(Coding).code.select($this.split('-').last().toInteger()).aggregate($this + $total, 0))"
}
]
}
]
}
]
},
{
"name" : "fallsHistoryRule",
"source" : [
{
"context" : "gF",
"element" : "item",
"variable" : "it",
"condition" : "(linkId = 'fallsRisk.history') and answer.value.exists()"
}
],
"target" : [
{
"context" : "obsF",
"element" : "component",
"variable" : "comp"
}
],
"rule" : [
{
"name" : "historyCode",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "comp",
"element" : "code",
"variable" : "code"
}
],
"rule" : [
{
"name" : "codeCoding",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "code",
"element" : "coding",
"variable" : "coding"
}
],
"rule" : [
{
"name" : "codeSystem",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://loinc.org"
}
]
}
]
},
{
"name" : "codeCode",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "59454-9"
}
]
}
]
},
{
"name" : "codeDisplay",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "display",
"transform" : "copy",
"parameter" : [
{
"valueString" : "History of falling; immediate or within 3 months [Morse Fall Scale]"
}
]
}
]
}
]
}
]
},
{
"name" : "historyValue",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "comp"
}
],
"dependent" : [
{
"name" : "SetComponentCodedValue",
"parameter" : [
{
"valueId" : "it"
},
{
"valueId" : "comp"
}
]
}
]
}
]
},
{
"name" : "fallsDiagnosesRule",
"source" : [
{
"context" : "gF",
"element" : "item",
"variable" : "it",
"condition" : "(linkId = 'fallsRisk.diagnoses') and answer.value.exists()"
}
],
"target" : [
{
"context" : "obsF",
"element" : "component",
"variable" : "comp"
}
],
"rule" : [
{
"name" : "diagnosesCode",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "comp",
"element" : "code",
"variable" : "code"
}
],
"rule" : [
{
"name" : "codeCoding",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "code",
"element" : "coding",
"variable" : "coding"
}
],
"rule" : [
{
"name" : "codeSystem",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://loinc.org"
}
]
}
]
},
{
"name" : "codeCode",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "59455-6"
}
]
}
]
},
{
"name" : "codeDisplay",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "display",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Secondary diagnosis is present"
}
]
}
]
}
]
}
]
},
{
"name" : "diagnosesValue",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "comp"
}
],
"dependent" : [
{
"name" : "SetComponentCodedValue",
"parameter" : [
{
"valueId" : "it"
},
{
"valueId" : "comp"
}
]
}
]
}
]
},
{
"name" : "fallsAidRule",
"source" : [
{
"context" : "gF",
"element" : "item",
"variable" : "it",
"condition" : "(linkId = 'fallsRisk.aid') and answer.value.exists()"
}
],
"target" : [
{
"context" : "obsF",
"element" : "component",
"variable" : "comp"
}
],
"rule" : [
{
"name" : "aidCode",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "comp",
"element" : "code",
"variable" : "code"
}
],
"rule" : [
{
"name" : "codeCoding",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "code",
"element" : "coding",
"variable" : "coding"
}
],
"rule" : [
{
"name" : "codeSystem",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://loinc.org"
}
]
}
]
},
{
"name" : "codeCode",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "59456-4"
}
]
}
]
},
{
"name" : "codeDisplay",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "display",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Ambulatory aid [Morse Fall Scale]"
}
]
}
]
}
]
}
]
},
{
"name" : "aidValue",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "comp"
}
],
"dependent" : [
{
"name" : "SetComponentCodedValue",
"parameter" : [
{
"valueId" : "it"
},
{
"valueId" : "comp"
}
]
}
]
}
]
},
{
"name" : "fallsIvRule",
"source" : [
{
"context" : "gF",
"element" : "item",
"variable" : "it",
"condition" : "(linkId = 'fallsRisk.iv') and answer.value.exists()"
}
],
"target" : [
{
"context" : "obsF",
"element" : "component",
"variable" : "comp"
}
],
"rule" : [
{
"name" : "ivCode",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "comp",
"element" : "code",
"variable" : "code"
}
],
"rule" : [
{
"name" : "codeCoding",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "code",
"element" : "coding",
"variable" : "coding"
}
],
"rule" : [
{
"name" : "codeSystem",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://loinc.org"
}
]
}
]
},
{
"name" : "codeCode",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "59457-2"
}
]
}
]
},
{
"name" : "codeDisplay",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "display",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Intravenous apparatus [Morse Fall Scale]"
}
]
}
]
}
]
}
]
},
{
"name" : "ivValue",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "comp"
}
],
"dependent" : [
{
"name" : "SetComponentCodedValue",
"parameter" : [
{
"valueId" : "it"
},
{
"valueId" : "comp"
}
]
}
]
}
]
},
{
"name" : "fallsGaitRule",
"source" : [
{
"context" : "gF",
"element" : "item",
"variable" : "it",
"condition" : "(linkId = 'fallsRisk.gait') and answer.value.exists()"
}
],
"target" : [
{
"context" : "obsF",
"element" : "component",
"variable" : "comp"
}
],
"rule" : [
{
"name" : "gaitCode",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "comp",
"element" : "code",
"variable" : "code"
}
],
"rule" : [
{
"name" : "codeCoding",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "code",
"element" : "coding",
"variable" : "coding"
}
],
"rule" : [
{
"name" : "codeSystem",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://loinc.org"
}
]
}
]
},
{
"name" : "codeCode",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "59458-0"
}
]
}
]
},
{
"name" : "codeDisplay",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "display",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Gait [Morse Fall Scale]"
}
]
}
]
}
]
}
]
},
{
"name" : "gaitValue",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "comp"
}
],
"dependent" : [
{
"name" : "SetComponentCodedValue",
"parameter" : [
{
"valueId" : "it"
},
{
"valueId" : "comp"
}
]
}
]
}
]
},
{
"name" : "fallsMentalRule",
"source" : [
{
"context" : "gF",
"element" : "item",
"variable" : "it",
"condition" : "(linkId = 'fallsRisk.mental') and answer.value.exists()"
}
],
"target" : [
{
"context" : "obsF",
"element" : "component",
"variable" : "comp"
}
],
"rule" : [
{
"name" : "mentalCode",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "comp",
"element" : "code",
"variable" : "code"
}
],
"rule" : [
{
"name" : "codeCoding",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "code",
"element" : "coding",
"variable" : "coding"
}
],
"rule" : [
{
"name" : "codeSystem",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://loinc.org"
}
]
}
]
},
{
"name" : "codeCode",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "59459-8"
}
]
}
]
},
{
"name" : "codeDisplay",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "coding",
"element" : "display",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Mental status [Morse Fall Scale]"
}
]
}
]
}
]
}
]
},
{
"name" : "mentalValue",
"source" : [
{
"context" : "it"
}
],
"target" : [
{
"context" : "comp"
}
],
"dependent" : [
{
"name" : "SetComponentCodedValue",
"parameter" : [
{
"valueId" : "it"
},
{
"valueId" : "comp"
}
]
}
]
}
]
},
{
"name" : "fallsBand",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "obsF"
},
{
"context" : "bundle"
}
],
"dependent" : [
{
"name" : "AddFallsRiskAssessment",
"parameter" : [
{
"valueId" : "obsF"
},
{
"valueId" : "qr"
},
{
"valueId" : "bundle"
}
]
}
]
}
]
}
],
"documentation" : "── Falls risk (Morse Fall Scale) ──────────────────────────────────────────"
},
{
"name" : "measuresRule",
"source" : [
{
"context" : "qr",
"element" : "item",
"variable" : "itM",
"condition" : "(linkId = 'measures') and answer.value.exists()"
}
],
"rule" : [
{
"name" : "measuresAnswer",
"source" : [
{
"context" : "itM",
"element" : "answer",
"listMode" : "first",
"variable" : "aM"
}
],
"rule" : [
{
"name" : "carePlan",
"source" : [
{
"context" : "aM"
}
],
"target" : [
{
"context" : "bundle",
"element" : "entry",
"variable" : "entryC"
},
{
"context" : "entryC",
"element" : "resource",
"variable" : "plan",
"transform" : "create",
"parameter" : [
{
"valueString" : "CarePlan"
}
]
}
],
"rule" : [
{
"name" : "responseTags",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "plan"
}
],
"dependent" : [
{
"name" : "CopyResponseTags",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "plan"
}
]
}
]
},
{
"name" : "idAndFullUrl",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "plan",
"element" : "id",
"transform" : "uuid"
}
],
"dependent" : [
{
"name" : "SetCarePlanFullUrl",
"parameter" : [
{
"valueId" : "plan"
},
{
"valueId" : "entryC"
}
]
}
]
},
{
"name" : "entryRequest",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "entryC",
"element" : "request",
"variable" : "request"
}
],
"rule" : [
{
"name" : "requestMethod",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "request",
"element" : "method",
"transform" : "copy",
"parameter" : [
{
"valueString" : "POST"
}
]
}
]
},
{
"name" : "requestUrl",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "request",
"element" : "url",
"transform" : "copy",
"parameter" : [
{
"valueString" : "CarePlan"
}
]
}
]
}
]
},
{
"name" : "status",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "plan",
"element" : "status",
"transform" : "copy",
"parameter" : [
{
"valueString" : "active"
}
]
}
]
},
{
"name" : "intent",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "plan",
"element" : "intent",
"transform" : "copy",
"parameter" : [
{
"valueString" : "plan"
}
]
}
]
},
{
"name" : "category",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "plan",
"element" : "category",
"variable" : "cat"
}
],
"rule" : [
{
"name" : "categoryCoding",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "cat",
"element" : "coding",
"variable" : "coding"
}
],
"rule" : [
{
"name" : "categorySystem",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "https://fhir.slade360.co.ke/fhir/CodeSystem/inpatient-clinical-concept-codesystem"
}
]
}
]
},
{
"name" : "categoryCode",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "falls-prevention-plan"
}
]
}
]
},
{
"name" : "categoryDisplay",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "display",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Falls and pressure ulcer prevention measures"
}
]
}
]
}
]
}
]
},
{
"name" : "title",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "plan",
"element" : "title",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Falls and pressure ulcer prevention measures"
}
]
}
]
},
{
"name" : "description",
"source" : [
{
"context" : "aM",
"element" : "value",
"variable" : "v"
}
],
"target" : [
{
"context" : "plan",
"element" : "description",
"transform" : "copy",
"parameter" : [
{
"valueId" : "v"
}
]
}
]
},
{
"name" : "subject",
"source" : [
{
"context" : "qr",
"element" : "subject",
"variable" : "s",
"condition" : "(reference.exists() and (reference.startsWith('Patient/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient')))"
}
],
"target" : [
{
"context" : "plan",
"element" : "subject",
"transform" : "copy",
"parameter" : [
{
"valueId" : "s"
}
]
}
]
},
{
"name" : "encounter",
"source" : [
{
"context" : "qr",
"element" : "encounter",
"variable" : "e",
"condition" : "(reference.exists() and (reference.startsWith('Encounter/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Encounter')))"
}
],
"target" : [
{
"context" : "plan",
"element" : "encounter",
"transform" : "copy",
"parameter" : [
{
"valueId" : "e"
}
]
}
]
},
{
"name" : "created",
"source" : [
{
"context" : "qr",
"element" : "authored",
"variable" : "t"
}
],
"target" : [
{
"context" : "plan",
"element" : "created",
"transform" : "copy",
"parameter" : [
{
"valueId" : "t"
}
]
}
]
},
{
"name" : "contributorFromAuthor",
"source" : [
{
"context" : "qr",
"element" : "author",
"variable" : "a",
"condition" : "(reference.exists() and (reference.startsWith('Patient/') or reference.startsWith('Practitioner/') or reference.startsWith('PractitionerRole/') or reference.startsWith('Device/') or reference.startsWith('RelatedPerson/') or reference.startsWith('Organization/') or reference.startsWith('CareTeam/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/Practitioner') or ('/' + type).endsWith('/PractitionerRole') or ('/' + type).endsWith('/Device') or ('/' + type).endsWith('/RelatedPerson') or ('/' + type).endsWith('/Organization') or ('/' + type).endsWith('/CareTeam')))"
}
],
"target" : [
{
"context" : "plan",
"element" : "contributor",
"transform" : "copy",
"parameter" : [
{
"valueId" : "a"
}
]
}
]
},
{
"name" : "contributorFallback",
"source" : [
{
"context" : "qr",
"condition" : "author.where(((reference.exists() and (reference.startsWith('Patient/') or reference.startsWith('Practitioner/') or reference.startsWith('PractitionerRole/') or reference.startsWith('Device/') or reference.startsWith('RelatedPerson/') or reference.startsWith('Organization/') or reference.startsWith('CareTeam/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/Practitioner') or ('/' + type).endsWith('/PractitionerRole') or ('/' + type).endsWith('/Device') or ('/' + type).endsWith('/RelatedPerson') or ('/' + type).endsWith('/Organization') or ('/' + type).endsWith('/CareTeam'))))).exists().not()"
}
],
"rule" : [
{
"name" : "contributorFromSource",
"source" : [
{
"context" : "qr",
"element" : "source",
"variable" : "src",
"condition" : "(reference.exists() and (reference.startsWith('Patient/') or reference.startsWith('Practitioner/') or reference.startsWith('PractitionerRole/') or reference.startsWith('Device/') or reference.startsWith('RelatedPerson/') or reference.startsWith('Organization/') or reference.startsWith('CareTeam/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/Practitioner') or ('/' + type).endsWith('/PractitionerRole') or ('/' + type).endsWith('/Device') or ('/' + type).endsWith('/RelatedPerson') or ('/' + type).endsWith('/Organization') or ('/' + type).endsWith('/CareTeam')))"
}
],
"target" : [
{
"context" : "plan",
"element" : "contributor",
"transform" : "copy",
"parameter" : [
{
"valueId" : "src"
}
]
}
]
}
]
},
{
"name" : "linkQuestionnaireResponse",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "plan",
"element" : "supportingInfo",
"variable" : "ref",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
}
],
"rule" : [
{
"name" : "supportingInfoRef",
"source" : [
{
"context" : "qr",
"element" : "id",
"variable" : "qid"
}
],
"target" : [
{
"context" : "ref",
"element" : "reference",
"transform" : "copy",
"parameter" : [
{
"valueId" : "qid"
}
]
}
]
}
]
}
]
}
]
}
],
"documentation" : "── Measures in place ──────────────────────────────────────────────────────"
}
]
},
{
"name" : "AddBradenRiskAssessment",
"documentation" : "─────────────────────────────────────────────────────────────────────────────\r\nRisk bands\r\nBraden (Bergstrom): 19 and over no risk, 15-18 mild, 13-14 moderate, 10-12\r\nhigh, 9 and under very high. Lower is worse.\r\nMorse (Morse, Preventing Patient Falls): 0-24 no risk, 25-50 low, 51 and over\r\nhigh. Higher is worse.\r\nThe published band is the text; the coding is HL7's risk-probability, which\r\nhas five concepts and so collapses Braden's \"very high\" and \"high\" onto one\r\ncode. Consumers that need the exact tier read the text, consumers that need\r\nto escalate read the code.\r\n─────────────────────────────────────────────────────────────────────────────",
"input" : [
{
"name" : "obs",
"type" : "Observation",
"mode" : "source"
},
{
"name" : "qr",
"type" : "QR",
"mode" : "source"
},
{
"name" : "bundle",
"type" : "Bundle",
"mode" : "target"
}
],
"rule" : [
{
"name" : "bradenVeryHigh",
"source" : [
{
"context" : "obs",
"condition" : "value.ofType(integer) <= 9"
}
],
"target" : [
{
"context" : "bundle",
"element" : "entry",
"variable" : "entry"
},
{
"context" : "entry",
"element" : "resource",
"variable" : "ra",
"transform" : "create",
"parameter" : [
{
"valueString" : "RiskAssessment"
}
]
}
],
"rule" : [
{
"name" : "responseTags",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra"
}
],
"dependent" : [
{
"name" : "CopyResponseTags",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "ra"
}
]
}
]
},
{
"name" : "riskBase",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra"
},
{
"context" : "entry"
}
],
"dependent" : [
{
"name" : "BuildRiskBase",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "obs"
},
{
"valueId" : "ra"
},
{
"valueId" : "entry"
}
]
}
]
},
{
"name" : "riskCode",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra"
}
],
"dependent" : [
{
"name" : "SetBradenRiskCode",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "ra"
}
]
}
]
},
{
"name" : "prediction",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra",
"element" : "prediction",
"variable" : "pred"
}
],
"rule" : [
{
"name" : "qualitativeRisk",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "pred",
"element" : "qualitativeRisk",
"variable" : "risk"
}
],
"rule" : [
{
"name" : "riskCoding",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "risk",
"element" : "coding",
"variable" : "coding"
}
],
"rule" : [
{
"name" : "riskSystem",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://terminology.hl7.org/CodeSystem/risk-probability"
}
]
}
]
},
{
"name" : "riskCode",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "high"
}
]
}
]
},
{
"name" : "riskDisplay",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "display",
"transform" : "copy",
"parameter" : [
{
"valueString" : "High likelihood"
}
]
}
]
}
]
},
{
"name" : "riskText",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "risk",
"element" : "text",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Very high risk"
}
]
}
]
}
]
}
]
}
]
},
{
"name" : "bradenHigh",
"source" : [
{
"context" : "obs",
"condition" : "(value.ofType(integer) >= 10) and (value.ofType(integer) <= 12)"
}
],
"target" : [
{
"context" : "bundle",
"element" : "entry",
"variable" : "entry"
},
{
"context" : "entry",
"element" : "resource",
"variable" : "ra",
"transform" : "create",
"parameter" : [
{
"valueString" : "RiskAssessment"
}
]
}
],
"rule" : [
{
"name" : "responseTags",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra"
}
],
"dependent" : [
{
"name" : "CopyResponseTags",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "ra"
}
]
}
]
},
{
"name" : "riskBase",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra"
},
{
"context" : "entry"
}
],
"dependent" : [
{
"name" : "BuildRiskBase",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "obs"
},
{
"valueId" : "ra"
},
{
"valueId" : "entry"
}
]
}
]
},
{
"name" : "riskCode",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra"
}
],
"dependent" : [
{
"name" : "SetBradenRiskCode",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "ra"
}
]
}
]
},
{
"name" : "prediction",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra",
"element" : "prediction",
"variable" : "pred"
}
],
"rule" : [
{
"name" : "qualitativeRisk",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "pred",
"element" : "qualitativeRisk",
"variable" : "risk"
}
],
"rule" : [
{
"name" : "riskCoding",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "risk",
"element" : "coding",
"variable" : "coding"
}
],
"rule" : [
{
"name" : "riskSystem",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://terminology.hl7.org/CodeSystem/risk-probability"
}
]
}
]
},
{
"name" : "riskCode",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "high"
}
]
}
]
},
{
"name" : "riskDisplay",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "display",
"transform" : "copy",
"parameter" : [
{
"valueString" : "High likelihood"
}
]
}
]
}
]
},
{
"name" : "riskText",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "risk",
"element" : "text",
"transform" : "copy",
"parameter" : [
{
"valueString" : "High risk"
}
]
}
]
}
]
}
]
}
]
},
{
"name" : "bradenModerate",
"source" : [
{
"context" : "obs",
"condition" : "(value.ofType(integer) >= 13) and (value.ofType(integer) <= 14)"
}
],
"target" : [
{
"context" : "bundle",
"element" : "entry",
"variable" : "entry"
},
{
"context" : "entry",
"element" : "resource",
"variable" : "ra",
"transform" : "create",
"parameter" : [
{
"valueString" : "RiskAssessment"
}
]
}
],
"rule" : [
{
"name" : "responseTags",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra"
}
],
"dependent" : [
{
"name" : "CopyResponseTags",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "ra"
}
]
}
]
},
{
"name" : "riskBase",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra"
},
{
"context" : "entry"
}
],
"dependent" : [
{
"name" : "BuildRiskBase",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "obs"
},
{
"valueId" : "ra"
},
{
"valueId" : "entry"
}
]
}
]
},
{
"name" : "riskCode",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra"
}
],
"dependent" : [
{
"name" : "SetBradenRiskCode",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "ra"
}
]
}
]
},
{
"name" : "prediction",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra",
"element" : "prediction",
"variable" : "pred"
}
],
"rule" : [
{
"name" : "qualitativeRisk",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "pred",
"element" : "qualitativeRisk",
"variable" : "risk"
}
],
"rule" : [
{
"name" : "riskCoding",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "risk",
"element" : "coding",
"variable" : "coding"
}
],
"rule" : [
{
"name" : "riskSystem",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://terminology.hl7.org/CodeSystem/risk-probability"
}
]
}
]
},
{
"name" : "riskCode",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "moderate"
}
]
}
]
},
{
"name" : "riskDisplay",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "display",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Moderate likelihood"
}
]
}
]
}
]
},
{
"name" : "riskText",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "risk",
"element" : "text",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Moderate risk"
}
]
}
]
}
]
}
]
}
]
},
{
"name" : "bradenMild",
"source" : [
{
"context" : "obs",
"condition" : "(value.ofType(integer) >= 15) and (value.ofType(integer) <= 18)"
}
],
"target" : [
{
"context" : "bundle",
"element" : "entry",
"variable" : "entry"
},
{
"context" : "entry",
"element" : "resource",
"variable" : "ra",
"transform" : "create",
"parameter" : [
{
"valueString" : "RiskAssessment"
}
]
}
],
"rule" : [
{
"name" : "responseTags",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra"
}
],
"dependent" : [
{
"name" : "CopyResponseTags",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "ra"
}
]
}
]
},
{
"name" : "riskBase",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra"
},
{
"context" : "entry"
}
],
"dependent" : [
{
"name" : "BuildRiskBase",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "obs"
},
{
"valueId" : "ra"
},
{
"valueId" : "entry"
}
]
}
]
},
{
"name" : "riskCode",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra"
}
],
"dependent" : [
{
"name" : "SetBradenRiskCode",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "ra"
}
]
}
]
},
{
"name" : "prediction",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra",
"element" : "prediction",
"variable" : "pred"
}
],
"rule" : [
{
"name" : "qualitativeRisk",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "pred",
"element" : "qualitativeRisk",
"variable" : "risk"
}
],
"rule" : [
{
"name" : "riskCoding",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "risk",
"element" : "coding",
"variable" : "coding"
}
],
"rule" : [
{
"name" : "riskSystem",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://terminology.hl7.org/CodeSystem/risk-probability"
}
]
}
]
},
{
"name" : "riskCode",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "low"
}
]
}
]
},
{
"name" : "riskDisplay",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "display",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Low likelihood"
}
]
}
]
}
]
},
{
"name" : "riskText",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "risk",
"element" : "text",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Mild risk"
}
]
}
]
}
]
}
]
}
]
},
{
"name" : "bradenNoRisk",
"source" : [
{
"context" : "obs",
"condition" : "value.ofType(integer) >= 19"
}
],
"target" : [
{
"context" : "bundle",
"element" : "entry",
"variable" : "entry"
},
{
"context" : "entry",
"element" : "resource",
"variable" : "ra",
"transform" : "create",
"parameter" : [
{
"valueString" : "RiskAssessment"
}
]
}
],
"rule" : [
{
"name" : "responseTags",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra"
}
],
"dependent" : [
{
"name" : "CopyResponseTags",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "ra"
}
]
}
]
},
{
"name" : "riskBase",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra"
},
{
"context" : "entry"
}
],
"dependent" : [
{
"name" : "BuildRiskBase",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "obs"
},
{
"valueId" : "ra"
},
{
"valueId" : "entry"
}
]
}
]
},
{
"name" : "riskCode",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra"
}
],
"dependent" : [
{
"name" : "SetBradenRiskCode",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "ra"
}
]
}
]
},
{
"name" : "prediction",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra",
"element" : "prediction",
"variable" : "pred"
}
],
"rule" : [
{
"name" : "qualitativeRisk",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "pred",
"element" : "qualitativeRisk",
"variable" : "risk"
}
],
"rule" : [
{
"name" : "riskCoding",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "risk",
"element" : "coding",
"variable" : "coding"
}
],
"rule" : [
{
"name" : "riskSystem",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://terminology.hl7.org/CodeSystem/risk-probability"
}
]
}
]
},
{
"name" : "riskCode",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "negligible"
}
]
}
]
},
{
"name" : "riskDisplay",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "display",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Negligible likelihood"
}
]
}
]
}
]
},
{
"name" : "riskText",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "risk",
"element" : "text",
"transform" : "copy",
"parameter" : [
{
"valueString" : "No risk identified"
}
]
}
]
}
]
}
]
}
]
}
]
},
{
"name" : "SetBradenRiskCode",
"input" : [
{
"name" : "qr",
"type" : "QR",
"mode" : "source"
},
{
"name" : "ra",
"type" : "RiskAssessment",
"mode" : "target"
}
],
"rule" : [
{
"name" : "code",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra",
"element" : "code",
"variable" : "code"
}
],
"rule" : [
{
"name" : "codeCoding",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "code",
"element" : "coding",
"variable" : "coding"
}
],
"rule" : [
{
"name" : "codeSystem",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://loinc.org"
}
]
}
]
},
{
"name" : "codeCode",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "81636-3"
}
]
}
]
},
{
"name" : "codeDisplay",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "display",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Pressure injury risk level Braden scale"
}
]
}
]
}
]
}
]
}
]
},
{
"name" : "AddFallsRiskAssessment",
"input" : [
{
"name" : "obs",
"type" : "Observation",
"mode" : "source"
},
{
"name" : "qr",
"type" : "QR",
"mode" : "source"
},
{
"name" : "bundle",
"type" : "Bundle",
"mode" : "target"
}
],
"rule" : [
{
"name" : "fallsNoRisk",
"source" : [
{
"context" : "obs",
"condition" : "value.ofType(integer) <= 24"
}
],
"target" : [
{
"context" : "bundle",
"element" : "entry",
"variable" : "entry"
},
{
"context" : "entry",
"element" : "resource",
"variable" : "ra",
"transform" : "create",
"parameter" : [
{
"valueString" : "RiskAssessment"
}
]
}
],
"rule" : [
{
"name" : "responseTags",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra"
}
],
"dependent" : [
{
"name" : "CopyResponseTags",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "ra"
}
]
}
]
},
{
"name" : "riskBase",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra"
},
{
"context" : "entry"
}
],
"dependent" : [
{
"name" : "BuildRiskBase",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "obs"
},
{
"valueId" : "ra"
},
{
"valueId" : "entry"
}
]
}
]
},
{
"name" : "riskCode",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra"
}
],
"dependent" : [
{
"name" : "SetFallsRiskCode",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "ra"
}
]
}
]
},
{
"name" : "prediction",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra",
"element" : "prediction",
"variable" : "pred"
}
],
"rule" : [
{
"name" : "qualitativeRisk",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "pred",
"element" : "qualitativeRisk",
"variable" : "risk"
}
],
"rule" : [
{
"name" : "riskCoding",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "risk",
"element" : "coding",
"variable" : "coding"
}
],
"rule" : [
{
"name" : "riskSystem",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://terminology.hl7.org/CodeSystem/risk-probability"
}
]
}
]
},
{
"name" : "riskCode",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "negligible"
}
]
}
]
},
{
"name" : "riskDisplay",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "display",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Negligible likelihood"
}
]
}
]
}
]
},
{
"name" : "riskText",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "risk",
"element" : "text",
"transform" : "copy",
"parameter" : [
{
"valueString" : "No risk"
}
]
}
]
}
]
}
]
}
]
},
{
"name" : "fallsLow",
"source" : [
{
"context" : "obs",
"condition" : "(value.ofType(integer) >= 25) and (value.ofType(integer) <= 50)"
}
],
"target" : [
{
"context" : "bundle",
"element" : "entry",
"variable" : "entry"
},
{
"context" : "entry",
"element" : "resource",
"variable" : "ra",
"transform" : "create",
"parameter" : [
{
"valueString" : "RiskAssessment"
}
]
}
],
"rule" : [
{
"name" : "responseTags",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra"
}
],
"dependent" : [
{
"name" : "CopyResponseTags",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "ra"
}
]
}
]
},
{
"name" : "riskBase",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra"
},
{
"context" : "entry"
}
],
"dependent" : [
{
"name" : "BuildRiskBase",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "obs"
},
{
"valueId" : "ra"
},
{
"valueId" : "entry"
}
]
}
]
},
{
"name" : "riskCode",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra"
}
],
"dependent" : [
{
"name" : "SetFallsRiskCode",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "ra"
}
]
}
]
},
{
"name" : "prediction",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra",
"element" : "prediction",
"variable" : "pred"
}
],
"rule" : [
{
"name" : "qualitativeRisk",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "pred",
"element" : "qualitativeRisk",
"variable" : "risk"
}
],
"rule" : [
{
"name" : "riskCoding",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "risk",
"element" : "coding",
"variable" : "coding"
}
],
"rule" : [
{
"name" : "riskSystem",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://terminology.hl7.org/CodeSystem/risk-probability"
}
]
}
]
},
{
"name" : "riskCode",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "low"
}
]
}
]
},
{
"name" : "riskDisplay",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "display",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Low likelihood"
}
]
}
]
}
]
},
{
"name" : "riskText",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "risk",
"element" : "text",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Low risk"
}
]
}
]
}
]
}
]
}
]
},
{
"name" : "fallsHigh",
"source" : [
{
"context" : "obs",
"condition" : "value.ofType(integer) >= 51"
}
],
"target" : [
{
"context" : "bundle",
"element" : "entry",
"variable" : "entry"
},
{
"context" : "entry",
"element" : "resource",
"variable" : "ra",
"transform" : "create",
"parameter" : [
{
"valueString" : "RiskAssessment"
}
]
}
],
"rule" : [
{
"name" : "responseTags",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra"
}
],
"dependent" : [
{
"name" : "CopyResponseTags",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "ra"
}
]
}
]
},
{
"name" : "riskBase",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra"
},
{
"context" : "entry"
}
],
"dependent" : [
{
"name" : "BuildRiskBase",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "obs"
},
{
"valueId" : "ra"
},
{
"valueId" : "entry"
}
]
}
]
},
{
"name" : "riskCode",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra"
}
],
"dependent" : [
{
"name" : "SetFallsRiskCode",
"parameter" : [
{
"valueId" : "qr"
},
{
"valueId" : "ra"
}
]
}
]
},
{
"name" : "prediction",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra",
"element" : "prediction",
"variable" : "pred"
}
],
"rule" : [
{
"name" : "qualitativeRisk",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "pred",
"element" : "qualitativeRisk",
"variable" : "risk"
}
],
"rule" : [
{
"name" : "riskCoding",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "risk",
"element" : "coding",
"variable" : "coding"
}
],
"rule" : [
{
"name" : "riskSystem",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://terminology.hl7.org/CodeSystem/risk-probability"
}
]
}
]
},
{
"name" : "riskCode",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "high"
}
]
}
]
},
{
"name" : "riskDisplay",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "display",
"transform" : "copy",
"parameter" : [
{
"valueString" : "High likelihood"
}
]
}
]
}
]
},
{
"name" : "riskText",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "risk",
"element" : "text",
"transform" : "copy",
"parameter" : [
{
"valueString" : "High risk"
}
]
}
]
}
]
}
]
}
]
}
]
},
{
"name" : "SetFallsRiskCode",
"input" : [
{
"name" : "qr",
"type" : "QR",
"mode" : "source"
},
{
"name" : "ra",
"type" : "RiskAssessment",
"mode" : "target"
}
],
"rule" : [
{
"name" : "code",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra",
"element" : "code",
"variable" : "code"
}
],
"rule" : [
{
"name" : "codeCoding",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "code",
"element" : "coding",
"variable" : "coding"
}
],
"rule" : [
{
"name" : "codeSystem",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://loinc.org"
}
]
}
]
},
{
"name" : "codeCode",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "59461-4"
}
]
}
]
},
{
"name" : "codeDisplay",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "display",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Fall risk level [Morse Fall Scale]"
}
]
}
]
}
]
}
]
}
]
},
{
"name" : "BuildObsBase",
"documentation" : "─────────────────────────────────────────────────────────────────────────────\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.",
"input" : [
{
"name" : "qr",
"type" : "QR",
"mode" : "source"
},
{
"name" : "obs",
"type" : "Observation",
"mode" : "target"
},
{
"name" : "entry",
"mode" : "target"
}
],
"rule" : [
{
"name" : "idAndFullUrl",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "obs",
"element" : "id",
"transform" : "uuid"
}
],
"dependent" : [
{
"name" : "SetObservationFullUrl",
"parameter" : [
{
"valueId" : "obs"
},
{
"valueId" : "entry"
}
]
}
]
},
{
"name" : "entryRequest",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "entry",
"element" : "request",
"variable" : "request"
}
],
"rule" : [
{
"name" : "requestMethod",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "request",
"element" : "method",
"transform" : "copy",
"parameter" : [
{
"valueString" : "POST"
}
]
}
]
},
{
"name" : "requestUrl",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "request",
"element" : "url",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Observation"
}
]
}
]
}
]
},
{
"name" : "status",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "obs",
"element" : "status",
"transform" : "copy",
"parameter" : [
{
"valueString" : "final"
}
]
}
]
},
{
"name" : "subject",
"source" : [
{
"context" : "qr",
"element" : "subject",
"variable" : "s",
"condition" : "(reference.exists() and (reference.startsWith('Patient/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient')))"
}
],
"target" : [
{
"context" : "obs",
"element" : "subject",
"transform" : "copy",
"parameter" : [
{
"valueId" : "s"
}
]
}
]
},
{
"name" : "encounter",
"source" : [
{
"context" : "qr",
"element" : "encounter",
"variable" : "e",
"condition" : "(reference.exists() and (reference.startsWith('Encounter/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Encounter')))"
}
],
"target" : [
{
"context" : "obs",
"element" : "encounter",
"transform" : "copy",
"parameter" : [
{
"valueId" : "e"
}
]
}
]
},
{
"name" : "effective",
"source" : [
{
"context" : "qr",
"element" : "authored",
"variable" : "t"
}
],
"target" : [
{
"context" : "obs",
"element" : "effective",
"transform" : "copy",
"parameter" : [
{
"valueId" : "t"
}
]
}
]
},
{
"name" : "performerFromSource",
"source" : [
{
"context" : "qr",
"element" : "source",
"variable" : "src",
"condition" : "(reference.exists() and (reference.startsWith('Organization/') or reference.startsWith('Patient/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Organization') or ('/' + type).endsWith('/Patient')))"
}
],
"target" : [
{
"context" : "obs",
"element" : "performer",
"transform" : "copy",
"parameter" : [
{
"valueId" : "src"
}
]
}
]
},
{
"name" : "performerFallback",
"source" : [
{
"context" : "qr",
"condition" : "source.where(((reference.exists() and (reference.startsWith('Organization/') or reference.startsWith('Patient/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Organization') or ('/' + type).endsWith('/Patient'))))).exists().not()"
}
],
"rule" : [
{
"name" : "performerFromAuthor",
"source" : [
{
"context" : "qr",
"element" : "author",
"variable" : "a",
"condition" : "(reference.exists() and (reference.startsWith('Organization/') or reference.startsWith('Patient/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Organization') or ('/' + type).endsWith('/Patient')))"
}
],
"target" : [
{
"context" : "obs",
"element" : "performer",
"transform" : "copy",
"parameter" : [
{
"valueId" : "a"
}
]
}
]
}
]
},
{
"name" : "linkQuestionnaireResponse",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "obs",
"element" : "derivedFrom",
"variable" : "ref",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
}
],
"rule" : [
{
"name" : "derivedFromRef",
"source" : [
{
"context" : "qr",
"element" : "id",
"variable" : "qid"
}
],
"target" : [
{
"context" : "ref",
"element" : "reference",
"transform" : "copy",
"parameter" : [
{
"valueId" : "qid"
}
]
}
]
}
]
}
]
},
{
"name" : "BuildRiskBase",
"documentation" : "The RiskAssessment stands on two things: the response that was filled in and\r\nthe Observation that holds the number. Both go in basis, which is what the\r\nSGHI RiskAssessment profile binds to a QuestionnaireResponse.",
"input" : [
{
"name" : "qr",
"type" : "QR",
"mode" : "source"
},
{
"name" : "obs",
"type" : "Observation",
"mode" : "source"
},
{
"name" : "ra",
"type" : "RiskAssessment",
"mode" : "target"
},
{
"name" : "entry",
"mode" : "target"
}
],
"rule" : [
{
"name" : "idAndFullUrl",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra",
"element" : "id",
"transform" : "uuid"
}
],
"dependent" : [
{
"name" : "SetRiskAssessmentFullUrl",
"parameter" : [
{
"valueId" : "ra"
},
{
"valueId" : "entry"
}
]
}
]
},
{
"name" : "entryRequest",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "entry",
"element" : "request",
"variable" : "request"
}
],
"rule" : [
{
"name" : "requestMethod",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "request",
"element" : "method",
"transform" : "copy",
"parameter" : [
{
"valueString" : "POST"
}
]
}
]
},
{
"name" : "requestUrl",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "request",
"element" : "url",
"transform" : "copy",
"parameter" : [
{
"valueString" : "RiskAssessment"
}
]
}
]
}
]
},
{
"name" : "status",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra",
"element" : "status",
"transform" : "copy",
"parameter" : [
{
"valueString" : "final"
}
]
}
]
},
{
"name" : "subject",
"source" : [
{
"context" : "qr",
"element" : "subject",
"variable" : "s",
"condition" : "(reference.exists() and (reference.startsWith('Patient/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient')))"
}
],
"target" : [
{
"context" : "ra",
"element" : "subject",
"transform" : "copy",
"parameter" : [
{
"valueId" : "s"
}
]
}
]
},
{
"name" : "encounter",
"source" : [
{
"context" : "qr",
"element" : "encounter",
"variable" : "e",
"condition" : "(reference.exists() and (reference.startsWith('Encounter/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Encounter')))"
}
],
"target" : [
{
"context" : "ra",
"element" : "encounter",
"transform" : "copy",
"parameter" : [
{
"valueId" : "e"
}
]
}
]
},
{
"name" : "occurrence",
"source" : [
{
"context" : "qr",
"element" : "authored",
"variable" : "t"
}
],
"target" : [
{
"context" : "ra",
"element" : "occurrence",
"transform" : "copy",
"parameter" : [
{
"valueId" : "t"
}
]
}
]
},
{
"name" : "performerFromAuthor",
"source" : [
{
"context" : "qr",
"element" : "author",
"variable" : "a",
"condition" : "(reference.exists() and (reference.startsWith('Patient/') or reference.startsWith('Practitioner/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/Practitioner')))"
}
],
"target" : [
{
"context" : "ra",
"element" : "performer",
"transform" : "copy",
"parameter" : [
{
"valueId" : "a"
}
]
}
]
},
{
"name" : "performerFallback",
"source" : [
{
"context" : "qr",
"condition" : "author.where(((reference.exists() and (reference.startsWith('Patient/') or reference.startsWith('Practitioner/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/Practitioner'))))).exists().not()"
}
],
"rule" : [
{
"name" : "performerFromSource",
"source" : [
{
"context" : "qr",
"element" : "source",
"variable" : "src",
"condition" : "(reference.exists() and (reference.startsWith('Patient/') or reference.startsWith('Practitioner/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/Practitioner')))"
}
],
"target" : [
{
"context" : "ra",
"element" : "performer",
"transform" : "copy",
"parameter" : [
{
"valueId" : "src"
}
]
}
]
}
]
},
{
"name" : "basisResponse",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "ra",
"element" : "basis",
"variable" : "qref",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
}
],
"rule" : [
{
"name" : "basisQuestionnaireResponse",
"source" : [
{
"context" : "qr",
"element" : "id",
"variable" : "qid"
}
],
"target" : [
{
"context" : "qref",
"element" : "reference",
"transform" : "copy",
"parameter" : [
{
"valueId" : "qid"
}
]
}
]
}
]
},
{
"name" : "basisObservation",
"source" : [
{
"context" : "obs",
"element" : "id",
"variable" : "oid"
}
],
"target" : [
{
"context" : "ra",
"element" : "basis",
"variable" : "oref",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
}
],
"rule" : [
{
"name" : "basisObservationRef",
"source" : [
{
"context" : "oid"
}
],
"target" : [
{
"context" : "oref",
"element" : "reference",
"transform" : "append",
"parameter" : [
{
"valueString" : "Observation/"
},
{
"valueId" : "oid"
}
]
}
]
}
]
}
]
},
{
"name" : "SetComponentCodedValue",
"input" : [
{
"name" : "it",
"mode" : "source"
},
{
"name" : "comp",
"mode" : "target"
}
],
"rule" : [
{
"name" : "componentAnswer",
"source" : [
{
"context" : "it",
"element" : "answer",
"listMode" : "first",
"variable" : "a"
}
],
"rule" : [
{
"name" : "codedValue",
"source" : [
{
"context" : "a",
"element" : "value",
"variable" : "cv"
}
],
"target" : [
{
"context" : "comp",
"element" : "value",
"variable" : "cc",
"transform" : "create",
"parameter" : [
{
"valueString" : "CodeableConcept"
}
]
}
],
"rule" : [
{
"name" : "valueCoding",
"source" : [
{
"context" : "cv"
}
],
"target" : [
{
"context" : "cc",
"element" : "coding",
"transform" : "copy",
"parameter" : [
{
"valueId" : "cv"
}
]
}
]
},
{
"name" : "valueText",
"source" : [
{
"context" : "cv",
"element" : "display",
"variable" : "d"
}
],
"target" : [
{
"context" : "cc",
"element" : "text",
"transform" : "copy",
"parameter" : [
{
"valueId" : "d"
}
]
}
]
}
]
}
]
}
]
},
{
"name" : "SetSurveyCategory",
"input" : [
{
"name" : "qr",
"type" : "QR",
"mode" : "source"
},
{
"name" : "obs",
"type" : "Observation",
"mode" : "target"
}
],
"rule" : [
{
"name" : "category",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "obs",
"element" : "category",
"variable" : "cat"
}
],
"rule" : [
{
"name" : "categoryCoding",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "cat",
"element" : "coding",
"variable" : "coding"
}
],
"rule" : [
{
"name" : "categorySystem",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://terminology.hl7.org/CodeSystem/observation-category"
}
]
}
]
},
{
"name" : "categoryCode",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "survey"
}
]
}
]
},
{
"name" : "categoryDisplay",
"source" : [
{
"context" : "qr"
}
],
"target" : [
{
"context" : "coding",
"element" : "display",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Survey"
}
]
}
]
}
]
}
]
}
]
},
{
"name" : "SetObservationFullUrl",
"input" : [
{
"name" : "obs",
"type" : "Observation",
"mode" : "source"
},
{
"name" : "entry",
"mode" : "target"
}
],
"rule" : [
{
"name" : "assignFullUrl",
"source" : [
{
"context" : "obs",
"element" : "id",
"variable" : "id"
}
],
"target" : [
{
"context" : "entry",
"element" : "fullUrl",
"transform" : "append",
"parameter" : [
{
"valueString" : "https://fhir.slade360.co.ke/fhir/Observation/"
},
{
"valueId" : "id"
}
]
}
]
}
]
},
{
"name" : "SetRiskAssessmentFullUrl",
"input" : [
{
"name" : "ra",
"type" : "RiskAssessment",
"mode" : "source"
},
{
"name" : "entry",
"mode" : "target"
}
],
"rule" : [
{
"name" : "assignFullUrl",
"source" : [
{
"context" : "ra",
"element" : "id",
"variable" : "id"
}
],
"target" : [
{
"context" : "entry",
"element" : "fullUrl",
"transform" : "append",
"parameter" : [
{
"valueString" : "https://fhir.slade360.co.ke/fhir/RiskAssessment/"
},
{
"valueId" : "id"
}
]
}
]
}
]
},
{
"name" : "SetCarePlanFullUrl",
"input" : [
{
"name" : "plan",
"type" : "CarePlan",
"mode" : "source"
},
{
"name" : "entry",
"mode" : "target"
}
],
"rule" : [
{
"name" : "assignFullUrl",
"source" : [
{
"context" : "plan",
"element" : "id",
"variable" : "id"
}
],
"target" : [
{
"context" : "entry",
"element" : "fullUrl",
"transform" : "append",
"parameter" : [
{
"valueString" : "https://fhir.slade360.co.ke/fhir/CarePlan/"
},
{
"valueId" : "id"
}
]
}
]
}
]
},
{
"name" : "CopyResponseTags",
"documentation" : "── Tenancy ──────────────────────────────────────────────────────────────────\r\nWhose this is. The platform says which tenant a response belongs to with a\r\ntag on the response, and every tag the response carries is copied onto\r\neverything this map creates, as it is. Copied rather than named here, so the\r\nmap never has to know which tenant it is running for, nor which system the\r\ntag is under: that system has moved more than once.",
"input" : [
{
"name" : "qr",
"type" : "QR",
"mode" : "source"
},
{
"name" : "r",
"mode" : "target"
}
],
"rule" : [
{
"name" : "tenantTags",
"source" : [
{
"context" : "qr",
"element" : "meta",
"variable" : "qm"
}
],
"rule" : [
{
"name" : "copyTag",
"source" : [
{
"context" : "qm",
"element" : "tag",
"variable" : "qt"
}
],
"target" : [
{
"context" : "r",
"element" : "meta",
"variable" : "m"
},
{
"context" : "m",
"element" : "tag",
"transform" : "copy",
"parameter" : [
{
"valueId" : "qt"
}
]
}
]
}
]
}
]
}
]
}