Healthy Route Implementation Guide
0.2.0 - ci-build

Healthy Route Implementation Guide, published by Savannah Informatics. This guide is not an authorized publication; it is the continuous build for version 0.2.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/savannahghi/healthy-route-ig/ and changes regularly. See the Directory of published versions

: Extract the vitals form - XML Representation

Draft as of 2026-11-12

Raw xml | Download


<StructureMap xmlns="http://hl7.org/fhir">
  <id value="HRExtractVitals"/>
  <text>
    <status value="generated"/>
    <div xmlns="http://www.w3.org/1999/xhtml"><p class="res-header-id"><b>Generated Narrative: StructureMap HRExtractVitals</b></p><a name="HRExtractVitals"> </a><a name="hcHRExtractVitals"> </a><pre class="fml">
<span style="color: #cc00cc">/// <b>url</b> = </span><span style="color: blue">'https://fhir.optimalhealth.org/ig/healthy-route/StructureMap/HRExtractVitals'</span>
<span style="color: #cc00cc">/// <b>version</b> = </span><span style="color: blue">'0.2.0'</span>
<span style="color: #cc00cc">/// <b>name</b> = </span><span style="color: blue">'HRExtractVitals'</span>
<span style="color: #cc00cc">/// <b>status</b> = </span><span style="color: blue">'draft'</span>

<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>
<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>
<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>

<b>group </b>HRExtractVitals<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"> {
</span>  qr<span style="color: navy"><b> -&gt; </b></span>bundle.type = <span style="color: blue">'transaction'</span> <i>&quot;type&quot;</i><span style="color: navy">;</span>
  qr.item<b> as </b><span style="color: maroon">g</span><b> where </b><span style="color: navy">(</span>linkId = 'bp-reading-1'<span style="color: navy">)</span><span style="color: navy"><b> -&gt; </b></span> bundle.entry<b> as </b><span style="color: maroon">e</span><span style="color: navy">, </span> e.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"> {
