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: IMMZD2DTSeasonalinfluenzaSeasonalInfluenzaLogic

Official URL: http://smart.who.int/immunizations/Library/IMMZD2DTSeasonalinfluenzaSeasonalInfluenzaLogic Version: 0.2.0
Draft as of 2025-11-25 Computable Name: IMMZD2DTSeasonalinfluenzaSeasonalInfluenzaLogic

This library defines decision support logic for the IMMZ.D2.DT.Seasonal influenza decision table in the Immunization CPG

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

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

code: logic-library

Date: 2025-11-25 20:07:03+0000
Publisher: WHO
Description:

This library defines decision support logic for the IMMZ.D2.DT.Seasonal influenza decision table in the Immunization CPG

Related Artifacts:

Dependencies

Parameters:
NameTypeMinMaxIn/Out
Todaydate01In
PatientPatient01Out
Client is not due for seasonal influenza vaccination Case 1boolean01Out
Client is not due for seasonal influenza vaccination Case 2boolean01Out
Client is not due for seasonal influenza vaccinationboolean01Out
Client is not due for seasonal influenza vaccination Guidancestring01Out
Client is due for seasonal influenza vaccination Case 1boolean01Out
Client is due for seasonal influenza vaccination Case 2boolean01Out
Client is due for seasonal influenza vaccinationboolean01Out
Client is due for seasonal influenza vaccination Guidancestring01Out
The primary series is complete. Client is not due for seasonal influenza annual dose Case 1boolean01Out
The primary series is complete. Client is not due for seasonal influenza annual dose Case 2boolean01Out
The primary series is complete. Client is not due for seasonal influenza annual doseboolean01Out
The primary series is complete. Client is not due for seasonal influenza annual dose Guidancestring01Out
The primary series is complete. Client is due for seasonal influenza annual dose Case 1boolean01Out
The primary series is complete. Client is due for seasonal influenza annual dose Case 2boolean01Out
The primary series is complete. Client is due for seasonal influenza annual doseboolean01Out
The primary series is complete. Client is due for seasonal influenza annual dose Guidancestring01Out
Guidancestring01Out
Has Guidanceboolean01Out
Test ValidationResource01Out
Content: text/cql
/*
 * Library: IMMZD2DTSeasonalinfluenzaSeasonalInfluenzaLogic (IMMZ.D2.DT.Seasonal influenza)
 * Rule: Determine if the client is due for a seasonal influenza vaccination according to the national immunization schedule
 * Decision Table: Inactivated trivalent and quadrivalent vaccines, 2-dose schedule
 * Trigger: IMMZ.D2 Determine required vaccination(s) if any
 */
library IMMZD2DTSeasonalinfluenzaSeasonalInfluenzaLogic

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

include IMMZD2DTSeasonalinfluenzaEncounterElements called Encounter

parameter Today Date default Today()

context Patient


/*
@dynamicValue: Guidance
*/
define "Guidance":
  case 
    when "Client is not due for seasonal influenza vaccination" then "Client is not due for seasonal influenza vaccination Guidance"
    when "Client is due for seasonal influenza vaccination" then "Client is due for seasonal influenza vaccination Guidance"
    when "The primary series is complete. Client is not due for seasonal influenza annual dose" then "The primary series is complete. Client is not due for seasonal influenza annual dose Guidance"
    when "The primary series is complete. Client is due for seasonal influenza annual dose" then "The primary series is complete. Client is due for seasonal influenza annual dose Guidance" 
    else ''
  end
  
define "Has Guidance":
  "Guidance" is not null and "Guidance" != ''

/*
@output: Client is not due for seasonal influenza vaccination Case 1
@pseudocode: "Immunization recommendation status" = "Not due"
*/
define "Client is not due for seasonal influenza vaccination Case 1":
  Encounter."Client's age is less than 6 months"

/*
@output: Client is not due for seasonal influenza vaccination Case 2
@pseudocode: "Immunization recommendation status" = "Not due"
*/
define "Client is not due for seasonal influenza vaccination Case 2":
  Encounter."One seasonal influenza primary series doses were administered"
    and Encounter."Client's age is less than 9 years"
    and Encounter."The latest seasonal influenza dose was administered less than 4 weeks ago"

/*
@output: Client is not due for seasonal influenza vaccination
@pseudocode: "Immunization recommendation status" = "Not due"
*/
define "Client is not due for seasonal influenza vaccination":
  "Client is not due for seasonal influenza vaccination Case 1"
    or "Client is not due for seasonal influenza vaccination Case 2"

/*
@output: Client is not due for seasonal influenza vaccination Guidance
@guidance = Should not vaccinate client with first seasonal influenza dose as client's age is less than 6 months. 
Check for any other vaccines due and inform the caregiver of when to come back for first dose.
@guidance = Should not vaccinate client with second seasonal influenza dose as latest seasonal influenza dose was administered less than 4 weeks ago. 
Check for any other vaccines due and inform the caregiver of when to come back for the second dose.
*/
define "Client is not due for seasonal influenza vaccination Guidance":
  case
    when "Client is not due for seasonal influenza vaccination Case 1" then 'Should not vaccinate client with first seasonal influenza dose as client\'s age is less than 6 months. 
