Id: IMMZD2DTRubellaHighIncidence Url: IMMZ.D2.DT.Rubella.High incidence Version: 0.2.0 Title: IMMZ.D2.DT.Rubella.High incidence 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.Rubella.High incidence Countries with high incidence and mortality from rubella Knowledge Capability: computable Related Artifacts: References WHO recommendations for routine immunization - summary tables (January 2025) Libraries: IMMZD2DTRubellaHighIncidenceLogic Actions: Determine if the client is due for Rubella.: Determine if the client is due for Rubella vaccine according to the national immunization protocol. Countries with high incidence and mortality from rubella If: Applicability: Client is due for rubella vaccination (Client is due for rubella vaccination) Then: Definition: IMMZD2DTMR Dynamic Values: status: ('draft') intent: ('proposal') medication: (Concept { codes: { Code { system: 'http://smart.who.int/immunizations/CodeSystem/IMMZ.Z', code: 'DE17', display: 'Rubella-containing vaccines' } }, display: 'Rubella-containing vaccines' }) Check for Guidance for the patient regarding IMMZ.D2.DT.Rubella.High incidence.: Show Guidance for the patient regarding IMMZ.D2.DT.Rubella.High incidence. 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 9 months @pseudocode: Today's date − "Date of birth" < 9 months @code: Client's age is less than 9 months-41 @decision: IMMZ.D2.DT.Rubella.High incidence: Countries with high incidence and mortality from rubella */ define "Client's age is less than 9 months": Encounter."Current Patient Age In Months" < 9
Client is not due for rubella vaccination Case 1
/* @output: Client is not due for rubella vaccination Case 1 @pseudocode: "Immunization recommendation status" = "Not due" */ define "Client is not due for rubella vaccination Case 1": Encounter."Client's age is less than 9 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
/* @internal: Rubella containing Doses Administered to Patient */ define "Rubella Doses Administered to Patient": Encounter."Doses Administered to Patient" I where I.vaccineCode in Concepts."Rubella-containing vaccines"
Rubella Primary Series Doses Administered to Patient
/* @internal: Rubella containing Doses Administered to Patient that are in the Primary series */ define "Rubella Primary Series Doses Administered to Patient": "Rubella Doses Administered to Patient".seriesPrimary()
Number of Rubella Primary Series Doses Administered
/* @internal: Number of Rubella Primary Series doses */ define "Number of Rubella Primary Series Doses Administered": Count("Rubella Primary Series Doses Administered to Patient")
No rubella primary series dose was administered
/* @input: No rubella primary series dose was administered @pseudocode: Count of vaccines administered (where "Vaccine type" = "Rubella-containing vaccines" and "Type of dose" = "Primary series") = 0 @code: No rubella primary series dose was administered-127 @decision: IMMZ.D2.DT.Rubella.High incidence: Countries with high incidence and mortality from rubella @decision: IMMZ.D2.DT.Rubella.Low incidence: Countries with low incidence of rubella */ define "No rubella primary series dose was administered": "Number of Rubella Primary Series Doses Administered" = 0
Client's age is more than or equal to 9 months
/* @input: Client's age is more than or equal to 9 months @pseudocode: Today's date − "Date of birth" ≥ 9 months @code: Client's age is more than or equal to 9 months-41 @decision: IMMZ.D2.DT.Rubella.High incidence: Countries with high incidence and mortality from rubella */ define "Client's age is more than or equal to 9 months": Encounter."Current Patient Age In Months" >= 9
/* @dataElement: Live attenuated vaccines */ define "Live Attenuated Vaccines": "Doses Administered to Patient" I where I.vaccineCode in Concepts."Live Attenuated"
/* @dataElement Live attenuated vaccines */ define "Live Attenuated Vaccines": Elements."Live Attenuated Vaccines" I where I.occurrence.toInterval() same day or before Today
/* @dataElement Date and time of last live attenuated vaccine */ define "Date of Latest Live Attenuated Vaccine": date from start of "Live Attenuated Vaccines".mostRecent().occurrence.toInterval()
Live vaccine was administered in the last 4 weeks
/* @input: Live vaccine was administered in the last 4 weeks @pseudocode: Today's date − latest "Date and time of vaccination" (where "Live vaccine" = TRUE) < 4 weeks */ define "Live vaccine was administered in the last 4 weeks": "Date of Latest Live Attenuated Vaccine" is not null and duration in weeks between "Date of Latest Live Attenuated Vaccine" and Today < 4
/* @input: Live vaccine was administered in the last 4 weeks @pseudocode: Today's date − latest "Date and time of vaccination" (where "Live vaccine" = TRUE) < 4 weeks @code: Live vaccine was administered in the last 4 weeks-92 @decision: IMMZ.D2.DT.Rubella.High incidence: Countries with high incidence and mortality from rubella */ define "Live vaccine was administered in the last 4 weeks": Encounter."Live vaccine was administered in the last 4 weeks"
Client is not due for rubella vaccination Case 2
/* @output: Client is not due for rubella vaccination Case 2 @pseudocode: "Immunization recommendation status" = "Not due" */ define "Client is not due for rubella vaccination Case 2": Encounter."No rubella primary series dose was administered" and Encounter."Client's age is more than or equal to 9 months" and Encounter."Live vaccine was administered in the last 4 weeks"
Client is not due for rubella vaccination
/* @output: Client is not due for rubella vaccination @pseudocode: "Immunization recommendation status" = "Not due" */ define "Client is not due for rubella vaccination": "Client is not due for rubella vaccination Case 1" or "Client is not due for rubella vaccination Case 2"
Client is not due for rubella vaccination Guidance
/* @output: Client is not due for rubella vaccination Guidance @guidance = Should not vaccinate client with rubella dose as client's age is less than 9 months. Check for any vaccines due and inform the caregiver of when to come back for the first dose. @guidance = Should not vaccinate client with rubella dose as live vaccine was administered in the last 4 weeks. Check for any other vaccines due. */ define "Client is not due for rubella vaccination Guidance": case when "Client is not due for rubella vaccination Case 1" then 'Should not vaccinate client with rubella dose as client\'s age is less than 9 months. Check for any vaccines due and inform the caregiver of when to come back for the first dose.' when "Client is not due for rubella vaccination Case 2" then 'Should not vaccinate client with rubella dose as live vaccine was administered in the last 4 weeks. Check for any other vaccines due.' else '' end
No live vaccine was administered in the last 4 weeks
/* @input: No live vaccine was administered in the last 4 weeks @pseudocode: Today's date − latest "Date and time of vaccination" (where "Live vaccine" = TRUE) ≥ 4 weeks */ define "No live vaccine was administered in the last 4 weeks": not("Live vaccine was administered in the last 4 weeks")
/* @input: No live vaccine was administered in the last 4 weeks @pseudocode: Today's date − latest "Date and time of vaccination" (where "Live vaccine" = TRUE) ≥ 4 weeks @code: No live vaccine was administered in the last 4 weeks-92 @decision: IMMZ.D2.DT.Rubella.High incidence: Countries with high incidence and mortality from rubella @decision: IMMZ.D2.DT.Rubella.Low incidence: Countries with low incidence of rubella */ define "No live vaccine was administered in the last 4 weeks": Encounter."No live vaccine was administered in the last 4 weeks"
/* @output: Client is due for rubella vaccination @pseudocode: "Immunization recommendation status" = "Due" */ define "Client is due for rubella vaccination": Encounter."No rubella primary series dose was administered" and Encounter."Client's age is more than or equal to 9 months" and Encounter."No live vaccine was administered in the last 4 weeks"
Client is due for rubella vaccination Guidance
/* @output: Client is due for rubella vaccination Guidance @guidance: Should vaccinate client with rubella dose as no rubella doses were administered, client is within the appropriate age range and no live vaccine was administered in the last 4 weeks. Check for contraindications. */ define "Client is due for rubella vaccination Guidance": 'Should vaccinate client with rubella dose as no rubella doses were administered, client is within the appropriate age range and no live vaccine was administered in the last 4 weeks. Check for contraindications.'
One rubella primary series dose was administered
/* @input: One rubella primary series dose was administered @pseudocode: Count of vaccines administered (where "Vaccine type" = "Rubella-containing vaccines" and "Type of dose" = "Primary series") = 1 @code: One rubella primary series dose was administered-127 @decision: IMMZ.D2.DT.Rubella.High incidence: Countries with high incidence and mortality from rubella @decision: IMMZ.D2.DT.Rubella.Low incidence: Countries with low incidence of rubella */ define "One rubella primary series dose was administered": "Number of Rubella Primary Series Doses Administered" = 1
Rubella immunization schedule is complete
/* @output: Rubella immunization schedule is complete @pseudocode: "Immunization recommendation status" = "Complete" "Completed the primary vaccination series" = TRUE (where "Vaccine type" = "Rubella-containing vaccines") */ define "Rubella immunization schedule is complete": Encounter."One rubella primary series dose was administered"
Rubella immunization schedule is complete Guidance
/* @output: Rubella immunization schedule is complete Guidance @guidance: Rubella immunization schedule is complete. One rubella primary series dose was administered. Check for any other vaccines due. */ define "Rubella immunization schedule is complete Guidance": 'Rubella immunization schedule is complete. One rubella primary series dose was administered. Check for any other vaccines due.'
/* @dynamicValue: Guidance */ define "Guidance": case when "Client is not due for rubella vaccination" then "Client is not due for rubella vaccination Guidance" when "Client is due for rubella vaccination" then "Client is due for rubella vaccination Guidance" when "Rubella immunization schedule is complete" then "Rubella immunization schedule is complete 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.Rubella.High incidence Countries with high incidence and mortality from rubella
WHO recommendations for routine immunization - summary tables (January 2025)
The first dose of rubella-containing vaccine can be delivered at 9 months of age, due to a high level of measles virus transmission.
Determine if the client is due for Rubella.
Determine if the client is due for Rubella vaccine according to the national immunization protocol. Countries with high incidence and mortality from rubella
Concept { codes: { Code { system: 'http://smart.who.int/immunizations/CodeSystem/IMMZ.Z', code: 'DE17', display: 'Rubella-containing vaccines' } }, display: 'Rubella-containing vaccines' }
Check for Guidance for the patient regarding IMMZ.D2.DT.Rubella.High incidence.
Show Guidance for the patient regarding IMMZ.D2.DT.Rubella.High incidence.
Code { system: 'http://terminology.hl7.org/CodeSystem/communication-category', code: 'alert' }
Code { system: 'http://hl7.org/fhir/request-priority', code: 'routine' }