WHO Immunization Implementation Guide
0.2.0 - ci-build
WHO Immunization Implementation Guide, published by WHO. 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/WorldHealthOrganization/smart-immunizations/tree/123/merge and changes regularly. See the Directory of published versions
| Draft as of 2026-03-03 |
<PlanDefinition xmlns="http://hl7.org/fhir">
<id value="IMMZD2DTHPV2Doses"/>
<meta>
<profile
value="http://hl7.org/fhir/uv/cpg/StructureDefinition/cpg-recommendationdefinition"/>
<profile
value="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-shareableplandefinition"/>
<profile
value="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishableplandefinition"/>
</meta>
<text>
<status value="extensions"/>
<div xmlns="http://www.w3.org/1999/xhtml">
<div>
<table class="grid dict">
<tr>
<th scope="row"><b>Id: </b></th>
<td style="padding-left: 4px;">IMMZD2DTHPV2Doses</td>
</tr>
<tr>
<th scope="row"><b>Url: </b></th>
<td style="padding-left: 4px;"><a href="PlanDefinition-IMMZD2DTHPV2Doses.html">IMMZ.D2.DT.HPV.2 doses</a></td>
</tr>
<tr>
<th scope="row"><b>Version: </b></th>
<td style="padding-left: 4px;">0.2.0</td>
</tr>
<tr>
<th scope="row"><b>Title: </b></th>
<td style="padding-left: 4px;">IMMZ.D2.DT.HPV.2 doses</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.0.1/CodeSystem-plan-definition-type.html">http://terminology.hl7.org/CodeSystem/plan-definition-type</a></span>
</p>
<p style="margin-bottom: 5px;">
<b>code: </b> <span>eca-rule</span>
</p>
</td>
</tr>
<tr>
<th scope="row"><b>Date: </b></th>
<td style="padding-left: 4px;">2026-03-03 13:07:11+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>IMMZ.D2.DT.HPV.2 doses
2-dose schedule</p>
</div></td>
</tr>
<tr>
<th scope="row"><b>Knowledge Capability: </b></th>
<td style="padding-left: 4px;">
computable
</td>
</tr>
<tr>
<th scope="row"><b>Related Artifacts: </b></th>
<td style="padding-left: 4px;">
<p><b>References</b></p>
<ul>
<li><div><p>WHO recommendations for routine immunization - summary tables (January 2025)</p>
</div><br/><a href="null"/></li>
</ul>
</td>
</tr>
<tr>
<th scope="row"><b>Libraries: </b></th>
<td style="padding-left: 4px;">
<table class="grid-dict">
<tr>
<td><a href="Library-IMMZD2DTHPV2DosesLogic.html">IMMZD2DTHPV2DosesLogic</a></td>
</tr>
</table>
</td>
</tr>
<tr>
<th scope="row"><b>Actions: </b></th>
<td style="padding-left: 4px;">
<table class="grid-dict">
<tr>
<td>
<b> Determine if the client is due for HPV.:</b> Determine if the client is due for HPV vaccine according to the national immunization protocol.
2-dose schedule
<br/>
<b>If:</b>
<i>Applicability:</i>
Client is due for HPV vaccination
<i>(Client is due for HPV vaccination)</i>
<br/>
<b>Then:</b> <i>Definition:</i> <a href="ActivityDefinition-IMMZD2DTMR.html">IMMZD2DTMR</a><br/>
<i>Dynamic Values:</i><br/>
status: <i>('draft')</i>
<br/>
intent: <i>('proposal')</i>
<br/>
medication: <i>(Concept { codes: { Code { system: 'http://smart.who.int/immunizations/CodeSystem/IMMZ.Z', code: 'DE7', display: 'HPV vaccines' } }, display: 'HPV vaccines' })</i>
<br/>
</td>
</tr>
<tr>
<td>
<b> Check for Guidance for the patient regarding IMMZ.D2.DT.HPV.2 doses.:</b> Show Guidance for the patient regarding IMMZ.D2.DT.HPV.2 doses.
<br/>
<b>If:</b>
<i>Applicability:</i>
Has Guidance
<i>(Has Guidance)</i>
<br/>
<b>Then:</b> <i>Definition:</i> <a href="ActivityDefinition-IMMZD2DTCR.html">IMMZ.D2.DT.CR</a><br/>
<i>Dynamic Values:</i><br/>
status: <i>('active')</i>
<br/>
payload.contentString: <i>(Guidance)</i>
<br/>
category.coding: <i>(Code { system: 'http://terminology.hl7.org/CodeSystem/communication-category', code: 'alert' })</i>
<br/>
priority: <i>(Code { system: 'http://hl7.org/fhir/request-priority', code: 'routine' })</i>
<br/>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</div>
</text>
<contained>
<Library>
<id value="effective-data-requirements"/>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-directReferenceCode">
<valueCoding>
<system
value="http://smart.who.int/immunizations/CodeSystem/IMMZ.D"/>
<code value="DE204"/>
<display value="HIV status"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-directReferenceCode">
<valueCoding>
<system
value="http://smart.who.int/immunizations/CodeSystem/IMMZ.D"/>
<code value="DE205"/>
<display value="HIV-positive"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-directReferenceCode">
<valueCoding>
<system
value="http://smart.who.int/immunizations/CodeSystem/IMMZ.D"/>
<code value="DE209"/>
<display value="Immunocompromised"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZEncounterElements"/>
</extension>
<extension url="name">
<valueString value="Current Patient Age In Years"/>
</extension>
<extension url="statement">
<valueString
value="/**
* @dataElement Patient age in years
*/
define "Current Patient Age In Years":
AgeInYearsAt(Today)"/>
</extension>
<extension url="displaySequence">
<valueInteger value="0"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPVEncounterElements"/>
</extension>
<extension url="name">
<valueString value="Client's age is less than 9 years"/>
</extension>
<extension url="statement">
<valueString
value="/*
@input: Client's age is less than 9 years
@pseudocode: Today's date − "Date of birth" < 9 years
@code: Client's age is less than 9 years-40
@decision: IMMZ.D2.DT.HPV.2 doses: 2-dose schedule
@decision: IMMZ.D2.DT.HPV.Single dose: Alternative single-dose schedule
*/
define "Client's age is less than 9 years":
Encounter."Current Patient Age In Years" < 9"/>
</extension>
<extension url="displaySequence">
<valueInteger value="1"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPV2DosesLogic"/>
</extension>
<extension url="name">
<valueString value="Client is not due for HPV vaccination Case 1"/>
</extension>
<extension url="statement">
<valueString
value="/*
@output: Client is not due for HPV vaccination Case 1
@pseudocode: "Immunization recommendation status" = "Not due"
*/
define "Client is not due for HPV vaccination Case 1":
Encounter."Client's age is less than 9 years""/>
</extension>
<extension url="displaySequence">
<valueInteger value="2"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZElements"/>
</extension>
<extension url="name">
<valueString value="Doses Administered to Patient"/>
</extension>
<extension url="statement">
<valueString
value="/**
* @dataElement All Doses Administered to Patient
*/
define "Doses Administered to Patient":
[Immunization] I
where I.status = 'completed'
and I.isSubpotent is not true"/>
</extension>
<extension url="displaySequence">
<valueInteger value="3"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZEncounterElements"/>
</extension>
<extension url="name">
<valueString value="Doses Administered to Patient"/>
</extension>
<extension url="statement">
<valueString
value="/**
* @dataElement All Doses Administered to Patient
*/
define "Doses Administered to Patient":
Elements."Doses Administered to Patient" I
where I.occurrence.toInterval() same day or before Today"/>
</extension>
<extension url="displaySequence">
<valueInteger value="4"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPVEncounterElements"/>
</extension>
<extension url="name">
<valueString value="HPV Doses Administered to Patient"/>
</extension>
<extension url="statement">
<valueString
value="/*
@internal: HPV containing Doses Administered to Patient
*/
define "HPV Doses Administered to Patient":
Encounter."Doses Administered to Patient" I
where
I.vaccineCode in Concepts."HPV vaccines""/>
</extension>
<extension url="displaySequence">
<valueInteger value="5"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPVEncounterElements"/>
</extension>
<extension url="name">
<valueString
value="HPV Primary Series Doses Administered to Patient"/>
</extension>
<extension url="statement">
<valueString
value="/*
@internal: HPV containing Doses Administered to Patient that are in the Primary series
*/
define "HPV Primary Series Doses Administered to Patient":
"HPV Doses Administered to Patient".seriesPrimary()"/>
</extension>
<extension url="displaySequence">
<valueInteger value="6"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPVEncounterElements"/>
</extension>
<extension url="name">
<valueString
value="Number of HPV Primary Series Doses Administered"/>
</extension>
<extension url="statement">
<valueString
value="/*
@internal: Number of HPV Primary Series doses
*/
define "Number of HPV Primary Series Doses Administered":
Count("HPV Primary Series Doses Administered to Patient")"/>
</extension>
<extension url="displaySequence">
<valueInteger value="7"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPVEncounterElements"/>
</extension>
<extension url="name">
<valueString value="One HPV primary series dose was administered"/>
</extension>
<extension url="statement">
<valueString
value="/*
@input: One HPV primary series dose was administered
@pseudocode: Count of vaccines administered (where "Vaccine type" = "HPV vaccines" and "Type of dose" = "Primary series") = 1
@code: One HPV primary series dose was administered-112
@decision: IMMZ.D2.DT.HPV.2 doses: 2-dose schedule
@decision: IMMZ.D2.DT.HPV.Single dose: Alternative single-dose schedule
*/
define "One HPV primary series dose was administered":
"Number of HPV Primary Series Doses Administered" = 1"/>
</extension>
<extension url="displaySequence">
<valueInteger value="8"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPVEncounterElements"/>
</extension>
<extension url="name">
<valueString value="Date of Latest HPV Dose"/>
</extension>
<extension url="statement">
<valueString
value="/*
@internal: Date of Latest HPV Dose
*/
define "Date of Latest HPV Dose":
date from start of "HPV Doses Administered to Patient".mostRecent().occurrence.toInterval()"/>
</extension>
<extension url="displaySequence">
<valueInteger value="9"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPVEncounterElements"/>
</extension>
<extension url="name">
<valueString
value="The latest HPV dose was administered less than 6 months ago"/>
</extension>
<extension url="statement">
<valueString
value="/*
@input: The latest HPV dose was administered less than 6 months ago
@pseudocode: Today's date − latest "Date and time of vaccination" (where "Vaccine type" = "HPV vaccines") < 6 months
@code: The latest HPV dose was administered less than 6 months ago-103
@decision: IMMZ.D2.DT.HPV.2 doses: 2-dose schedule
@decision: IMMZ.D2.DT.HPV.Single dose: Alternative single-dose schedule
*/
define "The latest HPV dose was administered less than 6 months ago":
"Date of Latest HPV Dose" is not null
and duration in months between "Date of Latest HPV Dose" and Today < 6"/>
</extension>
<extension url="displaySequence">
<valueInteger value="10"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPV2DosesLogic"/>
</extension>
<extension url="name">
<valueString value="Client is not due for HPV vaccination Case 2"/>
</extension>
<extension url="statement">
<valueString
value="/*
@output: Client is not due for HPV vaccination Case 2
@pseudocode: "Immunization recommendation status" = "Not due"
*/
define "Client is not due for HPV vaccination Case 2":
Encounter."One HPV primary series dose was administered"
and Encounter."The latest HPV dose was administered less than 6 months ago""/>
</extension>
<extension url="displaySequence">
<valueInteger value="11"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPVEncounterElements"/>
</extension>
<extension url="name">
<valueString
value="Two HPV primary series doses were administered"/>
</extension>
<extension url="statement">
<valueString
value="/*
@input: Two HPV primary series doses were administered
@pseudocode: Count of vaccines administered (where "Vaccine type" = "HPV vaccines" and "Type of dose" = "Primary series") = 2
@code: Two HPV primary series doses were administered-112
@decision: IMMZ.D2.DT.HPV.2 doses: 2-dose schedule
@decision: IMMZ.D2.DT.HPV.Single dose: Alternative single-dose schedule
*/
define "Two HPV primary series doses were administered":
"Number of HPV Primary Series Doses Administered" = 2"/>
</extension>
<extension url="displaySequence">
<valueInteger value="12"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZElements"/>
</extension>
<extension url="name">
<valueString value="HIV status Observation"/>
</extension>
<extension url="statement">
<valueString
value="/*
@internal: HIV Status Observation
*/
define "HIV status Observation":
([Observation: Concepts."HIV status"]).complete()"/>
</extension>
<extension url="displaySequence">
<valueInteger value="13"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZEncounterElements"/>
</extension>
<extension url="name">
<valueString value="Client's HIV status is positive"/>
</extension>
<extension url="statement">
<valueString
value="/*
@input: Client's HIV status is positive
@pseudocode: "HIV status" = "HIV-positive"
*/
define "Client's HIV status is positive":
exists( (Elements."HIV status Observation".encounterOrOnBefore(EncounterId, Today)) O
where O.value ~ Concepts."HIV-positive" )"/>
</extension>
<extension url="displaySequence">
<valueInteger value="14"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPVEncounterElements"/>
</extension>
<extension url="name">
<valueString value="Client's HIV status is positive"/>
</extension>
<extension url="statement">
<valueString
value="/*
@input: Client's HIV status is positive
@pseudocode: "HIV status" = "HIV-positive"
@code: Client's HIV status is positive-29
@decision: IMMZ.D2.DT.HPV.2 doses: 2-dose schedule
@decision: IMMZ.D2.DT.HPV.Single dose: Alternative single-dose schedule
*/
define "Client's HIV status is positive":
Encounter."Client's HIV status is positive""/>
</extension>
<extension url="displaySequence">
<valueInteger value="15"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPV2DosesLogic"/>
</extension>
<extension url="name">
<valueString value="Client is not due for HPV vaccination Case 3"/>
</extension>
<extension url="statement">
<valueString
value="/*
@output: Client is not due for HPV vaccination Case 3
@pseudocode: "Immunization recommendation status" = "Not due"
*/
define "Client is not due for HPV vaccination Case 3":
Encounter."Two HPV primary series doses were administered"
and Encounter."The latest HPV dose was administered less than 6 months ago"
and Encounter."Client's HIV status is positive""/>
</extension>
<extension url="displaySequence">
<valueInteger value="16"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZEncounterElements"/>
</extension>
<extension url="name">
<valueString value="Immunocompromised Observation"/>
</extension>
<extension url="statement">
<valueString
value="/*
@internal: Immunocompromised Observation
*/
define "Immunocompromised Observation":
([Observation: Concepts."Immunocompromised"] O
sort by end of effective.toInterval() desc).complete()"/>
</extension>
<extension url="displaySequence">
<valueInteger value="17"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZEncounterElements"/>
</extension>
<extension url="name">
<valueString value="Client is immunocompromised"/>
</extension>
<extension url="statement">
<valueString
value="/*
@input: Client is immunocompromised
@pseudocode: "Immunocompromised" = TRUE
*/
define "Client is immunocompromised":
exists( "Immunocompromised Observation" ) and
First( "Immunocompromised Observation" ).value = true"/>
</extension>
<extension url="displaySequence">
<valueInteger value="18"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPVEncounterElements"/>
</extension>
<extension url="name">
<valueString value="Client is immunocompromised"/>
</extension>
<extension url="statement">
<valueString
value="/*
@input: Client is immunocompromised
@pseudocode: "Immunocompromised" = TRUE
@code: Client is immunocompromised-26
@decision: IMMZ.D2.DT.HPV.2 doses: 2-dose schedule
@decision: IMMZ.D2.DT.HPV.Single dose: Alternative single-dose schedule
*/
define "Client is immunocompromised":
Encounter."Client is immunocompromised""/>
</extension>
<extension url="displaySequence">
<valueInteger value="19"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPV2DosesLogic"/>
</extension>
<extension url="name">
<valueString value="Client is not due for HPV vaccination Case 4"/>
</extension>
<extension url="statement">
<valueString
value="/*
@output: Client is not due for HPV vaccination Case 4
@pseudocode: "Immunization recommendation status" = "Not due"
*/
define "Client is not due for HPV vaccination Case 4":
Encounter."Two HPV primary series doses were administered"
and Encounter."The latest HPV dose was administered less than 6 months ago"
and Encounter."Client is immunocompromised""/>
</extension>
<extension url="displaySequence">
<valueInteger value="20"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPV2DosesLogic"/>
</extension>
<extension url="name">
<valueString value="Client is not due for HPV vaccination"/>
</extension>
<extension url="statement">
<valueString
value="/*
@output: Client is not due for HPV vaccination
@pseudocode: "Immunization recommendation status" = "Not due"
*/
define "Client is not due for HPV vaccination":
"Client is not due for HPV vaccination Case 1"
or "Client is not due for HPV vaccination Case 2"
or "Client is not due for HPV vaccination Case 3"
or "Client is not due for HPV vaccination Case 4""/>
</extension>
<extension url="displaySequence">
<valueInteger value="21"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPV2DosesLogic"/>
</extension>
<extension url="name">
<valueString
value="Client is not due for HPV vaccination Guidance"/>
</extension>
<extension url="statement">
<valueString
value="/*
@output: Client is not due for HPV vaccination Guidance
@guidance = Should not vaccinate client with first HPV dose as client's age is less than 9 years.
Check for any vaccines due and inform the caregiver of when to come back for the next dose.
@guidance = Should not vaccinate client with second HPV dose as the latest HPV dose was administered less than 6 months ago.
Check for any vaccines due and inform the caregiver of when to come back for the second dose.
@guidance = Should not vaccinate for third HPV dose as the latest HPV dose was administered less than 6 months ago.
Check for any vaccines due and inform the caregiver of when to come back for the next dose.
@guidance = Should not vaccinate for third HPV dose as the latest HPV dose was administered less than 6 months ago.
Check for any vaccines due and inform the caregiver of when to come back for the next dose.
*/
define "Client is not due for HPV vaccination Guidance":
case
when "Client is not due for HPV vaccination Case 1" then 'Should not vaccinate client with first HPV dose as client\'s age is less than 9 years.
Check for any vaccines due and inform the caregiver of when to come back for the next dose.'
when "Client is not due for HPV vaccination Case 2" then 'Should not vaccinate client with second HPV dose as the latest HPV dose was administered less than 6 months ago.
Check for any vaccines due and inform the caregiver of when to come back for the second dose.'
when "Client is not due for HPV vaccination Case 3" then 'Should not vaccinate for third HPV dose as the latest HPV dose was administered less than 6 months ago.
Check for any vaccines due and inform the caregiver of when to come back for the next dose.'
when "Client is not due for HPV vaccination Case 4" then 'Should not vaccinate for third HPV dose as the latest HPV dose was administered less than 6 months ago.
Check for any vaccines due and inform the caregiver of when to come back for the next dose.'
else ''
end"/>
</extension>
<extension url="displaySequence">
<valueInteger value="22"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPVEncounterElements"/>
</extension>
<extension url="name">
<valueString value="No HPV primary series doses were administered"/>
</extension>
<extension url="statement">
<valueString
value="/*
@input: No HPV primary series doses were administered
@pseudocode: Count of vaccines administered (where "Vaccine type" = "HPV vaccines" and "Type of dose" = "Primary series") = 0
@code: No HPV primary series doses were administered-112
@decision: IMMZ.D2.DT.HPV.2 doses: 2-dose schedule
@decision: IMMZ.D2.DT.HPV.Single dose: Alternative single-dose schedule
*/
define "No HPV primary series doses were administered":
"Number of HPV Primary Series Doses Administered" = 0"/>
</extension>
<extension url="displaySequence">
<valueInteger value="23"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPVEncounterElements"/>
</extension>
<extension url="name">
<valueString value="Client's age is between 9 and 14 years"/>
</extension>
<extension url="statement">
<valueString
value="/*
@input: Client's age is between 9 and 14 years
@pseudocode: 9 years ≤ Today's date − "Date of birth" ≤ 14 years
@code: Client's age is between 9 and 14 years-51
@decision: IMMZ.D2.DT.HPV.2 doses: 2-dose schedule
*/
define "Client's age is between 9 and 14 years":
9 <= Encounter."Current Patient Age In Years"
and Encounter."Current Patient Age In Years" <= 14"/>
</extension>
<extension url="displaySequence">
<valueInteger value="24"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPVEncounterElements"/>
</extension>
<extension url="name">
<valueString value="Client's biological sex is female"/>
</extension>
<extension url="statement">
<valueString
value="/*
@input: Client's biological sex is female
@pseudocode: "Sex" = "Female"
@code: Client's biological sex is female-16
@decision: IMMZ.D2.DT.HPV.2 doses: 2-dose schedule
*/
define "Client's biological sex is female":
Patient.gender = 'female'"/>
</extension>
<extension url="displaySequence">
<valueInteger value="25"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPV2DosesLogic"/>
</extension>
<extension url="name">
<valueString value="Client is due for HPV vaccination Case 1"/>
</extension>
<extension url="statement">
<valueString
value="/*
@output: Client is due for HPV vaccination Case 1
@pseudocode: "Immunization recommendation status" = "Due"
*/
define "Client is due for HPV vaccination Case 1":
Encounter."No HPV primary series doses were administered"
and Encounter."Client's age is between 9 and 14 years"
and Encounter."Client's biological sex is female""/>
</extension>
<extension url="displaySequence">
<valueInteger value="26"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPVEncounterElements"/>
</extension>
<extension url="name">
<valueString
value="The latest HPV dose was administered more than 6 months ago"/>
</extension>
<extension url="statement">
<valueString
value="/*
@input: The latest HPV dose was administered more than 6 months ago
@pseudocode: Today's date − latest "Date and time of vaccination" (where "Vaccine type" = "HPV vaccines") ≥ 6 months
@code: The latest HPV dose was administered more than 6 months ago-103
@decision: IMMZ.D2.DT.HPV.2 doses: 2-dose schedule
@decision: IMMZ.D2.DT.HPV.Single dose: Alternative single-dose schedule
*/
define "The latest HPV dose was administered more than 6 months ago":
not "The latest HPV dose was administered less than 6 months ago""/>
</extension>
<extension url="displaySequence">
<valueInteger value="27"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPV2DosesLogic"/>
</extension>
<extension url="name">
<valueString value="Client is due for HPV vaccination Case 2"/>
</extension>
<extension url="statement">
<valueString
value="/*
@output: Client is due for HPV vaccination Case 2
@pseudocode: "Immunization recommendation status" = "Due"
*/
define "Client is due for HPV vaccination Case 2":
Encounter."One HPV primary series dose was administered"
and Encounter."The latest HPV dose was administered more than 6 months ago""/>
</extension>
<extension url="displaySequence">
<valueInteger value="28"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPV2DosesLogic"/>
</extension>
<extension url="name">
<valueString value="Client is due for HPV vaccination Case 3"/>
</extension>
<extension url="statement">
<valueString
value="/*
@output: Client is due for HPV vaccination Case 3
@pseudocode: "Immunization recommendation status" = "Due"
*/
define "Client is due for HPV vaccination Case 3":
Encounter."Two HPV primary series doses were administered"
and Encounter."The latest HPV dose was administered more than 6 months ago"
and Encounter."Client's HIV status is positive""/>
</extension>
<extension url="displaySequence">
<valueInteger value="29"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPV2DosesLogic"/>
</extension>
<extension url="name">
<valueString value="Client is due for HPV vaccination Case 4"/>
</extension>
<extension url="statement">
<valueString
value="/*
@output: Client is due for HPV vaccination Case 4
@pseudocode: "Immunization recommendation status" = "Due"
*/
define "Client is due for HPV vaccination Case 4":
Encounter."Two HPV primary series doses were administered"
and Encounter."The latest HPV dose was administered more than 6 months ago"
and Encounter."Client is immunocompromised""/>
</extension>
<extension url="displaySequence">
<valueInteger value="30"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPV2DosesLogic"/>
</extension>
<extension url="name">
<valueString value="Client is due for HPV vaccination"/>
</extension>
<extension url="statement">
<valueString
value="/*
@output: Client is due for HPV vaccination
@pseudocode: "Immunization recommendation status" = "Due"
*/
define "Client is due for HPV vaccination":
"Client is due for HPV vaccination Case 1"
or "Client is due for HPV vaccination Case 2"
or "Client is due for HPV vaccination Case 3"
or "Client is due for HPV vaccination Case 4""/>
</extension>
<extension url="displaySequence">
<valueInteger value="31"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPV2DosesLogic"/>
</extension>
<extension url="name">
<valueString value="Client is due for HPV vaccination Guidance"/>
</extension>
<extension url="statement">
<valueString
value="/*
@output: Client is due for HPV vaccination Guidance
@guidance = Should vaccinate client with first HPV dose as no HPV doses were administered, client is female and within appropriate age range.
Check for contraindications.
@guidance = Should vaccinate client with second HPV dose as the latest HPV dose was administered more than 6 months ago.
Check for contraindications.
@guidance = Should vaccinate for third HPV dose as client is HIV positive and the latest HPV dose was administered more than 6 months ago.
Check for contraindications.
@guidance = Should vaccinate for third HPV dose as client is immunocompromised and the latest HPV dose was administered more than 6 months ago.
Check for contraindications.
*/
define "Client is due for HPV vaccination Guidance":
case
when "Client is due for HPV vaccination Case 1" then 'Should vaccinate client with first HPV dose as no HPV doses were administered, client is female and within appropriate age range.
Check for contraindications.'
when "Client is due for HPV vaccination Case 2" then 'Should vaccinate client with second HPV dose as the latest HPV dose was administered more than 6 months ago.
Check for contraindications.'
when "Client is due for HPV vaccination Case 3" then 'Should vaccinate for third HPV dose as client is HIV positive and the latest HPV dose was administered more than 6 months ago.
Check for contraindications.'
when "Client is due for HPV vaccination Case 4" then 'Should vaccinate for third HPV dose as client is immunocompromised and the latest HPV dose was administered more than 6 months ago.
Check for contraindications.'
else ''
end"/>
</extension>
<extension url="displaySequence">
<valueInteger value="32"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPVEncounterElements"/>
</extension>
<extension url="name">
<valueString value="Client's age more than or equal to 15 years"/>
</extension>
<extension url="statement">
<valueString
value="/*
@input: Client's age more than or equal to 15 years
@pseudocode: Today's date − "Date of birth" ≥ 15 years
@code: Client's age more than or equal to 15 years-41
@decision: IMMZ.D2.DT.HPV.2 doses: 2-dose schedule
*/
define "Client's age more than or equal to 15 years":
Encounter."Current Patient Age In Years" >= 15"/>
</extension>
<extension url="displaySequence">
<valueInteger value="33"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPV2DosesLogic"/>
</extension>
<extension url="name">
<valueString
value="Clinical judgement is required. Create a clinical note. Case 1"/>
</extension>
<extension url="statement">
<valueString
value="/*
@output: Clinical judgement is required. Create a clinical note. Case 1
@pseudocode: "Immunization recommendation status" = "Further evaluation needed"
*/
define "Clinical judgement is required. Create a clinical note. Case 1":
Encounter."No HPV primary series doses were administered"
and Encounter."Client's age more than or equal to 15 years"
and Encounter."Client's biological sex is female""/>
</extension>
<extension url="displaySequence">
<valueInteger value="34"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPVEncounterElements"/>
</extension>
<extension url="name">
<valueString value="Client's biological sex is not female"/>
</extension>
<extension url="statement">
<valueString
value="/*
@input: Client's biological sex is not female
@pseudocode: "Sex" ≠ "Female"
@code: Client's biological sex is not female-16
@decision: IMMZ.D2.DT.HPV.2 doses: 2-dose schedule
*/
define "Client's biological sex is not female":
not "Client's biological sex is female""/>
</extension>
<extension url="displaySequence">
<valueInteger value="35"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPV2DosesLogic"/>
</extension>
<extension url="name">
<valueString
value="Clinical judgement is required. Create a clinical note. Case 2"/>
</extension>
<extension url="statement">
<valueString
value="/*
@output: Clinical judgement is required. Create a clinical note. Case 2
@pseudocode: "Immunization recommendation status" = "Further evaluation needed"
*/
define "Clinical judgement is required. Create a clinical note. Case 2":
Encounter."No HPV primary series doses were administered"
and Encounter."Client's biological sex is not female""/>
</extension>
<extension url="displaySequence">
<valueInteger value="36"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPV2DosesLogic"/>
</extension>
<extension url="name">
<valueString
value="Clinical judgement is required. Create a clinical note."/>
</extension>
<extension url="statement">
<valueString
value="/*
@output: Clinical judgement is required. Create a clinical note.
@pseudocode: "Immunization recommendation status" = "Further evaluation needed"
*/
define "Clinical judgement is required. Create a clinical note.":
"Clinical judgement is required. Create a clinical note. Case 1"
or "Clinical judgement is required. Create a clinical note. Case 2""/>
</extension>
<extension url="displaySequence">
<valueInteger value="37"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPV2DosesLogic"/>
</extension>
<extension url="name">
<valueString
value="Clinical judgement is required. Create a clinical note. Guidance"/>
</extension>
<extension url="statement">
<valueString
value="/*
@output: Clinical judgement is required. Create a clinical note. Guidance
@guidance = Member States should update this guidance according to the national immunization programme.
@guidance = Member States should update this guidance according to the national immunization programme.
*/
define "Clinical judgement is required. Create a clinical note. Guidance":
case
when "Clinical judgement is required. Create a clinical note. Case 1" then 'Member States should update this guidance according to the national immunization programme.'
when "Clinical judgement is required. Create a clinical note. Case 2" then 'Member States should update this guidance according to the national immunization programme.'
else ''
end"/>
</extension>
<extension url="displaySequence">
<valueInteger value="38"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZEncounterElements"/>
</extension>
<extension url="name">
<valueString value="Client is not immunocompromised"/>
</extension>
<extension url="statement">
<valueString
value="/*
@input: Client is not immunocompromised
@pseudocode: "Immunocompromised" ≠ TRUE
*/
define "Client is not immunocompromised":
not "Client is immunocompromised""/>
</extension>
<extension url="displaySequence">
<valueInteger value="39"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPVEncounterElements"/>
</extension>
<extension url="name">
<valueString value="Client is not immunocompromised"/>
</extension>
<extension url="statement">
<valueString
value="/*
@input: Client is not immunocompromised
@pseudocode: "Immunocompromised" ≠ TRUE
@code: Client is not immunocompromised-26
@decision: IMMZ.D2.DT.HPV.2 doses: 2-dose schedule
@decision: IMMZ.D2.DT.HPV.Single dose: Alternative single-dose schedule
*/
define "Client is not immunocompromised":
Encounter."Client is not immunocompromised""/>
</extension>
<extension url="displaySequence">
<valueInteger value="40"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZEncounterElements"/>
</extension>
<extension url="name">
<valueString value="Client's HIV status is negative or unknown"/>
</extension>
<extension url="statement">
<valueString
value="/*
@input: Client's HIV status is negative or unknown
@pseudocode: "HIV status" ≠ "HIV-positive"
*/
define "Client's HIV status is negative or unknown":
not "Client's HIV status is positive""/>
</extension>
<extension url="displaySequence">
<valueInteger value="41"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPVEncounterElements"/>
</extension>
<extension url="name">
<valueString value="Client's HIV status is negative or unknown"/>
</extension>
<extension url="statement">
<valueString
value="/*
@input: Client's HIV status is negative or unknown
@pseudocode: "HIV status" ≠ "HIV-positive"
@code: Client's HIV status is negative or unknown-29
@decision: IMMZ.D2.DT.HPV.2 doses: 2-dose schedule
@decision: IMMZ.D2.DT.HPV.Single dose: Alternative single-dose schedule
*/
define "Client's HIV status is negative or unknown":
Encounter."Client's HIV status is negative or unknown""/>
</extension>
<extension url="displaySequence">
<valueInteger value="42"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPV2DosesLogic"/>
</extension>
<extension url="name">
<valueString value="HPV immunization schedule is complete Case 1"/>
</extension>
<extension url="statement">
<valueString
value="/*
@output: HPV immunization schedule is complete Case 1
@pseudocode: "Immunization recommendation status" = "Complete"
*/
define "HPV immunization schedule is complete Case 1":
Encounter."Two HPV primary series doses were administered"
and Encounter."Client is not immunocompromised"
and Encounter."Client's HIV status is negative or unknown""/>
</extension>
<extension url="displaySequence">
<valueInteger value="43"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPVEncounterElements"/>
</extension>
<extension url="name">
<valueString
value="Three HPV primary series doses were administered"/>
</extension>
<extension url="statement">
<valueString
value="/*
@input: Three HPV primary series doses were administered
@pseudocode: Count of vaccines administered (where "Vaccine type" = "HPV vaccines" and "Type of dose" = "Primary series") = 3
@code: Three HPV primary series doses were administered-112
@decision: IMMZ.D2.DT.HPV.2 doses: 2-dose schedule
@decision: IMMZ.D2.DT.HPV.Single dose: Alternative single-dose schedule
*/
define "Three HPV primary series doses were administered":
"Number of HPV Primary Series Doses Administered" = 3"/>
</extension>
<extension url="displaySequence">
<valueInteger value="44"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPV2DosesLogic"/>
</extension>
<extension url="name">
<valueString value="HPV immunization schedule is complete Case 2"/>
</extension>
<extension url="statement">
<valueString
value="/*
@output: HPV immunization schedule is complete Case 2
@pseudocode: "Immunization recommendation status" = "Complete"
*/
define "HPV immunization schedule is complete Case 2":
Encounter."Three HPV primary series doses were administered""/>
</extension>
<extension url="displaySequence">
<valueInteger value="45"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPV2DosesLogic"/>
</extension>
<extension url="name">
<valueString value="HPV immunization schedule is complete"/>
</extension>
<extension url="statement">
<valueString
value="/*
@output: HPV immunization schedule is complete
@pseudocode: "Immunization recommendation status" = "Complete"
*/
define "HPV immunization schedule is complete":
"HPV immunization schedule is complete Case 1"
or "HPV immunization schedule is complete Case 2""/>
</extension>
<extension url="displaySequence">
<valueInteger value="46"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPV2DosesLogic"/>
</extension>
<extension url="name">
<valueString
value="HPV immunization schedule is complete Guidance"/>
</extension>
<extension url="statement">
<valueString
value="/*
@output: HPV immunization schedule is complete Guidance
@guidance = HPV immunization schedule is complete. Two HPV primary series doses were administered.
Check for any other vaccines due.
@guidance = HPV immunization schedule is complete. Three HPV primary series doses were administered.
Check for any other vaccines due.
*/
define "HPV immunization schedule is complete Guidance":
case
when "HPV immunization schedule is complete Case 1" then 'HPV immunization schedule is complete. Two HPV primary series doses were administered.
Check for any other vaccines due.'
when "HPV immunization schedule is complete Case 2" then 'HPV immunization schedule is complete. Three HPV primary series doses were administered.
Check for any other vaccines due.'
else ''
end"/>
</extension>
<extension url="displaySequence">
<valueInteger value="47"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPV2DosesLogic"/>
</extension>
<extension url="name">
<valueString value="Guidance"/>
</extension>
<extension url="statement">
<valueString
value="/*
@dynamicValue: Guidance
*/
define "Guidance":
case
when "Client is not due for HPV vaccination" then "Client is not due for HPV vaccination Guidance"
when "Client is due for HPV vaccination" then "Client is due for HPV vaccination Guidance"
when "Clinical judgement is required. Create a clinical note." then "Clinical judgement is required. Create a clinical note. Guidance"
when "HPV immunization schedule is complete" then "HPV immunization schedule is complete Guidance"
else ''
end"/>
</extension>
<extension url="displaySequence">
<valueInteger value="48"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZD2DTHPV2DosesLogic"/>
</extension>
<extension url="name">
<valueString value="Has Guidance"/>
</extension>
<extension url="statement">
<valueString
value="define "Has Guidance":
"Guidance" is not null and "Guidance" != ''"/>
</extension>
<extension url="displaySequence">
<valueInteger value="49"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZCommon"/>
</extension>
<extension url="name">
<valueString value="seriesPrimary"/>
</extension>
<extension url="statement">
<valueString
value="/**
* @description: Gets the doses from the primary series
*/
define fluent function seriesPrimary(immunizations List<Immunization>):
immunizations I where
exists( I.protocolApplied pa where pa.series = 'Primary series' )"/>
</extension>
<extension url="displaySequence">
<valueInteger value="50"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="FHIRHelpers"/>
</extension>
<extension url="name">
<valueString value="ToString"/>
</extension>
<extension url="statement">
<valueString
value="define function ToString(value string): value.value"/>
</extension>
<extension url="displaySequence">
<valueInteger value="51"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="FHIRHelpers"/>
</extension>
<extension url="name">
<valueString value="ToString"/>
</extension>
<extension url="statement">
<valueString
value="define function ToString(value ImmunizationStatus): value.value"/>
</extension>
<extension url="displaySequence">
<valueInteger value="52"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="FHIRHelpers"/>
</extension>
<extension url="name">
<valueString value="ToBoolean"/>
</extension>
<extension url="statement">
<valueString
value="define function ToBoolean(value boolean): value.value"/>
</extension>
<extension url="displaySequence">
<valueInteger value="53"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="FHIRHelpers"/>
</extension>
<extension url="name">
<valueString value="ToConcept"/>
</extension>
<extension url="statement">
<valueString
value="define function ToConcept(concept FHIR.CodeableConcept):
if concept is null then
null
else
System.Concept {
codes: concept.coding C return ToCode(C),
display: concept.text.value
}"/>
</extension>
<extension url="displaySequence">
<valueInteger value="54"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="FHIRHelpers"/>
</extension>
<extension url="name">
<valueString value="ToCode"/>
</extension>
<extension url="statement">
<valueString
value="define function ToCode(coding FHIR.Coding):
if coding is null then
null
else
System.Code {
code: coding.code.value,
system: coding.system.value,
version: coding.version.value,
display: coding.display.value
}"/>
</extension>
<extension url="displaySequence">
<valueInteger value="55"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="WHOCommon"/>
</extension>
<extension url="name">
<valueString value="mostRecent"/>
</extension>
<extension url="statement">
<valueString
value="define fluent function mostRecent(immunizations List<Immunization>):
Last(
immunizations I
sort by start of occurrence.toInterval()
)"/>
</extension>
<extension url="displaySequence">
<valueInteger value="56"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="IMMZCommon"/>
</extension>
<extension url="name">
<valueString value="encounterOrOnBefore"/>
</extension>
<extension url="statement">
<valueString
value="/**
* @description: Gets observation from an encounter or on or before a date
*/
define fluent function encounterOrOnBefore(observations List<Observation>, EncounterId String, beforeDate Date):
observations O where
(O.encounter.references(EncounterId)
or O.effective.toInterval() starts same day or before beforeDate)"/>
</extension>
<extension url="displaySequence">
<valueInteger value="57"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="WHOCommon"/>
</extension>
<extension url="name">
<valueString value="references"/>
</extension>
<extension url="statement">
<valueString
value="/*
@description: Returns true if the given reference is to the given resourceId
@comment: Returns true if the `resourceId` parameter exactly equals the tail of the given reference.
NOTE: This function assumes resources from the same source server.
*/
define fluent function references(reference FHIR.Reference, resourceId String):
resourceId = Last(Split(reference.reference, '/'))"/>
</extension>
<extension url="displaySequence">
<valueInteger value="58"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="WHOCommon"/>
</extension>
<extension url="name">
<valueString value="complete"/>
</extension>
<extension url="statement">
<valueString
value="define fluent function complete(observations List<Observation>):
observations O where O.status in { 'final', 'amended', 'corrected' }"/>
</extension>
<extension url="displaySequence">
<valueInteger value="59"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="FHIRHelpers"/>
</extension>
<extension url="name">
<valueString value="ToString"/>
</extension>
<extension url="statement">
<valueString
value="define function ToString(value ObservationStatus): value.value"/>
</extension>
<extension url="displaySequence">
<valueInteger value="60"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="FHIRHelpers"/>
</extension>
<extension url="name">
<valueString value="ToString"/>
</extension>
<extension url="statement">
<valueString
value="define function ToString(value AdministrativeGender): value.value"/>
</extension>
<extension url="displaySequence">
<valueInteger value="61"/>
</extension>
</extension>
<name value="EffectiveDataRequirements"/>
<status value="active"/>
<type>
<coding>
<system value="http://terminology.hl7.org/CodeSystem/library-type"/>
<code value="module-definition"/>
</coding>
</type>
<relatedArtifact>
<type value="depends-on"/>
<display value="FHIR model information"/>
<resource
value="http://fhir.org/guides/cqf/common/Library/FHIR-ModelInfo|4.0.1"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Library Encounter"/>
<resource
value="http://smart.who.int/immunizations/Library/IMMZD2DTHPVEncounterElements"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Library Encounter"/>
<resource
value="http://smart.who.int/immunizations/Library/IMMZEncounterElements"/>
</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 FHIRHelpers"/>
<resource
value="http://fhir.org/guides/cqf/common/Library/FHIRHelpers|4.0.1"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Library Elements"/>
<resource
value="http://smart.who.int/immunizations/Library/IMMZElements"/>
</relatedArtifact>
<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 FHIRHelpers"/>
<resource
value="http://fhir.org/guides/cqf/common/Library/FHIRHelpers|4.0.1"/>
</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 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 WC"/>
<resource
value="http://smart.who.int/immunizations/Library/WHOCommon"/>
</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="Code system IMMZD"/>
<resource
value="http://smart.who.int/immunizations/CodeSystem/IMMZ.D"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Value set HPV vaccines"/>
<resource
value="http://smart.who.int/immunizations/ValueSet/IMMZ.Z.DE7"/>
</relatedArtifact>
<parameter>
<name value="Today"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<type value="date"/>
</parameter>
<parameter>
<name value="EncounterId"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<type value="string"/>
</parameter>
<parameter>
<name value="Guidance"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="string"/>
</parameter>
<parameter>
<name value="Client is due for HPV vaccination"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Has Guidance"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<dataRequirement>
<type value="Patient"/>
<profile value="http://hl7.org/fhir/StructureDefinition/Patient"/>
</dataRequirement>
<dataRequirement>
<type value="Immunization"/>
<profile
value="http://hl7.org/fhir/StructureDefinition/Immunization"/>
<mustSupport value="status"/>
<mustSupport value="isSubpotent"/>
</dataRequirement>
<dataRequirement>
<type value="Immunization"/>
<profile
value="http://hl7.org/fhir/StructureDefinition/Immunization"/>
<mustSupport value="status"/>
<mustSupport value="isSubpotent"/>
<mustSupport value="occurrence"/>
</dataRequirement>
<dataRequirement>
<type value="Immunization"/>
<profile
value="http://hl7.org/fhir/StructureDefinition/Immunization"/>
<mustSupport value="status"/>
<mustSupport value="isSubpotent"/>
<mustSupport value="occurrence"/>
<mustSupport value="vaccineCode"/>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile value="http://hl7.org/fhir/StructureDefinition/Observation"/>
<mustSupport value="code"/>
<codeFilter>
<path value="code"/>
<code>
<system
value="http://smart.who.int/immunizations/CodeSystem/IMMZ.D"/>
<code value="DE204"/>
<display value="HIV status"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Observation"/>
<profile value="http://hl7.org/fhir/StructureDefinition/Observation"/>
<mustSupport value="code"/>
<codeFilter>
<path value="code"/>
<code>
<system
value="http://smart.who.int/immunizations/CodeSystem/IMMZ.D"/>
<code value="DE209"/>
<display value="Immunocompromised"/>
</code>
</codeFilter>
</dataRequirement>
<dataRequirement>
<type value="Patient"/>
<profile value="http://hl7.org/fhir/StructureDefinition/Patient"/>
</dataRequirement>
<dataRequirement>
<type value="Immunization"/>
<profile
value="http://hl7.org/fhir/StructureDefinition/Immunization"/>
<mustSupport value="status"/>
<mustSupport value="isSubpotent"/>
<mustSupport value="occurrence"/>
<mustSupport value="vaccineCode"/>
</dataRequirement>
<dataRequirement>
<type value="Immunization"/>
<profile
value="http://hl7.org/fhir/StructureDefinition/Immunization"/>
<mustSupport value="status"/>
<mustSupport value="isSubpotent"/>
<mustSupport value="occurrence"/>
<mustSupport value="vaccineCode"/>
</dataRequirement>
</Library>
</contained>
<extension
url="http://hl7.org/fhir/uv/cpg/StructureDefinition/cpg-knowledgeCapability">
<valueCode value="computable"/>
</extension>
<extension
url="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-effectiveDataRequirements">
<valueCanonical value="#effective-data-requirements"/>
</extension>
<url
value="http://smart.who.int/immunizations/PlanDefinition/IMMZD2DTHPV2Doses"/>
<version value="0.2.0"/>
<name value="IMMZD2DTHPV2Doses"/>
<title value="IMMZ.D2.DT.HPV.2 doses"/>
<type>
<coding>
<system
value="http://terminology.hl7.org/CodeSystem/plan-definition-type"/>
<code value="eca-rule"/>
</coding>
</type>
<status value="draft"/>
<experimental value="false"/>
<date value="2026-03-03T13:07:11+00:00"/>
<publisher value="WHO"/>
<contact>
<name value="WHO"/>
<telecom>
<system value="url"/>
<value value="http://who.int"/>
</telecom>
</contact>
<description value="IMMZ.D2.DT.HPV.2 doses
2-dose schedule"/>
<relatedArtifact>
<type value="citation"/>
<citation
value="WHO recommendations for routine immunization - summary tables (January 2025)"/>
</relatedArtifact>
<library
value="http://smart.who.int/immunizations/Library/IMMZD2DTHPV2DosesLogic"/>
<action>
<extension
url="http://hl7.org/fhir/uv/cpg/StructureDefinition/cpg-rationale">
<valueMarkdown
value="The current evidence supports the recommendation that a 2-dose schedule be used in
the primary target group from 9 years of age and for all older age groups for which HPV vaccines are licensed."/>
</extension>
<title value="Determine if the client is due for HPV."/>
<description
value="Determine if the client is due for HPV vaccine according to the national immunization protocol.
2-dose schedule"/>
<condition>
<kind value="applicability"/>
<expression>
<description value="Client is due for HPV vaccination"/>
<language value="text/cql-identifier"/>
<expression value="Client is due for HPV vaccination"/>
</expression>
</condition>
<definitionCanonical
value="http://smart.who.int/immunizations/ActivityDefinition/IMMZD2DTMR"/>
<dynamicValue>
<path value="status"/>
<expression>
<language value="text/cql-expression"/>
<expression value="'draft'"/>
</expression>
</dynamicValue>
<dynamicValue>
<path value="intent"/>
<expression>
<language value="text/cql-expression"/>
<expression value="'proposal'"/>
</expression>
</dynamicValue>
<dynamicValue>
<path value="medication"/>
<expression>
<language value="text/cql-expression"/>
<expression
value="Concept { codes: { Code { system: 'http://smart.who.int/immunizations/CodeSystem/IMMZ.Z', code: 'DE7', display: 'HPV vaccines' } }, display: 'HPV vaccines' }"/>
</expression>
</dynamicValue>
</action>
<action>
<title
value="Check for Guidance for the patient regarding IMMZ.D2.DT.HPV.2 doses."/>
<description
value="Show Guidance for the patient regarding IMMZ.D2.DT.HPV.2 doses."/>
<condition>
<kind value="applicability"/>
<expression>
<description value="Has Guidance"/>
<language value="text/cql-identifier"/>
<expression value="Has Guidance"/>
</expression>
</condition>
<definitionCanonical
value="http://smart.who.int/immunizations/ActivityDefinition/IMMZD2DTCR"/>
<dynamicValue>
<path value="status"/>
<expression>
<language value="text/cql-expression"/>
<expression value="'active'"/>
</expression>
</dynamicValue>
<dynamicValue>
<path value="payload.contentString"/>
<expression>
<language value="text/cql-identifier"/>
<expression value="Guidance"/>
</expression>
</dynamicValue>
<dynamicValue>
<path value="category.coding"/>
<expression>
<description value="Category of communication"/>
<language value="text/cql-expression"/>
<expression
value="Code { system: 'http://terminology.hl7.org/CodeSystem/communication-category', code: 'alert' }"/>
</expression>
</dynamicValue>
<dynamicValue>
<path value="priority"/>
<expression>
<description value="Alert priority"/>
<language value="text/cql-expression"/>
<expression
value="Code { system: 'http://hl7.org/fhir/request-priority', code: 'routine' }"/>
</expression>
</dynamicValue>
</action>
</PlanDefinition>