WHO Antenatal Care Guideline Implementation Guide
0.3.0 - CI Build International flag

WHO Antenatal Care Guideline Implementation Guide, published by World Health Organization (WHO). This guide is not an authorized publication; it is the continuous build for version 0.3.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/WorldHealthOrganization/smart-anc/ and changes regularly. See the Directory of published versions

Measure: ANC.IND.01 Percentage of pregnant women with first ANC contact in the first trimester

Official URL: http://smart.who.int/anc/Measure/ANCIND01 Version: 0.3.0
Draft as of 2025-06-24 Computable Name: ANCIND01

Percentage of pregnant women with first ANC contact in the first trimester (before 12 weeks of gestation)

Knowledge Artifact Metadata
Name (machine-readable) ANCIND01
Title (human-readable) ANC.IND.01 Percentage of pregnant women with first ANC contact in the first trimester
Status Draft
Experimental false
Description

Percentage of pregnant women with first ANC contact in the first trimester (before 12 weeks of gestation)

Measure Steward World Health Organization (WHO)
Steward Contact Details https://www.who.int
Measure Metadata
Version Number 0.3.0
Measure Scoring Proportion
Measure Type Process
Improvement Notation Increased score indicates improvement
Measure Population Criteria (ID: group-1)
Initial Population ID: initial-population
Description: No description provided Logic Definition: Initial Population
Denominator ID: denominator
Description: No description provided Logic Definition: Denominator
Numerator ID: numerator
Description: No description provided Logic Definition: Numerator
Stratifier ID: by-age
Stratifier ID: by-education-level
Measure Logic
Primary Library ANC.IND.01 Percentage of pregnant women with first ANC contact in the first trimester
Dependency Description: Library BaseData
Resource: ANC Base Data Elements
Canonical URL: http://smart.who.int/anc/Library/ANCBaseDataElements
Dependency Description: Library BCx
Resource: ANC Base Concepts
Canonical URL: http://smart.who.int/anc/Library/ANCBaseConcepts
Dependency Description: Library FHIRHelpers
Resource: http://smart.who.int/anc/Library/FHIRHelpers|4.0.1
Canonical URL: http://smart.who.int/anc/Library/FHIRHelpers|4.0.1
Dependency Description: Library Cx
Resource: ANC Concepts
Canonical URL: http://smart.who.int/anc/Library/ANCConcepts
Dependency Description: Library ContactData
Resource: ANC Contact Data Elements
Canonical URL: http://smart.who.int/anc/Library/ANCContactDataElements
Dependency Description: Library WC
Resource: WHO Common
Canonical URL: http://smart.who.int/anc/Library/WHOCommon
Dependency Description: Library Stratifiers
Resource: ANC Stratifiers
Canonical URL: http://smart.who.int/anc/Library/ANCStratifiers
Dependency Description: Code system ISO-8601-Derived Periods
Resource: http://ohie.org/CodeSystem/iso-8601-derived-periods
Canonical URL: http://ohie.org/CodeSystem/iso-8601-derived-periods
Dependency Description: Value set Antenatal care contact
Resource: Antenatal care contact
Canonical URL: http://smart.who.int/anc/ValueSet/antenatal-care-contact
Dependency Description: Value set First Antenatal Care Contact Choices
Resource: First Antenatal Care Contact Choices
Canonical URL: http://smart.who.int/anc/ValueSet/anc-b5-de2
Dependency Description: Value set Gestational age
Resource: Gestational age
Canonical URL: http://smart.who.int/anc/ValueSet/anc-b6-de17
Dependency Description: Value set Antenatal care case
Resource: Antenatal care case
Canonical URL: http://smart.who.int/anc/ValueSet/antenatal-care-case
Direct Reference Code Display: 10-14 years
Code: P10Y--P14Y
System: http://ohie.org/CodeSystem/iso-8601-derived-periods
Direct Reference Code Display: 15-19 years
Code: P15Y--P19Y
System: http://ohie.org/CodeSystem/iso-8601-derived-periods
Direct Reference Code Display: 20+ years
Code: P20Y--P9999Y
System: http://ohie.org/CodeSystem/iso-8601-derived-periods
Parameter Name: Measurement Period
Use: In
Min Cardinality: 0
Max Cardinality: 1
Type: Period
Parameter Name: encounter
Use: In
Min Cardinality: 0
Max Cardinality: 1
Type: string
Parameter Name: Numerator
Use: Out
Min Cardinality: 0
Max Cardinality: 1
Type: boolean
Parameter Name: Age Stratifier
Use: Out
Min Cardinality: 0
Max Cardinality: 1
Type: Coding
Parameter Name: Denominator
Use: Out
Min Cardinality: 0
Max Cardinality: 1
Type: boolean
Parameter Name: Education Level Stratifier
Use: Out
Min Cardinality: 0
Max Cardinality: *
Type: CodeableConcept
Parameter Name: Initial Population
Use: Out
Min Cardinality: 0
Max Cardinality: 1
Type: boolean
Measure Logic Data Requirements
Data Requirement Type: Encounter
Profile(s): Encounter
Must Support Elements: type, reasonCode, period
Code Filter(s):
Path: type
ValueSet: Antenatal care contact
Data Requirement Type: Observation
Profile(s): Observation
Must Support Elements: code, status, encounter, encounter.reference
Code Filter(s):
Path: code
ValueSet: Gestational age
Data Requirement Type: Patient
Profile(s): Patient
Must Support Elements: url, value
Data Requirement Type: EpisodeOfCare
Profile(s): EpisodeOfCare
Must Support Elements: type
Code Filter(s):
Path: type
ValueSet: Antenatal care case
Measure Logic Definitions
Logic Definition Library Name: ANCBaseDataElements
define "Antenatal care contact":
  ["Encounter": type in BCx."Antenatal care contact"]