</span>    qr<span style="color: navy"><b> -&gt; </b></span>obs<b> then </b>Reading<span style="color: navy">(</span><span style="color: maroon">qr</span><span style="color: navy">, </span><span style="color: maroon">g</span><span style="color: navy">, </span><span style="color: maroon">obs</span><span style="color: navy">, </span><span style="color: maroon">e</span><span style="color: navy">)</span> <i>&quot;reading&quot;</i><span style="color: navy">;</span>
    g.item<b> as </b><span style="color: maroon">si</span><b> where </b><span style="color: navy">(</span>linkId = 'bp-reading-1.8480-6'<span style="color: navy">)</span><b> then</b><span style="color: navy"> {
</span>      si.answer first<b> as </b><span style="color: maroon">sa</span><b> then</b><span style="color: navy"> {
</span>        sa.value<b> as </b><span style="color: maroon">sv</span><span style="color: navy"><b> -&gt; </b></span>obs<b> then </b>Systolic<span style="color: navy">(</span><span style="color: maroon">qr</span><span style="color: navy">, </span><span style="color: maroon">sv</span><span style="color: navy">, </span><span style="color: maroon">obs</span><span style="color: navy">)</span> <i>&quot;systolic&quot;</i><span style="color: navy">;</span>
      <span style="color: navy">}</span><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;systolicItem&quot;</i><span style="color: navy">;</span>
    g.item<b> as </b><span style="color: maroon">di</span><b> where </b><span style="color: navy">(</span>linkId = 'bp-reading-1.8462-4'<span style="color: navy">)</span><b> then</b><span style="color: navy"> {
</span>      di.answer first<b> as </b><span style="color: maroon">da</span><b> then</b><span style="color: navy"> {
</span>        da.value<b> as </b><span style="color: maroon">dv</span><span style="color: navy"><b> -&gt; </b></span>obs<b> then </b>Diastolic<span style="color: navy">(</span><span style="color: maroon">qr</span><span style="color: navy">, </span><span style="color: maroon">dv</span><span style="color: navy">, </span><span style="color: maroon">obs</span><span style="color: navy">)</span> <i>&quot;diastolic&quot;</i><span style="color: navy">;</span>
      <span style="color: navy">}</span><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;diastolicItem&quot;</i><span style="color: navy">;</span>
    g.item<b> as </b><span style="color: maroon">ti</span><b> where </b><span style="color: navy">(</span>linkId = 'bp-reading-1.time'<span style="color: navy">)</span><b> then</b><span style="color: navy"> {
</span>      ti.answer first<b> as </b><span style="color: maroon">ta</span><b> then</b><span style="color: navy"> {
</span>        ta.value<b> as </b><span style="color: maroon">tv</span><span style="color: navy"><b> -&gt; </b></span>obs.effective = <span style="color: maroon">tv</span> <i>&quot;effective&quot;</i><span style="color: navy">;</span>
      <span style="color: navy">}</span><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;timeItem&quot;</i><span style="color: navy">;</span>
    qr<span style="color: navy"><b> -&gt; </b></span>obs.extension<b> as </b><span style="color: maroon">x</span><b> then</b><span style="color: navy"> {
</span>      qr<span style="color: navy"><b> -&gt; </b></span>x.url = <span style="color: blue">'https://fhir.optimalhealth.org/ig/healthy-route/StructureDefinition/hr-reading-sequence'</span> <i>&quot;url&quot;</i><span style="color: navy">;</span>
      qr<span style="color: navy"><b> -&gt; </b></span>x.value = <span style="color: blue">1</span> <i>&quot;value&quot;</i><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;sequence&quot;</i><span style="color: navy">;</span>
  <span style="color: navy">}</span> <i>&quot;reading1&quot;</i><span style="color: navy">;</span>
  qr.item<b> as </b><span style="color: maroon">g</span><b> where </b><span style="color: navy">(</span>linkId = 'bp-reading-2'<span style="color: navy">)</span><span style="color: navy"><b> -&gt; </b></span> bundle.entry<b> as </b><span style="color: maroon">e</span><span style="color: navy">, </span> e.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"> {
</span>    qr<span style="color: navy"><b> -&gt; </b></span>obs<b> then </b>Reading<span style="color: navy">(</span><span style="color: maroon">qr</span><span style="color: navy">, </span><span style="color: maroon">g</span><span style="color: navy">, </span><span style="color: maroon">obs</span><span style="color: navy">, </span><span style="color: maroon">e</span><span style="color: navy">)</span> <i>&quot;reading&quot;</i><span style="color: navy">;</span>
    g.item<b> as </b><span style="color: maroon">si</span><b> where </b><span style="color: navy">(</span>linkId = 'bp-reading-2.8480-6'<span style="color: navy">)</span><b> then</b><span style="color: navy"> {
</span>      si.answer first<b> as </b><span style="color: maroon">sa</span><b> then</b><span style="color: navy"> {
</span>        sa.value<b> as </b><span style="color: maroon">sv</span><span style="color: navy"><b> -&gt; </b></span>obs<b> then </b>Systolic<span style="color: navy">(</span><span style="color: maroon">qr</span><span style="color: navy">, </span><span style="color: maroon">sv</span><span style="color: navy">, </span><span style="color: maroon">obs</span><span style="color: navy">)</span> <i>&quot;systolic&quot;</i><span style="color: navy">;</span>
      <span style="color: navy">}</span><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;systolicItem&quot;</i><span style="color: navy">;</span>
    g.item<b> as </b><span style="color: maroon">di</span><b> where </b><span style="color: navy">(</span>linkId = 'bp-reading-2.8462-4'<span style="color: navy">)</span><b> then</b><span style="color: navy"> {
</span>      di.answer first<b> as </b><span style="color: maroon">da</span><b> then</b><span style="color: navy"> {
</span>        da.value<b> as </b><span style="color: maroon">dv</span><span style="color: navy"><b> -&gt; </b></span>obs<b> then </b>Diastolic<span style="color: navy">(</span><span style="color: maroon">qr</span><span style="color: navy">, </span><span style="color: maroon">dv</span><span style="color: navy">, </span><span style="color: maroon">obs</span><span style="color: navy">)</span> <i>&quot;diastolic&quot;</i><span style="color: navy">;</span>
      <span style="color: navy">}</span><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;diastolicItem&quot;</i><span style="color: navy">;</span>
    g.item<b> as </b><span style="color: maroon">ti</span><b> where </b><span style="color: navy">(</span>linkId = 'bp-reading-2.time'<span style="color: navy">)</span><b> then</b><span style="color: navy"> {
</span>      ti.answer first<b> as </b><span style="color: maroon">ta</span><b> then</b><span style="color: navy"> {
</span>        ta.value<b> as </b><span style="color: maroon">tv</span><span style="color: navy"><b> -&gt; </b></span>obs.effective = <span style="color: maroon">tv</span> <i>&quot;effective&quot;</i><span style="color: navy">;</span>
      <span style="color: navy">}</span><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;timeItem&quot;</i><span style="color: navy">;</span>
    qr<span style="color: navy"><b> -&gt; </b></span>obs.extension<b> as </b><span style="color: maroon">x</span><b> then</b><span style="color: navy"> {
</span>      qr<span style="color: navy"><b> -&gt; </b></span>x.url = <span style="color: blue">'https://fhir.optimalhealth.org/ig/healthy-route/StructureDefinition/hr-reading-sequence'</span> <i>&quot;url&quot;</i><span style="color: navy">;</span>
      qr<span style="color: navy"><b> -&gt; </b></span>x.value = <span style="color: blue">2</span> <i>&quot;value&quot;</i><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;sequence&quot;</i><span style="color: navy">;</span>
    g.item<b> as </b><span style="color: maroon">pi</span><b> where </b><span style="color: navy">(</span>linkId = 'bp-reading-2.bp-position'<span style="color: navy">)</span><b> then</b><span style="color: navy"> {
</span>      pi.answer first<b> as </b><span style="color: maroon">pa</span><b> then</b><span style="color: navy"> {
</span>        pa.value<b> as </b><span style="color: maroon">pv</span><span style="color: navy"><b> -&gt; </b></span>obs.extension<b> as </b><span style="color: maroon">x</span><b> then</b><span style="color: navy"> {
</span>          qr<span style="color: navy"><b> -&gt; </b></span>x.url = <span style="color: blue">'https://fhir.optimalhealth.org/ig/healthy-route/StructureDefinition/hr-reading-position'</span> <i>&quot;url&quot;</i><span style="color: navy">;</span>
          pv<span style="color: navy"><b> -&gt; </b></span> x.value = <b>create</b><span style="color: navy">(</span><span style="color: blue">'CodeableConcept'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">concept</span><span style="color: navy">, </span> concept.coding = <span style="color: maroon">pv</span> <i>&quot;value&quot;</i><span style="color: navy">;</span>
        <span style="color: navy">}</span> <i>&quot;extension&quot;</i><span style="color: navy">;</span>
      <span style="color: navy">}</span><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;position&quot;</i><span style="color: navy">;</span>
  <span style="color: navy">}</span> <i>&quot;reading2&quot;</i><span style="color: navy">;</span>
  qr.item<b> as </b><span style="color: maroon">g</span><b> where </b><span style="color: navy">(</span>linkId = 'bp-reading-3'<span style="color: navy">)</span><span style="color: navy"><b> -&gt; </b></span> bundle.entry<b> as </b><span style="color: maroon">e</span><span style="color: navy">, </span> e.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"> {
</span>    qr<span style="color: navy"><b> -&gt; </b></span>obs<b> then </b>Reading<span style="color: navy">(</span><span style="color: maroon">qr</span><span style="color: navy">, </span><span style="color: maroon">g</span><span style="color: navy">, </span><span style="color: maroon">obs</span><span style="color: navy">, </span><span style="color: maroon">e</span><span style="color: navy">)</span> <i>&quot;reading&quot;</i><span style="color: navy">;</span>
    g.item<b> as </b><span style="color: maroon">si</span><b> where </b><span style="color: navy">(</span>linkId = 'bp-reading-3.8480-6'<span style="color: navy">)</span><b> then</b><span style="color: navy"> {
</span>      si.answer first<b> as </b><span style="color: maroon">sa</span><b> then</b><span style="color: navy"> {
</span>        sa.value<b> as </b><span style="color: maroon">sv</span><span style="color: navy"><b> -&gt; </b></span>obs<b> then </b>Systolic<span style="color: navy">(</span><span style="color: maroon">qr</span><span style="color: navy">, </span><span style="color: maroon">sv</span><span style="color: navy">, </span><span style="color: maroon">obs</span><span style="color: navy">)</span> <i>&quot;systolic&quot;</i><span style="color: navy">;</span>
      <span style="color: navy">}</span><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;systolicItem&quot;</i><span style="color: navy">;</span>
    g.item<b> as </b><span style="color: maroon">di</span><b> where </b><span style="color: navy">(</span>linkId = 'bp-reading-3.8462-4'<span style="color: navy">)</span><b> then</b><span style="color: navy"> {
</span>      di.answer first<b> as </b><span style="color: maroon">da</span><b> then</b><span style="color: navy"> {
</span>        da.value<b> as </b><span style="color: maroon">dv</span><span style="color: navy"><b> -&gt; </b></span>obs<b> then </b>Diastolic<span style="color: navy">(</span><span style="color: maroon">qr</span><span style="color: navy">, </span><span style="color: maroon">dv</span><span style="color: navy">, </span><span style="color: maroon">obs</span><span style="color: navy">)</span> <i>&quot;diastolic&quot;</i><span style="color: navy">;</span>
      <span style="color: navy">}</span><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;diastolicItem&quot;</i><span style="color: navy">;</span>
    g.item<b> as </b><span style="color: maroon">ti</span><b> where </b><span style="color: navy">(</span>linkId = 'bp-reading-3.time'<span style="color: navy">)</span><b> then</b><span style="color: navy"> {
</span>      ti.answer first<b> as </b><span style="color: maroon">ta</span><b> then</b><span style="color: navy"> {
</span>        ta.value<b> as </b><span style="color: maroon">tv</span><span style="color: navy"><b> -&gt; </b></span>obs.effective = <span style="color: maroon">tv</span> <i>&quot;effective&quot;</i><span style="color: navy">;</span>
      <span style="color: navy">}</span><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;timeItem&quot;</i><span style="color: navy">;</span>
    qr<span style="color: navy"><b> -&gt; </b></span>obs.extension<b> as </b><span style="color: maroon">x</span><b> then</b><span style="color: navy"> {
</span>      qr<span style="color: navy"><b> -&gt; </b></span>x.url = <span style="color: blue">'https://fhir.optimalhealth.org/ig/healthy-route/StructureDefinition/hr-reading-sequence'</span> <i>&quot;url&quot;</i><span style="color: navy">;</span>
      qr<span style="color: navy"><b> -&gt; </b></span>x.value = <span style="color: blue">3</span> <i>&quot;value&quot;</i><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;sequence&quot;</i><span style="color: navy">;</span>
  <span style="color: navy">}</span> <i>&quot;reading3&quot;</i><span style="color: navy">;</span>
  qr.item<b> as </b><span style="color: maroon">it</span><b> where </b><span style="color: navy">(</span>linkId = 'retinal-capture-time'<span style="color: navy">)</span><b> then</b><span style="color: navy"> {
</span>    it.answer first<b> as </b><span style="color: maroon">a</span><span style="color: navy"><b> -&gt; </b></span> bundle.entry<b> as </b><span style="color: maroon">e</span><span style="color: navy">, </span> e.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"> {
</span>      qr<span style="color: navy"><b> -&gt; </b></span>obs<b> then </b>Shared<span style="color: navy">(</span><span style="color: maroon">qr</span><span style="color: navy">, </span><span style="color: maroon">it</span><span style="color: navy">, </span><span style="color: maroon">obs</span><span style="color: navy">, </span><span style="color: maroon">e</span><span style="color: navy">)</span> <i>&quot;base&quot;</i><span style="color: navy">;</span>
      qr<span style="color: navy"><b> -&gt; </b></span> obs.meta<b> as </b><span style="color: maroon">m</span><span style="color: navy">, </span> m.profile = <span style="color: blue">'https://fhir.optimalhealth.org/ig/healthy-route/StructureDefinition/hr-observation'</span> <i>&quot;profile&quot;</i><span style="color: navy">;</span>
      qr<span style="color: navy"><b> -&gt; </b></span>obs.category = <b>create</b><span style="color: navy">(</span><span style="color: blue">'CodeableConcept'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">cv</span><b> then</b><span style="color: navy"> {
</span>        qr<span style="color: navy"><b> -&gt; </b></span>cv.coding = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Coding'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">cd</span><b> then</b><span style="color: navy"> {
</span>          qr<span style="color: navy"><b> -&gt; </b></span>cd.system = <span style="color: blue">'http://terminology.hl7.org/CodeSystem/observation-category'</span> <i>&quot;categorySystem&quot;</i><span style="color: navy">;</span>
          qr<span style="color: navy"><b> -&gt; </b></span>cd.code = <span style="color: blue">'procedure'</span> <i>&quot;categoryCode&quot;</i><span style="color: navy">;</span>
          qr<span style="color: navy"><b> -&gt; </b></span>cd.display = <span style="color: blue">'Procedure'</span> <i>&quot;categoryDisplay&quot;</i><span style="color: navy">;</span>
        <span style="color: navy">}</span> <i>&quot;categoryCoding&quot;</i><span style="color: navy">;</span>
      <span style="color: navy">}</span> <i>&quot;category&quot;</i><span style="color: navy">;</span>
      qr<span style="color: navy"><b> -&gt; </b></span>obs.code = <b>create</b><span style="color: navy">(</span><span style="color: blue">'CodeableConcept'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">cv</span><b> then</b><span style="color: navy"> {
</span>        qr<span style="color: navy"><b> -&gt; </b></span>cv.coding = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Coding'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">cd</span><b> then</b><span style="color: navy"> {
</span>          qr<span style="color: navy"><b> -&gt; </b></span>cd.system = <span style="color: blue">'https://fhir.optimalhealth.org/ig/healthy-route/CodeSystem/hr-measurement'</span> <i>&quot;codeSystem&quot;</i><span style="color: navy">;</span>
          qr<span style="color: navy"><b> -&gt; </b></span>cd.code = <span style="color: blue">'retinal-capture-time'</span> <i>&quot;codeCode&quot;</i><span style="color: navy">;</span>
          qr<span style="color: navy"><b> -&gt; </b></span>cd.display = <span style="color: blue">'Time of retinal capture'</span> <i>&quot;codeDisplay&quot;</i><span style="color: navy">;</span>
        <span style="color: navy">}</span> <i>&quot;codeCoding&quot;</i><span style="color: navy">;</span>
      <span style="color: navy">}</span> <i>&quot;code&quot;</i><span style="color: navy">;</span>
      a.value<b> as </b><span style="color: maroon">v</span><span style="color: navy"><b> -&gt; </b></span>obs.effective = <span style="color: maroon">v</span> <i>&quot;effective&quot;</i><span style="color: navy">;</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>
    <span style="color: navy">}</span> <i>&quot;obs&quot;</i><span style="color: navy">;</span>
  <span style="color: navy">}</span> <i>&quot;captureTime&quot;</i><span style="color: navy">;</span>
  qr<span style="color: navy"><b> -&gt; </b></span>evaluate<span style="color: navy">(</span>qr<span style="color: navy">, </span>id.replaceMatches('/_history/.*$', '').replaceMatches('^.*/', '')<span style="color: navy">)</span><b> as </b><span style="color: maroon">qid</span><b> then</b><span style="color: navy"> {
</span>    qr.item<b> as </b><span style="color: maroon">g</span><b> where </b><span style="color: navy">(</span>linkId = 'bp-mean'<span style="color: navy">)</span><span style="color: navy"><b> -&gt; </b></span> bundle.entry<b> as </b><span style="color: maroon">e</span><span style="color: navy">, </span> e.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"> {
</span>      qr<span style="color: navy"><b> -&gt; </b></span>obs<b> then </b>Reading<span style="color: navy">(</span><span style="color: maroon">qr</span><span style="color: navy">, </span><span style="color: maroon">g</span><span style="color: navy">, </span><span style="color: maroon">obs</span><span style="color: navy">, </span><span style="color: maroon">e</span><span style="color: navy">)</span> <i>&quot;reading&quot;</i><span style="color: navy">;</span>
      qr<span style="color: navy"><b> -&gt; </b></span>obs<b> then </b>Derived<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;derivedCategory&quot;</i><span style="color: navy">;</span>
      g.item<b> as </b><span style="color: maroon">si</span><b> where </b><span style="color: navy">(</span>linkId = 'bp-mean.8480-6'<span style="color: navy">)</span><b> then</b><span style="color: navy"> {
</span>        si.answer first<b> as </b><span style="color: maroon">sa</span><b> then</b><span style="color: navy"> {
</span>          sa.value<b> as </b><span style="color: maroon">sv</span><span style="color: navy"><b> -&gt; </b></span>obs<b> then </b>Systolic<span style="color: navy">(</span><span style="color: maroon">qr</span><span style="color: navy">, </span><span style="color: maroon">sv</span><span style="color: navy">, </span><span style="color: maroon">obs</span><span style="color: navy">)</span> <i>&quot;systolic&quot;</i><span style="color: navy">;</span>
        <span style="color: navy">}</span><span style="color: navy">;</span>
      <span style="color: navy">}</span> <i>&quot;systolicItem&quot;</i><span style="color: navy">;</span>
      g.item<b> as </b><span style="color: maroon">di</span><b> where </b><span style="color: navy">(</span>linkId = 'bp-mean.8462-4'<span style="color: navy">)</span><b> then</b><span style="color: navy"> {
</span>        di.answer first<b> as </b><span style="color: maroon">da</span><b> then</b><span style="color: navy"> {
</span>          da.value<b> as </b><span style="color: maroon">dv</span><span style="color: navy"><b> -&gt; </b></span>obs<b> then </b>Diastolic<span style="color: navy">(</span><span style="color: maroon">qr</span><span style="color: navy">, </span><span style="color: maroon">dv</span><span style="color: navy">, </span><span style="color: maroon">obs</span><span style="color: navy">)</span> <i>&quot;diastolic&quot;</i><span style="color: navy">;</span>
        <span style="color: navy">}</span><span style="color: navy">;</span>
      <span style="color: navy">}</span> <i>&quot;diastolicItem&quot;</i><span style="color: navy">;</span>
      qr.item<b> as </b><span style="color: maroon">r3</span><b> where </b><span style="color: navy">(</span>linkId = 'bp-reading-3'<span style="color: navy">)</span><b> then</b><span style="color: navy"> {
</span>        r3.item<b> as </b><span style="color: maroon">ti</span><b> where </b><span style="color: navy">(</span>linkId = 'bp-reading-3.time'<span style="color: navy">)</span><b> then</b><span style="color: navy"> {
</span>          ti.answer first<b> as </b><span style="color: maroon">ta</span><b> then</b><span style="color: navy"> {
</span>            ta.value<b> as </b><span style="color: maroon">tv</span><span style="color: navy"><b> -&gt; </b></span>obs.effective = <span style="color: maroon">tv</span> <i>&quot;effective&quot;</i><span style="color: navy">;</span>
          <span style="color: navy">}</span><span style="color: navy">;</span>
        <span style="color: navy">}</span> <i>&quot;time&quot;</i><span style="color: navy">;</span>
      <span style="color: navy">}</span> <i>&quot;reading3&quot;</i><span style="color: navy">;</span>
      qr<span style="color: navy"><b> -&gt; </b></span> obs.method = <b>create</b><span style="color: navy">(</span><span style="color: blue">'CodeableConcept'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">m</span><span style="color: navy">, </span> m.text = <span style="color: blue">'Mean of readings 2 and 3'</span> <i>&quot;method&quot;</i><span style="color: navy">;</span>
      qr<span style="color: navy"><b> -&gt; </b></span> obs.derivedFrom = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Reference'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">r</span><span style="color: navy">, </span> r.reference = <b>append</b><span style="color: navy">(</span><span style="color: blue">'Observation/'</span><span style="color: navy">, </span><span style="color: maroon">qid</span><span style="color: navy">, </span><span style="color: blue">'-bp-reading-2'</span><span style="color: navy">)</span> <i>&quot;reading2Ref&quot;</i><span style="color: navy">;</span>
      qr<span style="color: navy"><b> -&gt; </b></span> obs.derivedFrom = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Reference'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">r</span><span style="color: navy">, </span> r.reference = <b>append</b><span style="color: navy">(</span><span style="color: blue">'Observation/'</span><span style="color: navy">, </span><span style="color: maroon">qid</span><span style="color: navy">, </span><span style="color: blue">'-bp-reading-3'</span><span style="color: navy">)</span> <i>&quot;reading3Ref&quot;</i><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;mean&quot;</i><span style="color: navy">;</span>
    qr.item<b> as </b><span style="color: maroon">g</span><b> where </b><span style="color: navy">(</span>linkId = 'bp-mean-all'<span style="color: navy">)</span><span style="color: navy"><b> -&gt; </b></span> bundle.entry<b> as </b><span style="color: maroon">e</span><span style="color: navy">, </span> e.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"> {
</span>      qr<span style="color: navy"><b> -&gt; </b></span>obs<b> then </b>Reading<span style="color: navy">(</span><span style="color: maroon">qr</span><span style="color: navy">, </span><span style="color: maroon">g</span><span style="color: navy">, </span><span style="color: maroon">obs</span><span style="color: navy">, </span><span style="color: maroon">e</span><span style="color: navy">)</span> <i>&quot;reading&quot;</i><span style="color: navy">;</span>
      qr<span style="color: navy"><b> -&gt; </b></span>obs<b> then </b>Derived<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;derivedCategory&quot;</i><span style="color: navy">;</span>
      g.item<b> as </b><span style="color: maroon">si</span><b> where </b><span style="color: navy">(</span>linkId = 'bp-mean-all.8480-6'<span style="color: navy">)</span><b> then</b><span style="color: navy"> {
</span>        si.answer first<b> as </b><span style="color: maroon">sa</span><b> then</b><span style="color: navy"> {
</span>          sa.value<b> as </b><span style="color: maroon">sv</span><span style="color: navy"><b> -&gt; </b></span>obs<b> then </b>Systolic<span style="color: navy">(</span><span style="color: maroon">qr</span><span style="color: navy">, </span><span style="color: maroon">sv</span><span style="color: navy">, </span><span style="color: maroon">obs</span><span style="color: navy">)</span> <i>&quot;systolic&quot;</i><span style="color: navy">;</span>
        <span style="color: navy">}</span><span style="color: navy">;</span>
      <span style="color: navy">}</span> <i>&quot;systolicItem&quot;</i><span style="color: navy">;</span>
      g.item<b> as </b><span style="color: maroon">di</span><b> where </b><span style="color: navy">(</span>linkId = 'bp-mean-all.8462-4'<span style="color: navy">)</span><b> then</b><span style="color: navy"> {
</span>        di.answer first<b> as </b><span style="color: maroon">da</span><b> then</b><span style="color: navy"> {
</span>          da.value<b> as </b><span style="color: maroon">dv</span><span style="color: navy"><b> -&gt; </b></span>obs<b> then </b>Diastolic<span style="color: navy">(</span><span style="color: maroon">qr</span><span style="color: navy">, </span><span style="color: maroon">dv</span><span style="color: navy">, </span><span style="color: maroon">obs</span><span style="color: navy">)</span> <i>&quot;diastolic&quot;</i><span style="color: navy">;</span>
        <span style="color: navy">}</span><span style="color: navy">;</span>
      <span style="color: navy">}</span> <i>&quot;diastolicItem&quot;</i><span style="color: navy">;</span>
      qr.item<b> as </b><span style="color: maroon">r3</span><b> where </b><span style="color: navy">(</span>linkId = 'bp-reading-3'<span style="color: navy">)</span><b> then</b><span style="color: navy"> {
</span>        r3.item<b> as </b><span style="color: maroon">ti</span><b> where </b><span style="color: navy">(</span>linkId = 'bp-reading-3.time'<span style="color: navy">)</span><b> then</b><span style="color: navy"> {
</span>          ti.answer first<b> as </b><span style="color: maroon">ta</span><b> then</b><span style="color: navy"> {
</span>            ta.value<b> as </b><span style="color: maroon">tv</span><span style="color: navy"><b> -&gt; </b></span>obs.effective = <span style="color: maroon">tv</span> <i>&quot;effective&quot;</i><span style="color: navy">;</span>
          <span style="color: navy">}</span><span style="color: navy">;</span>
        <span style="color: navy">}</span> <i>&quot;time&quot;</i><span style="color: navy">;</span>
      <span style="color: navy">}</span> <i>&quot;reading3&quot;</i><span style="color: navy">;</span>
      qr<span style="color: navy"><b> -&gt; </b></span> obs.method = <b>create</b><span style="color: navy">(</span><span style="color: blue">'CodeableConcept'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">m</span><span style="color: navy">, </span> m.text = <span style="color: blue">'Mean of readings 1, 2 and 3'</span> <i>&quot;method&quot;</i><span style="color: navy">;</span>
      qr<span style="color: navy"><b> -&gt; </b></span> obs.derivedFrom = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Reference'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">r</span><span style="color: navy">, </span> r.reference = <b>append</b><span style="color: navy">(</span><span style="color: blue">'Observation/'</span><span style="color: navy">, </span><span style="color: maroon">qid</span><span style="color: navy">, </span><span style="color: blue">'-bp-reading-1'</span><span style="color: navy">)</span> <i>&quot;reading1Ref&quot;</i><span style="color: navy">;</span>
      qr<span style="color: navy"><b> -&gt; </b></span> obs.derivedFrom = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Reference'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">r</span><span style="color: navy">, </span> r.reference = <b>append</b><span style="color: navy">(</span><span style="color: blue">'Observation/'</span><span style="color: navy">, </span><span style="color: maroon">qid</span><span style="color: navy">, </span><span style="color: blue">'-bp-reading-2'</span><span style="color: navy">)</span> <i>&quot;reading2Ref&quot;</i><span style="color: navy">;</span>
      qr<span style="color: navy"><b> -&gt; </b></span> obs.derivedFrom = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Reference'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">r</span><span style="color: navy">, </span> r.reference = <b>append</b><span style="color: navy">(</span><span style="color: blue">'Observation/'</span><span style="color: navy">, </span><span style="color: maroon">qid</span><span style="color: navy">, </span><span style="color: blue">'-bp-reading-3'</span><span style="color: navy">)</span> <i>&quot;reading3Ref&quot;</i><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;meanAll&quot;</i><span style="color: navy">;</span>
  <span style="color: navy">}</span> <i>&quot;derived&quot;</i><span style="color: navy">;</span>
<span style="color: navy">}

</span><span style="color: navy">// </span><span style="color: green">The category a value worked out on this form carries beside its FHIR one.</span>
<b>group </b>Derived<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"> {
</span>  qr<span style="color: navy"><b> -&gt; </b></span>obs.category = <b>create</b><span style="color: navy">(</span><span style="color: blue">'CodeableConcept'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">cv</span><b> then</b><span style="color: navy"> {
</span>    qr<span style="color: navy"><b> -&gt; </b></span>cv.coding = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Coding'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">cd</span><b> then</b><span style="color: navy"> {
</span>      qr<span style="color: navy"><b> -&gt; </b></span>cd.system = <span style="color: blue">'https://fhir.optimalhealth.org/ig/healthy-route/CodeSystem/hr-observation-category'</span> <i>&quot;derivedSystem&quot;</i><span style="color: navy">;</span>
      qr<span style="color: navy"><b> -&gt; </b></span>cd.code = <span style="color: blue">'derived'</span> <i>&quot;derivedCode&quot;</i><span style="color: navy">;</span>
      qr<span style="color: navy"><b> -&gt; </b></span>cd.display = <span style="color: blue">'Derived'</span> <i>&quot;derivedDisplay&quot;</i><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;derivedCoding&quot;</i><span style="color: navy">;</span>
  <span style="color: navy">}</span> <i>&quot;category&quot;</i><span style="color: navy">;</span>
<span style="color: navy">}

</span><span style="color: navy">// </span><span style="color: green">One reading on the core blood pressure profile: the panel code, the monitor</span>
<span style="color: navy">// </span><span style="color: green">as a component, and the shared identity. The group item's linkId names it.</span>
<b>group </b>Reading<span style="color: navy">(</span><b>source</b> <span style="color: maroon">qr</span><span style="color: navy"> : </span>QR, <b>source</b> <span style="color: maroon">g</span>, <b>target</b> <span style="color: maroon">obs</span><span style="color: navy"> : </span>Observation, <b>target</b> <span style="color: maroon">e</span><span style="color: navy">)</span><span style="color: navy"> {
</span>  qr<span style="color: navy"><b> -&gt; </b></span>obs<b> then </b>Shared<span style="color: navy">(</span><span style="color: maroon">qr</span><span style="color: navy">, </span><span style="color: maroon">g</span><span style="color: navy">, </span><span style="color: maroon">obs</span><span style="color: navy">, </span><span style="color: maroon">e</span><span style="color: navy">)</span> <i>&quot;base&quot;</i><span style="color: navy">;</span>
  qr<span style="color: navy"><b> -&gt; </b></span> obs.meta<b> as </b><span style="color: maroon">m</span><span style="color: navy">, </span> m.profile = <span style="color: blue">'https://fhir.optimalhealth.org/ig/healthy-route/StructureDefinition/hr-blood-pressure'</span> <i>&quot;profile&quot;</i><span style="color: navy">;</span>
  qr<span style="color: navy"><b> -&gt; </b></span>obs.category = <b>create</b><span style="color: navy">(</span><span style="color: blue">'CodeableConcept'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">cv</span><b> then</b><span style="color: navy"> {
</span>    qr<span style="color: navy"><b> -&gt; </b></span>cv.coding = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Coding'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">cd</span><b> then</b><span style="color: navy"> {
</span>      qr<span style="color: navy"><b> -&gt; </b></span>cd.system = <span style="color: blue">'http://terminology.hl7.org/CodeSystem/observation-category'</span> <i>&quot;categorySystem&quot;</i><span style="color: navy">;</span>
      qr<span style="color: navy"><b> -&gt; </b></span>cd.code = <span style="color: blue">'vital-signs'</span> <i>&quot;categoryCode&quot;</i><span style="color: navy">;</span>
      qr<span style="color: navy"><b> -&gt; </b></span>cd.display = <span style="color: blue">'Vital Signs'</span> <i>&quot;categoryDisplay&quot;</i><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;categoryCoding&quot;</i><span style="color: navy">;</span>
  <span style="color: navy">}</span> <i>&quot;category&quot;</i><span style="color: navy">;</span>
  qr<span style="color: navy"><b> -&gt; </b></span>obs.code = <b>create</b><span style="color: navy">(</span><span style="color: blue">'CodeableConcept'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">cv</span><b> then</b><span style="color: navy"> {
</span>    qr<span style="color: navy"><b> -&gt; </b></span>cv.coding = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Coding'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">cd</span><b> then</b><span style="color: navy"> {
</span>      qr<span style="color: navy"><b> -&gt; </b></span>cd.system = <span style="color: blue">'http://loinc.org'</span> <i>&quot;codeSystem&quot;</i><span style="color: navy">;</span>
      qr<span style="color: navy"><b> -&gt; </b></span>cd.code = <span style="color: blue">'85354-9'</span> <i>&quot;codeCode&quot;</i><span style="color: navy">;</span>
      qr<span style="color: navy"><b> -&gt; </b></span>cd.display = <span style="color: blue">'Blood pressure panel with all children optional'</span> <i>&quot;codeDisplay&quot;</i><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;codeCoding&quot;</i><span style="color: navy">;</span>
  <span style="color: navy">}</span> <i>&quot;code&quot;</i><span style="color: navy">;</span>
  qr.item<b> as </b><span style="color: maroon">d</span><b> where </b><span style="color: navy">(</span>linkId = 'bp-device'<span style="color: navy">)</span><b> then</b><span style="color: navy"> {
</span>    d.answer first<b> as </b><span style="color: maroon">da</span><b> then</b><span style="color: navy"> {
</span>      da.value<b> as </b><span style="color: maroon">dv</span><span style="color: navy"><b> -&gt; </b></span>obs.extension<b> as </b><span style="color: maroon">x</span><b> then</b><span style="color: navy"> {
</span>        qr<span style="color: navy"><b> -&gt; </b></span>x.url = <span style="color: blue">'https://fhir.optimalhealth.org/ig/healthy-route/StructureDefinition/hr-reading-device'</span> <i>&quot;url&quot;</i><span style="color: navy">;</span>
        dv<span style="color: navy"><b> -&gt; </b></span> x.value = <b>create</b><span style="color: navy">(</span><span style="color: blue">'CodeableConcept'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">concept</span><span style="color: navy">, </span> concept.coding = <span style="color: maroon">dv</span> <i>&quot;value&quot;</i><span style="color: navy">;</span>
      <span style="color: navy">}</span> <i>&quot;extension&quot;</i><span style="color: navy">;</span>
    <span style="color: navy">}</span><span style="color: navy">;</span>
  <span style="color: navy">}</span> <i>&quot;device&quot;</i><span style="color: navy">;</span>
<span style="color: navy">}

</span><b>group </b>Systolic<span style="color: navy">(</span><b>source</b> <span style="color: maroon">qr</span><span style="color: navy"> : </span>QR, <b>source</b> <span style="color: maroon">sv</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"> {
</span>  sv<span style="color: navy"><b> -&gt; </b></span>obs.component<b> as </b><span style="color: maroon">comp</span><b> then</b><span style="color: navy"> {
</span>    qr<span style="color: navy"><b> -&gt; </b></span>comp.code = <b>create</b><span style="color: navy">(</span><span style="color: blue">'CodeableConcept'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">cv</span><b> then</b><span style="color: navy"> {
</span>      qr<span style="color: navy"><b> -&gt; </b></span>cv.coding = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Coding'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">cd</span><b> then</b><span style="color: navy"> {
</span>        qr<span style="color: navy"><b> -&gt; </b></span>cd.system = <span style="color: blue">'http://loinc.org'</span> <i>&quot;codeSystem&quot;</i><span style="color: navy">;</span>
        qr<span style="color: navy"><b> -&gt; </b></span>cd.code = <span style="color: blue">'8480-6'</span> <i>&quot;codeCode&quot;</i><span style="color: navy">;</span>
        qr<span style="color: navy"><b> -&gt; </b></span>cd.display = <span style="color: blue">'Systolic blood pressure'</span> <i>&quot;codeDisplay&quot;</i><span style="color: navy">;</span>
      <span style="color: navy">}</span> <i>&quot;codeCoding&quot;</i><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;code&quot;</i><span style="color: navy">;</span>
    sv<span style="color: navy"><b> -&gt; </b></span>comp.value = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Quantity'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">q</span><b> then</b><span style="color: navy"> {
</span>      sv<span style="color: navy"><b> -&gt; </b></span>q.value = <span style="color: maroon">sv</span> <i>&quot;value&quot;</i><span style="color: navy">;</span>
      qr<span style="color: navy"><b> -&gt; </b></span>q.system = <span style="color: blue">'http://unitsofmeasure.org'</span> <i>&quot;system&quot;</i><span style="color: navy">;</span>
      qr<span style="color: navy"><b> -&gt; </b></span>q.code = <span style="color: blue">'mm[Hg]'</span> <i>&quot;unitCode&quot;</i><span style="color: navy">;</span>
      qr<span style="color: navy"><b> -&gt; </b></span>q.unit = <span style="color: blue">'mmHg'</span> <i>&quot;unit&quot;</i><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;quantity&quot;</i><span style="color: navy">;</span>
  <span style="color: navy">}</span> <i>&quot;component&quot;</i><span style="color: navy">;</span>
<span style="color: navy">}

</span><b>group </b>Diastolic<span style="color: navy">(</span><b>source</b> <span style="color: maroon">qr</span><span style="color: navy"> : </span>QR, <b>source</b> <span style="color: maroon">dv</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"> {
</span>  dv<span style="color: navy"><b> -&gt; </b></span>obs.component<b> as </b><span style="color: maroon">comp</span><b> then</b><span style="color: navy"> {
</span>    qr<span style="color: navy"><b> -&gt; </b></span>comp.code = <b>create</b><span style="color: navy">(</span><span style="color: blue">'CodeableConcept'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">cv</span><b> then</b><span style="color: navy"> {
</span>      qr<span style="color: navy"><b> -&gt; </b></span>cv.coding = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Coding'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">cd</span><b> then</b><span style="color: navy"> {
</span>        qr<span style="color: navy"><b> -&gt; </b></span>cd.system = <span style="color: blue">'http://loinc.org'</span> <i>&quot;codeSystem&quot;</i><span style="color: navy">;</span>
        qr<span style="color: navy"><b> -&gt; </b></span>cd.code = <span style="color: blue">'8462-4'</span> <i>&quot;codeCode&quot;</i><span style="color: navy">;</span>
        qr<span style="color: navy"><b> -&gt; </b></span>cd.display = <span style="color: blue">'Diastolic blood pressure'</span> <i>&quot;codeDisplay&quot;</i><span style="color: navy">;</span>
      <span style="color: navy">}</span> <i>&quot;codeCoding&quot;</i><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;code&quot;</i><span style="color: navy">;</span>
    dv<span style="color: navy"><b> -&gt; </b></span>comp.value = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Quantity'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">q</span><b> then</b><span style="color: navy"> {
</span>      dv<span style="color: navy"><b> -&gt; </b></span>q.value = <span style="color: maroon">dv</span> <i>&quot;value&quot;</i><span style="color: navy">;</span>
      qr<span style="color: navy"><b> -&gt; </b></span>q.system = <span style="color: blue">'http://unitsofmeasure.org'</span> <i>&quot;system&quot;</i><span style="color: navy">;</span>
      qr<span style="color: navy"><b> -&gt; </b></span>q.code = <span style="color: blue">'mm[Hg]'</span> <i>&quot;unitCode&quot;</i><span style="color: navy">;</span>
      qr<span style="color: navy"><b> -&gt; </b></span>q.unit = <span style="color: blue">'mmHg'</span> <i>&quot;unit&quot;</i><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;quantity&quot;</i><span style="color: navy">;</span>
  <span style="color: navy">}</span> <i>&quot;component&quot;</i><span style="color: navy">;</span>
<span style="color: navy">}

</span><span style="color: navy">// </span><span style="color: green">Identity, tags, tenant, subject, encounter and performer. The profile is set</span>
<span style="color: navy">// </span><span style="color: green">here for a measurement and overridden by Reading for a blood pressure.</span>
<b>group </b>Shared<span style="color: navy">(</span><b>source</b> <span style="color: maroon">qr</span><span style="color: navy"> : </span>QR, <b>source</b> <span style="color: maroon">it</span>, <b>target</b> <span style="color: maroon">obs</span><span style="color: navy"> : </span>Observation, <b>target</b> <span style="color: maroon">e</span><span style="color: navy">)</span><span style="color: navy"> {
</span>  qr<span style="color: navy"><b> -&gt; </b></span>evaluate<span style="color: navy">(</span>qr<span style="color: navy">, </span>id.replaceMatches('/_history/.*$', '').replaceMatches('^.*/', '')<span style="color: navy">)</span><b> as </b><span style="color: maroon">qid</span><b> then</b><span style="color: navy"> {
</span>    it.linkId<b> as </b><span style="color: maroon">k</span><span style="color: navy"><b> -&gt; </b></span> <b>append</b><span style="color: navy">(</span><span style="color: maroon">qid</span><span style="color: navy">, </span><span style="color: blue">'-'</span><span style="color: navy">, </span><span style="color: maroon">k</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">idText</span><span style="color: navy">, </span> obs.id = <b>cast</b><span style="color: navy">(</span><span style="color: maroon">idText</span><span style="color: navy">, </span><span style="color: blue">'id'</span><span style="color: navy">)</span> <i>&quot;id&quot;</i><span style="color: navy">;</span>
    it.linkId<b> as </b><span style="color: maroon">k</span><span style="color: navy"><b> -&gt; </b></span>e.fullUrl = <b>append</b><span style="color: navy">(</span><span style="color: blue">'Observation/'</span><span style="color: navy">, </span><span style="color: maroon">qid</span><span style="color: navy">, </span><span style="color: blue">'-'</span><span style="color: navy">, </span><span style="color: maroon">k</span><span style="color: navy">)</span> <i>&quot;fullUrl&quot;</i><span style="color: navy">;</span>
    it.linkId<b> as </b><span style="color: maroon">k</span><span style="color: navy"><b> -&gt; </b></span>e.request<b> as </b><span style="color: maroon">rq</span><b> then</b><span style="color: navy"> {
</span>      qr<span style="color: navy"><b> -&gt; </b></span>rq.method = <span style="color: blue">'PUT'</span> <i>&quot;method&quot;</i><span style="color: navy">;</span>
      qr<span style="color: navy"><b> -&gt; </b></span>rq.url = <b>append</b><span style="color: navy">(</span><span style="color: blue">'Observation/'</span><span style="color: navy">, </span><span style="color: maroon">qid</span><span style="color: navy">, </span><span style="color: blue">'-'</span><span style="color: navy">, </span><span style="color: maroon">k</span><span style="color: navy">)</span> <i>&quot;url&quot;</i><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;request&quot;</i><span style="color: navy">;</span>
  <span style="color: navy">}</span> <i>&quot;ids&quot;</i><span style="color: navy">;</span>
  qr.meta<b> as </b><span style="color: maroon">qm</span><b> then</b><span style="color: navy"> {
</span>    qm.tag<b> as </b><span style="color: maroon">t</span><span style="color: navy"><b> -&gt; </b></span> obs.meta<b> as </b><span style="color: maroon">m</span><span style="color: navy">, </span> m.tag = <span style="color: maroon">t</span><span style="color: navy">;</span>
  <span style="color: navy">}</span> <i>&quot;tags&quot;</i><span style="color: navy">;</span>
  qr.extension<b> as </b><span style="color: maroon">x</span><b> where </b><span style="color: navy">(</span>url = 'https://fhir.optimalhealth.org/ig/healthy-route/StructureDefinition/hr-tenant'<span style="color: navy">)</span><span style="color: navy"><b> -&gt; </b></span>obs.extension = <span style="color: maroon">x</span> <i>&quot;tenant&quot;</i><span style="color: navy">;</span>
  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>
  qr.subject<b> as </b><span style="color: maroon">s</span><span style="color: navy"><b> -&gt; </b></span>obs.subject = <span style="color: maroon">s</span><span style="color: navy">;</span>
  qr.encounter<b> as </b><span style="color: maroon">en</span><span style="color: navy"><b> -&gt; </b></span>obs.encounter = <span style="color: maroon">en</span><span style="color: navy">;</span>
  qr.author<b> as </b><span style="color: maroon">au</span><span style="color: navy"><b> -&gt; </b></span>obs.performer = <span style="color: maroon">au</span> <i>&quot;performer&quot;</i><span style="color: navy">;</span>
<span style="color: navy">}

</span></pre></div>
  </text>
  <url
       value="https://fhir.optimalhealth.org/ig/healthy-route/StructureMap/HRExtractVitals"/>
  <version value="0.2.0"/>
  <name value="HRExtractVitals"/>
  <status value="draft"/>
  <date value="2026-11-12T10:14:36+00:00"/>
  <publisher value="Savannah Informatics"/>
  <contact>
    <name value="Savannah Informatics"/>
    <telecom>
      <system value="url"/>
      <value value="https://optimalhealth.org"/>
    </telecom>
  </contact>
  <contact>
    <name value="Savannah Informatics"/>
    <telecom>
      <system value="url"/>
      <value value="https://optimalhealth.org"/>
    </telecom>
  </contact>
  <structure>
    <url
         value="http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse"/>
    <mode value="source"/>
    <alias value="QR"/>
  </structure>
  <structure>
    <url value="http://hl7.org/fhir/StructureDefinition/Bundle"/>
    <mode value="target"/>
    <alias value="Bundle"/>
  </structure>
  <structure>
    <url value="http://hl7.org/fhir/StructureDefinition/Observation"/>
    <mode value="target"/>
    <alias value="Observation"/>
  </structure>
  <group>
    <name value="HRExtractVitals"/>
    <input>
      <name value="qr"/>
      <type value="QR"/>
      <mode value="source"/>
    </input>
    <input>
      <name value="bundle"/>
      <type value="Bundle"/>
      <mode value="target"/>
    </input>
    <rule>
      <name value="type"/>
      <source>
        <context value="qr"/>
      </source>
      <target>
        <context value="bundle"/>
        <element value="type"/>
        <transform value="copy"/>
        <parameter>
          <valueString value="transaction"/>
        </parameter>
      </target>
    </rule>
    <rule>
      <name value="reading1"/>
      <source>
        <context value="qr"/>
        <element value="item"/>
        <variable value="g"/>
        <condition value="linkId = 'bp-reading-1'"/>
      </source>
      <target>
        <context value="bundle"/>
        <element value="entry"/>
        <variable value="e"/>
      </target>
      <target>
        <context value="e"/>
        <element value="resource"/>
        <variable value="obs"/>
        <transform value="create"/>
        <parameter>
          <valueString value="Observation"/>
        </parameter>
      </target>
      <rule>
        <name value="reading"/>
        <source>
          <context value="qr"/>
        </source>
        <target>
          <context value="obs"/>
        </target>
        <dependent>
          <name value="Reading"/>
          <parameter>
            <valueId value="qr"/>
          </parameter>
          <parameter>
            <valueId value="g"/>
          </parameter>
          <parameter>
            <valueId value="obs"/>
          </parameter>
          <parameter>
            <valueId value="e"/>
          </parameter>
        </dependent>
      </rule>
      <rule>
        <name value="systolicItem"/>
        <source>
          <context value="g"/>
          <element value="item"/>
          <variable value="si"/>
          <condition value="linkId = 'bp-reading-1.8480-6'"/>
        </source>
        <rule>
          <name value="answer"/>
          <source>
            <context value="si"/>
            <element value="answer"/>
            <listMode value="first"/>
            <variable value="sa"/>
          </source>
          <rule>
            <name value="systolic"/>
            <source>
              <context value="sa"/>
              <element value="value"/>
              <variable value="sv"/>
            </source>
            <target>
              <context value="obs"/>
            </target>
            <dependent>
              <name value="Systolic"/>
              <parameter>
                <valueId value="qr"/>
              </parameter>
              <parameter>
                <valueId value="sv"/>
              </parameter>
              <parameter>
                <valueId value="obs"/>
              </parameter>
            </dependent>
          </rule>
        </rule>
      </rule>
      <rule>
        <name value="diastolicItem"/>
        <source>
          <context value="g"/>
          <element value="item"/>
          <variable value="di"/>
          <condition value="linkId = 'bp-reading-1.8462-4'"/>
        </source>
        <rule>
          <name value="answer"/>
          <source>
            <context value="di"/>
            <element value="answer"/>
            <listMode value="first"/>
            <variable value="da"/>
          </source>
          <rule>
            <name value="diastolic"/>
            <source>
              <context value="da"/>
              <element value="value"/>
              <variable value="dv"/>
            </source>
            <target>
              <context value="obs"/>
            </target>
            <dependent>
              <name value="Diastolic"/>
              <parameter>
                <valueId value="qr"/>
              </parameter>
              <parameter>
                <valueId value="dv"/>
              </parameter>
              <parameter>
                <valueId value="obs"/>
              </parameter>
            </dependent>
          </rule>
        </rule>
      </rule>
      <rule>
        <name value="timeItem"/>
        <source>
          <context value="g"/>
          <element value="item"/>
          <variable value="ti"/>
          <condition value="linkId = 'bp-reading-1.time'"/>
        </source>
        <rule>
          <name value="answer"/>
          <source>
            <context value="ti"/>
            <element value="answer"/>
            <listMode value="first"/>
            <variable value="ta"/>
          </source>
          <rule>
            <name value="effective"/>
            <source>
              <context value="ta"/>
              <element value="value"/>
              <variable value="tv"/>
            </source>
            <target>
              <context value="obs"/>
              <element value="effective"/>
              <transform value="copy"/>
              <parameter>
                <valueId value="tv"/>
              </parameter>
            </target>
          </rule>
        </rule>
      </rule>
      <rule>
        <name value="sequence"/>
        <source>
          <context value="qr"/>
        </source>
        <target>
          <context value="obs"/>
          <element value="extension"/>
          <variable value="x"/>
        </target>
        <rule>
          <name value="url"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="x"/>
            <element value="url"/>
            <transform value="copy"/>
            <parameter>
              <valueString
                           value="https://fhir.optimalhealth.org/ig/healthy-route/StructureDefinition/hr-reading-sequence"/>
            </parameter>
          </target>
        </rule>
        <rule>
          <name value="value"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="x"/>
            <element value="value"/>
            <transform value="copy"/>
            <parameter>
              <valueInteger value="1"/>
            </parameter>
          </target>
        </rule>
      </rule>
    </rule>
    <rule>
      <name value="reading2"/>
      <source>
        <context value="qr"/>
        <element value="item"/>
        <variable value="g"/>
        <condition value="linkId = 'bp-reading-2'"/>
      </source>
      <target>
        <context value="bundle"/>
        <element value="entry"/>
        <variable value="e"/>
      </target>
      <target>
        <context value="e"/>
        <element value="resource"/>
        <variable value="obs"/>
        <transform value="create"/>
        <parameter>
          <valueString value="Observation"/>
        </parameter>
      </target>
      <rule>
        <name value="reading"/>
        <source>
          <context value="qr"/>
        </source>
        <target>
          <context value="obs"/>
        </target>
        <dependent>
          <name value="Reading"/>
          <parameter>
            <valueId value="qr"/>
          </parameter>
          <parameter>
            <valueId value="g"/>
          </parameter>
          <parameter>
            <valueId value="obs"/>
          </parameter>
          <parameter>
            <valueId value="e"/>
          </parameter>
        </dependent>
      </rule>
      <rule>
        <name value="systolicItem"/>
        <source>
          <context value="g"/>
          <element value="item"/>
          <variable value="si"/>
          <condition value="linkId = 'bp-reading-2.8480-6'"/>
        </source>
        <rule>
          <name value="answer"/>
          <source>
            <context value="si"/>
            <element value="answer"/>
            <listMode value="first"/>
            <variable value="sa"/>
          </source>
          <rule>
            <name value="systolic"/>
            <source>
              <context value="sa"/>
              <element value="value"/>
              <variable value="sv"/>
            </source>
            <target>
              <context value="obs"/>
            </target>
            <dependent>
              <name value="Systolic"/>
              <parameter>
                <valueId value="qr"/>
              </parameter>
              <parameter>
                <valueId value="sv"/>
              </parameter>
              <parameter>
                <valueId value="obs"/>
              </parameter>
            </dependent>
          </rule>
        </rule>
      </rule>
      <rule>
        <name value="diastolicItem"/>
        <source>
          <context value="g"/>
          <element value="item"/>
          <variable value="di"/>
          <condition value="linkId = 'bp-reading-2.8462-4'"/>
        </source>
        <rule>
          <name value="answer"/>
          <source>
            <context value="di"/>
            <element value="answer"/>
            <listMode value="first"/>
            <variable value="da"/>
          </source>
          <rule>
            <name value="diastolic"/>
            <source>
              <context value="da"/>
              <element value="value"/>
              <variable value="dv"/>
            </source>
            <target>
              <context value="obs"/>
            </target>
            <dependent>
              <name value="Diastolic"/>
              <parameter>
                <valueId value="qr"/>
              </parameter>
              <parameter>
                <valueId value="dv"/>
              </parameter>
              <parameter>
                <valueId value="obs"/>
              </parameter>
            </dependent>
          </rule>
        </rule>
      </rule>
      <rule>
        <name value="timeItem"/>
        <source>
          <context value="g"/>
          <element value="item"/>
          <variable value="ti"/>
          <condition value="linkId = 'bp-reading-2.time'"/>
        </source>
        <rule>
          <name value="answer"/>
          <source>
            <context value="ti"/>
            <element value="answer"/>
            <listMode value="first"/>
            <variable value="ta"/>
          </source>
          <rule>
            <name value="effective"/>
            <source>
              <context value="ta"/>
              <element value="value"/>
              <variable value="tv"/>
            </source>
            <target>
              <context value="obs"/>
              <element value="effective"/>
              <transform value="copy"/>
              <parameter>
                <valueId value="tv"/>
              </parameter>
            </target>
          </rule>
        </rule>
      </rule>
      <rule>
        <name value="sequence"/>
        <source>
          <context value="qr"/>
        </source>
        <target>
          <context value="obs"/>
          <element value="extension"/>
          <variable value="x"/>
        </target>
        <rule>
          <name value="url"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="x"/>
            <element value="url"/>
            <transform value="copy"/>
            <parameter>
              <valueString
                           value="https://fhir.optimalhealth.org/ig/healthy-route/StructureDefinition/hr-reading-sequence"/>
            </parameter>
          </target>
        </rule>
        <rule>
          <name value="value"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="x"/>
            <element value="value"/>
            <transform value="copy"/>
            <parameter>
              <valueInteger value="2"/>
            </parameter>
          </target>
        </rule>
      </rule>
      <rule>
        <name value="position"/>
        <source>
          <context value="g"/>
          <element value="item"/>
          <variable value="pi"/>
          <condition value="linkId = 'bp-reading-2.bp-position'"/>
        </source>
        <rule>
          <name value="answer"/>
          <source>
            <context value="pi"/>
            <element value="answer"/>
            <listMode value="first"/>
            <variable value="pa"/>
          </source>
          <rule>
            <name value="extension"/>
            <source>
              <context value="pa"/>
              <element value="value"/>
              <variable value="pv"/>
            </source>
            <target>
              <context value="obs"/>
              <element value="extension"/>
              <variable value="x"/>
            </target>
            <rule>
              <name value="url"/>
              <source>
                <context value="qr"/>
              </source>
              <target>
                <context value="x"/>
                <element value="url"/>
                <transform value="copy"/>
                <parameter>
                  <valueString
                               value="https://fhir.optimalhealth.org/ig/healthy-route/StructureDefinition/hr-reading-position"/>
                </parameter>
              </target>
            </rule>
            <rule>
              <name value="value"/>
              <source>
                <context value="pv"/>
              </source>
              <target>
                <context value="x"/>
                <element value="value"/>
                <variable value="concept"/>
                <transform value="create"/>
                <parameter>
                  <valueString value="CodeableConcept"/>
                </parameter>
              </target>
              <target>
                <context value="concept"/>
                <element value="coding"/>
                <transform value="copy"/>
                <parameter>
                  <valueId value="pv"/>
                </parameter>
              </target>
            </rule>
          </rule>
        </rule>
      </rule>
    </rule>
    <rule>
      <name value="reading3"/>
      <source>
        <context value="qr"/>
        <element value="item"/>
        <variable value="g"/>
        <condition value="linkId = 'bp-reading-3'"/>
      </source>
      <target>
        <context value="bundle"/>
        <element value="entry"/>
        <variable value="e"/>
      </target>
      <target>
        <context value="e"/>
        <element value="resource"/>
        <variable value="obs"/>
        <transform value="create"/>
        <parameter>
          <valueString value="Observation"/>
        </parameter>
      </target>
      <rule>
        <name value="reading"/>
        <source>
          <context value="qr"/>
        </source>
        <target>
          <context value="obs"/>
        </target>
        <dependent>
          <name value="Reading"/>
          <parameter>
            <valueId value="qr"/>
          </parameter>
          <parameter>
            <valueId value="g"/>
          </parameter>
          <parameter>
            <valueId value="obs"/>
          </parameter>
          <parameter>
            <valueId value="e"/>
          </parameter>
        </dependent>
      </rule>
      <rule>
        <name value="systolicItem"/>
        <source>
          <context value="g"/>
          <element value="item"/>
          <variable value="si"/>
          <condition value="linkId = 'bp-reading-3.8480-6'"/>
        </source>
        <rule>
          <name value="answer"/>
          <source>
            <context value="si"/>
            <element value="answer"/>
            <listMode value="first"/>
            <variable value="sa"/>
          </source>
          <rule>
            <name value="systolic"/>
            <source>
              <context value="sa"/>
              <element value="value"/>
              <variable value="sv"/>
            </source>
            <target>
              <context value="obs"/>
            </target>
            <dependent>
              <name value="Systolic"/>
              <parameter>
                <valueId value="qr"/>
              </parameter>
              <parameter>
                <valueId value="sv"/>
              </parameter>
              <parameter>
                <valueId value="obs"/>
              </parameter>
            </dependent>
          </rule>
        </rule>
      </rule>
      <rule>
        <name value="diastolicItem"/>
        <source>
          <context value="g"/>
          <element value="item"/>
          <variable value="di"/>
          <condition value="linkId = 'bp-reading-3.8462-4'"/>
        </source>
        <rule>
          <name value="answer"/>
          <source>
            <context value="di"/>
            <element value="answer"/>
            <listMode value="first"/>
            <variable value="da"/>
          </source>
          <rule>
            <name value="diastolic"/>
            <source>
              <context value="da"/>
              <element value="value"/>
              <variable value="dv"/>
            </source>
            <target>
              <context value="obs"/>
            </target>
            <dependent>
              <name value="Diastolic"/>
              <parameter>
                <valueId value="qr"/>
              </parameter>
              <parameter>
                <valueId value="dv"/>
              </parameter>
              <parameter>
                <valueId value="obs"/>
              </parameter>
            </dependent>
          </rule>
        </rule>
      </rule>
      <rule>
        <name value="timeItem"/>
        <source>
          <context value="g"/>
          <element value="item"/>
          <variable value="ti"/>
          <condition value="linkId = 'bp-reading-3.time'"/>
        </source>
        <rule>
          <name value="answer"/>
          <source>
            <context value="ti"/>
            <element value="answer"/>
            <listMode value="first"/>
            <variable value="ta"/>
          </source>
          <rule>
            <name value="effective"/>
            <source>
              <context value="ta"/>
              <element value="value"/>
              <variable value="tv"/>
            </source>
            <target>
              <context value="obs"/>
              <element value="effective"/>
              <transform value="copy"/>
              <parameter>
                <valueId value="tv"/>
              </parameter>
            </target>
          </rule>
        </rule>
      </rule>
      <rule>
        <name value="sequence"/>
        <source>
          <context value="qr"/>
        </source>
        <target>
          <context value="obs"/>
          <element value="extension"/>
          <variable value="x"/>
        </target>
        <rule>
          <name value="url"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="x"/>
            <element value="url"/>
            <transform value="copy"/>
            <parameter>
              <valueString
                           value="https://fhir.optimalhealth.org/ig/healthy-route/StructureDefinition/hr-reading-sequence"/>
            </parameter>
          </target>
        </rule>
        <rule>
          <name value="value"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="x"/>
            <element value="value"/>
            <transform value="copy"/>
            <parameter>
              <valueInteger value="3"/>
            </parameter>
          </target>
        </rule>
      </rule>
    </rule>
    <rule>
      <name value="captureTime"/>
      <source>
        <context value="qr"/>
        <element value="item"/>
        <variable value="it"/>
        <condition value="linkId = 'retinal-capture-time'"/>
      </source>
      <rule>
        <name value="obs"/>
        <source>
          <context value="it"/>
          <element value="answer"/>
          <listMode value="first"/>
          <variable value="a"/>
        </source>
        <target>
          <context value="bundle"/>
          <element value="entry"/>
          <variable value="e"/>
        </target>
        <target>
          <context value="e"/>
          <element value="resource"/>
          <variable value="obs"/>
          <transform value="create"/>
          <parameter>
            <valueString value="Observation"/>
          </parameter>
        </target>
        <rule>
          <name value="base"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="obs"/>
          </target>
          <dependent>
            <name value="Shared"/>
            <parameter>
              <valueId value="qr"/>
            </parameter>
            <parameter>
              <valueId value="it"/>
            </parameter>
            <parameter>
              <valueId value="obs"/>
            </parameter>
            <parameter>
              <valueId value="e"/>
            </parameter>
          </dependent>
        </rule>
        <rule>
          <name value="profile"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="obs"/>
            <element value="meta"/>
            <variable value="m"/>
          </target>
          <target>
            <context value="m"/>
            <element value="profile"/>
            <transform value="copy"/>
            <parameter>
              <valueString
                           value="https://fhir.optimalhealth.org/ig/healthy-route/StructureDefinition/hr-observation"/>
            </parameter>
          </target>
        </rule>
        <rule>
          <name value="category"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="obs"/>
            <element value="category"/>
            <variable value="cv"/>
            <transform value="create"/>
            <parameter>
              <valueString value="CodeableConcept"/>
            </parameter>
          </target>
          <rule>
            <name value="categoryCoding"/>
            <source>
              <context value="qr"/>
            </source>
            <target>
              <context value="cv"/>
              <element value="coding"/>
              <variable value="cd"/>
              <transform value="create"/>
              <parameter>
                <valueString value="Coding"/>
              </parameter>
            </target>
            <rule>
              <name value="categorySystem"/>
              <source>
                <context value="qr"/>
              </source>
              <target>
                <context value="cd"/>
                <element value="system"/>
                <transform value="copy"/>
                <parameter>
                  <valueString
                               value="http://terminology.hl7.org/CodeSystem/observation-category"/>
                </parameter>
              </target>
            </rule>
            <rule>
              <name value="categoryCode"/>
              <source>
                <context value="qr"/>
              </source>
              <target>
                <context value="cd"/>
                <element value="code"/>
                <transform value="copy"/>
                <parameter>
                  <valueString value="procedure"/>
                </parameter>
              </target>
            </rule>
            <rule>
              <name value="categoryDisplay"/>
              <source>
                <context value="qr"/>
              </source>
              <target>
                <context value="cd"/>
                <element value="display"/>
                <transform value="copy"/>
                <parameter>
                  <valueString value="Procedure"/>
                </parameter>
              </target>
            </rule>
          </rule>
        </rule>
        <rule>
          <name value="code"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="obs"/>
            <element value="code"/>
            <variable value="cv"/>
            <transform value="create"/>
            <parameter>
              <valueString value="CodeableConcept"/>
            </parameter>
          </target>
          <rule>
            <name value="codeCoding"/>
            <source>
              <context value="qr"/>
            </source>
            <target>
              <context value="cv"/>
              <element value="coding"/>
              <variable value="cd"/>
              <transform value="create"/>
              <parameter>
                <valueString value="Coding"/>
              </parameter>
            </target>
            <rule>
              <name value="codeSystem"/>
              <source>
                <context value="qr"/>
              </source>
              <target>
                <context value="cd"/>
                <element value="system"/>
                <transform value="copy"/>
                <parameter>
                  <valueString
                               value="https://fhir.optimalhealth.org/ig/healthy-route/CodeSystem/hr-measurement"/>
                </parameter>
              </target>
            </rule>
            <rule>
              <name value="codeCode"/>
              <source>
                <context value="qr"/>
              </source>
              <target>
                <context value="cd"/>
                <element value="code"/>
                <transform value="copy"/>
                <parameter>
                  <valueString value="retinal-capture-time"/>
                </parameter>
              </target>
            </rule>
            <rule>
              <name value="codeDisplay"/>
              <source>
                <context value="qr"/>
              </source>
              <target>
                <context value="cd"/>
                <element value="display"/>
                <transform value="copy"/>
                <parameter>
                  <valueString value="Time of retinal capture"/>
                </parameter>
              </target>
            </rule>
          </rule>
        </rule>
        <rule>
          <name value="effective"/>
          <source>
            <context value="a"/>
            <element value="value"/>
            <variable value="v"/>
          </source>
          <target>
            <context value="obs"/>
            <element value="effective"/>
            <transform value="copy"/>
            <parameter>
              <valueId value="v"/>
            </parameter>
          </target>
        </rule>
        <rule>
          <name value="value"/>
          <source>
            <context value="a"/>
            <element value="value"/>
            <variable value="v"/>
          </source>
          <target>
            <context value="obs"/>
            <element value="value"/>
            <transform value="copy"/>
            <parameter>
              <valueId value="v"/>
            </parameter>
          </target>
        </rule>
      </rule>
    </rule>
    <rule>
      <name value="derived"/>
      <source>
        <context value="qr"/>
      </source>
      <target>
        <variable value="qid"/>
        <transform value="evaluate"/>
        <parameter>
          <valueId value="qr"/>
        </parameter>
        <parameter>
          <valueString
                       value="id.replaceMatches('/_history/.*$', '').replaceMatches('^.*/', '')"/>
        </parameter>
      </target>
      <rule>
        <name value="mean"/>
        <source>
          <context value="qr"/>
          <element value="item"/>
          <variable value="g"/>
          <condition value="linkId = 'bp-mean'"/>
        </source>
        <target>
          <context value="bundle"/>
          <element value="entry"/>
          <variable value="e"/>
        </target>
        <target>
          <context value="e"/>
          <element value="resource"/>
          <variable value="obs"/>
          <transform value="create"/>
          <parameter>
            <valueString value="Observation"/>
          </parameter>
        </target>
        <rule>
          <name value="reading"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="obs"/>
          </target>
          <dependent>
            <name value="Reading"/>
            <parameter>
              <valueId value="qr"/>
            </parameter>
            <parameter>
              <valueId value="g"/>
            </parameter>
            <parameter>
              <valueId value="obs"/>
            </parameter>
            <parameter>
              <valueId value="e"/>
            </parameter>
          </dependent>
        </rule>
        <rule>
          <name value="derivedCategory"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="obs"/>
          </target>
          <dependent>
            <name value="Derived"/>
            <parameter>
              <valueId value="qr"/>
            </parameter>
            <parameter>
              <valueId value="obs"/>
            </parameter>
          </dependent>
        </rule>
        <rule>
          <name value="systolicItem"/>
          <source>
            <context value="g"/>
            <element value="item"/>
            <variable value="si"/>
            <condition value="linkId = 'bp-mean.8480-6'"/>
          </source>
          <rule>
            <name value="answer"/>
            <source>
              <context value="si"/>
              <element value="answer"/>
              <listMode value="first"/>
              <variable value="sa"/>
            </source>
            <rule>
              <name value="systolic"/>
              <source>
                <context value="sa"/>
                <element value="value"/>
                <variable value="sv"/>
              </source>
              <target>
                <context value="obs"/>
              </target>
              <dependent>
                <name value="Systolic"/>
                <parameter>
                  <valueId value="qr"/>
                </parameter>
                <parameter>
                  <valueId value="sv"/>
                </parameter>
                <parameter>
                  <valueId value="obs"/>
                </parameter>
              </dependent>
            </rule>
          </rule>
        </rule>
        <rule>
          <name value="diastolicItem"/>
          <source>
            <context value="g"/>
            <element value="item"/>
            <variable value="di"/>
            <condition value="linkId = 'bp-mean.8462-4'"/>
          </source>
          <rule>
            <name value="answer"/>
            <source>
              <context value="di"/>
              <element value="answer"/>
              <listMode value="first"/>
              <variable value="da"/>
            </source>
            <rule>
              <name value="diastolic"/>
              <source>
                <context value="da"/>
                <element value="value"/>
                <variable value="dv"/>
              </source>
              <target>
                <context value="obs"/>
              </target>
              <dependent>
                <name value="Diastolic"/>
                <parameter>
                  <valueId value="qr"/>
                </parameter>
                <parameter>
                  <valueId value="dv"/>
                </parameter>
                <parameter>
                  <valueId value="obs"/>
                </parameter>
              </dependent>
            </rule>
          </rule>
        </rule>
        <rule>
          <name value="reading3"/>
          <source>
            <context value="qr"/>
            <element value="item"/>
            <variable value="r3"/>
            <condition value="linkId = 'bp-reading-3'"/>
          </source>
          <rule>
            <name value="time"/>
            <source>
              <context value="r3"/>
              <element value="item"/>
              <variable value="ti"/>
              <condition value="linkId = 'bp-reading-3.time'"/>
            </source>
            <rule>
              <name value="answer"/>
              <source>
                <context value="ti"/>
                <element value="answer"/>
                <listMode value="first"/>
                <variable value="ta"/>
              </source>
              <rule>
                <name value="effective"/>
                <source>
                  <context value="ta"/>
                  <element value="value"/>
                  <variable value="tv"/>
                </source>
                <target>
                  <context value="obs"/>
                  <element value="effective"/>
                  <transform value="copy"/>
                  <parameter>
                    <valueId value="tv"/>
                  </parameter>
                </target>
              </rule>
            </rule>
          </rule>
        </rule>
        <rule>
          <name value="method"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="obs"/>
            <element value="method"/>
            <variable value="m"/>
            <transform value="create"/>
            <parameter>
              <valueString value="CodeableConcept"/>
            </parameter>
          </target>
          <target>
            <context value="m"/>
            <element value="text"/>
            <transform value="copy"/>
            <parameter>
              <valueString value="Mean of readings 2 and 3"/>
            </parameter>
          </target>
        </rule>
        <rule>
          <name value="reading2Ref"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="obs"/>
            <element value="derivedFrom"/>
            <variable value="r"/>
            <transform value="create"/>
            <parameter>
              <valueString value="Reference"/>
            </parameter>
          </target>
          <target>
            <context value="r"/>
            <element value="reference"/>
            <transform value="append"/>
            <parameter>
              <valueString value="Observation/"/>
            </parameter>
            <parameter>
              <valueId value="qid"/>
            </parameter>
            <parameter>
              <valueString value="-bp-reading-2"/>
            </parameter>
          </target>
        </rule>
        <rule>
          <name value="reading3Ref"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="obs"/>
            <element value="derivedFrom"/>
            <variable value="r"/>
            <transform value="create"/>
            <parameter>
              <valueString value="Reference"/>
            </parameter>
          </target>
          <target>
            <context value="r"/>
            <element value="reference"/>
            <transform value="append"/>
            <parameter>
              <valueString value="Observation/"/>
            </parameter>
            <parameter>
              <valueId value="qid"/>
            </parameter>
            <parameter>
              <valueString value="-bp-reading-3"/>
            </parameter>
          </target>
        </rule>
      </rule>
      <rule>
        <name value="meanAll"/>
        <source>
          <context value="qr"/>
          <element value="item"/>
          <variable value="g"/>
          <condition value="linkId = 'bp-mean-all'"/>
        </source>
        <target>
          <context value="bundle"/>
          <element value="entry"/>
          <variable value="e"/>
        </target>
        <target>
          <context value="e"/>
          <element value="resource"/>
          <variable value="obs"/>
          <transform value="create"/>
          <parameter>
            <valueString value="Observation"/>
          </parameter>
        </target>
        <rule>
          <name value="reading"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="obs"/>
          </target>
          <dependent>
            <name value="Reading"/>
            <parameter>
              <valueId value="qr"/>
            </parameter>
            <parameter>
              <valueId value="g"/>
            </parameter>
            <parameter>
              <valueId value="obs"/>
            </parameter>
            <parameter>
              <valueId value="e"/>
            </parameter>
          </dependent>
        </rule>
        <rule>
          <name value="derivedCategory"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="obs"/>
          </target>
          <dependent>
            <name value="Derived"/>
            <parameter>
              <valueId value="qr"/>
            </parameter>
            <parameter>
              <valueId value="obs"/>
            </parameter>
          </dependent>
        </rule>
        <rule>
          <name value="systolicItem"/>
          <source>
            <context value="g"/>
            <element value="item"/>
            <variable value="si"/>
            <condition value="linkId = 'bp-mean-all.8480-6'"/>
          </source>
          <rule>
            <name value="answer"/>
            <source>
              <context value="si"/>
              <element value="answer"/>
              <listMode value="first"/>
              <variable value="sa"/>
            </source>
            <rule>
              <name value="systolic"/>
              <source>
                <context value="sa"/>
                <element value="value"/>
                <variable value="sv"/>
              </source>
              <target>
                <context value="obs"/>
              </target>
              <dependent>
                <name value="Systolic"/>
                <parameter>
                  <valueId value="qr"/>
                </parameter>
                <parameter>
                  <valueId value="sv"/>
                </parameter>
                <parameter>
                  <valueId value="obs"/>
                </parameter>
              </dependent>
            </rule>
          </rule>
        </rule>
        <rule>
          <name value="diastolicItem"/>
          <source>
            <context value="g"/>
            <element value="item"/>
            <variable value="di"/>
            <condition value="linkId = 'bp-mean-all.8462-4'"/>
          </source>
          <rule>
            <name value="answer"/>
            <source>
              <context value="di"/>
              <element value="answer"/>
              <listMode value="first"/>
              <variable value="da"/>
            </source>
            <rule>
              <name value="diastolic"/>
              <source>
                <context value="da"/>
                <element value="value"/>
                <variable value="dv"/>
              </source>
              <target>
                <context value="obs"/>
              </target>
              <dependent>
                <name value="Diastolic"/>
                <parameter>
                  <valueId value="qr"/>
                </parameter>
                <parameter>
                  <valueId value="dv"/>
                </parameter>
                <parameter>
                  <valueId value="obs"/>
                </parameter>
              </dependent>
            </rule>
          </rule>
        </rule>
        <rule>
          <name value="reading3"/>
          <source>
            <context value="qr"/>
            <element value="item"/>
            <variable value="r3"/>
            <condition value="linkId = 'bp-reading-3'"/>
          </source>
          <rule>
            <name value="time"/>
            <source>
              <context value="r3"/>
              <element value="item"/>
              <variable value="ti"/>
              <condition value="linkId = 'bp-reading-3.time'"/>
            </source>
            <rule>
              <name value="answer"/>
              <source>
                <context value="ti"/>
                <element value="answer"/>
                <listMode value="first"/>
                <variable value="ta"/>
              </source>
              <rule>
                <name value="effective"/>
                <source>
                  <context value="ta"/>
                  <element value="value"/>
                  <variable value="tv"/>
                </source>
                <target>
                  <context value="obs"/>
                  <element value="effective"/>
                  <transform value="copy"/>
                  <parameter>
                    <valueId value="tv"/>
                  </parameter>
                </target>
              </rule>
            </rule>
          </rule>
        </rule>
        <rule>
          <name value="method"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="obs"/>
            <element value="method"/>
            <variable value="m"/>
            <transform value="create"/>
            <parameter>
              <valueString value="CodeableConcept"/>
            </parameter>
          </target>
          <target>
            <context value="m"/>
            <element value="text"/>
            <transform value="copy"/>
            <parameter>
              <valueString value="Mean of readings 1, 2 and 3"/>
            </parameter>
          </target>
        </rule>
        <rule>
          <name value="reading1Ref"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="obs"/>
            <element value="derivedFrom"/>
            <variable value="r"/>
            <transform value="create"/>
            <parameter>
              <valueString value="Reference"/>
            </parameter>
          </target>
          <target>
            <context value="r"/>
            <element value="reference"/>
            <transform value="append"/>
            <parameter>
              <valueString value="Observation/"/>
            </parameter>
            <parameter>
              <valueId value="qid"/>
            </parameter>
            <parameter>
              <valueString value="-bp-reading-1"/>
            </parameter>
          </target>
        </rule>
        <rule>
          <name value="reading2Ref"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="obs"/>
            <element value="derivedFrom"/>
            <variable value="r"/>
            <transform value="create"/>
            <parameter>
              <valueString value="Reference"/>
            </parameter>
          </target>
          <target>
            <context value="r"/>
            <element value="reference"/>
            <transform value="append"/>
            <parameter>
              <valueString value="Observation/"/>
            </parameter>
            <parameter>
              <valueId value="qid"/>
            </parameter>
            <parameter>
              <valueString value="-bp-reading-2"/>
            </parameter>
          </target>
        </rule>
        <rule>
          <name value="reading3Ref"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="obs"/>
            <element value="derivedFrom"/>
            <variable value="r"/>
            <transform value="create"/>
            <parameter>
              <valueString value="Reference"/>
            </parameter>
          </target>
          <target>
            <context value="r"/>
            <element value="reference"/>
            <transform value="append"/>
            <parameter>
              <valueString value="Observation/"/>
            </parameter>
            <parameter>
              <valueId value="qid"/>
            </parameter>
            <parameter>
              <valueString value="-bp-reading-3"/>
            </parameter>
          </target>
        </rule>
      </rule>
    </rule>
  </group>
  <group>
    <name value="Derived"/>
    <documentation
                   value="The category a value worked out on this form carries beside its FHIR one."/>
    <input>
      <name value="qr"/>
      <type value="QR"/>
      <mode value="source"/>
    </input>
    <input>
      <name value="obs"/>
      <type value="Observation"/>
      <mode value="target"/>
    </input>
    <rule>
      <name value="category"/>
      <source>
        <context value="qr"/>
      </source>
      <target>
        <context value="obs"/>
        <element value="category"/>
        <variable value="cv"/>
        <transform value="create"/>
        <parameter>
          <valueString value="CodeableConcept"/>
        </parameter>
      </target>
      <rule>
        <name value="derivedCoding"/>
        <source>
          <context value="qr"/>
        </source>
        <target>
          <context value="cv"/>
          <element value="coding"/>
          <variable value="cd"/>
          <transform value="create"/>
          <parameter>
            <valueString value="Coding"/>
          </parameter>
        </target>
        <rule>
          <name value="derivedSystem"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="cd"/>
            <element value="system"/>
            <transform value="copy"/>
            <parameter>
              <valueString
                           value="https://fhir.optimalhealth.org/ig/healthy-route/CodeSystem/hr-observation-category"/>
            </parameter>
          </target>
        </rule>
        <rule>
          <name value="derivedCode"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="cd"/>
            <element value="code"/>
            <transform value="copy"/>
            <parameter>
              <valueString value="derived"/>
            </parameter>
          </target>
        </rule>
        <rule>
          <name value="derivedDisplay"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="cd"/>
            <element value="display"/>
            <transform value="copy"/>
            <parameter>
              <valueString value="Derived"/>
            </parameter>
          </target>
        </rule>
      </rule>
    </rule>
  </group>
  <group>
    <name value="Reading"/>
    <documentation
                   value="One reading on the core blood pressure profile: the panel code, the monitor
as a component, and the shared identity. The group item's linkId names it."/>
    <input>
      <name value="qr"/>
      <type value="QR"/>
      <mode value="source"/>
    </input>
    <input>
      <name value="g"/>
      <mode value="source"/>
    </input>
    <input>
      <name value="obs"/>
      <type value="Observation"/>
      <mode value="target"/>
    </input>
    <input>
      <name value="e"/>
      <mode value="target"/>
    </input>
    <rule>
      <name value="base"/>
      <source>
        <context value="qr"/>
      </source>
      <target>
        <context value="obs"/>
      </target>
      <dependent>
        <name value="Shared"/>
        <parameter>
          <valueId value="qr"/>
        </parameter>
        <parameter>
          <valueId value="g"/>
        </parameter>
        <parameter>
          <valueId value="obs"/>
        </parameter>
        <parameter>
          <valueId value="e"/>
        </parameter>
      </dependent>
    </rule>
    <rule>
      <name value="profile"/>
      <source>
        <context value="qr"/>
      </source>
      <target>
        <context value="obs"/>
        <element value="meta"/>
        <variable value="m"/>
      </target>
      <target>
        <context value="m"/>
        <element value="profile"/>
        <transform value="copy"/>
        <parameter>
          <valueString
                       value="https://fhir.optimalhealth.org/ig/healthy-route/StructureDefinition/hr-blood-pressure"/>
        </parameter>
      </target>
    </rule>
    <rule>
      <name value="category"/>
      <source>
        <context value="qr"/>
      </source>
      <target>
        <context value="obs"/>
        <element value="category"/>
        <variable value="cv"/>
        <transform value="create"/>
        <parameter>
          <valueString value="CodeableConcept"/>
        </parameter>
      </target>
      <rule>
        <name value="categoryCoding"/>
        <source>
          <context value="qr"/>
        </source>
        <target>
          <context value="cv"/>
          <element value="coding"/>
          <variable value="cd"/>
          <transform value="create"/>
          <parameter>
            <valueString value="Coding"/>
          </parameter>
        </target>
        <rule>
          <name value="categorySystem"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="cd"/>
            <element value="system"/>
            <transform value="copy"/>
            <parameter>
              <valueString
                           value="http://terminology.hl7.org/CodeSystem/observation-category"/>
            </parameter>
          </target>
        </rule>
        <rule>
          <name value="categoryCode"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="cd"/>
            <element value="code"/>
            <transform value="copy"/>
            <parameter>
              <valueString value="vital-signs"/>
            </parameter>
          </target>
        </rule>
        <rule>
          <name value="categoryDisplay"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="cd"/>
            <element value="display"/>
            <transform value="copy"/>
            <parameter>
              <valueString value="Vital Signs"/>
            </parameter>
          </target>
        </rule>
      </rule>
    </rule>
    <rule>
      <name value="code"/>
      <source>
        <context value="qr"/>
      </source>
      <target>
        <context value="obs"/>
        <element value="code"/>
        <variable value="cv"/>
        <transform value="create"/>
        <parameter>
          <valueString value="CodeableConcept"/>
        </parameter>
      </target>
      <rule>
        <name value="codeCoding"/>
        <source>
          <context value="qr"/>
        </source>
        <target>
          <context value="cv"/>
          <element value="coding"/>
          <variable value="cd"/>
          <transform value="create"/>
          <parameter>
            <valueString value="Coding"/>
          </parameter>
        </target>
        <rule>
          <name value="codeSystem"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="cd"/>
            <element value="system"/>
            <transform value="copy"/>
            <parameter>
              <valueString value="http://loinc.org"/>
            </parameter>
          </target>
        </rule>
        <rule>
          <name value="codeCode"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="cd"/>
            <element value="code"/>
            <transform value="copy"/>
            <parameter>
              <valueString value="85354-9"/>
            </parameter>
          </target>
        </rule>
        <rule>
          <name value="codeDisplay"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="cd"/>
            <element value="display"/>
            <transform value="copy"/>
            <parameter>
              <valueString
                           value="Blood pressure panel with all children optional"/>
            </parameter>
          </target>
        </rule>
      </rule>
    </rule>
    <rule>
      <name value="device"/>
      <source>
        <context value="qr"/>
        <element value="item"/>
        <variable value="d"/>
        <condition value="linkId = 'bp-device'"/>
      </source>
      <rule>
        <name value="answer"/>
        <source>
          <context value="d"/>
          <element value="answer"/>
          <listMode value="first"/>
          <variable value="da"/>
        </source>
        <rule>
          <name value="extension"/>
          <source>
            <context value="da"/>
            <element value="value"/>
            <variable value="dv"/>
          </source>
          <target>
            <context value="obs"/>
            <element value="extension"/>
            <variable value="x"/>
          </target>
          <rule>
            <name value="url"/>
            <source>
              <context value="qr"/>
            </source>
            <target>
              <context value="x"/>
              <element value="url"/>
              <transform value="copy"/>
              <parameter>
                <valueString
                             value="https://fhir.optimalhealth.org/ig/healthy-route/StructureDefinition/hr-reading-device"/>
              </parameter>
            </target>
          </rule>
          <rule>
            <name value="value"/>
            <source>
              <context value="dv"/>
            </source>
            <target>
              <context value="x"/>
              <element value="value"/>
              <variable value="concept"/>
              <transform value="create"/>
              <parameter>
                <valueString value="CodeableConcept"/>
              </parameter>
            </target>
            <target>
              <context value="concept"/>
              <element value="coding"/>
              <transform value="copy"/>
              <parameter>
                <valueId value="dv"/>
              </parameter>
            </target>
          </rule>
        </rule>
      </rule>
    </rule>
  </group>
  <group>
    <name value="Systolic"/>
    <input>
      <name value="qr"/>
      <type value="QR"/>
      <mode value="source"/>
    </input>
    <input>
      <name value="sv"/>
      <mode value="source"/>
    </input>
    <input>
      <name value="obs"/>
      <type value="Observation"/>
      <mode value="target"/>
    </input>
    <rule>
      <name value="component"/>
      <source>
        <context value="sv"/>
      </source>
      <target>
        <context value="obs"/>
        <element value="component"/>
        <variable value="comp"/>
      </target>
      <rule>
        <name value="code"/>
        <source>
          <context value="qr"/>
        </source>
        <target>
          <context value="comp"/>
          <element value="code"/>
          <variable value="cv"/>
          <transform value="create"/>
          <parameter>
            <valueString value="CodeableConcept"/>
          </parameter>
        </target>
        <rule>
          <name value="codeCoding"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="cv"/>
            <element value="coding"/>
            <variable value="cd"/>
            <transform value="create"/>
            <parameter>
              <valueString value="Coding"/>
            </parameter>
          </target>
          <rule>
            <name value="codeSystem"/>
            <source>
              <context value="qr"/>
            </source>
            <target>
              <context value="cd"/>
              <element value="system"/>
              <transform value="copy"/>
              <parameter>
                <valueString value="http://loinc.org"/>
              </parameter>
            </target>
          </rule>
          <rule>
            <name value="codeCode"/>
            <source>
              <context value="qr"/>
            </source>
            <target>
              <context value="cd"/>
              <element value="code"/>
              <transform value="copy"/>
              <parameter>
                <valueString value="8480-6"/>
              </parameter>
            </target>
          </rule>
          <rule>
            <name value="codeDisplay"/>
            <source>
              <context value="qr"/>
            </source>
            <target>
              <context value="cd"/>
              <element value="display"/>
              <transform value="copy"/>
              <parameter>
                <valueString value="Systolic blood pressure"/>
              </parameter>
            </target>
          </rule>
        </rule>
      </rule>
      <rule>
        <name value="quantity"/>
        <source>
          <context value="sv"/>
        </source>
        <target>
          <context value="comp"/>
          <element value="value"/>
          <variable value="q"/>
          <transform value="create"/>
          <parameter>
            <valueString value="Quantity"/>
          </parameter>
        </target>
        <rule>
          <name value="value"/>
          <source>
            <context value="sv"/>
          </source>
          <target>
            <context value="q"/>
            <element value="value"/>
            <transform value="copy"/>
            <parameter>
              <valueId value="sv"/>
            </parameter>
          </target>
        </rule>
        <rule>
          <name value="system"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="q"/>
            <element value="system"/>
            <transform value="copy"/>
            <parameter>
              <valueString value="http://unitsofmeasure.org"/>
            </parameter>
          </target>
        </rule>
        <rule>
          <name value="unitCode"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="q"/>
            <element value="code"/>
            <transform value="copy"/>
            <parameter>
              <valueString value="mm[Hg]"/>
            </parameter>
          </target>
        </rule>
        <rule>
          <name value="unit"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="q"/>
            <element value="unit"/>
            <transform value="copy"/>
            <parameter>
              <valueString value="mmHg"/>
            </parameter>
          </target>
        </rule>
      </rule>
    </rule>
  </group>
  <group>
    <name value="Diastolic"/>
    <input>
      <name value="qr"/>
      <type value="QR"/>
      <mode value="source"/>
    </input>
    <input>
      <name value="dv"/>
      <mode value="source"/>
    </input>
    <input>
      <name value="obs"/>
      <type value="Observation"/>
      <mode value="target"/>
    </input>
    <rule>
      <name value="component"/>
      <source>
        <context value="dv"/>
      </source>
      <target>
        <context value="obs"/>
        <element value="component"/>
        <variable value="comp"/>
      </target>
      <rule>
        <name value="code"/>
        <source>
          <context value="qr"/>
        </source>
        <target>
          <context value="comp"/>
          <element value="code"/>
          <variable value="cv"/>
          <transform value="create"/>
          <parameter>
            <valueString value="CodeableConcept"/>
          </parameter>
        </target>
        <rule>
          <name value="codeCoding"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="cv"/>
            <element value="coding"/>
            <variable value="cd"/>
            <transform value="create"/>
            <parameter>
              <valueString value="Coding"/>
            </parameter>
          </target>
          <rule>
            <name value="codeSystem"/>
            <source>
              <context value="qr"/>
            </source>
            <target>
              <context value="cd"/>
              <element value="system"/>
              <transform value="copy"/>
              <parameter>
                <valueString value="http://loinc.org"/>
              </parameter>
            </target>
          </rule>
          <rule>
            <name value="codeCode"/>
            <source>
              <context value="qr"/>
            </source>
            <target>
              <context value="cd"/>
              <element value="code"/>
              <transform value="copy"/>
              <parameter>
                <valueString value="8462-4"/>
              </parameter>
            </target>
          </rule>
          <rule>
            <name value="codeDisplay"/>
            <source>
              <context value="qr"/>
            </source>
            <target>
              <context value="cd"/>
              <element value="display"/>
              <transform value="copy"/>
              <parameter>
                <valueString value="Diastolic blood pressure"/>
              </parameter>
            </target>
          </rule>
        </rule>
      </rule>
      <rule>
        <name value="quantity"/>
        <source>
          <context value="dv"/>
        </source>
        <target>
          <context value="comp"/>
          <element value="value"/>
          <variable value="q"/>
          <transform value="create"/>
          <parameter>
            <valueString value="Quantity"/>
          </parameter>
        </target>
        <rule>
          <name value="value"/>
          <source>
            <context value="dv"/>
          </source>
          <target>
            <context value="q"/>
            <element value="value"/>
            <transform value="copy"/>
            <parameter>
              <valueId value="dv"/>
            </parameter>
          </target>
        </rule>
        <rule>
          <name value="system"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="q"/>
            <element value="system"/>
            <transform value="copy"/>
            <parameter>
              <valueString value="http://unitsofmeasure.org"/>
            </parameter>
          </target>
        </rule>
        <rule>
          <name value="unitCode"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="q"/>
            <element value="code"/>
            <transform value="copy"/>
            <parameter>
              <valueString value="mm[Hg]"/>
            </parameter>
          </target>
        </rule>
        <rule>
          <name value="unit"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="q"/>
            <element value="unit"/>
            <transform value="copy"/>
            <parameter>
              <valueString value="mmHg"/>
            </parameter>
          </target>
        </rule>
      </rule>
    </rule>
  </group>
  <group>
    <name value="Shared"/>
    <documentation
                   value="Identity, tags, tenant, subject, encounter and performer. The profile is set
here for a measurement and overridden by Reading for a blood pressure."/>
    <input>
      <name value="qr"/>
      <type value="QR"/>
      <mode value="source"/>
    </input>
    <input>
      <name value="it"/>
      <mode value="source"/>
    </input>
    <input>
      <name value="obs"/>
      <type value="Observation"/>
      <mode value="target"/>
    </input>
    <input>
      <name value="e"/>
      <mode value="target"/>
    </input>
    <rule>
      <name value="ids"/>
      <source>
        <context value="qr"/>
      </source>
      <target>
        <variable value="qid"/>
        <transform value="evaluate"/>
        <parameter>
          <valueId value="qr"/>
        </parameter>
        <parameter>
          <valueString
                       value="id.replaceMatches('/_history/.*$', '').replaceMatches('^.*/', '')"/>
        </parameter>
      </target>
      <rule>
        <name value="id"/>
        <source>
          <context value="it"/>
          <element value="linkId"/>
          <variable value="k"/>
        </source>
        <target>
          <variable value="idText"/>
          <transform value="append"/>
          <parameter>
            <valueId value="qid"/>
          </parameter>
          <parameter>
            <valueString value="-"/>
          </parameter>
          <parameter>
            <valueId value="k"/>
          </parameter>
        </target>
        <target>
          <context value="obs"/>
          <element value="id"/>
          <transform value="cast"/>
          <parameter>
            <valueId value="idText"/>
          </parameter>
          <parameter>
            <valueString value="id"/>
          </parameter>
        </target>
      </rule>
      <rule>
        <name value="fullUrl"/>
        <source>
          <context value="it"/>
          <element value="linkId"/>
          <variable value="k"/>
        </source>
        <target>
          <context value="e"/>
          <element value="fullUrl"/>
          <transform value="append"/>
          <parameter>
            <valueString value="Observation/"/>
          </parameter>
          <parameter>
            <valueId value="qid"/>
          </parameter>
          <parameter>
            <valueString value="-"/>
          </parameter>
          <parameter>
            <valueId value="k"/>
          </parameter>
        </target>
      </rule>
      <rule>
        <name value="request"/>
        <source>
          <context value="it"/>
          <element value="linkId"/>
          <variable value="k"/>
        </source>
        <target>
          <context value="e"/>
          <element value="request"/>
          <variable value="rq"/>
        </target>
        <rule>
          <name value="method"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="rq"/>
            <element value="method"/>
            <transform value="copy"/>
            <parameter>
              <valueString value="PUT"/>
            </parameter>
          </target>
        </rule>
        <rule>
          <name value="url"/>
          <source>
            <context value="qr"/>
          </source>
          <target>
            <context value="rq"/>
            <element value="url"/>
            <transform value="append"/>
            <parameter>
              <valueString value="Observation/"/>
            </parameter>
            <parameter>
              <valueId value="qid"/>
            </parameter>
            <parameter>
              <valueString value="-"/>
            </parameter>
            <parameter>
              <valueId value="k"/>
            </parameter>
          </target>
        </rule>
      </rule>
    </rule>
    <rule>
      <name value="tags"/>
      <source>
        <context value="qr"/>
        <element value="meta"/>
        <variable value="qm"/>
      </source>
      <rule>
        <name value="tag"/>
        <source>
          <context value="qm"/>
          <element value="tag"/>
          <variable value="t"/>
        </source>
        <target>
          <context value="obs"/>
          <element value="meta"/>
          <variable value="m"/>
        </target>
        <target>
          <context value="m"/>
          <element value="tag"/>
          <transform value="copy"/>
          <parameter>
            <valueId value="t"/>
          </parameter>
        </target>
      </rule>
    </rule>
    <rule>
      <name value="tenant"/>
      <source>
        <context value="qr"/>
        <element value="extension"/>
        <variable value="x"/>
        <condition
                   value="url = 'https://fhir.optimalhealth.org/ig/healthy-route/StructureDefinition/hr-tenant'"/>
      </source>
      <target>
        <context value="obs"/>
        <element value="extension"/>
        <transform value="copy"/>
        <parameter>
          <valueId value="x"/>
        </parameter>
      </target>
    </rule>
    <rule>
      <name value="status"/>
      <source>
        <context value="qr"/>
      </source>
      <target>
        <context value="obs"/>
        <element value="status"/>
        <transform value="copy"/>
        <parameter>
          <valueString value="final"/>
        </parameter>
      </target>
    </rule>
    <rule>
      <name value="subject"/>
      <source>
        <context value="qr"/>
        <element value="subject"/>
        <variable value="s"/>
      </source>
      <target>
        <context value="obs"/>
        <element value="subject"/>
        <transform value="copy"/>
        <parameter>
          <valueId value="s"/>
        </parameter>
      </target>
    </rule>
    <rule>
      <name value="encounter"/>
      <source>
        <context value="qr"/>
        <element value="encounter"/>
        <variable value="en"/>
      </source>
      <target>
        <context value="obs"/>
        <element value="encounter"/>
        <transform value="copy"/>
        <parameter>
          <valueId value="en"/>
        </parameter>
      </target>
    </rule>
    <rule>
      <name value="performer"/>
      <source>
        <context value="qr"/>
        <element value="author"/>
        <variable value="au"/>
      </source>
      <target>
        <context value="obs"/>
        <element value="performer"/>
        <transform value="copy"/>
        <parameter>
          <valueId value="au"/>
        </parameter>
      </target>
    </rule>
  </group>
</StructureMap>