Dashboard Indicators

Overview

This page documents every dashboard indicator that can be derived from the TB Facility Register refinery models. Each indicator follows the QED dashboard indicator template: goal, definitions, numerator, denominator, disaggregations, recommended visualisation, and data source.

All indicators draw from one or both of the following refinery tables:

Refinery models powering the dashboard
Refinery Model Description Granularity
mw_tb_refinery__tb_reg Patient-level clean records, one row per patient per page One row per patient registration
mw_tb_refinery__tb_reg_checks Data quality check failures, one row per check triggered One row per check failure per record
Note

Available disaggregation dimensions across all indicators: book_number (register book, proxy for facility/cohort), page_number, tb_reg_date (registration date, for time series), sex, age_years, risk_group, disease_site, treatment_regimen, hiv_status, treat_outcome. Geography below book level is not present in the refinery model β€” facility metadata must be joined from an intermediary locations table.


Indicator catalogue

πŸ“ˆ Programme Performance 🦠 Bacteriology & Diagnosis πŸ’Š Treatment Regimen πŸ”΄ HIV & ART 🫁 Post-TB / PRP πŸ“Š Data Quality


πŸ“ˆ Programme Performance

1. Total patients registered

1. Total patients registered
Goal Monitor the volume of TB patients being registered at facilities over time. Supports workload planning and programme scale assessment.
Numerator COUNT(*) from mw_tb_refinery__tb_reg where tb_reg_date IS NOT NULL
Denominator N/A β€” this is an absolute count
Disaggregations book_number (facility/cohort), tb_reg_date (monthly or quarterly time series), sex, disease_site
Visualization Line chart β€” X-axis: tb_reg_date by month; Y-axis: count of registrations. Add a reference line for target if available.
Data Source mw_tb_refinery__tb_reg

2. Treatment success rate

2. Treatment success rate
Goal Assess the proportion of TB patients achieving a successful treatment outcome (Cured or Completed). Primary WHO End TB programme performance indicator.
Definition of Terms Successful outcome: treat_outcome IN ('Cured', 'Completed'). Evaluated cohort: all records where treat_outcome IS NOT NULL.
Numerator COUNT(*) where treat_outcome IN ('Cured', 'Completed')
Denominator COUNT(*) where treat_outcome IS NOT NULL
Disaggregations book_number, tb_reg_date (quarterly cohort), sex, age_years (grouped: 0-14, 15-24, 25-44, 45-64, 65+), disease_site, treatment_regimen
Visualization Grouped bar chart β€” X-axis: time cohort (quarter); Y-axis: percentage. Stack or group by outcome category (Cured / Completed / Dead / Failure / Lost to Follow-up / Not Evaluated). Add WHO 90% target line.
Data Source mw_tb_refinery__tb_reg

3. Treatment outcome distribution

3. Treatment outcome distribution
Goal Provide a full breakdown of all treatment outcomes to identify which adverse outcomes (death, failure, lost to follow-up) are most prevalent and where.
Definition of Terms treat_outcome values: 'Cured', 'Completed', 'Dead', 'Treatment Failure', 'Lost to Follow-up', 'Not Evaluated'. Records where treat_outcome IS NULL are excluded.
Numerator COUNT(*) per treat_outcome category
Denominator COUNT(*) where treat_outcome IS NOT NULL
Disaggregations treat_outcome (6 categories), book_number, tb_reg_date (monthly), sex, disease_site, treatment_regimen
Visualization 100% stacked bar chart β€” X-axis: book_number or time period; Y-axis: percentage share; fill: treat_outcome. Separate panel for absolute counts.
Data Source mw_tb_refinery__tb_reg

4. Lost to follow-up rate

4. Lost to follow-up rate
Goal Identify facilities or time periods with elevated rates of patients lost to follow-up, enabling targeted retention interventions.
Numerator COUNT(*) where treat_outcome = 'Lost to Follow-up'
Denominator COUNT(*) where treat_outcome IS NOT NULL
Disaggregations book_number, tb_reg_date (quarterly), sex, risk_group, treatment_regimen
Visualization Line chart β€” X-axis: tb_reg_date by quarter; Y-axis: percentage lost to follow-up. One line per book_number (facility) for comparison.
Data Source mw_tb_refinery__tb_reg

5. Mortality rate during treatment

