Id: IMMZD18SHepatitisB4Doses Url: IMMZ.D18.S.Hepatitis B.4-dose schedule Version: 0.2.0 Title: IMMZ.D18.S.Hepatitis B.4-dose schedule 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.D18.S.Hepatitis B.4-dose schedule 4-dose schedule (birth dose + 3 primary series doses), on-time start Knowledge Capability: computable Related Artifacts: References WHO recommendations for routine immunization - summary tables (January 2025) Libraries: IMMZD18SHepatitisB4DosesLogic Actions: Hepatitis B dose 1: Provision of hepatitis B dose 1 Trigger event: Child's birth Trigger pseudo: Trigger date: "Date of birth" Create condition: The following option is considered appropriate: 4 doses, where a monovalent birth dose is followed by 3 (monovalent or combined vaccine) doses, usually given with other routine infant vaccines; the additional dose does not cause any harm. The interval between doses should be at least 4 weeks. If: Applicability: Hepatitis B dose 1 (Hepatitis B dose 1) Then: Definition: IMMZ.D2.DT.CR Dynamic Values: status: ('active') payload.contentString: (Hepatitis B 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' }) Hepatitis B dose 2: Provision of hepatitis B dose 2 Trigger event: First hepatitis B dose from the primary series was administered Trigger pseudo: Count of vaccines administered (where "Vaccine type" = "Hepatitis B-containing vaccines" and "Type of dose"= "Primary series") = 1 Trigger date: Latest "Date and time of vaccination" (where "Vaccine type" = "Hepatitis B-containing vaccines") Create condition: The following option is considered appropriate: 4 doses, where a monovalent birth dose is followed by 3 (monovalent or combined vaccine) doses, usually given with other routine infant vaccines; the additional dose does not cause any harm. The interval between doses should be at least 4 weeks. If: Applicability: Hepatitis B dose 2 (Hepatitis B dose 2) Then: Definition: IMMZ.D2.DT.CR Dynamic Values: status: ('active') payload.contentString: (Hepatitis B 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' }) Hepatitis B dose 3: Provision of hepatitis B dose 3 Trigger event: Second hepatitis B dose from the primary series was administered Trigger pseudo: Count of vaccines administered (where "Vaccine type" = "Hepatitis B-containing vaccines" and "Type of dose"= "Primary series") = 2 Trigger date: Latest "Date and time of vaccination" (where "Vaccine type" = "Hepatitis B-containing vaccines") Create condition: The following option is considered appropriate: 4 doses, where a monovalent birth dose is followed by 3 (monovalent or combined vaccine) doses, usually given with other routine infant vaccines; the additional dose does not cause any harm. The interval between doses should be at least 4 weeks. If: Applicability: Hepatitis B dose 3 (Hepatitis B dose 3) Then: Definition: IMMZ.D2.DT.CR Dynamic Values: status: ('active') payload.contentString: (Hepatitis B dose 3 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
Hepatitis B Doses Administered to Patient
/* @internal: Hepatitis B containing Doses Administered to Patient */ define "Hepatitis B Doses Administered to Patient": Elements."Doses Administered to Patient" I where I.vaccineCode in Concepts."Hepatitis B-containing vaccines"
Hepatitis B Primary Series Doses Administered to Patient
/* @internal: Hepatitis B containing Doses Administered to Patient that are in the Primary series */ define "Hepatitis B Primary Series Doses Administered to Patient": "Hepatitis B Doses Administered to Patient".seriesPrimary()
/* @internal: Hepatitis B containing Doses Administered to Patient that are in the Primary series */ define "Hepatitis B Primary Series Doses Administered to Patient": HepatitisBElements."Hepatitis B Primary Series Doses Administered to Patient".onOrBefore(Today)
Number of Hepatitis B Primary Series Doses Administered
/* @internal: Number of Hepatitis B Primary Series doses */ define "Number of Hepatitis B Primary Series Doses Administered": Count("Hepatitis B Primary Series Doses Administered to Patient")
One hepatitis B primary series dose was administered
/* @input: One hepatitis B primary series dose was administered @pseudocode: Count of vaccines administered (where "Vaccine type" = "Hepatitis B-containing vaccines" and "Type of dose" = "Primary series") = 1 @code: One hepatitis B primary series dose was administered-131 @decision: IMMZ.D2.DT.Hepatitis B.3 doses: 3-dose schedule (birth dose + 2 primary series doses), on-time start */ define "One hepatitis B primary series dose was administered": "Number of Hepatitis B Primary Series Doses Administered" = 1
First hepatitis B dose from the primary series was administered
/* @complete: First hepatitis B dose from the primary series was administered @pseudocode: Count of vaccines administered (where "Vaccine type" = "Hepatitis B-containing vaccines" and "Type of dose"= "Primary series") = 1 */ define "First hepatitis B dose from the primary series was administered": Encounter."One hepatitis B primary series dose was administered"
Two hepatitis B primary series doses were administered
/* @input: Two hepatitis B primary series doses were administered @pseudocode: Count of vaccines administered (where "Vaccine type" = "Hepatitis B-containing vaccines" and "Type of dose" = "Primary series") = 2 @code: Two hepatitis B primary series doses were administered-131 @decision: IMMZ.D2.DT.Hepatitis B.3 doses: 3-dose schedule (birth dose + 2 primary series doses), on-time start @decision: IMMZ.D2.DT.Hepatitis B.4 doses: 4-dose schedule (birth dose + 3 primary series doses), on-time start */ define "Two hepatitis B primary series doses were administered": "Number of Hepatitis B Primary Series Doses Administered" = 2
Second hepatitis B dose from the primary series was administered
/* @complete: Second hepatitis B dose from the primary series was administered @pseudocode: Count of vaccines administered (where "Vaccine type" = "Hepatitis B-containing vaccines" and "Type of dose"= "Primary series") = 2 */ define "Second hepatitis B dose from the primary series was administered": Encounter."Two hepatitis B primary series doses were administered"
Three hepatitis B primary series doses were administered
/* @input: Three hepatitis B primary series doses were administered @pseudocode: Count of vaccines administered (where "Vaccine type" = "Hepatitis B-containing vaccines" and "Type of dose" = "Primary series") = 3 @code: Three hepatitis B primary series doses were administered-131 @decision: IMMZ.D2.DT.Hepatitis B.3 doses: 3-dose schedule (birth dose + 2 primary series doses), on-time start @decision: IMMZ.D2.DT.Hepatitis B.4 doses: 4-dose schedule (birth dose + 3 primary series doses), on-time start */ define "Three hepatitis B primary series doses were administered": "Number of Hepatitis B Primary Series Doses Administered" = 3
Third hepatitis B dose from the primary series was administered. The primary series has been completed
/* @complete: Third hepatitis B dose from the primary series was administered. The primary series has been completed @pseudocode: "Completed the primary vaccination series" = TRUE (where "Vaccine type" = "Hepatitis B-containing vaccines") */ define "Third hepatitis B dose from the primary series was administered. The primary series has been completed": Encounter."Three hepatitis B primary series doses were administered"
/* @output: Hepatitis B dose 1 @description: Provision of hepatitis B dose 1 @trigger: Child's birth @pseudo: @triggerDate: "Date of birth" */ define "Hepatitis B dose 1": not "First hepatitis B dose from the primary series was administered" and not "Second hepatitis B dose from the primary series was administered" and not "Third hepatitis B dose from the primary series was administered. The primary series has been completed"
/* @output: Hepatitis B dose 3 @description: Provision of hepatitis B dose 3 @trigger: Second hepatitis B dose from the primary series was administered @pseudo: Count of vaccines administered (where "Vaccine type" = "Hepatitis B-containing vaccines" and "Type of dose"= "Primary series") = 2 @triggerDate: Latest "Date and time of vaccination" (where "Vaccine type" = "Hepatitis B-containing vaccines") */ define "Hepatitis B dose 3": "Second hepatitis B dose from the primary series was administered" and not "Third hepatitis B dose from the primary series was administered. The primary series has been completed"
/* @output: Hepatitis B dose 2 @description: Provision of hepatitis B dose 2 @trigger: First hepatitis B dose from the primary series was administered @pseudo: Count of vaccines administered (where "Vaccine type" = "Hepatitis B-containing vaccines" and "Type of dose"= "Primary series") = 1 @triggerDate: Latest "Date and time of vaccination" (where "Vaccine type" = "Hepatitis B-containing vaccines") */ define "Hepatitis B dose 2": "First hepatitis B dose from the primary series was administered" and not "Second hepatitis B dose from the primary series was administered" and not "Third hepatitis B dose from the primary series was administered. The primary series has been completed"
/* @internal: Hepatitis B containing Doses Administered to Patient */ define "Hepatitis B Doses Administered to Patient": HepatitisBElements."Hepatitis B Doses Administered to Patient".onOrBefore(Today)
/* @internal: Date of Latest Hepatitis B Dose */ define "Date of Latest Hepatitis B Dose": date from start of "Hepatitis B Doses Administered to Patient".mostRecent().occurrence.toInterval()
/* @dynamicValue: Hepatitis B dose 2 Due Date @pseudocode: Latest "Date and time of vaccination" (where "Vaccine type" = "Hepatitis B-containing vaccines") + 4 weeks */ define "Hepatitis B dose 2 Due Date": if "Hepatitis B dose 2" then Encounter."Date of Latest Hepatitis B Dose" + 4 weeks else null
/* @output: Hepatitis B dose 2 Create @create: The following option is considered appropriate: 4 doses, where a monovalent birth dose is followed by 3 (monovalent or combined vaccine) doses, usually given with other routine infant vaccines; the additional dose does not cause any harm. The interval between doses should be at least 4 weeks. */ define "Hepatitis B dose 2 Create": if "Hepatitis B dose 2" then 'The following option is considered appropriate: 4 doses, where a monovalent birth dose is followed by 3 (monovalent or combined vaccine) doses, usually given with other routine infant vaccines; the additional dose does not cause any harm. The interval between doses should be at least 4 weeks.' + ' Due Date: ' + ToString("Hepatitis B dose 2 Due Date") else ''
/* @dynamicValue: Hepatitis B dose 1 Due Date @pseudocode: "Date of birth" + Member States defined lower limit */ define "Hepatitis B dose 1 Due Date": if "Hepatitis B dose 1" then Patient.birthDate + (Encounter.HepBLowerLimitWeeks * 1 weeks) else null
/* @output: Hepatitis B dose 1 Create @create: The following option is considered appropriate: 4 doses, where a monovalent birth dose is followed by 3 (monovalent or combined vaccine) doses, usually given with other routine infant vaccines; the additional dose does not cause any harm. The interval between doses should be at least 4 weeks. */ define "Hepatitis B dose 1 Create": if "Hepatitis B dose 1" then 'The following option is considered appropriate: 4 doses, where a monovalent birth dose is followed by 3 (monovalent or combined vaccine) doses, usually given with other routine infant vaccines; the additional dose does not cause any harm. The interval between doses should be at least 4 weeks.' + ' Due Date: ' + ToString("Hepatitis B dose 1 Due Date") else ''
/* @dynamicValue: Hepatitis B dose 3 Due Date @pseudocode: Latest "Date and time of vaccination" (where "Vaccine type" = "Hepatitis B-containing vaccines") + 4 weeks */ define "Hepatitis B dose 3 Due Date": if "Hepatitis B dose 3" then Encounter."Date of Latest Hepatitis B Dose" + 4 weeks else null
/* @output: Hepatitis B dose 3 Create @create: The following option is considered appropriate: 4 doses, where a monovalent birth dose is followed by 3 (monovalent or combined vaccine) doses, usually given with other routine infant vaccines; the additional dose does not cause any harm. The interval between doses should be at least 4 weeks. */ define "Hepatitis B dose 3 Create": if "Hepatitis B dose 3" then 'The following option is considered appropriate: 4 doses, where a monovalent birth dose is followed by 3 (monovalent or combined vaccine) doses, usually given with other routine infant vaccines; the additional dose does not cause any harm. The interval between doses should be at least 4 weeks.' + ' Due Date: ' + ToString("Hepatitis B dose 3 Due Date") else ''
/** * @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 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() )
define function ToDate(value date): value.value
Value set Hepatitis B-containing vaccines
IMMZ.D18.S.Hepatitis B.4-dose schedule 4-dose schedule (birth dose + 3 primary series doses), on-time start
WHO recommendations for routine immunization - summary tables (January 2025)
Provision of hepatitis B dose 1 Trigger event: Child's birth Trigger pseudo: Trigger date: "Date of birth" Create condition: The following option is considered appropriate: 4 doses, where a monovalent birth dose is followed by 3 (monovalent or combined vaccine) doses, usually given with other routine infant vaccines; the additional dose does not cause any harm. The interval between doses should be at least 4 weeks.
Code { system: 'http://terminology.hl7.org/CodeSystem/communication-category', code: 'alert' }
Code { system: 'http://hl7.org/fhir/request-priority', code: 'routine' }
Provision of hepatitis B dose 2 Trigger event: First hepatitis B dose from the primary series was administered Trigger pseudo: Count of vaccines administered (where "Vaccine type" = "Hepatitis B-containing vaccines" and "Type of dose"= "Primary series") = 1 Trigger date: Latest "Date and time of vaccination" (where "Vaccine type" = "Hepatitis B-containing vaccines") Create condition: The following option is considered appropriate: 4 doses, where a monovalent birth dose is followed by 3 (monovalent or combined vaccine) doses, usually given with other routine infant vaccines; the additional dose does not cause any harm. The interval between doses should be at least 4 weeks.
Provision of hepatitis B dose 3 Trigger event: Second hepatitis B dose from the primary series was administered Trigger pseudo: Count of vaccines administered (where "Vaccine type" = "Hepatitis B-containing vaccines" and "Type of dose"= "Primary series") = 2 Trigger date: Latest "Date and time of vaccination" (where "Vaccine type" = "Hepatitis B-containing vaccines") Create condition: The following option is considered appropriate: 4 doses, where a monovalent birth dose is followed by 3 (monovalent or combined vaccine) doses, usually given with other routine infant vaccines; the additional dose does not cause any harm. The interval between doses should be at least 4 weeks.