Id: IMMZD18SHib3DosesWithBoosterDose Url: IMMZ.D18.S.Hib.3 doses with booster dose schedule Version: 0.2.0 Title: IMMZ.D18.S.Hib.3 doses with booster dose schedule Status: draft Type: system: http://terminology.hl7.org/CodeSystem/plan-definition-type code: eca-rule Date: 2026-03-03 13:07:11+0000 Publisher: WHO Description: IMMZ.D18.S.Hib.3 doses with booster dose schedule 3 primary doses with a booster dose (3p+1) schedule Knowledge Capability: computable Related Artifacts: References WHO recommendations for routine immunization - summary tables (January 2025) Libraries: IMMZD18SHib3DosesWithBoosterDoseLogic Actions: Haemophilus influenzae type b (Hib) dose 1: Provision of the Hib dose 1 Trigger event: Child's birth Trigger pseudo: Trigger date: "Date of birth" Create condition: Immunization should start from 6 weeks of age, or as early as possible thereafter. Hib-containing vaccine is not required for healthy children aged over 5 years. If: Applicability: Haemophilus influenzae type b (Hib) dose 1 (Haemophilus influenzae type b (Hib) dose 1) Then: Definition: IMMZ.D2.DT.CR Dynamic Values: status: ('active') payload.contentString: (Haemophilus influenzae type b (Hib) dose 1 Create) category.coding: (Code { system: 'http://terminology.hl7.org/CodeSystem/communication-category', code: 'alert' }) priority: (Code { system: 'http://hl7.org/fhir/request-priority', code: 'routine' }) Hib dose 2: Provision of the Hib dose 2 Trigger event: First Hib dose from the primary series was administered to the client within 1 year of age. Client's age is less than 5 years Trigger pseudo: Count of vaccines administered (where "Vaccine type" = "Hib-containing vaccines" and "Type of dose" = "Primary series") = 1 AND "Date and time of vaccination" (where "Vaccine type"= "Hib-containing vaccines" and "Dose number" = 1) − "Date of birth" < 1 year AND Today's date − "Date of birth" ≤ 5 years Trigger date: "Date and time of vaccination" (where "Vaccine type" = "Hib-containing vaccines") Create condition: Hib dose 2 should be provided if the client was given the previous dose more than 4 weeks ago and the first Hib dose was received by the time the child turned 1 year old If: Applicability: Hib dose 2 (Hib dose 2) Then: Definition: IMMZ.D2.DT.CR Dynamic Values: status: ('active') payload.contentString: (Hib dose 2 Create) category.coding: (Code { system: 'http://terminology.hl7.org/CodeSystem/communication-category', code: 'alert' }) priority: (Code { system: 'http://hl7.org/fhir/request-priority', code: 'routine' }) Hib dose 3: Provision of the Hib dose 3 Trigger event: Second Hib dose from the primary series was administered. Client's age is less than 5 years Trigger pseudo: Count of vaccines administered (where "Vaccine type" = "Hib-containing vaccines" and "Type of dose"= "Primary series") = 2 AND Today's date − "Date of birth" ≤ 5 years Trigger date: Latest "Date and time of vaccination" (where "Vaccine type" = "Hib-containing vaccines") Create condition: Hib dose 3 should be provided if the client was given the previous dose more than 4 weeks ago and the first Hib dose was received by the time the child turned 1 year old If: Applicability: Hib dose 3 (Hib dose 3) Then: Definition: IMMZ.D2.DT.CR Dynamic Values: status: ('active') payload.contentString: (Hib dose 3 Create) category.coding: (Code { system: 'http://terminology.hl7.org/CodeSystem/communication-category', code: 'alert' }) priority: (Code { system: 'http://hl7.org/fhir/request-priority', code: 'routine' }) Hib booster dose: Provision of the Hib booster dose Trigger event: Third Hib dose from the primary series was administered. Child's age is less than 5 years Trigger pseudo: Count of vaccines administered (where "Vaccine type" = "Hib-containing vaccines" and "Type of dose"= "Primary series") = 3 AND Today's date − "Date of birth" ≤ 5 years Trigger date: Latest "Date and time of vaccination" (where "Vaccine type" = "Hib-containing vaccines") Create condition: Hib booster dose should be provided if the client was given the previous dose more than 6 months ago and the first Hib dose was received by the time the child turned 1 year old If: Applicability: Hib booster dose (Hib booster dose) Then: Definition: IMMZ.D2.DT.CR Dynamic Values: status: ('active') payload.contentString: (Hib booster dose Create) 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 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
/* @internal: Hib containing Doses Administered to Patient */ define "Hib Doses Administered to Patient": Encounter."Doses Administered to Patient" I where I.vaccineCode in Concepts."Hib-containing vaccines"
Hib Primary Series Doses Administered to Patient
/* @internal: Hib containing Doses Administered to Patient that are in the Primary series */ define "Hib Primary Series Doses Administered to Patient": "Hib Doses Administered to Patient".seriesPrimary()
Number of Hib Primary Series Doses Administered
/* @internal: Number of Hib Primary Series doses */ define "Number of Hib Primary Series Doses Administered": Count("Hib Primary Series Doses Administered to Patient")
One Hib primary series dose was administered
/* @input: One Hib primary series dose was administered @pseudocode: Count of vaccines administered (where "Vaccine type" = "Hib-containing vaccines" and "Type of dose"= "Primary series") = 1 @code: One Hib primary series dose was administered-122 @decision: IMMZ.D2.DT.Hib.3 doses: 3 primary doses without a booster dose (3p) @decision: IMMZ.D2.DT.Hib.3 doses with booster dose: 3 primary doses with a booster dose (3p+1) */ define "One Hib primary series dose was administered": "Number of Hib Primary Series Doses Administered" = 1
First Hib dose from the primary series was administered
/* @complete: First Hib dose from the primary series was administered @pseudocode: Count of vaccines administered (where "Vaccine type" = "Hib-containing vaccines" and "Type of dose"= "Primary series") = 1 The primary series has been completed for delayed start "Completed the primary vaccination series" = TRUE (where "Vaccine type" = "Hib-containing vaccines") */ define "First Hib dose from the primary series was administered": Encounter."One Hib primary series dose was administered"
/* @internal: Date of First Hib Dose */ define "Date of First Hib Dose": date from start of "Hib Doses Administered to Patient".earliest().occurrence.toInterval()
Client's age was less than 1 year when first Hib dose was administered
/* @input: Client's age was less than 1 year when first Hib dose was administered @pseudocode: "Date and time of vaccination" (where "Vaccine type"= "Hib-containing vaccines" and "Dose number" = 1) − "Date of birth" < 1 year @code: Client's age was less than 1 year when first Hib dose was administered-129 @decision: IMMZ.D2.DT.Hib.3 doses: 3 primary doses without a booster dose (3p) @decision: IMMZ.D2.DT.Hib.3 doses with booster dose: 3 primary doses with a booster dose (3p+1) @decision: IMMZ.D2.DT.Hib.2 doses with booster dose: 2 primary doses with a booster dose (2p+1) */ define "Client's age was less than 1 year when first Hib dose was administered": AgeInYearsAt("Date of First Hib Dose") < 1
/** * @dataElement Patient age in weeks */ define "Current Patient Age In Weeks": AgeInWeeksAt(Today)
/** * @dataElement Patient age in years */ define "Current Patient Age In Years": AgeInYearsAt(Today)
Client's age is between 6 weeks and 5 years
/* @input: Client's age is between 6 weeks and 5 years @pseudocode: 6 weeks ≤ Today's date − "Date of birth" ≤ 5 years @code: Client's age is between 6 weeks and 5 years-50 @decision: IMMZ.D2.DT.Hib.3 doses: 3 primary doses without a booster dose (3p) @decision: IMMZ.D2.DT.Hib.3 doses with booster dose: 3 primary doses with a booster dose (3p+1) @decision: IMMZ.D2.DT.Hib.2 doses with booster dose: 2 primary doses with a booster dose (2p+1) */ define "Client's age is between 6 weeks and 5 years": 6 <= Encounter."Current Patient Age In Weeks" and Encounter."Current Patient Age In Years" <= 5
Two Hib primary series doses were administered
/* @input: Two Hib primary series doses were administered @pseudocode: Count of vaccines administered (where "Vaccine type" = "Hib-containing vaccines" and "Type of dose" = "Primary series" ) = 2 @code: Two Hib primary series doses were administered-124 @decision: IMMZ.D2.DT.Hib.3 doses: 3 primary doses without a booster dose (3p) @decision: IMMZ.D2.DT.Hib.3 doses with booster dose: 3 primary doses with a booster dose (3p+1) @decision: IMMZ.D2.DT.Hib.2 doses with booster dose: 2 primary doses with a booster dose (2p+1) */ define "Two Hib primary series doses were administered": "Number of Hib Primary Series Doses Administered" = 2
Second Hib dose from the primary series was administered
/* @complete: Second Hib dose from the primary series was administered @pseudocode: Count of vaccines administered (where "Vaccine type" = "Hib-containing vaccines" and "Type of dose"= "Primary series") = 2 */ define "Second Hib dose from the primary series was administered": Encounter."Two Hib primary series doses were administered"
/* @dynamicValue: Hib dose 2 Expiration @pseudocode: "Date of birth" + 6 years */ define "Hib dose 2 Expiration": Patient.birthDate + 6 years
/* @output: Hib dose 2 @description: Provision of the Hib dose 2 @trigger: First Hib dose from the primary series was administered to the client within 1 year of age. Client's age is less than 5 years @pseudo: Count of vaccines administered (where "Vaccine type" = "Hib-containing vaccines" and "Type of dose" = "Primary series") = 1 AND "Date and time of vaccination" (where "Vaccine type"= "Hib-containing vaccines" and "Dose number" = 1) − "Date of birth" < 1 year AND Today's date − "Date of birth" ≤ 5 years @triggerDate: "Date and time of vaccination" (where "Vaccine type" = "Hib-containing vaccines") */ define "Hib dose 2": "First Hib dose from the primary series was administered" and Encounter."Client's age was less than 1 year when first Hib dose was administered" and Encounter."Client's age is between 6 weeks and 5 years" and not "Second Hib dose from the primary series was administered" and "Hib dose 2 Expiration" after day of Today
Three Hib primary series doses were administered
/* @input: Three Hib primary series doses were administered @pseudocode: Count of vaccines administered (where "Vaccine type" = "Hib-containing vaccines" and "Type of dose"= "Primary series") = 3 @code: Three Hib primary series doses were administered-122 @decision: IMMZ.D2.DT.Hib.3 doses: 3 primary doses without a booster dose (3p) @decision: IMMZ.D2.DT.Hib.3 doses with booster dose: 3 primary doses with a booster dose (3p+1) */ define "Three Hib primary series doses were administered": "Number of Hib Primary Series Doses Administered" = 3
Third Hib dose from the primary series was administered. The primary series has been completed
/* @complete: Third Hib dose from the primary series was administered. The primary series has been completed @pseudocode: "Completed the primary vaccination series" = TRUE (where "Vaccine type" = "Hib-containing vaccines") */ define "Third Hib dose from the primary series was administered. The primary series has been completed": Encounter."Three Hib primary series doses were administered"
/* @dynamicValue: Hib dose 3 Expiration @pseudocode: "Date of birth" + 6 years */ define "Hib dose 3 Expiration": Patient.birthDate + 6 years
/* @output: Hib dose 3 @description: Provision of the Hib dose 3 @trigger: Second Hib dose from the primary series was administered. Client's age is less than 5 years @pseudo: Count of vaccines administered (where "Vaccine type" = "Hib-containing vaccines" and "Type of dose"= "Primary series") = 2 AND Today's date − "Date of birth" ≤ 5 years @triggerDate: Latest "Date and time of vaccination" (where "Vaccine type" = "Hib-containing vaccines") */ define "Hib dose 3": "Second Hib dose from the primary series was administered" and Encounter."Client's age is between 6 weeks and 5 years" and not "Third Hib dose from the primary series was administered. The primary series has been completed" and "Hib dose 3 Expiration" after day of Today
/* @internal: Date of Latest Hib Dose */ define "Date of Latest Hib Dose": date from start of "Hib Doses Administered to Patient".mostRecent().occurrence.toInterval()
/* @dynamicValue: Hib dose 3 Due Date @pseudocode: Latest "Date and time of vaccination" (where "Vaccine type" = "Hib-containing vaccines") + 4 weeks */ define "Hib dose 3 Due Date": if "Hib dose 3" then Encounter."Date of Latest Hib Dose" + 4 weeks else null
/* @output: Hib dose 3 Create @create: Hib dose 3 should be provided if the client was given the previous dose more than 4 weeks ago and the first Hib dose was received by the time the child turned 1 year old */ define "Hib dose 3 Create": if "Hib dose 3" then 'Hib dose 3 should be provided if the client was given the previous dose more than 4 weeks ago and the first Hib dose was received by the time the child turned 1 year old' + ' Due Date: ' + ToString("Hib dose 3 Due Date") + ' Expiration: ' + ToString("Hib dose 3 Expiration") else ''
/* @dynamicValue: Hib dose 2 Due Date @pseudocode: "Date and time of vaccination" (where "Vaccine type" = "Hib-containing vaccines") + 4 weeks */ define "Hib dose 2 Due Date": if "Hib dose 2" then Encounter."Date of Latest Hib Dose" + 4 weeks else null
/* @output: Hib dose 2 Create @create: Hib dose 2 should be provided if the client was given the previous dose more than 4 weeks ago and the first Hib dose was received by the time the child turned 1 year old */ define "Hib dose 2 Create": if "Hib dose 2" then 'Hib dose 2 should be provided if the client was given the previous dose more than 4 weeks ago and the first Hib dose was received by the time the child turned 1 year old' + ' Due Date: ' + ToString("Hib dose 2 Due Date") + ' Expiration: ' + ToString("Hib dose 2 Expiration") else ''
No Hib primary series doses were administered
/* @input: No Hib primary series doses were administered @pseudocode: Count of vaccines administered (where "Vaccine type" = "Hib-containing vaccines" and "Type of dose" = "Primary series") = 0 @code: No Hib primary series doses were administered-123 @decision: IMMZ.D2.DT.Hib.3 doses: 3 primary doses without a booster dose (3p) @decision: IMMZ.D2.DT.Hib.3 doses with booster dose: 3 primary doses with a booster dose (3p+1) @decision: IMMZ.D2.DT.Hib.2 doses with booster dose: 2 primary doses with a booster dose (2p+1) */ define "No Hib primary series doses were administered": "Number of Hib Primary Series Doses Administered" = 0
Haemophilus influenzae type b (Hib) dose 1 Expiration
/* @dynamicValue: Haemophilus influenzae type b (Hib) dose 1 Expiration @pseudocode: "Date of birth" + 6 years */ define "Haemophilus influenzae type b (Hib) dose 1 Expiration": Patient.birthDate + 6 years
Haemophilus influenzae type b (Hib) dose 1
/* @output: Haemophilus influenzae type b (Hib) dose 1 @description: Provision of the Hib dose 1 @trigger: Child's birth @pseudo: @triggerDate: "Date of birth" */ define "Haemophilus influenzae type b (Hib) dose 1": Encounter."No Hib primary series doses were administered" and "Haemophilus influenzae type b (Hib) dose 1 Expiration" after day of Today
Haemophilus influenzae type b (Hib) dose 1 Due Date
/* @dynamicValue: Haemophilus influenzae type b (Hib) dose 1 Due Date @pseudocode: "Date of birth" + 6 weeks */ define "Haemophilus influenzae type b (Hib) dose 1 Due Date": if "Haemophilus influenzae type b (Hib) dose 1" then Patient.birthDate + 6 weeks else null
Haemophilus influenzae type b (Hib) dose 1 Create
/* @output: Haemophilus influenzae type b (Hib) dose 1 Create @create: Immunization should start from 6 weeks of age, or as early as possible thereafter. Hib-containing vaccine is not required for healthy children aged over 5 years. */ define "Haemophilus influenzae type b (Hib) dose 1 Create": if "Haemophilus influenzae type b (Hib) dose 1" then 'Immunization should start from 6 weeks of age, or as early as possible thereafter. Hib-containing vaccine is not required for healthy children aged over 5 years.' + ' Due Date: ' + ToString("Haemophilus influenzae type b (Hib) dose 1 Due Date") + ' Expiration: ' + ToString("Haemophilus influenzae type b (Hib) dose 1 Expiration") else ''
Hib Booster Series Doses Administered to Patient
/* @internal: Hib Booster Series Doses Administered to Patient */ define "Hib Booster Series Doses Administered to Patient": "Hib Doses Administered to Patient".seriesBooster()
Number of Hib Booster Series Doses Administered
/* @internal: Number of Hib Booster Series Doses Administered */ define "Number of Hib Booster Series Doses Administered": Count("Hib Booster Series Doses Administered to Patient")
/* @input: One Hib booster dose was administered @pseudocode: Count of vaccines administered where "Vaccine type" = "Hib-containing vaccines" and "Type of dose" = "Booster dose") = 1 @code: One Hib booster dose was administered-120 @decision: IMMZ.D2.DT.Hib.3 doses with booster dose: 3 primary doses with a booster dose (3p+1) @decision: IMMZ.D2.DT.Hib.2 doses with booster dose: 2 primary doses with a booster dose (2p+1) */ define "One Hib booster dose was administered": "Number of Hib Booster Series Doses Administered" = 1
One Hib booster dose was administered. Hib immunization schedule has been completed
/* @complete: One Hib booster dose was administered. Hib immunization schedule has been completed @pseudocode: Count of vaccines administered (where "Vaccine type" = "Hib-containing vaccines" and "Type of dose"= "Booster dose") = 1 */ define "One Hib booster dose was administered. Hib immunization schedule has been completed": Encounter."One Hib booster dose was administered"
/* @dynamicValue: Hib booster dose Expiration @pseudocode: "Date of birth" + 6 years */ define "Hib booster dose Expiration": Patient.birthDate + 6 years
/* @output: Hib booster dose @description: Provision of the Hib booster dose @trigger: Third Hib dose from the primary series was administered. Child's age is less than 5 years @pseudo: Count of vaccines administered (where "Vaccine type" = "Hib-containing vaccines" and "Type of dose"= "Primary series") = 3 AND Today's date − "Date of birth" ≤ 5 years @triggerDate: Latest "Date and time of vaccination" (where "Vaccine type" = "Hib-containing vaccines") */ define "Hib booster dose": "Third Hib dose from the primary series was administered. The primary series has been completed" and Encounter."Client's age is between 6 weeks and 5 years" and not "One Hib booster dose was administered. Hib immunization schedule has been completed" and "Hib booster dose Expiration" after day of Today
/* @dynamicValue: Hib booster dose Due Date @pseudocode: Latest "Date and time of vaccination" (where "Vaccine type" = "Hib-containing vaccines") + 6 months */ define "Hib booster dose Due Date": if "Hib booster dose" then Encounter."Date of Latest Hib Dose" + 6 months else null
/* @output: Hib booster dose Create @create: Hib booster dose should be provided if the client was given the previous dose more than 6 months ago and the first Hib dose was received by the time the child turned 1 year old */ define "Hib booster dose Create": if "Hib booster dose" then 'Hib booster dose should be provided if the client was given the previous dose more than 6 months ago and the first Hib dose was received by the time the child turned 1 year old' + ' Due Date: ' + ToString("Hib booster dose Due Date") + ' Expiration: ' + ToString("Hib booster dose Expiration") else ''
/** * @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 earliest(immunizations List<Immunization>): First( immunizations I sort by start of occurrence.toInterval() )
define function ToDate(value date): value.value
define fluent function mostRecent(immunizations List<Immunization>): Last( immunizations I sort by start of occurrence.toInterval() )
/** * @description: Gets the doses from the Booster series */ define fluent function seriesBooster(immunizations List<Immunization>): immunizations I where exists( I.protocolApplied pa where pa.series = 'Booster dose' )
IMMZ.D18.S.Hib.3 doses with booster dose schedule
IMMZ.D18.S.Hib.3 doses with booster dose schedule 3 primary doses with a booster dose (3p+1) schedule
WHO recommendations for routine immunization - summary tables (January 2025)
Provision of the Hib dose 1 Trigger event: Child's birth Trigger pseudo: Trigger date: "Date of birth" Create condition: Immunization should start from 6 weeks of age, or as early as possible thereafter. Hib-containing vaccine is not required for healthy children aged over 5 years.
Code { system: 'http://terminology.hl7.org/CodeSystem/communication-category', code: 'alert' }
Code { system: 'http://hl7.org/fhir/request-priority', code: 'routine' }
Provision of the Hib dose 2 Trigger event: First Hib dose from the primary series was administered to the client within 1 year of age. Client's age is less than 5 years Trigger pseudo: Count of vaccines administered (where "Vaccine type" = "Hib-containing vaccines" and "Type of dose" = "Primary series") = 1 AND "Date and time of vaccination" (where "Vaccine type"= "Hib-containing vaccines" and "Dose number" = 1) − "Date of birth" < 1 year AND Today's date − "Date of birth" ≤ 5 years Trigger date: "Date and time of vaccination" (where "Vaccine type" = "Hib-containing vaccines") Create condition: Hib dose 2 should be provided if the client was given the previous dose more than 4 weeks ago and the first Hib dose was received by the time the child turned 1 year old
Provision of the Hib dose 3 Trigger event: Second Hib dose from the primary series was administered. Client's age is less than 5 years Trigger pseudo: Count of vaccines administered (where "Vaccine type" = "Hib-containing vaccines" and "Type of dose"= "Primary series") = 2 AND Today's date − "Date of birth" ≤ 5 years Trigger date: Latest "Date and time of vaccination" (where "Vaccine type" = "Hib-containing vaccines") Create condition: Hib dose 3 should be provided if the client was given the previous dose more than 4 weeks ago and the first Hib dose was received by the time the child turned 1 year old
Provision of the Hib booster dose Trigger event: Third Hib dose from the primary series was administered. Child's age is less than 5 years Trigger pseudo: Count of vaccines administered (where "Vaccine type" = "Hib-containing vaccines" and "Type of dose"= "Primary series") = 3 AND Today's date − "Date of birth" ≤ 5 years Trigger date: Latest "Date and time of vaccination" (where "Vaccine type" = "Hib-containing vaccines") Create condition: Hib booster dose should be provided if the client was given the previous dose more than 6 months ago and the first Hib dose was received by the time the child turned 1 year old