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/ and changes regularly. See the Directory of published versions

Library: IMMZD18STyphoidTy21aLogic

Official URL: http://smart.who.int/immunizations/Library/IMMZD18STyphoidTy21aLogic Version: 0.2.0
Draft as of 2025-09-17 Computable Name: IMMZD18STyphoidTy21aLogic

This library defines decision support logic for the IMMZ.D18.S.Typhoid.Ty21a schedule table in the Immunization CPG

Title: IMMZD18STyphoidTy21aLogic
Id: IMMZD18STyphoidTy21aLogic
Version: 0.2.0
Url: IMMZD18STyphoidTy21aLogic
Status: draft
Type:

system: http://terminology.hl7.org/CodeSystem/library-type

code: logic-library

Date: 2025-09-17 23:03:28+0000
Publisher: WHO
Description:

This library defines decision support logic for the IMMZ.D18.S.Typhoid.Ty21a schedule table in the Immunization CPG

Related Artifacts:

Dependencies

Parameters:
NameTypeMinMaxIn/Out
Todaydate01In
PatientPatient01Out
The primary series has been completedboolean01Out
Typhoid Ty21a primary seriesboolean01Out
Typhoid Ty21a primary series Due Datedate01Out
Typhoid Ty21a primary series Createstring01Out
Typhoid Ty21a primary series OverdueResource01Out
Typhoid Ty21a primary series ExpirationResource01Out
Typhoid booster dose(s) repeat 3-doses seriesboolean01Out
Typhoid booster dose(s) repeat 3-doses series Due Datedate01Out
Typhoid booster dose(s) repeat 3-doses series Overduedate01Out
Typhoid booster dose(s) repeat 3-doses series Createstring01Out
Typhoid booster dose(s) repeat 3-doses series ExpirationResource01Out
The booster series has been completedboolean01Out
Test ValidationResource01Out
Content: text/cql

/*
 * Library: IMMZD18STyphoidTy21aLogic (IMMZ.D18.S.Typhoid.Ty21a schedule)
 * Schedule Table: Live attenuated Ty21a vaccine, 3-dose schedule
 */
library IMMZD18STyphoidTy21aLogic

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 IMMZD2DTTyphoidEncounterElements called Encounter

parameter Today Date default Today()

context Patient


/*
@output: Typhoid Ty21a primary series
@description: Provision of the typhoid Ty21a, 3-dose oral primary series immunization
@trigger: Child's birth
@triggerDate: "Date of birth"
*/
define "Typhoid Ty21a primary series":
  Encounter."No typhoid primary series doses were administered"
  and not "The primary series has been completed"

/*
@output: Typhoid Ty21a primary series Create
@create: Ty21a – 3-doses to be administered orally every second day from 6 years of age.
*/
define "Typhoid Ty21a primary series Create":
  if "Typhoid Ty21a primary series" 
  then 'Ty21a – 3-doses to be administered orally every second day from 6 years of age.' + '
Due Date: ' + ToString("Typhoid Ty21a primary series Due Date")
  else ''

/*
@dynamicValue: Typhoid Ty21a primary series Due Date
@pseudocode: "Date of birth" + 6 years
*/
define "Typhoid Ty21a primary series Due Date":
  if "Typhoid Ty21a primary series" then Patient.birthDate + 6 years
  else null

/*
@dynamicValue: Typhoid Ty21a primary series Overdue
@pseudocode: To be determined by Member States; however, there is no recommended overdue date and individuals are always eligible to be vaccinated.
*/
define "Typhoid Ty21a primary series Overdue":
  null

/*
@dynamicValue: Typhoid Ty21a primary series Expiration
@pseudocode: To be determined by Member States; however, there is no recommended expiration date and individuals are always eligible to be vaccinated.
*/
define "Typhoid Ty21a primary series Expiration":
  null
  
/*
@complete: The primary series has been completed
@pseudocode: "Completed the primary vaccination series" = TRUE (where "Vaccine type" = "Typhoid vaccines")
*/
define "The primary series has been completed":
  Encounter."Primary series is complete"

/*
@output: Typhoid booster dose(s): repeat 3-doses series
@description: Provision of the typhoid booster dose(s): revaccination
@trigger: The primary series has been completed
"Completed the primary vaccination series" = TRUE (where "Vaccine type" = "Typhoid vaccines")
@triggerDate: Latest "Date and time of vaccination" (where "Vaccine type" = "Typhoid vaccines")
*/
define "Typhoid booster dose(s) repeat 3-doses series":
  "The primary series has been completed"

/*
@output: Typhoid booster dose(s): repeat 3-doses series Create
@create: Revaccination (3-doses) is recommended every 3–7 years for Ty21a.
*/
define "Typhoid booster dose(s) repeat 3-doses series Create":
  if "Typhoid booster dose(s) repeat 3-doses series" 
  then 'Revaccination (3-doses) is recommended every 3–7 years for Ty21a.' + '
Due Date: ' + ToString("Typhoid booster dose(s) repeat 3-doses series Due Date") + '
Overdue: ' + ToString("Typhoid booster dose(s) repeat 3-doses series Overdue")
  else ''

/*
@dynamicValue: Typhoid booster dose(s): repeat 3-doses series Due Date
@pseudocode: Latest "Date and time of vaccination" (where "Vaccine type" = "Typhoid vaccines") + 3 years
*/
define "Typhoid booster dose(s) repeat 3-doses series Due Date":
  if "Typhoid booster dose(s) repeat 3-doses series" then Encounter."Date of Latest Typhoid Dose" + 3 years
  else null

/*
@dynamicValue: Typhoid booster dose(s): repeat 3-doses series Overdue
@pseudocode: Latest "Date and time of vaccination" (where "Vaccine type" = "Typhoid vaccines") + 7 years
*/
define "Typhoid booster dose(s) repeat 3-doses series Overdue":
  if "Typhoid booster dose(s) repeat 3-doses series" then Encounter."Date of Latest Typhoid Dose" + 7 years
  else null

/*
@dynamicValue: Typhoid booster dose(s): repeat 3-doses series Expiration
@pseudocode: To be determined by Member States; however, there is no recommended expiration date and individuals are always eligible to be vaccinated.
*/
define "Typhoid booster dose(s) repeat 3-doses series Expiration":
  null
  
/*
@complete: The booster series has been completed
@pseudocode: "Completed the booster series" = TRUE (where "Vaccine type" = "Typhoid vaccines")
*/
define "The booster series has been completed":
  Encounter."Date of Latest Typhoid Dose" is not null
  and duration in years between Encounter."Date of Latest Typhoid Dose" and Today < 3

/*
@test: Test expected results based on example patients
*/
define "Test Validation":
  case
    when Patient.id = '30.1' then "Typhoid Ty21a primary series"
    when Patient.id = '31.124' then "Typhoid Ty21a primary series"
    when Patient.id = '32.124' then "Typhoid Ty21a primary series"
    when Patient.id = '33.123' then "Typhoid booster dose(s) repeat 3-doses series"
    when Patient.id = '34.1234' then "Typhoid booster dose(s) repeat 3-doses series"
    when Patient.id = '35.1234' then "Typhoid booster dose(s) repeat 3-doses series"
    else 'No test case set'
  end
Content: application/elm+xml
Encoded data (63756 characters)