Id: IMMZD18SCholeraWCRBSVaccine2Doses Url: IMMZ.D18.S.Cholera.WC-rBS vaccine 2-dose schedule Version: 0.2.0 Title: IMMZ.D18.S.Cholera.WC-rBS vaccine 2-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.Cholera.WC-rBS vaccine 2-dose schedule Whole cell-recombinant B subunit (WC-rBS) vaccine (Dukoral), 2-dose schedule for clients aged ≥ 6 years Knowledge Capability: computable Related Artifacts: References WHO recommendations for routine immunization - summary tables (January 2025) Libraries: IMMZD18SCholeraWCRBSVaccine2DosesLogic Actions: Cholera dose 1: Provision of the cholera dose 1 Trigger event: Child's birth Trigger pseudo: Count of vaccines administered (where "Vaccine type" = "Cholera vaccines") = 0 AND (Today's date − "Date of birth" ≥ 6 years) OR Primary series interrupted for 6 or more weeks "Completed the primary vaccination series" (where "Vaccine type" = "Cholera vaccines") = FALSE AND Today's date − latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") ≥ 6 weeks AND (Today's date − "Date of birth" ≥ 6 years) OR more than 6 months have passed since completion of primary vaccination series "Completed the primary vaccination series" (where "Vaccine type" = "Cholera vaccines") = TRUE AND Today's date − latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") > 2 years AND (Today's date − "Date of birth" ≥ 6 years) Trigger date: "Date of birth" OR Latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") Create condition: For WC-rBS vaccine (Dukoral), 2 doses should be given to children aged ≥ 6 years and adults, with an interval of 1–6 weeks between doses. If the interval since the last dose ≥ 6 weeks, restart the primary series. Revaccination for those aged ≥ 6 years: If more than 2 years have passed since completion of primary vaccination series, the primary series of 2 doses should be repeated. If: Applicability: Cholera dose 1 (Cholera dose 1) Then: Definition: IMMZ.D2.DT.CR Dynamic Values: status: ('active') payload.contentString: (Cholera 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' }) Cholera dose 2: Provision of the cholera dose 2 Trigger event: First cholera dose was administered Trigger pseudo: Latest "Dose number" (where "Vaccine type" = "Cholera vaccines") = 1 AND (Today's date − "Date of birth" ≥ 6 years) Trigger date: Latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") Create condition: For WC-rBS vaccine (Dukoral) 2 doses should be given to children aged ≥6 years and adults, with an interval of 1-6 weeks between doses. If: Applicability: Cholera dose 2 (Cholera dose 2) Then: Definition: IMMZ.D2.DT.CR Dynamic Values: status: ('active') payload.contentString: (Cholera 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' }) Cholera booster dose: Provision of the cholera booster dose Trigger event: Primary series for cholera has been completed and latest cholera dose was administered approximately less than 2 years ago Trigger pseudo: "Completed the primary vaccination series" (where "Vaccine type" = "Cholera vaccines") = TRUE AND Today's date − latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") ≤ 2 years ± Member States defined interval AND (Today's date − "Date of birth" ≥ 6 years) Trigger date: Latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") Create condition: For WC-rBS vaccine, for those aged ≥ 6 years of age, if less than 2 years have passed since completion of primary vaccination series, 1 dose for revaccination. If: Applicability: Cholera booster dose (Cholera booster dose) Then: Definition: IMMZ.D2.DT.CR Dynamic Values: status: ('active') payload.contentString: (Cholera 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 Patient age in years */ define "Current Patient Age In Years": AgeInYearsAt(Today)
/* @input: Client's age is more than 5 years @pseudocode: Today's date − "Date of birth" > 5 years @code: Client's age is more than 5 years-40 @decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 2 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 2-dose schedule for clients aged over 5 years */ define "Client's age is more than 5 years": Encounter."Current Patient Age In Years" > 5
/** * @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: Cholera containing Doses Administered to Patient */ define "Cholera Doses Administered to Patient": Encounter."Doses Administered to Patient" I where I.vaccineCode in Concepts."Cholera vaccines"
/* @internal: Date of Latest Cholera Dose */ define "Date of Latest Cholera Dose": date from start of "Cholera Doses Administered to Patient".mostRecent().occurrence.toInterval()
/* @dynamicValue: Cholera dose 2 Expiration @pseudocode: Latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") + 6 weeks */ define "Cholera dose 2 Expiration": Encounter."Date of Latest Cholera Dose" + 6 weeks
Cholera Primary Series Doses Administered to Patient
/* @internal: Cholera containing Doses Administered to Patient that are in the Primary series */ define "Cholera Primary Series Doses Administered to Patient": "Cholera Doses Administered to Patient".seriesPrimary()
Dose number of the latest primary series dose is one
/* @input: Dose number of the latest primary series dose is one @pseudocode: Latest "Dose number" (where "Vaccine type" = "Cholera vaccines" and "Type of dose" = "Primary series") = 1 @code: Dose number of the latest primary series dose is one-106 @decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 3 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 3-dose schedule for clients aged 2–5 years @decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 2 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 2-dose schedule for clients aged over 5 years */ define "Dose number of the latest primary series dose is one": "Cholera Primary Series Doses Administered to Patient".mostRecent().getDose('1') is not null
/* @complete: First cholera dose was administered @pseudocode: Latest "Dose number" (where "Vaccine type" = "Cholera vaccines") = 1 */ define "First cholera dose was administered": Encounter."Dose number of the latest primary series dose is one"
Dose number of the latest primary series dose is two
/* @input: Dose number of the latest primary series dose is two @pseudocode: Latest "Dose number" (where "Vaccine type" = "Cholera vaccines" and "Type of dose" = "Primary series") = 2 @code: Dose number of the latest primary series dose is two-106 @decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 3 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 3-dose schedule for clients aged 2–5 years */ define "Dose number of the latest primary series dose is two": "Cholera Primary Series Doses Administered to Patient".mostRecent().getDose('2') is not null
/* @complete: Second cholera dose was administered @pseudocode: Latest "Dose number" (where "Vaccine type" = "Cholera vaccines") = 2 */ define "Second cholera dose was administered": Encounter."Dose number of the latest primary series dose is two"
/* @output: Cholera dose 2 @description: Provision of the cholera dose 2 @trigger: First cholera dose was administered @pseudo: Latest "Dose number" (where "Vaccine type" = "Cholera vaccines") = 1 AND (Today's date − "Date of birth" ≥ 6 years) @triggerDate: Latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") */ define "Cholera dose 2": Encounter."Client's age is more than 5 years" and "Cholera dose 2 Expiration" after day of Today and "First cholera dose was administered" and not "Second cholera dose was administered"
/* @dynamicValue: Cholera dose 2 Due Date @pseudocode: Latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") + 1 week */ define "Cholera dose 2 Due Date": if "Cholera dose 2" then Encounter."Date of Latest Cholera Dose" + 1 week else null
/* @output: Cholera dose 2 Create @create: For WC-rBS vaccine (Dukoral) 2 doses should be given to children aged ≥6 years and adults, with an interval of 1-6 weeks between doses. */ define "Cholera dose 2 Create": if "Cholera dose 2" then 'For WC-rBS vaccine (Dukoral) 2 doses should be given to children aged ≥6 years and adults, with an interval of 1-6 weeks between doses.' + ' Due Date: ' + ToString("Cholera dose 2 Due Date") + ' Expiration: ' + ToString("Cholera dose 2 Expiration") else ''
The latest cholera dose was administered approximately more than 2 years ago {Member States defined interval}
/* @input: The latest cholera dose was administered approximately more than 2 years ago {Member States defined interval} @pseudocode: Today's date − latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") > 2 years ± Member States defined interval @code: The latest cholera dose was administered approximately more than 2 years ago {Member States defined interval}-139 @decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 2 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 2-dose schedule for clients aged over 5 years */ define "The latest cholera dose was administered approximately more than 2 years ago {Member States defined interval}": "Date of Latest Cholera Dose" is not null and duration in days between ("Date of Latest Cholera Dose" + 2 years) and Today > CholeraExactIntervalDays
/* @output: Cholera booster dose @description: Provision of the cholera booster dose @trigger: Primary series for cholera has been completed and latest cholera dose was administered approximately less than 2 years ago @pseudo: "Completed the primary vaccination series" (where "Vaccine type" = "Cholera vaccines") = TRUE AND Today's date − latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") ≤ 2 years ± Member States defined interval AND (Today's date − "Date of birth" ≥ 6 years) @triggerDate: Latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") */ define "Cholera booster dose": "Second cholera dose was administered" and not Encounter."The latest cholera dose was administered approximately more than 2 years ago {Member States defined interval}"
/* @dynamicValue: Cholera booster dose Due Date @pseudocode: Latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") ± Member States defined interval */ define "Cholera booster dose Due Date": if "Cholera booster dose" then Encounter."Date of Latest Cholera Dose" + 22 months else null
/* @dynamicValue: Cholera booster dose Expiration @pseudocode: Latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") + 2 years + Member states defined interval */ define "Cholera booster dose Expiration": if "Cholera booster dose" then Encounter."Date of Latest Cholera Dose" + 2 years else null
/* @output: Cholera booster dose Create @create: For WC-rBS vaccine, for those aged ≥ 6 years of age, if less than 2 years have passed since completion of primary vaccination series, 1 dose for revaccination. */ define "Cholera booster dose Create": if "Cholera booster dose" then 'For WC-rBS vaccine, for those aged ≥ 6 years of age, if less than 2 years have passed since completion of primary vaccination series, 1 dose for revaccination.' + ' Due Date: ' + ToString("Cholera booster dose Due Date") + ' Expiration: ' + ToString("Cholera booster dose Expiration") else ''
Number of Cholera Primary Series Doses Administered
/* @internal: Number of Cholera Primary Series doses */ define "Number of Cholera Primary Series Doses Administered": Count("Cholera Primary Series Doses Administered to Patient")
No cholera primary series dose was administered
/* @input: No cholera primary series dose was administered @pseudocode: Count of vaccines administered (where "Vaccine type" = "Cholera vaccines" and "Type of dose" = "Primary series") = 0 @code: No cholera primary series dose was administered-116 @decision: IMMZ.D2.DT.Cholera.WC vaccines: Whole-cell (WC) vaccines schedule @decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 3 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 3-dose schedule for clients aged 2–5 years @decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 2 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 2-dose schedule for clients aged over 5 years */ define "No cholera primary series dose was administered": "Number of Cholera Primary Series Doses Administered" = 0
Dose number of the latest primary series dose is more than or equal to two
/* @input: Dose number of the latest primary series dose is more than or equal to two @pseudocode: Latest "Dose number" (where "Vaccine type" = "Cholera vaccines" and "Type of dose" = "Primary series") >= 2 @code: Dose number of the latest primary series dose is more than or equal to two-107 @decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 2 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 2-dose schedule for clients aged over 5 years */ define "Dose number of the latest primary series dose is more than or equal to two": (("Cholera Primary Series Doses Administered to Patient".mostRecent()) I where exists( I.protocolApplied pa where ToInteger(pa.doseNumber) >= 2)) is not null
The latest cholera dose was administered more than 6 weeks ago
/* @input: The latest cholera dose was administered more than 6 weeks ago @pseudocode: Today's date − latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") ≥ 6 weeks @code: The latest cholera dose was administered more than 6 weeks ago-106 @decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 3 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 3-dose schedule for clients aged 2–5 years @decision: IMMZ.D2.DT.Cholera.WC-rBS vaccine 2 doses: Whole cell-recombinant B subunit (WC-rBS) vaccine, 2-dose schedule for clients aged over 5 years */ define "The latest cholera dose was administered more than 6 weeks ago": "Date of Latest Cholera Dose" is not null and duration in weeks between "Date of Latest Cholera Dose" and Today >= 6
/* @output: Cholera dose 1 @description: Provision of the cholera dose 1 @trigger: Child's birth @pseudo: Count of vaccines administered (where "Vaccine type" = "Cholera vaccines") = 0 AND (Today's date − "Date of birth" ≥ 6 years) OR Primary series interrupted for 6 or more weeks "Completed the primary vaccination series" (where "Vaccine type" = "Cholera vaccines") = FALSE AND Today's date − latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") ≥ 6 weeks AND (Today's date − "Date of birth" ≥ 6 years) OR more than 6 months have passed since completion of primary vaccination series "Completed the primary vaccination series" (where "Vaccine type" = "Cholera vaccines") = TRUE AND Today's date − latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") > 2 years AND (Today's date − "Date of birth" ≥ 6 years) @triggerDate: "Date of birth" OR Latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") */ define "Cholera dose 1": Encounter."Client's age is more than 5 years" and ( Encounter."No cholera primary series dose was administered" or ( not Encounter."Dose number of the latest primary series dose is more than or equal to two" and Encounter."The latest cholera dose was administered more than 6 weeks ago" ) or Encounter."The latest cholera dose was administered approximately more than 2 years ago {Member States defined interval}" )
/* @dynamicValue: Cholera dose 1 Due Date @pseudocode: "Date of birth" + 2 years */ define "Cholera dose 1 Due Date": if "Cholera dose 1" then case when Encounter."No cholera primary series dose was administered" then Patient.birthDate + 2 years when not Encounter."Dose number of the latest primary series dose is more than or equal to two" and Encounter."The latest cholera dose was administered more than 6 weeks ago" then Today when Encounter."The latest cholera dose was administered approximately more than 2 years ago {Member States defined interval}" then Encounter."Date of Latest Cholera Dose" + 2 years else null end else null
/* @output: Cholera dose 1 Create @create: For WC-rBS vaccine (Dukoral), 2 doses should be given to children aged ≥ 6 years and adults, with an interval of 1–6 weeks between doses. If the interval since the last dose ≥ 6 weeks, restart the primary series. Revaccination for those aged ≥ 6 years: If more than 2 years have passed since completion of primary vaccination series, the primary series of 2 doses should be repeated. */ define "Cholera dose 1 Create": if "Cholera dose 1" then 'For WC-rBS vaccine (Dukoral), 2 doses should be given to children aged ≥ 6 years and adults, with an interval of 1–6 weeks between doses. If the interval since the last dose ≥ 6 weeks, restart the primary series. Revaccination for those aged ≥ 6 years: If more than 2 years have passed since completion of primary vaccination series, the primary series of 2 doses should be repeated.' + ' Due Date: ' + ToString("Cholera dose 1 Due Date") else ''
define fluent function mostRecent(immunizations List<Immunization>): Last( immunizations I sort by start of occurrence.toInterval() )
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 }
/** * @description: Gets a given immunization from a list that matches the dose number */ define fluent function getDose(immunization Immunization, doseNumber String): immunization I where exists( I.protocolApplied pa where pa.doseNumber = doseNumber )
define function ToString(value string): value.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' )
define function ToDate(value date): value.value
IMMZ.D18.S.Cholera.WC-rBS vaccine 2-dose schedule
IMMZ.D18.S.Cholera.WC-rBS vaccine 2-dose schedule Whole cell-recombinant B subunit (WC-rBS) vaccine (Dukoral), 2-dose schedule for clients aged ≥ 6 years
WHO recommendations for routine immunization - summary tables (January 2025)
Provision of the cholera dose 1 Trigger event: Child's birth Trigger pseudo: Count of vaccines administered (where "Vaccine type" = "Cholera vaccines") = 0 AND (Today's date − "Date of birth" ≥ 6 years) OR Primary series interrupted for 6 or more weeks "Completed the primary vaccination series" (where "Vaccine type" = "Cholera vaccines") = FALSE AND Today's date − latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") ≥ 6 weeks AND (Today's date − "Date of birth" ≥ 6 years) OR more than 6 months have passed since completion of primary vaccination series "Completed the primary vaccination series" (where "Vaccine type" = "Cholera vaccines") = TRUE AND Today's date − latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") > 2 years AND (Today's date − "Date of birth" ≥ 6 years) Trigger date: "Date of birth" OR Latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") Create condition: For WC-rBS vaccine (Dukoral), 2 doses should be given to children aged ≥ 6 years and adults, with an interval of 1–6 weeks between doses. If the interval since the last dose ≥ 6 weeks, restart the primary series. Revaccination for those aged ≥ 6 years: If more than 2 years have passed since completion of primary vaccination series, the primary series of 2 doses should be repeated.
Code { system: 'http://terminology.hl7.org/CodeSystem/communication-category', code: 'alert' }
Code { system: 'http://hl7.org/fhir/request-priority', code: 'routine' }
Provision of the cholera dose 2 Trigger event: First cholera dose was administered Trigger pseudo: Latest "Dose number" (where "Vaccine type" = "Cholera vaccines") = 1 AND (Today's date − "Date of birth" ≥ 6 years) Trigger date: Latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") Create condition: For WC-rBS vaccine (Dukoral) 2 doses should be given to children aged ≥6 years and adults, with an interval of 1-6 weeks between doses.
Provision of the cholera booster dose Trigger event: Primary series for cholera has been completed and latest cholera dose was administered approximately less than 2 years ago Trigger pseudo: "Completed the primary vaccination series" (where "Vaccine type" = "Cholera vaccines") = TRUE AND Today's date − latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") ≤ 2 years ± Member States defined interval AND (Today's date − "Date of birth" ≥ 6 years) Trigger date: Latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") Create condition: For WC-rBS vaccine, for those aged ≥ 6 years of age, if less than 2 years have passed since completion of primary vaccination series, 1 dose for revaccination.