[SuperSet] OLMIS Reporting Documentation
This document provides a reference for every chart available across the nine OLMIS dashboards.
For each chart, the following information is provided:
Purpose – what the chart represents.
Example output – illustrative data presented as a SQL-style result table.
Source (PostgreSQL) – the originating PostgreSQL table(s) and column(s) used to derive the chart.
Notes – implementation details, assumptions, or known limitations.
Each report includes an example output generated using test data for reference.
Contents
- 1 1. OLMIS Summary
- 1.1 1.1 Reporting Rate (Pie Chart)
- 1.2 1.2 Timeliness of Reports (Pie Chart)
- 1.3 1.3 Reporting Rate by Program (100% Stacked Bar Chart)
- 1.4 1.4 National Reporting Rate – Last 12 Months (Line Chart)
- 1.5 1.5 Indicator Summary: Reporting Rate by Program (Last 12 Months) (Pivot Table)
- 1.6 1.6 Annual Reporting Rate by Program (Bar Chart)
- 1.7 1.7 Non Reporting Facilities (Table)
- 2 2. OLMIS Reporting Rate
- 3 3. OLMIS Stock Status
- 4 4. OLMIS Stockouts
- 5 5. OLMIS Orders
- 6 6. OLMIS Consumption
- 7 7. OLMIS Adjustments
- 8 8. OLMIS Requisition Overview
- 9 9. OLMIS Facilities
Data Flow
All dashboard data follows the same processing pipeline:
PostgreSQL (requisition / referencedata)
↓
Debezium CDC
↓
ClickHouse raw
↓
stg_* (1:1 copy of PostgreSQL tables)
↓
mart_*
↓
Apache Superset dashboardsThroughout this document, Source (PostgreSQL) refers to the original PostgreSQL tables and columns from which each metric is ultimately derived.
1. OLMIS Summary
Purpose: Reporting rate dashboard.
Data marts:
mart_reporting_statusmart_non_reporting_facilities
Example output of the generated report:
1.1 Reporting Rate (Pie Chart)
Purpose
Shows the share of reporting obligations that were Reported versus Did not report.
Example Output
reporting_status | requisitions |
|---|---|
Reported | 10 |
Did not report | 5 |
Source (PostgreSQL)
reporting_status is derived as follows:
Reported if a
requisition.status_changesrecord withstatus = 'SUBMITTED'exists for the corresponding (facility, program, reporting period).Expected reporting obligations are derived from:
referencedata.supported_programsreferencedata.requisition_group_membersreferencedata.requisition_group_program_schedulesreferencedata.processing_periods
Notes
Requisition submission is the authoritative source.
No dashboard time filter is applied (the mart contains a rolling 3-year window).
1.2 Timeliness of Reports (Pie Chart)
Purpose
Shows when submitted reports were received during the reporting month.
Example Output
report_timeliness | reports |
|---|---|
Before 15th | 7 |
Between 16th–20th | 1 |
After 20th | 2 |
Source (PostgreSQL)
Calculated from the day of month of:
MIN(requisition.status_changes.created_date)
where:
status = 'SUBMITTED'
Only requisitions with reporting_status = 'Reported' are included.
Notes
Uses reporting buckets: Before 15th, 16th–20th, After 20th.
These thresholds differ from the Order Timeliness chart (10th/20th).
1.3 Reporting Rate by Program (100% Stacked Bar Chart)
Purpose
Shows the proportion of Reported versus Did not report obligations for each program over the last 12 months.
Example Output
program_name | reporting_status | count |
|---|---|---|
Family Planning | Reported | 120 |
Family Planning | Did not report | 40 |
EPI | Reported | 30 |
EPI | Did not report | 10 |
Source (PostgreSQL)
Program:
referencedata.programs.nameReporting status: derived using the same logic as Reporting Rate
Window: last 12 reporting months.
1.4 National Reporting Rate – Last 12 Months (Line Chart)
Purpose
Shows the national reporting rate for each reporting period during the last 12 months.
Example Output
period_end_date | reporting_rate |
|---|---|
2026-04-30 | 0.62 |
2026-05-31 | 0.58 |
2026-06-30 | 0.65 |
Source (PostgreSQL)
Reporting rate:
AVG(reporting_status = 'Reported')Reporting period:
referencedata.processing_periods.enddate
1.5 Indicator Summary: Reporting Rate by Program (Last 12 Months) (Pivot Table)
Purpose
Shows reporting rate by reporting period and program.
Example Output
period_name | Family Planning | EPI | Essential Meds |
|---|---|---|---|
2026-05 | 0.60 | 0.75 | 0.55 |
2026-06 | 0.66 | 0.70 | 0.58 |
Source (PostgreSQL)
Uses the same reporting-rate calculation as above.
Period:
referencedata.processing_periods.name
1.6 Annual Reporting Rate by Program (Bar Chart)
Purpose
Shows the average reporting rate per program for each calendar year.
Example Output
period_year | program_name | reporting_rate |
|---|---|---|
2025 | Family Planning | 0.61 |
2026 | Family Planning | 0.64 |
Source (PostgreSQL)
Year:
YEAR(referencedata.processing_periods.enddate)Reporting rate:
AVG(reporting_status = 'Reported')
Notes
The dashboard requests the last five years, while the mart stores only a rolling three-year history. As a result, the oldest two years are always empty.
1.7 Non Reporting Facilities (Table)
Also used by OLMIS Reporting Rate, OLMIS Stock Status, OLMIS Stockouts, and OLMIS Orders dashboards.
Purpose
Lists active facilities that did not submit a requisition for a given reporting period and program.
Example Output
facility_name | program_name | period_name | zone_name |
|---|---|---|---|
Faskari Health Clinic | Family Planning | 2026-05 | Balaka |
Makatanawa PHC | Family Planning | 2026-05 | Zomba |
Source (PostgreSQL)
Derived as:
Expected reporting obligations
(from supported programs, requisition groups and processing periods)
minus
Submitted requisitions
(requisition.status_changes where status = 'SUBMITTED')
Lookup tables:
referencedata.facilities.namereferencedata.programs.namereferencedata.geographic_zones.namereferencedata.processing_periods.name
2. OLMIS Reporting Rate
Purpose: Reporting rate monitoring dashboard.
Data marts:
mart_reporting_statusmart_non_reporting_facilities
Shared charts:
The following charts are reused from OLMIS Summary:
Reporting Rate
Non Reporting Facilities
Example output of the generated report:
2.1 Reporting Rate Trend (Line Chart)
Purpose
Shows the monthly reporting rate trend over time, with a separate line for each program.
Example Output
period_end_date | program_name | reporting_rate |
|---|---|---|
2026-05-31 | Family Planning | 0.60 |
2026-05-31 | EPI | 0.75 |
Source (PostgreSQL)
Reporting rate:
AVG(reporting_status = 'Reported')Aggregated by:
referencedata.programs.nameReporting period:
referencedata.processing_periods.enddate
2.2 Reporting Timeliness By Week (Stacked Bar Chart)
Purpose
Shows submitted reports grouped by the week of the month in which they were received.
Weeks are calculated as:
Week 1: days 1–7
Week 2: days 8–14
Week 3: days 15–21
Week 4: days 22–28
Week 5: days 29–31
Example Output
period_end_date | submitted_week_of_month | reports |
|---|---|---|
2026-05-31 | 1 | 4 |
2026-05-31 | 2 | 9 |
2026-05-31 | 3 | 2 |
Source (PostgreSQL)
Calculated from submitted status changes:
FLOOR((DAY_OF_MONTH(status_changes.created_date) - 1) / 7) + 1
Source records:
requisition.status_changes
Filter:
status = 'SUBMITTED'
Notes
Week 5 contains only days 29–31, resulting in a partial 3-day bucket.
2.3 Expected Facilities to Report (Table)
Purpose
Shows the number of distinct facilities expected to submit reports for each district, reporting period, and program.
Example Output
zone_name | period_name | program_name | expected_facilities |
|---|---|---|---|
Balaka | 2026-05 | Family Planning | 12 |
Zomba | 2026-05 | Family Planning | 18 |
Source (PostgreSQL)
Expected facilities are calculated from the combination of:
referencedata.supported_programsreferencedata.requisition_group_membersreferencedata.requisition_group_program_schedulesreferencedata.processing_periods
The metric counts distinct:
referencedata.facilities.id
District information is taken from:
referencedata.geographic_zones.name
3. OLMIS Stock Status
Purpose: Stock availability monitoring dashboard.
Data mart:
mart_stock_status
Data grain:
One row per requisition line item.
Important note:
The authoritative stock data source is stockmanagement, which is not currently ingested into the analytics pipeline. The charts in this dashboard are based on stock values reported through requisitions.
Example output of the generated report:
3.1 Stockout Rate Over Time (Line Chart)
Purpose
Shows the average stockout rate across requisition line items for each reporting period.
Example Output
period_end_date | stockout_rate |
|---|---|
2025-04-30 | 0.33 |
2025-05-31 | 0.50 |
2025-06-30 | 0.20 |
Source (PostgreSQL)
combined_stockout is derived from:
requisition.requisition_line_items
A line item is considered stocked out when any of the following conditions are true:
stockonhand = 0totalstockoutdays > 0beginningbalance = 0maxperiodsofstock = 0
Reporting period:
referencedata.processing_periods.enddate
3.2 Months of Stock Over Time (Line Chart)
Purpose
Shows the average months of stock available by district over time.
Example Output
period_end_date | zone_name | months_of_stock |
|---|---|---|
2025-06-30 | Central Region | 8.0 |
2025-06-30 | Malawi | 1.5 |
Source (PostgreSQL)
Calculated as:
ROUND(stockonhand / averageconsumption, 1)
Source fields:
requisition.requisition_line_items.stockonhandrequisition.requisition_line_items.averageconsumption
District:
referencedata.geographic_zones.name
Notes
When
averageconsumption = 0, the calculation returns0.This may appear as a stockout condition even when stock is physically available.
Approximately 8% of stocked items are affected by this behavior.
3.3 Stock Status Distribution Over Time (Stacked Bar Chart)
Purpose
Shows the number of distinct facilities in each stock-status category for every reporting period.
Example Output
period_end_date | stock_status | facilities |
|---|---|---|
2025-06-30 | Stocked Out | 53 |
2025-06-30 | Unknown |