Id: IMMZD2DTMeaslesSupplementaryDose Url: IMMZ.D2.DT.Measles.Supplementary dose Version: 0.2.0 Title: IMMZ.D2.DT.Measles.Supplementary dose Status: draft Type: system: http://terminology.hl7.org/CodeSystem/plan-definition-type code: eca-rule Date: 2026-03-29 17:23:09+0000 Publisher: WHO Description: IMMZ.D2.DT.Measles.Supplementary dose Measles-containing vaccine (MCV) supplementary dose administration Knowledge Capability: computable Related Artifacts: References WHO recommendations for routine immunization - summary tables (January 2025) Libraries: IMMZD2DTMeaslesSupplementaryDoseLogic Actions: Check for Guidance for the patient regarding IMMZ.D2.DT.Measles.Supplementary dose.: Show Guidance for the patient regarding IMMZ.D2.DT.Measles.Supplementary dose. 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' })
Completed the primary vaccination series
/** * @dataElement All Doses Administered to Patient */ define "Doses Administered to Patient": [Immunization] I where I.status = 'completed' and I.isSubpotent is not true
/* @internal: MCV Doses Administered to Patient */ define "MCV Doses Administered to Patient": Elements."Doses Administered to Patient" I where I.vaccineCode in Concepts."Measles-containing vaccines"
MCV Supplementary Doses Administered to Patient
/* @internal: MCV Supplementary Doses Administered to Patient */ define "MCV Supplementary Doses Administered to Patient": "MCV Doses Administered to Patient".seriesSupplementary()
/* @internal: MCV Supplementary Doses Administered to Patient */ define "MCV Supplementary Doses Administered to Patient": MeaslesElements."MCV Supplementary Doses Administered to Patient".onOrBefore(Today)
Number of MCV Supplementary Doses Administered
/* @internal: Number of MCV Supplementary Doses Administered */ define "Number of MCV Supplementary Doses Administered": Count("MCV Supplementary Doses Administered to Patient")
Measles supplementary dose was not administered
/* @input: Measles supplementary dose was not administered @pseudocode: Count of vaccines administered (where "Vaccine type" = "Measles-containing vaccines" and "Type of dose" = "Supplementary dose") = 0 @code: Measles supplementary dose was not administered-131 @decision: IMMZ.D2.DT.Measles.Supplementary dose: Measles-containing vaccine (MCV) supplementary dose administration */ define "Measles supplementary dose was not administered": "Number of MCV Supplementary Doses Administered" = 0
MCV Primary Series Doses Administered to Patient
/* @internal: MCV Primary Series Doses Administered to Patient */ define "MCV Primary Series Doses Administered to Patient": "MCV Doses Administered to Patient".seriesPrimary()
/* @internal: MCV Primary Series Doses Administered to Patient */ define "MCV Primary Series Doses Administered to Patient": MeaslesElements."MCV Primary Series Doses Administered to Patient".onOrBefore(Today)
Number of MCV Primary Series Doses Administered
/* @internal: Number of MCV Primary Series Doses Administered */ define "Number of MCV Primary Series Doses Administered": Count("MCV Primary Series Doses Administered to Patient")
/* @input: MCV2 was administered @pseudocode: Count of vaccines administered (where "Vaccine type" = "Measles-containing vaccines" and "Type of dose" = "Primary series") = 2 @code: MCV2 was administered-127 @decision: IMMZ.D2.DT.Measles.Ongoing transmission: Countries with ongoing transmission in which the risk of measles mortality remains high (countries that provide first dose of measles-containing vaccine (MCV) at 9 months and second dose of MCV at 15 months) @decision: IMMZ.D2.DT.Measles.Low transmission: Countries with low levels of measles transmission (countries that provide first dose of measles-containing vaccine (MCV) at 12 months and second dose of MCV at 15 months) */ define "MCV2 was administered": "Number of MCV Primary Series Doses Administered" = 2
/* @internal: MCV Doses Administered to Patient */ define "MCV Doses Administered to Patient": MeaslesElements."MCV Doses Administered to Patient".onOrBefore(Today)
Completed the primary vaccination series Observation
/* @internal: Completed the primary vaccination series Observation */ define "Completed the primary vaccination series Observation": ([Observation: Concepts."Completed the primary vaccination series"]).complete()
/* @internal: Completed the primary vaccination series Observation */ define "Completed the primary vaccination series Observation": Elements."Completed the primary vaccination series Observation".encounterOrOnBefore(EncounterId, Today)
Measles routine immunization schedule is complete
/* @input: Measles routine immunization schedule is complete @pseudocode: "Completed the primary vaccination series" = TRUE (where "Vaccine type" = "Measles-containing vaccines") @code: Measles routine immunization schedule is complete-104 @decision: IMMZ.D2.DT.Measles.Supplementary dose: Measles-containing vaccine (MCV) supplementary dose administration */ define "Measles routine immunization schedule is complete": "MCV2 was administered" or Coalesce( "MCV Doses Administered to Patient" Dose aggregate Result: Encounter."Completed the primary vaccination series Observation".partOf.references(Dose) or Result, false )
/* @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.Measles.Ongoing transmission: Countries with ongoing transmission in which the risk of measles mortality remains high (countries that provide first dose of measles-containing vaccine (MCV) at 9 months and second dose of MCV at 15 months) @decision: IMMZ.D2.DT.Measles.Low transmission: Countries with low levels of measles transmission (countries that provide first dose of measles-containing vaccine (MCV) at 12 months and second dose of MCV at 15 months) @decision: IMMZ.D2.DT.Measles.MCV dose 0: Measles-containing vaccine dose 0 (MCV0) administration */ define "Live vaccine was administered in the last 4 weeks": Encounter."Live vaccine was administered in the last 4 weeks"
Live vaccine was administered in the past 4 weeks
/* @input: Live vaccine was administered in the past 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 past 4 weeks-92 @decision: IMMZ.D2.DT.Measles.Supplementary dose: Measles-containing vaccine (MCV) supplementary dose administration */ define "Live vaccine was administered in the past 4 weeks": "Live vaccine was administered in the last 4 weeks"
Client is not due for measles supplementary dose
/* @output: Client is not due for measles supplementary dose @pseudocode: "Immunization recommendation status" = "Not due" */ define "Client is not due for measles supplementary dose": Encounter."Measles supplementary dose was not administered" and Encounter."Measles routine immunization schedule is complete" and Encounter."Live vaccine was administered in the past 4 weeks"
Client is not due for measles supplementary dose Guidance
/* @output: Client is not due for measles supplementary dose Guidance @guidance: Should not vaccinate client with measles supplementary dose as live vaccine was administered in the past 4 weeks. Check for any vaccines due and inform the caregiver of when to come back for supplementary dose. */ define "Client is not due for measles supplementary dose Guidance": 'Should not vaccinate client with measles supplementary dose as live vaccine was administered in the past 4 weeks. Check for any vaccines due and inform the caregiver of when to come back for supplementary dose.'
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.Measles.Ongoing transmission: Countries with ongoing transmission in which the risk of measles mortality remains high (countries that provide first dose of measles-containing vaccine (MCV) at 9 months and second dose of MCV at 15 months) @decision: IMMZ.D2.DT.Measles.Low transmission: Countries with low levels of measles transmission (countries that provide first dose of measles-containing vaccine (MCV) at 12 months and second dose of MCV at 15 months) @decision: IMMZ.D2.DT.Measles.MCV dose 0: Measles-containing vaccine dose 0 (MCV0) administration */ define "No live vaccine was administered in the last 4 weeks": Encounter."No live vaccine was administered in the last 4 weeks"
No live vaccine was administered in the past 4 weeks
/* @input: No live vaccine was administered in the past 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 past 4 weeks-92 @decision: IMMZ.D2.DT.Measles.Supplementary dose: Measles-containing vaccine (MCV) supplementary dose administration */ define "No live vaccine was administered in the past 4 weeks": "No live vaccine was administered in the last 4 weeks"
Consider measles supplementary dose. Create a clinical note
/* @output: Consider measles supplementary dose. Create a clinical note @pseudocode: "Immunization recommendation status" = "Further evaluation needed" */ define "Consider measles supplementary dose. Create a clinical note": Encounter."Measles supplementary dose was not administered" and Encounter."Measles routine immunization schedule is complete" and Encounter."No live vaccine was administered in the past 4 weeks"
Consider measles supplementary dose. Create a clinical note Guidance
/* @output: Consider measles supplementary dose. Create a clinical note Guidance @guidance: May vaccinate client with measles supplementary dose as supplementary dose was not administered, measles routine immunization schedule is complete and no live vaccine administered in the past 4 weeks. Check if one of the measles supplementary dose specific scenarios is applicable. */ define "Consider measles supplementary dose. Create a clinical note Guidance": 'May vaccinate client with measles supplementary dose as supplementary dose was not administered, measles routine immunization schedule is complete and no live vaccine administered in the past 4 weeks. Check if one of the measles supplementary dose specific scenarios is applicable.'
Measles supplementary dose was administered
/* @input: Measles supplementary dose was administered @pseudocode: Count of vaccines administered (where "Vaccine type" = "Measles-containing vaccines" and "Type of dose" = "Supplementary dose") = 1 @code: Measles supplementary dose was administered-131 @decision: IMMZ.D2.DT.Measles.Supplementary dose: Measles-containing vaccine (MCV) supplementary dose administration */ define "Measles supplementary dose was administered": "Number of MCV Supplementary Doses Administered" = 1
Measles immunization schedule is complete
/* @output: Measles immunization schedule is complete @pseudocode: "Immunization recommendation status" = "Complete" */ define "Measles immunization schedule is complete": Encounter."Measles supplementary dose was administered"
Measles immunization schedule is complete Guidance
/* @output: Measles immunization schedule is complete Guidance @guidance: Measles immunization schedule is complete. Measles supplementary dose was administered. */ define "Measles immunization schedule is complete Guidance": 'Measles immunization schedule is complete. Measles supplementary dose was administered.'
/* @dynamicValue: Guidance */ define "Guidance": case when "Client is not due for measles supplementary dose" then "Client is not due for measles supplementary dose Guidance" when "Consider measles supplementary dose. Create a clinical note" then "Consider measles supplementary dose. Create a clinical note Guidance" when "Measles immunization schedule is complete" then "Measles immunization schedule is complete Guidance" else '' end
define "Has Guidance": "Guidance" is not null and "Guidance" != ''
/** * @description: Gets immunizations on or before a date */ define fluent function onOrBefore(immunizations List<Immunization>, beforeDate Date): immunizations I where I.occurrence.toInterval() same day or before beforeDate
/** * @description: Gets the doses from the Supplementary series */ define fluent function seriesSupplementary(immunizations List<Immunization>): immunizations I where exists( I.protocolApplied pa where pa.series = 'Supplementary dose' )
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 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' )
/* @description: Returns true if any of the given references are to the given resource @comment: Returns true if the `id` element of the given resource exactly equals the tail of any of the given references. NOTE: This function assumes resources from the same source server. */ define fluent function references(references List<FHIR.Reference>, resource FHIR.Resource): exists (references R where R.references(resource))
/* @description: Returns true if the given reference is to the given resource @comment: Returns true if the `id` element of the given resource exactly equals the tail of the given reference. NOTE: This function assumes resources from the same source server. */ define fluent function references(reference FHIR.Reference, resource FHIR.Resource): resource.id = Last(Split(reference.reference, '/'))
/** * @description: Gets observation from an encounter or on or before a date */ define fluent function encounterOrOnBefore(observations List<Observation>, EncounterId String, beforeDate Date): observations O where (O.encounter.references(EncounterId) or O.effective.toInterval() starts same day or before beforeDate)
/* @description: Returns true if the given reference is to the given resourceId @comment: Returns true if the `resourceId` parameter exactly equals the tail of the given reference. NOTE: This function assumes resources from the same source server. */ define fluent function references(reference FHIR.Reference, resourceId String): resourceId = Last(Split(reference.reference, '/'))
define fluent function complete(observations List<Observation>): observations O where O.status in { 'final', 'amended', 'corrected' }
define function ToString(value ObservationStatus): value.value
define fluent function mostRecent(immunizations List<Immunization>): Last( immunizations I sort by start of occurrence.toInterval() )
IMMZ.D2.DT.Measles.Supplementary dose Measles-containing vaccine (MCV) supplementary dose administration
WHO recommendations for routine immunization - summary tables (January 2025)
Check for Guidance for the patient regarding IMMZ.D2.DT.Measles.Supplementary dose.
Show Guidance for the patient regarding IMMZ.D2.DT.Measles.Supplementary dose.
Code { system: 'http://terminology.hl7.org/CodeSystem/communication-category', code: 'alert' }
Code { system: 'http://hl7.org/fhir/request-priority', code: 'routine' }