<?xml version="1.0" encoding="UTF-8"?>

<Library xmlns="http://hl7.org/fhir">
  <id value="IMMZD18SYellowfeverYellowFeverLogic"/>
  <meta>
    <profile value="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-shareablelibrary"/>
    <profile value="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishablelibrary"/>
    <profile value="http://hl7.org/fhir/uv/cql/StructureDefinition/cql-library"/>
    <profile value="http://hl7.org/fhir/uv/cql/StructureDefinition/cql-module"/>
  </meta>
  <text>
    <status value="extensions"/><div xmlns="http://www.w3.org/1999/xhtml">
<div>
    <table class="grid dict">
        
        
        <tr>
            <th scope="row"><b>Title: </b></th>
            <td style="padding-left: 4px;">IMMZD18SYellowfeverYellowFeverLogic</td>
        </tr>
        

        
        
        <tr>
            <th scope="row"><b>Id: </b></th>
            <td style="padding-left: 4px;">IMMZD18SYellowfeverYellowFeverLogic</td>
        </tr>
        

        
        
        <tr>
            <th scope="row"><b>Version: </b></th>
            <td style="padding-left: 4px;">1.0.0</td>
        </tr>
        

        
        <tr>
            <th scope="row"><b>Url: </b></th>
            <td style="padding-left: 4px;"><a href="Library-IMMZD18SYellowfeverYellowFeverLogic.html">IMMZD18SYellowfeverYellowFeverLogic</a></td>
        </tr>
        

        

        

        
        <tr>
            <th scope="row"><b>Status: </b></th>
            <td style="padding-left: 4px;">draft</td>
        </tr>
        

        

        
        <tr>
            <th scope="row"><b>Type: </b></th>
            <td style="padding-left: 4px;">
                
                    
                        
                        <p style="margin-bottom: 5px;">
                            <b>system: </b> <span><a href="http://terminology.hl7.org/7.1.0/CodeSystem-library-type.html">http://terminology.hl7.org/CodeSystem/library-type</a></span>
                        </p>
                        
                        
                        <p style="margin-bottom: 5px;">
                            <b>code: </b> <span>logic-library</span>
                        </p>
                        
                        
                    
                
                
            </td>
        </tr>
        

        

        
        <tr>
            <th scope="row"><b>Date: </b></th>
            <td style="padding-left: 4px;">2026-03-31 13:54:17+0000</td>
        </tr>
        

        
        <tr>
            <th scope="row"><b>Publisher: </b></th>
            <td style="padding-left: 4px;">WHO</td>
        </tr>
        

        
        <tr>
            <th scope="row"><b>Description: </b></th>
            <td style="padding-left: 4px;"><div><p>This library defines decision support logic for the IMMZ.D18.S.Yellow fever schedule table in the Immunization CPG</p>
</div></td>
        </tr>
        

        

        

        

        

        

        

        

        

        

        

        
        <tr>
            <th scope="row"><b>Related Artifacts: </b></th>
            <td style="padding-left: 4px;">
                
                
                
                <p><b>Dependencies</b></p>
                <ul>
                  
                    <li><a href="Library-WHOCommon.html">WHOCommon</a></li>
                  
                    <li><a href="Library-IMMZCommon.html">IMMZCommon</a></li>
                  
                    <li><a href="Library-IMMZConcepts.html">IMMZConcepts</a></li>
                  
                    <li><a href="Library-IMMZEncounterElements.html">IMMZEncounterElements</a></li>
                  
                    <li><a href="Library-IMMZD2DTYellowfeverEncounterElements.html">IMMZD2DTYellowfeverEncounterElements</a></li>
                  
                </ul>
                
                
                
                
                
            </td>
        </tr>
        

        
        <tr>
          <th scope="row"><b>Parameters: </b></th>
          <td style="padding-left: 4px;">
            <table class="grid-dict">
              <tr><th><b>Name</b></th><th><b>Type</b></th><th><b>Min</b></th><th><b>Max</b></th><th><b>In/Out</b></th></tr>
              
                <tr><th>Today</th><th>date</th><th>0</th><th>1</th><th>In</th></tr>
              
                <tr><th>Patient</th><th>Patient</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>One yellow fever dose from primary series was administered. The primary series has been completed</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Yellow fever dose 1</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Yellow fever dose 1 Due Date</th><th>date</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Yellow fever dose 1 Overdue</th><th>date</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Yellow fever dose 1 Create</th><th>string</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Yellow fever dose 1 Expiration</th><th>Resource</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Test Validation</th><th>Resource</th><th>0</th><th>1</th><th>Out</th></tr>
              
            </table>
          </td>
        </tr>
        

        

        
        
        <tr>
          <td colspan="2">
            <table>
              <tr><th><a id="cql-content"><b>Content: </b></a> text/cql</th></tr>
              <tr><td><pre><code class="language-cql">/*
 * Library: IMMZD18SYellowfeverYellowFeverLogic (IMMZ.D18.S.Yellow fever schedule)
 * Schedule Table: IMMZ.D18.S.Yellow fever schedule
 */