Check for any other vaccines due and inform the caregiver of when to come back for first dose.'
    when "Client is not due for seasonal influenza vaccination Case 2" then 'Should not vaccinate client with second seasonal influenza dose as latest seasonal influenza dose was administered less than 4 weeks ago. 
Check for any other vaccines due and inform the caregiver of when to come back for the second dose.'
    else ''
  end

/*
@output: Client is due for seasonal influenza vaccination Case 1
@pseudocode: "Immunization recommendation status" = "Due"
*/
define "Client is due for seasonal influenza vaccination Case 1":
  Encounter."No seasonal influenza primary series doses were administered"
    and Encounter."Client's age is more than or equal to 6 months"

/*
@output: Client is due for seasonal influenza vaccination Case 2
@pseudocode: "Immunization recommendation status" = "Due"
*/
define "Client is due for seasonal influenza vaccination Case 2":
  Encounter."One seasonal influenza primary series doses were administered"
    and Encounter."Client's age is less than 9 years"
    and Encounter."The latest seasonal influenza dose was administered more than 4 weeks ago"

/*
@output: Client is due for seasonal influenza vaccination
@pseudocode: "Immunization recommendation status" = "Due"
*/
define "Client is due for seasonal influenza vaccination":
  "Client is due for seasonal influenza vaccination Case 1"
    or "Client is due for seasonal influenza vaccination Case 2"

/*
@output: Client is due for seasonal influenza vaccination Guidance
@guidance = Should vaccinate client with first seasonal influenza dose as no seasonal infuenza doses were administered and client is within appropriate age range. 
Check for contraindications.
@guidance = Should vaccinate client with second seasonal influenza dose as client is within appropriate age range and latest seasonal influenza dose was administerered more than 4 weeks ago.
Check for contraindications.
*/
define "Client is due for seasonal influenza vaccination Guidance":
  case
    when "Client is due for seasonal influenza vaccination Case 1" then 'Should vaccinate client with first seasonal influenza dose as no seasonal infuenza doses were administered and client is within appropriate age range. 
Check for contraindications.'
    when "Client is due for seasonal influenza vaccination Case 2" then 'Should vaccinate client with second seasonal influenza dose as client is within appropriate age range and latest seasonal influenza dose was administerered more than 4 weeks ago.
Check for contraindications.'
    else ''
  end

/*
@output: The primary series is complete. Client is not due for seasonal influenza annual dose Case 1
@pseudocode: "Immunization recommendation status" = "Not due"
"Completed the primary vaccination series" (where "Vaccine type" = "Seasonal influenza vaccines") = TRUE
*/
define "The primary series is complete. Client is not due for seasonal influenza annual dose Case 1":
  Encounter."One seasonal influenza primary series doses were administered"
    and Encounter."Client's age is more than or equal to 9 years"
    and Encounter."The latest seasonal influenza dose was administered less than 1 year ago"

/*
@output: The primary series is complete. Client is not due for seasonal influenza annual dose Case 2
@pseudocode: "Immunization recommendation status" = "Not due"
"Completed the primary vaccination series" (where "Vaccine type" = "Seasonal influenza vaccines") = TRUE
*/
define "The primary series is complete. Client is not due for seasonal influenza annual dose Case 2":
  Encounter."Two seasonal influenza primary series doses were administered"
    and Encounter."The latest seasonal influenza dose was administered less than 1 year ago"

/*
@output: The primary series is complete. Client is not due for seasonal influenza annual dose
@pseudocode: "Immunization recommendation status" = "Not due"
"Completed the primary vaccination series" (where "Vaccine type" = "Seasonal influenza vaccines") = TRUE
*/
define "The primary series is complete. Client is not due for seasonal influenza annual dose":
  "The primary series is complete. Client is not due for seasonal influenza annual dose Case 1"
    or "The primary series is complete. Client is not due for seasonal influenza annual dose Case 2"

/*
@output: The primary series is complete. Client is not due for seasonal influenza annual dose Guidance
@guidance = Should not vaccinate client with annual dose as the latest seasonal influenza dose was administered less than 1 year ago. 
Check for any other vaccines due and inform the caregiver of when to come back for the next dose.
@guidance = Should not vaccinate client with annual dose as latest seasonal influenza dose was administered less than 1 year ago. 
Check for any other vaccines due and inform the caregiver of when to come back for the next dose.
*/
define "The primary series is complete. Client is not due for seasonal influenza annual dose Guidance":
  case
    when "The primary series is complete. Client is not due for seasonal influenza annual dose Case 1" then 'Should not vaccinate client with annual dose as the latest seasonal influenza dose was administered less than 1 year ago. 
Check for any other vaccines due and inform the caregiver of when to come back for the next dose.'
    when "The primary series is complete. Client is not due for seasonal influenza annual dose Case 2" then 'Should not vaccinate client with annual dose as latest seasonal influenza dose was administered less than 1 year ago. 
Check for any other vaccines due and inform the caregiver of when to come back for the next dose.'
    else ''
  end