5. Mortality rate during treatment
Goal Track the proportion of registered TB patients who died during treatment. Supports clinical quality review and facility benchmarking.
Numerator COUNT(*) where treat_outcome = 'Dead'
Denominator COUNT(*) where treat_outcome IS NOT NULL
Disaggregations book_number, tb_reg_date (quarterly), sex, age_years (grouped), disease_site, hiv_status
Visualization Bar chart β€” X-axis: book_number; Y-axis: mortality rate (%). Colour bars by hiv_status split for HIV-attributable mortality exploration.
Data Source mw_tb_refinery__tb_reg

6. Moved to second-line treatment

6. Moved to second-line treatment
Goal Monitor the proportion of patients escalated to second-line treatment, indicating drug resistance or treatment failure burden.
Numerator COUNT(*) where second_line = 'Yes'
Denominator COUNT(*) from mw_tb_refinery__tb_reg where tb_reg_date IS NOT NULL
Disaggregations book_number, tb_reg_date (quarterly), treatment_regimen, dst_result
Visualization Single KPI tile (percentage) with trend sparkline. Secondary: table by book_number.
Data Source mw_tb_refinery__tb_reg

7. Patient age and sex profile

7. Patient age and sex profile
Goal Characterise the demographic profile of registered TB patients to inform targeted outreach and resource allocation.
Definition of Terms age_years is a numeric value. Recommended age groups: 0-4, 5-14, 15-24, 25-34, 35-44, 45-54, 55-64, 65+.
Numerator COUNT(*) per age group and sex
Denominator N/A β€” absolute counts
Disaggregations sex ('Male', 'Female'), age_years (grouped), book_number, tb_reg_date (annual)
Visualization Population pyramid β€” Y-axis: age group; X-axis: count, mirrored by sex (Male left, Female right).
Data Source mw_tb_refinery__tb_reg

8. Occupation and risk group distribution

8. Occupation / risk group distribution
Goal Identify which occupational or risk groups contribute the most TB registrations, to prioritise targeted screening and contact tracing (particularly for mining communities).
Numerator COUNT(*) per risk_group value
Denominator COUNT(*) where risk_group IS NOT NULL
Disaggregations risk_group ('Miner', 'Ex-Miner', 'Mining Community', 'HCW', 'Prisoner', 'HH Contact', 'Migrant', 'Other'), book_number, tb_reg_date (annual)
Visualization Horizontal bar chart β€” Y-axis: risk_group; X-axis: count or percentage. Sort bars by descending count.
Data Source mw_tb_refinery__tb_reg

9. Previously treated patients

9. Previously treated patients
Goal Monitor the burden of retreatment cases, which carry higher risk of drug resistance and poorer outcomes.
Definition of Terms Previously treated: treatment_history IN ('Relap', 'RALF', 'Fail', 'Other'). New case: treatment_history = 'New'.
Numerator COUNT(*) where treatment_history IN ('Relap', 'RALF', 'Fail', 'Other')
Denominator COUNT(*) where treatment_history IS NOT NULL
Disaggregations treatment_history (individual category), book_number, tb_reg_date (quarterly), sex
Visualization Stacked bar chart β€” X-axis: time period; Y-axis: count; stack: New vs Previously Treated (further split by retreatment reason in a drill-down view).
Data Source mw_tb_refinery__tb_reg

🦠 Bacteriology & Diagnosis

10. Bacteriological confirmation rate

10. Bacteriological confirmation rate
Goal Measure the proportion of TB patients diagnosed bacteriologically vs clinically. Higher bacteriological confirmation rates indicate stronger diagnostic capacity.
Numerator COUNT(*) where how_diagnosed = 'Bacteriologically'
Denominator COUNT(*) where how_diagnosed IS NOT NULL
Disaggregations book_number, tb_reg_date (quarterly), disease_site, sex
Visualization Dual KPI tiles (% bacteriological, % clinical) with time-series line chart below showing trend.
Data Source mw_tb_refinery__tb_reg

11. Xpert MTB positivity rate

11. Xpert MTB positivity rate
Goal Track the proportion of Xpert tests returning MTB Detected to monitor TB burden in tested patients and Xpert utilisation.
Numerator COUNT(*) where xpert_result = 'MTB Detected'
Denominator COUNT(*) where xpert_result IS NOT NULL
Disaggregations book_number, tb_reg_date (monthly), sex, disease_site
Visualization Line chart β€” X-axis: tb_reg_date by month; Y-axis: Xpert positivity rate (%); one line per book_number.
Data Source mw_tb_refinery__tb_reg

12. Drug-resistant TB rate (DST)

