@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 -------------------------------------------------------------------

<https://fhir.slade360.co.ke/fhir/StructureMap/ExtractHormonalTherapyTreatmentPlan> a fhir:StructureMap ;
  fhir:nodeRole fhir:treeRoot ;
  fhir:id [ fhir:v "ExtractHormonalTherapyTreatmentPlan"] ; # 
  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 ExtractHormonalTherapyTreatmentPlan</b></p><a name=\"ExtractHormonalTherapyTreatmentPlan\"> </a><a name=\"hcExtractHormonalTherapyTreatmentPlan\"> </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/ExtractHormonalTherapyTreatmentPlan'</span>\r\n<span style=\"color: #cc00cc\">/// <b>name</b> = </span><span style=\"color: blue\">'ExtractHormonalTherapyTreatmentPlan'</span>\r\n<span style=\"color: #cc00cc\">/// <b>title</b> = </span><span style=\"color: blue\">'Hormonal Therapy Treatment Plan 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\">'Each cycle on the hormonal therapy sheet out as: a MedicationAdministration for the drug given, as written, on the cycle\\'s date; laboratory Observations for the PSA, serum calcium and alkaline phosphatase; an Observation for the cycle number, so the next cycle can see which one this was; the remarks as a note; and a ServiceRequest for the date to come again. Everything takes the cycle\\'s own date rather than the form\\'s, because the sheet exists to be read as a series.'</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/medicationadministration.html\" title=\"MedicationAdministration\">http://hl7.org/fhir/StructureDefinition/MedicationAdministration</a><span style=\"color: navy\">&quot; </span><b>alias </b>MedicationAdministration <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\r\n<b>group </b>ExtractHormonalTherapyTreatmentPlan<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\">── One cycle at a time ─────────────────────────────────────────────────</span>\r\n  qr.item<b> as </b><span style=\"color: maroon\">c</span><b> where </b><span style=\"color: navy\">(</span>linkId = 'cycle'<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    <span style=\"color: navy\">// </span><span style=\"color: green\">The drug given. A MedicationAdministration, because the sheet records</span>\r\n    <span style=\"color: navy\">// </span><span style=\"color: green\">what was given at that cycle, not what was ordered. The drug travels as</span>\r\n    <span style=\"color: navy\">// </span><span style=\"color: green\">written: the hospital's formulary is not coded, and the strength is part</span>\r\n    <span style=\"color: navy\">// </span><span style=\"color: green\">of what the clinician wrote.</span>\r\n    c<b> where </b><span style=\"color: navy\">(</span>item.where(linkId = 'cycle/drug').answer.value.exists()<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -&gt; </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'MedicationAdministration'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">ma</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      qr<span style=\"color: navy\"><b> -&gt; </b></span> ma<span style=\"color: navy\">, </span> entry<b> then </b>BuildMedicationAdministrationBase<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">ma</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>&quot;base&quot;</i><span style=\"color: navy\">;</span>\r\n      c<span style=\"color: navy\"><b> -&gt; </b></span>ma.status = <span style=\"color: blue\">'completed'</span> <i>&quot;status&quot;</i><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>ma.encounter = <span style=\"color: maroon\">e</span><span style=\"color: navy\">;</span>\r\n      c.item<b> as </b><span style=\"color: maroon\">it</span><b> where </b><span style=\"color: navy\">(</span>linkId = 'cycle/drug'<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        it.answer first<b> as </b><span style=\"color: maroon\">a</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          a.value<b> as </b><span style=\"color: maroon\">txt</span><span style=\"color: navy\"><b> -&gt; </b></span> ma.medication<b> as </b><span style=\"color: maroon\">med</span><span style=\"color: navy\">, </span> med.concept<b> as </b><span style=\"color: maroon\">mc</span><span style=\"color: navy\">, </span> mc.text = <span style=\"color: maroon\">txt</span> <i>&quot;medicationText&quot;</i><span style=\"color: navy\">;</span>\r\n          a.value<b> as </b><span style=\"color: maroon\">txt</span><span style=\"color: navy\"><b> -&gt; </b></span> ma.dosage<b> as </b><span style=\"color: maroon\">dos</span><span style=\"color: navy\">, </span> dos.text = <span style=\"color: maroon\">txt</span> <i>&quot;dosageAsWritten&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;drugRule&quot;</i><span style=\"color: navy\">;</span>\r\n      c.item<b> as </b><span style=\"color: maroon\">it</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'cycle/date') and answer.value.exists()<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        it.answer first<b> as </b><span style=\"color: maroon\">a</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          a.value<b> as </b><span style=\"color: maroon\">d</span><span style=\"color: navy\"><b> -&gt; </b></span>ma.occurence = <b>cast</b><span style=\"color: navy\">(</span><span style=\"color: maroon\">d</span><span style=\"color: navy\">, </span><span style=\"color: blue\">'dateTime'</span><span style=\"color: navy\">)</span> <i>&quot;occurrence&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;dateRule&quot;</i><span style=\"color: navy\">;</span>\r\n      c.item<b> as </b><span style=\"color: maroon\">it</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'cycle/number') and answer.value.exists()<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        it.answer first<b> as </b><span style=\"color: maroon\">a</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          a.value<b> as </b><span style=\"color: maroon\">n</span><span style=\"color: navy\"><b> -&gt; </b></span>ma.note<b> as </b><span style=\"color: maroon\">note</span><b> then</b><span style=\"color: navy\"> {\r\n</span>            n<span style=\"color: navy\"><b> -&gt; </b></span>note.text = evaluate<span style=\"color: navy\">(</span>n<span style=\"color: navy\">, </span>'Hormonal therapy cycle ' &amp; $this.toString()<span style=\"color: navy\">)</span> <i>&quot;cycleText&quot;</i><span style=\"color: navy\">;</span>\r\n            qr.authored<b> as </b><span style=\"color: maroon\">noteTime</span><span style=\"color: navy\"><b> -&gt; </b></span>note.time = <span style=\"color: maroon\">noteTime</span> <i>&quot;cycleTime&quot;</i><span style=\"color: navy\">;</span>\r\n          <span style=\"color: navy\">}</span> <i>&quot;cycleNote&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;cycleRule&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;hormonalDrug&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">// </span><span style=\"color: green\">The cycle number as an Observation of its own. It is what tells the</span>\r\n    <span style=\"color: navy\">// </span><span style=\"color: green\">next cycle which one this was, and a number inside a note cannot be</span>\r\n    <span style=\"color: navy\">// </span><span style=\"color: green\">read back as one.</span>\r\n    c.item<b> as </b><span style=\"color: maroon\">it</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'cycle/number') and answer.value.exists()<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -&gt; </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Observation'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">obs</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      qr<span style=\"color: navy\"><b> -&gt; </b></span> obs<span style=\"color: navy\">, </span> entry<b> then </b>BuildObsBase<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>&quot;base&quot;</i><span style=\"color: navy\">;</span>\r\n      qr<span style=\"color: navy\"><b> -&gt; </b></span>obs<b> then </b>SetSurveyCategory<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">)</span> <i>&quot;category&quot;</i><span style=\"color: navy\">;</span>\r\n      it<span style=\"color: navy\"><b> -&gt; </b></span>obs.code<b> as </b><span style=\"color: maroon\">cc</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        it<span style=\"color: navy\"><b> -&gt; </b></span>cc.coding<b> as </b><span style=\"color: maroon\">cg</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          it<span style=\"color: navy\"><b> -&gt; </b></span>cg.system = <span style=\"color: blue\">'https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem'</span> <i>&quot;sys&quot;</i><span style=\"color: navy\">;</span>\r\n          it<span style=\"color: navy\"><b> -&gt; </b></span>cg.code = <span style=\"color: blue\">'hormonal-therapy-cycle-number'</span> <i>&quot;cd&quot;</i><span style=\"color: navy\">;</span>\r\n          it<span style=\"color: navy\"><b> -&gt; </b></span>cg.display = <span style=\"color: blue\">'Hormonal therapy cycle number'</span> <i>&quot;dsp&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;coding&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;code&quot;</i><span style=\"color: navy\">;</span>\r\n      it.answer first<b> as </b><span style=\"color: maroon\">a</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        a.value<b> as </b><span style=\"color: maroon\">v</span><span style=\"color: navy\"><b> -&gt; </b></span>obs.value = <span style=\"color: maroon\">v</span><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span><span style=\"color: navy\">;</span>\r\n      c<span style=\"color: navy\"><b> -&gt; </b></span>obs<b> then </b>SetHormonalCycleContext<span style=\"color: navy\">(</span><span style=\"color: maroon\">c</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">)</span> <i>&quot;cycleContext&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;cycleNumber&quot;</i><span style=\"color: navy\">;</span>\r\n    c.item<b> as </b><span style=\"color: maroon\">it</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'cycle/psa') and answer.value.ofType(Quantity).exists()<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -&gt; </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Observation'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">obs</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      qr<span style=\"color: navy\"><b> -&gt; </b></span> obs<span style=\"color: navy\">, </span> entry<b> then </b>BuildObsBase<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>&quot;base&quot;</i><span style=\"color: navy\">;</span>\r\n      qr<span style=\"color: navy\"><b> -&gt; </b></span>obs<b> then </b>SetLaboratoryCategory<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">)</span> <i>&quot;category&quot;</i><span style=\"color: navy\">;</span>\r\n      it<span style=\"color: navy\"><b> -&gt; </b></span>obs.code<b> as </b><span style=\"color: maroon\">cc</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        it<span style=\"color: navy\"><b> -&gt; </b></span>cc.coding<b> as </b><span style=\"color: maroon\">cg</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          it<span style=\"color: navy\"><b> -&gt; </b></span>cg.system = <span style=\"color: blue\">'http://loinc.org'</span> <i>&quot;sys&quot;</i><span style=\"color: navy\">;</span>\r\n          it<span style=\"color: navy\"><b> -&gt; </b></span>cg.code = <span style=\"color: blue\">'2857-1'</span> <i>&quot;cd&quot;</i><span style=\"color: navy\">;</span>\r\n          it<span style=\"color: navy\"><b> -&gt; </b></span>cg.display = <span style=\"color: blue\">'Prostate specific Ag [Mass/volume] in Serum or Plasma'</span> <i>&quot;dsp&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;coding&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;code&quot;</i><span style=\"color: navy\">;</span>\r\n      it.answer first<b> as </b><span style=\"color: maroon\">a</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        a.value<b> as </b><span style=\"color: maroon\">v</span><span style=\"color: navy\"><b> -&gt; </b></span>obs.value = <span style=\"color: maroon\">v</span><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span><span style=\"color: navy\">;</span>\r\n      c<span style=\"color: navy\"><b> -&gt; </b></span>obs<b> then </b>SetHormonalCycleContext<span style=\"color: navy\">(</span><span style=\"color: maroon\">c</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">)</span> <i>&quot;cycleContext&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;cyclePsa&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">// </span><span style=\"color: green\">&quot;CA2+&quot; on the paper. Read as serum calcium in mmol/L, the routine</span>\r\n    <span style=\"color: navy\">// </span><span style=\"color: green\">measure on a patient with bone disease; an ionised calcium would need a</span>\r\n    <span style=\"color: navy\">// </span><span style=\"color: green\">blood gas analyser and its own code, 1995-0.</span>\r\n    c.item<b> as </b><span style=\"color: maroon\">it</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'cycle/calcium') and answer.value.ofType(Quantity).exists()<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -&gt; </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Observation'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">obs</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      qr<span style=\"color: navy\"><b> -&gt; </b></span> obs<span style=\"color: navy\">, </span> entry<b> then </b>BuildObsBase<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>&quot;base&quot;</i><span style=\"color: navy\">;</span>\r\n      qr<span style=\"color: navy\"><b> -&gt; </b></span>obs<b> then </b>SetLaboratoryCategory<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">)</span> <i>&quot;category&quot;</i><span style=\"color: navy\">;</span>\r\n      it<span style=\"color: navy\"><b> -&gt; </b></span>obs.code<b> as </b><span style=\"color: maroon\">cc</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        it<span style=\"color: navy\"><b> -&gt; </b></span>cc.coding<b> as </b><span style=\"color: maroon\">cg</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          it<span style=\"color: navy\"><b> -&gt; </b></span>cg.system = <span style=\"color: blue\">'http://loinc.org'</span> <i>&quot;sys&quot;</i><span style=\"color: navy\">;</span>\r\n          it<span style=\"color: navy\"><b> -&gt; </b></span>cg.code = <span style=\"color: blue\">'2000-8'</span> <i>&quot;cd&quot;</i><span style=\"color: navy\">;</span>\r\n          it<span style=\"color: navy\"><b> -&gt; </b></span>cg.display = <span style=\"color: blue\">'Calcium [Moles/volume] in Serum or Plasma'</span> <i>&quot;dsp&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;coding&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;code&quot;</i><span style=\"color: navy\">;</span>\r\n      it.answer first<b> as </b><span style=\"color: maroon\">a</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        a.value<b> as </b><span style=\"color: maroon\">v</span><span style=\"color: navy\"><b> -&gt; </b></span>obs.value = <span style=\"color: maroon\">v</span><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span><span style=\"color: navy\">;</span>\r\n      c<span style=\"color: navy\"><b> -&gt; </b></span>obs<b> then </b>SetHormonalCycleContext<span style=\"color: navy\">(</span><span style=\"color: maroon\">c</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">)</span> <i>&quot;cycleContext&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;cycleCalcium&quot;</i><span style=\"color: navy\">;</span>\r\n    c.item<b> as </b><span style=\"color: maroon\">it</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'cycle/alp') and answer.value.ofType(Quantity).exists()<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -&gt; </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Observation'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">obs</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      qr<span style=\"color: navy\"><b> -&gt; </b></span> obs<span style=\"color: navy\">, </span> entry<b> then </b>BuildObsBase<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>&quot;base&quot;</i><span style=\"color: navy\">;</span>\r\n      qr<span style=\"color: navy\"><b> -&gt; </b></span>obs<b> then </b>SetLaboratoryCategory<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">)</span> <i>&quot;category&quot;</i><span style=\"color: navy\">;</span>\r\n      it<span style=\"color: navy\"><b> -&gt; </b></span>obs.code<b> as </b><span style=\"color: maroon\">cc</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        it<span style=\"color: navy\"><b> -&gt; </b></span>cc.coding<b> as </b><span style=\"color: maroon\">cg</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          it<span style=\"color: navy\"><b> -&gt; </b></span>cg.system = <span style=\"color: blue\">'http://loinc.org'</span> <i>&quot;sys&quot;</i><span style=\"color: navy\">;</span>\r\n          it<span style=\"color: navy\"><b> -&gt; </b></span>cg.code = <span style=\"color: blue\">'6768-6'</span> <i>&quot;cd&quot;</i><span style=\"color: navy\">;</span>\r\n          it<span style=\"color: navy\"><b> -&gt; </b></span>cg.display = <span style=\"color: blue\">'Alkaline phosphatase [Enzymatic activity/volume] in Serum or Plasma'</span> <i>&quot;dsp&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;coding&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;code&quot;</i><span style=\"color: navy\">;</span>\r\n      it.answer first<b> as </b><span style=\"color: maroon\">a</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        a.value<b> as </b><span style=\"color: maroon\">v</span><span style=\"color: navy\"><b> -&gt; </b></span>obs.value = <span style=\"color: maroon\">v</span><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span><span style=\"color: navy\">;</span>\r\n      c<span style=\"color: navy\"><b> -&gt; </b></span>obs<b> then </b>SetHormonalCycleContext<span style=\"color: navy\">(</span><span style=\"color: maroon\">c</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">)</span> <i>&quot;cycleContext&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;cycleAlp&quot;</i><span style=\"color: navy\">;</span>\r\n    c.item<b> as </b><span style=\"color: maroon\">it</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'cycle/remarks') and answer.value.exists()<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -&gt; </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Observation'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">obs</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      qr<span style=\"color: navy\"><b> -&gt; </b></span> obs<span style=\"color: navy\">, </span> entry<b> then </b>BuildObsBase<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>&quot;base&quot;</i><span style=\"color: navy\">;</span>\r\n      qr<span style=\"color: navy\"><b> -&gt; </b></span>obs<b> then </b>SetSurveyCategory<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">)</span> <i>&quot;category&quot;</i><span style=\"color: navy\">;</span>\r\n      it<span style=\"color: navy\"><b> -&gt; </b></span>obs.code<b> as </b><span style=\"color: maroon\">cc</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        it<span style=\"color: navy\"><b> -&gt; </b></span>cc.coding<b> as </b><span style=\"color: maroon\">cg</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          it<span style=\"color: navy\"><b> -&gt; </b></span>cg.system = <span style=\"color: blue\">'https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem'</span> <i>&quot;sys&quot;</i><span style=\"color: navy\">;</span>\r\n          it<span style=\"color: navy\"><b> -&gt; </b></span>cg.code = <span style=\"color: blue\">'hormonal-therapy-remarks'</span> <i>&quot;cd&quot;</i><span style=\"color: navy\">;</span>\r\n          it<span style=\"color: navy\"><b> -&gt; </b></span>cg.display = <span style=\"color: blue\">'Remarks on a hormonal therapy cycle'</span> <i>&quot;dsp&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;coding&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;code&quot;</i><span style=\"color: navy\">;</span>\r\n      it.answer first<b> as </b><span style=\"color: maroon\">a</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        a.value<b> as </b><span style=\"color: maroon\">txt</span><span style=\"color: navy\"><b> -&gt; </b></span> obs.note<b> as </b><span style=\"color: maroon\">n</span><span style=\"color: navy\">, </span> n.text = <span style=\"color: maroon\">txt</span> <i>&quot;text&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span><span style=\"color: navy\">;</span>\r\n      c<span style=\"color: navy\"><b> -&gt; </b></span>obs<b> then </b>SetHormonalCycleContext<span style=\"color: navy\">(</span><span style=\"color: maroon\">c</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">)</span> <i>&quot;cycleContext&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;cycleRemarks&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">// </span><span style=\"color: green\">TCA, &quot;to come again&quot;. A ServiceRequest, not an Appointment, for the</span>\r\n    <span style=\"color: navy\">// </span><span style=\"color: green\">reason the discharge summary gives: a date with no clinic, clinician or</span>\r\n    <span style=\"color: navy\">// </span><span style=\"color: green\">slot is a request for a follow-up, and an Appointment built from it</span>\r\n    <span style=\"color: navy\">// </span><span style=\"color: green\">would claim a booking that does not exist.</span>\r\n    c.item<b> as </b><span style=\"color: maroon\">it</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'cycle/next-visit') and answer.value.exists()<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -&gt; </b></span> bundle.entry<b> as </b><span style=\"color: maroon\">entry</span><span style=\"color: navy\">, </span> entry.resource = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'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<span style=\"color: navy\">, </span> entry<b> then </b>BuildServiceRequestBase<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><span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span> <i>&quot;base&quot;</i><span style=\"color: navy\">;</span>\r\n      it<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      it<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      it<span style=\"color: navy\"><b> -&gt; </b></span> sr.code<b> as </b><span style=\"color: maroon\">cr</span><span style=\"color: navy\">, </span> cr.concept<b> as </b><span style=\"color: maroon\">cc</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        it<span style=\"color: navy\"><b> -&gt; </b></span>cc.coding<b> as </b><span style=\"color: maroon\">cg</span><b> then</b><span style=\"color: navy\"> {\r\n</span>          it<span style=\"color: navy\"><b> -&gt; </b></span>cg.system = <span style=\"color: blue\">'https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem'</span> <i>&quot;sys&quot;</i><span style=\"color: navy\">;</span>\r\n          it<span style=\"color: navy\"><b> -&gt; </b></span>cg.code = <span style=\"color: blue\">'hormonal-therapy-next-review'</span> <i>&quot;cd&quot;</i><span style=\"color: navy\">;</span>\r\n          it<span style=\"color: navy\"><b> -&gt; </b></span>cg.display = <span style=\"color: blue\">'Next hormonal therapy review'</span> <i>&quot;dsp&quot;</i><span style=\"color: navy\">;</span>\r\n        <span style=\"color: navy\">}</span> <i>&quot;coding&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</span> <i>&quot;code&quot;</i><span style=\"color: navy\">;</span>\r\n      it.answer first<b> as </b><span style=\"color: maroon\">a</span><b> then</b><span style=\"color: navy\"> {\r\n</span>        a.value<b> as </b><span style=\"color: maroon\">d</span><span style=\"color: navy\"><b> -&gt; </b></span>sr.occurrence = <b>cast</b><span style=\"color: navy\">(</span><span style=\"color: maroon\">d</span><span style=\"color: navy\">, </span><span style=\"color: blue\">'dateTime'</span><span style=\"color: navy\">)</span> <i>&quot;occurrence&quot;</i><span style=\"color: navy\">;</span>\r\n      <span style=\"color: navy\">}</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.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      it<span style=\"color: navy\"><b> -&gt; </b></span> sr.note<b> as </b><span style=\"color: maroon\">n</span><span style=\"color: navy\">, </span> n.text = <span style=\"color: blue\">'Date to come again, written on the hormonal therapy treatment plan. Not a booked appointment: the sheet names no clinic, clinician or slot.'</span> <i>&quot;provenanceNote&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;nextVisit&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;cycleRows&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">The cycle's own date on every Observation from that cycle. It overrides the</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">response's authored time: several rows keyed in at one sitting would</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">otherwise collapse onto one instant and the series would be gone.</span>\r\n<b>group </b>SetHormonalCycleContext<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">c</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>  c.item<b> as </b><span style=\"color: maroon\">it</span><b> where </b><span style=\"color: navy\">(</span>(linkId = 'cycle/date') and answer.value.exists()<span style=\"color: navy\">)</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    it.answer first<b> as </b><span style=\"color: maroon\">a</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      a.value<b> as </b><span style=\"color: maroon\">v</span><b> where </b><span style=\"color: navy\">(</span>$this.toString().length() = 10<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -&gt; </b></span> evaluate<span style=\"color: navy\">(</span>v<span style=\"color: navy\">, </span>$this.toString() + 'T00:00:00+03:00'<span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">midnight</span><span style=\"color: navy\">, </span> obs.effective = <b>cast</b><span style=\"color: navy\">(</span><span style=\"color: maroon\">midnight</span><span style=\"color: navy\">, </span><span style=\"color: blue\">'instant'</span><span style=\"color: navy\">)</span> <i>&quot;effectiveFromCycle&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;cycleDateRule&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<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<b> then </b>SetResponseProvenance<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">)</span> <i>&quot;responseProvenance&quot;</i><span style=\"color: navy\">;</span>\r\n  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  <span style=\"color: navy\">// </span><span style=\"color: green\">A stored response's id already reads &quot;QuestionnaireResponse/&lt;id&gt;&quot;, so it is</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">a relative reference as it stands. The hasValue() guard is what stops an</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">unsaved response -- one posted straight to $extract rather than saved first</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">-- from writing &quot;QuestionnaireResponse/null&quot; into the record.</span>\r\n  qr.id<b> as </b><span style=\"color: maroon\">qid</span><b> where </b><span style=\"color: navy\">(</span>$this.hasValue()<span style=\"color: navy\">)</span><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><span style=\"color: navy\">, </span> ref.reference = <span style=\"color: maroon\">qid</span> <i>&quot;linkQuestionnaireResponse&quot;</i><span style=\"color: navy\">;</span>\r\n  qr<span style=\"color: navy\"><b> -&gt; </b></span>obs<b> then </b>ConformObservation<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">obs</span><span style=\"color: navy\">)</span> <i>&quot;profileConformance&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>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>SetLaboratoryCategory<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\">'laboratory'</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\">'Laboratory'</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>BuildMedicationAdministrationBase<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>MedicationAdministration, <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>r<b> then </b>SetResponseProvenance<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">r</span><span style=\"color: navy\">)</span> <i>&quot;responseProvenance&quot;</i><span style=\"color: navy\">;</span>\r\n  qr<span style=\"color: navy\"><b> -&gt; </b></span>r.id = <b>uuid</b><span style=\"color: navy\">(</span><span style=\"color: navy\">)</span><b> then </b>SetMedicationAdministrationFullUrl<span style=\"color: navy\">(</span><span style=\"color: maroon\">r</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\">'MedicationAdministration'</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.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>r.subject = <span style=\"color: maroon\">s</span><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">The response's own time, as a floor. A row that names its date overwrites</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">this; without it a row missing its date would produce an administration</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">with no time at all, which is not a record of an administration.</span>\r\n  qr.authored<b> as </b><span style=\"color: maroon\">t</span><span style=\"color: navy\"><b> -&gt; </b></span>r.occurence = <span style=\"color: maroon\">t</span> <i>&quot;occurrenceFallback&quot;</i><span style=\"color: navy\">;</span>\r\n  qr<span style=\"color: navy\"><b> -&gt; </b></span>r<b> then </b>ConformMedicationAdministration<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">r</span><span style=\"color: navy\">)</span> <i>&quot;profileConformance&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>SetMedicationAdministrationFullUrl<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">r</span><span style=\"color: navy\"> : </span>MedicationAdministration, <b>target</b> <span style=\"color: maroon\">entry</span><span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span>  r.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/MedicationAdministration/'</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>BuildServiceRequestBase<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>ServiceRequest, <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>r<b> then </b>SetResponseProvenance<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">r</span><span style=\"color: navy\">)</span> <i>&quot;responseProvenance&quot;</i><span style=\"color: navy\">;</span>\r\n  qr<span style=\"color: navy\"><b> -&gt; </b></span>r.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\">r</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\">'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.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>r.subject = <span style=\"color: maroon\">s</span><span style=\"color: navy\">;</span>\r\n  qr<span style=\"color: navy\"><b> -&gt; </b></span>r<b> then </b>ConformServiceRequest<span style=\"color: navy\">(</span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">r</span><span style=\"color: navy\">)</span> <i>&quot;profileConformance&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\">r</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>  r.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><span style=\"color: navy\">// </span><span style=\"color: green\">── Provenance and tenancy ───────────────────────────────────────────────────</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Two tags on everything this map creates. The first says which questionnaire</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">produced it, so a form that reopens mid-admission recalls its own earlier</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">entries and not another form's. The second copies the tenant tags off the</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">response, because nothing else on the path puts them there. The response's</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">identifier is copied the same way.</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">The code is the form's document type, not the questionnaire's id: every</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">environment mints its own ids, and there is only one set of maps, so an id</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">here would tie the tag to whichever environment stamped it.</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">── Provenance and tenancy ───────────────────────────────────────────────────</span>\r\n<b>group </b>SetResponseProvenance<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<span style=\"color: navy\"><b> -&gt; </b></span>r.meta<b> as </b><span style=\"color: maroon\">m</span><b> then</b><span style=\"color: navy\"> {\r\n</span>    qr<span style=\"color: navy\"><b> -&gt; </b></span>m.tag<b> as </b><span style=\"color: maroon\">t</span><b> then</b><span style=\"color: navy\"> {\r\n</span>      qr<span style=\"color: navy\"><b> -&gt; </b></span>t.system = <span style=\"color: blue\">'http://slade360edi.com/questionnaire-provenance'</span> <i>&quot;provenanceSystem&quot;</i><span style=\"color: navy\">;</span>\r\n      qr<span style=\"color: navy\"><b> -&gt; </b></span>t.code = <span style=\"color: blue\">'hormonal-therapy-treatment-plan'</span> <i>&quot;provenanceCode&quot;</i><span style=\"color: navy\">;</span>\r\n      qr<span style=\"color: navy\"><b> -&gt; </b></span>t.display = <span style=\"color: blue\">'Hormonal therapy treatment plan'</span> <i>&quot;provenanceDisplay&quot;</i><span style=\"color: navy\">;</span>\r\n    <span style=\"color: navy\">}</span> <i>&quot;provenanceTag&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;provenanceMeta&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">Every tag the response carries, onto the resource. `meta` is 0..1, so this</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">lands on the same meta the rule above created rather than a second one.</span>\r\n  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\">// </span><span style=\"color: green\">The response's identifiers, as they are. Every profile wants one, and it is</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">the response's to give: nothing here mints one, so a response without an</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">identifier extracts resources without one. One whose assigner is not of a</span>\r\n  <span style=\"color: navy\">// </span><span style=\"color: green\">type the profiles allow there is left behind whole, not altered.</span>\r\n  qr.identifier<b> as </b><span style=\"color: maroon\">qid</span><b> where </b><span style=\"color: navy\">(</span>assigner.empty() or assigner.where(((reference.exists() and (reference.startsWith('Organization/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Organization'))))).exists()<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -&gt; </b></span>r.identifier = <span style=\"color: maroon\">qid</span><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">── Conformance to the IG profiles ───────────────────────────────────────────</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">What the IG's profiles require that the response itself can supply. Called at</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">the end of each base group. The encounter and every who-element are the</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">response's own; see mapmeta.py for what is and is not here.</span>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">── Conformance to the IG profiles ───────────────────────────────────────────</span>\r\n<b>group </b>ConformObservation<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.authored<b> as </b><span style=\"color: maroon\">t</span><b> where </b><span style=\"color: navy\">(</span>$this.toString().length() &gt;= 20<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -&gt; </b></span>r.issued = <b>cast</b><span style=\"color: navy\">(</span><span style=\"color: maroon\">t</span><span style=\"color: navy\">, </span><span style=\"color: blue\">'instant'</span><span style=\"color: navy\">)</span> <i>&quot;issued&quot;</i><span style=\"color: navy\">;</span>\r\n  qr.authored<b> as </b><span style=\"color: maroon\">t</span><b> where </b><span style=\"color: navy\">(</span>$this.toString().length() &gt;= 20<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -&gt; </b></span>r.effective = <b>cast</b><span style=\"color: navy\">(</span><span style=\"color: maroon\">t</span><span style=\"color: navy\">, </span><span style=\"color: blue\">'instant'</span><span style=\"color: navy\">)</span> <i>&quot;effective&quot;</i><span style=\"color: navy\">;</span>\r\n  qr.author<b> as </b><span style=\"color: maroon\">au</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>r.performer = <span style=\"color: maroon\">au</span> <i>&quot;performerFromAuthor&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>r.performer = <span style=\"color: maroon\">src</span> <i>&quot;performerFromSource&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;performerFallback&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>ConformMedicationAdministration<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.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>r.encounter = <span style=\"color: maroon\">e</span><span style=\"color: navy\">;</span>\r\n  qr.author<b> as </b><span style=\"color: maroon\">au</span><b> where </b><span style=\"color: navy\">(</span>(reference.exists() and (reference.startsWith('Practitioner/') or reference.startsWith('PractitionerRole/') or reference.startsWith('Patient/') or reference.startsWith('RelatedPerson/') or reference.startsWith('Device/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Practitioner') or ('/' + type).endsWith('/PractitionerRole') or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/RelatedPerson') or ('/' + type).endsWith('/Device')))<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -&gt; </b></span> r.performer<b> as </b><span style=\"color: maroon\">p</span><span style=\"color: navy\">, </span> p.actor = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'CodeableReference'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">cr</span><span style=\"color: navy\">, </span> cr.reference = <span style=\"color: maroon\">au</span> <i>&quot;performerFromAuthor&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('Practitioner/') or reference.startsWith('PractitionerRole/') or reference.startsWith('Patient/') or reference.startsWith('RelatedPerson/') or reference.startsWith('Device/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Practitioner') or ('/' + type).endsWith('/PractitionerRole') or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/RelatedPerson') or ('/' + type).endsWith('/Device'))))).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('Practitioner/') or reference.startsWith('PractitionerRole/') or reference.startsWith('Patient/') or reference.startsWith('RelatedPerson/') or reference.startsWith('Device/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Practitioner') or ('/' + type).endsWith('/PractitionerRole') or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/RelatedPerson') or ('/' + type).endsWith('/Device')))<span style=\"color: navy\">)</span><span style=\"color: navy\"><b> -&gt; </b></span> r.performer<b> as </b><span style=\"color: maroon\">p</span><span style=\"color: navy\">, </span> p.actor = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'CodeableReference'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">cr</span><span style=\"color: navy\">, </span> cr.reference = <span style=\"color: maroon\">src</span> <i>&quot;performerFromSource&quot;</i><span style=\"color: navy\">;</span>\r\n  <span style=\"color: navy\">}</span> <i>&quot;performerFallback&quot;</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>ConformServiceRequest<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.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>r.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>r.authoredOn = <span style=\"color: maroon\">t</span> <i>&quot;authoredOn&quot;</i><span style=\"color: navy\">;</span>\r\n  qr<span style=\"color: navy\"><b> -&gt; </b></span>r.priority = <span style=\"color: blue\">'routine'</span> <i>&quot;priority&quot;</i><span style=\"color: navy\">;</span>\r\n  qr.author<b> as </b><span style=\"color: maroon\">au</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>r.requester = <span style=\"color: maroon\">au</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>r.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<span style=\"color: navy\">}\r\n\r\n</span></pre></div>"^^rdf:XMLLiteral ]
  ] ; # 
  fhir:url [ fhir:v "https://fhir.slade360.co.ke/fhir/StructureMap/ExtractHormonalTherapyTreatmentPlan"^^xsd:anyURI] ; # 
  fhir:version [ fhir:v "0.1.0"] ; # 
  fhir:name [ fhir:v "ExtractHormonalTherapyTreatmentPlan"] ; # 
  fhir:title [ fhir:v "Hormonal Therapy Treatment Plan 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 "Each cycle on the hormonal therapy sheet out as: a MedicationAdministration for the drug given, as written, on the cycle's date; laboratory Observations for the PSA, serum calcium and alkaline phosphatase; an Observation for the cycle number, so the next cycle can see which one this was; the remarks as a note; and a ServiceRequest for the date to come again. Everything takes the cycle's own date rather than the form's, because the sheet exists to be read as a series."] ; # 
  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/MedicationAdministration"^^xsd:anyURI ;
       fhir:link <http://hl7.org/fhir/StructureDefinition/MedicationAdministration>
     ] ;
     fhir:mode [ fhir:v "target" ] ;
     fhir:alias [ fhir:v "MedicationAdministration" ]
  ] [
     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:group ( [
     fhir:name [ fhir:v "ExtractHormonalTherapyTreatmentPlan" ] ;
     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 "cycleRows" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ] ;
         fhir:element [ fhir:v "item" ] ;
         fhir:variable [ fhir:v "c" ] ;
         fhir:condition [ fhir:v "linkId = 'cycle'" ]
       ] ) ;
       fhir:rule ( [
         fhir:name [ fhir:v "hormonalDrug" ] ;
         fhir:source ( [
           fhir:context [ fhir:v "c" ] ;
           fhir:condition [ fhir:v "item.where(linkId = 'cycle/drug').answer.value.exists()" ]
         ] ) ;
         fhir:target ( [
           fhir:context [ fhir:v "bundle" ] ;
           fhir:element [ fhir:v "entry" ] ;
           fhir:variable [ fhir:v "entry" ]
         ] [
           fhir:context [ fhir:v "entry" ] ;
           fhir:element [ fhir:v "resource" ] ;
           fhir:variable [ fhir:v "ma" ] ;
           fhir:transform [ fhir:v "create" ] ;
           fhir:parameter ( [
             fhir:value [
               a fhir:string ;
               fhir:v "MedicationAdministration"
             ]
           ] )
         ] ) ;
         fhir:rule ( [
           fhir:name [ fhir:v "base" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "qr" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "ma" ]
           ] [
             fhir:context [ fhir:v "entry" ]
           ] ) ;
           fhir:dependent ( [
             fhir:name [ fhir:v "BuildMedicationAdministrationBase" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:id ;
                 fhir:v "qr"
               ]
             ] [
               fhir:value [
                 a fhir:id ;
                 fhir:v "ma"
               ]
             ] [
               fhir:value [
                 a fhir:id ;
                 fhir:v "entry"
               ]
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "status" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "c" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "ma" ] ;
             fhir:element [ fhir:v "status" ] ;
             fhir:transform [ fhir:v "copy" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:string ;
                 fhir:v "completed"
               ]
             ] )
           ] )
         ] [
           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 "ma" ] ;
             fhir:element [ fhir:v "encounter" ] ;
             fhir:transform [ fhir:v "copy" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:id ;
                 fhir:v "e"
               ]
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "drugRule" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "c" ] ;
             fhir:element [ fhir:v "item" ] ;
             fhir:variable [ fhir:v "it" ] ;
             fhir:condition [ fhir:v "linkId = 'cycle/drug'" ]
           ] ) ;
           fhir:rule ( [
             fhir:name [ fhir:v "answer" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "it" ] ;
               fhir:element [ fhir:v "answer" ] ;
               fhir:listMode [ fhir:v "first" ] ;
               fhir:variable [ fhir:v "a" ]
             ] ) ;
             fhir:rule ( [
               fhir:name [ fhir:v "medicationText" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "a" ] ;
                 fhir:element [ fhir:v "value" ] ;
                 fhir:variable [ fhir:v "txt" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "ma" ] ;
                 fhir:element [ fhir:v "medication" ] ;
                 fhir:variable [ fhir:v "med" ]
               ] [
                 fhir:context [ fhir:v "med" ] ;
                 fhir:element [ fhir:v "concept" ] ;
                 fhir:variable [ fhir:v "mc" ]
               ] [
                 fhir:context [ fhir:v "mc" ] ;
                 fhir:element [ fhir:v "text" ] ;
                 fhir:transform [ fhir:v "copy" ] ;
                 fhir:parameter ( [
                   fhir:value [
                     a fhir:id ;
                     fhir:v "txt"
                   ]
                 ] )
               ] )
             ] [
               fhir:name [ fhir:v "dosageAsWritten" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "a" ] ;
                 fhir:element [ fhir:v "value" ] ;
                 fhir:variable [ fhir:v "txt" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "ma" ] ;
                 fhir:element [ fhir:v "dosage" ] ;
                 fhir:variable [ fhir:v "dos" ]
               ] [
                 fhir:context [ fhir:v "dos" ] ;
                 fhir:element [ fhir:v "text" ] ;
                 fhir:transform [ fhir:v "copy" ] ;
                 fhir:parameter ( [
                   fhir:value [
                     a fhir:id ;
                     fhir:v "txt"
                   ]
                 ] )
               ] )
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "dateRule" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "c" ] ;
             fhir:element [ fhir:v "item" ] ;
             fhir:variable [ fhir:v "it" ] ;
             fhir:condition [ fhir:v "(linkId = 'cycle/date') and answer.value.exists()" ]
           ] ) ;
           fhir:rule ( [
             fhir:name [ fhir:v "answer" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "it" ] ;
               fhir:element [ fhir:v "answer" ] ;
               fhir:listMode [ fhir:v "first" ] ;
               fhir:variable [ fhir:v "a" ]
             ] ) ;
             fhir:rule ( [
               fhir:name [ fhir:v "occurrence" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "a" ] ;
                 fhir:element [ fhir:v "value" ] ;
                 fhir:variable [ fhir:v "d" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "ma" ] ;
                 fhir:element [ fhir:v "occurence" ] ;
                 fhir:transform [ fhir:v "cast" ] ;
                 fhir:parameter ( [
                   fhir:value [
                     a fhir:id ;
                     fhir:v "d"
                   ]
                 ] [
                   fhir:value [
                     a fhir:string ;
                     fhir:v "dateTime"
                   ]
                 ] )
               ] )
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "cycleRule" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "c" ] ;
             fhir:element [ fhir:v "item" ] ;
             fhir:variable [ fhir:v "it" ] ;
             fhir:condition [ fhir:v "(linkId = 'cycle/number') and answer.value.exists()" ]
           ] ) ;
           fhir:rule ( [
             fhir:name [ fhir:v "answer" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "it" ] ;
               fhir:element [ fhir:v "answer" ] ;
               fhir:listMode [ fhir:v "first" ] ;
               fhir:variable [ fhir:v "a" ]
             ] ) ;
             fhir:rule ( [
               fhir:name [ fhir:v "cycleNote" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "a" ] ;
                 fhir:element [ fhir:v "value" ] ;
                 fhir:variable [ fhir:v "n" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "ma" ] ;
                 fhir:element [ fhir:v "note" ] ;
                 fhir:variable [ fhir:v "note" ]
               ] ) ;
               fhir:rule ( [
                 fhir:name [ fhir:v "cycleText" ] ;
                 fhir:source ( [
                   fhir:context [ fhir:v "n" ]
                 ] ) ;
                 fhir:target ( [
                   fhir:context [ fhir:v "note" ] ;
                   fhir:element [ fhir:v "text" ] ;
                   fhir:transform [ fhir:v "evaluate" ] ;
                   fhir:parameter ( [
                     fhir:value [
                       a fhir:id ;
                       fhir:v "n"
                     ]
                   ] [
                     fhir:value [
                       a fhir:string ;
                       fhir:v "'Hormonal therapy cycle ' & $this.toString()"
                     ]
                   ] )
                 ] )
               ] [
                 fhir:name [ fhir:v "cycleTime" ] ;
                 fhir:source ( [
                   fhir:context [ fhir:v "qr" ] ;
                   fhir:element [ fhir:v "authored" ] ;
                   fhir:variable [ fhir:v "noteTime" ]
                 ] ) ;
                 fhir:target ( [
                   fhir:context [ fhir:v "note" ] ;
                   fhir:element [ fhir:v "time" ] ;
                   fhir:transform [ fhir:v "copy" ] ;
                   fhir:parameter ( [
                     fhir:value [
                       a fhir:id ;
                       fhir:v "noteTime"
                     ]
                   ] )
                 ] )
               ] )
             ] )
           ] )
         ] ) ;
         fhir:documentation [ fhir:v "The drug given. A MedicationAdministration, because the sheet records\r\nwhat was given at that cycle, not what was ordered. The drug travels as\r\nwritten: the hospital's formulary is not coded, and the strength is part\r\nof what the clinician wrote." ]
       ] [
         fhir:name [ fhir:v "cycleNumber" ] ;
         fhir:source ( [
           fhir:context [ fhir:v "c" ] ;
           fhir:element [ fhir:v "item" ] ;
           fhir:variable [ fhir:v "it" ] ;
           fhir:condition [ fhir:v "(linkId = 'cycle/number') and answer.value.exists()" ]
         ] ) ;
         fhir:target ( [
           fhir:context [ fhir:v "bundle" ] ;
           fhir:element [ fhir:v "entry" ] ;
           fhir:variable [ fhir:v "entry" ]
         ] [
           fhir:context [ fhir:v "entry" ] ;
           fhir:element [ fhir:v "resource" ] ;
           fhir:variable [ fhir:v "obs" ] ;
           fhir:transform [ fhir:v "create" ] ;
           fhir:parameter ( [
             fhir:value [
               a fhir:string ;
               fhir:v "Observation"
             ]
           ] )
         ] ) ;
         fhir:rule ( [
           fhir:name [ fhir:v "base" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "qr" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "obs" ]
           ] [
             fhir:context [ fhir:v "entry" ]
           ] ) ;
           fhir:dependent ( [
             fhir:name [ fhir:v "BuildObsBase" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:id ;
                 fhir:v "qr"
               ]
             ] [
               fhir:value [
                 a fhir:id ;
                 fhir:v "obs"
               ]
             ] [
               fhir:value [
                 a fhir:id ;
                 fhir:v "entry"
               ]
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "category" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "qr" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "obs" ]
           ] ) ;
           fhir:dependent ( [
             fhir:name [ fhir:v "SetSurveyCategory" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:id ;
                 fhir:v "qr"
               ]
             ] [
               fhir:value [
                 a fhir:id ;
                 fhir:v "obs"
               ]
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "code" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "it" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "obs" ] ;
             fhir:element [ fhir:v "code" ] ;
             fhir:variable [ fhir:v "cc" ]
           ] ) ;
           fhir:rule ( [
             fhir:name [ fhir:v "coding" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "it" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "cc" ] ;
               fhir:element [ fhir:v "coding" ] ;
               fhir:variable [ fhir:v "cg" ]
             ] ) ;
             fhir:rule ( [
               fhir:name [ fhir:v "sys" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "it" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "cg" ] ;
                 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/concept-codesystem"
                   ]
                 ] )
               ] )
             ] [
               fhir:name [ fhir:v "cd" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "it" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "cg" ] ;
                 fhir:element [ fhir:v "code" ] ;
                 fhir:transform [ fhir:v "copy" ] ;
                 fhir:parameter ( [
                   fhir:value [
                     a fhir:string ;
                     fhir:v "hormonal-therapy-cycle-number"
                   ]
                 ] )
               ] )
             ] [
               fhir:name [ fhir:v "dsp" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "it" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "cg" ] ;
                 fhir:element [ fhir:v "display" ] ;
                 fhir:transform [ fhir:v "copy" ] ;
                 fhir:parameter ( [
                   fhir:value [
                     a fhir:string ;
                     fhir:v "Hormonal therapy cycle number"
                   ]
                 ] )
               ] )
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "answer" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "it" ] ;
             fhir:element [ fhir:v "answer" ] ;
             fhir:listMode [ fhir:v "first" ] ;
             fhir:variable [ fhir:v "a" ]
           ] ) ;
           fhir:rule ( [
             fhir:name [ fhir:v "value" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "a" ] ;
               fhir:element [ fhir:v "value" ] ;
               fhir:variable [ fhir:v "v" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "obs" ] ;
               fhir:element [ fhir:v "value" ] ;
               fhir:transform [ fhir:v "copy" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "v"
                 ]
               ] )
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "cycleContext" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "c" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "obs" ]
           ] ) ;
           fhir:dependent ( [
             fhir:name [ fhir:v "SetHormonalCycleContext" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:id ;
                 fhir:v "c"
               ]
             ] [
               fhir:value [
                 a fhir:id ;
                 fhir:v "obs"
               ]
             ] )
           ] )
         ] ) ;
         fhir:documentation [ fhir:v "The cycle number as an Observation of its own. It is what tells the\r\nnext cycle which one this was, and a number inside a note cannot be\r\nread back as one." ]
       ] [
         fhir:name [ fhir:v "cyclePsa" ] ;
         fhir:source ( [
           fhir:context [ fhir:v "c" ] ;
           fhir:element [ fhir:v "item" ] ;
           fhir:variable [ fhir:v "it" ] ;
           fhir:condition [ fhir:v "(linkId = 'cycle/psa') and answer.value.ofType(Quantity).exists()" ]
         ] ) ;
         fhir:target ( [
           fhir:context [ fhir:v "bundle" ] ;
           fhir:element [ fhir:v "entry" ] ;
           fhir:variable [ fhir:v "entry" ]
         ] [
           fhir:context [ fhir:v "entry" ] ;
           fhir:element [ fhir:v "resource" ] ;
           fhir:variable [ fhir:v "obs" ] ;
           fhir:transform [ fhir:v "create" ] ;
           fhir:parameter ( [
             fhir:value [
               a fhir:string ;
               fhir:v "Observation"
             ]
           ] )
         ] ) ;
         fhir:rule ( [
           fhir:name [ fhir:v "base" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "qr" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "obs" ]
           ] [
             fhir:context [ fhir:v "entry" ]
           ] ) ;
           fhir:dependent ( [
             fhir:name [ fhir:v "BuildObsBase" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:id ;
                 fhir:v "qr"
               ]
             ] [
               fhir:value [
                 a fhir:id ;
                 fhir:v "obs"
               ]
             ] [
               fhir:value [
                 a fhir:id ;
                 fhir:v "entry"
               ]
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "category" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "qr" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "obs" ]
           ] ) ;
           fhir:dependent ( [
             fhir:name [ fhir:v "SetLaboratoryCategory" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:id ;
                 fhir:v "qr"
               ]
             ] [
               fhir:value [
                 a fhir:id ;
                 fhir:v "obs"
               ]
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "code" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "it" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "obs" ] ;
             fhir:element [ fhir:v "code" ] ;
             fhir:variable [ fhir:v "cc" ]
           ] ) ;
           fhir:rule ( [
             fhir:name [ fhir:v "coding" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "it" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "cc" ] ;
               fhir:element [ fhir:v "coding" ] ;
               fhir:variable [ fhir:v "cg" ]
             ] ) ;
             fhir:rule ( [
               fhir:name [ fhir:v "sys" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "it" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "cg" ] ;
                 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 "cd" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "it" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "cg" ] ;
                 fhir:element [ fhir:v "code" ] ;
                 fhir:transform [ fhir:v "copy" ] ;
                 fhir:parameter ( [
                   fhir:value [
                     a fhir:string ;
                     fhir:v "2857-1"
                   ]
                 ] )
               ] )
             ] [
               fhir:name [ fhir:v "dsp" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "it" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "cg" ] ;
                 fhir:element [ fhir:v "display" ] ;
                 fhir:transform [ fhir:v "copy" ] ;
                 fhir:parameter ( [
                   fhir:value [
                     a fhir:string ;
                     fhir:v "Prostate specific Ag [Mass/volume] in Serum or Plasma"
                   ]
                 ] )
               ] )
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "answer" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "it" ] ;
             fhir:element [ fhir:v "answer" ] ;
             fhir:listMode [ fhir:v "first" ] ;
             fhir:variable [ fhir:v "a" ]
           ] ) ;
           fhir:rule ( [
             fhir:name [ fhir:v "value" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "a" ] ;
               fhir:element [ fhir:v "value" ] ;
               fhir:variable [ fhir:v "v" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "obs" ] ;
               fhir:element [ fhir:v "value" ] ;
               fhir:transform [ fhir:v "copy" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "v"
                 ]
               ] )
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "cycleContext" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "c" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "obs" ]
           ] ) ;
           fhir:dependent ( [
             fhir:name [ fhir:v "SetHormonalCycleContext" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:id ;
                 fhir:v "c"
               ]
             ] [
               fhir:value [
                 a fhir:id ;
                 fhir:v "obs"
               ]
             ] )
           ] )
         ] )
       ] [
         fhir:name [ fhir:v "cycleCalcium" ] ;
         fhir:source ( [
           fhir:context [ fhir:v "c" ] ;
           fhir:element [ fhir:v "item" ] ;
           fhir:variable [ fhir:v "it" ] ;
           fhir:condition [ fhir:v "(linkId = 'cycle/calcium') and answer.value.ofType(Quantity).exists()" ]
         ] ) ;
         fhir:target ( [
           fhir:context [ fhir:v "bundle" ] ;
           fhir:element [ fhir:v "entry" ] ;
           fhir:variable [ fhir:v "entry" ]
         ] [
           fhir:context [ fhir:v "entry" ] ;
           fhir:element [ fhir:v "resource" ] ;
           fhir:variable [ fhir:v "obs" ] ;
           fhir:transform [ fhir:v "create" ] ;
           fhir:parameter ( [
             fhir:value [
               a fhir:string ;
               fhir:v "Observation"
             ]
           ] )
         ] ) ;
         fhir:rule ( [
           fhir:name [ fhir:v "base" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "qr" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "obs" ]
           ] [
             fhir:context [ fhir:v "entry" ]
           ] ) ;
           fhir:dependent ( [
             fhir:name [ fhir:v "BuildObsBase" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:id ;
                 fhir:v "qr"
               ]
             ] [
               fhir:value [
                 a fhir:id ;
                 fhir:v "obs"
               ]
             ] [
               fhir:value [
                 a fhir:id ;
                 fhir:v "entry"
               ]
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "category" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "qr" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "obs" ]
           ] ) ;
           fhir:dependent ( [
             fhir:name [ fhir:v "SetLaboratoryCategory" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:id ;
                 fhir:v "qr"
               ]
             ] [
               fhir:value [
                 a fhir:id ;
                 fhir:v "obs"
               ]
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "code" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "it" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "obs" ] ;
             fhir:element [ fhir:v "code" ] ;
             fhir:variable [ fhir:v "cc" ]
           ] ) ;
           fhir:rule ( [
             fhir:name [ fhir:v "coding" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "it" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "cc" ] ;
               fhir:element [ fhir:v "coding" ] ;
               fhir:variable [ fhir:v "cg" ]
             ] ) ;
             fhir:rule ( [
               fhir:name [ fhir:v "sys" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "it" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "cg" ] ;
                 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 "cd" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "it" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "cg" ] ;
                 fhir:element [ fhir:v "code" ] ;
                 fhir:transform [ fhir:v "copy" ] ;
                 fhir:parameter ( [
                   fhir:value [
                     a fhir:string ;
                     fhir:v "2000-8"
                   ]
                 ] )
               ] )
             ] [
               fhir:name [ fhir:v "dsp" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "it" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "cg" ] ;
                 fhir:element [ fhir:v "display" ] ;
                 fhir:transform [ fhir:v "copy" ] ;
                 fhir:parameter ( [
                   fhir:value [
                     a fhir:string ;
                     fhir:v "Calcium [Moles/volume] in Serum or Plasma"
                   ]
                 ] )
               ] )
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "answer" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "it" ] ;
             fhir:element [ fhir:v "answer" ] ;
             fhir:listMode [ fhir:v "first" ] ;
             fhir:variable [ fhir:v "a" ]
           ] ) ;
           fhir:rule ( [
             fhir:name [ fhir:v "value" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "a" ] ;
               fhir:element [ fhir:v "value" ] ;
               fhir:variable [ fhir:v "v" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "obs" ] ;
               fhir:element [ fhir:v "value" ] ;
               fhir:transform [ fhir:v "copy" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "v"
                 ]
               ] )
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "cycleContext" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "c" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "obs" ]
           ] ) ;
           fhir:dependent ( [
             fhir:name [ fhir:v "SetHormonalCycleContext" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:id ;
                 fhir:v "c"
               ]
             ] [
               fhir:value [
                 a fhir:id ;
                 fhir:v "obs"
               ]
             ] )
           ] )
         ] ) ;
         fhir:documentation [ fhir:v "\"CA2+\" on the paper. Read as serum calcium in mmol/L, the routine\r\nmeasure on a patient with bone disease; an ionised calcium would need a\r\nblood gas analyser and its own code, 1995-0." ]
       ] [
         fhir:name [ fhir:v "cycleAlp" ] ;
         fhir:source ( [
           fhir:context [ fhir:v "c" ] ;
           fhir:element [ fhir:v "item" ] ;
           fhir:variable [ fhir:v "it" ] ;
           fhir:condition [ fhir:v "(linkId = 'cycle/alp') and answer.value.ofType(Quantity).exists()" ]
         ] ) ;
         fhir:target ( [
           fhir:context [ fhir:v "bundle" ] ;
           fhir:element [ fhir:v "entry" ] ;
           fhir:variable [ fhir:v "entry" ]
         ] [
           fhir:context [ fhir:v "entry" ] ;
           fhir:element [ fhir:v "resource" ] ;
           fhir:variable [ fhir:v "obs" ] ;
           fhir:transform [ fhir:v "create" ] ;
           fhir:parameter ( [
             fhir:value [
               a fhir:string ;
               fhir:v "Observation"
             ]
           ] )
         ] ) ;
         fhir:rule ( [
           fhir:name [ fhir:v "base" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "qr" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "obs" ]
           ] [
             fhir:context [ fhir:v "entry" ]
           ] ) ;
           fhir:dependent ( [
             fhir:name [ fhir:v "BuildObsBase" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:id ;
                 fhir:v "qr"
               ]
             ] [
               fhir:value [
                 a fhir:id ;
                 fhir:v "obs"
               ]
             ] [
               fhir:value [
                 a fhir:id ;
                 fhir:v "entry"
               ]
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "category" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "qr" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "obs" ]
           ] ) ;
           fhir:dependent ( [
             fhir:name [ fhir:v "SetLaboratoryCategory" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:id ;
                 fhir:v "qr"
               ]
             ] [
               fhir:value [
                 a fhir:id ;
                 fhir:v "obs"
               ]
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "code" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "it" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "obs" ] ;
             fhir:element [ fhir:v "code" ] ;
             fhir:variable [ fhir:v "cc" ]
           ] ) ;
           fhir:rule ( [
             fhir:name [ fhir:v "coding" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "it" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "cc" ] ;
               fhir:element [ fhir:v "coding" ] ;
               fhir:variable [ fhir:v "cg" ]
             ] ) ;
             fhir:rule ( [
               fhir:name [ fhir:v "sys" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "it" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "cg" ] ;
                 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 "cd" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "it" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "cg" ] ;
                 fhir:element [ fhir:v "code" ] ;
                 fhir:transform [ fhir:v "copy" ] ;
                 fhir:parameter ( [
                   fhir:value [
                     a fhir:string ;
                     fhir:v "6768-6"
                   ]
                 ] )
               ] )
             ] [
               fhir:name [ fhir:v "dsp" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "it" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "cg" ] ;
                 fhir:element [ fhir:v "display" ] ;
                 fhir:transform [ fhir:v "copy" ] ;
                 fhir:parameter ( [
                   fhir:value [
                     a fhir:string ;
                     fhir:v "Alkaline phosphatase [Enzymatic activity/volume] in Serum or Plasma"
                   ]
                 ] )
               ] )
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "answer" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "it" ] ;
             fhir:element [ fhir:v "answer" ] ;
             fhir:listMode [ fhir:v "first" ] ;
             fhir:variable [ fhir:v "a" ]
           ] ) ;
           fhir:rule ( [
             fhir:name [ fhir:v "value" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "a" ] ;
               fhir:element [ fhir:v "value" ] ;
               fhir:variable [ fhir:v "v" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "obs" ] ;
               fhir:element [ fhir:v "value" ] ;
               fhir:transform [ fhir:v "copy" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "v"
                 ]
               ] )
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "cycleContext" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "c" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "obs" ]
           ] ) ;
           fhir:dependent ( [
             fhir:name [ fhir:v "SetHormonalCycleContext" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:id ;
                 fhir:v "c"
               ]
             ] [
               fhir:value [
                 a fhir:id ;
                 fhir:v "obs"
               ]
             ] )
           ] )
         ] )
       ] [
         fhir:name [ fhir:v "cycleRemarks" ] ;
         fhir:source ( [
           fhir:context [ fhir:v "c" ] ;
           fhir:element [ fhir:v "item" ] ;
           fhir:variable [ fhir:v "it" ] ;
           fhir:condition [ fhir:v "(linkId = 'cycle/remarks') and answer.value.exists()" ]
         ] ) ;
         fhir:target ( [
           fhir:context [ fhir:v "bundle" ] ;
           fhir:element [ fhir:v "entry" ] ;
           fhir:variable [ fhir:v "entry" ]
         ] [
           fhir:context [ fhir:v "entry" ] ;
           fhir:element [ fhir:v "resource" ] ;
           fhir:variable [ fhir:v "obs" ] ;
           fhir:transform [ fhir:v "create" ] ;
           fhir:parameter ( [
             fhir:value [
               a fhir:string ;
               fhir:v "Observation"
             ]
           ] )
         ] ) ;
         fhir:rule ( [
           fhir:name [ fhir:v "base" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "qr" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "obs" ]
           ] [
             fhir:context [ fhir:v "entry" ]
           ] ) ;
           fhir:dependent ( [
             fhir:name [ fhir:v "BuildObsBase" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:id ;
                 fhir:v "qr"
               ]
             ] [
               fhir:value [
                 a fhir:id ;
                 fhir:v "obs"
               ]
             ] [
               fhir:value [
                 a fhir:id ;
                 fhir:v "entry"
               ]
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "category" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "qr" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "obs" ]
           ] ) ;
           fhir:dependent ( [
             fhir:name [ fhir:v "SetSurveyCategory" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:id ;
                 fhir:v "qr"
               ]
             ] [
               fhir:value [
                 a fhir:id ;
                 fhir:v "obs"
               ]
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "code" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "it" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "obs" ] ;
             fhir:element [ fhir:v "code" ] ;
             fhir:variable [ fhir:v "cc" ]
           ] ) ;
           fhir:rule ( [
             fhir:name [ fhir:v "coding" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "it" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "cc" ] ;
               fhir:element [ fhir:v "coding" ] ;
               fhir:variable [ fhir:v "cg" ]
             ] ) ;
             fhir:rule ( [
               fhir:name [ fhir:v "sys" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "it" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "cg" ] ;
                 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/concept-codesystem"
                   ]
                 ] )
               ] )
             ] [
               fhir:name [ fhir:v "cd" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "it" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "cg" ] ;
                 fhir:element [ fhir:v "code" ] ;
                 fhir:transform [ fhir:v "copy" ] ;
                 fhir:parameter ( [
                   fhir:value [
                     a fhir:string ;
                     fhir:v "hormonal-therapy-remarks"
                   ]
                 ] )
               ] )
             ] [
               fhir:name [ fhir:v "dsp" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "it" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "cg" ] ;
                 fhir:element [ fhir:v "display" ] ;
                 fhir:transform [ fhir:v "copy" ] ;
                 fhir:parameter ( [
                   fhir:value [
                     a fhir:string ;
                     fhir:v "Remarks on a hormonal therapy cycle"
                   ]
                 ] )
               ] )
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "answer" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "it" ] ;
             fhir:element [ fhir:v "answer" ] ;
             fhir:listMode [ fhir:v "first" ] ;
             fhir:variable [ fhir:v "a" ]
           ] ) ;
           fhir:rule ( [
             fhir:name [ fhir:v "text" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "a" ] ;
               fhir:element [ fhir:v "value" ] ;
               fhir:variable [ fhir:v "txt" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "obs" ] ;
               fhir:element [ fhir:v "note" ] ;
               fhir:variable [ fhir:v "n" ]
             ] [
               fhir:context [ fhir:v "n" ] ;
               fhir:element [ fhir:v "text" ] ;
               fhir:transform [ fhir:v "copy" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "txt"
                 ]
               ] )
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "cycleContext" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "c" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "obs" ]
           ] ) ;
           fhir:dependent ( [
             fhir:name [ fhir:v "SetHormonalCycleContext" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:id ;
                 fhir:v "c"
               ]
             ] [
               fhir:value [
                 a fhir:id ;
                 fhir:v "obs"
               ]
             ] )
           ] )
         ] )
       ] [
         fhir:name [ fhir:v "nextVisit" ] ;
         fhir:source ( [
           fhir:context [ fhir:v "c" ] ;
           fhir:element [ fhir:v "item" ] ;
           fhir:variable [ fhir:v "it" ] ;
           fhir:condition [ fhir:v "(linkId = 'cycle/next-visit') and answer.value.exists()" ]
         ] ) ;
         fhir:target ( [
           fhir:context [ fhir:v "bundle" ] ;
           fhir:element [ fhir:v "entry" ] ;
           fhir:variable [ fhir:v "entry" ]
         ] [
           fhir:context [ fhir:v "entry" ] ;
           fhir:element [ fhir:v "resource" ] ;
           fhir:variable [ fhir:v "sr" ] ;
           fhir:transform [ fhir:v "create" ] ;
           fhir:parameter ( [
             fhir:value [
               a fhir:string ;
               fhir:v "ServiceRequest"
             ]
           ] )
         ] ) ;
         fhir:rule ( [
           fhir:name [ fhir:v "base" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "qr" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "sr" ]
           ] [
             fhir:context [ fhir:v "entry" ]
           ] ) ;
           fhir:dependent ( [
             fhir:name [ fhir:v "BuildServiceRequestBase" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:id ;
                 fhir:v "qr"
               ]
             ] [
               fhir:value [
                 a fhir:id ;
                 fhir:v "sr"
               ]
             ] [
               fhir:value [
                 a fhir:id ;
                 fhir:v "entry"
               ]
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "status" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "it" ]
           ] ) ;
           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 "it" ]
           ] ) ;
           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 "code" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "it" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "sr" ] ;
             fhir:element [ fhir:v "code" ] ;
             fhir:variable [ fhir:v "cr" ]
           ] [
             fhir:context [ fhir:v "cr" ] ;
             fhir:element [ fhir:v "concept" ] ;
             fhir:variable [ fhir:v "cc" ]
           ] ) ;
           fhir:rule ( [
             fhir:name [ fhir:v "coding" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "it" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "cc" ] ;
               fhir:element [ fhir:v "coding" ] ;
               fhir:variable [ fhir:v "cg" ]
             ] ) ;
             fhir:rule ( [
               fhir:name [ fhir:v "sys" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "it" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "cg" ] ;
                 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/concept-codesystem"
                   ]
                 ] )
               ] )
             ] [
               fhir:name [ fhir:v "cd" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "it" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "cg" ] ;
                 fhir:element [ fhir:v "code" ] ;
                 fhir:transform [ fhir:v "copy" ] ;
                 fhir:parameter ( [
                   fhir:value [
                     a fhir:string ;
                     fhir:v "hormonal-therapy-next-review"
                   ]
                 ] )
               ] )
             ] [
               fhir:name [ fhir:v "dsp" ] ;
               fhir:source ( [
                 fhir:context [ fhir:v "it" ]
               ] ) ;
               fhir:target ( [
                 fhir:context [ fhir:v "cg" ] ;
                 fhir:element [ fhir:v "display" ] ;
                 fhir:transform [ fhir:v "copy" ] ;
                 fhir:parameter ( [
                   fhir:value [
                     a fhir:string ;
                     fhir:v "Next hormonal therapy review"
                   ]
                 ] )
               ] )
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "answer" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "it" ] ;
             fhir:element [ fhir:v "answer" ] ;
             fhir:listMode [ fhir:v "first" ] ;
             fhir:variable [ fhir:v "a" ]
           ] ) ;
           fhir:rule ( [
             fhir:name [ fhir:v "occurrence" ] ;
             fhir:source ( [
               fhir:context [ fhir:v "a" ] ;
               fhir:element [ fhir:v "value" ] ;
               fhir:variable [ fhir:v "d" ]
             ] ) ;
             fhir:target ( [
               fhir:context [ fhir:v "sr" ] ;
               fhir:element [ fhir:v "occurrence" ] ;
               fhir:transform [ fhir:v "cast" ] ;
               fhir:parameter ( [
                 fhir:value [
                   a fhir:id ;
                   fhir:v "d"
                 ]
               ] [
                 fhir:value [
                   a fhir:string ;
                   fhir:v "dateTime"
                 ]
               ] )
             ] )
           ] )
         ] [
           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 "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 "provenanceNote" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "it" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "sr" ] ;
             fhir:element [ fhir:v "note" ] ;
             fhir:variable [ fhir:v "n" ]
           ] [
             fhir:context [ fhir:v "n" ] ;
             fhir:element [ fhir:v "text" ] ;
             fhir:transform [ fhir:v "copy" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:string ;
                 fhir:v "Date to come again, written on the hormonal therapy treatment plan. Not a booked appointment: the sheet names no clinic, clinician or slot."
               ]
             ] )
           ] )
         ] ) ;
         fhir:documentation [ fhir:v "TCA, \"to come again\". A ServiceRequest, not an Appointment, for the\r\nreason the discharge summary gives: a date with no clinic, clinician or\r\nslot is a request for a follow-up, and an Appointment built from it\r\nwould claim a booking that does not exist." ]
       ] ) ;
       fhir:documentation [ fhir:v "── One cycle at a time ─────────────────────────────────────────────────" ]
     ] )
  ] [
     fhir:name [ fhir:v "SetHormonalCycleContext" ] ;
     fhir:documentation [ fhir:v "The cycle's own date on every Observation from that cycle. It overrides the\r\nresponse's authored time: several rows keyed in at one sitting would\r\notherwise collapse onto one instant and the series would be gone." ] ;
     fhir:input ( [
       fhir:name [ fhir:v "c" ] ;
       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 "cycleDateRule" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "c" ] ;
         fhir:element [ fhir:v "item" ] ;
         fhir:variable [ fhir:v "it" ] ;
         fhir:condition [ fhir:v "(linkId = 'cycle/date') and answer.value.exists()" ]
       ] ) ;
       fhir:rule ( [
         fhir:name [ fhir:v "answer" ] ;
         fhir:source ( [
           fhir:context [ fhir:v "it" ] ;
           fhir:element [ fhir:v "answer" ] ;
           fhir:listMode [ fhir:v "first" ] ;
           fhir:variable [ fhir:v "a" ]
         ] ) ;
         fhir:rule ( [
           fhir:name [ fhir:v "effectiveFromCycle" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "a" ] ;
             fhir:element [ fhir:v "value" ] ;
             fhir:variable [ fhir:v "v" ] ;
             fhir:condition [ fhir:v "$this.toString().length() = 10" ]
           ] ) ;
           fhir:target ( [
             fhir:variable [ fhir:v "midnight" ] ;
             fhir:transform [ fhir:v "evaluate" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:id ;
                 fhir:v "v"
               ]
             ] [
               fhir:value [
                 a fhir:string ;
                 fhir:v "$this.toString() + 'T00:00:00+03:00'"
               ]
             ] )
           ] [
             fhir:context [ fhir:v "obs" ] ;
             fhir:element [ fhir:v "effective" ] ;
             fhir:transform [ fhir:v "cast" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:id ;
                 fhir:v "midnight"
               ]
             ] [
               fhir:value [
                 a fhir:string ;
                 fhir:v "instant"
               ]
             ] )
           ] )
         ] )
       ] )
     ] )
  ] [
     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─────────────────────────────────────────────────────────────────────────────" ] ;
     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 "responseProvenance" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ]
       ] ) ;
       fhir:target ( [
         fhir:context [ fhir:v "obs" ]
       ] ) ;
       fhir:dependent ( [
         fhir:name [ fhir:v "SetResponseProvenance" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:id ;
             fhir:v "qr"
           ]
         ] [
           fhir:value [
             a fhir:id ;
             fhir:v "obs"
           ]
         ] )
       ] )
     ] [
       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 "linkQuestionnaireResponse" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ] ;
         fhir:element [ fhir:v "id" ] ;
         fhir:variable [ fhir:v "qid" ] ;
         fhir:condition [ fhir:v "$this.hasValue()" ]
       ] ) ;
       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: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 "A stored response's id already reads \"QuestionnaireResponse/<id>\", so it is\r\na relative reference as it stands. The hasValue() guard is what stops an\r\nunsaved response -- one posted straight to $extract rather than saved first\r\n-- from writing \"QuestionnaireResponse/null\" into the record." ]
     ] [
       fhir:name [ fhir:v "profileConformance" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ]
       ] ) ;
       fhir:target ( [
         fhir:context [ fhir:v "obs" ]
       ] ) ;
       fhir:dependent ( [
         fhir:name [ fhir:v "ConformObservation" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:id ;
             fhir:v "qr"
           ]
         ] [
           fhir:value [
             a fhir:id ;
             fhir:v "obs"
           ]
         ] )
       ] )
     ] )
  ] [
     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 "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 "SetLaboratoryCategory" ] ;
     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 "laboratory"
               ]
             ] )
           ] )
         ] [
           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 "Laboratory"
               ]
             ] )
           ] )
         ] )
       ] )
     ] )
  ] [
     fhir:name [ fhir:v "BuildMedicationAdministrationBase" ] ;
     fhir:input ( [
       fhir:name [ fhir:v "qr" ] ;
       fhir:type [ fhir:v "QR" ] ;
       fhir:mode [ fhir:v "source" ]
     ] [
       fhir:name [ fhir:v "r" ] ;
       fhir:type [ fhir:v "MedicationAdministration" ] ;
       fhir:mode [ fhir:v "target" ]
     ] [
       fhir:name [ fhir:v "entry" ] ;
       fhir:mode [ fhir:v "target" ]
     ] ) ;
     fhir:rule ( [
       fhir:name [ fhir:v "responseProvenance" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ]
       ] ) ;
       fhir:target ( [
         fhir:context [ fhir:v "r" ]
       ] ) ;
       fhir:dependent ( [
         fhir:name [ fhir:v "SetResponseProvenance" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:id ;
             fhir:v "qr"
           ]
         ] [
           fhir:value [
             a fhir:id ;
             fhir:v "r"
           ]
         ] )
       ] )
     ] [
       fhir:name [ fhir:v "idAndFullUrl" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ]
       ] ) ;
       fhir:target ( [
         fhir:context [ fhir:v "r" ] ;
         fhir:element [ fhir:v "id" ] ;
         fhir:transform [ fhir:v "uuid" ]
       ] ) ;
       fhir:dependent ( [
         fhir:name [ fhir:v "SetMedicationAdministrationFullUrl" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:id ;
             fhir:v "r"
           ]
         ] [
           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 "MedicationAdministration"
             ]
           ] )
         ] )
       ] )
     ] [
       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 "r" ] ;
         fhir:element [ fhir:v "subject" ] ;
         fhir:transform [ fhir:v "copy" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:id ;
             fhir:v "s"
           ]
         ] )
       ] )
     ] [
       fhir:name [ fhir:v "occurrenceFallback" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ] ;
         fhir:element [ fhir:v "authored" ] ;
         fhir:variable [ fhir:v "t" ]
       ] ) ;
       fhir:target ( [
         fhir:context [ fhir:v "r" ] ;
         fhir:element [ fhir:v "occurence" ] ;
         fhir:transform [ fhir:v "copy" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:id ;
             fhir:v "t"
           ]
         ] )
       ] ) ;
       fhir:documentation [ fhir:v "The response's own time, as a floor. A row that names its date overwrites\r\nthis; without it a row missing its date would produce an administration\r\nwith no time at all, which is not a record of an administration." ]
     ] [
       fhir:name [ fhir:v "profileConformance" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ]
       ] ) ;
       fhir:target ( [
         fhir:context [ fhir:v "r" ]
       ] ) ;
       fhir:dependent ( [
         fhir:name [ fhir:v "ConformMedicationAdministration" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:id ;
             fhir:v "qr"
           ]
         ] [
           fhir:value [
             a fhir:id ;
             fhir:v "r"
           ]
         ] )
       ] )
     ] )
  ] [
     fhir:name [ fhir:v "SetMedicationAdministrationFullUrl" ] ;
     fhir:input ( [
       fhir:name [ fhir:v "r" ] ;
       fhir:type [ fhir:v "MedicationAdministration" ] ;
       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 "r" ] ;
         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/MedicationAdministration/"
           ]
         ] [
           fhir:value [
             a fhir:id ;
             fhir:v "id"
           ]
         ] )
       ] )
     ] )
  ] [
     fhir:name [ fhir:v "BuildServiceRequestBase" ] ;
     fhir:input ( [
       fhir:name [ fhir:v "qr" ] ;
       fhir:type [ fhir:v "QR" ] ;
       fhir:mode [ fhir:v "source" ]
     ] [
       fhir:name [ fhir:v "r" ] ;
       fhir:type [ fhir:v "ServiceRequest" ] ;
       fhir:mode [ fhir:v "target" ]
     ] [
       fhir:name [ fhir:v "entry" ] ;
       fhir:mode [ fhir:v "target" ]
     ] ) ;
     fhir:rule ( [
       fhir:name [ fhir:v "responseProvenance" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ]
       ] ) ;
       fhir:target ( [
         fhir:context [ fhir:v "r" ]
       ] ) ;
       fhir:dependent ( [
         fhir:name [ fhir:v "SetResponseProvenance" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:id ;
             fhir:v "qr"
           ]
         ] [
           fhir:value [
             a fhir:id ;
             fhir:v "r"
           ]
         ] )
       ] )
     ] [
       fhir:name [ fhir:v "idAndFullUrl" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ]
       ] ) ;
       fhir:target ( [
         fhir:context [ fhir:v "r" ] ;
         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 "r"
           ]
         ] [
           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 "ServiceRequest"
             ]
           ] )
         ] )
       ] )
     ] [
       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 "r" ] ;
         fhir:element [ fhir:v "subject" ] ;
         fhir:transform [ fhir:v "copy" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:id ;
             fhir:v "s"
           ]
         ] )
       ] )
     ] [
       fhir:name [ fhir:v "profileConformance" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ]
       ] ) ;
       fhir:target ( [
         fhir:context [ fhir:v "r" ]
       ] ) ;
       fhir:dependent ( [
         fhir:name [ fhir:v "ConformServiceRequest" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:id ;
             fhir:v "qr"
           ]
         ] [
           fhir:value [
             a fhir:id ;
             fhir:v "r"
           ]
         ] )
       ] )
     ] )
  ] [
     fhir:name [ fhir:v "SetServiceRequestFullUrl" ] ;
     fhir:input ( [
       fhir:name [ fhir:v "r" ] ;
       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 "r" ] ;
         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 "SetResponseProvenance" ] ;
     fhir:documentation [ fhir:v "── Provenance and tenancy ───────────────────────────────────────────────────\r\nTwo tags on everything this map creates. The first says which questionnaire\r\nproduced it, so a form that reopens mid-admission recalls its own earlier\r\nentries and not another form's. The second copies the tenant tags off the\r\nresponse, because nothing else on the path puts them there. The response's\r\nidentifier is copied the same way.\r\nThe code is the form's document type, not the questionnaire's id: every\r\nenvironment mints its own ids, and there is only one set of maps, so an id\r\nhere would tie the tag to whichever environment stamped it.\r\n── Provenance and tenancy ───────────────────────────────────────────────────" ] ;
     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 "provenanceMeta" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ]
       ] ) ;
       fhir:target ( [
         fhir:context [ fhir:v "r" ] ;
         fhir:element [ fhir:v "meta" ] ;
         fhir:variable [ fhir:v "m" ]
       ] ) ;
       fhir:rule ( [
         fhir:name [ fhir:v "provenanceTag" ] ;
         fhir:source ( [
           fhir:context [ fhir:v "qr" ]
         ] ) ;
         fhir:target ( [
           fhir:context [ fhir:v "m" ] ;
           fhir:element [ fhir:v "tag" ] ;
           fhir:variable [ fhir:v "t" ]
         ] ) ;
         fhir:rule ( [
           fhir:name [ fhir:v "provenanceSystem" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "qr" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "t" ] ;
             fhir:element [ fhir:v "system" ] ;
             fhir:transform [ fhir:v "copy" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:string ;
                 fhir:v "http://slade360edi.com/questionnaire-provenance"
               ]
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "provenanceCode" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "qr" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "t" ] ;
             fhir:element [ fhir:v "code" ] ;
             fhir:transform [ fhir:v "copy" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:string ;
                 fhir:v "hormonal-therapy-treatment-plan"
               ]
             ] )
           ] )
         ] [
           fhir:name [ fhir:v "provenanceDisplay" ] ;
           fhir:source ( [
             fhir:context [ fhir:v "qr" ]
           ] ) ;
           fhir:target ( [
             fhir:context [ fhir:v "t" ] ;
             fhir:element [ fhir:v "display" ] ;
             fhir:transform [ fhir:v "copy" ] ;
             fhir:parameter ( [
               fhir:value [
                 a fhir:string ;
                 fhir:v "Hormonal therapy treatment plan"
               ]
             ] )
           ] )
         ] )
       ] )
     ] [
       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"
             ]
           ] )
         ] )
       ] ) ;
       fhir:documentation [ fhir:v "Every tag the response carries, onto the resource. `meta` is 0..1, so this\r\nlands on the same meta the rule above created rather than a second one." ]
     ] [
       fhir:name [ fhir:v "identifier" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ] ;
         fhir:element [ fhir:v "identifier" ] ;
         fhir:variable [ fhir:v "qid" ] ;
         fhir:condition [ fhir:v "assigner.empty() or assigner.where(((reference.exists() and (reference.startsWith('Organization/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Organization'))))).exists()" ]
       ] ) ;
       fhir:target ( [
         fhir:context [ fhir:v "r" ] ;
         fhir:element [ fhir:v "identifier" ] ;
         fhir:transform [ fhir:v "copy" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:id ;
             fhir:v "qid"
           ]
         ] )
       ] ) ;
       fhir:documentation [ fhir:v "The response's identifiers, as they are. Every profile wants one, and it is\r\nthe response's to give: nothing here mints one, so a response without an\r\nidentifier extracts resources without one. One whose assigner is not of a\r\ntype the profiles allow there is left behind whole, not altered." ]
     ] )
  ] [
     fhir:name [ fhir:v "ConformObservation" ] ;
     fhir:documentation [ fhir:v "── Conformance to the IG profiles ───────────────────────────────────────────\r\nWhat the IG's profiles require that the response itself can supply. Called at\r\nthe end of each base group. The encounter and every who-element are the\r\nresponse's own; see mapmeta.py for what is and is not here.\r\n── Conformance to the IG profiles ───────────────────────────────────────────" ] ;
     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 "issued" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ] ;
         fhir:element [ fhir:v "authored" ] ;
         fhir:variable [ fhir:v "t" ] ;
         fhir:condition [ fhir:v "$this.toString().length() >= 20" ]
       ] ) ;
       fhir:target ( [
         fhir:context [ fhir:v "r" ] ;
         fhir:element [ fhir:v "issued" ] ;
         fhir:transform [ fhir:v "cast" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:id ;
             fhir:v "t"
           ]
         ] [
           fhir:value [
             a fhir:string ;
             fhir:v "instant"
           ]
         ] )
       ] )
     ] [
       fhir:name [ fhir:v "effective" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ] ;
         fhir:element [ fhir:v "authored" ] ;
         fhir:variable [ fhir:v "t" ] ;
         fhir:condition [ fhir:v "$this.toString().length() >= 20" ]
       ] ) ;
       fhir:target ( [
         fhir:context [ fhir:v "r" ] ;
         fhir:element [ fhir:v "effective" ] ;
         fhir:transform [ fhir:v "cast" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:id ;
             fhir:v "t"
           ]
         ] [
           fhir:value [
             a fhir:string ;
             fhir:v "instant"
           ]
         ] )
       ] )
     ] [
       fhir:name [ fhir:v "performerFromAuthor" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ] ;
         fhir:element [ fhir:v "author" ] ;
         fhir:variable [ fhir:v "au" ] ;
         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 "r" ] ;
         fhir:element [ fhir:v "performer" ] ;
         fhir:transform [ fhir:v "copy" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:id ;
             fhir:v "au"
           ]
         ] )
       ] )
     ] [
       fhir:name [ fhir:v "performerFallback" ] ;
       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 "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 "r" ] ;
           fhir:element [ fhir:v "performer" ] ;
           fhir:transform [ fhir:v "copy" ] ;
           fhir:parameter ( [
             fhir:value [
               a fhir:id ;
               fhir:v "src"
             ]
           ] )
         ] )
       ] )
     ] )
  ] [
     fhir:name [ fhir:v "ConformMedicationAdministration" ] ;
     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 "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 "r" ] ;
         fhir:element [ fhir:v "encounter" ] ;
         fhir:transform [ fhir:v "copy" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:id ;
             fhir:v "e"
           ]
         ] )
       ] )
     ] [
       fhir:name [ fhir:v "performerFromAuthor" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ] ;
         fhir:element [ fhir:v "author" ] ;
         fhir:variable [ fhir:v "au" ] ;
         fhir:condition [ fhir:v "(reference.exists() and (reference.startsWith('Practitioner/') or reference.startsWith('PractitionerRole/') or reference.startsWith('Patient/') or reference.startsWith('RelatedPerson/') or reference.startsWith('Device/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Practitioner') or ('/' + type).endsWith('/PractitionerRole') or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/RelatedPerson') or ('/' + type).endsWith('/Device')))" ]
       ] ) ;
       fhir:target ( [
         fhir:context [ fhir:v "r" ] ;
         fhir:element [ fhir:v "performer" ] ;
         fhir:variable [ fhir:v "p" ]
       ] [
         fhir:context [ fhir:v "p" ] ;
         fhir:element [ fhir:v "actor" ] ;
         fhir:variable [ fhir:v "cr" ] ;
         fhir:transform [ fhir:v "create" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:string ;
             fhir:v "CodeableReference"
           ]
         ] )
       ] [
         fhir:context [ fhir:v "cr" ] ;
         fhir:element [ fhir:v "reference" ] ;
         fhir:transform [ fhir:v "copy" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:id ;
             fhir:v "au"
           ]
         ] )
       ] )
     ] [
       fhir:name [ fhir:v "performerFallback" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ] ;
         fhir:condition [ fhir:v "author.where(((reference.exists() and (reference.startsWith('Practitioner/') or reference.startsWith('PractitionerRole/') or reference.startsWith('Patient/') or reference.startsWith('RelatedPerson/') or reference.startsWith('Device/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Practitioner') or ('/' + type).endsWith('/PractitionerRole') or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/RelatedPerson') or ('/' + type).endsWith('/Device'))))).exists().not()" ]
       ] ) ;
       fhir:rule ( [
         fhir:name [ fhir:v "performerFromSource" ] ;
         fhir:source ( [
           fhir:context [ fhir:v "qr" ] ;
           fhir:element [ fhir:v "source" ] ;
           fhir:variable [ fhir:v "src" ] ;
           fhir:condition [ fhir:v "(reference.exists() and (reference.startsWith('Practitioner/') or reference.startsWith('PractitionerRole/') or reference.startsWith('Patient/') or reference.startsWith('RelatedPerson/') or reference.startsWith('Device/'))) or (reference.empty() and (type.empty() or ('/' + type).endsWith('/Practitioner') or ('/' + type).endsWith('/PractitionerRole') or ('/' + type).endsWith('/Patient') or ('/' + type).endsWith('/RelatedPerson') or ('/' + type).endsWith('/Device')))" ]
         ] ) ;
         fhir:target ( [
           fhir:context [ fhir:v "r" ] ;
           fhir:element [ fhir:v "performer" ] ;
           fhir:variable [ fhir:v "p" ]
         ] [
           fhir:context [ fhir:v "p" ] ;
           fhir:element [ fhir:v "actor" ] ;
           fhir:variable [ fhir:v "cr" ] ;
           fhir:transform [ fhir:v "create" ] ;
           fhir:parameter ( [
             fhir:value [
               a fhir:string ;
               fhir:v "CodeableReference"
             ]
           ] )
         ] [
           fhir:context [ fhir:v "cr" ] ;
           fhir:element [ fhir:v "reference" ] ;
           fhir:transform [ fhir:v "copy" ] ;
           fhir:parameter ( [
             fhir:value [
               a fhir:id ;
               fhir:v "src"
             ]
           ] )
         ] )
       ] )
     ] )
  ] [
     fhir:name [ fhir:v "ConformServiceRequest" ] ;
     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 "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 "r" ] ;
         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 "r" ] ;
         fhir:element [ fhir:v "authoredOn" ] ;
         fhir:transform [ fhir:v "copy" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:id ;
             fhir:v "t"
           ]
         ] )
       ] )
     ] [
       fhir:name [ fhir:v "priority" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ]
       ] ) ;
       fhir:target ( [
         fhir:context [ fhir:v "r" ] ;
         fhir:element [ fhir:v "priority" ] ;
         fhir:transform [ fhir:v "copy" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:string ;
             fhir:v "routine"
           ]
         ] )
       ] )
     ] [
       fhir:name [ fhir:v "requesterFromAuthor" ] ;
       fhir:source ( [
         fhir:context [ fhir:v "qr" ] ;
         fhir:element [ fhir:v "author" ] ;
         fhir:variable [ fhir:v "au" ] ;
         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 "r" ] ;
         fhir:element [ fhir:v "requester" ] ;
         fhir:transform [ fhir:v "copy" ] ;
         fhir:parameter ( [
           fhir:value [
             a fhir:id ;
             fhir:v "au"
           ]
         ] )
       ] )
     ] [
       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 "r" ] ;
           fhir:element [ fhir:v "requester" ] ;
           fhir:transform [ fhir:v "copy" ] ;
           fhir:parameter ( [
             fhir:value [
               a fhir:id ;
               fhir:v "src"
             ]
           ] )
         ] )
       ] )
     ] )
  ] ) . # 

# -------------------------------------------------------------------------------------

