SGHI FHIR Profile Implementation Guide
0.1.0 - ci-build
SGHI FHIR Profile Implementation Guide, published by Kathurima Kimathi. This guide is not an authorized publication; it is the continuous build for version 0.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/savannahghi/sil_fhir_profile_ig/ and changes regularly. See the Directory of published versions
| Active as of 2026-10-06 |
@prefix fhir: <http://hl7.org/fhir/> . @prefix owl: <http://www.w3.org/2002/07/owl#> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . # - resource ------------------------------------------------------------------- <http://hl7.org/fhir/StructureMap/ExtractInpatientMentalHealthRiskAssessment> a fhir:StructureMap ; fhir:nodeRole fhir:treeRoot ; fhir:id [ fhir:v "ExtractInpatientMentalHealthRiskAssessment"] ; # fhir:text [ fhir:status [ fhir:v "generated" ] ; fhir:div [ fhir:v "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p class=\"res-header-id\"><b>Generated Narrative: StructureMap 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\"> "</span><a href=\"http://hl7.org/fhir/R5/questionnaireresponse.html\" title=\"QuestionnaireResponse\">http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse</a><span style=\"color: navy\">" </span><b>alias </b>QR <b>as </b><b>source</b>\r\n<b>uses</b><span style=\"color: navy\"> "</span><a href=\"http://hl7.org/fhir/R5/bundle.html\" title=\"Bundle\">http://hl7.org/fhir/StructureDefinition/Bundle</a><span style=\"color: navy\">" </span><b>alias </b>Bundle <b>as </b><b>target</b>\r\n<b>uses</b><span style=\"color: navy\"> "</span><a href=\"http://hl7.org/fhir/R5/observation.html\" title=\"Observation\">http://hl7.org/fhir/StructureDefinition/Observation</a><span style=\"color: navy\">" </span><b>alias </b>Observation <b>as </b><b>target</b>\r\n<b>uses</b><span style=\"color: navy\"> "</span><a href=\"http://hl7.org/fhir/R5/riskassessment.html\" title=\"RiskAssessment\">http://hl7.org/fhir/StructureDefinition/RiskAssessment</a><span style=\"color: navy\">" </span><b>alias </b>RiskAssessment <b>as </b><b>target</b>\r\n<b>uses</b><span style=\"color: navy\"> "</span><a href=\"http://hl7.org/fhir/R5/flag.html\" title=\"Flag\">http://hl7.org/fhir/StructureDefinition/Flag</a><span style=\"color: navy\">" </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> -> </b></span>bundle.type = <span style=\"color: blue\">'transaction'</span> <i>"setBundleType"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">── 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> -> </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> -> </b></span>obsM<b> then </b>CopyResponseTags<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>"responseTags"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </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>"moodBase"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </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>"moodCategory"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </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> -> </b></span>code.coding<b> as </b><span style=\"color: maroon\">coding</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>coding.system = <span style=\"color: blue\">'https://fhir.slade360.co.ke/fhir/CodeSystem/inpatient-clinical-concept-codesystem'</span> <i>"codeSystem"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'mood-and-affect'</span> <i>"codeCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'Mood and affect'</span> <i>"codeDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"codeCoding"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>code.text = <span style=\"color: blue\">'Mood and affect'</span> <i>"codeText"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"moodCode"</i><span style=\"color: navy\">;</span>\r\n aM.value<b> as </b><span style=\"color: maroon\">v</span><span style=\"color: navy\"><b> -> </b></span>obsM.value = <span style=\"color: maroon\">v</span> <i>"moodValue"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"moodObservation"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"moodAnswer"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"moodRule"</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> -> </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> -> </b></span>obsC<b> then </b>CopyResponseTags<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>"responseTags"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </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>"capacityBase"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </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>"capacityCategory"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </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> -> </b></span>code.coding<b> as </b><span style=\"color: maroon\">coding</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>coding.system = <span style=\"color: blue\">'https://fhir.slade360.co.ke/fhir/CodeSystem/inpatient-clinical-concept-codesystem'</span> <i>"codeSystem"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'capacity-to-consent'</span> <i>"codeCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'Capacity to consent'</span> <i>"codeDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"codeCoding"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>code.text = <span style=\"color: blue\">'Capacity to consent'</span> <i>"codeText"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"capacityCode"</i><span style=\"color: navy\">;</span>\r\n aC<span style=\"color: navy\"><b> -> </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>"capacityValue"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"capacityObservation"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"capacityAnswer"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"capacityRule"</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> -> </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'RiskAssessment'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">ra</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>ra<b> then </b>CopyResponseTags<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">)</span> <i>"responseTags"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span> ra<span style=\"color: navy\">, </span> entry<b> then </b>BuildRiskBase<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>"riskBase"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>ra.prediction<b> as </b><span style=\"color: maroon\">pred</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>pred.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> -> </b></span>outcome.text = <span style=\"color: blue\">'Self-harm'</span> <i>"outcomeText"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"outcome"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>pred.qualitativeRisk<b> as </b><span style=\"color: maroon\">risk</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>risk.coding<b> as </b><span style=\"color: maroon\">coding</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>coding.system = <span style=\"color: blue\">'http://terminology.hl7.org/CodeSystem/risk-probability'</span> <i>"riskSystem"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'negligible'</span> <i>"riskCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'Negligible likelihood'</span> <i>"riskDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"riskCoding"</i><span style=\"color: navy\">;</span>\r\n itS<span style=\"color: navy\"><b> -> </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>"answerCoding"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"qualitativeRisk"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"prediction"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"selfHarmNoneRule"</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> -> </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'RiskAssessment'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">ra</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>ra<b> then </b>CopyResponseTags<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">)</span> <i>"responseTags"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span> ra<span style=\"color: navy\">, </span> entry<b> then </b>BuildRiskBase<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>"riskBase"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>ra.prediction<b> as </b><span style=\"color: maroon\">pred</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>pred.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> -> </b></span>outcome.text = <span style=\"color: blue\">'Self-harm'</span> <i>"outcomeText"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"outcome"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>pred.qualitativeRisk<b> as </b><span style=\"color: maroon\">risk</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>risk.coding<b> as </b><span style=\"color: maroon\">coding</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>coding.system = <span style=\"color: blue\">'http://terminology.hl7.org/CodeSystem/risk-probability'</span> <i>"riskSystem"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'moderate'</span> <i>"riskCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'Moderate likelihood'</span> <i>"riskDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"riskCoding"</i><span style=\"color: navy\">;</span>\r\n itS<span style=\"color: navy\"><b> -> </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>"answerCoding"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"qualitativeRisk"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"prediction"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"selfHarmPassiveRule"</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> -> </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'RiskAssessment'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">ra</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>ra<b> then </b>CopyResponseTags<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">)</span> <i>"responseTags"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span> ra<span style=\"color: navy\">, </span> entry<b> then </b>BuildRiskBase<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>"riskBase"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>ra.prediction<b> as </b><span style=\"color: maroon\">pred</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>pred.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> -> </b></span>outcome.text = <span style=\"color: blue\">'Self-harm'</span> <i>"outcomeText"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"outcome"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>pred.qualitativeRisk<b> as </b><span style=\"color: maroon\">risk</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>risk.coding<b> as </b><span style=\"color: maroon\">coding</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>coding.system = <span style=\"color: blue\">'http://terminology.hl7.org/CodeSystem/risk-probability'</span> <i>"riskSystem"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'high'</span> <i>"riskCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'High likelihood'</span> <i>"riskDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"riskCoding"</i><span style=\"color: navy\">;</span>\r\n itS<span style=\"color: navy\"><b> -> </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>"answerCoding"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"qualitativeRisk"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"prediction"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"selfHarmActivePlanRule"</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> -> </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'RiskAssessment'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">ra</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>ra<b> then </b>CopyResponseTags<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">)</span> <i>"responseTags"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span> ra<span style=\"color: navy\">, </span> entry<b> then </b>BuildRiskBase<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>"riskBase"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>ra.prediction<b> as </b><span style=\"color: maroon\">pred</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>pred.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> -> </b></span>outcome.text = <span style=\"color: blue\">'Self-harm'</span> <i>"outcomeText"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"outcome"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>pred.qualitativeRisk<b> as </b><span style=\"color: maroon\">risk</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>risk.coding<b> as </b><span style=\"color: maroon\">coding</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>coding.system = <span style=\"color: blue\">'http://terminology.hl7.org/CodeSystem/risk-probability'</span> <i>"riskSystem"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'high'</span> <i>"riskCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'High likelihood'</span> <i>"riskDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"riskCoding"</i><span style=\"color: navy\">;</span>\r\n itS<span style=\"color: navy\"><b> -> </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>"answerCoding"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"qualitativeRisk"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"prediction"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"selfHarmRecentActRule"</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> -> </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> -> </b></span>flag<b> then </b>CopyResponseTags<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">flag</span><span style=\"color: navy\">)</span> <i>"responseTags"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </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>"idAndFullUrl"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </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> -> </b></span>request.method = <span style=\"color: blue\">'POST'</span> <i>"requestMethod"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>request.url = <span style=\"color: blue\">'Flag'</span> <i>"requestUrl"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"entryRequest"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>flag.status = <span style=\"color: blue\">'active'</span> <i>"status"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>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> -> </b></span>cat.coding<b> as </b><span style=\"color: maroon\">coding</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>coding.system = <span style=\"color: blue\">'http://terminology.hl7.org/CodeSystem/flag-category'</span> <i>"categorySystem"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'safety'</span> <i>"categoryCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'Safety'</span> <i>"categoryDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"categoryCoding"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"category"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </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 "what a nurse is worried about", 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> -> </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> -> </b></span>code.text = <span style=\"color: maroon\">v</span> <i>"codeText"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"flagCode"</i><span style=\"color: navy\">;</span>\r\n qr.subject<b> as </b><span style=\"color: maroon\">s</span><b> where </b><span style=\"color: navy\">(</span>(reference.exists() and (reference.startsWith('Patient/') or reference.startsWith('RelatedPerson/') or reference.startsWith('Location/') or reference.startsWith('Group/') or reference.startsWith('Organization/') or reference.startsWith('Practitioner/') or reference.startsWith('PractitionerRole/') or reference.startsWith('PlanDefinition/') or reference.startsWith('Medication/') or reference.startsWith('Procedure/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/RelatedPerson') or ('/' + type).endsWith('/Location') or ('/' + type).endsWith('/Group') or ('/' + type).endsWith('/Organization') or ('/' + type).endsWith('/Practitioner') or ('/' + type).endsWith('/PractitionerRole') or ('/' + type).endsWith('/PlanDefinition') or ('/' + type).endsWith('/Medication') or ('/' + type).endsWith('/Procedure')))<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </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><b> where </b><span style=\"color: navy\">(</span>(reference.exists() and (reference.startsWith('Encounter/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Encounter')))<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>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> -> </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> -> </b></span>period.start = <span style=\"color: maroon\">t</span> <i>"periodStart"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"period"</i><span style=\"color: navy\">;</span>\r\n qr.author<b> as </b><span style=\"color: maroon\">a</span><b> where </b><span style=\"color: navy\">(</span>(reference.exists() and (reference.startsWith('Device/') or reference.startsWith('Organization/') or reference.startsWith('Patient/') or reference.startsWith('RelatedPerson/') or reference.startsWith('Practitioner/') or reference.startsWith('PractitionerRole/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Device') or ('/' + type).endsWith('/Organization') or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/RelatedPerson') or ('/' + type).endsWith('/Practitioner') or ('/' + type).endsWith('/PractitionerRole')))<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>flag.author = <span style=\"color: maroon\">a</span> <i>"authorFromAuthor"</i><span style=\"color: navy\">;</span>\r\n qr<b> where </b><span style=\"color: navy\">(</span>author.where(((reference.exists() and (reference.startsWith('Device/') or reference.startsWith('Organization/') or reference.startsWith('Patient/') or reference.startsWith('RelatedPerson/') or reference.startsWith('Practitioner/') or reference.startsWith('PractitionerRole/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Device') or ('/' + type).endsWith('/Organization') or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/RelatedPerson') or ('/' + type).endsWith('/Practitioner') or ('/' + type).endsWith('/PractitionerRole'))))).exists().not()<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr.source<b> as </b><span style=\"color: maroon\">src</span><b> where </b><span style=\"color: navy\">(</span>(reference.exists() and (reference.startsWith('Device/') or reference.startsWith('Organization/') or reference.startsWith('Patient/') or reference.startsWith('RelatedPerson/') or reference.startsWith('Practitioner/') or reference.startsWith('PractitionerRole/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Device') or ('/' + type).endsWith('/Organization') or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/RelatedPerson') or ('/' + type).endsWith('/Practitioner') or ('/' + type).endsWith('/PractitionerRole')))<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>flag.author = <span style=\"color: maroon\">src</span> <i>"authorFromSource"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"authorFallback"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"flag"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"safeguardingAnswer"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"safeguardingRule"</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> -> </b></span>risk.coding = <span style=\"color: maroon\">cv</span> <i>"answerCoding"</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> -> </b></span>risk.text = <span style=\"color: maroon\">d</span> <i>"answerText"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"answerDisplay"</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> -> </b></span>obs.id = <b>uuid</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> then </b>SetObservationFullUrl<span style=\"color: navy\">(</span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>"idAndFullUrl"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>entry.request<b> as </b><span style=\"color: maroon\">request</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>request.method = <span style=\"color: blue\">'POST'</span> <i>"requestMethod"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>request.url = <span style=\"color: blue\">'Observation'</span> <i>"requestUrl"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"entryRequest"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>obs.status = <span style=\"color: blue\">'final'</span> <i>"status"</i><span style=\"color: navy\">;</span>\r\n qr.subject<b> as </b><span style=\"color: maroon\">s</span><b> where </b><span style=\"color: navy\">(</span>(reference.exists() and (reference.startsWith('Patient/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient')))<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>obs.subject = <span style=\"color: maroon\">s</span><span style=\"color: navy\">;</span>\r\n qr.encounter<b> as </b><span style=\"color: maroon\">e</span><b> where </b><span style=\"color: navy\">(</span>(reference.exists() and (reference.startsWith('Encounter/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Encounter')))<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>obs.encounter = <span style=\"color: maroon\">e</span><span style=\"color: navy\">;</span>\r\n qr.authored<b> as </b><span style=\"color: maroon\">t</span><span style=\"color: navy\"><b> -> </b></span>obs.effective = <span style=\"color: maroon\">t</span> <i>"effective"</i><span style=\"color: navy\">;</span>\r\n qr.source<b> as </b><span style=\"color: maroon\">src</span><b> where </b><span style=\"color: navy\">(</span>(reference.exists() and (reference.startsWith('Organization/') or reference.startsWith('Patient/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Organization') or ('/' + type).endsWith('/Patient')))<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>obs.performer = <span style=\"color: maroon\">src</span> <i>"performerFromSource"</i><span style=\"color: navy\">;</span>\r\n qr<b> where </b><span style=\"color: navy\">(</span>source.where(((reference.exists() and (reference.startsWith('Organization/') or reference.startsWith('Patient/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Organization') or ('/' + type).endsWith('/Patient'))))).exists().not()<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr.author<b> as </b><span style=\"color: maroon\">a</span><b> where </b><span style=\"color: navy\">(</span>(reference.exists() and (reference.startsWith('Organization/') or reference.startsWith('Patient/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Organization') or ('/' + type).endsWith('/Patient')))<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>obs.performer = <span style=\"color: maroon\">a</span> <i>"performerFromAuthor"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"performerFallback"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>obs.derivedFrom = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Reference'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">ref</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr.id<b> as </b><span style=\"color: maroon\">qid</span><span style=\"color: navy\"><b> -> </b></span>ref.reference = <span style=\"color: maroon\">qid</span> <i>"derivedFromRef"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"linkQuestionnaireResponse"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">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 "What was said" 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> -> </b></span>ra.id = <b>uuid</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> then </b>SetRiskAssessmentFullUrl<span style=\"color: navy\">(</span><span style=\"color: maroon\">ra</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>"idAndFullUrl"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>entry.request<b> as </b><span style=\"color: maroon\">request</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>request.method = <span style=\"color: blue\">'POST'</span> <i>"requestMethod"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>request.url = <span style=\"color: blue\">'RiskAssessment'</span> <i>"requestUrl"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"entryRequest"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>ra.status = <span style=\"color: blue\">'final'</span> <i>"status"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>ra.code<b> as </b><span style=\"color: maroon\">code</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>code.coding<b> as </b><span style=\"color: maroon\">coding</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>coding.system = <span style=\"color: blue\">'https://fhir.slade360.co.ke/fhir/CodeSystem/inpatient-clinical-concept-codesystem'</span> <i>"codeSystem"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'self-harm-risk'</span> <i>"codeCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'Risk of self-harm'</span> <i>"codeDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"codeCoding"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>code.text = <span style=\"color: blue\">'Risk of self-harm'</span> <i>"codeText"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"code"</i><span style=\"color: navy\">;</span>\r\n qr.subject<b> as </b><span style=\"color: maroon\">s</span><b> where </b><span style=\"color: navy\">(</span>(reference.exists() and (reference.startsWith('Patient/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient')))<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>ra.subject = <span style=\"color: maroon\">s</span><span style=\"color: navy\">;</span>\r\n qr.encounter<b> as </b><span style=\"color: maroon\">e</span><b> where </b><span style=\"color: navy\">(</span>(reference.exists() and (reference.startsWith('Encounter/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Encounter')))<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>ra.encounter = <span style=\"color: maroon\">e</span><span style=\"color: navy\">;</span>\r\n qr.authored<b> as </b><span style=\"color: maroon\">t</span><span style=\"color: navy\"><b> -> </b></span>ra.occurrence = <span style=\"color: maroon\">t</span> <i>"occurrence"</i><span style=\"color: navy\">;</span>\r\n qr.author<b> as </b><span style=\"color: maroon\">a</span><b> where </b><span style=\"color: navy\">(</span>(reference.exists() and (reference.startsWith('Patient/') or reference.startsWith('Practitioner/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/Practitioner')))<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>ra.performer = <span style=\"color: maroon\">a</span> <i>"performerFromAuthor"</i><span style=\"color: navy\">;</span>\r\n qr<b> where </b><span style=\"color: navy\">(</span>author.where(((reference.exists() and (reference.startsWith('Patient/') or reference.startsWith('Practitioner/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/Practitioner'))))).exists().not()<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr.source<b> as </b><span style=\"color: maroon\">src</span><b> where </b><span style=\"color: navy\">(</span>(reference.exists() and (reference.startsWith('Patient/') or reference.startsWith('Practitioner/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/Practitioner')))<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -> </b></span>ra.performer = <span style=\"color: maroon\">src</span> <i>"performerFromSource"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"performerFallback"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>ra.basis = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Reference'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">qref</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr.id<b> as </b><span style=\"color: maroon\">qid</span><span style=\"color: navy\"><b> -> </b></span>qref.reference = <span style=\"color: maroon\">qid</span> <i>"basisQuestionnaireResponse"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"basisResponse"</i><span style=\"color: navy\">;</span>\r\n 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> -> </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> -> </b></span>note.text = <span style=\"color: maroon\">v</span> <i>"noteText"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"note"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"detailAnswer"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"whatWasSaidRule"</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> -> </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> -> </b></span>cc.coding = <span style=\"color: maroon\">cv</span> <i>"valueCoding"</i><span style=\"color: navy\">;</span>\r\n cv.display<b> as </b><span style=\"color: maroon\">d</span><span style=\"color: navy\"><b> -> </b></span>cc.text = <span style=\"color: maroon\">d</span> <i>"valueText"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"codedValue"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\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> -> </b></span>obs.category<b> as </b><span style=\"color: maroon\">cat</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>cat.coding<b> as </b><span style=\"color: maroon\">coding</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qr<span style=\"color: navy\"><b> -> </b></span>coding.system = <span style=\"color: blue\">'http://terminology.hl7.org/CodeSystem/observation-category'</span> <i>"categorySystem"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.code = <span style=\"color: blue\">'exam'</span> <i>"categoryCode"</i><span style=\"color: navy\">;</span>\r\n qr<span style=\"color: navy\"><b> -> </b></span>coding.display = <span style=\"color: blue\">'Exam'</span> <i>"categoryDisplay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"categoryCoding"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"category"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>SetObservationFullUrl<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">obs</span><span style=\"color: navy\"> : </span>Observation, <b>target</b> <span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> obs.id<b> as </b><span style=\"color: maroon\">id</span><span style=\"color: navy\"><b> -> </b></span>entry.fullUrl = <b>append</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'https://fhir.slade360.co.ke/fhir/Observation/'</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">id</span><span style=\"color: navy\">)</span> <i>"assignFullUrl"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>SetRiskAssessmentFullUrl<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">ra</span><span style=\"color: navy\"> : </span>RiskAssessment, <b>target</b> <span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> ra.id<b> as </b><span style=\"color: maroon\">id</span><span style=\"color: navy\"><b> -> </b></span>entry.fullUrl = <b>append</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'https://fhir.slade360.co.ke/fhir/RiskAssessment/'</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">id</span><span style=\"color: navy\">)</span> <i>"assignFullUrl"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>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> -> </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>"assignFullUrl"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">── Tenancy ──────────────────────────────────────────────────────────────────</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Whose this is. The platform says which tenant a response belongs to with a</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">tag on the response, and every tag the response carries is copied onto</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">everything this map creates, as it is. Copied rather than named here, so the</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">map never has to know which tenant it is running for, nor which system the</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">tag is under: that system has moved more than once.</span>\r\n<b>group </b>CopyResponseTags<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">qr</span><span style=\"color: navy\"> : </span>QR, <b>target</b> <span style=\"color: maroon\">r</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> qr.meta<b> as </b><span style=\"color: maroon\">qm</span><b> then</b><span style=\"color: navy\"> {\r\n</span> qm.tag<b> as </b><span style=\"color: maroon\">qt</span><span style=\"color: navy\"><b> -> </b></span> r.meta<b> as </b><span style=\"color: maroon\">m</span><span style=\"color: navy\">, </span> m.tag = <span style=\"color: maroon\">qt</span> <i>"copyTag"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"tenantTags"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span></pre></div>"^^rdf:XMLLiteral ] ] ; # fhir:url [ fhir:v "https://fhir.slade360.co.ke/fhir/StructureMap/ExtractInpatientMentalHealthRiskAssessment"^^xsd:anyURI] ; # fhir:version [ fhir:v "0.1.0"] ; # fhir:name [ fhir:v "ExtractInpatientMentalHealthRiskAssessment"] ; # fhir:title [ fhir:v "Inpatient Mental Health Risk Assessment Extraction"] ; # fhir:status [ fhir:v "active"] ; # fhir:date [ fhir:v "2026-10-06T18:48:22+00:00"^^xsd:dateTime] ; # fhir:publisher [ fhir:v "Kathurima Kimathi"] ; # fhir:contact ( [ fhir:name [ fhir:v "Kathurima Kimathi" ] ; fhir:telecom ( [ fhir:system [ fhir:v "url" ] ; fhir:value [ fhir:v "https://www.linkedin.com/in/kathurima-kimathi/" ] ] [ fhir:system [ fhir:v "email" ] ; fhir:value [ fhir:v "kathurimakimathi415@gmail.com" ] ] ) ] [ fhir:name [ fhir:v "Oscar John" ] ; fhir:telecom ( [ fhir:system [ fhir:v "email" ] ; fhir:value [ fhir:v "oscarjohnotieno@gmail.com" ] ; fhir:use [ fhir:v "work" ] ] ) ] [ fhir:name [ fhir:v "Kennedy Omondi" ] ; fhir:telecom ( [ fhir:system [ fhir:v "email" ] ; fhir:value [ fhir:v "kennankole@gmail.com" ] ; fhir:use [ fhir:v "work" ] ] ) ] ) ; # fhir:description [ fhir:v "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."] ; # fhir:structure ( [ fhir:url [ fhir:v "http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse"^^xsd:anyURI ; fhir:link <http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse> ] ; fhir:mode [ fhir:v "source" ] ; fhir:alias [ fhir:v "QR" ] ] [ fhir:url [ fhir:v "http://hl7.org/fhir/StructureDefinition/Bundle"^^xsd:anyURI ; fhir:link <http://hl7.org/fhir/StructureDefinition/Bundle> ] ; fhir:mode [ fhir:v "target" ] ; fhir:alias [ fhir:v "Bundle" ] ] [ fhir:url [ fhir:v "http://hl7.org/fhir/StructureDefinition/Observation"^^xsd:anyURI ; fhir:link <http://hl7.org/fhir/StructureDefinition/Observation> ] ; fhir:mode [ fhir:v "target" ] ; fhir:alias [ fhir:v "Observation" ] ] [ fhir:url [ fhir:v "http://hl7.org/fhir/StructureDefinition/RiskAssessment"^^xsd:anyURI ; fhir:link <http://hl7.org/fhir/StructureDefinition/RiskAssessment> ] ; fhir:mode [ fhir:v "target" ] ; fhir:alias [ fhir:v "RiskAssessment" ] ] [ fhir:url [ fhir:v "http://hl7.org/fhir/StructureDefinition/Flag"^^xsd:anyURI ; fhir:link <http://hl7.org/fhir/StructureDefinition/Flag> ] ; fhir:mode [ fhir:v "target" ] ; fhir:alias [ fhir:v "Flag" ] ] ) ; # fhir:group ( [ fhir:name [ fhir:v "ExtractInpatientMentalHealthRiskAssessment" ] ; fhir:input ( [ fhir:name [ fhir:v "qr" ] ; fhir:type [ fhir:v "QR" ] ; fhir:mode [ fhir:v "source" ] ] [ fhir:name [ fhir:v "bundle" ] ; fhir:type [ fhir:v "Bundle" ] ; fhir:mode [ fhir:v "target" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "setBundleType" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "bundle" ] ; fhir:element [ fhir:v "type" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "transaction" ] ] ) ] ) ] [ fhir:name [ fhir:v "moodRule" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ; fhir:element [ fhir:v "item" ] ; fhir:variable [ fhir:v "itM" ] ; fhir:condition [ fhir:v "(linkId = 'mood') and answer.value.exists()" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "moodAnswer" ] ; fhir:source ( [ fhir:context [ fhir:v "itM" ] ; fhir:element [ fhir:v "answer" ] ; fhir:listMode [ fhir:v "first" ] ; fhir:variable [ fhir:v "aM" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "moodObservation" ] ; fhir:source ( [ fhir:context [ fhir:v "aM" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "bundle" ] ; fhir:element [ fhir:v "entry" ] ; fhir:variable [ fhir:v "entryM" ] ] [ fhir:context [ fhir:v "entryM" ] ; fhir:element [ fhir:v "resource" ] ; fhir:variable [ fhir:v "obsM" ] ; fhir:transform [ fhir:v "create" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "Observation" ] ] ) ] ) ; fhir:rule ( [ fhir:name [ fhir:v "responseTags" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "obsM" ] ] ) ; fhir:dependent ( [ fhir:name [ fhir:v "CopyResponseTags" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "qr" ] ] [ fhir:value [ a fhir:id ; fhir:v "obsM" ] ] ) ] ) ] [ fhir:name [ fhir:v "moodBase" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "obsM" ] ] [ fhir:context [ fhir:v "entryM" ] ] ) ; fhir:dependent ( [ fhir:name [ fhir:v "BuildObsBase" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "qr" ] ] [ fhir:value [ a fhir:id ; fhir:v "obsM" ] ] [ fhir:value [ a fhir:id ; fhir:v "entryM" ] ] ) ] ) ] [ fhir:name [ fhir:v "moodCategory" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "obsM" ] ] ) ; fhir:dependent ( [ fhir:name [ fhir:v "SetExamCategory" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "qr" ] ] [ fhir:value [ a fhir:id ; fhir:v "obsM" ] ] ) ] ) ] [ fhir:name [ fhir:v "moodCode" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "obsM" ] ; fhir:element [ fhir:v "code" ] ; fhir:variable [ fhir:v "code" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "codeCoding" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "code" ] ; fhir:element [ fhir:v "coding" ] ; fhir:variable [ fhir:v "coding" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "codeSystem" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "coding" ] ; fhir:element [ fhir:v "system" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "https://fhir.slade360.co.ke/fhir/CodeSystem/inpatient-clinical-concept-codesystem" ] ] ) ] ) ] [ fhir:name [ fhir:v "codeCode" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "coding" ] ; fhir:element [ fhir:v "code" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "mood-and-affect" ] ] ) ] ) ] [ fhir:name [ fhir:v "codeDisplay" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "coding" ] ; fhir:element [ fhir:v "display" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "Mood and affect" ] ] ) ] ) ] ) ] [ fhir:name [ fhir:v "codeText" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "code" ] ; fhir:element [ fhir:v "text" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "Mood and affect" ] ] ) ] ) ] ) ] [ fhir:name [ fhir:v "moodValue" ] ; fhir:source ( [ fhir:context [ fhir:v "aM" ] ; fhir:element [ fhir:v "value" ] ; fhir:variable [ fhir:v "v" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "obsM" ] ; fhir:element [ fhir:v "value" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "v" ] ] ) ] ) ] ) ] ) ] ) ; fhir:documentation [ fhir:v "── 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." ] ] [ fhir:name [ fhir:v "capacityRule" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ; fhir:element [ fhir:v "item" ] ; fhir:variable [ fhir:v "itC" ] ; fhir:condition [ fhir:v "(linkId = 'capacity') and answer.value.exists()" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "capacityAnswer" ] ; fhir:source ( [ fhir:context [ fhir:v "itC" ] ; fhir:element [ fhir:v "answer" ] ; fhir:listMode [ fhir:v "first" ] ; fhir:variable [ fhir:v "aC" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "capacityObservation" ] ; fhir:source ( [ fhir:context [ fhir:v "aC" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "bundle" ] ; fhir:element [ fhir:v "entry" ] ; fhir:variable [ fhir:v "entryC" ] ] [ fhir:context [ fhir:v "entryC" ] ; fhir:element [ fhir:v "resource" ] ; fhir:variable [ fhir:v "obsC" ] ; fhir:transform [ fhir:v "create" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "Observation" ] ] ) ] ) ; fhir:rule ( [ fhir:name [ fhir:v "responseTags" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "obsC" ] ] ) ; fhir:dependent ( [ fhir:name [ fhir:v "CopyResponseTags" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "qr" ] ] [ fhir:value [ a fhir:id ; fhir:v "obsC" ] ] ) ] ) ] [ fhir:name [ fhir:v "capacityBase" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "obsC" ] ] [ fhir:context [ fhir:v "entryC" ] ] ) ; fhir:dependent ( [ fhir:name [ fhir:v "BuildObsBase" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "qr" ] ] [ fhir:value [ a fhir:id ; fhir:v "obsC" ] ] [ fhir:value [ a fhir:id ; fhir:v "entryC" ] ] ) ] ) ] [ fhir:name [ fhir:v "capacityCategory" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "obsC" ] ] ) ; fhir:dependent ( [ fhir:name [ fhir:v "SetExamCategory" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "qr" ] ] [ fhir:value [ a fhir:id ; fhir:v "obsC" ] ] ) ] ) ] [ fhir:name [ fhir:v "capacityCode" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "obsC" ] ; fhir:element [ fhir:v "code" ] ; fhir:variable [ fhir:v "code" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "codeCoding" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "code" ] ; fhir:element [ fhir:v "coding" ] ; fhir:variable [ fhir:v "coding" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "codeSystem" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "coding" ] ; fhir:element [ fhir:v "system" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "https://fhir.slade360.co.ke/fhir/CodeSystem/inpatient-clinical-concept-codesystem" ] ] ) ] ) ] [ fhir:name [ fhir:v "codeCode" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "coding" ] ; fhir:element [ fhir:v "code" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "capacity-to-consent" ] ] ) ] ) ] [ fhir:name [ fhir:v "codeDisplay" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "coding" ] ; fhir:element [ fhir:v "display" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "Capacity to consent" ] ] ) ] ) ] ) ] [ fhir:name [ fhir:v "codeText" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "code" ] ; fhir:element [ fhir:v "text" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "Capacity to consent" ] ] ) ] ) ] ) ] [ fhir:name [ fhir:v "capacityValue" ] ; fhir:source ( [ fhir:context [ fhir:v "aC" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "obsC" ] ] ) ; fhir:dependent ( [ fhir:name [ fhir:v "SetCodedValue" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "aC" ] ] [ fhir:value [ a fhir:id ; fhir:v "obsC" ] ] ) ] ) ] ) ] ) ] ) ; fhir:documentation [ fhir:v "── Capacity to consent ────────────────────────────────────────────────────" ] ] [ fhir:name [ fhir:v "selfHarmNoneRule" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ; fhir:element [ fhir:v "item" ] ; fhir:variable [ fhir:v "itS" ] ; fhir:condition [ fhir:v "(linkId = 'selfHarm') and (answer.value.ofType(Coding).code = 'self-harm-none')" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "bundle" ] ; fhir:element [ fhir:v "entry" ] ; fhir:variable [ fhir:v "entry" ] ] [ fhir:context [ fhir:v "entry" ] ; fhir:element [ fhir:v "resource" ] ; fhir:variable [ fhir:v "ra" ] ; fhir:transform [ fhir:v "create" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "RiskAssessment" ] ] ) ] ) ; fhir:rule ( [ fhir:name [ fhir:v "responseTags" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "ra" ] ] ) ; fhir:dependent ( [ fhir:name [ fhir:v "CopyResponseTags" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "qr" ] ] [ fhir:value [ a fhir:id ; fhir:v "ra" ] ] ) ] ) ] [ fhir:name [ fhir:v "riskBase" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "ra" ] ] [ fhir:context [ fhir:v "entry" ] ] ) ; fhir:dependent ( [ fhir:name [ fhir:v "BuildRiskBase" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "qr" ] ] [ fhir:value [ a fhir:id ; fhir:v "ra" ] ] [ fhir:value [ a fhir:id ; fhir:v "entry" ] ] ) ] ) ] [ fhir:name [ fhir:v "prediction" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "ra" ] ; fhir:element [ fhir:v "prediction" ] ; fhir:variable [ fhir:v "pred" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "outcome" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "pred" ] ; fhir:element [ fhir:v "outcome" ] ; fhir:variable [ fhir:v "outcome" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "outcomeText" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "outcome" ] ; fhir:element [ fhir:v "text" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "Self-harm" ] ] ) ] ) ] ) ] [ fhir:name [ fhir:v "qualitativeRisk" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "pred" ] ; fhir:element [ fhir:v "qualitativeRisk" ] ; fhir:variable [ fhir:v "risk" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "riskCoding" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "risk" ] ; fhir:element [ fhir:v "coding" ] ; fhir:variable [ fhir:v "coding" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "riskSystem" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "coding" ] ; fhir:element [ fhir:v "system" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "http://terminology.hl7.org/CodeSystem/risk-probability" ] ] ) ] ) ] [ fhir:name [ fhir:v "riskCode" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "coding" ] ; fhir:element [ fhir:v "code" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "negligible" ] ] ) ] ) ] [ fhir:name [ fhir:v "riskDisplay" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "coding" ] ; fhir:element [ fhir:v "display" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "Negligible likelihood" ] ] ) ] ) ] ) ] [ fhir:name [ fhir:v "answerCoding" ] ; fhir:source ( [ fhir:context [ fhir:v "itS" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "risk" ] ] ) ; fhir:dependent ( [ fhir:name [ fhir:v "AddAnswerCodingAndText" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "itS" ] ] [ fhir:value [ a fhir:id ; fhir:v "risk" ] ] ) ] ) ] ) ] ) ] ) ; fhir:documentation [ fhir:v "── 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." ] ] [ fhir:name [ fhir:v "selfHarmPassiveRule" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ; fhir:element [ fhir:v "item" ] ; fhir:variable [ fhir:v "itS" ] ; fhir:condition [ fhir:v "(linkId = 'selfHarm') and (answer.value.ofType(Coding).code = 'self-harm-passive')" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "bundle" ] ; fhir:element [ fhir:v "entry" ] ; fhir:variable [ fhir:v "entry" ] ] [ fhir:context [ fhir:v "entry" ] ; fhir:element [ fhir:v "resource" ] ; fhir:variable [ fhir:v "ra" ] ; fhir:transform [ fhir:v "create" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "RiskAssessment" ] ] ) ] ) ; fhir:rule ( [ fhir:name [ fhir:v "responseTags" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "ra" ] ] ) ; fhir:dependent ( [ fhir:name [ fhir:v "CopyResponseTags" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "qr" ] ] [ fhir:value [ a fhir:id ; fhir:v "ra" ] ] ) ] ) ] [ fhir:name [ fhir:v "riskBase" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "ra" ] ] [ fhir:context [ fhir:v "entry" ] ] ) ; fhir:dependent ( [ fhir:name [ fhir:v "BuildRiskBase" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "qr" ] ] [ fhir:value [ a fhir:id ; fhir:v "ra" ] ] [ fhir:value [ a fhir:id ; fhir:v "entry" ] ] ) ] ) ] [ fhir:name [ fhir:v "prediction" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "ra" ] ; fhir:element [ fhir:v "prediction" ] ; fhir:variable [ fhir:v "pred" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "outcome" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "pred" ] ; fhir:element [ fhir:v "outcome" ] ; fhir:variable [ fhir:v "outcome" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "outcomeText" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "outcome" ] ; fhir:element [ fhir:v "text" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "Self-harm" ] ] ) ] ) ] ) ] [ fhir:name [ fhir:v "qualitativeRisk" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "pred" ] ; fhir:element [ fhir:v "qualitativeRisk" ] ; fhir:variable [ fhir:v "risk" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "riskCoding" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "risk" ] ; fhir:element [ fhir:v "coding" ] ; fhir:variable [ fhir:v "coding" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "riskSystem" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "coding" ] ; fhir:element [ fhir:v "system" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "http://terminology.hl7.org/CodeSystem/risk-probability" ] ] ) ] ) ] [ fhir:name [ fhir:v "riskCode" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "coding" ] ; fhir:element [ fhir:v "code" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "moderate" ] ] ) ] ) ] [ fhir:name [ fhir:v "riskDisplay" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "coding" ] ; fhir:element [ fhir:v "display" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "Moderate likelihood" ] ] ) ] ) ] ) ] [ fhir:name [ fhir:v "answerCoding" ] ; fhir:source ( [ fhir:context [ fhir:v "itS" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "risk" ] ] ) ; fhir:dependent ( [ fhir:name [ fhir:v "AddAnswerCodingAndText" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "itS" ] ] [ fhir:value [ a fhir:id ; fhir:v "risk" ] ] ) ] ) ] ) ] ) ] ) ] [ fhir:name [ fhir:v "selfHarmActivePlanRule" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ; fhir:element [ fhir:v "item" ] ; fhir:variable [ fhir:v "itS" ] ; fhir:condition [ fhir:v "(linkId = 'selfHarm') and (answer.value.ofType(Coding).code = 'self-harm-active-plan')" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "bundle" ] ; fhir:element [ fhir:v "entry" ] ; fhir:variable [ fhir:v "entry" ] ] [ fhir:context [ fhir:v "entry" ] ; fhir:element [ fhir:v "resource" ] ; fhir:variable [ fhir:v "ra" ] ; fhir:transform [ fhir:v "create" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "RiskAssessment" ] ] ) ] ) ; fhir:rule ( [ fhir:name [ fhir:v "responseTags" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "ra" ] ] ) ; fhir:dependent ( [ fhir:name [ fhir:v "CopyResponseTags" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "qr" ] ] [ fhir:value [ a fhir:id ; fhir:v "ra" ] ] ) ] ) ] [ fhir:name [ fhir:v "riskBase" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "ra" ] ] [ fhir:context [ fhir:v "entry" ] ] ) ; fhir:dependent ( [ fhir:name [ fhir:v "BuildRiskBase" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "qr" ] ] [ fhir:value [ a fhir:id ; fhir:v "ra" ] ] [ fhir:value [ a fhir:id ; fhir:v "entry" ] ] ) ] ) ] [ fhir:name [ fhir:v "prediction" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "ra" ] ; fhir:element [ fhir:v "prediction" ] ; fhir:variable [ fhir:v "pred" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "outcome" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "pred" ] ; fhir:element [ fhir:v "outcome" ] ; fhir:variable [ fhir:v "outcome" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "outcomeText" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "outcome" ] ; fhir:element [ fhir:v "text" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "Self-harm" ] ] ) ] ) ] ) ] [ fhir:name [ fhir:v "qualitativeRisk" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "pred" ] ; fhir:element [ fhir:v "qualitativeRisk" ] ; fhir:variable [ fhir:v "risk" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "riskCoding" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "risk" ] ; fhir:element [ fhir:v "coding" ] ; fhir:variable [ fhir:v "coding" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "riskSystem" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "coding" ] ; fhir:element [ fhir:v "system" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "http://terminology.hl7.org/CodeSystem/risk-probability" ] ] ) ] ) ] [ fhir:name [ fhir:v "riskCode" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "coding" ] ; fhir:element [ fhir:v "code" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "high" ] ] ) ] ) ] [ fhir:name [ fhir:v "riskDisplay" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "coding" ] ; fhir:element [ fhir:v "display" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "High likelihood" ] ] ) ] ) ] ) ] [ fhir:name [ fhir:v "answerCoding" ] ; fhir:source ( [ fhir:context [ fhir:v "itS" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "risk" ] ] ) ; fhir:dependent ( [ fhir:name [ fhir:v "AddAnswerCodingAndText" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "itS" ] ] [ fhir:value [ a fhir:id ; fhir:v "risk" ] ] ) ] ) ] ) ] ) ] ) ] [ fhir:name [ fhir:v "selfHarmRecentActRule" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ; fhir:element [ fhir:v "item" ] ; fhir:variable [ fhir:v "itS" ] ; fhir:condition [ fhir:v "(linkId = 'selfHarm') and (answer.value.ofType(Coding).code = 'self-harm-recent-act')" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "bundle" ] ; fhir:element [ fhir:v "entry" ] ; fhir:variable [ fhir:v "entry" ] ] [ fhir:context [ fhir:v "entry" ] ; fhir:element [ fhir:v "resource" ] ; fhir:variable [ fhir:v "ra" ] ; fhir:transform [ fhir:v "create" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "RiskAssessment" ] ] ) ] ) ; fhir:rule ( [ fhir:name [ fhir:v "responseTags" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "ra" ] ] ) ; fhir:dependent ( [ fhir:name [ fhir:v "CopyResponseTags" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "qr" ] ] [ fhir:value [ a fhir:id ; fhir:v "ra" ] ] ) ] ) ] [ fhir:name [ fhir:v "riskBase" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "ra" ] ] [ fhir:context [ fhir:v "entry" ] ] ) ; fhir:dependent ( [ fhir:name [ fhir:v "BuildRiskBase" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "qr" ] ] [ fhir:value [ a fhir:id ; fhir:v "ra" ] ] [ fhir:value [ a fhir:id ; fhir:v "entry" ] ] ) ] ) ] [ fhir:name [ fhir:v "prediction" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "ra" ] ; fhir:element [ fhir:v "prediction" ] ; fhir:variable [ fhir:v "pred" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "outcome" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "pred" ] ; fhir:element [ fhir:v "outcome" ] ; fhir:variable [ fhir:v "outcome" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "outcomeText" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "outcome" ] ; fhir:element [ fhir:v "text" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "Self-harm" ] ] ) ] ) ] ) ] [ fhir:name [ fhir:v "qualitativeRisk" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "pred" ] ; fhir:element [ fhir:v "qualitativeRisk" ] ; fhir:variable [ fhir:v "risk" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "riskCoding" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "risk" ] ; fhir:element [ fhir:v "coding" ] ; fhir:variable [ fhir:v "coding" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "riskSystem" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "coding" ] ; fhir:element [ fhir:v "system" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "http://terminology.hl7.org/CodeSystem/risk-probability" ] ] ) ] ) ] [ fhir:name [ fhir:v "riskCode" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "coding" ] ; fhir:element [ fhir:v "code" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "high" ] ] ) ] ) ] [ fhir:name [ fhir:v "riskDisplay" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "coding" ] ; fhir:element [ fhir:v "display" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "High likelihood" ] ] ) ] ) ] ) ] [ fhir:name [ fhir:v "answerCoding" ] ; fhir:source ( [ fhir:context [ fhir:v "itS" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "risk" ] ] ) ; fhir:dependent ( [ fhir:name [ fhir:v "AddAnswerCodingAndText" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "itS" ] ] [ fhir:value [ a fhir:id ; fhir:v "risk" ] ] ) ] ) ] ) ] ) ] ) ] [ fhir:name [ fhir:v "safeguardingRule" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ; fhir:element [ fhir:v "item" ] ; fhir:variable [ fhir:v "itSg" ] ; fhir:condition [ fhir:v "(linkId = 'safeguarding') and answer.value.exists()" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "safeguardingAnswer" ] ; fhir:source ( [ fhir:context [ fhir:v "itSg" ] ; fhir:element [ fhir:v "answer" ] ; fhir:listMode [ fhir:v "first" ] ; fhir:variable [ fhir:v "aSg" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "flag" ] ; fhir:source ( [ fhir:context [ fhir:v "aSg" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "bundle" ] ; fhir:element [ fhir:v "entry" ] ; fhir:variable [ fhir:v "entryF" ] ] [ fhir:context [ fhir:v "entryF" ] ; fhir:element [ fhir:v "resource" ] ; fhir:variable [ fhir:v "flag" ] ; fhir:transform [ fhir:v "create" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "Flag" ] ] ) ] ) ; fhir:rule ( [ fhir:name [ fhir:v "responseTags" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "flag" ] ] ) ; fhir:dependent ( [ fhir:name [ fhir:v "CopyResponseTags" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "qr" ] ] [ fhir:value [ a fhir:id ; fhir:v "flag" ] ] ) ] ) ] [ fhir:name [ fhir:v "idAndFullUrl" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "flag" ] ; fhir:element [ fhir:v "id" ] ; fhir:transform [ fhir:v "uuid" ] ] ) ; fhir:dependent ( [ fhir:name [ fhir:v "SetFlagFullUrl" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "flag" ] ] [ fhir:value [ a fhir:id ; fhir:v "entryF" ] ] ) ] ) ] [ fhir:name [ fhir:v "entryRequest" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "entryF" ] ; fhir:element [ fhir:v "request" ] ; fhir:variable [ fhir:v "request" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "requestMethod" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "request" ] ; fhir:element [ fhir:v "method" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "POST" ] ] ) ] ) ] [ fhir:name [ fhir:v "requestUrl" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "request" ] ; fhir:element [ fhir:v "url" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "Flag" ] ] ) ] ) ] ) ] [ fhir:name [ fhir:v "status" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "flag" ] ; fhir:element [ fhir:v "status" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "active" ] ] ) ] ) ] [ fhir:name [ fhir:v "category" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "flag" ] ; fhir:element [ fhir:v "category" ] ; fhir:variable [ fhir:v "cat" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "categoryCoding" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "cat" ] ; fhir:element [ fhir:v "coding" ] ; fhir:variable [ fhir:v "coding" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "categorySystem" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "coding" ] ; fhir:element [ fhir:v "system" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "http://terminology.hl7.org/CodeSystem/flag-category" ] ] ) ] ) ] [ fhir:name [ fhir:v "categoryCode" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "coding" ] ; fhir:element [ fhir:v "code" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "safety" ] ] ) ] ) ] [ fhir:name [ fhir:v "categoryDisplay" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "coding" ] ; fhir:element [ fhir:v "display" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "Safety" ] ] ) ] ) ] ) ] ) ] [ fhir:name [ fhir:v "flagCode" ] ; fhir:source ( [ fhir:context [ fhir:v "aSg" ] ; fhir:element [ fhir:v "value" ] ; fhir:variable [ fhir:v "v" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "flag" ] ; fhir:element [ fhir:v "code" ] ; fhir:variable [ fhir:v "code" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "codeText" ] ; fhir:source ( [ fhir:context [ fhir:v "v" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "code" ] ; fhir:element [ fhir:v "text" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "v" ] ] ) ] ) ] ) ; fhir:documentation [ fhir:v "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." ] ] [ fhir:name [ fhir:v "subject" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ; fhir:element [ fhir:v "subject" ] ; fhir:variable [ fhir:v "s" ] ; fhir:condition [ fhir:v "(reference.exists() and (reference.startsWith('Patient/') or reference.startsWith('RelatedPerson/') or reference.startsWith('Location/') or reference.startsWith('Group/') or reference.startsWith('Organization/') or reference.startsWith('Practitioner/') or reference.startsWith('PractitionerRole/') or reference.startsWith('PlanDefinition/') or reference.startsWith('Medication/') or reference.startsWith('Procedure/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/RelatedPerson') or ('/' + type).endsWith('/Location') or ('/' + type).endsWith('/Group') or ('/' + type).endsWith('/Organization') or ('/' + type).endsWith('/Practitioner') or ('/' + type).endsWith('/PractitionerRole') or ('/' + type).endsWith('/PlanDefinition') or ('/' + type).endsWith('/Medication') or ('/' + type).endsWith('/Procedure')))" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "flag" ] ; fhir:element [ fhir:v "subject" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "s" ] ] ) ] ) ] [ fhir:name [ fhir:v "encounter" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ; fhir:element [ fhir:v "encounter" ] ; fhir:variable [ fhir:v "e" ] ; fhir:condition [ fhir:v "(reference.exists() and (reference.startsWith('Encounter/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Encounter')))" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "flag" ] ; fhir:element [ fhir:v "encounter" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "e" ] ] ) ] ) ] [ fhir:name [ fhir:v "period" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ; fhir:element [ fhir:v "authored" ] ; fhir:variable [ fhir:v "t" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "flag" ] ; fhir:element [ fhir:v "period" ] ; fhir:variable [ fhir:v "period" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "periodStart" ] ; fhir:source ( [ fhir:context [ fhir:v "t" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "period" ] ; fhir:element [ fhir:v "start" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "t" ] ] ) ] ) ] ) ] [ fhir:name [ fhir:v "authorFromAuthor" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ; fhir:element [ fhir:v "author" ] ; fhir:variable [ fhir:v "a" ] ; fhir:condition [ fhir:v "(reference.exists() and (reference.startsWith('Device/') or reference.startsWith('Organization/') or reference.startsWith('Patient/') or reference.startsWith('RelatedPerson/') or reference.startsWith('Practitioner/') or reference.startsWith('PractitionerRole/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Device') or ('/' + type).endsWith('/Organization') or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/RelatedPerson') or ('/' + type).endsWith('/Practitioner') or ('/' + type).endsWith('/PractitionerRole')))" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "flag" ] ; fhir:element [ fhir:v "author" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "a" ] ] ) ] ) ] [ fhir:name [ fhir:v "authorFallback" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ; fhir:condition [ fhir:v "author.where(((reference.exists() and (reference.startsWith('Device/') or reference.startsWith('Organization/') or reference.startsWith('Patient/') or reference.startsWith('RelatedPerson/') or reference.startsWith('Practitioner/') or reference.startsWith('PractitionerRole/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Device') or ('/' + type).endsWith('/Organization') or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/RelatedPerson') or ('/' + type).endsWith('/Practitioner') or ('/' + type).endsWith('/PractitionerRole'))))).exists().not()" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "authorFromSource" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ; fhir:element [ fhir:v "source" ] ; fhir:variable [ fhir:v "src" ] ; fhir:condition [ fhir:v "(reference.exists() and (reference.startsWith('Device/') or reference.startsWith('Organization/') or reference.startsWith('Patient/') or reference.startsWith('RelatedPerson/') or reference.startsWith('Practitioner/') or reference.startsWith('PractitionerRole/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Device') or ('/' + type).endsWith('/Organization') or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/RelatedPerson') or ('/' + type).endsWith('/Practitioner') or ('/' + type).endsWith('/PractitionerRole')))" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "flag" ] ; fhir:element [ fhir:v "author" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "src" ] ] ) ] ) ] ) ] ) ] ) ] ) ; fhir:documentation [ fhir:v "── 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." ] ] ) ] [ fhir:name [ fhir:v "AddAnswerCodingAndText" ] ; fhir:documentation [ fhir:v "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." ] ; fhir:input ( [ fhir:name [ fhir:v "it" ] ; fhir:mode [ fhir:v "source" ] ] [ fhir:name [ fhir:v "risk" ] ; fhir:mode [ fhir:v "target" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "answer" ] ; fhir:source ( [ fhir:context [ fhir:v "it" ] ; fhir:element [ fhir:v "answer" ] ; fhir:listMode [ fhir:v "first" ] ; fhir:variable [ fhir:v "a" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "answerCoding" ] ; fhir:source ( [ fhir:context [ fhir:v "a" ] ; fhir:element [ fhir:v "value" ] ; fhir:variable [ fhir:v "cv" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "risk" ] ; fhir:element [ fhir:v "coding" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "cv" ] ] ) ] ) ] [ fhir:name [ fhir:v "answerDisplay" ] ; fhir:source ( [ fhir:context [ fhir:v "a" ] ; fhir:element [ fhir:v "value" ] ; fhir:variable [ fhir:v "cv" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "answerText" ] ; fhir:source ( [ fhir:context [ fhir:v "cv" ] ; fhir:element [ fhir:v "display" ] ; fhir:variable [ fhir:v "d" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "risk" ] ; fhir:element [ fhir:v "text" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "d" ] ] ) ] ) ] ) ] ) ] ) ] [ fhir:name [ fhir:v "BuildObsBase" ] ; fhir:documentation [ fhir:v "─────────────────────────────────────────────────────────────────────────────\r\nShared scaffolding. Repeated in each map rather than imported: the transform\r\nengine resolves `imports` against whatever StructureMaps happen to be on the\r\nserver, and a form that stops extracting because a shared map was not\r\nuploaded is a worse failure than a duplicated group.\r\n─────────────────────────────────────────────────────────────────────────────\r\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." ] ; fhir:input ( [ fhir:name [ fhir:v "qr" ] ; fhir:type [ fhir:v "QR" ] ; fhir:mode [ fhir:v "source" ] ] [ fhir:name [ fhir:v "obs" ] ; fhir:type [ fhir:v "Observation" ] ; fhir:mode [ fhir:v "target" ] ] [ fhir:name [ fhir:v "entry" ] ; fhir:mode [ fhir:v "target" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "idAndFullUrl" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "obs" ] ; fhir:element [ fhir:v "id" ] ; fhir:transform [ fhir:v "uuid" ] ] ) ; fhir:dependent ( [ fhir:name [ fhir:v "SetObservationFullUrl" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "obs" ] ] [ fhir:value [ a fhir:id ; fhir:v "entry" ] ] ) ] ) ] [ fhir:name [ fhir:v "entryRequest" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "entry" ] ; fhir:element [ fhir:v "request" ] ; fhir:variable [ fhir:v "request" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "requestMethod" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "request" ] ; fhir:element [ fhir:v "method" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "POST" ] ] ) ] ) ] [ fhir:name [ fhir:v "requestUrl" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "request" ] ; fhir:element [ fhir:v "url" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "Observation" ] ] ) ] ) ] ) ] [ fhir:name [ fhir:v "status" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "obs" ] ; fhir:element [ fhir:v "status" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "final" ] ] ) ] ) ] [ fhir:name [ fhir:v "subject" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ; fhir:element [ fhir:v "subject" ] ; fhir:variable [ fhir:v "s" ] ; fhir:condition [ fhir:v "(reference.exists() and (reference.startsWith('Patient/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient')))" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "obs" ] ; fhir:element [ fhir:v "subject" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "s" ] ] ) ] ) ] [ fhir:name [ fhir:v "encounter" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ; fhir:element [ fhir:v "encounter" ] ; fhir:variable [ fhir:v "e" ] ; fhir:condition [ fhir:v "(reference.exists() and (reference.startsWith('Encounter/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Encounter')))" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "obs" ] ; fhir:element [ fhir:v "encounter" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "e" ] ] ) ] ) ] [ fhir:name [ fhir:v "effective" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ; fhir:element [ fhir:v "authored" ] ; fhir:variable [ fhir:v "t" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "obs" ] ; fhir:element [ fhir:v "effective" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "t" ] ] ) ] ) ] [ fhir:name [ fhir:v "performerFromSource" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ; fhir:element [ fhir:v "source" ] ; fhir:variable [ fhir:v "src" ] ; fhir:condition [ fhir:v "(reference.exists() and (reference.startsWith('Organization/') or reference.startsWith('Patient/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Organization') or ('/' + type).endsWith('/Patient')))" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "obs" ] ; fhir:element [ fhir:v "performer" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "src" ] ] ) ] ) ] [ fhir:name [ fhir:v "performerFallback" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ; fhir:condition [ fhir:v "source.where(((reference.exists() and (reference.startsWith('Organization/') or reference.startsWith('Patient/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Organization') or ('/' + type).endsWith('/Patient'))))).exists().not()" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "performerFromAuthor" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ; fhir:element [ fhir:v "author" ] ; fhir:variable [ fhir:v "a" ] ; fhir:condition [ fhir:v "(reference.exists() and (reference.startsWith('Organization/') or reference.startsWith('Patient/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Organization') or ('/' + type).endsWith('/Patient')))" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "obs" ] ; fhir:element [ fhir:v "performer" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "a" ] ] ) ] ) ] ) ] [ fhir:name [ fhir:v "linkQuestionnaireResponse" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "obs" ] ; fhir:element [ fhir:v "derivedFrom" ] ; fhir:variable [ fhir:v "ref" ] ; fhir:transform [ fhir:v "create" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "Reference" ] ] ) ] ) ; fhir:rule ( [ fhir:name [ fhir:v "derivedFromRef" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ; fhir:element [ fhir:v "id" ] ; fhir:variable [ fhir:v "qid" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "ref" ] ; fhir:element [ fhir:v "reference" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "qid" ] ] ) ] ) ] ) ] ) ] [ fhir:name [ fhir:v "BuildRiskBase" ] ; fhir:documentation [ fhir:v "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." ] ; fhir:input ( [ fhir:name [ fhir:v "qr" ] ; fhir:type [ fhir:v "QR" ] ; fhir:mode [ fhir:v "source" ] ] [ fhir:name [ fhir:v "ra" ] ; fhir:type [ fhir:v "RiskAssessment" ] ; fhir:mode [ fhir:v "target" ] ] [ fhir:name [ fhir:v "entry" ] ; fhir:mode [ fhir:v "target" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "idAndFullUrl" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "ra" ] ; fhir:element [ fhir:v "id" ] ; fhir:transform [ fhir:v "uuid" ] ] ) ; fhir:dependent ( [ fhir:name [ fhir:v "SetRiskAssessmentFullUrl" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "ra" ] ] [ fhir:value [ a fhir:id ; fhir:v "entry" ] ] ) ] ) ] [ fhir:name [ fhir:v "entryRequest" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "entry" ] ; fhir:element [ fhir:v "request" ] ; fhir:variable [ fhir:v "request" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "requestMethod" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "request" ] ; fhir:element [ fhir:v "method" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "POST" ] ] ) ] ) ] [ fhir:name [ fhir:v "requestUrl" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "request" ] ; fhir:element [ fhir:v "url" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "RiskAssessment" ] ] ) ] ) ] ) ] [ fhir:name [ fhir:v "status" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "ra" ] ; fhir:element [ fhir:v "status" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "final" ] ] ) ] ) ] [ fhir:name [ fhir:v "code" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "ra" ] ; fhir:element [ fhir:v "code" ] ; fhir:variable [ fhir:v "code" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "codeCoding" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "code" ] ; fhir:element [ fhir:v "coding" ] ; fhir:variable [ fhir:v "coding" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "codeSystem" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "coding" ] ; fhir:element [ fhir:v "system" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "https://fhir.slade360.co.ke/fhir/CodeSystem/inpatient-clinical-concept-codesystem" ] ] ) ] ) ] [ fhir:name [ fhir:v "codeCode" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "coding" ] ; fhir:element [ fhir:v "code" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "self-harm-risk" ] ] ) ] ) ] [ fhir:name [ fhir:v "codeDisplay" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "coding" ] ; fhir:element [ fhir:v "display" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "Risk of self-harm" ] ] ) ] ) ] ) ] [ fhir:name [ fhir:v "codeText" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "code" ] ; fhir:element [ fhir:v "text" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "Risk of self-harm" ] ] ) ] ) ] ) ] [ fhir:name [ fhir:v "subject" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ; fhir:element [ fhir:v "subject" ] ; fhir:variable [ fhir:v "s" ] ; fhir:condition [ fhir:v "(reference.exists() and (reference.startsWith('Patient/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient')))" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "ra" ] ; fhir:element [ fhir:v "subject" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "s" ] ] ) ] ) ] [ fhir:name [ fhir:v "encounter" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ; fhir:element [ fhir:v "encounter" ] ; fhir:variable [ fhir:v "e" ] ; fhir:condition [ fhir:v "(reference.exists() and (reference.startsWith('Encounter/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Encounter')))" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "ra" ] ; fhir:element [ fhir:v "encounter" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "e" ] ] ) ] ) ] [ fhir:name [ fhir:v "occurrence" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ; fhir:element [ fhir:v "authored" ] ; fhir:variable [ fhir:v "t" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "ra" ] ; fhir:element [ fhir:v "occurrence" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "t" ] ] ) ] ) ] [ fhir:name [ fhir:v "performerFromAuthor" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ; fhir:element [ fhir:v "author" ] ; fhir:variable [ fhir:v "a" ] ; fhir:condition [ fhir:v "(reference.exists() and (reference.startsWith('Patient/') or reference.startsWith('Practitioner/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/Practitioner')))" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "ra" ] ; fhir:element [ fhir:v "performer" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "a" ] ] ) ] ) ] [ fhir:name [ fhir:v "performerFallback" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ; fhir:condition [ fhir:v "author.where(((reference.exists() and (reference.startsWith('Patient/') or reference.startsWith('Practitioner/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/Practitioner'))))).exists().not()" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "performerFromSource" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ; fhir:element [ fhir:v "source" ] ; fhir:variable [ fhir:v "src" ] ; fhir:condition [ fhir:v "(reference.exists() and (reference.startsWith('Patient/') or reference.startsWith('Practitioner/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/Practitioner')))" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "ra" ] ; fhir:element [ fhir:v "performer" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "src" ] ] ) ] ) ] ) ] [ fhir:name [ fhir:v "basisResponse" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "ra" ] ; fhir:element [ fhir:v "basis" ] ; fhir:variable [ fhir:v "qref" ] ; fhir:transform [ fhir:v "create" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "Reference" ] ] ) ] ) ; fhir:rule ( [ fhir:name [ fhir:v "basisQuestionnaireResponse" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ; fhir:element [ fhir:v "id" ] ; fhir:variable [ fhir:v "qid" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "qref" ] ; fhir:element [ fhir:v "reference" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "qid" ] ] ) ] ) ] ) ] [ fhir:name [ fhir:v "whatWasSaidRule" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ; fhir:element [ fhir:v "item" ] ; fhir:variable [ fhir:v "itD" ] ; fhir:condition [ fhir:v "(linkId = 'selfHarmDetail') and answer.value.exists()" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "detailAnswer" ] ; fhir:source ( [ fhir:context [ fhir:v "itD" ] ; fhir:element [ fhir:v "answer" ] ; fhir:listMode [ fhir:v "first" ] ; fhir:variable [ fhir:v "aD" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "note" ] ; fhir:source ( [ fhir:context [ fhir:v "aD" ] ; fhir:element [ fhir:v "value" ] ; fhir:variable [ fhir:v "v" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "ra" ] ; fhir:element [ fhir:v "note" ] ; fhir:variable [ fhir:v "note" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "noteText" ] ; fhir:source ( [ fhir:context [ fhir:v "v" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "note" ] ; fhir:element [ fhir:v "text" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "v" ] ] ) ] ) ] ) ] ) ] ) ] ) ] [ fhir:name [ fhir:v "SetCodedValue" ] ; fhir:input ( [ fhir:name [ fhir:v "a" ] ; fhir:mode [ fhir:v "source" ] ] [ fhir:name [ fhir:v "obs" ] ; fhir:type [ fhir:v "Observation" ] ; fhir:mode [ fhir:v "target" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "codedValue" ] ; fhir:source ( [ fhir:context [ fhir:v "a" ] ; fhir:element [ fhir:v "value" ] ; fhir:variable [ fhir:v "cv" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "obs" ] ; fhir:element [ fhir:v "value" ] ; fhir:variable [ fhir:v "cc" ] ; fhir:transform [ fhir:v "create" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "CodeableConcept" ] ] ) ] ) ; fhir:rule ( [ fhir:name [ fhir:v "valueCoding" ] ; fhir:source ( [ fhir:context [ fhir:v "cv" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "cc" ] ; fhir:element [ fhir:v "coding" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "cv" ] ] ) ] ) ] [ fhir:name [ fhir:v "valueText" ] ; fhir:source ( [ fhir:context [ fhir:v "cv" ] ; fhir:element [ fhir:v "display" ] ; fhir:variable [ fhir:v "d" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "cc" ] ; fhir:element [ fhir:v "text" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "d" ] ] ) ] ) ] ) ] ) ] [ fhir:name [ fhir:v "SetExamCategory" ] ; fhir:input ( [ fhir:name [ fhir:v "qr" ] ; fhir:type [ fhir:v "QR" ] ; fhir:mode [ fhir:v "source" ] ] [ fhir:name [ fhir:v "obs" ] ; fhir:type [ fhir:v "Observation" ] ; fhir:mode [ fhir:v "target" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "category" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "obs" ] ; fhir:element [ fhir:v "category" ] ; fhir:variable [ fhir:v "cat" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "categoryCoding" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "cat" ] ; fhir:element [ fhir:v "coding" ] ; fhir:variable [ fhir:v "coding" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "categorySystem" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "coding" ] ; fhir:element [ fhir:v "system" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "http://terminology.hl7.org/CodeSystem/observation-category" ] ] ) ] ) ] [ fhir:name [ fhir:v "categoryCode" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "coding" ] ; fhir:element [ fhir:v "code" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "exam" ] ] ) ] ) ] [ fhir:name [ fhir:v "categoryDisplay" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "coding" ] ; fhir:element [ fhir:v "display" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "Exam" ] ] ) ] ) ] ) ] ) ] ) ] [ fhir:name [ fhir:v "SetObservationFullUrl" ] ; fhir:input ( [ fhir:name [ fhir:v "obs" ] ; fhir:type [ fhir:v "Observation" ] ; fhir:mode [ fhir:v "source" ] ] [ fhir:name [ fhir:v "entry" ] ; fhir:mode [ fhir:v "target" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "assignFullUrl" ] ; fhir:source ( [ fhir:context [ fhir:v "obs" ] ; fhir:element [ fhir:v "id" ] ; fhir:variable [ fhir:v "id" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "entry" ] ; fhir:element [ fhir:v "fullUrl" ] ; fhir:transform [ fhir:v "append" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "https://fhir.slade360.co.ke/fhir/Observation/" ] ] [ fhir:value [ a fhir:id ; fhir:v "id" ] ] ) ] ) ] ) ] [ fhir:name [ fhir:v "SetRiskAssessmentFullUrl" ] ; fhir:input ( [ fhir:name [ fhir:v "ra" ] ; fhir:type [ fhir:v "RiskAssessment" ] ; fhir:mode [ fhir:v "source" ] ] [ fhir:name [ fhir:v "entry" ] ; fhir:mode [ fhir:v "target" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "assignFullUrl" ] ; fhir:source ( [ fhir:context [ fhir:v "ra" ] ; fhir:element [ fhir:v "id" ] ; fhir:variable [ fhir:v "id" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "entry" ] ; fhir:element [ fhir:v "fullUrl" ] ; fhir:transform [ fhir:v "append" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "https://fhir.slade360.co.ke/fhir/RiskAssessment/" ] ] [ fhir:value [ a fhir:id ; fhir:v "id" ] ] ) ] ) ] ) ] [ fhir:name [ fhir:v "SetFlagFullUrl" ] ; fhir:input ( [ fhir:name [ fhir:v "flag" ] ; fhir:type [ fhir:v "Flag" ] ; fhir:mode [ fhir:v "source" ] ] [ fhir:name [ fhir:v "entry" ] ; fhir:mode [ fhir:v "target" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "assignFullUrl" ] ; fhir:source ( [ fhir:context [ fhir:v "flag" ] ; fhir:element [ fhir:v "id" ] ; fhir:variable [ fhir:v "id" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "entry" ] ; fhir:element [ fhir:v "fullUrl" ] ; fhir:transform [ fhir:v "append" ] ; fhir:parameter ( [ fhir:value [ a fhir:string ; fhir:v "https://fhir.slade360.co.ke/fhir/Flag/" ] ] [ fhir:value [ a fhir:id ; fhir:v "id" ] ] ) ] ) ] ) ] [ fhir:name [ fhir:v "CopyResponseTags" ] ; fhir:documentation [ fhir:v "── Tenancy ──────────────────────────────────────────────────────────────────\r\nWhose this is. The platform says which tenant a response belongs to with a\r\ntag on the response, and every tag the response carries is copied onto\r\neverything this map creates, as it is. Copied rather than named here, so the\r\nmap never has to know which tenant it is running for, nor which system the\r\ntag is under: that system has moved more than once." ] ; fhir:input ( [ fhir:name [ fhir:v "qr" ] ; fhir:type [ fhir:v "QR" ] ; fhir:mode [ fhir:v "source" ] ] [ fhir:name [ fhir:v "r" ] ; fhir:mode [ fhir:v "target" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "tenantTags" ] ; fhir:source ( [ fhir:context [ fhir:v "qr" ] ; fhir:element [ fhir:v "meta" ] ; fhir:variable [ fhir:v "qm" ] ] ) ; fhir:rule ( [ fhir:name [ fhir:v "copyTag" ] ; fhir:source ( [ fhir:context [ fhir:v "qm" ] ; fhir:element [ fhir:v "tag" ] ; fhir:variable [ fhir:v "qt" ] ] ) ; fhir:target ( [ fhir:context [ fhir:v "r" ] ; fhir:element [ fhir:v "meta" ] ; fhir:variable [ fhir:v "m" ] ] [ fhir:context [ fhir:v "m" ] ; fhir:element [ fhir:v "tag" ] ; fhir:transform [ fhir:v "copy" ] ; fhir:parameter ( [ fhir:value [ a fhir:id ; fhir:v "qt" ] ] ) ] ) ] ) ] ) ] ) . #
IG © 2025+ Kathurima Kimathi. Package silfhirprofileig#0.1.0 based on FHIR 5.0.0. Generated 2026-10-06
Links: Table of Contents |
QA Report