Id: IMMZD2DTCholeraWCRBSVaccine2Doses Url: IMMZ.D2.DT.Cholera.WC-rBS vaccine 2 doses Version: 0.2.0 Title: IMMZ.D2.DT.Cholera.WC-rBS vaccine 2 doses 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.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 Knowledge Capability: computable Related Artifacts: References WHO recommendations for routine immunization - summary tables (January 2025) Libraries: IMMZD2DTCholeraWCRBSVaccine2DosesLogic Actions: Determine if the client is due for Cholera.: Determine if the client is due for Cholera vaccine according to the national immunization protocol. Whole cell-recombinant B subunit (WC-rBS) vaccine, 2-dose schedule for clients aged over 5 years If: Applicability: Client is due for cholera vaccination (Client is due for cholera vaccination) Then: Definition: IMMZD2DTMR Dynamic Values: status: ('draft') intent: ('proposal') medication: (Concept { codes: { Code { system: 'http://smart.who.int/immunizations/CodeSystem/IMMZ.Z', code: 'DE2', display: 'Cholera vaccines' } }, display: 'Cholera vaccines' }) Determine if the client is due for Cholera.: Determine if the client is due for Cholera vaccine according to the national immunization protocol. Whole cell-recombinant B subunit (WC-rBS) vaccine, 2-dose schedule for clients aged over 5 years If: Applicability: Primary series is complete. Client is due for cholera booster dose (Primary series is complete. Client is due for cholera booster dose) Then: Definition: IMMZD2DTMR Dynamic Values: status: ('draft') intent: ('proposal') medication: (Concept { codes: { Code { system: 'http://smart.who.int/immunizations/CodeSystem/IMMZ.Z', code: 'DE2', display: 'Cholera vaccines' } }, display: 'Cholera vaccines' }) Check for Guidance for the patient regarding IMMZ.D2.DT.Cholera.WC-rBS vaccine 2 doses.: Show Guidance for the patient regarding IMMZ.D2.DT.Cholera.WC-rBS vaccine 2 doses. 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 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"
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()
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
Client is due for cholera vaccination Case 1
/* @output: Client is due for cholera vaccination Case 1 @pseudocode: "Immunization recommendation status" = "Due" */ define "Client is due for cholera vaccination Case 1": Encounter."Client's age is more than 5 years" and Encounter."No cholera primary series dose was administered"
At least one cholera primary series dose was administered
/* @input: At least one cholera primary series dose was administered @pseudocode: Count of vaccines administered (where "Vaccine type" = "Cholera vaccines" and "Type of dose" = "Primary series") >= 1 @code: At least one cholera primary series dose was administered-117 @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 "At least one cholera primary series dose was administered": "Number of Cholera Primary Series Doses Administered" >= 1
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
/* @internal: Date of Latest Cholera Dose */ define "Date of Latest Cholera Dose": date from start of "Cholera Doses Administered to Patient".mostRecent().occurrence.toInterval()
The latest cholera dose was administered more than 1 week and less than 6 weeks ago
/* @input: The latest cholera dose was administered more than 1 week and less than 6 weeks ago @pseudocode: 1 week ≤ 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 1 week and less than 6 weeks ago-115 @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 1 week and less than 6 weeks ago": "Date of Latest Cholera Dose" is not null and duration in weeks between "Date of Latest Cholera Dose" and Today >= 1 and duration in weeks between "Date of Latest Cholera Dose" and Today < 6
Client is due for cholera vaccination Case 2
/* @output: Client is due for cholera vaccination Case 2 @pseudocode: "Immunization recommendation status" = "Due" */ define "Client is due for cholera vaccination Case 2": Encounter."Client's age is more than 5 years" and Encounter."At least one cholera primary series dose was administered" and Encounter."Dose number of the latest primary series dose is one" and Encounter."The latest cholera dose was administered more than 1 week and less than 6 weeks ago"
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
Client is due for cholera vaccination Case 3
/* @output: Client is due for cholera vaccination Case 3 @pseudocode: "Immunization recommendation status" = "Due" "Completed the booster series" (where "Vaccine type" = "Cholera vaccines") = FALSE when dose 1 is administered */ define "Client is due for cholera vaccination Case 3": Encounter."Client's age is more than 5 years" and Encounter."At least one cholera primary series dose was administered" and Encounter."Dose number of the latest primary series dose is one" and Encounter."The latest cholera dose was administered more than 6 weeks ago"
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 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
Client is due for cholera vaccination Case 4
/* @output: Client is due for cholera vaccination Case 4 @pseudocode: "Immunization recommendation status" = "Due" "Completed the primary vaccination series" (where "Vaccine type" = "Cholera vaccines") = FALSE when dose 1 is administered */ define "Client is due for cholera vaccination Case 4": Encounter."Client's age is more than 5 years" and Encounter."At least one cholera primary series dose was administered" and Encounter."Dose number of the latest primary series dose is more than or equal to two" and Encounter."The latest cholera dose was administered approximately more than 2 years ago {Member States defined interval}"
/* @output: Client is due for cholera vaccination @pseudocode: "Immunization recommendation status" = "Due" */ define "Client is due for cholera vaccination": "Client is due for cholera vaccination Case 1" or "Client is due for cholera vaccination Case 2" or "Client is due for cholera vaccination Case 3" or "Client is due for cholera vaccination Case 4"
Client is due for cholera vaccination Guidance
/* @output: Client is due for cholera vaccination Guidance @guidance = Should vaccinate client with cholera dose as no cholera doses have been administered. Check for contraindications. @guidance = Should vaccinate client with cholera dose as the latest cholera dose was administered in the last 1 to 6 weeks. Check for contraindications. @guidance = Should vaccinate client with cholera dose and restart primary series as the latest cholera dose was administered more than 6 weeks ago. Check for contraindications. @guidance = Should vaccinate client with cholera dose and restart primary series as the latest cholera dose was administered approximately more than 2 years ago. Check for contraindications. */ define "Client is due for cholera vaccination Guidance": case when "Client is due for cholera vaccination Case 1" then 'Should vaccinate client with cholera dose as no cholera doses have been administered. Check for contraindications.' when "Client is due for cholera vaccination Case 2" then 'Should vaccinate client with cholera dose as the latest cholera dose was administered in the last 1 to 6 weeks. Check for contraindications.' when "Client is due for cholera vaccination Case 3" then 'Should vaccinate client with cholera dose and restart primary series as the latest cholera dose was administered more than 6 weeks ago. Check for contraindications.' when "Client is due for cholera vaccination Case 4" then 'Should vaccinate client with cholera dose and restart primary series as the latest cholera dose was administered approximately more than 2 years ago. Check for contraindications.' else '' end
The latest cholera dose was administered less than 1 week ago
/* @input: The latest cholera dose was administered less than 1 week ago @pseudocode: Today's date − latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") < 1 week @code: The latest cholera dose was administered less than 1 week ago-105 @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 less than 1 week ago": "Date of Latest Cholera Dose" is not null and duration in weeks between "Date of Latest Cholera Dose" and Today < 1
Client is not due for cholera vaccination
/* @output: Client is not due for cholera vaccination @pseudocode: "Immunization recommendation status" = "Not due" */ define "Client is not due for cholera vaccination": Encounter."Client's age is more than 5 years" and Encounter."At least one cholera primary series dose was administered" and Encounter."Dose number of the latest primary series dose is one" and Encounter."The latest cholera dose was administered less than 1 week ago"
Client is not due for cholera vaccination Guidance
/* @output: Client is not due for cholera vaccination Guidance @guidance: Should not vaccinate client with cholera dose as the latest cholera dose was administered less than 1 week ago. Check for any vaccines due and inform the caregiver of when to come back for the next dose. */ define "Client is not due for cholera vaccination Guidance": 'Should not vaccinate client with cholera dose as the latest cholera dose was administered less than 1 week ago. Check for any vaccines due and inform the caregiver of when to come back for the next dose.'
The latest cholera dose was administered approximately less than 2 years ago {Member States defined interval}
/* @input: The latest cholera dose was administered approximately less 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 less 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 less than 2 years ago {Member States defined interval}": "Date of Latest Cholera Dose" is not null and duration in months between "Date of Latest Cholera Dose" and Today > 21 and duration in days between ("Date of Latest Cholera Dose" + 2 years) and Today <= CholeraExactIntervalDays
Primary series is complete. Client is due for cholera booster dose
/* @output: Primary series is complete. Client is due for cholera booster dose @pseudocode: "Immunization recommendation status" = "Due" "Completed the booster series" (where "Vaccine type" = "Cholera vaccines") = TRUE */ define "Primary series is complete. Client is due for cholera booster dose": Encounter."Client's age is more than 5 years" and Encounter."At least one cholera primary series dose was administered" and Encounter."Dose number of the latest primary series dose is more than or equal to two" and Encounter."The latest cholera dose was administered approximately less than 2 years ago {Member States defined interval}"
Primary series is complete. Client is due for cholera booster dose Guidance
/* @output: Primary series is complete. Client is due for cholera booster dose Guidance @guidance: Should vaccinate client with cholera booster dose as the latest cholera dose was administered approximately less than 2 years ago. Check for contraindications. */ define "Primary series is complete. Client is due for cholera booster dose Guidance": 'Should vaccinate client with cholera booster dose as the latest cholera dose was administered approximately less than 2 years ago. Check for contraindications.'
/* @dynamicValue: Guidance */ define "Guidance": case when "Client is due for cholera vaccination" then "Client is due for cholera vaccination Guidance" when "Client is not due for cholera vaccination" then "Client is not due for cholera vaccination Guidance" when "Primary series is complete. Client is due for cholera booster dose" then "Primary series is complete. Client is due for cholera booster 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 }
/** * @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 fluent function mostRecent(immunizations List<Immunization>): Last( immunizations I sort by start of occurrence.toInterval() )
IMMZ.D2.DT.Cholera.WC-rBS vaccine 2 doses
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
WHO recommendations for routine immunization - summary tables (January 2025)
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. For those aged ≥6 years, if less than 2 years have passed, 1 dose for revaccination. If more than 2 years have passed, the primary series of 2 doses should be repeated.
Determine if the client is due for Cholera.
Determine if the client is due for Cholera vaccine according to the national immunization protocol. Whole cell-recombinant B subunit (WC-rBS) vaccine, 2-dose schedule for clients aged over 5 years
Concept { codes: { Code { system: 'http://smart.who.int/immunizations/CodeSystem/IMMZ.Z', code: 'DE2', display: 'Cholera vaccines' } }, display: 'Cholera vaccines' }
For those aged ≥6 years, if less than 2 years have passed, 1 dose for revaccination. If more than 2 years have passed, the primary series of 2 doses should be repeated.
Check for Guidance for the patient regarding IMMZ.D2.DT.Cholera.WC-rBS vaccine 2 doses.
Show Guidance for the patient regarding IMMZ.D2.DT.Cholera.WC-rBS vaccine 2 doses.
Code { system: 'http://terminology.hl7.org/CodeSystem/communication-category', code: 'alert' }
Code { system: 'http://hl7.org/fhir/request-priority', code: 'routine' }