SGHI FHIR Profile Implementation Guide
0.1.0 - ci-build

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

: Inpatient Mental Health Risk Assessment Extraction - JSON Representation

Active as of 2026-09-14

Raw json | Download

{
  "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"
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}