library IMMZD18SYellowfeverYellowFeverLogic

using FHIR version '4.0.1'
include FHIRHelpers version '4.0.1'

include WHOCommon called WC

include IMMZCommon called Common
include IMMZConcepts called Concepts

include IMMZEncounterElements called IE
include IMMZD2DTYellowfeverEncounterElements called Encounter

parameter Today Date default Today()


context Patient


/*
@output: Yellow fever dose 1
@description: Provision of yellow fever dose 1
@trigger: Child's birth
@pseudo: 
@triggerDate: &quot;Date of birth&quot;
*/
define &quot;Yellow fever dose 1&quot;:
  Encounter.&quot;No yellow fever primary series doses were administered&quot;
  and not &quot;One yellow fever dose from primary series was administered. The primary series has been completed&quot;


/*
@output: Yellow fever dose 1 Create
@create: The client is due for yellow fever dose 1 if the client's age is at least 9 months and living in a yellow fever endemic area.
*/
define &quot;Yellow fever dose 1 Create&quot;:
  if &quot;Yellow fever dose 1&quot;
  then 'The client is due for yellow fever dose 1 if the client\'s age is at least 9 months and living in a yellow fever endemic area.' + '
Due Date: ' + ToString(&quot;Yellow fever dose 1 Due Date&quot;) + '
Overdue: ' + ToString(&quot;Yellow fever dose 1 Overdue&quot;)
  else ''


/*
@dynamicValue: Yellow fever dose 1 Due Date
@pseudocode: &quot;Date of birth&quot; + 9 months
*/
define &quot;Yellow fever dose 1 Due Date&quot;:
  if &quot;Yellow fever dose 1&quot; then Patient.birthDate + 9 months
  else null


/*
@dynamicValue: Yellow fever dose 1 Overdue
@pseudocode: &quot;Date of birth&quot; + 12 months
*/
define &quot;Yellow fever dose 1 Overdue&quot;:
  if &quot;Yellow fever dose 1&quot; then Patient.birthDate + 12 months
  else null


/*
@dynamicValue: Yellow fever dose 1 Expiration
@pseudocode: To be determined by Member States; however, there is no recommended expiration date.
*/
define &quot;Yellow fever dose 1 Expiration&quot;:
  null

  
/*
@complete: One yellow fever dose from primary series was administered. The primary series has been completed
@pseudocode: &quot;Completed the primary vaccination series&quot; = TRUE (where &quot;Vaccine type&quot; = &quot;Yellow fever vaccines&quot;)
*/
define &quot;One yellow fever dose from primary series was administered. The primary series has been completed&quot;:
  Encounter.&quot;One yellow fever primary series dose was administered&quot;