Logic Definition Library Name: ANCIND01
define "First antenatal care contact":
  BaseData."Antenatal care contact" C
    where C.reasonCode in Cx."First Antenatal Care Contact Choices"
Logic Definition Library Name: ANCContactDataElements
/*
  @dataElement: ANC.B6.DE17 Gestational age
  @activity: ANC.B6 Profile
  @description: Gestational age in weeks and/or days depending on the source of gestational age
*/
define "Gestational age":
  WC.MostRecent(
  [Observation: Cx."Gestational age"] O
    where O.status in { 'final', 'amended', 'corrected' }
      and Coalesce(WC.ModifierExtension(O, 'who-notDone').value, false) is false
      and Last(Split(O.encounter.reference, '/')) = Last(Split(encounter, '/'))
  ).value as FHIR.Quantity
Logic Definition Library Name: ANCIND01
/*
Numerator: Number of pregnant women who had their first ANC contact before 12 weeks (facility level)
Numerator Computation: Count of women whose gestational age <= 12 weeks at the time of first contact
*/
define Numerator:
  exists (
    "First antenatal care contact" C
      where C.period starts during "Measurement Period"
        and ContactData."Gestational age" <= 12 weeks
  )
Logic Definition Library Name: ANCStratifiers
/*
By Patient Age as of the start of the Measurement Period
Age (10-14, 15-19, 20+)
*/
define "By Age":
  case
    when AgeInYearsAt(start of "Measurement Period") in Interval[10, 14] then "P10Y--P14Y"
    when AgeInYearsAt(start of "Measurement Period") in Interval[15, 19] then "P15Y--P19Y"
    when AgeInYearsAt(start of "Measurement Period") >= 20 then "P20Y--P9999Y"
    else null
  end
Logic Definition Library Name: ANCIND01
/*
Disaggregation: Age (10-14, 15-19, 20+)
*/
define "Age Stratifier":
  Stratifiers."By Age"
Logic Definition Library Name: ANCIND01
/*
Denominator: Total number of antenatal clients with a first contact
Denominator Computation: Count of all women who had first contact within the last reporting period
*/
define Denominator:
  exists (
    "First antenatal care contact" C
      where C.period starts during "Measurement Period"
  )
Logic Definition Library Name: ANCStratifiers
/*
By Patient Education Level (none, don't know, primary, secondary, higher)
*/
define "By Education Level":
  Patient.extension E
    where E.url = 'http://smart.who.int/anc/StructureDefinition/educationlevel'
    return E.value as CodeableConcept
