{
  "resourceType" : "StructureMap",
  "id" : "ExtractInpatientMentalHealthRiskAssessment",
  "text" : {
    "status" : "generated",
    "div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p class=\"res-header-id\"><b>Generated Narrative: StructureMap ExtractInpatientMentalHealthRiskAssessment</b></p><a name=\"ExtractInpatientMentalHealthRiskAssessment\"> </a><a name=\"hcExtractInpatientMentalHealthRiskAssessment\"> </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/ExtractInpatientMentalHealthRiskAssessment'</span>\r\n<span style=\"color: #cc00cc\">/// <b>name</b> = </span><span style=\"color: blue\">'ExtractInpatientMentalHealthRiskAssessment'</span>\r\n<span style=\"color: #cc00cc\">/// <b>title</b> = </span><span style=\"color: blue\">'Inpatient Mental Health 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\">'Mood and capacity become Observations, the risk of self-harm becomes a RiskAssessment carrying what the patient said as its note, and a safeguarding concern becomes a Flag on the patient. This is the one instrument here that is not scored: the band comes from which of four answers was picked, not from arithmetic, so each answer is banded explicitly. The answer\\'s own coding and wording ride along in qualitativeRisk, so a reader never has to infer what was said from a risk tier.'</span>\r\n\r\n<b>uses</b><span style=\"color: navy\"> &quot;</span><a href=\"http://hl7.org/fhir/R5/questionnaireresponse.html\" title=\"QuestionnaireResponse\">http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse</a><span style=\"color: navy\">&quot; </span><b>alias </b>QR <b>as </b><b>source</b>\r\n<b>uses</b><span style=\"color: navy\"> &quot;</span><a href=\"http://hl7.org/fhir/R5/bundle.html\" title=\"Bundle\">http://hl7.org/fhir/StructureDefinition/Bundle</a><span style=\"color: navy\">&quot; </span><b>alias </b>Bundle <b>as </b><b>target</b>\r\n<b>uses</b><span style=\"color: navy\"> &quot;</span><a href=\"http://hl7.org/fhir/R5/observation.html\" title=\"Observation\">http://hl7.org/fhir/StructureDefinition/Observation</a><span style=\"color: navy\">&quot; </span><b>alias </b>Observation <b>as </b><b>target</b>\r\n<b>uses</b><span style=\"color: navy\"> &quot;</span><a href=\"http://hl7.org/fhir/R5/riskassessment.html\" title=\"RiskAssessment\">http://hl7.org/fhir/StructureDefinition/RiskAssessment</a><span style=\"color: navy\">&quot; </span><b>alias </b>RiskAssessment <b>as </b><b>target</b>\r\n<b>uses</b><span style=\"color: navy\"> &quot;</span><a href=\"http://hl7.org/fhir/R5/flag.html\" title=\"Flag\">http://hl7.org/fhir/StructureDefinition/Flag</a><span style=\"color: navy\">&quot; </span><b>alias </b>Flag <b>as </b><b>target</b>\r\n\r\n<b>group </b>ExtractInpatientMentalHealthRiskAssessment<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">qr</span><span style=\"color: navy\"> : </span>QR, <b>target</b> <span style=\"color: maroon\">bundle</span><span style=\"color: navy\"> : </span>Bundle<span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span>  qr<span style=\"color: navy\"><b> -&gt; </b></span>bundle.type = <span style=\"color: blue\">'transaction'</span> <i>&quot;setBundleType&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">── Mood and affect ────────────────────────────────────────────────────────</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">No LOINC concept for the mood and affect line of a mental state</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">examination, so a local code. See SGHIInpatientClinicalConceptCodeSystem.</span>\r\n  qr.item<b> as </b><span style=\"color: maroon\">itM</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'mood') 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> -&gt; </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entryM</span><span style=\"color: navy\">, </span> entryM.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\">obsM</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        qr<span style=\"color: navy\"><b> -&gt; </b></span> obsM<span style=\"color: navy\">, </span> entryM<b> then </b>BuildObsBase<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obsM</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entryM</span><span style=\"color: navy\">)</span> <i>&quot;moodBase&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>obsM<b> then </b>SetExamCategory<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obsM</span><span style=\"color: navy\">)</span> <i>&quot;moodCategory&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>obsM.code<b> as </b><span style=\"color: maroon\">code</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          qr<span style=\"color: navy\"><b> -&gt; </b></span>code.coding<b> as </b><span style=\"color: maroon\">coding</span><b> then</b><span style=\"color: navy\"> {\r\n</span>            qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.system = <span style=\"color: blue\">'https://fhir.slade360.co.ke/fhir/CodeSystem/inpatient-clinical-concept-codesystem'</span> <i>&quot;codeSystem&quot;</i><span style=\"color: navy\">;</span>\r\n            qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.code = <span style=\"color: blue\">'mood-and-affect'</span> <i>&quot;codeCode&quot;</i><span style=\"color: navy\">;</span>\r\n            qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.display = <span style=\"color: blue\">'Mood and affect'</span> <i>&quot;codeDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n          <span style=\"color: navy\">}</span> <i>&quot;codeCoding&quot;</i><span style=\"color: navy\">;</span>\r\n          qr<span style=\"color: navy\"><b> -&gt; </b></span>code.text = <span style=\"color: blue\">'Mood and affect'</span> <i>&quot;codeText&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;moodCode&quot;</i><span style=\"color: navy\">;</span>\r\n        aM.value<b> as </b><span style=\"color: maroon\">v</span><span style=\"color: navy\"><b> -&gt; </b></span>obsM.value = <span style=\"color: maroon\">v</span> <i>&quot;moodValue&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;moodObservation&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;moodAnswer&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;moodRule&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">── Capacity to consent ────────────────────────────────────────────────────</span>\r\n  qr.item<b> as </b><span style=\"color: maroon\">itC</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'capacity') and answer.value.exists()<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    itC.answer first<b> as </b><span style=\"color: maroon\">aC</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      aC<span style=\"color: navy\"><b> -&gt; </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entryC</span><span style=\"color: navy\">, </span> entryC.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Observation'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">obsC</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        qr<span style=\"color: navy\"><b> -&gt; </b></span> obsC<span style=\"color: navy\">, </span> entryC<b> then </b>BuildObsBase<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obsC</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entryC</span><span style=\"color: navy\">)</span> <i>&quot;capacityBase&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>obsC<b> then </b>SetExamCategory<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obsC</span><span style=\"color: navy\">)</span> <i>&quot;capacityCategory&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>obsC.code<b> as </b><span style=\"color: maroon\">code</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          qr<span style=\"color: navy\"><b> -&gt; </b></span>code.coding<b> as </b><span style=\"color: maroon\">coding</span><b> then</b><span style=\"color: navy\"> {\r\n</span>            qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.system = <span style=\"color: blue\">'https://fhir.slade360.co.ke/fhir/CodeSystem/inpatient-clinical-concept-codesystem'</span> <i>&quot;codeSystem&quot;</i><span style=\"color: navy\">;</span>\r\n            qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.code = <span style=\"color: blue\">'capacity-to-consent'</span> <i>&quot;codeCode&quot;</i><span style=\"color: navy\">;</span>\r\n            qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.display = <span style=\"color: blue\">'Capacity to consent'</span> <i>&quot;codeDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n          <span style=\"color: navy\">}</span> <i>&quot;codeCoding&quot;</i><span style=\"color: navy\">;</span>\r\n          qr<span style=\"color: navy\"><b> -&gt; </b></span>code.text = <span style=\"color: blue\">'Capacity to consent'</span> <i>&quot;codeText&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;capacityCode&quot;</i><span style=\"color: navy\">;</span>\r\n        aC<span style=\"color: navy\"><b> -&gt; </b></span>obsC<b> then </b>SetCodedValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">aC</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obsC</span><span style=\"color: navy\">)</span> <i>&quot;capacityValue&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;capacityObservation&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;capacityAnswer&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;capacityRule&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">── Risk of self-harm ──────────────────────────────────────────────────────</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">Four answers, four bands. Passive ideation is banded `moderate` rather than</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">`low`: on a ward, thoughts of self-harm without a plan still warrant</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">observation, and the cost of over-flagging here is smaller than the cost of</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">under-flagging.</span>\r\n  qr.item<b> as </b><span style=\"color: maroon\">itS</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'selfHarm') and (answer.value.ofType(Coding).code = 'self-harm-none')<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -&gt; </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'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> -&gt; </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\">ra</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>&quot;riskBase&quot;</i><span style=\"color: navy\">;</span>\r\n    qr<span style=\"color: navy\"><b> -&gt; </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> -&gt; </b></span>pred.outcome<b> as </b><span style=\"color: maroon\">outcome</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        qr<span style=\"color: navy\"><b> -&gt; </b></span>outcome.text = <span style=\"color: blue\">'Self-harm'</span> <i>&quot;outcomeText&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;outcome&quot;</i><span style=\"color: navy\">;</span>\r\n      qr<span style=\"color: navy\"><b> -&gt; </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> -&gt; </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> -&gt; </b></span>coding.system = <span style=\"color: blue\">'http://terminology.hl7.org/CodeSystem/risk-probability'</span> <i>&quot;riskSystem&quot;</i><span style=\"color: navy\">;</span>\r\n          qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.code = <span style=\"color: blue\">'negligible'</span> <i>&quot;riskCode&quot;</i><span style=\"color: navy\">;</span>\r\n          qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.display = <span style=\"color: blue\">'Negligible likelihood'</span> <i>&quot;riskDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;riskCoding&quot;</i><span style=\"color: navy\">;</span>\r\n        itS<span style=\"color: navy\"><b> -&gt; </b></span>risk<b> then </b>AddAnswerCodingAndText<span style=\"color: navy\">(</span><span style=\"color: maroon\">itS</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">risk</span><span style=\"color: navy\">)</span> <i>&quot;answerCoding&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;qualitativeRisk&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;prediction&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;selfHarmNoneRule&quot;</i><span style=\"color: navy\">;</span>\r\n  qr.item<b> as </b><span style=\"color: maroon\">itS</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'selfHarm') and (answer.value.ofType(Coding).code = 'self-harm-passive')<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -&gt; </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'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> -&gt; </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\">ra</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>&quot;riskBase&quot;</i><span style=\"color: navy\">;</span>\r\n    qr<span style=\"color: navy\"><b> -&gt; </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> -&gt; </b></span>pred.outcome<b> as </b><span style=\"color: maroon\">outcome</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        qr<span style=\"color: navy\"><b> -&gt; </b></span>outcome.text = <span style=\"color: blue\">'Self-harm'</span> <i>&quot;outcomeText&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;outcome&quot;</i><span style=\"color: navy\">;</span>\r\n      qr<span style=\"color: navy\"><b> -&gt; </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> -&gt; </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> -&gt; </b></span>coding.system = <span style=\"color: blue\">'http://terminology.hl7.org/CodeSystem/risk-probability'</span> <i>&quot;riskSystem&quot;</i><span style=\"color: navy\">;</span>\r\n          qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.code = <span style=\"color: blue\">'moderate'</span> <i>&quot;riskCode&quot;</i><span style=\"color: navy\">;</span>\r\n          qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.display = <span style=\"color: blue\">'Moderate likelihood'</span> <i>&quot;riskDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;riskCoding&quot;</i><span style=\"color: navy\">;</span>\r\n        itS<span style=\"color: navy\"><b> -&gt; </b></span>risk<b> then </b>AddAnswerCodingAndText<span style=\"color: navy\">(</span><span style=\"color: maroon\">itS</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">risk</span><span style=\"color: navy\">)</span> <i>&quot;answerCoding&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;qualitativeRisk&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;prediction&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;selfHarmPassiveRule&quot;</i><span style=\"color: navy\">;</span>\r\n  qr.item<b> as </b><span style=\"color: maroon\">itS</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'selfHarm') and (answer.value.ofType(Coding).code = 'self-harm-active-plan')<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -&gt; </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'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> -&gt; </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\">ra</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>&quot;riskBase&quot;</i><span style=\"color: navy\">;</span>\r\n    qr<span style=\"color: navy\"><b> -&gt; </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> -&gt; </b></span>pred.outcome<b> as </b><span style=\"color: maroon\">outcome</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        qr<span style=\"color: navy\"><b> -&gt; </b></span>outcome.text = <span style=\"color: blue\">'Self-harm'</span> <i>&quot;outcomeText&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;outcome&quot;</i><span style=\"color: navy\">;</span>\r\n      qr<span style=\"color: navy\"><b> -&gt; </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> -&gt; </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> -&gt; </b></span>coding.system = <span style=\"color: blue\">'http://terminology.hl7.org/CodeSystem/risk-probability'</span> <i>&quot;riskSystem&quot;</i><span style=\"color: navy\">;</span>\r\n          qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.code = <span style=\"color: blue\">'high'</span> <i>&quot;riskCode&quot;</i><span style=\"color: navy\">;</span>\r\n          qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.display = <span style=\"color: blue\">'High likelihood'</span> <i>&quot;riskDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;riskCoding&quot;</i><span style=\"color: navy\">;</span>\r\n        itS<span style=\"color: navy\"><b> -&gt; </b></span>risk<b> then </b>AddAnswerCodingAndText<span style=\"color: navy\">(</span><span style=\"color: maroon\">itS</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">risk</span><span style=\"color: navy\">)</span> <i>&quot;answerCoding&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;qualitativeRisk&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;prediction&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;selfHarmActivePlanRule&quot;</i><span style=\"color: navy\">;</span>\r\n  qr.item<b> as </b><span style=\"color: maroon\">itS</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'selfHarm') and (answer.value.ofType(Coding).code = 'self-harm-recent-act')<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -&gt; </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'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> -&gt; </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\">ra</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>&quot;riskBase&quot;</i><span style=\"color: navy\">;</span>\r\n    qr<span style=\"color: navy\"><b> -&gt; </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> -&gt; </b></span>pred.outcome<b> as </b><span style=\"color: maroon\">outcome</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        qr<span style=\"color: navy\"><b> -&gt; </b></span>outcome.text = <span style=\"color: blue\">'Self-harm'</span> <i>&quot;outcomeText&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;outcome&quot;</i><span style=\"color: navy\">;</span>\r\n      qr<span style=\"color: navy\"><b> -&gt; </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> -&gt; </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> -&gt; </b></span>coding.system = <span style=\"color: blue\">'http://terminology.hl7.org/CodeSystem/risk-probability'</span> <i>&quot;riskSystem&quot;</i><span style=\"color: navy\">;</span>\r\n          qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.code = <span style=\"color: blue\">'high'</span> <i>&quot;riskCode&quot;</i><span style=\"color: navy\">;</span>\r\n          qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.display = <span style=\"color: blue\">'High likelihood'</span> <i>&quot;riskDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;riskCoding&quot;</i><span style=\"color: navy\">;</span>\r\n        itS<span style=\"color: navy\"><b> -&gt; </b></span>risk<b> then </b>AddAnswerCodingAndText<span style=\"color: navy\">(</span><span style=\"color: maroon\">itS</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">risk</span><span style=\"color: navy\">)</span> <i>&quot;answerCoding&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;qualitativeRisk&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;prediction&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;selfHarmRecentActRule&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">── Safeguarding ───────────────────────────────────────────────────────────</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">Flag has no element that points back at the response it came from, so this</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">is the one resource the map emits with no link home. Category `safety` is</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">what makes it show up wherever the ward surfaces safety flags.</span>\r\n  qr.item<b> as </b><span style=\"color: maroon\">itSg</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'safeguarding') and answer.value.exists()<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    itSg.answer first<b> as </b><span style=\"color: maroon\">aSg</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      aSg<span style=\"color: navy\"><b> -&gt; </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\">'Flag'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">flag</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        qr<span style=\"color: navy\"><b> -&gt; </b></span>flag.id = <b>uuid</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> then </b>SetFlagFullUrl<span style=\"color: navy\">(</span><span style=\"color: maroon\">flag</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entryF</span><span style=\"color: navy\">)</span> <i>&quot;idAndFullUrl&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>entryF.request<b> as </b><span style=\"color: maroon\">request</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          qr<span style=\"color: navy\"><b> -&gt; </b></span>request.method = <span style=\"color: blue\">'POST'</span> <i>&quot;requestMethod&quot;</i><span style=\"color: navy\">;</span>\r\n          qr<span style=\"color: navy\"><b> -&gt; </b></span>request.url = <span style=\"color: blue\">'Flag'</span> <i>&quot;requestUrl&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;entryRequest&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>flag.status = <span style=\"color: blue\">'active'</span> <i>&quot;status&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>flag.category<b> as </b><span style=\"color: maroon\">cat</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          qr<span style=\"color: navy\"><b> -&gt; </b></span>cat.coding<b> as </b><span style=\"color: maroon\">coding</span><b> then</b><span style=\"color: navy\"> {\r\n</span>            qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.system = <span style=\"color: blue\">'http://terminology.hl7.org/CodeSystem/flag-category'</span> <i>&quot;categorySystem&quot;</i><span style=\"color: navy\">;</span>\r\n            qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.code = <span style=\"color: blue\">'safety'</span> <i>&quot;categoryCode&quot;</i><span style=\"color: navy\">;</span>\r\n            qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.display = <span style=\"color: blue\">'Safety'</span> <i>&quot;categoryDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n          <span style=\"color: navy\">}</span> <i>&quot;categoryCoding&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;category&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">// </span><span style=\"color: green\">The concern as written. Flag.code is 1..1 and there is no code system</span>\r\n        <span style=\"color: navy\">// </span><span style=\"color: green\">for &quot;what a nurse is worried about&quot;, so the wording is the concept.</span>\r\n        aSg.value<b> as </b><span style=\"color: maroon\">v</span><span style=\"color: navy\"><b> -&gt; </b></span>flag.code<b> as </b><span style=\"color: maroon\">code</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          v<span style=\"color: navy\"><b> -&gt; </b></span>code.text = <span style=\"color: maroon\">v</span> <i>&quot;codeText&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;flagCode&quot;</i><span style=\"color: navy\">;</span>\r\n        qr.subject<b> as </b><span style=\"color: maroon\">s</span><span style=\"color: navy\"><b> -&gt; </b></span>flag.subject = <span style=\"color: maroon\">s</span><span style=\"color: navy\">;</span>\r\n        qr.encounter<b> as </b><span style=\"color: maroon\">e</span><span style=\"color: navy\"><b> -&gt; </b></span>flag.encounter = <span style=\"color: maroon\">e</span><span style=\"color: navy\">;</span>\r\n        qr.authored<b> as </b><span style=\"color: maroon\">t</span><span style=\"color: navy\"><b> -&gt; </b></span>flag.period<b> as </b><span style=\"color: maroon\">period</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          t<span style=\"color: navy\"><b> -&gt; </b></span>period.start = <span style=\"color: maroon\">t</span> <i>&quot;periodStart&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;period&quot;</i><span style=\"color: navy\">;</span>\r\n        qr.author<b> as </b><span style=\"color: maroon\">a</span><span style=\"color: navy\"><b> -&gt; </b></span>flag.author = <span style=\"color: maroon\">a</span> <i>&quot;authorFromAuthor&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<b> where </b><span style=\"color: navy\">(</span>author.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><span style=\"color: navy\"><b> -&gt; </b></span>flag.author = <span style=\"color: maroon\">src</span> <i>&quot;authorFromSource&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;authorFallback&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;flag&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;safeguardingAnswer&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;safeguardingRule&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">The chosen answer, coding and wording intact, alongside the risk-probability</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">code. risk-probability has five concepts and the form has four answers, so</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">two of them share `high`; the answer coding is what tells them apart.</span>\r\n<b>group </b>AddAnswerCodingAndText<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">it</span>, <b>target</b> <span style=\"color: maroon\">risk</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span>  it.answer first<b> as </b><span style=\"color: maroon\">a</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    a.value<b> as </b><span style=\"color: maroon\">cv</span><span style=\"color: navy\"><b> -&gt; </b></span>risk.coding = <span style=\"color: maroon\">cv</span> <i>&quot;answerCoding&quot;</i><span style=\"color: navy\">;</span>\r\n    a.value<b> as </b><span style=\"color: maroon\">cv</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      cv.display<b> as </b><span style=\"color: maroon\">d</span><span style=\"color: navy\"><b> -&gt; </b></span>risk.text = <span style=\"color: maroon\">d</span> <i>&quot;answerText&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;answerDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span><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\">Source parameters are left untyped on purpose. Writing `: Element` makes the</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">publisher's StructureMap validator compare QuestionnaireResponse.item against</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">the literal 'Element' and report them as incompatible with each other, which is</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">noise, not a finding. Untyped, it says only that it cannot check the paths.</span>\r\n<b>group </b>BuildObsBase<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">qr</span><span style=\"color: navy\"> : </span>QR, <b>target</b> <span style=\"color: maroon\">obs</span><span style=\"color: navy\"> : </span>Observation, <b>target</b> <span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span>  qr<span style=\"color: navy\"><b> -&gt; </b></span>obs.id = <b>uuid</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> then </b>SetObservationFullUrl<span style=\"color: navy\">(</span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>&quot;idAndFullUrl&quot;</i><span style=\"color: navy\">;</span>\r\n  qr<span style=\"color: navy\"><b> -&gt; </b></span>entry.request<b> as </b><span style=\"color: maroon\">request</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    qr<span style=\"color: navy\"><b> -&gt; </b></span>request.method = <span style=\"color: blue\">'POST'</span> <i>&quot;requestMethod&quot;</i><span style=\"color: navy\">;</span>\r\n    qr<span style=\"color: navy\"><b> -&gt; </b></span>request.url = <span style=\"color: blue\">'Observation'</span> <i>&quot;requestUrl&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;entryRequest&quot;</i><span style=\"color: navy\">;</span>\r\n  qr<span style=\"color: navy\"><b> -&gt; </b></span>obs.status = <span style=\"color: blue\">'final'</span> <i>&quot;status&quot;</i><span style=\"color: navy\">;</span>\r\n  qr.subject<b> as </b><span style=\"color: maroon\">s</span><span style=\"color: navy\"><b> -&gt; </b></span>obs.subject = <span style=\"color: maroon\">s</span><span style=\"color: navy\">;</span>\r\n  qr.encounter<b> as </b><span style=\"color: maroon\">e</span><span style=\"color: navy\"><b> -&gt; </b></span>obs.encounter = <span style=\"color: maroon\">e</span><span style=\"color: navy\">;</span>\r\n  qr.authored<b> as </b><span style=\"color: maroon\">t</span><span style=\"color: navy\"><b> -&gt; </b></span>obs.effective = <span style=\"color: maroon\">t</span> <i>&quot;effective&quot;</i><span style=\"color: navy\">;</span>\r\n  qr.source<b> as </b><span style=\"color: maroon\">src</span><span style=\"color: navy\"><b> -&gt; </b></span>obs.performer = <span style=\"color: maroon\">src</span> <i>&quot;performerFromSource&quot;</i><span style=\"color: navy\">;</span>\r\n  qr<b> where </b><span style=\"color: navy\">(</span>source.exists().not()<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    qr.author<b> as </b><span style=\"color: maroon\">a</span><span style=\"color: navy\"><b> -&gt; </b></span>obs.performer = <span style=\"color: maroon\">a</span> <i>&quot;performerFromAuthor&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;performerFallback&quot;</i><span style=\"color: navy\">;</span>\r\n  qr<span style=\"color: navy\"><b> -&gt; </b></span>obs.derivedFrom = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Reference'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">ref</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    qr.id<b> as </b><span style=\"color: maroon\">qid</span><span style=\"color: navy\"><b> -&gt; </b></span>ref.reference = <span style=\"color: maroon\">qid</span> <i>&quot;derivedFromRef&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;linkQuestionnaireResponse&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">No Observation to stand on here -- the self-harm answer is a judgement, not a</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">measurement -- so basis carries the response alone, and &quot;What was said&quot; comes</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">through as the assessment's note.</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>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> -&gt; </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>&quot;idAndFullUrl&quot;</i><span style=\"color: navy\">;</span>\r\n  qr<span style=\"color: navy\"><b> -&gt; </b></span>entry.request<b> as </b><span style=\"color: maroon\">request</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    qr<span style=\"color: navy\"><b> -&gt; </b></span>request.method = <span style=\"color: blue\">'POST'</span> <i>&quot;requestMethod&quot;</i><span style=\"color: navy\">;</span>\r\n    qr<span style=\"color: navy\"><b> -&gt; </b></span>request.url = <span style=\"color: blue\">'RiskAssessment'</span> <i>&quot;requestUrl&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;entryRequest&quot;</i><span style=\"color: navy\">;</span>\r\n  qr<span style=\"color: navy\"><b> -&gt; </b></span>ra.status = <span style=\"color: blue\">'final'</span> <i>&quot;status&quot;</i><span style=\"color: navy\">;</span>\r\n  qr<span style=\"color: navy\"><b> -&gt; </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> -&gt; </b></span>code.coding<b> as </b><span style=\"color: maroon\">coding</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.system = <span style=\"color: blue\">'https://fhir.slade360.co.ke/fhir/CodeSystem/inpatient-clinical-concept-codesystem'</span> <i>&quot;codeSystem&quot;</i><span style=\"color: navy\">;</span>\r\n      qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.code = <span style=\"color: blue\">'self-harm-risk'</span> <i>&quot;codeCode&quot;</i><span style=\"color: navy\">;</span>\r\n      qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.display = <span style=\"color: blue\">'Risk of self-harm'</span> <i>&quot;codeDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;codeCoding&quot;</i><span style=\"color: navy\">;</span>\r\n    qr<span style=\"color: navy\"><b> -&gt; </b></span>code.text = <span style=\"color: blue\">'Risk of self-harm'</span> <i>&quot;codeText&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;code&quot;</i><span style=\"color: navy\">;</span>\r\n  qr.subject<b> as </b><span style=\"color: maroon\">s</span><span style=\"color: navy\"><b> -&gt; </b></span>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><span style=\"color: navy\"><b> -&gt; </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> -&gt; </b></span>ra.occurrence = <span style=\"color: maroon\">t</span> <i>&quot;occurrence&quot;</i><span style=\"color: navy\">;</span>\r\n  qr.author<b> as </b><span style=\"color: maroon\">a</span><span style=\"color: navy\"><b> -&gt; </b></span>ra.performer = <span style=\"color: maroon\">a</span> <i>&quot;performerFromAuthor&quot;</i><span style=\"color: navy\">;</span>\r\n  qr<b> where </b><span style=\"color: navy\">(</span>author.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><span style=\"color: navy\"><b> -&gt; </b></span>ra.performer = <span style=\"color: maroon\">src</span> <i>&quot;performerFromSource&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;performerFallback&quot;</i><span style=\"color: navy\">;</span>\r\n  qr<span style=\"color: navy\"><b> -&gt; </b></span>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> -&gt; </b></span>qref.reference = <span style=\"color: maroon\">qid</span> <i>&quot;basisQuestionnaireResponse&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;basisResponse&quot;</i><span style=\"color: navy\">;</span>\r\n  qr.item<b> as </b><span style=\"color: maroon\">itD</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'selfHarmDetail') and answer.value.exists()<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    itD.answer first<b> as </b><span style=\"color: maroon\">aD</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      aD.value<b> as </b><span style=\"color: maroon\">v</span><span style=\"color: navy\"><b> -&gt; </b></span>ra.note<b> as </b><span style=\"color: maroon\">note</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        v<span style=\"color: navy\"><b> -&gt; </b></span>note.text = <span style=\"color: maroon\">v</span> <i>&quot;noteText&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;note&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;detailAnswer&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;whatWasSaidRule&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>SetCodedValue<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">a</span>, <b>target</b> <span style=\"color: maroon\">obs</span><span style=\"color: navy\"> : </span>Observation<span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span>  a.value<b> as </b><span style=\"color: maroon\">cv</span><span style=\"color: navy\"><b> -&gt; </b></span>obs.value = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'CodeableConcept'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">cc</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    cv<span style=\"color: navy\"><b> -&gt; </b></span>cc.coding = <span style=\"color: maroon\">cv</span> <i>&quot;valueCoding&quot;</i><span style=\"color: navy\">;</span>\r\n    cv.display<b> as </b><span style=\"color: maroon\">d</span><span style=\"color: navy\"><b> -&gt; </b></span>cc.text = <span style=\"color: maroon\">d</span> <i>&quot;valueText&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;codedValue&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>SetExamCategory<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">qr</span><span style=\"color: navy\"> : </span>QR, <b>target</b> <span style=\"color: maroon\">obs</span><span style=\"color: navy\"> : </span>Observation<span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span>  qr<span style=\"color: navy\"><b> -&gt; </b></span>obs.category<b> as </b><span style=\"color: maroon\">cat</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    qr<span style=\"color: navy\"><b> -&gt; </b></span>cat.coding<b> as </b><span style=\"color: maroon\">coding</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.system = <span style=\"color: blue\">'http://terminology.hl7.org/CodeSystem/observation-category'</span> <i>&quot;categorySystem&quot;</i><span style=\"color: navy\">;</span>\r\n      qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.code = <span style=\"color: blue\">'exam'</span> <i>&quot;categoryCode&quot;</i><span style=\"color: navy\">;</span>\r\n      qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.display = <span style=\"color: blue\">'Exam'</span> <i>&quot;categoryDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;categoryCoding&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;category&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>SetObservationFullUrl<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">obs</span><span style=\"color: navy\"> : </span>Observation, <b>target</b> <span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span>  obs.id<b> as </b><span style=\"color: maroon\">id</span><span style=\"color: navy\"><b> -&gt; </b></span>entry.fullUrl = <b>append</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'https://fhir.slade360.co.ke/fhir/Observation/'</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">id</span><span style=\"color: navy\">)</span> <i>&quot;assignFullUrl&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>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> -&gt; </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>&quot;assignFullUrl&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>SetFlagFullUrl<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">flag</span><span style=\"color: navy\"> : </span>Flag, <b>target</b> <span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span>  flag.id<b> as </b><span style=\"color: maroon\">id</span><span style=\"color: navy\"><b> -&gt; </b></span>entry.fullUrl = <b>append</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'https://fhir.slade360.co.ke/fhir/Flag/'</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">id</span><span style=\"color: navy\">)</span> <i>&quot;assignFullUrl&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span></pre></div>"
  },
  "url" : "https://fhir.slade360.co.ke/fhir/StructureMap/ExtractInpatientMentalHealthRiskAssessment",
  "version" : "0.1.0",
  "name" : "ExtractInpatientMentalHealthRiskAssessment",
  "title" : "Inpatient Mental Health Risk Assessment Extraction",
  "status" : "active",
  "date" : "2026-09-14T06:31:13+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" : "Mood and capacity become Observations, the risk of self-harm becomes a RiskAssessment carrying what the patient said as its note, and a safeguarding concern becomes a Flag on the patient. This is the one instrument here that is not scored: the band comes from which of four answers was picked, not from arithmetic, so each answer is banded explicitly. The answer's own coding and wording ride along in qualitativeRisk, so a reader never has to infer what was said from a risk tier.",
  "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/Flag",
    "mode" : "target",
    "alias" : "Flag"
  }],
  "group" : [{
    "name" : "ExtractInpatientMentalHealthRiskAssessment",
    "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" : "moodRule",
      "source" : [{
        "context" : "qr",
        "element" : "item",
        "variable" : "itM",
        "condition" : "(linkId = 'mood') and answer.value.exists()"
      }],
      "rule" : [{
        "name" : "moodAnswer",
        "source" : [{
          "context" : "itM",
          "element" : "answer",
          "listMode" : "first",
          "variable" : "aM"
        }],
        "rule" : [{
          "name" : "moodObservation",
          "source" : [{
            "context" : "aM"
          }],
          "target" : [{
            "context" : "bundle",
            "element" : "entry",
            "variable" : "entryM"
          },
          {
            "context" : "entryM",
            "element" : "resource",
            "variable" : "obsM",
            "transform" : "create",
            "parameter" : [{
              "valueString" : "Observation"
            }]
          }],
          "rule" : [{
            "name" : "moodBase",
            "source" : [{
              "context" : "qr"
            }],
            "target" : [{
              "context" : "obsM"
            },
            {
              "context" : "entryM"
            }],
            "dependent" : [{
              "name" : "BuildObsBase",
              "parameter" : [{
                "valueId" : "qr"
              },
              {
                "valueId" : "obsM"
              },
              {
                "valueId" : "entryM"
              }]
            }]
          },
          {
            "name" : "moodCategory",
            "source" : [{
              "context" : "qr"
            }],
            "target" : [{
              "context" : "obsM"
            }],
            "dependent" : [{
              "name" : "SetExamCategory",
              "parameter" : [{
                "valueId" : "qr"
              },
              {
                "valueId" : "obsM"
              }]
            }]
          },
          {
            "name" : "moodCode",
            "source" : [{
              "context" : "qr"
            }],
            "target" : [{
              "context" : "obsM",
              "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" : "https://fhir.slade360.co.ke/fhir/CodeSystem/inpatient-clinical-concept-codesystem"
                  }]
                }]
              },
              {
                "name" : "codeCode",
                "source" : [{
                  "context" : "qr"
                }],
                "target" : [{
                  "context" : "coding",
                  "element" : "code",
                  "transform" : "copy",
                  "parameter" : [{
                    "valueString" : "mood-and-affect"
                  }]
                }]
              },
              {
                "name" : "codeDisplay",
                "source" : [{
                  "context" : "qr"
                }],
                "target" : [{
                  "context" : "coding",
                  "element" : "display",
                  "transform" : "copy",
                  "parameter" : [{
                    "valueString" : "Mood and affect"
                  }]
                }]
              }]
            },
            {
              "name" : "codeText",
              "source" : [{
                "context" : "qr"
              }],
              "target" : [{
                "context" : "code",
                "element" : "text",
                "transform" : "copy",
                "parameter" : [{
                  "valueString" : "Mood and affect"
                }]
              }]
            }]
          },
          {
            "name" : "moodValue",
            "source" : [{
              "context" : "aM",
              "element" : "value",
              "variable" : "v"
            }],
            "target" : [{
              "context" : "obsM",
              "element" : "value",
              "transform" : "copy",
              "parameter" : [{
                "valueId" : "v"
              }]
            }]
          }]
        }]
      }],
      "documentation" : "── Mood and affect ────────────────────────────────────────────────────────\r\nNo LOINC concept for the mood and affect line of a mental state\r\nexamination, so a local code. See SGHIInpatientClinicalConceptCodeSystem."
    },
    {
      "name" : "capacityRule",
      "source" : [{
        "context" : "qr",
        "element" : "item",
        "variable" : "itC",
        "condition" : "(linkId = 'capacity') and answer.value.exists()"
      }],
      "rule" : [{
        "name" : "capacityAnswer",
        "source" : [{
          "context" : "itC",
          "element" : "answer",
          "listMode" : "first",
          "variable" : "aC"
        }],
        "rule" : [{
          "name" : "capacityObservation",
          "source" : [{
            "context" : "aC"
          }],
          "target" : [{
            "context" : "bundle",
            "element" : "entry",
            "variable" : "entryC"
          },
          {
            "context" : "entryC",
            "element" : "resource",
            "variable" : "obsC",
            "transform" : "create",
            "parameter" : [{
              "valueString" : "Observation"
            }]
          }],
          "rule" : [{
            "name" : "capacityBase",
            "source" : [{
              "context" : "qr"
            }],
            "target" : [{
              "context" : "obsC"
            },
            {
              "context" : "entryC"
            }],
            "dependent" : [{
              "name" : "BuildObsBase",
              "parameter" : [{
                "valueId" : "qr"
              },
              {
                "valueId" : "obsC"
              },
              {
                "valueId" : "entryC"
              }]
            }]
          },
          {
            "name" : "capacityCategory",
            "source" : [{
              "context" : "qr"
            }],
            "target" : [{
              "context" : "obsC"
            }],
            "dependent" : [{
              "name" : "SetExamCategory",
              "parameter" : [{
                "valueId" : "qr"
              },
              {
                "valueId" : "obsC"
              }]
            }]
          },
          {
            "name" : "capacityCode",
            "source" : [{
              "context" : "qr"
            }],
            "target" : [{
              "context" : "obsC",
              "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" : "https://fhir.slade360.co.ke/fhir/CodeSystem/inpatient-clinical-concept-codesystem"
                  }]
                }]
              },
              {
                "name" : "codeCode",
                "source" : [{
                  "context" : "qr"
                }],
                "target" : [{
                  "context" : "coding",
                  "element" : "code",
                  "transform" : "copy",
                  "parameter" : [{
                    "valueString" : "capacity-to-consent"
                  }]
                }]
              },
              {
                "name" : "codeDisplay",
                "source" : [{
                  "context" : "qr"
                }],
                "target" : [{
                  "context" : "coding",
                  "element" : "display",
                  "transform" : "copy",
                  "parameter" : [{
                    "valueString" : "Capacity to consent"
                  }]
                }]
              }]
            },
            {
              "name" : "codeText",
              "source" : [{
                "context" : "qr"
              }],
              "target" : [{
                "context" : "code",
                "element" : "text",
                "transform" : "copy",
                "parameter" : [{
                  "valueString" : "Capacity to consent"
                }]
              }]
            }]
          },
          {
            "name" : "capacityValue",
            "source" : [{
              "context" : "aC"
            }],
            "target" : [{
              "context" : "obsC"
            }],
            "dependent" : [{
              "name" : "SetCodedValue",
              "parameter" : [{
                "valueId" : "aC"
              },
              {
                "valueId" : "obsC"
              }]
            }]
          }]
        }]
      }],
      "documentation" : "── Capacity to consent ────────────────────────────────────────────────────"
    },
    {
      "name" : "selfHarmNoneRule",
      "source" : [{
        "context" : "qr",
        "element" : "item",
        "variable" : "itS",
        "condition" : "(linkId = 'selfHarm') and (answer.value.ofType(Coding).code = 'self-harm-none')"
      }],
      "target" : [{
        "context" : "bundle",
        "element" : "entry",
        "variable" : "entry"
      },
      {
        "context" : "entry",
        "element" : "resource",
        "variable" : "ra",
        "transform" : "create",
        "parameter" : [{
          "valueString" : "RiskAssessment"
        }]
      }],
      "rule" : [{
        "name" : "riskBase",
        "source" : [{
          "context" : "qr"
        }],
        "target" : [{
          "context" : "ra"
        },
        {
          "context" : "entry"
        }],
        "dependent" : [{
          "name" : "BuildRiskBase",
          "parameter" : [{
            "valueId" : "qr"
          },
          {
            "valueId" : "ra"
          },
          {
            "valueId" : "entry"
          }]
        }]
      },
      {
        "name" : "prediction",
        "source" : [{
          "context" : "qr"
        }],
        "target" : [{
          "context" : "ra",
          "element" : "prediction",
          "variable" : "pred"
        }],
        "rule" : [{
          "name" : "outcome",
          "source" : [{
            "context" : "qr"
          }],
          "target" : [{
            "context" : "pred",
            "element" : "outcome",
            "variable" : "outcome"
          }],
          "rule" : [{
            "name" : "outcomeText",
            "source" : [{
              "context" : "qr"
            }],
            "target" : [{
              "context" : "outcome",
              "element" : "text",
              "transform" : "copy",
              "parameter" : [{
                "valueString" : "Self-harm"
              }]
            }]
          }]
        },
        {
          "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" : "answerCoding",
            "source" : [{
              "context" : "itS"
            }],
            "target" : [{
              "context" : "risk"
            }],
            "dependent" : [{
              "name" : "AddAnswerCodingAndText",
              "parameter" : [{
                "valueId" : "itS"
              },
              {
                "valueId" : "risk"
              }]
            }]
          }]
        }]
      }],
      "documentation" : "── Risk of self-harm ──────────────────────────────────────────────────────\r\nFour answers, four bands. Passive ideation is banded `moderate` rather than\r\n`low`: on a ward, thoughts of self-harm without a plan still warrant\r\nobservation, and the cost of over-flagging here is smaller than the cost of\r\nunder-flagging."
    },
    {
      "name" : "selfHarmPassiveRule",
      "source" : [{
        "context" : "qr",
        "element" : "item",
        "variable" : "itS",
        "condition" : "(linkId = 'selfHarm') and (answer.value.ofType(Coding).code = 'self-harm-passive')"
      }],
      "target" : [{
        "context" : "bundle",
        "element" : "entry",
        "variable" : "entry"
      },
      {
        "context" : "entry",
        "element" : "resource",
        "variable" : "ra",
        "transform" : "create",
        "parameter" : [{
          "valueString" : "RiskAssessment"
        }]
      }],
      "rule" : [{
        "name" : "riskBase",
        "source" : [{
          "context" : "qr"
        }],
        "target" : [{
          "context" : "ra"
        },
        {
          "context" : "entry"
        }],
        "dependent" : [{
          "name" : "BuildRiskBase",
          "parameter" : [{
            "valueId" : "qr"
          },
          {
            "valueId" : "ra"
          },
          {
            "valueId" : "entry"
          }]
        }]
      },
      {
        "name" : "prediction",
        "source" : [{
          "context" : "qr"
        }],
        "target" : [{
          "context" : "ra",
          "element" : "prediction",
          "variable" : "pred"
        }],
        "rule" : [{
          "name" : "outcome",
          "source" : [{
            "context" : "qr"
          }],
          "target" : [{
            "context" : "pred",
            "element" : "outcome",
            "variable" : "outcome"
          }],
          "rule" : [{
            "name" : "outcomeText",
            "source" : [{
              "context" : "qr"
            }],
            "target" : [{
              "context" : "outcome",
              "element" : "text",
              "transform" : "copy",
              "parameter" : [{
                "valueString" : "Self-harm"
              }]
            }]
          }]
        },
        {
          "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" : "answerCoding",
            "source" : [{
              "context" : "itS"
            }],
            "target" : [{
              "context" : "risk"
            }],
            "dependent" : [{
              "name" : "AddAnswerCodingAndText",
              "parameter" : [{
                "valueId" : "itS"
              },
              {
                "valueId" : "risk"
              }]
            }]
          }]
        }]
      }]
    },
    {
      "name" : "selfHarmActivePlanRule",
      "source" : [{
        "context" : "qr",
        "element" : "item",
        "variable" : "itS",
        "condition" : "(linkId = 'selfHarm') and (answer.value.ofType(Coding).code = 'self-harm-active-plan')"
      }],
      "target" : [{
        "context" : "bundle",
        "element" : "entry",
        "variable" : "entry"
      },
      {
        "context" : "entry",
        "element" : "resource",
        "variable" : "ra",
        "transform" : "create",
        "parameter" : [{
          "valueString" : "RiskAssessment"
        }]
      }],
      "rule" : [{
        "name" : "riskBase",
        "source" : [{
          "context" : "qr"
        }],
        "target" : [{
          "context" : "ra"
        },
        {
          "context" : "entry"
        }],
        "dependent" : [{
          "name" : "BuildRiskBase",
          "parameter" : [{
            "valueId" : "qr"
          },
          {
            "valueId" : "ra"
          },
          {
            "valueId" : "entry"
          }]
        }]
      },
      {
        "name" : "prediction",
        "source" : [{
          "context" : "qr"
        }],
        "target" : [{
          "context" : "ra",
          "element" : "prediction",
          "variable" : "pred"
        }],
        "rule" : [{
          "name" : "outcome",
          "source" : [{
            "context" : "qr"
          }],
          "target" : [{
            "context" : "pred",
            "element" : "outcome",
            "variable" : "outcome"
          }],
          "rule" : [{
            "name" : "outcomeText",
            "source" : [{
              "context" : "qr"
            }],
            "target" : [{
              "context" : "outcome",
              "element" : "text",
              "transform" : "copy",
              "parameter" : [{
                "valueString" : "Self-harm"
              }]
            }]
          }]
        },
        {
          "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" : "answerCoding",
            "source" : [{
              "context" : "itS"
            }],
            "target" : [{
              "context" : "risk"
            }],
            "dependent" : [{
              "name" : "AddAnswerCodingAndText",
              "parameter" : [{
                "valueId" : "itS"
              },
              {
                "valueId" : "risk"
              }]
            }]
          }]
        }]
      }]
    },
    {
      "name" : "selfHarmRecentActRule",
      "source" : [{
        "context" : "qr",
        "element" : "item",
        "variable" : "itS",
        "condition" : "(linkId = 'selfHarm') and (answer.value.ofType(Coding).code = 'self-harm-recent-act')"
      }],
      "target" : [{
        "context" : "bundle",
        "element" : "entry",
        "variable" : "entry"
      },
      {
        "context" : "entry",
        "element" : "resource",
        "variable" : "ra",
        "transform" : "create",
        "parameter" : [{
          "valueString" : "RiskAssessment"
        }]
      }],
      "rule" : [{
        "name" : "riskBase",
        "source" : [{
          "context" : "qr"
        }],
        "target" : [{
          "context" : "ra"
        },
        {
          "context" : "entry"
        }],
        "dependent" : [{
          "name" : "BuildRiskBase",
          "parameter" : [{
            "valueId" : "qr"
          },
          {
            "valueId" : "ra"
          },
          {
            "valueId" : "entry"
          }]
        }]
      },
      {
        "name" : "prediction",
        "source" : [{
          "context" : "qr"
        }],
        "target" : [{
          "context" : "ra",
          "element" : "prediction",
          "variable" : "pred"
        }],
        "rule" : [{
          "name" : "outcome",
          "source" : [{
            "context" : "qr"
          }],
          "target" : [{
            "context" : "pred",
            "element" : "outcome",
            "variable" : "outcome"
          }],
          "rule" : [{
            "name" : "outcomeText",
            "source" : [{
              "context" : "qr"
            }],
            "target" : [{
              "context" : "outcome",
              "element" : "text",
              "transform" : "copy",
              "parameter" : [{
                "valueString" : "Self-harm"
              }]
            }]
          }]
        },
        {
          "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" : "answerCoding",
            "source" : [{
              "context" : "itS"
            }],
            "target" : [{
              "context" : "risk"
            }],
            "dependent" : [{
              "name" : "AddAnswerCodingAndText",
              "parameter" : [{
                "valueId" : "itS"
              },
              {
                "valueId" : "risk"
              }]
            }]
          }]
        }]
      }]
    },
    {
      "name" : "safeguardingRule",
      "source" : [{
        "context" : "qr",
        "element" : "item",
        "variable" : "itSg",
        "condition" : "(linkId = 'safeguarding') and answer.value.exists()"
      }],
      "rule" : [{
        "name" : "safeguardingAnswer",
        "source" : [{
          "context" : "itSg",
          "element" : "answer",
          "listMode" : "first",
          "variable" : "aSg"
        }],
        "rule" : [{
          "name" : "flag",
          "source" : [{
            "context" : "aSg"
          }],
          "target" : [{
            "context" : "bundle",
            "element" : "entry",
            "variable" : "entryF"
          },
          {
            "context" : "entryF",
            "element" : "resource",
            "variable" : "flag",
            "transform" : "create",
            "parameter" : [{
              "valueString" : "Flag"
            }]
          }],
          "rule" : [{
            "name" : "idAndFullUrl",
            "source" : [{
              "context" : "qr"
            }],
            "target" : [{
              "context" : "flag",
              "element" : "id",
              "transform" : "uuid"
            }],
            "dependent" : [{
              "name" : "SetFlagFullUrl",
              "parameter" : [{
                "valueId" : "flag"
              },
              {
                "valueId" : "entryF"
              }]
            }]
          },
          {
            "name" : "entryRequest",
            "source" : [{
              "context" : "qr"
            }],
            "target" : [{
              "context" : "entryF",
              "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" : "Flag"
                }]
              }]
            }]
          },
          {
            "name" : "status",
            "source" : [{
              "context" : "qr"
            }],
            "target" : [{
              "context" : "flag",
              "element" : "status",
              "transform" : "copy",
              "parameter" : [{
                "valueString" : "active"
              }]
            }]
          },
          {
            "name" : "category",
            "source" : [{
              "context" : "qr"
            }],
            "target" : [{
              "context" : "flag",
              "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/flag-category"
                  }]
                }]
              },
              {
                "name" : "categoryCode",
                "source" : [{
                  "context" : "qr"
                }],
                "target" : [{
                  "context" : "coding",
                  "element" : "code",
                  "transform" : "copy",
                  "parameter" : [{
                    "valueString" : "safety"
                  }]
                }]
              },
              {
                "name" : "categoryDisplay",
                "source" : [{
                  "context" : "qr"
                }],
                "target" : [{
                  "context" : "coding",
                  "element" : "display",
                  "transform" : "copy",
                  "parameter" : [{
                    "valueString" : "Safety"
                  }]
                }]
              }]
            }]
          },
          {
            "name" : "flagCode",
            "source" : [{
              "context" : "aSg",
              "element" : "value",
              "variable" : "v"
            }],
            "target" : [{
              "context" : "flag",
              "element" : "code",
              "variable" : "code"
            }],
            "rule" : [{
              "name" : "codeText",
              "source" : [{
                "context" : "v"
              }],
              "target" : [{
                "context" : "code",
                "element" : "text",
                "transform" : "copy",
                "parameter" : [{
                  "valueId" : "v"
                }]
              }]
            }],
            "documentation" : "The concern as written. Flag.code is 1..1 and there is no code system\r\nfor \"what a nurse is worried about\", so the wording is the concept."
          },
          {
            "name" : "subject",
            "source" : [{
              "context" : "qr",
              "element" : "subject",
              "variable" : "s"
            }],
            "target" : [{
              "context" : "flag",
              "element" : "subject",
              "transform" : "copy",
              "parameter" : [{
                "valueId" : "s"
              }]
            }]
          },
          {
            "name" : "encounter",
            "source" : [{
              "context" : "qr",
              "element" : "encounter",
              "variable" : "e"
            }],
            "target" : [{
              "context" : "flag",
              "element" : "encounter",
              "transform" : "copy",
              "parameter" : [{
                "valueId" : "e"
              }]
            }]
          },
          {
            "name" : "period",
            "source" : [{
              "context" : "qr",
              "element" : "authored",
              "variable" : "t"
            }],
            "target" : [{
              "context" : "flag",
              "element" : "period",
              "variable" : "period"
            }],
            "rule" : [{
              "name" : "periodStart",
              "source" : [{
                "context" : "t"
              }],
              "target" : [{
                "context" : "period",
                "element" : "start",
                "transform" : "copy",
                "parameter" : [{
                  "valueId" : "t"
                }]
              }]
            }]
          },
          {
            "name" : "authorFromAuthor",
            "source" : [{
              "context" : "qr",
              "element" : "author",
              "variable" : "a"
            }],
            "target" : [{
              "context" : "flag",
              "element" : "author",
              "transform" : "copy",
              "parameter" : [{
                "valueId" : "a"
              }]
            }]
          },
          {
            "name" : "authorFallback",
            "source" : [{
              "context" : "qr",
              "condition" : "author.exists().not()"
            }],
            "rule" : [{
              "name" : "authorFromSource",
              "source" : [{
                "context" : "qr",
                "element" : "source",
                "variable" : "src"
              }],
              "target" : [{
                "context" : "flag",
                "element" : "author",
                "transform" : "copy",
                "parameter" : [{
                  "valueId" : "src"
                }]
              }]
            }]
          }]
        }]
      }],
      "documentation" : "── Safeguarding ───────────────────────────────────────────────────────────\r\nFlag has no element that points back at the response it came from, so this\r\nis the one resource the map emits with no link home. Category `safety` is\r\nwhat makes it show up wherever the ward surfaces safety flags."
    }]
  },
  {
    "name" : "AddAnswerCodingAndText",
    "documentation" : "The chosen answer, coding and wording intact, alongside the risk-probability\r\ncode. risk-probability has five concepts and the form has four answers, so\r\ntwo of them share `high`; the answer coding is what tells them apart.",
    "input" : [{
      "name" : "it",
      "mode" : "source"
    },
    {
      "name" : "risk",
      "mode" : "target"
    }],
    "rule" : [{
      "name" : "answer",
      "source" : [{
        "context" : "it",
        "element" : "answer",
        "listMode" : "first",
        "variable" : "a"
      }],
      "rule" : [{
        "name" : "answerCoding",
        "source" : [{
          "context" : "a",
          "element" : "value",
          "variable" : "cv"
        }],
        "target" : [{
          "context" : "risk",
          "element" : "coding",
          "transform" : "copy",
          "parameter" : [{
            "valueId" : "cv"
          }]
        }]
      },
      {
        "name" : "answerDisplay",
        "source" : [{
          "context" : "a",
          "element" : "value",
          "variable" : "cv"
        }],
        "rule" : [{
          "name" : "answerText",
          "source" : [{
            "context" : "cv",
            "element" : "display",
            "variable" : "d"
          }],
          "target" : [{
            "context" : "risk",
            "element" : "text",
            "transform" : "copy",
            "parameter" : [{
              "valueId" : "d"
            }]
          }]
        }]
      }]
    }]
  },
  {
    "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\nSource parameters are left untyped on purpose. Writing `: Element` makes the\r\npublisher's StructureMap validator compare QuestionnaireResponse.item against\r\nthe literal 'Element' and report them as incompatible with each other, which is\r\nnoise, not a finding. Untyped, it says only that it cannot check the paths.",
    "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"
      }],
      "target" : [{
        "context" : "obs",
        "element" : "subject",
        "transform" : "copy",
        "parameter" : [{
          "valueId" : "s"
        }]
      }]
    },
    {
      "name" : "encounter",
      "source" : [{
        "context" : "qr",
        "element" : "encounter",
        "variable" : "e"
      }],
      "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"
      }],
      "target" : [{
        "context" : "obs",
        "element" : "performer",
        "transform" : "copy",
        "parameter" : [{
          "valueId" : "src"
        }]
      }]
    },
    {
      "name" : "performerFallback",
      "source" : [{
        "context" : "qr",
        "condition" : "source.exists().not()"
      }],
      "rule" : [{
        "name" : "performerFromAuthor",
        "source" : [{
          "context" : "qr",
          "element" : "author",
          "variable" : "a"
        }],
        "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" : "No Observation to stand on here -- the self-harm answer is a judgement, not a\r\nmeasurement -- so basis carries the response alone, and \"What was said\" comes\r\nthrough as the assessment's note.",
    "input" : [{
      "name" : "qr",
      "type" : "QR",
      "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" : "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" : "https://fhir.slade360.co.ke/fhir/CodeSystem/inpatient-clinical-concept-codesystem"
            }]
          }]
        },
        {
          "name" : "codeCode",
          "source" : [{
            "context" : "qr"
          }],
          "target" : [{
            "context" : "coding",
            "element" : "code",
            "transform" : "copy",
            "parameter" : [{
              "valueString" : "self-harm-risk"
            }]
          }]
        },
        {
          "name" : "codeDisplay",
          "source" : [{
            "context" : "qr"
          }],
          "target" : [{
            "context" : "coding",
            "element" : "display",
            "transform" : "copy",
            "parameter" : [{
              "valueString" : "Risk of self-harm"
            }]
          }]
        }]
      },
      {
        "name" : "codeText",
        "source" : [{
          "context" : "qr"
        }],
        "target" : [{
          "context" : "code",
          "element" : "text",
          "transform" : "copy",
          "parameter" : [{
            "valueString" : "Risk of self-harm"
          }]
        }]
      }]
    },
    {
      "name" : "subject",
      "source" : [{
        "context" : "qr",
        "element" : "subject",
        "variable" : "s"
      }],
      "target" : [{
        "context" : "ra",
        "element" : "subject",
        "transform" : "copy",
        "parameter" : [{
          "valueId" : "s"
        }]
      }]
    },
    {
      "name" : "encounter",
      "source" : [{
        "context" : "qr",
        "element" : "encounter",
        "variable" : "e"
      }],
      "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"
      }],
      "target" : [{
        "context" : "ra",
        "element" : "performer",
        "transform" : "copy",
        "parameter" : [{
          "valueId" : "a"
        }]
      }]
    },
    {
      "name" : "performerFallback",
      "source" : [{
        "context" : "qr",
        "condition" : "author.exists().not()"
      }],
      "rule" : [{
        "name" : "performerFromSource",
        "source" : [{
          "context" : "qr",
          "element" : "source",
          "variable" : "src"
        }],
        "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" : "whatWasSaidRule",
      "source" : [{
        "context" : "qr",
        "element" : "item",
        "variable" : "itD",
        "condition" : "(linkId = 'selfHarmDetail') and answer.value.exists()"
      }],
      "rule" : [{
        "name" : "detailAnswer",
        "source" : [{
          "context" : "itD",
          "element" : "answer",
          "listMode" : "first",
          "variable" : "aD"
        }],
        "rule" : [{
          "name" : "note",
          "source" : [{
            "context" : "aD",
            "element" : "value",
            "variable" : "v"
          }],
          "target" : [{
            "context" : "ra",
            "element" : "note",
            "variable" : "note"
          }],
          "rule" : [{
            "name" : "noteText",
            "source" : [{
              "context" : "v"
            }],
            "target" : [{
              "context" : "note",
              "element" : "text",
              "transform" : "copy",
              "parameter" : [{
                "valueId" : "v"
              }]
            }]
          }]
        }]
      }]
    }]
  },
  {
    "name" : "SetCodedValue",
    "input" : [{
      "name" : "a",
      "mode" : "source"
    },
    {
      "name" : "obs",
      "type" : "Observation",
      "mode" : "target"
    }],
    "rule" : [{
      "name" : "codedValue",
      "source" : [{
        "context" : "a",
        "element" : "value",
        "variable" : "cv"
      }],
      "target" : [{
        "context" : "obs",
        "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" : "SetExamCategory",
    "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" : "exam"
            }]
          }]
        },
        {
          "name" : "categoryDisplay",
          "source" : [{
            "context" : "qr"
          }],
          "target" : [{
            "context" : "coding",
            "element" : "display",
            "transform" : "copy",
            "parameter" : [{
              "valueString" : "Exam"
            }]
          }]
        }]
      }]
    }]
  },
  {
    "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" : "SetFlagFullUrl",
    "input" : [{
      "name" : "flag",
      "type" : "Flag",
      "mode" : "source"
    },
    {
      "name" : "entry",
      "mode" : "target"
    }],
    "rule" : [{
      "name" : "assignFullUrl",
      "source" : [{
        "context" : "flag",
        "element" : "id",
        "variable" : "id"
      }],
      "target" : [{
        "context" : "entry",
        "element" : "fullUrl",
        "transform" : "append",
        "parameter" : [{
          "valueString" : "https://fhir.slade360.co.ke/fhir/Flag/"
        },
        {
          "valueId" : "id"
        }]
      }]
    }]
  }]
}