WHO Immunization Implementation Guide
1.0.0 - release
WHO Immunization Implementation Guide, published by WHO. This guide is not an authorized publication; it is the continuous build for version 1.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/WorldHealthOrganization/smart-immunizations/tree/132/merge and changes regularly. See the Directory of published versions
| Draft as of 2026-03-31 |
<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: "Date of birth"
*/
define "Yellow fever dose 1":
Encounter."No yellow fever primary series doses were administered"
and not "One yellow fever dose from primary series was administered. The primary series has been completed"
/*
@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 "Yellow fever dose 1 Create":
if "Yellow fever dose 1"
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("Yellow fever dose 1 Due Date") + '
Overdue: ' + ToString("Yellow fever dose 1 Overdue")
else ''
/*
@dynamicValue: Yellow fever dose 1 Due Date
@pseudocode: "Date of birth" + 9 months
*/
define "Yellow fever dose 1 Due Date":
if "Yellow fever dose 1" then Patient.birthDate + 9 months
else null
/*
@dynamicValue: Yellow fever dose 1 Overdue
@pseudocode: "Date of birth" + 12 months
*/
define "Yellow fever dose 1 Overdue":
if "Yellow fever dose 1" 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 "Yellow fever dose 1 Expiration":
null
/*
@complete: One yellow fever dose from primary series was administered. The primary series has been completed
@pseudocode: "Completed the primary vaccination series" = TRUE (where "Vaccine type" = "Yellow fever vaccines")
*/
define "One yellow fever dose from primary series was administered. The primary series has been completed":
Encounter."One yellow fever primary series dose was administered"
/*
@test: Test expected results based on example patients
*/
define "Test Validation":
case
when Patient.id = 'Yellowfever07.2' then "Yellow fever dose 1"
when Patient.id = 'Yellowfever08.3' then "Yellow fever dose 1"
when Patient.id = 'Yellowfever09.3' then "Yellow fever dose 1"
when Patient.id = 'Yellowfever10.1' then "One yellow fever dose from primary series was administered. The primary series has been completed"
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>