Id: IMMZD18SCholeraWCVaccines Url: IMMZ.D18.S.Cholera.WC vaccines schedule Version: 0.2.0 Title: IMMZ.D18.S.Cholera.WC vaccines 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 vaccines schedule Whole-cell (WC) vaccines (Shanchol, Euvchol and mORCVAX), 2-dose schedule Knowledge Capability: computable Related Artifacts: References WHO recommendations for routine immunization - summary tables (January 2025) Libraries: IMMZD18SCholeraWCVaccinesLogic Actions: Cholera dose 1: Provision of the cholera dose 1 Trigger event: Child's birth and no cholera doses have been administered Trigger pseudo: Child's birth AND Count of vaccines administered (where "Vaccine type" = "Cholera vaccines" and "Type of dose" = "Primary series") = 0 Trigger date: "Date of birth" OR Latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") Create condition: WC vaccines: 2 doses should be given 14 days apart to individuals aged ≥ 1 year. Revaccination is recommended where there is continued risk of Vibrio cholerae infection. For WC vaccines, revaccination is recommended after 3 years. 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 administered Trigger pseudo: Latest "Dose number" (where "Vaccine type" = "Cholera vaccines"and "Type of dose" = "Primary series") = 1 Trigger date: Latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") Create condition: WC vaccines: 2 doses should be given 14 days apart to individuals aged ≥ 1 year. 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 1: Provision of the cholera booster dose 1 Trigger event: Primary series for cholera has been completed and latest cholera dose was administered more than 3 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") ≥ 3 years Trigger date: Latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") Create condition: For WC vaccines, revaccination is recommended after 3 years. If: Applicability: Cholera booster dose 1 (Cholera booster dose 1) Then: Definition: IMMZ.D2.DT.CR Dynamic Values: status: ('active') payload.contentString: (Cholera booster 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 booster dose 2: Provision of the cholera booster dose 1 Trigger event: First cholera booster dose administered Trigger pseudo: Latest "Dose number" (where "Vaccine type" = "Cholera vaccines"and "Type of dose" = "Booster dose") = 1 Trigger date: Latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") Create condition: For WC vaccines, revaccination is recommended after 3 years. If: Applicability: Cholera booster dose 2 (Cholera booster dose 2) Then: Definition: IMMZ.D2.DT.CR Dynamic Values: status: ('active') payload.contentString: (Cholera booster 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' })
/** * @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")
One cholera primary series dose was administered
/* @input: 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: One cholera primary series dose was administered-116 @decision: IMMZ.D2.DT.Cholera.WC vaccines: Whole-cell (WC) vaccines schedule */ define "One cholera primary series dose was administered": "Number of Cholera Primary Series Doses Administered" = 1
/* @complete: First cholera dose was administered @pseudocode: 'Latest "Dose number" (where "Vaccine type" = "Cholera vaccines" and "Type of dose" = "Primary series") = 1 */ define "First cholera dose was administered": Encounter."One cholera primary series dose was administered"
Two cholera primary series doses were administered
/* @input: Two cholera primary series doses were administered @pseudocode: Count of vaccines administered (where "Vaccine type" = "Cholera vaccines" and "Type of dose" = "Primary series") = 2 @code: Two cholera primary series doses were administered-116 @decision: IMMZ.D2.DT.Cholera.WC vaccines: Whole-cell (WC) vaccines schedule */ define "Two cholera primary series doses were administered": "Number of Cholera Primary Series Doses Administered" = 2
/* @complete: The primary series has been completed @pseudocode: "Completed the primary vaccination series" (where "Vaccine type" = "Cholera vaccines") = TRUE */ define "The primary series has been completed": Encounter."Two cholera primary series doses were administered"
/* @output: Cholera dose 2 @description: Provision of the cholera dose 2 @trigger: First cholera dose administered @pseudo: Latest "Dose number" (where "Vaccine type" = "Cholera vaccines"and "Type of dose" = "Primary series") = 1 @triggerDate: Latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") */ define "Cholera dose 2": "First cholera dose was administered" and not "The primary series has been completed"
/* @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 Due Date @pseudocode: Latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") + 2 weeks */ define "Cholera dose 2 Due Date": if "Cholera dose 2" then Encounter."Date of Latest Cholera Dose" + 2 weeks else null
/* @output: Cholera dose 2 Create @create: WC vaccines: 2 doses should be given 14 days apart to individuals aged ≥ 1 year. */ define "Cholera dose 2 Create": if "Cholera dose 2" then 'WC vaccines: 2 doses should be given 14 days apart to individuals aged ≥ 1 year.' + ' Due Date: ' + ToString("Cholera dose 2 Due Date") else ''
Cholera Booster Series Doses Administered to Patient
/* @internal: Cholera Booster Series Doses Administered to Patient */ define "Cholera Booster Series Doses Administered to Patient": "Cholera Doses Administered to Patient".seriesBooster()
Number of Cholera Booster Series Doses Administered
/* @internal: Number of Cholera Booster Series Doses Administered */ define "Number of Cholera Booster Series Doses Administered": Count("Cholera Booster Series Doses Administered to Patient")
At least one booster series dose was administered
/* @input: At least one booster series dose was administered @pseudocode: Count of vaccines administered (where "Vaccine type" = "Cholera vaccines" and "Type of dose" = "Booster dose") >= 1 @code: At least one booster series dose was administered-115 @decision: IMMZ.D2.DT.Cholera.WC vaccines: Whole-cell (WC) vaccines schedule */ define "At least one booster series dose was administered": "Number of Cholera Booster Series Doses Administered" >= 1
/* @input: Dose number of the latest dose is one @pseudocode: Latest "Dose number" (where "Vaccine type" = "Cholera vaccines") = 1 @code: Dose number of the latest dose is one-68 @decision: IMMZ.D2.DT.Cholera.WC vaccines: Whole-cell (WC) vaccines schedule */ define "Dose number of the latest dose is one": "Cholera Doses Administered to Patient".mostRecent().getDose('1') is not null
First cholera booster dose was administered
/* @complete: First cholera booster dose was administered @pseudocode: 'Latest "Dose number" (where "Vaccine type" = "Cholera vaccines" and "Type of dose" = "Booster dose") = 1 */ define "First cholera booster dose was administered": Encounter."At least one booster series dose was administered" and Encounter."Dose number of the latest dose is one"
/* @output: Cholera booster dose 1 @description: Provision of the cholera booster dose 1 @trigger: Primary series for cholera has been completed and latest cholera dose was administered more than 3 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") ≥ 3 years @triggerDate: Latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") */ define "Cholera booster dose 1": "The primary series has been completed" and not "First cholera booster dose was administered"
/* @dynamicValue: Cholera booster dose 1 Due Date @pseudocode: Latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") + 2 weeks */ define "Cholera booster dose 1 Due Date": if "Cholera booster dose 1" then Encounter."Date of Latest Cholera Dose" + 3 years else null
/* @output: Cholera booster dose 1 Create @create: For WC vaccines, revaccination is recommended after 3 years. */ define "Cholera booster dose 1 Create": if "Cholera booster dose 1" then 'For WC vaccines, revaccination is recommended after 3 years.' + ' Due Date: ' + ToString("Cholera booster dose 1 Due Date") else ''
/* @input: Dose number of the latest dose is two @pseudocode: Latest "Dose number" (where "Vaccine type" = "Cholera vaccines") = 2 @code: Dose number of the latest dose is two-68 @decision: IMMZ.D2.DT.Cholera.WC vaccines: Whole-cell (WC) vaccines schedule */ define "Dose number of the latest dose is two": "Cholera Doses Administered to Patient".mostRecent().getDose('2') is not null
Revaccination with booster series has been completed in the last 3 years
/* @complete: Revaccination with booster series has been completed in the last 3 years @pseudocode: "Completed the booster series" (where "Vaccine type" = "Cholera vaccines") = TRUE AND Today's date − latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccine") < 3 years */ define "Revaccination with booster series has been completed in the last 3 years": Encounter."At least one booster series dose was administered" and Encounter."Dose number of the latest dose is two"
/* @output: Cholera booster dose 2 @description: Provision of the cholera booster dose 1 @trigger: First cholera booster dose administered @pseudo: Latest "Dose number" (where "Vaccine type" = "Cholera vaccines"and "Type of dose" = "Booster dose") = 1 @triggerDate: Latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") */ define "Cholera booster dose 2": "First cholera booster dose was administered" and not "Revaccination with booster series has been completed in the last 3 years"
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
/* @output: Cholera dose 1 @description: Provision of the cholera dose 1 @trigger: Child's birth and no cholera doses have been administered @pseudo: Child's birth AND Count of vaccines administered (where "Vaccine type" = "Cholera vaccines" and "Type of dose" = "Primary series") = 0 @triggerDate: "Date of birth" OR Latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") */ define "Cholera dose 1": Encounter."No cholera primary series dose was administered" and not "First cholera dose was administered"
/* @dynamicValue: Cholera booster dose 2 Due Date @pseudocode: Latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") + 3 years */ define "Cholera booster dose 2 Due Date": if "Cholera booster dose 2" then Encounter."Date of Latest Cholera Dose" + 2 weeks else null
/* @output: Cholera booster dose 2 Create @create: For WC vaccines, revaccination is recommended after 3 years. */ define "Cholera booster dose 2 Create": if "Cholera booster dose 2" then 'For WC vaccines, revaccination is recommended after 3 years.' + ' Due Date: ' + ToString("Cholera booster dose 2 Due Date") else ''
/* @dynamicValue: Cholera dose 1 Due Date @pseudocode: "Date of birth" + 1 year */ define "Cholera dose 1 Due Date": if "Cholera dose 1" then Patient.birthDate + 1 year else null
/* @output: Cholera dose 1 Create @create: WC vaccines: 2 doses should be given 14 days apart to individuals aged ≥ 1 year. Revaccination is recommended where there is continued risk of Vibrio cholerae infection. For WC vaccines, revaccination is recommended after 3 years. */ define "Cholera dose 1 Create": if "Cholera dose 1" then 'WC vaccines: 2 doses should be given 14 days apart to individuals aged ≥ 1 year. Revaccination is recommended where there is continued risk of Vibrio cholerae infection. For WC vaccines, revaccination is recommended after 3 years.' + ' Due Date: ' + ToString("Cholera dose 1 Due Date") 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 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' )
/** * @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 ToDate(value date): value.value
IMMZ.D18.S.Cholera.WC vaccines schedule Whole-cell (WC) vaccines (Shanchol, Euvchol and mORCVAX), 2-dose schedule
WHO recommendations for routine immunization - summary tables (January 2025)
Provision of the cholera dose 1 Trigger event: Child's birth and no cholera doses have been administered Trigger pseudo: Child's birth AND Count of vaccines administered (where "Vaccine type" = "Cholera vaccines" and "Type of dose" = "Primary series") = 0 Trigger date: "Date of birth" OR Latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") Create condition: WC vaccines: 2 doses should be given 14 days apart to individuals aged ≥ 1 year. Revaccination is recommended where there is continued risk of Vibrio cholerae infection. For WC vaccines, revaccination is recommended after 3 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 cholera dose 2 Trigger event: First cholera dose administered Trigger pseudo: Latest "Dose number" (where "Vaccine type" = "Cholera vaccines"and "Type of dose" = "Primary series") = 1 Trigger date: Latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") Create condition: WC vaccines: 2 doses should be given 14 days apart to individuals aged ≥ 1 year.
Provision of the cholera booster dose 1 Trigger event: Primary series for cholera has been completed and latest cholera dose was administered more than 3 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") ≥ 3 years Trigger date: Latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") Create condition: For WC vaccines, revaccination is recommended after 3 years.
Provision of the cholera booster dose 1 Trigger event: First cholera booster dose administered Trigger pseudo: Latest "Dose number" (where "Vaccine type" = "Cholera vaccines"and "Type of dose" = "Booster dose") = 1 Trigger date: Latest "Date and time of vaccination" (where "Vaccine type" = "Cholera vaccines") Create condition: For WC vaccines, revaccination is recommended after 3 years.