/*
@test: Test expected results based on example patients
*/
define &quot;Test Validation&quot;:
  case
    when Patient.id = 'Yellowfever07.2' then &quot;Yellow fever dose 1&quot;
    when Patient.id = 'Yellowfever08.3' then &quot;Yellow fever dose 1&quot;
    when Patient.id = 'Yellowfever09.3' then &quot;Yellow fever dose 1&quot;
    when Patient.id = 'Yellowfever10.1' then &quot;One yellow fever dose from primary series was administered. The primary series has been completed&quot;
    else 'No test case set'
  end
</code></pre></td></tr>
            </table>
          </td>
        </tr>
        
        
        
    </table>
</div>
</div>
  </text>
  <extension url="http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability">
    <valueCode value="computable"/>
  </extension>
  <url value="http://smart.who.int/immunizations/Library/IMMZD18SYellowfeverYellowFeverLogic"/>
  <version value="1.0.0"/>
  <name value="IMMZD18SYellowfeverYellowFeverLogic"/>
  <title value="IMMZD18SYellowfeverYellowFeverLogic"/>
  <status value="draft"/>
  <experimental value="false"/>
  <type>
    <coding>
      <system value="http://terminology.hl7.org/CodeSystem/library-type"/>
      <code value="logic-library"/>
    </coding>
  </type>
  <date value="2026-03-31T13:54:17+00:00"/>
  <publisher value="WHO"/>
  <contact>
    <name value="WHO"/>
    <telecom>
      <system value="url"/>
      <value value="http://who.int"/>
    </telecom>
  </contact>
  <description value="This library defines decision support logic for the IMMZ.D18.S.Yellow fever schedule table in the Immunization CPG"/>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Library WC"/>
    <resource value="http://smart.who.int/immunizations/Library/WHOCommon"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Library Common"/>
    <resource value="http://smart.who.int/immunizations/Library/IMMZCommon"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Library Concepts"/>
    <resource value="http://smart.who.int/immunizations/Library/IMMZConcepts"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Library IE"/>
    <resource value="http://smart.who.int/immunizations/Library/IMMZEncounterElements"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Library Encounter"/>
    <resource value="http://smart.who.int/immunizations/Library/IMMZD2DTYellowfeverEncounterElements"/>
  </relatedArtifact>
  <parameter>
    <name value="Today"/>
    <use value="in"/>
    <min value="0"/>
    <max value="1"/>
    <type value="date"/>
  </parameter>
  <parameter>
    <name value="Patient"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="Patient"/>
  </parameter>
  <parameter>
    <name value="One yellow fever dose from primary series was administered. The primary series has been completed"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Yellow fever dose 1"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Yellow fever dose 1 Due Date"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="date"/>
  </parameter>
  <parameter>
    <name value="Yellow fever dose 1 Overdue"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="date"/>
  </parameter>
  <parameter>
    <name value="Yellow fever dose 1 Create"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="string"/>
  </parameter>
  <parameter>
    <name value="Yellow fever dose 1 Expiration"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="Resource"/>
  </parameter>
  <parameter>
    <name value="Test Validation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="Resource"/>
  </parameter>
  <content>
    <contentType value="text/cql"/>
    <data value="LyoKICogTGlicmFyeTogSU1NWkQxOFNZZWxsb3dmZXZlclllbGxvd0ZldmVyTG9naWMgKElNTVouRDE4LlMuWWVsbG93IGZldmVyIHNjaGVkdWxlKQogKiBTY2hlZHVsZSBUYWJsZTogSU1NWi5EMTguUy5ZZWxsb3cgZmV2ZXIgc2NoZWR1bGUKICovCmxpYnJhcnkgSU1NWkQxOFNZZWxsb3dmZXZlclllbGxvd0ZldmVyTG9naWMKCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjEnCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIFdIT0NvbW1vbiBjYWxsZWQgV0MKCmluY2x1ZGUgSU1NWkNvbW1vbiBjYWxsZWQgQ29tbW9uCmluY2x1ZGUgSU1NWkNvbmNlcHRzIGNhbGxlZCBDb25jZXB0cwoKaW5jbHVkZSBJTU1aRW5jb3VudGVyRWxlbWVudHMgY2FsbGVkIElFCmluY2x1ZGUgSU1NWkQyRFRZZWxsb3dmZXZlckVuY291bnRlckVsZW1lbnRzIGNhbGxlZCBFbmNvdW50ZXIKCnBhcmFtZXRlciBUb2RheSBEYXRlIGRlZmF1bHQgVG9kYXkoKQoKCmNvbnRleHQgUGF0aWVudAoKCi8qCkBvdXRwdXQ6IFllbGxvdyBmZXZlciBkb3NlIDEKQGRlc2NyaXB0aW9uOiBQcm92aXNpb24gb2YgeWVsbG93IGZldmVyIGRvc2UgMQpAdHJpZ2dlcjogQ2hpbGQncyBiaXJ0aApAcHNldWRvOiAKQHRyaWdnZXJEYXRlOiAiRGF0ZSBvZiBiaXJ0aCIKKi8KZGVmaW5lICJZZWxsb3cgZmV2ZXIgZG9zZSAxIjoKICBFbmNvdW50ZXIuIk5vIHllbGxvdyBmZXZlciBwcmltYXJ5IHNlcmllcyBkb3NlcyB3ZXJlIGFkbWluaXN0ZXJlZCIKICBhbmQgbm90ICJPbmUgeWVsbG93IGZldmVyIGRvc2UgZnJvbSBwcmltYXJ5IHNlcmllcyB3YXMgYWRtaW5pc3RlcmVkLiBUaGUgcHJpbWFyeSBzZXJpZXMgaGFzIGJlZW4gY29tcGxldGVkIgoKCi8qCkBvdXRwdXQ6IFllbGxvdyBmZXZlciBkb3NlIDEgQ3JlYXRlCkBjcmVhdGU6IFRoZSBjbGllbnQgaXMgZHVlIGZvciB5ZWxsb3cgZmV2ZXIgZG9zZSAxIGlmIHRoZSBjbGllbnQncyBhZ2UgaXMgYXQgbGVhc3QgOSBtb250aHMgYW5kIGxpdmluZyBpbiBhIHllbGxvdyBmZXZlciBlbmRlbWljIGFyZWEuCiovCmRlZmluZSAiWWVsbG93IGZldmVyIGRvc2UgMSBDcmVhdGUiOgogIGlmICJZZWxsb3cgZmV2ZXIgZG9zZSAxIgogIHRoZW4gJ1RoZSBjbGllbnQgaXMgZHVlIGZvciB5ZWxsb3cgZmV2ZXIgZG9zZSAxIGlmIHRoZSBjbGllbnRcJ3MgYWdlIGlzIGF0IGxlYXN0IDkgbW9udGhzIGFuZCBsaXZpbmcgaW4gYSB5ZWxsb3cgZmV2ZXIgZW5kZW1pYyBhcmVhLicgKyAnCkR1ZSBEYXRlOiAnICsgVG9TdHJpbmcoIlllbGxvdyBmZXZlciBkb3NlIDEgRHVlIERhdGUiKSArICcKT3ZlcmR1ZTogJyArIFRvU3RyaW5nKCJZZWxsb3cgZmV2ZXIgZG9zZSAxIE92ZXJkdWUiKQogIGVsc2UgJycKCgovKgpAZHluYW1pY1ZhbHVlOiBZZWxsb3cgZmV2ZXIgZG9zZSAxIER1ZSBEYXRlCkBwc2V1ZG9jb2RlOiAiRGF0ZSBvZiBiaXJ0aCIgKyA5IG1vbnRocwoqLwpkZWZpbmUgIlllbGxvdyBmZXZlciBkb3NlIDEgRHVlIERhdGUiOgogIGlmICJZZWxsb3cgZmV2ZXIgZG9zZSAxIiB0aGVuIFBhdGllbnQuYmlydGhEYXRlICsgOSBtb250aHMKICBlbHNlIG51bGwKCgovKgpAZHluYW1pY1ZhbHVlOiBZZWxsb3cgZmV2ZXIgZG9zZSAxIE92ZXJkdWUKQHBzZXVkb2NvZGU6ICJEYXRlIG9mIGJpcnRoIiArIDEyIG1vbnRocwoqLwpkZWZpbmUgIlllbGxvdyBmZXZlciBkb3NlIDEgT3ZlcmR1ZSI6CiAgaWYgIlllbGxvdyBmZXZlciBkb3NlIDEiIHRoZW4gUGF0aWVudC5iaXJ0aERhdGUgKyAxMiBtb250aHMKICBlbHNlIG51bGwKCgovKgpAZHluYW1pY1ZhbHVlOiBZZWxsb3cgZmV2ZXIgZG9zZSAxIEV4cGlyYXRpb24KQHBzZXVkb2NvZGU6IFRvIGJlIGRldGVybWluZWQgYnkgTWVtYmVyIFN0YXRlczsgaG93ZXZlciwgdGhlcmUgaXMgbm8gcmVjb21tZW5kZWQgZXhwaXJhdGlvbiBkYXRlLgoqLwpkZWZpbmUgIlllbGxvdyBmZXZlciBkb3NlIDEgRXhwaXJhdGlvbiI6CiAgbnVsbAoKICAKLyoKQGNvbXBsZXRlOiBPbmUgeWVsbG93IGZldmVyIGRvc2UgZnJvbSBwcmltYXJ5IHNlcmllcyB3YXMgYWRtaW5pc3RlcmVkLiBUaGUgcHJpbWFyeSBzZXJpZXMgaGFzIGJlZW4gY29tcGxldGVkCkBwc2V1ZG9jb2RlOiAiQ29tcGxldGVkIHRoZSBwcmltYXJ5IHZhY2NpbmF0aW9uIHNlcmllcyIgPSBUUlVFICh3aGVyZSAiVmFjY2luZSB0eXBlIiA9ICJZZWxsb3cgZmV2ZXIgdmFjY2luZXMiKQoqLwpkZWZpbmUgIk9uZSB5ZWxsb3cgZmV2ZXIgZG9zZSBmcm9tIHByaW1hcnkgc2VyaWVzIHdhcyBhZG1pbmlzdGVyZWQuIFRoZSBwcmltYXJ5IHNlcmllcyBoYXMgYmVlbiBjb21wbGV0ZWQiOgogIEVuY291bnRlci4iT25lIHllbGxvdyBmZXZlciBwcmltYXJ5IHNlcmllcyBkb3NlIHdhcyBhZG1pbmlzdGVyZWQiCgoKCi8qCkB0ZXN0OiBUZXN0IGV4cGVjdGVkIHJlc3VsdHMgYmFzZWQgb24gZXhhbXBsZSBwYXRpZW50cwoqLwpkZWZpbmUgIlRlc3QgVmFsaWRhdGlvbiI6CiAgY2FzZQogICAgd2hlbiBQYXRpZW50LmlkID0gJ1llbGxvd2ZldmVyMDcuMicgdGhlbiAiWWVsbG93IGZldmVyIGRvc2UgMSIKICAgIHdoZW4gUGF0aWVudC5pZCA9ICdZZWxsb3dmZXZlcjA4LjMnIHRoZW4gIlllbGxvdyBmZXZlciBkb3NlIDEiCiAgICB3aGVuIFBhdGllbnQuaWQgPSAnWWVsbG93ZmV2ZXIwOS4zJyB0aGVuICJZZWxsb3cgZmV2ZXIgZG9zZSAxIgogICAgd2hlbiBQYXRpZW50LmlkID0gJ1llbGxvd2ZldmVyMTAuMScgdGhlbiAiT25lIHllbGxvdyBmZXZlciBkb3NlIGZyb20gcHJpbWFyeSBzZXJpZXMgd2FzIGFkbWluaXN0ZXJlZC4gVGhlIHByaW1hcnkgc2VyaWVzIGhhcyBiZWVuIGNvbXBsZXRlZCIKICAgIGVsc2UgJ05vIHRlc3QgY2FzZSBzZXQnCiAgZW5kCg=="/>
  </content>
</Library>