Id: IMMZD2DTSeasonalinfluenzaSeasonalInfluenza Url: IMMZ.D2.DT.Seasonal influenza Version: 0.2.0 Title: IMMZ.D2.DT.Seasonal influenza Status: draft Type: system: http://terminology.hl7.org/CodeSystem/plan-definition-type code: eca-rule Date: 2026-03-25 23:30:34+0000 Publisher: WHO Description: IMMZ.D2.DT.Seasonal influenza Inactivated trivalent and quadrivalent vaccines, 2-dose schedule Knowledge Capability: computable Related Artifacts: References WHO recommendations for routine immunization - summary tables (January 2025) Libraries: IMMZD2DTSeasonalinfluenzaSeasonalInfluenzaLogic Actions: Determine if the client is due for Seasonal influenza.: Determine if the client is due for Seasonal influenza vaccine according to the national immunization protocol. Inactivated trivalent and quadrivalent vaccines, 2-dose schedule If: Applicability: Client is due for seasonal influenza vaccination (Client is due for seasonal influenza vaccination) Then: Definition: IMMZD2DTMR Dynamic Values: status: ('draft') intent: ('proposal') medication: (Concept { codes: { Code { system: 'http://smart.who.int/immunizations/CodeSystem/IMMZ.Z', code: 'DE18', display: 'Seasonal influenza vaccines' } }, display: 'Seasonal influenza vaccines' }) Determine if the client is due for Seasonal influenza.: Determine if the client is due for Seasonal influenza vaccine according to the national immunization protocol. Inactivated trivalent and quadrivalent vaccines, 2-dose schedule If: Applicability: 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) Then: Definition: IMMZD2DTMR Dynamic Values: status: ('draft') intent: ('proposal') medication: (Concept { codes: { Code { system: 'http://smart.who.int/immunizations/CodeSystem/IMMZ.Z', code: 'DE18', display: 'Seasonal influenza vaccines' } }, display: 'Seasonal influenza vaccines' }) Check for Guidance for the patient regarding IMMZ.D2.DT.Seasonal influenza.: Show Guidance for the patient regarding IMMZ.D2.DT.Seasonal influenza. If: Applicability: Has Guidance (Has Guidance) Then: Definition: IMMZ.D2.DT.CR Dynamic Values: status: ('active') payload.contentString: (Guidance) category.coding: (Code { system: 'http://terminology.hl7.org/CodeSystem/communication-category', code: 'alert' }) priority: (Code { system: 'http://hl7.org/fhir/request-priority', code: 'routine' })
/** * @dataElement Patient age in months */ define "Current Patient Age In Months": AgeInMonthsAt(Today)
/* @input: Client's age is less than 6 months @pseudocode: Today's date − "Date of birth" < 6 months @code: Client's age is less than 6 months-41 @decision: IMMZ.D2.DT.Seasonal influenza: Inactivated trivalent and quadrivalent vaccines, 2-dose schedule */ define "Client's age is less than 6 months": Encounter."Current Patient Age In Months" < 6
Client is not due for seasonal influenza vaccination Case 1
/* @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"
/** * @dataElement All Doses Administered to Patient */ define "Doses Administered to Patient": [Immunization] I where I.status = 'completed' and I.isSubpotent is not true
/** * @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
Seasonal influenza Doses Administered to Patient
/* @internal: Seasonal influenza containing Doses Administered to Patient */ define "Seasonal influenza Doses Administered to Patient": Encounter."Doses Administered to Patient" I where I.vaccineCode in Concepts."Seasonal influenza vaccines"
Seasonal influenza Primary Series Doses Administered to Patient
/* @internal: Seasonal influenza containing Doses Administered to Patient that are in the Primary series */ define "Seasonal influenza Primary Series Doses Administered to Patient": "Seasonal influenza Doses Administered to Patient".seriesPrimary()
Number of Seasonal influenza Primary Series Doses Administered
/* @internal: Number of Seasonal influenza Primary Series doses */ define "Number of Seasonal influenza Primary Series Doses Administered": Count("Seasonal influenza Primary Series Doses Administered to Patient")
One seasonal influenza primary series doses were administered
/* @input: One seasonal influenza primary series doses were administered @pseudocode: Count of vaccines administered (where "Vaccine type" = "Seasonal influenza vaccines" and "Type of dose" = "Primary series") = 1 @code: One seasonal influenza primary series doses were administered-127 @decision: IMMZ.D2.DT.Seasonal influenza: Inactivated trivalent and quadrivalent vaccines, 2-dose schedule */ define "One seasonal influenza primary series doses were administered": "Number of Seasonal influenza Primary Series Doses Administered" = 1
/** * @dataElement Patient age in years */ define "Current Patient Age In Years": AgeInYearsAt(Today)
/* @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.Seasonal influenza: Inactivated trivalent and quadrivalent vaccines, 2-dose schedule */ define "Client's age is less than 9 years": Encounter."Current Patient Age In Years" < 9
/* @internal: Date of Latest Seasonal influenza Dose */ define "Date of Latest Seasonal influenza Dose": date from start of "Seasonal influenza Doses Administered to Patient".mostRecent().occurrence.toInterval()
The latest seasonal influenza dose was administered less than 4 weeks ago
/* @input: The latest seasonal influenza dose was administered less than 4 weeks ago @pseudocode: Today's date − "Date and time of vaccination" (where "Vaccine type" = "Seasonal influenza vaccines") < 4 weeks @code: The latest seasonal influenza dose was administered less than 4 weeks ago-110 @decision: IMMZ.D2.DT.Seasonal influenza: Inactivated trivalent and quadrivalent vaccines, 2-dose schedule */ define "The latest seasonal influenza dose was administered less than 4 weeks ago": "Date of Latest Seasonal influenza Dose" is not null and duration in weeks between "Date of Latest Seasonal influenza Dose" and Today < 4
Client is not due for seasonal influenza vaccination Case 2
/* @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"
Client is not due for seasonal influenza vaccination
/* @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"
Client is not due for seasonal influenza vaccination Guidance
/* @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
No seasonal influenza primary series doses were administered
/* @input: No seasonal influenza primary series doses were administered @pseudocode: Count of vaccines administered (where "Vaccine type" = "Seasonal influenza vaccines" and "Type of dose" = "Primary series") = 0 @code: No seasonal influenza primary series doses were administered-127 @decision: IMMZ.D2.DT.Seasonal influenza: Inactivated trivalent and quadrivalent vaccines, 2-dose schedule */ define "No seasonal influenza primary series doses were administered": "Number of Seasonal influenza Primary Series Doses Administered" = 0
Client's age is more than or equal to 6 months
/* @input: Client's age is more than or equal to 6 months @pseudocode: Today's date − "Date of birth" ≥ 6 months @code: Client's age is more than or equal to 6 months-41 @decision: IMMZ.D2.DT.Seasonal influenza: Inactivated trivalent and quadrivalent vaccines, 2-dose schedule */ define "Client's age is more than or equal to 6 months": Encounter."Current Patient Age In Months" >= 6
Client is due for seasonal influenza vaccination Case 1
/* @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"
The latest seasonal influenza dose was administered more than 4 weeks ago
/* @input: The latest seasonal influenza dose was administered more than 4 weeks ago @pseudocode: Today's date − "Date and time of vaccination" (where "Vaccine type" = "Seasonal influenza vaccines") ≥ 4 weeks @code: The latest seasonal influenza dose was administered more than 4 weeks ago-110 @decision: IMMZ.D2.DT.Seasonal influenza: Inactivated trivalent and quadrivalent vaccines, 2-dose schedule */ define "The latest seasonal influenza dose was administered more than 4 weeks ago": not "The latest seasonal influenza dose was administered less than 4 weeks ago"
Client is due for seasonal influenza vaccination Case 2
/* @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"
Client is due for seasonal influenza vaccination
/* @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"
Client is due for seasonal influenza vaccination Guidance
/* @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
Client's age is more than or equal to 9 years
/* @input: Client's age is more than or equal to 9 years @pseudocode: Today's date − "Date of birth" ≥ 9 years @code: Client's age is more than or equal to 9 years-40 @decision: IMMZ.D2.DT.Seasonal influenza: Inactivated trivalent and quadrivalent vaccines, 2-dose schedule */ define "Client's age is more than or equal to 9 years": Encounter."Current Patient Age In Years" >= 9
The latest seasonal influenza dose was administered less than 1 year ago
/* @input: The latest seasonal influenza dose was administered less than 1 year ago @pseudocode: Today's date − "Date and time of vaccination" (where "Vaccine type" = "Seasonal influenza vaccines") < 1 year @code: The latest seasonal influenza dose was administered less than 1 year ago-109 @decision: IMMZ.D2.DT.Seasonal influenza: Inactivated trivalent and quadrivalent vaccines, 2-dose schedule */ define "The latest seasonal influenza dose was administered less than 1 year ago": "Date of Latest Seasonal influenza Dose" is not null and duration in years between "Date of Latest Seasonal influenza Dose" and Today < 1
The primary series is complete. Client is not due for seasonal influenza annual dose Case 1
/* @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"
Two seasonal influenza primary series doses were administered
/* @input: Two seasonal influenza primary series doses were administered @pseudocode: Count of vaccines administered (where "Vaccine type" = "Seasonal influenza vaccines" and "Type of dose" = "Primary series") = 2 @code: Two seasonal influenza primary series doses were administered-127 @decision: IMMZ.D2.DT.Seasonal influenza: Inactivated trivalent and quadrivalent vaccines, 2-dose schedule */ define "Two seasonal influenza primary series doses were administered": "Number of Seasonal influenza Primary Series Doses Administered" = 2
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 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"
The primary series is complete. Client is not due for seasonal influenza annual dose
/* @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"
The primary series is complete. Client is not due for seasonal influenza annual dose Guidance
/* @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
The latest seasonal influenza dose was administered more than 1 year ago
/* @input: The latest seasonal influenza dose was administered more than 1 year ago @pseudocode: Today's date − "Date and time of vaccination" (where "Vaccine type" = "Seasonal influenza vaccines") ≥ 1 year @code: The latest seasonal influenza dose was administered more than 1 year ago-109 @decision: IMMZ.D2.DT.Seasonal influenza: Inactivated trivalent and quadrivalent vaccines, 2-dose schedule */ define "The latest seasonal influenza dose was administered more than 1 year ago": not "The latest seasonal influenza dose was administered less than 1 year ago"
The primary series is complete. Client is due for seasonal influenza annual dose Case 1
/* @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"
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 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"
The primary series is complete. Client is due for seasonal influenza annual dose
/* @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"
The primary series is complete. Client is due for seasonal influenza annual dose Guidance
/* @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
/* @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" != ''
/** * @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' )
define function ToString(value string): value.value
define function ToString(value ImmunizationStatus): value.value
define function ToBoolean(value boolean): value.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 }
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 }
define fluent function mostRecent(immunizations List<Immunization>): Last( immunizations I sort by start of occurrence.toInterval() )
IMMZ.D2.DT.Seasonal influenza Inactivated trivalent and quadrivalent vaccines, 2-dose schedule
WHO recommendations for routine immunization - summary tables (January 2025)
Influenza vaccines are safe and effective in children from 6 months of age. Children aged under 6 months can be protected through maternal immunization during pregnancy. Children aged 6 months to 8 years should receive 2 doses at least 4 weeks apart. A single dose is appropriate for those ≥ 9 years of age and healthy adults. Children aged 6 months to 8 years should receive 2 doses at least 4 weeks apart.
Determine if the client is due for Seasonal influenza.
Determine if the client is due for Seasonal influenza vaccine according to the national immunization protocol. Inactivated trivalent and quadrivalent vaccines, 2-dose schedule
Concept { codes: { Code { system: 'http://smart.who.int/immunizations/CodeSystem/IMMZ.Z', code: 'DE18', display: 'Seasonal influenza vaccines' } }, display: 'Seasonal influenza vaccines' }
A single dose is appropriate for children aged ≥ 9 years and healthy adults. Those who have previously been vaccinated at least once should subsequently receive an annual dose, as should children and adolescents aged 9 years or over and healthy adults.
Check for Guidance for the patient regarding IMMZ.D2.DT.Seasonal influenza.
Show Guidance for the patient regarding IMMZ.D2.DT.Seasonal influenza.
Code { system: 'http://terminology.hl7.org/CodeSystem/communication-category', code: 'alert' }
Code { system: 'http://hl7.org/fhir/request-priority', code: 'routine' }