/*
@output: The primary series is complete. Client is due for seasonal influenza annual dose Case 1
@pseudocode: "Immunization recommendation status" = "Due"
"Completed the primary vaccination series" (where "Vaccine type" = "Seasonal influenza vaccines") = TRUE
*/
define "The primary series is complete. Client is due for seasonal influenza annual dose Case 1":
  Encounter."One seasonal influenza primary series doses were administered"
    and Encounter."Client's age is more than or equal to 9 years"
    and Encounter."The latest seasonal influenza dose was administered more than 1 year ago"

/*
@output: The primary series is complete. Client is due for seasonal influenza annual dose Case 2
@pseudocode: "Immunization recommendation status" = "Due"
"Completed the primary vaccination series" (where "Vaccine type" = "Seasonal influenza vaccines") = TRUE
*/
define "The primary series is complete. Client is due for seasonal influenza annual dose Case 2":
  Encounter."Two seasonal influenza primary series doses were administered"
    and Encounter."The latest seasonal influenza dose was administered more than 1 year ago"

/*
@output: The primary series is complete. Client is due for seasonal influenza annual dose
@pseudocode: "Immunization recommendation status" = "Due"
"Completed the primary vaccination series" (where "Vaccine type" = "Seasonal influenza vaccines") = TRUE
*/
define "The primary series is complete. Client is due for seasonal influenza annual dose":
  "The primary series is complete. Client is due for seasonal influenza annual dose Case 1"
    or "The primary series is complete. Client is due for seasonal influenza annual dose Case 2"

/*
@output: The primary series is complete. Client is due for seasonal influenza annual dose Guidance
@guidance = Should vaccinate client with annual dose as the latest seasonal influenza dose was administered more than 1 year ago. 
Check for contraindications.
@guidance = Should vaccinate client with annual dose as latest seasonal influenza dose was administered more than 1 year ago. 
Check for contraindications.
*/
define "The primary series is complete. Client is due for seasonal influenza annual dose Guidance":
  case
    when "The primary series is complete. Client is due for seasonal influenza annual dose Case 1" then 'Should vaccinate client with annual dose as the latest seasonal influenza dose was administered more than 1 year ago. 
Check for contraindications.'
    when "The primary series is complete. Client is due for seasonal influenza annual dose Case 2" then 'Should vaccinate client with annual dose as latest seasonal influenza dose was administered more than 1 year ago. 
Check for contraindications.'
    else ''
  end


/*
@test: Test expected results based on example patients
*/
define "Test Validation":
  case
    when Patient.id = 'Seasonalinfluenza08.1' then "Client is not due for seasonal influenza vaccination Case 1" and "Guidance" = 'Should not vaccinate client with first seasonal influenza dose as client\'s age is less than 6 months. 
Check for any other vaccines due and inform the caregiver of when to come back for first dose.'
    when Patient.id = 'Seasonalinfluenza09.2' then "Client is due for seasonal influenza vaccination Case 1" and "Guidance" = 'Should vaccinate client with first seasonal influenza dose as no seasonal infuenza doses were administered and client is within appropriate age range. 
Check for contraindications.'
    when Patient.id = 'Seasonalinfluenza10.3' then "Client is not due for seasonal influenza vaccination Case 2" and "Guidance" = 'Should not vaccinate client with second seasonal influenza dose as latest seasonal influenza dose was administered less than 4 weeks ago. 
Check for any other vaccines due and inform the caregiver of when to come back for the second dose.'
    when Patient.id = 'Seasonalinfluenza11.3' then "Client is due for seasonal influenza vaccination Case 2" and "Guidance" = 'Should vaccinate client with second seasonal influenza dose as client is within appropriate age range and latest seasonal influenza dose was administerered more than 4 weeks ago.
Check for contraindications.'
    when Patient.id = 'Seasonalinfluenza12.3' then "The primary series is complete. Client is not due for seasonal influenza annual dose Case 1" and "Guidance" = 'Should not vaccinate client with annual dose as the latest seasonal influenza dose was administered less than 1 year ago. 
Check for any other vaccines due and inform the caregiver of when to come back for the next dose.'
    when Patient.id = 'Seasonalinfluenza13.3' then "The primary series is complete. Client is due for seasonal influenza annual dose Case 1" and "Guidance" = 'Should vaccinate client with annual dose as the latest seasonal influenza dose was administered more than 1 year ago. 
Check for contraindications.'
    when Patient.id = 'Seasonalinfluenza14.2' then "The primary series is complete. Client is not due for seasonal influenza annual dose Case 2" and "Guidance" = 'Should not vaccinate client with annual dose as latest seasonal influenza dose was administered less than 1 year ago. 
Check for any other vaccines due and inform the caregiver of when to come back for the next dose.'
    when Patient.id = 'Seasonalinfluenza15.2' then "The primary series is complete. Client is due for seasonal influenza annual dose Case 2" and "Guidance" = 'Should vaccinate client with annual dose as latest seasonal influenza dose was administered more than 1 year ago. 
Check for contraindications.'
    else 'No test case set'
  end
Content: application/elm+xml
Encoded data (114928 characters)