SGHI FHIR Profile Implementation Guide
0.1.0 - ci-build

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

: Inpatient Surgical Pre-operative Assessment Extraction - TTL Representation

Active as of 2026-10-06

Raw ttl | Download

@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/ExtractInpatientSurgicalPreoperativeAssessment> a fhir:StructureMap ;
  fhir:nodeRole fhir:treeRoot ;
  fhir:id [ fhir:v "ExtractInpatientSurgicalPreoperativeAssessment"] ; # 
  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 ExtractInpatientSurgicalPreoperativeAssessment</b></p><a name=\"ExtractInpatientSurgicalPreoperativeAssessment\"> </a><a name=\"hcExtractInpatientSurgicalPreoperativeAssessment\"> </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/ExtractInpatientSurgicalPreoperativeAssessment'</span>\r\n<span style=\"color: #cc00cc\">/// <b>name</b> = </span><span style=\"color: blue\">'ExtractInpatientSurgicalPreoperativeAssessment'</span>\r\n<span style=\"color: #cc00cc\">/// <b>title</b> = </span><span style=\"color: blue\">'Inpatient Surgical Pre-operative 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\">'The planned procedure becomes a ServiceRequest, the ASA grade and the last oral intake become Observations, and the clinician who took consent becomes a Consent verified by them. The procedure carries the surgeon\\'s wording rather than a procedure code -- the form is free text and matching prose to a code system would guess at what is being operated on. Consent.decision is `permit` because the form only exists once consent has been obtained; a refusal is not something this assessment records.'</span>\r\n\r\n<b>uses</b><span style=\"color: navy\"> &quot;</span><a href=\"http://hl7.org/fhir/R5/questionnaireresponse.html\" title=\"QuestionnaireResponse\">http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse</a><span style=\"color: navy\">&quot; </span><b>alias </b>QR <b>as </b><b>source</b>\r\n<b>uses</b><span style=\"color: navy\"> &quot;</span><a href=\"http://hl7.org/fhir/R5/bundle.html\" title=\"Bundle\">http://hl7.org/fhir/StructureDefinition/Bundle</a><span style=\"color: navy\">&quot; </span><b>alias </b>Bundle <b>as </b><b>target</b>\r\n<b>uses</b><span style=\"color: navy\"> &quot;</span><a href=\"http://hl7.org/fhir/R5/observation.html\" title=\"Observation\">http://hl7.org/fhir/StructureDefinition/Observation</a><span style=\"color: navy\">&quot; </span><b>alias </b>Observation <b>as </b><b>target</b>\r\n<b>uses</b><span style=\"color: navy\"> &quot;</span><a href=\"http://hl7.org/fhir/R5/servicerequest.html\" title=\"ServiceRequest\">http://hl7.org/fhir/StructureDefinition/ServiceRequest</a><span style=\"color: navy\">&quot; </span><b>alias </b>ServiceRequest <b>as </b><b>target</b>\r\n<b>uses</b><span style=\"color: navy\"> &quot;</span><a href=\"http://hl7.org/fhir/R5/consent.html\" title=\"Consent\">http://hl7.org/fhir/StructureDefinition/Consent</a><span style=\"color: navy\">&quot; </span><b>alias </b>Consent <b>as </b><b>target</b>\r\n\r\n<b>group </b>ExtractInpatientSurgicalPreoperativeAssessment<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">qr</span><span style=\"color: navy\"> : </span>QR, <b>target</b> <span style=\"color: maroon\">bundle</span><span style=\"color: navy\"> : </span>Bundle<span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span>  qr<span style=\"color: navy\"><b> -&gt; </b></span>bundle.type = <span style=\"color: blue\">'transaction'</span> <i>&quot;setBundleType&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">── Planned procedure ──────────────────────────────────────────────────────</span>\r\n  qr.item<b> as </b><span style=\"color: maroon\">itP</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'procedure') and answer.value.exists()<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    itP.answer first<b> as </b><span style=\"color: maroon\">aP</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      aP<span style=\"color: navy\"><b> -&gt; </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entryP</span><span style=\"color: navy\">, </span> entryP.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'ServiceRequest'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">sr</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        qr<span style=\"color: navy\"><b> -&gt; </b></span>sr<b> then </b>CopyResponseTags<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">sr</span><span style=\"color: navy\">)</span> <i>&quot;responseTags&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>sr.id = <b>uuid</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> then </b>SetServiceRequestFullUrl<span style=\"color: navy\">(</span><span style=\"color: maroon\">sr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entryP</span><span style=\"color: navy\">)</span> <i>&quot;idAndFullUrl&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>entryP.request<b> as </b><span style=\"color: maroon\">request</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          qr<span style=\"color: navy\"><b> -&gt; </b></span>request.method = <span style=\"color: blue\">'POST'</span> <i>&quot;requestMethod&quot;</i><span style=\"color: navy\">;</span>\r\n          qr<span style=\"color: navy\"><b> -&gt; </b></span>request.url = <span style=\"color: blue\">'ServiceRequest'</span> <i>&quot;requestUrl&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;entryRequest&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>sr.status = <span style=\"color: blue\">'active'</span> <i>&quot;status&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>sr.intent = <span style=\"color: blue\">'plan'</span> <i>&quot;intent&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>sr.priority = <span style=\"color: blue\">'routine'</span> <i>&quot;priority&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">// </span><span style=\"color: green\">R5 ServiceRequest.code is a CodeableReference, so the concept sits one</span>\r\n        <span style=\"color: navy\">// </span><span style=\"color: green\">level down.</span>\r\n        aP.value<b> as </b><span style=\"color: maroon\">v</span><span style=\"color: navy\"><b> -&gt; </b></span>sr.code<b> as </b><span style=\"color: maroon\">codeRef</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          aP<span style=\"color: navy\"><b> -&gt; </b></span>codeRef.concept<b> as </b><span style=\"color: maroon\">concept</span><b> then</b><span style=\"color: navy\"> {\r\n</span>            aP<span style=\"color: navy\"><b> -&gt; </b></span>concept.coding<b> as </b><span style=\"color: maroon\">coding</span><b> then</b><span style=\"color: navy\"> {\r\n</span>              aP<span style=\"color: navy\"><b> -&gt; </b></span>coding.system = <span style=\"color: blue\">'https://fhir.slade360.co.ke/fhir/CodeSystem/inpatient-clinical-concept-codesystem'</span> <i>&quot;codeSystem&quot;</i><span style=\"color: navy\">;</span>\r\n              aP<span style=\"color: navy\"><b> -&gt; </b></span>coding.code = <span style=\"color: blue\">'planned-procedure'</span> <i>&quot;codeCode&quot;</i><span style=\"color: navy\">;</span>\r\n              aP<span style=\"color: navy\"><b> -&gt; </b></span>coding.display = <span style=\"color: blue\">'Planned procedure'</span> <i>&quot;codeDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n            <span style=\"color: navy\">}</span> <i>&quot;codeCoding&quot;</i><span style=\"color: navy\">;</span>\r\n            v<span style=\"color: navy\"><b> -&gt; </b></span>concept.text = <span style=\"color: maroon\">v</span> <i>&quot;codeText&quot;</i><span style=\"color: navy\">;</span>\r\n          <span style=\"color: navy\">}</span> <i>&quot;codeConcept&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;serviceRequestCode&quot;</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> -&gt; </b></span>sr.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> -&gt; </b></span>sr.encounter = <span style=\"color: maroon\">e</span><span style=\"color: navy\">;</span>\r\n        qr.authored<b> as </b><span style=\"color: maroon\">t</span><span style=\"color: navy\"><b> -&gt; </b></span>sr.authoredOn = <span style=\"color: maroon\">t</span> <i>&quot;authoredOn&quot;</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('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> -&gt; </b></span>sr.requester = <span style=\"color: maroon\">a</span> <i>&quot;requesterFromAuthor&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<b> where </b><span style=\"color: navy\">(</span>author.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.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> -&gt; </b></span>sr.requester = <span style=\"color: maroon\">src</span> <i>&quot;requesterFromSource&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;requesterFallback&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>sr.supportingInfo<b> as </b><span style=\"color: maroon\">si</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          qr<span style=\"color: navy\"><b> -&gt; </b></span>si.reference = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Reference'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">ref</span><b> then</b><span style=\"color: navy\"> {\r\n</span>            qr.id<b> as </b><span style=\"color: maroon\">qid</span><span style=\"color: navy\"><b> -&gt; </b></span>ref.reference = <span style=\"color: maroon\">qid</span> <i>&quot;supportingInfoRef&quot;</i><span style=\"color: navy\">;</span>\r\n          <span style=\"color: navy\">}</span> <i>&quot;supportingInfoTarget&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;linkQuestionnaireResponse&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;serviceRequest&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;procedureAnswer&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;procedureRule&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">── ASA grade ──────────────────────────────────────────────────────────────</span>\r\n  qr.item<b> as </b><span style=\"color: maroon\">itA</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'asa') and answer.value.exists()<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    itA.answer first<b> as </b><span style=\"color: maroon\">aA</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      aA<span style=\"color: navy\"><b> -&gt; </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entryA</span><span style=\"color: navy\">, </span> entryA.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\">obsA</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        qr<span style=\"color: navy\"><b> -&gt; </b></span>obsA<b> then </b>CopyResponseTags<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obsA</span><span style=\"color: navy\">)</span> <i>&quot;responseTags&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span> obsA<span style=\"color: navy\">, </span> entryA<b> then </b>BuildObsBase<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obsA</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entryA</span><span style=\"color: navy\">)</span> <i>&quot;asaBase&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>obsA<b> then </b>SetSurveyCategory<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obsA</span><span style=\"color: navy\">)</span> <i>&quot;asaCategory&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>obsA.code<b> as </b><span style=\"color: maroon\">code</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          qr<span style=\"color: navy\"><b> -&gt; </b></span>code.coding<b> as </b><span style=\"color: maroon\">coding</span><b> then</b><span style=\"color: navy\"> {\r\n</span>            qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.system = <span style=\"color: blue\">'http://loinc.org'</span> <i>&quot;codeSystem&quot;</i><span style=\"color: navy\">;</span>\r\n            qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.code = <span style=\"color: blue\">'97816-3'</span> <i>&quot;codeCode&quot;</i><span style=\"color: navy\">;</span>\r\n            qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.display = <span style=\"color: blue\">'American society of anesthesiologists morbidity state'</span> <i>&quot;codeDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n          <span style=\"color: navy\">}</span> <i>&quot;codeCoding&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;asaCode&quot;</i><span style=\"color: navy\">;</span>\r\n        aA<span style=\"color: navy\"><b> -&gt; </b></span>obsA<b> then </b>SetCodedValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">aA</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obsA</span><span style=\"color: navy\">)</span> <i>&quot;asaValue&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;asaObservation&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;asaAnswer&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;asaRule&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">── Last oral intake ───────────────────────────────────────────────────────</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">Reported by the patient rather than measured, hence `social-history`. The</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">answer is a dateTime and goes through as one: LOINC 67517-3 is defined as a</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">date and time, so no Quantity is involved.</span>\r\n  qr.item<b> as </b><span style=\"color: maroon\">itN</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'nbm') and answer.value.exists()<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    itN.answer first<b> as </b><span style=\"color: maroon\">aN</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      aN<span style=\"color: navy\"><b> -&gt; </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entryN</span><span style=\"color: navy\">, </span> entryN.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\">obsN</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        qr<span style=\"color: navy\"><b> -&gt; </b></span>obsN<b> then </b>CopyResponseTags<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obsN</span><span style=\"color: navy\">)</span> <i>&quot;responseTags&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span> obsN<span style=\"color: navy\">, </span> entryN<b> then </b>BuildObsBase<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obsN</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entryN</span><span style=\"color: navy\">)</span> <i>&quot;nbmBase&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>obsN<b> then </b>SetSocialHistoryCategory<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obsN</span><span style=\"color: navy\">)</span> <i>&quot;nbmCategory&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>obsN.code<b> as </b><span style=\"color: maroon\">code</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          qr<span style=\"color: navy\"><b> -&gt; </b></span>code.coding<b> as </b><span style=\"color: maroon\">coding</span><b> then</b><span style=\"color: navy\"> {\r\n</span>            qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.system = <span style=\"color: blue\">'http://loinc.org'</span> <i>&quot;codeSystem&quot;</i><span style=\"color: navy\">;</span>\r\n            qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.code = <span style=\"color: blue\">'67517-3'</span> <i>&quot;codeCode&quot;</i><span style=\"color: navy\">;</span>\r\n            qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.display = <span style=\"color: blue\">'Last oral intake [Date and time]'</span> <i>&quot;codeDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n          <span style=\"color: navy\">}</span> <i>&quot;codeCoding&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;nbmCode&quot;</i><span style=\"color: navy\">;</span>\r\n        aN.value<b> as </b><span style=\"color: maroon\">v</span><span style=\"color: navy\"><b> -&gt; </b></span>obsN.value = <span style=\"color: maroon\">v</span> <i>&quot;nbmValue&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;nbmObservation&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;nbmAnswer&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;nbmRule&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">── Consent ────────────────────────────────────────────────────────────────</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">The person named on the form is the person who took the consent, which is</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">verification.verifiedBy: the patient is the grantor, and the clinician</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">attests that the conversation happened.</span>\r\n  qr.item<b> as </b><span style=\"color: maroon\">itC</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'consentBy') and answer.value.exists()<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    itC.answer first<b> as </b><span style=\"color: maroon\">aC</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      aC<span style=\"color: navy\"><b> -&gt; </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entryC</span><span style=\"color: navy\">, </span> entryC.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Consent'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">consent</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        qr<span style=\"color: navy\"><b> -&gt; </b></span>consent<b> then </b>CopyResponseTags<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">consent</span><span style=\"color: navy\">)</span> <i>&quot;responseTags&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>consent.id = <b>uuid</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> then </b>SetConsentFullUrl<span style=\"color: navy\">(</span><span style=\"color: maroon\">consent</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entryC</span><span style=\"color: navy\">)</span> <i>&quot;idAndFullUrl&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>entryC.request<b> as </b><span style=\"color: maroon\">request</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          qr<span style=\"color: navy\"><b> -&gt; </b></span>request.method = <span style=\"color: blue\">'POST'</span> <i>&quot;requestMethod&quot;</i><span style=\"color: navy\">;</span>\r\n          qr<span style=\"color: navy\"><b> -&gt; </b></span>request.url = <span style=\"color: blue\">'Consent'</span> <i>&quot;requestUrl&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;entryRequest&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>consent.status = <span style=\"color: blue\">'active'</span> <i>&quot;status&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>consent.category<b> as </b><span style=\"color: maroon\">cat</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          qr<span style=\"color: navy\"><b> -&gt; </b></span>cat.coding<b> as </b><span style=\"color: maroon\">coding</span><b> then</b><span style=\"color: navy\"> {\r\n</span>            qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.system = <span style=\"color: blue\">'http://loinc.org'</span> <i>&quot;categorySystem&quot;</i><span style=\"color: navy\">;</span>\r\n            qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.code = <span style=\"color: blue\">'59284-0'</span> <i>&quot;categoryCode&quot;</i><span style=\"color: navy\">;</span>\r\n            qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.display = <span style=\"color: blue\">'Consent Document'</span> <i>&quot;categoryDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n          <span style=\"color: navy\">}</span> <i>&quot;categoryCoding&quot;</i><span style=\"color: navy\">;</span>\r\n          qr<span style=\"color: navy\"><b> -&gt; </b></span>cat.text = <span style=\"color: blue\">'Consent for the planned procedure'</span> <i>&quot;categoryText&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;category&quot;</i><span style=\"color: navy\">;</span>\r\n        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> -&gt; </b></span>consent.subject = <span style=\"color: maroon\">s</span><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">// </span><span style=\"color: green\">Consent.date is a `date`, not a dateTime, so the day is taken off the</span>\r\n        <span style=\"color: navy\">// </span><span style=\"color: green\">front of the authored timestamp rather than assigned whole.</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>consent.date = evaluate<span style=\"color: navy\">(</span>qr<span style=\"color: navy\">, </span>authored.toString().substring(0, 10)<span style=\"color: navy\">)</span> <i>&quot;date&quot;</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('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> -&gt; </b></span>consent.grantor = <span style=\"color: maroon\">s</span> <i>&quot;grantor&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>consent.decision = <span style=\"color: blue\">'permit'</span> <i>&quot;decision&quot;</i><span style=\"color: navy\">;</span>\r\n        aC.value<b> as </b><span style=\"color: maroon\">cv</span><span style=\"color: navy\"><b> -&gt; </b></span>consent.verification<b> as </b><span style=\"color: maroon\">ver</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          aC<span style=\"color: navy\"><b> -&gt; </b></span>ver.verified = <span style=\"color: blue\">true</span> <i>&quot;verified&quot;</i><span style=\"color: navy\">;</span>\r\n          cv<b> where </b><span style=\"color: navy\">(</span>(reference.exists() and (reference.startsWith('Organization/') or reference.startsWith('Practitioner/') or reference.startsWith('PractitionerRole/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Organization') or ('/' + type).endsWith('/Practitioner') or ('/' + type).endsWith('/PractitionerRole')))<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -&gt; </b></span>ver.verifiedBy = <span style=\"color: maroon\">cv</span> <i>&quot;verifiedBy&quot;</i><span style=\"color: navy\">;</span>\r\n          qr.authored<b> as </b><span style=\"color: maroon\">t</span><span style=\"color: navy\"><b> -&gt; </b></span>ver.verificationDate = <span style=\"color: maroon\">t</span> <i>&quot;verificationDate&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;verification&quot;</i><span style=\"color: navy\">;</span>\r\n        qr<span style=\"color: navy\"><b> -&gt; </b></span>consent.sourceReference = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Reference'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">ref</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          qr.id<b> as </b><span style=\"color: maroon\">qid</span><span style=\"color: navy\"><b> -&gt; </b></span>ref.reference = <span style=\"color: maroon\">qid</span> <i>&quot;sourceReferenceRef&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;linkQuestionnaireResponse&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;consent&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;consentByAnswer&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;consentRule&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">─────────────────────────────────────────────────────────────────────────────</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Shared scaffolding. Repeated in each map rather than imported: the transform</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">engine resolves `imports` against whatever StructureMaps happen to be on the</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">server, and a form that stops extracting because a shared map was not</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">uploaded is a worse failure than a duplicated group.</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">─────────────────────────────────────────────────────────────────────────────</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Two notes on what the publisher's StructureMap validator says about this file.</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Source parameters below are left untyped on purpose. Writing `: Element` makes</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">the validator compare QuestionnaireResponse.item against the literal 'Element'</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">and report them as incompatible with each other, which is noise, not a finding.</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Untyped, it says only that it cannot check the paths.</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">`evaluate(context, expression)` is flagged as &quot;takes 1 parameter but 2 were</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">found&quot;. Leave it. The FML parser in the same jar refuses the one-argument form</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">outright -- it wants a parameter, a comma, then the FHIRPath -- so the publisher</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">is objecting to what its own compiler emits. Two arguments is the only form that</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">compiles, and it is what the R5 transform engine executes.</span>\r\n<b>group </b>BuildObsBase<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">qr</span><span style=\"color: navy\"> : </span>QR, <b>target</b> <span style=\"color: maroon\">obs</span><span style=\"color: navy\"> : </span>Observation, <b>target</b> <span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span>  qr<span style=\"color: navy\"><b> -&gt; </b></span>obs.id = <b>uuid</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> then </b>SetObservationFullUrl<span style=\"color: navy\">(</span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>&quot;idAndFullUrl&quot;</i><span style=\"color: navy\">;</span>\r\n  qr<span style=\"color: navy\"><b> -&gt; </b></span>entry.request<b> as </b><span style=\"color: maroon\">request</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    qr<span style=\"color: navy\"><b> -&gt; </b></span>request.method = <span style=\"color: blue\">'POST'</span> <i>&quot;requestMethod&quot;</i><span style=\"color: navy\">;</span>\r\n    qr<span style=\"color: navy\"><b> -&gt; </b></span>request.url = <span style=\"color: blue\">'Observation'</span> <i>&quot;requestUrl&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;entryRequest&quot;</i><span style=\"color: navy\">;</span>\r\n  qr<span style=\"color: navy\"><b> -&gt; </b></span>obs.status = <span style=\"color: blue\">'final'</span> <i>&quot;status&quot;</i><span style=\"color: navy\">;</span>\r\n  qr.subject<b> as </b><span style=\"color: maroon\">s</span><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> -&gt; </b></span>obs.subject = <span style=\"color: maroon\">s</span><span style=\"color: navy\">;</span>\r\n  qr.encounter<b> as </b><span style=\"color: maroon\">e</span><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> -&gt; </b></span>obs.encounter = <span style=\"color: maroon\">e</span><span style=\"color: navy\">;</span>\r\n  qr.authored<b> as </b><span style=\"color: maroon\">t</span><span style=\"color: navy\"><b> -&gt; </b></span>obs.effective = <span style=\"color: maroon\">t</span> <i>&quot;effective&quot;</i><span style=\"color: navy\">;</span>\r\n  qr.source<b> as </b><span style=\"color: maroon\">src</span><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> -&gt; </b></span>obs.performer = <span style=\"color: maroon\">src</span> <i>&quot;performerFromSource&quot;</i><span style=\"color: navy\">;</span>\r\n  qr<b> where </b><span style=\"color: navy\">(</span>source.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> -&gt; </b></span>obs.performer = <span style=\"color: maroon\">a</span> <i>&quot;performerFromAuthor&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;performerFallback&quot;</i><span style=\"color: navy\">;</span>\r\n  qr<span style=\"color: navy\"><b> -&gt; </b></span>obs.derivedFrom = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Reference'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">ref</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    qr.id<b> as </b><span style=\"color: maroon\">qid</span><span style=\"color: navy\"><b> -&gt; </b></span>ref.reference = <span style=\"color: maroon\">qid</span> <i>&quot;derivedFromRef&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;linkQuestionnaireResponse&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>SetCodedValue<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">a</span>, <b>target</b> <span style=\"color: maroon\">obs</span><span style=\"color: navy\"> : </span>Observation<span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span>  a.value<b> as </b><span style=\"color: maroon\">cv</span><span style=\"color: navy\"><b> -&gt; </b></span>obs.value = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'CodeableConcept'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">cc</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    cv<span style=\"color: navy\"><b> -&gt; </b></span>cc.coding = <span style=\"color: maroon\">cv</span> <i>&quot;valueCoding&quot;</i><span style=\"color: navy\">;</span>\r\n    cv.display<b> as </b><span style=\"color: maroon\">d</span><span style=\"color: navy\"><b> -&gt; </b></span>cc.text = <span style=\"color: maroon\">d</span> <i>&quot;valueText&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;codedValue&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>SetSurveyCategory<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">qr</span><span style=\"color: navy\"> : </span>QR, <b>target</b> <span style=\"color: maroon\">obs</span><span style=\"color: navy\"> : </span>Observation<span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span>  qr<span style=\"color: navy\"><b> -&gt; </b></span>obs.category<b> as </b><span style=\"color: maroon\">cat</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    qr<span style=\"color: navy\"><b> -&gt; </b></span>cat.coding<b> as </b><span style=\"color: maroon\">coding</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.system = <span style=\"color: blue\">'http://terminology.hl7.org/CodeSystem/observation-category'</span> <i>&quot;categorySystem&quot;</i><span style=\"color: navy\">;</span>\r\n      qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.code = <span style=\"color: blue\">'survey'</span> <i>&quot;categoryCode&quot;</i><span style=\"color: navy\">;</span>\r\n      qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.display = <span style=\"color: blue\">'Survey'</span> <i>&quot;categoryDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;categoryCoding&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;category&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>SetSocialHistoryCategory<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">qr</span><span style=\"color: navy\"> : </span>QR, <b>target</b> <span style=\"color: maroon\">obs</span><span style=\"color: navy\"> : </span>Observation<span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span>  qr<span style=\"color: navy\"><b> -&gt; </b></span>obs.category<b> as </b><span style=\"color: maroon\">cat</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    qr<span style=\"color: navy\"><b> -&gt; </b></span>cat.coding<b> as </b><span style=\"color: maroon\">coding</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.system = <span style=\"color: blue\">'http://terminology.hl7.org/CodeSystem/observation-category'</span> <i>&quot;categorySystem&quot;</i><span style=\"color: navy\">;</span>\r\n      qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.code = <span style=\"color: blue\">'social-history'</span> <i>&quot;categoryCode&quot;</i><span style=\"color: navy\">;</span>\r\n      qr<span style=\"color: navy\"><b> -&gt; </b></span>coding.display = <span style=\"color: blue\">'Social History'</span> <i>&quot;categoryDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;categoryCoding&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;category&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>SetObservationFullUrl<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">obs</span><span style=\"color: navy\"> : </span>Observation, <b>target</b> <span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span>  obs.id<b> as </b><span style=\"color: maroon\">id</span><span style=\"color: navy\"><b> -&gt; </b></span>entry.fullUrl = <b>append</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'https://fhir.slade360.co.ke/fhir/Observation/'</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">id</span><span style=\"color: navy\">)</span> <i>&quot;assignFullUrl&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>SetServiceRequestFullUrl<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">sr</span><span style=\"color: navy\"> : </span>ServiceRequest, <b>target</b> <span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span>  sr.id<b> as </b><span style=\"color: maroon\">id</span><span style=\"color: navy\"><b> -&gt; </b></span>entry.fullUrl = <b>append</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'https://fhir.slade360.co.ke/fhir/ServiceRequest/'</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">id</span><span style=\"color: navy\">)</span> <i>&quot;assignFullUrl&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>SetConsentFullUrl<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">consent</span><span style=\"color: navy\"> : </span>Consent, <b>target</b> <span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span>  consent.id<b> as </b><span style=\"color: maroon\">id</span><span style=\"color: navy\"><b> -&gt; </b></span>entry.fullUrl = <b>append</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'https://fhir.slade360.co.ke/fhir/Consent/'</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">id</span><span style=\"color: navy\">)</span> <i>&quot;assignFullUrl&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><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> -&gt; </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>&quot;copyTag&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;tenantTags&quot;</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/ExtractInpatientSurgicalPreoperativeAssessment"^^xsd:anyURI] ; # 
  fhir:version [ fhir:v "0.1.0"] ; # 
  fhir:name [ fhir:v "ExtractInpatientSurgicalPreoperativeAssessment"] ; # 
  fhir:title [ fhir:v "Inpatient Surgical Pre-operative 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 "The planned procedure becomes a ServiceRequest, the ASA grade and the last oral intake become Observations, and the clinician who took consent becomes a Consent verified by them. The procedure carries the surgeon's wording rather than a procedure code -- the form is free text and matching prose to a code system would guess at what is being operated on. Consent.decision is `permit` because the form only exists once consent has been obtained; a refusal is not something this assessment records."] ; # 
  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/ServiceRequest"^^xsd:anyURI ;
       fhir:link <http://hl7.org/fhir/StructureDefinition/ServiceRequest>
     ] ;
     fhir:mode [ fhir:v "target" ] ;
     fhir:alias [ fhir:v "ServiceRequest" ]
  ] [
     fhir:url [
       fhir:v "http://hl7.org/fhir/StructureDefinition/Consent"^^xsd:anyURI ;
       fhir:link <http://hl7.org/fhir/StructureDefinition/Consent>
     ] ;
     fhir:mode [ fhir:v "target" ] ;
     fhir:alias [ fhir:v "Consent" ]
  ] ) ; # 
  fhir:group ( [
     fhir:name [ fhir:v "ExtractInpatientSurgicalPreoperativeAssessment" ] ;
     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 "procedureRule" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ] ;
         fhir:element [ fhir:v "item" ] ;
         fhir:variable [ fhir:v "itP" ] ;
         fhir:condition [ fhir:v "(linkId = 'procedure') and answer.value.exists()" ]
       ] ) ;
       fhir:rule ( [
         fhir:name [ fhir:v "procedureAnswer" ] ;
         fhir:source ( [
           fhir:context [ fhir:v "itP" ] ;
           fhir:element [ fhir:v "answer" ] ;
           fhir:listMode [ fhir:v "first" ] ;
           fhir:variable [ fhir:v "aP" ]
         ] ) ;
         fhir:rule ( [
           fhir:name [ fhir:v "serviceRequest" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "aP" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "bundle" ] ;
             fhir:element [ fhir:v "entry" ] ;
             fhir:variable [ fhir:v "entryP" ]
           ] [
             fhir:context [ fhir:v "entryP" ] ;
             fhir:element [ fhir:v "resource" ] ;
             fhir:variable [ fhir:v "sr" ] ;
             fhir:transform [ fhir:v "create" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:string ;
                 fhir:v "ServiceRequest"
               ]
             ] )
           ] ) ;
           fhir:rule ( [
             fhir:name [ fhir:v "responseTags" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "sr" ]
             ] ) ;
             fhir:dependent ( [
               fhir:name [ fhir:v "CopyResponseTags" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "qr"
                 ]
               ] [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "sr"
                 ]
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "idAndFullUrl" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "sr" ] ;
               fhir:element [ fhir:v "id" ] ;
               fhir:transform [ fhir:v "uuid" ]
             ] ) ;
             fhir:dependent ( [
               fhir:name [ fhir:v "SetServiceRequestFullUrl" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "sr"
                 ]
               ] [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "entryP"
                 ]
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "entryRequest" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "entryP" ] ;
               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 "ServiceRequest"
                   ]
                 ] )
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "status" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "sr" ] ;
               fhir:element [ fhir:v "status" ] ;
               fhir:transform [ fhir:v "copy" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:string ;
                   fhir:v "active"
                 ]
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "intent" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "sr" ] ;
               fhir:element [ fhir:v "intent" ] ;
               fhir:transform [ fhir:v "copy" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:string ;
                   fhir:v "plan"
                 ]
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "priority" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "sr" ] ;
               fhir:element [ fhir:v "priority" ] ;
               fhir:transform [ fhir:v "copy" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:string ;
                   fhir:v "routine"
                 ]
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "serviceRequestCode" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "aP" ] ;
               fhir:element [ fhir:v "value" ] ;
               fhir:variable [ fhir:v "v" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "sr" ] ;
               fhir:element [ fhir:v "code" ] ;
               fhir:variable [ fhir:v "codeRef" ]
             ] ) ;
             fhir:rule ( [
               fhir:name [ fhir:v "codeConcept" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "aP" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "codeRef" ] ;
                 fhir:element [ fhir:v "concept" ] ;
                 fhir:variable [ fhir:v "concept" ]
               ] ) ;
               fhir:rule ( [
                 fhir:name [ fhir:v "codeCoding" ] ;
                 fhir:source ( [
                   fhir:context [ fhir:v "aP" ]
                 ] ) ;
                 fhir:target ( [
                   fhir:context [ fhir:v "concept" ] ;
                   fhir:element [ fhir:v "coding" ] ;
                   fhir:variable [ fhir:v "coding" ]
                 ] ) ;
                 fhir:rule ( [
                   fhir:name [ fhir:v "codeSystem" ] ;
                   fhir:source ( [
                     fhir:context [ fhir:v "aP" ]
                   ] ) ;
                   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 "aP" ]
                   ] ) ;
                   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 "planned-procedure"
                       ]
                     ] )
                   ] )
                 ] [
                   fhir:name [ fhir:v "codeDisplay" ] ;
                   fhir:source ( [
                     fhir:context [ fhir:v "aP" ]
                   ] ) ;
                   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 "Planned procedure"
                       ]
                     ] )
                   ] )
                 ] )
               ] [
                 fhir:name [ fhir:v "codeText" ] ;
                 fhir:source ( [
                   fhir:context [ fhir:v "v" ]
                 ] ) ;
                 fhir:target ( [
                   fhir:context [ fhir:v "concept" ] ;
                   fhir:element [ fhir:v "text" ] ;
                   fhir:transform [ fhir:v "copy" ] ;
                   fhir:parameter ( [
                     fhir:value [
                       a fhir:id ;
                       fhir:v "v"
                     ]
                   ] )
                 ] )
               ] )
             ] ) ;
             fhir:documentation [ fhir:v "R5 ServiceRequest.code is a CodeableReference, so the concept sits one\r\nlevel down." ]
           ] [
             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 "sr" ] ;
               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 "sr" ] ;
               fhir:element [ fhir:v "encounter" ] ;
               fhir:transform [ fhir:v "copy" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "e"
                 ]
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "authoredOn" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ] ;
               fhir:element [ fhir:v "authored" ] ;
               fhir:variable [ fhir:v "t" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "sr" ] ;
               fhir:element [ fhir:v "authoredOn" ] ;
               fhir:transform [ fhir:v "copy" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "t"
                 ]
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "requesterFromAuthor" ] ;
             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 "sr" ] ;
               fhir:element [ fhir:v "requester" ] ;
               fhir:transform [ fhir:v "copy" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "a"
                 ]
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "requesterFallback" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ] ;
               fhir:condition [ fhir:v "author.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 "requesterFromSource" ] ;
               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 "sr" ] ;
                 fhir:element [ fhir:v "requester" ] ;
                 fhir:transform [ fhir:v "copy" ] ;
                 fhir:parameter ( [
                   fhir:value [
                     a fhir:id ;
                     fhir:v "src"
                   ]
                 ] )
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "linkQuestionnaireResponse" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "sr" ] ;
               fhir:element [ fhir:v "supportingInfo" ] ;
               fhir:variable [ fhir:v "si" ]
             ] ) ;
             fhir:rule ( [
               fhir:name [ fhir:v "supportingInfoTarget" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "qr" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "si" ] ;
                 fhir:element [ fhir:v "reference" ] ;
                 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 "supportingInfoRef" ] ;
                 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:documentation [ fhir:v "── Planned procedure ──────────────────────────────────────────────────────" ]
     ] [
       fhir:name [ fhir:v "asaRule" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ] ;
         fhir:element [ fhir:v "item" ] ;
         fhir:variable [ fhir:v "itA" ] ;
         fhir:condition [ fhir:v "(linkId = 'asa') and answer.value.exists()" ]
       ] ) ;
       fhir:rule ( [
         fhir:name [ fhir:v "asaAnswer" ] ;
         fhir:source ( [
           fhir:context [ fhir:v "itA" ] ;
           fhir:element [ fhir:v "answer" ] ;
           fhir:listMode [ fhir:v "first" ] ;
           fhir:variable [ fhir:v "aA" ]
         ] ) ;
         fhir:rule ( [
           fhir:name [ fhir:v "asaObservation" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "aA" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "bundle" ] ;
             fhir:element [ fhir:v "entry" ] ;
             fhir:variable [ fhir:v "entryA" ]
           ] [
             fhir:context [ fhir:v "entryA" ] ;
             fhir:element [ fhir:v "resource" ] ;
             fhir:variable [ fhir:v "obsA" ] ;
             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 "obsA" ]
             ] ) ;
             fhir:dependent ( [
               fhir:name [ fhir:v "CopyResponseTags" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "qr"
                 ]
               ] [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "obsA"
                 ]
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "asaBase" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "obsA" ]
             ] [
               fhir:context [ fhir:v "entryA" ]
             ] ) ;
             fhir:dependent ( [
               fhir:name [ fhir:v "BuildObsBase" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "qr"
                 ]
               ] [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "obsA"
                 ]
               ] [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "entryA"
                 ]
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "asaCategory" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "obsA" ]
             ] ) ;
             fhir:dependent ( [
               fhir:name [ fhir:v "SetSurveyCategory" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "qr"
                 ]
               ] [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "obsA"
                 ]
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "asaCode" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "obsA" ] ;
               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 "http://loinc.org"
                     ]
                   ] )
                 ] )
               ] [
                 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 "97816-3"
                     ]
                   ] )
                 ] )
               ] [
                 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 "American society of anesthesiologists morbidity state"
                     ]
                   ] )
                 ] )
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "asaValue" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "aA" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "obsA" ]
             ] ) ;
             fhir:dependent ( [
               fhir:name [ fhir:v "SetCodedValue" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "aA"
                 ]
               ] [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "obsA"
                 ]
               ] )
             ] )
           ] )
         ] )
       ] ) ;
       fhir:documentation [ fhir:v "── ASA grade ──────────────────────────────────────────────────────────────" ]
     ] [
       fhir:name [ fhir:v "nbmRule" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ] ;
         fhir:element [ fhir:v "item" ] ;
         fhir:variable [ fhir:v "itN" ] ;
         fhir:condition [ fhir:v "(linkId = 'nbm') and answer.value.exists()" ]
       ] ) ;
       fhir:rule ( [
         fhir:name [ fhir:v "nbmAnswer" ] ;
         fhir:source ( [
           fhir:context [ fhir:v "itN" ] ;
           fhir:element [ fhir:v "answer" ] ;
           fhir:listMode [ fhir:v "first" ] ;
           fhir:variable [ fhir:v "aN" ]
         ] ) ;
         fhir:rule ( [
           fhir:name [ fhir:v "nbmObservation" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "aN" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "bundle" ] ;
             fhir:element [ fhir:v "entry" ] ;
             fhir:variable [ fhir:v "entryN" ]
           ] [
             fhir:context [ fhir:v "entryN" ] ;
             fhir:element [ fhir:v "resource" ] ;
             fhir:variable [ fhir:v "obsN" ] ;
             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 "obsN" ]
             ] ) ;
             fhir:dependent ( [
               fhir:name [ fhir:v "CopyResponseTags" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "qr"
                 ]
               ] [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "obsN"
                 ]
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "nbmBase" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "obsN" ]
             ] [
               fhir:context [ fhir:v "entryN" ]
             ] ) ;
             fhir:dependent ( [
               fhir:name [ fhir:v "BuildObsBase" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "qr"
                 ]
               ] [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "obsN"
                 ]
               ] [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "entryN"
                 ]
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "nbmCategory" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "obsN" ]
             ] ) ;
             fhir:dependent ( [
               fhir:name [ fhir:v "SetSocialHistoryCategory" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "qr"
                 ]
               ] [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "obsN"
                 ]
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "nbmCode" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "obsN" ] ;
               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 "http://loinc.org"
                     ]
                   ] )
                 ] )
               ] [
                 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 "67517-3"
                     ]
                   ] )
                 ] )
               ] [
                 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 "Last oral intake [Date and time]"
                     ]
                   ] )
                 ] )
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "nbmValue" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "aN" ] ;
               fhir:element [ fhir:v "value" ] ;
               fhir:variable [ fhir:v "v" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "obsN" ] ;
               fhir:element [ fhir:v "value" ] ;
               fhir:transform [ fhir:v "copy" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "v"
                 ]
               ] )
             ] )
           ] )
         ] )
       ] ) ;
       fhir:documentation [ fhir:v "── Last oral intake ───────────────────────────────────────────────────────\r\nReported by the patient rather than measured, hence `social-history`. The\r\nanswer is a dateTime and goes through as one: LOINC 67517-3 is defined as a\r\ndate and time, so no Quantity is involved." ]
     ] [
       fhir:name [ fhir:v "consentRule" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ] ;
         fhir:element [ fhir:v "item" ] ;
         fhir:variable [ fhir:v "itC" ] ;
         fhir:condition [ fhir:v "(linkId = 'consentBy') and answer.value.exists()" ]
       ] ) ;
       fhir:rule ( [
         fhir:name [ fhir:v "consentByAnswer" ] ;
         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 "consent" ] ;
           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 "consent" ] ;
             fhir:transform [ fhir:v "create" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:string ;
                 fhir:v "Consent"
               ]
             ] )
           ] ) ;
           fhir:rule ( [
             fhir:name [ fhir:v "responseTags" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "consent" ]
             ] ) ;
             fhir:dependent ( [
               fhir:name [ fhir:v "CopyResponseTags" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "qr"
                 ]
               ] [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "consent"
                 ]
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "idAndFullUrl" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "consent" ] ;
               fhir:element [ fhir:v "id" ] ;
               fhir:transform [ fhir:v "uuid" ]
             ] ) ;
             fhir:dependent ( [
               fhir:name [ fhir:v "SetConsentFullUrl" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "consent"
                 ]
               ] [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "entryC"
                 ]
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "entryRequest" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "entryC" ] ;
               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 "Consent"
                   ]
                 ] )
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "status" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "consent" ] ;
               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 "consent" ] ;
               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://loinc.org"
                     ]
                   ] )
                 ] )
               ] [
                 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 "59284-0"
                     ]
                   ] )
                 ] )
               ] [
                 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 "Consent Document"
                     ]
                   ] )
                 ] )
               ] )
             ] [
               fhir:name [ fhir:v "categoryText" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "qr" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "cat" ] ;
                 fhir:element [ fhir:v "text" ] ;
                 fhir:transform [ fhir:v "copy" ] ;
                 fhir:parameter ( [
                   fhir:value [
                     a fhir:string ;
                     fhir:v "Consent for the planned procedure"
                   ]
                 ] )
               ] )
             ] )
           ] [
             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 "consent" ] ;
               fhir:element [ fhir:v "subject" ] ;
               fhir:transform [ fhir:v "copy" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "s"
                 ]
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "date" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "consent" ] ;
               fhir:element [ fhir:v "date" ] ;
               fhir:transform [ fhir:v "evaluate" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "qr"
                 ]
               ] [
                 fhir:value [
                   a fhir:string ;
                   fhir:v "authored.toString().substring(0, 10)"
                 ]
               ] )
             ] ) ;
             fhir:documentation [ fhir:v "Consent.date is a `date`, not a dateTime, so the day is taken off the\r\nfront of the authored timestamp rather than assigned whole." ]
           ] [
             fhir:name [ fhir:v "grantor" ] ;
             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('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 "consent" ] ;
               fhir:element [ fhir:v "grantor" ] ;
               fhir:transform [ fhir:v "copy" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "s"
                 ]
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "decision" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "consent" ] ;
               fhir:element [ fhir:v "decision" ] ;
               fhir:transform [ fhir:v "copy" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:string ;
                   fhir:v "permit"
                 ]
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "verification" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "aC" ] ;
               fhir:element [ fhir:v "value" ] ;
               fhir:variable [ fhir:v "cv" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "consent" ] ;
               fhir:element [ fhir:v "verification" ] ;
               fhir:variable [ fhir:v "ver" ]
             ] ) ;
             fhir:rule ( [
               fhir:name [ fhir:v "verified" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "aC" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "ver" ] ;
                 fhir:element [ fhir:v "verified" ] ;
                 fhir:transform [ fhir:v "copy" ] ;
                 fhir:parameter ( [
                   fhir:value [
                     a fhir:boolean ;
                     fhir:v true
                   ]
                 ] )
               ] )
             ] [
               fhir:name [ fhir:v "verifiedBy" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "cv" ] ;
                 fhir:condition [ fhir:v "(reference.exists() and (reference.startsWith('Organization/') or reference.startsWith('Practitioner/') or reference.startsWith('PractitionerRole/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Organization') or ('/' + type).endsWith('/Practitioner') or ('/' + type).endsWith('/PractitionerRole')))" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "ver" ] ;
                 fhir:element [ fhir:v "verifiedBy" ] ;
                 fhir:transform [ fhir:v "copy" ] ;
                 fhir:parameter ( [
                   fhir:value [
                     a fhir:id ;
                     fhir:v "cv"
                   ]
                 ] )
               ] )
             ] [
               fhir:name [ fhir:v "verificationDate" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "qr" ] ;
                 fhir:element [ fhir:v "authored" ] ;
                 fhir:variable [ fhir:v "t" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "ver" ] ;
                 fhir:element [ fhir:v "verificationDate" ] ;
                 fhir:transform [ fhir:v "copy" ] ;
                 fhir:parameter ( [
                   fhir:value [
                     a fhir:id ;
                     fhir:v "t"
                   ]
                 ] )
               ] )
             ] )
           ] [
             fhir:name [ fhir:v "linkQuestionnaireResponse" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "qr" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "consent" ] ;
               fhir:element [ fhir:v "sourceReference" ] ;
               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 "sourceReferenceRef" ] ;
               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:documentation [ fhir:v "── Consent ────────────────────────────────────────────────────────────────\r\nThe person named on the form is the person who took the consent, which is\r\nverification.verifiedBy: the patient is the grantor, and the clinician\r\nattests that the conversation happened." ]
     ] )
  ] [
     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\nTwo notes on what the publisher's StructureMap validator says about this file.\r\nSource parameters below are left untyped on purpose. Writing `: Element` makes\r\nthe validator compare QuestionnaireResponse.item against the literal 'Element'\r\nand report them as incompatible with each other, which is noise, not a finding.\r\nUntyped, it says only that it cannot check the paths.\r\n`evaluate(context, expression)` is flagged as \"takes 1 parameter but 2 were\r\nfound\". Leave it. The FML parser in the same jar refuses the one-argument form\r\noutright -- it wants a parameter, a comma, then the FHIRPath -- so the publisher\r\nis objecting to what its own compiler emits. Two arguments is the only form that\r\ncompiles, and it is what the R5 transform engine executes." ] ;
     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 "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 "SetSurveyCategory" ] ;
     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 "survey"
               ]
             ] )
           ] )
         ] [
           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 "Survey"
               ]
             ] )
           ] )
         ] )
       ] )
     ] )
  ] [
     fhir:name [ fhir:v "SetSocialHistoryCategory" ] ;
     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 "social-history"
               ]
             ] )
           ] )
         ] [
           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 "Social History"
               ]
             ] )
           ] )
         ] )
       ] )
     ] )
  ] [
     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 "SetServiceRequestFullUrl" ] ;
     fhir:input ( [
       fhir:name [ fhir:v "sr" ] ;
       fhir:type [ fhir:v "ServiceRequest" ] ;
       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 "sr" ] ;
         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/ServiceRequest/"
           ]
         ] [
           fhir:value [
             a fhir:id ;
             fhir:v "id"
           ]
         ] )
       ] )
     ] )
  ] [
     fhir:name [ fhir:v "SetConsentFullUrl" ] ;
     fhir:input ( [
       fhir:name [ fhir:v "consent" ] ;
       fhir:type [ fhir:v "Consent" ] ;
       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 "consent" ] ;
         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/Consent/"
           ]
         ] [
           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"
             ]
           ] )
         ] )
       ] )
     ] )
  ] ) . #