12. Drug-resistant TB rate (DST)
Goal Identify the proportion of tested patients with RIF-resistant TB, driving decisions on second-line treatment capacity and drug procurement.
Definition of Terms Tested: dst_date IS NOT NULL. RIF resistant: dst_result = 'RIF Resistant Detected'.
Numerator COUNT(*) where dst_result = 'RIF Resistant Detected'
Denominator COUNT(*) where dst_date IS NOT NULL
Disaggregations book_number, tb_reg_date (quarterly), sex, treatment_regimen, treatment_history
Visualization Bar chart β€” X-axis: book_number; Y-axis: % RIF resistant. Stack DST result categories (Detected / Not Detected / Indeterminate) in an absolute count panel alongside.
Data Source mw_tb_refinery__tb_reg

13. Smear conversion rate at 2 months

13. Smear conversion rate at 2 months
Goal Measure treatment response by tracking the proportion of initially smear-positive patients who convert to negative at 2 months. A key early treatment efficacy signal.
Definition of Terms Smear positive at baseline: smear_result not in ('Negative', NULL, 'Invalid'). Converted at 2 months: smear_result_2 = 'Negative'. Only patients with both baseline and 2-month smear recorded are included.
Numerator COUNT(*) where smear_result IS NOT NULL AND smear_result NOT IN ('Negative', 'Invalid') AND smear_result_2 = 'Negative'
Denominator COUNT(*) where smear_result IS NOT NULL AND smear_result NOT IN ('Negative', 'Invalid') AND smear_result_2 IS NOT NULL
Disaggregations book_number, tb_reg_date (quarterly), treatment_regimen, hiv_status
Visualization KPI tile (% converted) with trend line. Secondary: table showing median time to conversion by treatment regimen.
Data Source mw_tb_refinery__tb_reg

πŸ’Š Treatment Regimen

14. Treatment regimen distribution

14. Treatment regimen distribution
Goal Monitor the uptake of newer regimens (BPalM, BPal) relative to the standard 2RHZE/4RH regimen. Tracks programmatic transition to shorter regimens.
Numerator COUNT(*) per treatment_regimen value
Denominator COUNT(*) where treatment_regimen IS NOT NULL
Disaggregations treatment_regimen ('2RHZE/4RH', 'BPalM', 'BPal', 'Other Regimen'), book_number, tb_reg_date (quarterly), disease_site, dst_result
Visualization 100% stacked bar chart β€” X-axis: tb_reg_date by quarter; Y-axis: proportion; fill: treatment_regimen. Absolute count panel alongside.
Data Source mw_tb_refinery__tb_reg

15. DOT and adherence support coverage

15. DOT and adherence support coverage
Goal Measure the proportion of patients receiving documented DOT/adherence support and identify the most common support type. Supports community health worker workload planning.
Numerator COUNT(*) where adherence_support IS NOT NULL
Denominator COUNT(*) from mw_tb_refinery__tb_reg where tb_reg_date IS NOT NULL
Disaggregations adherence_support ('Guardian', 'Health Survailence Assistant', 'Volunteer', 'Healthcare Worker'), book_number, tb_reg_date (quarterly)
Visualization Donut chart for support type split. Secondary: line chart of coverage rate over time.
Data Source mw_tb_refinery__tb_reg

πŸ”΄ HIV & ART

16. HIV co-infection rate among TB patients

16. HIV co-infection rate among TB patients
Goal Track the burden of HIV among registered TB patients. High TB/HIV co-infection drives the need for integrated HIV services at TB facilities.
Numerator COUNT(*) where hiv_status = 'Positive'
Denominator COUNT(*) where hiv_status IS NOT NULL
Disaggregations hiv_status ('Positive', 'Negative', 'Unknown'), book_number, tb_reg_date (quarterly), sex, age_years (grouped), disease_site
Visualization Stacked bar chart β€” X-axis: time period; Y-axis: count; stack: Positive / Negative / Unknown. Add percentage label on Positive segment.
Data Source mw_tb_refinery__tb_reg

17. HIV testing coverage among TB patients

17. HIV testing coverage among TB patients
Goal Measure the proportion of TB patients who received an HIV test result (not Unknown), assessing the completeness of integrated HIV testing.
Numerator COUNT(*) where hiv_status IN ('Positive', 'Negative')
Denominator COUNT(*) where hiv_status IS NOT NULL
Disaggregations book_number, tb_reg_date (quarterly), hiv_test_time ('Before TB Reg', 'After TB Reg'), sex
Visualization KPI tile (% tested, % positive) with trend line. Secondary: bar chart split by hiv_test_time.
Data Source mw_tb_refinery__tb_reg

