<?xml version="1.0" encoding="UTF-8"?>
<library xmlns="urn:hl7-org:elm:r1" xmlns:t="urn:hl7-org:elm-types:r1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:fhir="http://hl7.org/fhir" xmlns:qdm43="urn:healthit-gov:qdm:v4_3" xmlns:qdm53="urn:healthit-gov:qdm:v5_3" xmlns:a="urn:hl7-org:cql-annotations:r1" localId="0">
   <annotation translatorOptions="EnableAnnotations,EnableLocators,DisableListDemotion,DisableListPromotion" signatureLevel="Overloads" xsi:type="a:CqlToElmInfo"/>
   <annotation message="An operand identifier reference is hiding another identifier of the same name." errorType="semantic" errorSeverity="warning" xsi:type="a:CqlToElmError"/>
   <annotation message="An operand identifier reference is hiding another identifier of the same name." errorType="semantic" errorSeverity="warning" xsi:type="a:CqlToElmError"/>
   <annotation message="An operand identifier reference is hiding another identifier of the same name." errorType="semantic" errorSeverity="warning" xsi:type="a:CqlToElmError"/>
   <annotation xsi:type="a:Annotation">
      <a:s r="275">
         <a:s>/*
  * Library: IMMZD2DTRabiesElements
  */
library IMMZD2DTRabiesElements</a:s>
      </a:s>
   </annotation>
   <identifier id="IMMZD2DTRabiesElements" system="http://smart.who.int/immunizations"/>
   <schemaIdentifier id="urn:hl7-org:elm" version="r1"/>
   <usings>
      <def localId="1" localIdentifier="System" uri="urn:hl7-org:elm-types:r1" version="1.0.0"/>
      <def localId="206" locator="7:1-7:26" localIdentifier="FHIR" uri="http://hl7.org/fhir" version="4.0.1">
         <annotation xsi:type="a:Annotation">
            <a:s r="206">
               <a:s>using </a:s>
               <a:s>
                  <a:s>FHIR</a:s>
               </a:s>
               <a:s> version '4.0.1'</a:s>
            </a:s>
         </annotation>
      </def>
   </usings>
   <includes>
      <def localId="208" locator="8:1-8:35" localIdentifier="FHIRHelpers" path="http://hl7.org/fhir/FHIRHelpers" version="4.0.1">
         <annotation xsi:type="a:Annotation">
            <a:s r="208">
               <a:s>include </a:s>
               <a:s>
                  <a:s>FHIRHelpers</a:s>
               </a:s>
               <a:s> version '4.0.1'</a:s>
            </a:s>
         </annotation>
      </def>
      <def localId="210" locator="10:1-10:19" localIdentifier="WHOConcepts" path="http://smart.who.int/immunizations/WHOConcepts">
         <annotation xsi:type="a:Annotation">
            <a:s r="210">
               <a:s>include </a:s>
               <a:s>
                  <a:s>WHOConcepts</a:s>
               </a:s>
            </a:s>
         </annotation>
      </def>
      <def localId="212" locator="11:1-11:27" localIdentifier="WC" path="http://smart.who.int/immunizations/WHOCommon">
         <annotation xsi:type="a:Annotation">
            <a:s r="212">
               <a:s>include </a:s>
               <a:s>
                  <a:s>WHOCommon</a:s>
               </a:s>
               <a:s> called WC</a:s>
            </a:s>
         </annotation>
      </def>
      <def localId="214" locator="12:1-12:29" localIdentifier="WE" path="http://smart.who.int/immunizations/WHOElements">
         <annotation xsi:type="a:Annotation">
            <a:s r="214">
               <a:s>include </a:s>
               <a:s>
                  <a:s>WHOElements</a:s>
               </a:s>
               <a:s> called WE</a:s>
            </a:s>
         </annotation>
      </def>
      <def localId="216" locator="14:1-14:32" localIdentifier="Common" path="http://smart.who.int/immunizations/IMMZCommon">
         <annotation xsi:type="a:Annotation">
            <a:s r="216">
               <a:s>include </a:s>
               <a:s>
                  <a:s>IMMZCommon</a:s>
               </a:s>
               <a:s> called Common</a:s>
            </a:s>
         </annotation>
      </def>
      <def localId="218" locator="15:1-15:36" localIdentifier="Concepts" path="http://smart.who.int/immunizations/IMMZConcepts">
         <annotation xsi:type="a:Annotation">
            <a:s r="218">
               <a:s>include </a:s>
               <a:s>
                  <a:s>IMMZConcepts</a:s>
               </a:s>
               <a:s> called Concepts</a:s>
            </a:s>
         </annotation>
      </def>
      <def localId="220" locator="16:1-16:36" localIdentifier="Elements" path="http://smart.who.int/immunizations/IMMZElements">
         <annotation xsi:type="a:Annotation">
            <a:s r="220">
               <a:s>include </a:s>
               <a:s>
                  <a:s>IMMZElements</a:s>
               </a:s>
               <a:s> called Elements</a:s>
            </a:s>
         </annotation>
      </def>
   </includes>
   <contexts>
      <def localId="225" locator="19:1-19:15" name="Patient"/>
   </contexts>
   <statements>
      <def localId="223" locator="19:1-19:15" name="Patient" context="Patient">
         <expression localId="224" xsi:type="SingletonFrom">
            <operand localId="222" locator="19:1-19:15" dataType="fhir:Patient" templateId="http://hl7.org/fhir/StructureDefinition/Patient" xsi:type="Retrieve"/>
         </expression>
      </def>
      <def localId="228" locator="24:1-27:47" name="Rabies Doses Administered to Patient" context="Patient" accessLevel="Public">
         <annotation xsi:type="a:Annotation">
            <a:t name="internal" value="Rabies containing Doses Administered to Patient"/>
            <a:s r="228">
               <a:s>/*
@internal: Rabies containing Doses Administered to Patient
*/
define &quot;Rabies Doses Administered to Patient&quot;:
  </a:s>
               <a:s r="240">
                  <a:s>
                     <a:s r="229">
                        <a:s r="231">
                           <a:s>
                              <a:s>Elements.&quot;Doses Administered to Patient&quot;</a:s>
                           </a:s>
                        </a:s>
                        <a:s> I</a:s>
                     </a:s>
                  </a:s>
                  <a:s>
  </a:s>
                  <a:s r="237">
                     <a:s>where
    </a:s>
                     <a:s r="237">
                        <a:s r="234">
                           <a:s r="233">
                              <a:s>I</a:s>
                           </a:s>
                           <a:s>.</a:s>
                           <a:s r="234">
                              <a:s>vaccineCode</a:s>
                           </a:s>
                        </a:s>
                        <a:s> in </a:s>
                        <a:s r="236">
                           <a:s r="235">
                              <a:s>Concepts</a:s>
                           </a:s>
                           <a:s>.</a:s>
                           <a:s r="236">
                              <a:s>&quot;Rabies vaccines&quot;</a:s>
                           </a:s>
                        </a:s>
                     </a:s>
                  </a:s>
               </a:s>
            </a:s>
         </annotation>
         <expression localId="240" locator="25:3-27:47" xsi:type="Query">
            <source localId="229" locator="25:3-25:44" alias="I">
               <expression localId="231" locator="25:3-25:42" name="Doses Administered to Patient" libraryName="Elements" xsi:type="ExpressionRef"/>
            </source>
            <where localId="237" locator="26:3-27:47" xsi:type="InValueSet">
               <signature localId="239" name="t:Concept" xsi:type="NamedTypeSpecifier"/>
               <code localId="238" name="ToConcept" libraryName="FHIRHelpers" xsi:type="FunctionRef">
                  <operand localId="234" locator="27:5-27:17" path="vaccineCode" scope="I" xsi:type="Property"/>
               </code>
               <valueset localId="236" locator="27:22-27:47" name="Rabies vaccines" libraryName="Concepts" preserve="true"/>
            </where>
         </expression>
      </def>
      <def localId="243" locator="32:1-33:56" name="Rabies Primary Series Doses Administered to Patient" context="Patient" accessLevel="Public">
         <annotation xsi:type="a:Annotation">
            <a:t name="internal" value="Rabies containing Doses Administered to Patient that are in the Primary series"/>
            <a:s r="243">
               <a:s>/*
@internal: Rabies containing Doses Administered to Patient that are in the Primary series
*/
define &quot;Rabies Primary Series Doses Administered to Patient&quot;:
  </a:s>
               <a:s r="245">
                  <a:s r="244">
                     <a:s>&quot;Rabies Doses Administered to Patient&quot;</a:s>
                  </a:s>
                  <a:s>.</a:s>
                  <a:s r="245">
                     <a:s>seriesPrimary()</a:s>
                  </a:s>
               </a:s>
            </a:s>
         </annotation>
         <expression localId="245" locator="33:3-33:56" name="seriesPrimary" libraryName="Common" xsi:type="FunctionRef">
            <operand localId="244" locator="33:3-33:40" name="Rabies Doses Administered to Patient" xsi:type="ExpressionRef"/>
         </expression>
      </def>
      <def localId="248" locator="38:1-39:62" name="Number of Rabies Primary Series Doses Administered" context="Patient" accessLevel="Public">
         <annotation xsi:type="a:Annotation">
            <a:t name="internal" value="Number of Rabies Primary Series doses"/>
            <a:s r="248">
               <a:s>/*
@internal: Number of Rabies Primary Series doses
*/
define &quot;Number of Rabies Primary Series Doses Administered&quot;:
  </a:s>
               <a:s r="252">
                  <a:s>Count(</a:s>
                  <a:s r="249">
                     <a:s>&quot;Rabies Primary Series Doses Administered to Patient&quot;</a:s>
                  </a:s>
                  <a:s>)</a:s>
               </a:s>
            </a:s>
         </annotation>
         <expression localId="252" locator="39:3-39:62" xsi:type="Count">
            <source localId="249" locator="39:9-39:61" name="Rabies Primary Series Doses Administered to Patient" xsi:type="ExpressionRef"/>
         </expression>
      </def>
      <def localId="255" locator="47:1-48:58" name="No rabies primary series doses were administered" context="Patient" accessLevel="Public">
         <annotation xsi:type="a:Annotation">
            <a:t name="input" value="No rabies primary series doses were administered"/>
            <a:t name="pseudocode" value="&quot;Vaccine type&quot; = &quot;Rabies vaccines&quot; and &quot;Type of dose&quot; = &quot;Primary series&quot;) = 0"/>
            <a:t name="code" value="No rabies primary series doses were administered-115"/>
            <a:t name="decision" value="IMMZ.D2.DT.Rabies: Pre-exposure prophylaxis (PrEP), 2-dose scheme; high risk of rabies virus exposure"/>
            <a:s r="255">
               <a:s>/*
@input: No rabies primary series doses were administered
@pseudocode: Count of vaccines administered (where &quot;Vaccine type&quot; = &quot;Rabies vaccines&quot; and &quot;Type of dose&quot; = &quot;Primary series&quot;) = 0
@code: No rabies primary series doses were administered-115
@decision: IMMZ.D2.DT.Rabies: Pre-exposure prophylaxis (PrEP), 2-dose scheme; high risk of rabies virus exposure
*/
define &quot;No rabies primary series doses were administered&quot;:
  </a:s>
               <a:s r="256">
                  <a:s r="257">
                     <a:s>&quot;Number of Rabies Primary Series Doses Administered&quot;</a:s>
                  </a:s>
                  <a:s r="258"> = 0</a:s>
               </a:s>
            </a:s>
         </annotation>
         <expression localId="256" locator="48:3-48:58" xsi:type="Equal">
            <signature localId="259" name="t:Integer" xsi:type="NamedTypeSpecifier"/>
            <signature localId="260" name="t:Integer" xsi:type="NamedTypeSpecifier"/>
            <operand localId="257" locator="48:3-48:54" name="Number of Rabies Primary Series Doses Administered" xsi:type="ExpressionRef"/>
            <operand localId="258" locator="48:58" valueType="t:Integer" value="0" xsi:type="Literal"/>
         </expression>
      </def>
      <def localId="263" locator="56:1-57:58" name="One rabies primary series doses were administered" context="Patient" accessLevel="Public">
         <annotation xsi:type="a:Annotation">
            <a:t name="input" value="One rabies primary series doses were administered"/>
            <a:t name="pseudocode" value="&quot;Vaccine type&quot; = &quot;Rabies vaccines&quot; and &quot;Type of dose&quot; = &quot;Primary series&quot;) = 1"/>
            <a:t name="code" value="One rabies primary series doses were administered-115"/>
            <a:t name="decision" value="IMMZ.D2.DT.Rabies: Pre-exposure prophylaxis (PrEP), 2-dose scheme; high risk of rabies virus exposure"/>
            <a:s r="263">
               <a:s>/*
@input: One rabies primary series doses were administered
@pseudocode: Count of vaccines administered (where &quot;Vaccine type&quot; = &quot;Rabies vaccines&quot; and &quot;Type of dose&quot; = &quot;Primary series&quot;) = 1
@code: One rabies primary series doses were administered-115
@decision: IMMZ.D2.DT.Rabies: Pre-exposure prophylaxis (PrEP), 2-dose scheme; high risk of rabies virus exposure
*/
define &quot;One rabies primary series doses were administered&quot;:
  </a:s>
               <a:s r="264">
                  <a:s r="265">
                     <a:s>&quot;Number of Rabies Primary Series Doses Administered&quot;</a:s>
                  </a:s>
                  <a:s r="266"> = 1</a:s>
               </a:s>
            </a:s>
         </annotation>
         <expression localId="264" locator="57:3-57:58" xsi:type="Equal">
            <signature localId="267" name="t:Integer" xsi:type="NamedTypeSpecifier"/>
            <signature localId="268" name="t:Integer" xsi:type="NamedTypeSpecifier"/>
            <operand localId="265" locator="57:3-57:54" name="Number of Rabies Primary Series Doses Administered" xsi:type="ExpressionRef"/>
            <operand localId="266" locator="57:58" valueType="t:Integer" value="1" xsi:type="Literal"/>
         </expression>
      </def>
      <def localId="275" locator="90:1-91:96" name="Date of Latest Rabies Dose" context="Patient" accessLevel="Public">
         <annotation xsi:type="a:Annotation">
            <a:t name="internal" value="Date of Latest Rabies Dose"/>
            <a:s r="275">
               <a:s>/*
@internal: Date of Latest Rabies Dose
*/
define &quot;Date of Latest Rabies Dose&quot;:
  </a:s>
               <a:s r="276">
                  <a:s>date from </a:s>
                  <a:s r="277">
                     <a:s>start of </a:s>
                     <a:s r="283">
                        <a:s r="282">
                           <a:s r="279">
                              <a:s r="278">
                                 <a:s>&quot;Rabies Doses Administered to Patient&quot;</a:s>
                              </a:s>
                              <a:s>.</a:s>
                              <a:s r="279">
                                 <a:s>mostRecent()</a:s>
                              </a:s>
                           </a:s>
                           <a:s>.</a:s>
                           <a:s r="282">
                              <a:s>occurrence</a:s>
                           </a:s>
                        </a:s>
                        <a:s>.</a:s>
                        <a:s r="283">
                           <a:s>toInterval()</a:s>
                        </a:s>
                     </a:s>
                  </a:s>
               </a:s>
            </a:s>
         </annotation>
         <expression localId="276" locator="91:3-91:96" xsi:type="DateFrom">
            <operand localId="277" locator="91:13-91:96" xsi:type="Start">
               <operand localId="283" locator="91:22-91:96" name="toInterval" libraryName="WC" xsi:type="FunctionRef">
                  <operand localId="282" locator="91:22-91:83" path="occurrence" xsi:type="Property">
                     <source localId="279" locator="91:22-91:72" name="mostRecent" libraryName="WC" xsi:type="FunctionRef">
                        <signature localId="280" xsi:type="ListTypeSpecifier">
                           <elementType localId="281" name="fhir:Immunization" xsi:type="NamedTypeSpecifier"/>
                        </signature>
                        <operand localId="278" locator="91:22-91:59" name="Rabies Doses Administered to Patient" xsi:type="ExpressionRef"/>
                     </source>
                  </operand>
               </operand>
            </operand>
         </expression>
      </def>
      <def localId="271" locator="65:1-67:73" name="The latest rabies dose was administered less than 7 days ago" context="Patient" accessLevel="Public">
         <annotation xsi:type="a:Annotation">
            <a:t name="input" value="The latest rabies dose was administered less than 7 days ago"/>
            <a:t name="pseudocode" value="&quot;Date of vaccination&quot; (where &quot;Vaccine type&quot; = &quot;Rabies vaccines&quot;) &lt; 7 days"/>
            <a:t name="code" value="The latest rabies dose was administered less than 7 days ago-97"/>
            <a:t name="decision" value="IMMZ.D2.DT.Rabies: Pre-exposure prophylaxis (PrEP), 2-dose scheme; high risk of rabies virus exposure"/>
            <a:s r="271">
               <a:s>/*
@input: The latest rabies dose was administered less than 7 days ago
@pseudocode: ''Today's date - Latest &quot;Date of vaccination&quot; (where &quot;Vaccine type&quot; = &quot;Rabies vaccines&quot;) &lt; 7 days
@code: The latest rabies dose was administered less than 7 days ago-97
@decision: IMMZ.D2.DT.Rabies: Pre-exposure prophylaxis (PrEP), 2-dose scheme; high risk of rabies virus exposure
*/
define &quot;The latest rabies dose was administered less than 7 days ago&quot;:
  </a:s>
               <a:s r="272">
                  <a:s r="286">
                     <a:s r="284">
                        <a:s>&quot;Date of Latest Rabies Dose&quot;</a:s>
                     </a:s>
                     <a:s> is not null</a:s>
                  </a:s>
                  <a:s>
  and </a:s>
                  <a:s r="287">
                     <a:s r="288">
                        <a:s>duration in days between </a:s>
                        <a:s r="289">
                           <a:s>&quot;Date of Latest Rabies Dose&quot;</a:s>
                        </a:s>
                        <a:s> and </a:s>
                        <a:s r="292">
                           <a:s>Now()</a:s>
                        </a:s>
                     </a:s>
                     <a:s r="298"> &lt; 7</a:s>
                  </a:s>
               </a:s>
            </a:s>
         </annotation>
         <expression localId="272" locator="66:3-67:73" xsi:type="And">
            <operand localId="286" locator="66:3-66:42" xsi:type="Not">
               <operand localId="285" locator="66:3-66:42" xsi:type="IsNull">
                  <operand localId="284" locator="66:3-66:30" name="Date of Latest Rabies Dose" xsi:type="ExpressionRef"/>
               </operand>
            </operand>
            <operand localId="287" locator="67:7-67:73" xsi:type="Less">
               <signature localId="299" name="t:Integer" xsi:type="NamedTypeSpecifier"/>
               <signature localId="300" name="t:Integer" xsi:type="NamedTypeSpecifier"/>
               <operand localId="288" locator="67:7-67:69" precision="Day" xsi:type="DurationBetween">
                  <signature localId="296" name="t:DateTime" xsi:type="NamedTypeSpecifier"/>
                  <signature localId="297" name="t:DateTime" xsi:type="NamedTypeSpecifier"/>
                  <operand localId="294" xsi:type="ToDateTime">
                     <signature localId="295" name="t:Date" xsi:type="NamedTypeSpecifier"/>
                     <operand localId="289" locator="67:32-67:59" name="Date of Latest Rabies Dose" xsi:type="ExpressionRef"/>
                  </operand>
                  <operand localId="292" locator="67:65-67:69" xsi:type="Now"/>
               </operand>
               <operand localId="298" locator="67:73" valueType="t:Integer" value="7" xsi:type="Literal"/>
            </operand>
         </expression>
      </def>
      <def localId="303" locator="75:1-76:68" name="The latest rabies dose was administered more than 7 days ago" context="Patient" accessLevel="Public">
         <annotation xsi:type="a:Annotation">
            <a:t name="input" value="The latest rabies dose was administered more than 7 days ago"/>
            <a:t name="pseudocode" value="&quot;Date of vaccination&quot; (where &quot;Vaccine type&quot; = &quot;Rabies vaccines&quot;) ≥ 7 days"/>
            <a:t name="code" value="The latest rabies dose was administered more than 7 days ago-97"/>
            <a:t name="decision" value="IMMZ.D2.DT.Rabies: Pre-exposure prophylaxis (PrEP), 2-dose scheme; high risk of rabies virus exposure"/>
            <a:s r="303">
               <a:s>/*
@input: The latest rabies dose was administered more than 7 days ago
@pseudocode: ''Today's date - Latest &quot;Date of vaccination&quot; (where &quot;Vaccine type&quot; = &quot;Rabies vaccines&quot;) ≥ 7 days
@code: The latest rabies dose was administered more than 7 days ago-97
@decision: IMMZ.D2.DT.Rabies: Pre-exposure prophylaxis (PrEP), 2-dose scheme; high risk of rabies virus exposure
*/
define &quot;The latest rabies dose was administered more than 7 days ago&quot;:
  </a:s>
               <a:s r="304">
                  <a:s>not </a:s>
                  <a:s r="305">
                     <a:s>&quot;The latest rabies dose was administered less than 7 days ago&quot;</a:s>
                  </a:s>
               </a:s>
            </a:s>
         </annotation>
         <expression localId="304" locator="76:3-76:68" xsi:type="Not">
            <operand localId="305" locator="76:7-76:68" name="The latest rabies dose was administered less than 7 days ago" xsi:type="ExpressionRef"/>
         </expression>
      </def>
      <def localId="308" locator="84:1-85:58" name="Two rabies primary series doses were administered" context="Patient" accessLevel="Public">
         <annotation xsi:type="a:Annotation">
            <a:t name="input" value="Two rabies primary series doses were administered"/>
            <a:t name="pseudocode" value="&quot;Vaccine type&quot; = &quot;Rabies vaccines&quot; and &quot;Type of dose&quot; = &quot;Primary series&quot;) = 2"/>
            <a:t name="code" value="Two rabies primary series doses were administered-115"/>
            <a:t name="decision" value="IMMZ.D2.DT.Rabies: Pre-exposure prophylaxis (PrEP), 2-dose scheme; high risk of rabies virus exposure"/>
            <a:s r="308">
               <a:s>/*
@input: Two rabies primary series doses were administered
@pseudocode: Count of vaccines administered (where &quot;Vaccine type&quot; = &quot;Rabies vaccines&quot; and &quot;Type of dose&quot; = &quot;Primary series&quot;) = 2
@code: Two rabies primary series doses were administered-115
@decision: IMMZ.D2.DT.Rabies: Pre-exposure prophylaxis (PrEP), 2-dose scheme; high risk of rabies virus exposure
*/
define &quot;Two rabies primary series doses were administered&quot;:
  </a:s>
               <a:s r="309">
                  <a:s r="310">
                     <a:s>&quot;Number of Rabies Primary Series Doses Administered&quot;</a:s>
                  </a:s>
                  <a:s r="311"> = 2</a:s>
               </a:s>
            </a:s>
         </annotation>
         <expression localId="309" locator="85:3-85:58" xsi:type="Equal">
            <signature localId="312" name="t:Integer" xsi:type="NamedTypeSpecifier"/>
            <signature localId="313" name="t:Integer" xsi:type="NamedTypeSpecifier"/>
            <operand localId="310" locator="85:3-85:54" name="Number of Rabies Primary Series Doses Administered" xsi:type="ExpressionRef"/>
            <operand localId="311" locator="85:58" valueType="t:Integer" value="2" xsi:type="Literal"/>
         </expression>
      </def>
   </statements>
</library>