Logic Definition Library Name: ANCIND01
/*
Disaggregation: Education Level (none, don't know, primary, secondary, higher)
*/
define "Education Level Stratifier":
  Stratifiers."By Education Level"
Logic Definition Library Name: ANCBaseDataElements
/*
define "Pregnant":
  "Pregnancy" is not null
    or "Pregnancy status" in BCx."Pregnancy status - pregnant"

define "Pregnancy status":
  FHIRHelpers.ToConcept(
    Last(
      [Observation: BCx."Pregnancy status"] O
        where O.status = 'final'
        sort by FHIRHelpers.ToDateTime(effective as FHIR.dateTime)
    ).value
  )
*/

define "Antenatal care case":
  ["EpisodeOfCare": type in BCx."Antenatal care case"]
Logic Definition Library Name: ANCIND01
/*
Initial population: Antenatal clients
*/
define "Initial Population":
  exists (BaseData."Antenatal care case")
Logic Definition Library Name: FHIRHelpers
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
        }
Logic Definition Library Name: FHIRHelpers
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
        }
Logic Definition Library Name: FHIRHelpers
define function ToInterval(period FHIR.Period):
    if period is null then
        null
    else
        if period."start" is null then
            Interval(period."start".value, period."end".value]
        else
            Interval[period."start".value, period."end".value]
Logic Definition Library Name: FHIRHelpers
define function ToQuantity(quantity FHIR.Quantity):
    case
        when quantity is null then null
        when quantity.value is null then null
        when quantity.comparator is not null then
            Message(null, true, 'FHIRHelpers.ToQuantity.ComparatorQuantityNotSupported', 'Error', 'FHIR Quantity value has a comparator and cannot be converted to a System.Quantity value.')
        when quantity.system is null or quantity.system.value = 'http://unitsofmeasure.org'
              or quantity.system.value = 'http://hl7.org/fhirpath/CodeSystem/calendar-units' then
            System.Quantity { value: quantity.value.value, unit: ToCalendarUnit(Coalesce(quantity.code.value, quantity.unit.value, '1')) }
        else
            Message(null, true, 'FHIRHelpers.ToQuantity.InvalidFHIRQuantity', 'Error', 'Invalid FHIR Quantity code: ' & quantity.unit.value & ' (' & quantity.system.value & '|' & quantity.code.value & ')')
    end
Logic Definition Library Name: FHIRHelpers
define function ToCalendarUnit(unit System.String):
    case unit
        when 'ms' then 'millisecond'
        when 's' then 'second'
        when 'min' then 'minute'
        when 'h' then 'hour'
        when 'd' then 'day'
        when 'wk' then 'week'
        when 'mo' then 'month'
        when 'a' then 'year'
        else unit
    end
Logic Definition Library Name: WHOCommon
define function MostRecent(observations List<Observation>):
  Last(
    observations O
      sort by issued
  )
Logic Definition Library Name: FHIRHelpers
define function ToString(value ObservationStatus): value.value
Logic Definition Library Name: FHIRHelpers
define function ToBoolean(value boolean): value.value
Logic Definition Library Name: WHOCommon
/*
@description: Returns the single WHO core modifier extension (if present) on the given resource with the specified id.
@comment: This function uses singleton from to ensure that a run-time exception is thrown if there
is more than one extension on the given resource with the specified url.
*/
define function ModifierExtension(domainResource DomainResource, id String):
  singleton from ModifierExtensions(domainResource, id)
Logic Definition Library Name: WHOCommon
/*
@description: Returns any WHO core modifier extensions defined on the given resource with the specified id.
@comment: NOTE: Extensions are not the preferred approach, but are used as a way to access
content that is defined by extensions but not yet surfaced in the
CQL model info.
*/
define function ModifierExtensions(domainResource DomainResource, id String):
  domainResource.modifierExtension E
	  where E.url = ('http://fhir.org/guides/who/core/StructureDefinition/' + id)
		return E
Logic Definition Library Name: FHIRHelpers
define function ToString(value uri): value.value
Logic Definition Library Name: FHIRHelpers
define function ToString(value string): value.value
Generated using version 0.4.6 of the sample-content-ig Liquid templates