18. ART initiation among HIV-positive TB patients

18. ART initiation among HIV-positive TB patients
Goal Measure the proportion of HIV-positive TB patients who started ART, and the timing of ART relative to TB treatment. ART during TB treatment reduces mortality.
Definition of Terms ART initiated: arv_status IN ('Before TB Tx', 'While on TB Tx'). Not initiated: arv_status = 'Not While on TB Tx' or arv_status IS NULL (among HIV-positive).
Numerator COUNT(*) where hiv_status = 'Positive' AND arv_status IN ('Before TB Tx', 'While on TB Tx')
Denominator COUNT(*) where hiv_status = 'Positive'
Disaggregations arv_status (3 categories), book_number, tb_reg_date (quarterly), sex
Visualization Stacked bar chart β€” X-axis: time period; stack: Before TB Tx / While on TB Tx / Not While on TB Tx. Add 90% WHO target line for ART coverage.
Data Source mw_tb_refinery__tb_reg

19. CPT coverage among HIV-positive TB patients

19. CPT coverage among HIV-positive TB patients
Goal Monitor cotrimoxazole preventive therapy (CPT) uptake among HIV-positive TB patients, reducing mortality from opportunistic infections.
Numerator COUNT(*) where hiv_status = 'Positive' AND cpt_status = 'Yes'
Denominator COUNT(*) where hiv_status = 'Positive'
Disaggregations book_number, tb_reg_date (quarterly), sex, treat_outcome
Visualization KPI tile (CPT coverage %). Secondary: line chart of coverage rate over time per book_number.
Data Source mw_tb_refinery__tb_reg

🫁 Post-TB / PRP

20. PRP enrolment rate among eligible patients

20. PRP enrolment rate among eligible patients
Goal Track the proportion of cured or completed patients enrolled into the Post-TB Lung Disease (PRP) programme, monitoring uptake of post-treatment care.
Definition of Terms Eligible: treat_outcome IN ('Cured', 'Completed'). Enrolled: enrolled_prp = 'Yes'.
Numerator COUNT(*) where treat_outcome IN ('Cured', 'Completed') AND enrolled_prp = 'Yes'
Denominator COUNT(*) where treat_outcome IN ('Cured', 'Completed')
Disaggregations book_number, tb_reg_date (quarterly), sex, disease_site, treatment_regimen
Visualization KPI tile (% enrolled) with trend sparkline. Secondary: bar chart by book_number to compare facility enrolment rates.
Data Source mw_tb_refinery__tb_reg

21. PTLD diagnosis method distribution

21. PTLD diagnosis method distribution
Goal Understand which diagnostic methods are being used to identify Post-TB Lung Disease among PRP-enrolled patients, supporting clinical protocol adherence.
Numerator COUNT(*) per ptld_how_diagnosed value where enrolled_prp = 'Yes'
Denominator COUNT(*) where enrolled_prp = 'Yes' AND ptld_how_diagnosed IS NOT NULL
Disaggregations ptld_how_diagnosed ('Spirometry/LFT', 'Persistent Respiratory Symptoms', 'Abnormalities X-ray', 'Reduced Exercise'), book_number
Visualization Horizontal bar chart sorted by frequency. One panel per book_number for facility comparison.
Data Source mw_tb_refinery__tb_reg

22. PRP programme outcome distribution

22. PRP programme outcome distribution
Goal Monitor outcomes for patients enrolled in the PRP programme to assess programme effectiveness and identify patients still active or lost.
Numerator COUNT(*) per prp_outcome value
Denominator COUNT(*) where prp_outcome IS NOT NULL
Disaggregations prp_outcome ('Completed', 'Died', 'Lost to Follow-up', 'Active TB', 'Excluded'), book_number, tb_reg_date (annual)
Visualization Stacked bar chart or donut chart per facility. Flag 'Active TB' recurrence as a clinical alert metric.
Data Source mw_tb_refinery__tb_reg

πŸ“Š Data Quality

23. Check failure rate by book

23. Check failure rate by book (facility)
Goal Identify register books (facilities) with the highest rate of data quality check failures, guiding targeted data quality improvement support.
Numerator COUNT(DISTINCT record_identifier) where severity IN ('Error', 'Warning') from mw_tb_refinery__tb_reg_checks
Denominator COUNT(DISTINCT Record_number || Page_ID) from mw_tb_refinery__tb_reg
Disaggregations book_number, severity ('Error', 'Warning'), tags (check category), Submission_Date (monthly)
Visualization Bar chart β€” X-axis: book_number; Y-axis: check failure rate (%). Stack Error and Warning in different colours. Sort by descending Error rate.
Data Source mw_tb_refinery__tb_reg_checks joined to mw_tb_refinery__tb_reg on Page_ID + Record_number

