Indicator Definitions and Calculations
Indicators are computed from the clean and refinery dbt layers of the CM-HTS pipeline. This page defines every indicator derived from the MOH Quality Assurance Register: Initial Test (CM-QAI EN v1.2) and the linked Confirmatory register, including numerator, denominator, disaggregation, and source variables.
Indicator definitions follow PEPFAR MER 2.7 and Cameroon MoH HTS guidelines where applicable. Deviations from standard definitions are noted explicitly under each indicator. Monthly summary indicators are pre-aggregated in cm_hts_refinery__summary_monthly and are the primary source for dashboard reporting.
Routine Indicators
Standard indicators reported to PEPFAR and the Cameroon MoH on a monthly basis.
Detailed Definitions
HTS_TST — Individuals Tested for HIV
| Field | Value |
|---|---|
| Full name | Individuals Tested for HIV and Received Results |
| Short name | HTS_TST |
| Definition | Number of individuals who received HIV testing services using the TE-1 screening test and received their results during the reporting period. Invalid results (INV) are excluded as the test was not conclusive. |
| Numerator | Count of records where screeningTest1Result ∈ {NR, R} |
| Denominator | N/A (count indicator) |
| Disaggregation | Sex (sex: M/F), Age group (age_distribution: 0–4, 5–9, 10–14, 15–19, 20–24, 25–29, 30–34, 35–39, 40–44, 45–49, 50+), Facility (Facility), Area (Area), District (District), Region (Region), Month (report_month, report_year) |
| Inclusion criteria | All records in cm_hts_refinery__initial with a valid, parseable screeningTest1Result of NR or R |
| Exclusion criteria | Records with DQA Error severity; implementationError = true; pages flagged as qualityControlSample; screeningTest1Result = INV |
| Reporting frequency | Monthly |
| Source variables | screeningTest1Result, sex, age, age_distribution, visitDate, Facility, Area, District, Region, location_qed_id |
| Pre-aggregated columns | tested__male_*, tested__female_*, tested__total_total in cm_hts_refinery__summary_monthly |
| Reference | PEPFAR MER 2.7 § HTS_TST; Cameroon MoH HTS protocol |
The age grouping tested__male_18m_4 / tested__female_18m_4 covers children from 18 months to 4 years and is relabelled 0–4 in the refinery output. This is a standard PEPFAR paediatric disaggregate.
HTS_TST_POS — Newly HIV-Positive
| Field | Value |
|---|---|
| Full name | Individuals Newly Diagnosed HIV-Positive |
| Short name | HTS_TST_POS (newly positive) |
| Definition | Number of individuals who received an HIV-reactive result during the reporting period AND were not previously known to be HIV-positive. This is the primary new diagnosis indicator. |
| Numerator | Count of records where screeningTest1Result = R AND knownHivPos = No |
| Denominator | N/A (count indicator) |
| Disaggregation | Sex, Age group, Facility, Area, District, Region, Month |
| Inclusion criteria | Records with screeningTest1Result = R and knownHivPos = No |
| Exclusion criteria | Records with DQA Error severity; knownHivPos = Yes (known positives tested for monitoring are not new diagnoses); implementationError = true; qualityControlSample pages |
| Reporting frequency | Monthly |
| Source variables | screeningTest1Result, knownHivPos, sex, age, age_distribution, visitDate, Facility, Area, District, Region |
| Pre-aggregated columns | newly_positive__male_*, newly_positive__female_*, newly_positive__total_total in cm_hts_refinery__summary_monthly |
| Reference | PEPFAR MER 2.7 § HTS_TST_POS; Cameroon MoH HTS protocol |
Distinguishing newly positive from total positive requires the knownHivPos field to be correctly filled. If knownHivPos is missing or invalid (DQA Warning), the record is kept in the dataset but may be miscategorised between newly positive and total positive counts.
HTS_TST_POS (Total) — Total HIV-Positive Results
| Field | Value |
|---|---|
| Full name | Total Individuals with HIV-Reactive Result |
| Short name | HTS_TST_POS (total) |
| Definition | Number of individuals who received an HIV-reactive screening result, including both newly diagnosed individuals and those already known to be HIV-positive. Used for kit consumption and positivity rate calculations. |
| Numerator | Count of records where screeningTest1Result = R |
| Denominator | N/A (count indicator); divide by HTS_TST for HIV positivity rate |
| Disaggregation | Sex, Age group, Facility, Area, District, Region, Month |
| Inclusion criteria | All records with screeningTest1Result = R |
| Exclusion criteria | Records with DQA Error severity; implementationError = true; qualityControlSample pages |
| Reporting frequency | Monthly |
| Source variables | screeningTest1Result, sex, age, age_distribution, visitDate, Facility, Area, District, Region |
| Pre-aggregated columns | tested_positive__male_*, tested_positive__female_*, tested_positive__total_total in cm_hts_refinery__summary_monthly |
| Reference | PEPFAR MER 2.7 § HTS_TST_POS; Cameroon MoH HTS protocol |
TX_NEW — Newly Initiated on ART
| Field | Value |
|---|---|
| Full name | Adults and Children Newly Enrolled on Antiretroviral Therapy |
| Short name | TX_NEW |
| Definition | Number of HIV-positive individuals confirmed on the Confirmatory register who were newly initiated on ART during the reporting period, as indicated by a recorded ART initiation date. |
| Numerator | Count of records in Confirmatory register where artInitiationDate is not NULL and is within the reporting period |
| Denominator | N/A (count indicator) |
| Disaggregation | Sex, Age group, Facility, Area, District, Region, Month |
| Inclusion criteria | Confirmatory register records with a valid, parseable artInitiationDate |
| Exclusion criteria | Records with DQA Error severity; implementationError = true; records where artInitiationDate fails date conversion check |
| Reporting frequency | Monthly |
| Source variables | artInitiationDate, artCode, sex, age, visitDate, Facility, Area, District, Region |
| Pre-aggregated columns | newly_initiated_on_art__male_*, newly_initiated_on_art__female_*, newly_initiated_on_art__total_total in cm_hts_refinery__summary_monthly |
| Reference | PEPFAR MER 2.7 § TX_NEW |
| Source model | cm_hts_refinery__confirmatory |
This indicator is sourced from the Confirmatory register (cm_hts_refinery__confirmatory), not the Initial register. Linking between Initial and Confirmatory records uses clientCode; records where the linking check fails (DQA Error) are excluded.
Invalid Test Rate
| Field | Value |
|---|---|
| Full name | Invalid HIV Test Result Rate by Test Type |
| Short name | INV_RATE |
| Definition | Proportion of HIV tests that produced an invalid (INV) result, disaggregated by test type. Used to monitor kit quality, cold chain integrity, and procedural adherence. |
| Numerator | invalid_samples — count of test results classified as INV for a given test type and period |
| Denominator | samples_tested — total samples tested for a given test type and period |
| Disaggregation | HIV test type (hiv_test_type), Facility, Area, District, Region, Month (report_month, report_year) |
| Inclusion criteria | All records where a test was attempted (result = NR, R, or INV) |
| Exclusion criteria | implementationError = true; qualityControlSample pages |
| Reporting frequency | Monthly |
| Source variables | screeningTest1Result, hiv_test_type, visitDate, Facility, Area, District, Region |
| Source model | cm_hts_refinery__summary_monthly_invalid |
| Reference | Cameroon MoH HTS quality assurance protocol |
A sustained invalid rate above programme thresholds should trigger investigation of kit expiry (screeningTest1Test1ExpDate), storage conditions, and provider technique.
Indeterminate / Inconclusive Results
| Field | Value |
|---|---|
| Full name | Individuals with Indeterminate or Inconclusive HIV Test Result |
| Short name | HTS_IND |
| Definition | Number of individuals whose HIV screening result was indeterminate or inconclusive during the reporting period, requiring repeat testing. |
| Numerator | Count of records where lastTestNc = Yes OR screeningTest1Result = INV |
| Denominator | N/A (count indicator) |
| Disaggregation | Sex, Age group, Facility, Area, District, Region, Month |
| Inclusion criteria | Records with lastTestNc = Yes or screeningTest1Result = INV |
| Exclusion criteria | Records with DQA Error severity; implementationError = true |
| Reporting frequency | Monthly |
| Source variables | lastTestNc, screeningTest1Result, sex, age, age_distribution, visitDate, Facility, Area, District, Region |
| Pre-aggregated columns | tested_indeterminate__male_*, tested_indeterminate__female_*, tested_indeterminate__total_total in cm_hts_refinery__summary_monthly |
| Reference | Cameroon MoH HTS protocol; PEPFAR MER 2.7 guidance on indeterminate results |
Custom Indicators
Programme-specific indicators not part of the standard PEPFAR/MoH reporting framework, derived from additional fields on the CM-QAI Initial register.
Age Group Reference
The monthly summary model pre-aggregates counts into standard PEPFAR age bands. The table below maps column suffixes to age ranges.
| Age Band Column Suffixes — cm_hts_refinery__summary_monthly | ||
| Column Suffix | Age Range | Notes |
|---|---|---|
| _18m_4 | 0–4 years | Relabelled from 18 months–4 in refinery output. Paediatric PEPFAR disaggregate. |
| _5_9 | 5–9 years | Standard PEPFAR paediatric band. |
| _10_14 | 10–14 years | Standard PEPFAR paediatric band. |
| _15_19 | 15–19 years | Standard PEPFAR adolescent band. |
| _20_24 | 20–24 years | Standard PEPFAR young adult band. |
| _25_29 | 25–29 years | Standard PEPFAR adult band. |
| _30_34 | 30–34 years | Standard PEPFAR adult band. |
| _35_39 | 35–39 years | Standard PEPFAR adult band. |
| _40_44 | 40–44 years | Standard PEPFAR adult band. |
| _45_49 | 45–49 years | Standard PEPFAR adult band. |
| _over_50 | 50+ years | Standard PEPFAR adult band. |
| _total | All ages combined | Row total across all age bands for a given sex. |
DQA Flag Handling
Records with DQA Errors are excluded from all indicator calculations. Records with DQA Warnings are retained in calculations but flagged for review in the DQA dashboard. The table below documents which specific DQA checks affect which indicators.
| DQA Flags Affecting Indicators — CM-HTS Pipeline | |||
| DQA Check | Severity | Affects | How |
|---|---|---|---|
| client_code_check | Error | TX_NEW, Linkage Rate, HTS_TST_POS (newly positive) | Excluded from numerator and denominator — linking failure means the Confirmatory record cannot be reliably attributed to an Initial record. |
| linking_initial_check | Error | TX_NEW, Linkage Rate, HTS_TST_POS (newly positive) | Excluded from numerator and denominator — Confirmatory record cannot be matched to a valid, confirmatory-eligible Initial record. |
| future_date — visitDate | Error | All indicators using visitDate for period allocation | Excluded from numerator and denominator — visit date is later than submission date; record cannot be assigned to a valid reporting period. |
| convert_to_date — visitDate | Warning | All indicators using visitDate for period allocation | Retained in dataset but may be assigned to wrong reporting period; flagged for review. |
| convert_to_int — age | Warning | HTS_TST, HTS_TST_POS, TX_NEW, HIV Positivity Rate (age-disaggregated) | Retained but excluded from age-disaggregated counts; contributes to totals only. |
| melt — sex | Warning | HTS_TST, HTS_TST_POS, TX_NEW, HIV Positivity Rate (sex-disaggregated) | Retained but excluded from sex-disaggregated counts; contributes to totals only. |
| melt — screeningTest1Result2 | Warning | HTS_TST_POS (total and newly positive), HIV Positivity Rate | Retained but result value is ambiguous; may inflate or deflate positivity counts. |
| melt — finalResults | Warning | TX_NEW, Linkage Rate | Retained but final result is ambiguous; linkage and ART initiation counts may be affected. |
| melt — knownHivPos | Warning | HTS_TST_POS (newly positive), Known HIV+ Clients Retested | Retained but newly positive vs. known positive split is unreliable for affected records. |
| melt — qualityControl | Warning | All indicators — qualityControl drives page-level exclusion | Pages flagged as qualityControlSample are excluded entirely from all indicator calculations. |
| melt — reasonsNonLinkage | Warning | Linkage Rate | Retained; non-linkage reason is ambiguous but does not affect the linkage count itself. |
| implementationError (filter) | Exclusion | All indicators | Rows where implementationError = true are excluded from all refinery models and therefore from all indicator calculations. |
Generated automatically from CM-QAI EN v1.2 source files. Last updated: 2026-06-30.