Id: IMMZD2DTMeningococcalMenAConjugateVaccine2Doses Url: IMMZ.D2.DT.Meningococcal.MenA conjugate vaccine 2 doses Version: 0.2.0 Title: IMMZ.D2.DT.Meningococcal.MenA conjugate 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.Meningococcal.MenA conjugate vaccine 2 doses MenA conjugate vaccine, 2-dose schedule (specific context where there is a compelling reason to vaccinate infants aged under 9 months) Knowledge Capability: computable Related Artifacts: References WHO recommendations for routine immunization - summary tables (January 2025) Libraries: IMMZD2DTMeningococcalMenAConjugateVaccine2DosesLogic Actions: Determine if the client is due for Meningococcal.: Determine if the client is due for Meningococcal vaccine according to the national immunization protocol. MenA conjugate vaccine, 2-dose schedule (specific context where there is a compelling reason to vaccinate infants aged under 9 months) If: Applicability: Client is due for meningococcal vaccination (Client is due for meningococcal vaccination) Then: Definition: IMMZD2DTMR Dynamic Values: status: ('draft') intent: ('proposal') medication: (Concept { codes: { Code { system: 'http://smart.who.int/immunizations/CodeSystem/IMMZ.Z', code: 'DE10', display: 'Meningococcal vaccines' } }, display: 'Meningococcal vaccines' }) Check for Guidance for the patient regarding IMMZ.D2.DT.Meningococcal.MenA conjugate vaccine 2 doses.: Show Guidance for the patient regarding IMMZ.D2.DT.Meningococcal.MenA conjugate 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 months */ define "Current Patient Age In Months": AgeInMonthsAt(Today)
/* @input: Client's age is less than 3 months @pseudocode: Today's date − "Date of birth" < 3 months @code: Client's age is less than 3 months-41 @decision: IMMZ.D2.DT.Meningococcal.MenA conjugate vaccine 2 doses: MenA conjugate vaccine, 2-dose schedule (specific context where there is a compelling reason to vaccinate infants aged under 9 months) */ define "Client's age is less than 3 months": Encounter."Current Patient Age In Months" < 3
Client is not due for meningococcal vaccination Case 1
/* @output: Client is not due for meningococcal vaccination Case 1 @pseudocode: "Immunization recommendation status" = "Not due" */ define "Client is not due for meningococcal vaccination Case 1": Encounter."Client's age is less than 3 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
Meningococcal Doses Administered to Patient
/* @internal: Meningococcal containing Doses Administered to Patient */ define "Meningococcal Doses Administered to Patient": Encounter."Doses Administered to Patient" I where I.vaccineCode in Concepts."Meningococcal vaccines"
Meningococcal Primary Series Doses Administered to Patient
/* @internal: Meningococcal containing Doses Administered to Patient that are in the Primary series */ define "Meningococcal Primary Series Doses Administered to Patient": "Meningococcal Doses Administered to Patient".seriesPrimary()
Number of Meningococcal Primary Series Doses Administered
/* @internal: Number of Meningococcal Primary Series doses */ define "Number of Meningococcal Primary Series Doses Administered": Count("Meningococcal Primary Series Doses Administered to Patient")
One meningococcal primary series dose was administered
/* @input: One meningococcal primary series dose was administered @pseudocode: Count of vaccines administered (where "Vaccine type" = "Meningococcal vaccines" and "Type of dose" = "Primary series") = 1 @code: One meningococcal primary series dose was administered-122 @decision: IMMZ.D2.DT.Meningococcal.MenA conjugate vaccine 1 dose: MenA conjugate vaccine, 1-dose schedule @decision: IMMZ.D2.DT.Meningococcal.MenA conjugate vaccine 2 doses: MenA conjugate vaccine, 2-dose schedule (specific context where there is a compelling reason to vaccinate infants aged under 9 months) @decision: IMMZ.D2.DT.Meningococcal.Monovalent MenC conjugate vaccine: Monovalent MenC conjugate vaccine schedule @decision: IMMZ.D2.DT.Meningococcal.Quadrivalent conjugate vaccines 1 dose: Quadrivalent conjugate vaccines (A,C,W135,Y-CRM), 1-dose schedule @decision: IMMZ.D2.DT.Meningococcal.Quadrivalent conjugate vaccines 2 doses: Quadrivalent conjugate vaccines (A,C,W135,Y-D), 2-dose schedule @decision: IMMZ.D2.DT.Meningococcal.Polysaccharide vaccines: Polysaccharide vaccines schedule (Polysaccharide vaccines can be used to control outbreaks in countries where limited economic resources or insufficient supply restrict the use of meningococcal conjugate vaccines) */ define "One meningococcal primary series dose was administered": "Number of Meningococcal Primary Series Doses Administered" = 1
Date of Latest Primary Meningococcal Dose
/* @internal: Date of Latest Primary Meningococcal Dose */ define "Date of Latest Primary Meningococcal Dose": date from start of "Meningococcal Primary Series Doses Administered to Patient".mostRecent().occurrence.toInterval()
The latest meningococcal dose was administered less than 8 weeks ago
/* @input: The latest meningococcal dose was administered less than 8 weeks ago @pseudocode: Today's date − "Date and time of vaccination" (where "Vaccine type" = "Meningococcal vaccines") < 8 weeks @code: The latest meningococcal dose was administered less than 8 weeks ago-105 @decision: IMMZ.D2.DT.Meningococcal.MenA conjugate vaccine 2 doses: MenA conjugate vaccine, 2-dose schedule (specific context where there is a compelling reason to vaccinate infants aged under 9 months) */ define "The latest meningococcal dose was administered less than 8 weeks ago": "Date of Latest Primary Meningococcal Dose" is not null and duration in weeks between "Date of Latest Primary Meningococcal Dose" and Today < 8
Client is not due for meningococcal vaccination Case 2
/* @output: Client is not due for meningococcal vaccination Case 2 @pseudocode: "Immunization recommendation status" = "Not due" */ define "Client is not due for meningococcal vaccination Case 2": Encounter."One meningococcal primary series dose was administered" and Encounter."The latest meningococcal dose was administered less than 8 weeks ago"
Client is not due for meningococcal vaccination
/* @output: Client is not due for meningococcal vaccination @pseudocode: "Immunization recommendation status" = "Not due" */ define "Client is not due for meningococcal vaccination": "Client is not due for meningococcal vaccination Case 1" or "Client is not due for meningococcal vaccination Case 2"
Client is not due for meningococcal vaccination Guidance
/* @output: Client is not due for meningococcal vaccination Guidance @guidance = Should not vaccinate client with first meningococcal dose as client's age is under 3 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 second meningococcal dose as the latest meningococcal dose was administered less than 8 weeks ago. Check for any vaccines due and inform the caregiver of when to come back for the second dose. */ define "Client is not due for meningococcal vaccination Guidance": case when "Client is not due for meningococcal vaccination Case 1" then 'Should not vaccinate client with first meningococcal dose as client\'s age is under 3 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 meningococcal vaccination Case 2" then 'Should not vaccinate client with second meningococcal dose as the latest meningococcal dose was administered less than 8 weeks ago. Check for any vaccines due and inform the caregiver of when to come back for the second dose.' else '' end
No meningococcal primary series dose was administered
/* @input: No meningococcal primary series dose was administered @pseudocode: Count of vaccines administered (where "Vaccine type" = "Meningococcal vaccines" and "Type of dose" = "Primary series") = 0 @code: No meningococcal primary series dose was administered-122 @decision: IMMZ.D2.DT.Meningococcal.MenA conjugate vaccine 1 dose: MenA conjugate vaccine, 1-dose schedule @decision: IMMZ.D2.DT.Meningococcal.MenA conjugate vaccine 2 doses: MenA conjugate vaccine, 2-dose schedule (specific context where there is a compelling reason to vaccinate infants aged under 9 months) @decision: IMMZ.D2.DT.Meningococcal.Monovalent MenC conjugate vaccine: Monovalent MenC conjugate vaccine schedule @decision: IMMZ.D2.DT.Meningococcal.Quadrivalent conjugate vaccines 1 dose: Quadrivalent conjugate vaccines (A,C,W135,Y-CRM), 1-dose schedule @decision: IMMZ.D2.DT.Meningococcal.Quadrivalent conjugate vaccines 2 doses: Quadrivalent conjugate vaccines (A,C,W135,Y-D), 2-dose schedule @decision: IMMZ.D2.DT.Meningococcal.Polysaccharide vaccines: Polysaccharide vaccines schedule (Polysaccharide vaccines can be used to control outbreaks in countries where limited economic resources or insufficient supply restrict the use of meningococcal conjugate vaccines) */ define "No meningococcal primary series dose was administered": "Number of Meningococcal Primary Series Doses Administered" = 0
Client's age is more than or equal to 3 months
/* @input: Client's age is more than or equal to 3 months @pseudocode: Today's date − "Date of birth" ≥ 3 months @code: Client's age is more than or equal to 3 months-41 @decision: IMMZ.D2.DT.Meningococcal.MenA conjugate vaccine 2 doses: MenA conjugate vaccine, 2-dose schedule (specific context where there is a compelling reason to vaccinate infants aged under 9 months) */ define "Client's age is more than or equal to 3 months": Encounter."Current Patient Age In Months" >= 3
Client is due for meningococcal vaccination Case 1
/* @output: Client is due for meningococcal vaccination Case 1 @pseudocode: "Immunization recommendation status" = "Due" */ define "Client is due for meningococcal vaccination Case 1": Encounter."No meningococcal primary series dose was administered" and Encounter."Client's age is more than or equal to 3 months"
The latest meningococcal dose was administered more than 8 weeks ago
/* @input: The latest meningococcal dose was administered more than 8 weeks ago @pseudocode: Today's date − "Date and time of vaccination" (where "Vaccine type" = "Meningococcal vaccines") ≥ 8 weeks @code: The latest meningococcal dose was administered more than 8 weeks ago-105 @decision: IMMZ.D2.DT.Meningococcal.MenA conjugate vaccine 2 doses: MenA conjugate vaccine, 2-dose schedule (specific context where there is a compelling reason to vaccinate infants aged under 9 months) */ define "The latest meningococcal dose was administered more than 8 weeks ago": not "The latest meningococcal dose was administered less than 8 weeks ago"
Client is due for meningococcal vaccination Case 2
/* @output: Client is due for meningococcal vaccination Case 2 @pseudocode: "Immunization recommendation status" = "Due" */ define "Client is due for meningococcal vaccination Case 2": Encounter."One meningococcal primary series dose was administered" and Encounter."The latest meningococcal dose was administered more than 8 weeks ago"
Client is due for meningococcal vaccination
/* @output: Client is due for meningococcal vaccination @pseudocode: "Immunization recommendation status" = "Due" */ define "Client is due for meningococcal vaccination": "Client is due for meningococcal vaccination Case 1" or "Client is due for meningococcal vaccination Case 2"
Client is due for meningococcal vaccination Guidance
/* @output: Client is due for meningococcal vaccination Guidance @guidance = Should vaccinate client with first meningococcal dose as no meningococcal doses were administered and client is within appropriate age range. Check for contraindications. @guidance = Should vaccinate client with second meningococcal dose as the latest meningococcal dose was administered more than 8 weeks ago. Check for contraindications. */ define "Client is due for meningococcal vaccination Guidance": case when "Client is due for meningococcal vaccination Case 1" then 'Should vaccinate client with first meningococcal dose as no meningococcal doses were administered and client is within appropriate age range. Check for contraindications.' when "Client is due for meningococcal vaccination Case 2" then 'Should vaccinate client with second meningococcal dose as the latest meningococcal dose was administered more than 8 weeks ago. Check for contraindications.' else '' end
Two meningococcal primary series doses were administered
/* @input: Two meningococcal primary series doses were administered @pseudocode: Count of vaccines administered (where "Vaccine type" = "Meningococcal vaccines" and "Type of dose" = "Primary series") = 2 @code: Two meningococcal primary series doses were administered-122 @decision: IMMZ.D2.DT.Meningococcal.MenA conjugate vaccine 2 doses: MenA conjugate vaccine, 2-dose schedule (specific context where there is a compelling reason to vaccinate infants aged under 9 months) @decision: IMMZ.D2.DT.Meningococcal.Monovalent MenC conjugate vaccine: Monovalent MenC conjugate vaccine schedule @decision: IMMZ.D2.DT.Meningococcal.Quadrivalent conjugate vaccines 2 doses: Quadrivalent conjugate vaccines (A,C,W135,Y-D), 2-dose schedule */ define "Two meningococcal primary series doses were administered": "Number of Meningococcal Primary Series Doses Administered" = 2
Meningococcal immunization schedule is complete
/* @output: Meningococcal immunization schedule is complete @pseudocode: "Immunization recommendation status" = "Complete" "Completed the primary vaccination series" (where "Vaccine type" = "Meningococcal vaccines") = TRUE */ define "Meningococcal immunization schedule is complete": Encounter."Two meningococcal primary series doses were administered"
Meningococcal immunization schedule is complete Guidance
/* @output: Meningococcal immunization schedule is complete Guidance @guidance: Meningococcal immunization schedule is complete. Two meningococcal primary series doses were administered. Check for any other vaccines due. */ define "Meningococcal immunization schedule is complete Guidance": 'Meningococcal immunization schedule is complete. Two meningococcal primary series doses were administered. Check for any other vaccines due.'
/* @dynamicValue: Guidance */ define "Guidance": case when "Client is not due for meningococcal vaccination" then "Client is not due for meningococcal vaccination Guidance" when "Client is due for meningococcal vaccination" then "Client is due for meningococcal vaccination Guidance" when "Meningococcal immunization schedule is complete" then "Meningococcal 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.Meningococcal.MenA conjugate vaccine 2 doses
IMMZ.D2.DT.Meningococcal.MenA conjugate vaccine 2 doses MenA conjugate vaccine, 2-dose schedule (specific context where there is a compelling reason to vaccinate infants aged under 9 months)
WHO recommendations for routine immunization - summary tables (January 2025)
If, in a specific context, there is a compelling reason to vaccinate infants aged under 9 months, a 2-dose schedule should be used starting at 3 months of age, with an interval of at least 8 weeks between doses.
Determine if the client is due for Meningococcal.
Determine if the client is due for Meningococcal vaccine according to the national immunization protocol. MenA conjugate vaccine, 2-dose schedule (specific context where there is a compelling reason to vaccinate infants aged under 9 months)
Concept { codes: { Code { system: 'http://smart.who.int/immunizations/CodeSystem/IMMZ.Z', code: 'DE10', display: 'Meningococcal vaccines' } }, display: 'Meningococcal vaccines' }
Check for Guidance for the patient regarding IMMZ.D2.DT.Meningococcal.MenA conjugate vaccine 2 doses.
Show Guidance for the patient regarding IMMZ.D2.DT.Meningococcal.MenA conjugate vaccine 2 doses.
Code { system: 'http://terminology.hl7.org/CodeSystem/communication-category', code: 'alert' }
Code { system: 'http://hl7.org/fhir/request-priority', code: 'routine' }