24. Most frequent check failures

24. Most frequent check failures
Goal Rank data quality issues by frequency to identify systemic problems (e.g. a field consistently left blank or a question frequently multi-selected) requiring training or form revision.
Numerator COUNT(*) per check_message from mw_tb_refinery__tb_reg_checks
Denominator N/A β€” absolute counts ranked
Disaggregations check_message (specific failure description), severity, tags, book_number, Submission_Date (monthly)
Visualization Ranked horizontal bar chart β€” top 10 most frequent check_message values. Colour by severity (Error = red, Warning = amber).
Data Source mw_tb_refinery__tb_reg_checks

25. Records excluded due to Errors

25. Records excluded due to Errors
Goal Monitor the proportion of submitted records excluded from analysis due to Error-severity check failures, as a summary measure of data entry quality over time.
Numerator COUNT(DISTINCT Page_ID || Record_number) from mw_tb_refinery__tb_reg_checks where severity = 'Error'
Denominator COUNT(DISTINCT Page_ID || Record_number) from mw_tb_refinery__tb_reg UNION COUNT from mw_tb_refinery__tb_reg_checks where severity = 'Error'
Disaggregations book_number, Submission_Date (monthly), tags (error type: invalid-date-check vs clinical-logic-check)
Visualization Line chart β€” X-axis: Submission_Date by month; Y-axis: % records excluded. One line per book_number. Alert threshold line at 5%.
Data Source mw_tb_refinery__tb_reg_checks

Indicator summary table

All 25 dashboard indicators
25 indicators across 6 thematic groups
# Indicator Name Group Type Refinery Model
1 Total patients registered Programme Performance Count mw_tb_refinery__tb_reg
2 Treatment success rate Programme Performance Rate / % mw_tb_refinery__tb_reg
3 Treatment outcome distribution Programme Performance Rate / % mw_tb_refinery__tb_reg
4 Lost to follow-up rate Programme Performance Rate / % mw_tb_refinery__tb_reg
5 Mortality rate during treatment Programme Performance Rate / % mw_tb_refinery__tb_reg
6 Moved to second-line treatment Programme Performance Rate / % mw_tb_refinery__tb_reg
7 Patient age and sex profile Programme Performance Count mw_tb_refinery__tb_reg
8 Occupation / risk group distribution Programme Performance Rate / % mw_tb_refinery__tb_reg
9 Previously treated patients Programme Performance Rate / % mw_tb_refinery__tb_reg
10 Bacteriological confirmation rate Bacteriology & Diagnosis Rate / % mw_tb_refinery__tb_reg
11 Xpert MTB positivity rate Bacteriology & Diagnosis Rate / % mw_tb_refinery__tb_reg
12 Drug-resistant TB rate (DST) Bacteriology & Diagnosis Rate / % mw_tb_refinery__tb_reg
13 Smear conversion rate at 2 months Bacteriology & Diagnosis Rate / % mw_tb_refinery__tb_reg
14 Treatment regimen distribution Treatment Regimen Rate / % mw_tb_refinery__tb_reg
15 DOT and adherence support coverage Treatment Regimen Rate / % mw_tb_refinery__tb_reg
16 HIV co-infection rate HIV & ART Rate / % mw_tb_refinery__tb_reg
17 HIV testing coverage HIV & ART Rate / % mw_tb_refinery__tb_reg
18 ART initiation among HIV-positive HIV & ART Rate / % mw_tb_refinery__tb_reg
19 CPT coverage among HIV-positive HIV & ART Rate / % mw_tb_refinery__tb_reg
20 PRP enrolment rate Post-TB / PRP Rate / % mw_tb_refinery__tb_reg
21 PTLD diagnosis method distribution Post-TB / PRP Rate / % mw_tb_refinery__tb_reg
22 PRP programme outcome distribution Post-TB / PRP Rate / % mw_tb_refinery__tb_reg
23 Check failure rate by book Data Quality Rate / % mw_tb_refinery__tb_reg_checks
24 Most frequent check failures Data Quality Count mw_tb_refinery__tb_reg_checks
25 Records excluded due to Errors Data Quality Rate / % mw_tb_refinery__tb_reg_checks