OpenMRS Pre-Canned Reports Bundle
Description:
Pre-Canned Reports Bundle
The proposed reports draw on suggestions from across the OpenMRS implementer community, including PIH, AMPATH, Palladium, DRC, and UgandaEMR / EpiCare.
For each report, the documentation covers:
Purpose: what the report answers and why it matters
Target audience: who uses it and in what workflow
Output fields: the specific data columns produced
Parameters: the filters and date ranges available at runtime
Line list and aggregate views: with example outputs to make the intent concrete
Together, these definitions form the pre-canned reports bundle proposed for future packaging with OpenMRS, so that new and existing implementations have out-of-the-box access to the reports most commonly needed in real-world clinical and operational use.
1. All Patients List
All patients list (line list):
Complete roster of patients registered in the system, regardless of program enrolment or visit activity. Used by registrars, MPI managers, and front-desk teams for record management and deduplication.
Output Fields:
patient_id: Patient Identifierpatient_name:Patient Name (First Name + Last Name)age_at_report: Patient's age (calculated at the date the report is run)birthdate: Patient's date of birthgender: Patient's sex/genderregistration_date: Date the patient was first registered in the systemregistration_location: Location where the patient was registeredlast_visit_date:Date of the patient's most recent visitlast_visit_location: Location of the patient's most recent visit(e.g., Outpatient Clinic, Ubuntu Hospital)num_visits_lifetime: Total number of visits recorded in the system (all locations, all time)programs_enrolled: List of programmes the patient is currently actively enrolled inpatient_status: Active / Deceased / Transferred out
Parameters:
Optional: Filter by location, department, gender, age band, registration date range, or last-visit date range
→ Line List Report
Patient ID | Patient Name | Birthdate | Age | Gender | Registration Date | Registration Location | Last Visit Date | Last Visit Location | # Visits | Programs Enrolled | Patient Status |
|---|---|---|---|---|---|---|---|---|---|---|---|
100000Y | Betty Williams | 15-Mar-1974 | 52 | F | 02-Feb-2018 | Outpatient Clinic | 12-Jun-2026 | Outpatient Clinic | 24 | HIV | Active |
100008E | Joshua Johnson | 25-Sept-2021 | 4 | M | 18-Nov-2024 | Outpatient Clinic | 10-Jun-2026 | Outpatient Clinic | 8 | NCD | Active |
100015R | Daniel Dean | 01-Jan-1984 | 42 | M | 14-May-2021 | Mobile Clinic | 22-Nov-2025 | Mobile Clinic | 3 | — | Deceased |
100022K | Michelle Lewis | 30-Jan-1940 | 86 | F | 09-Aug-2019 | Outpatient Clinic | 26-May-2026 | Outpatient Clinic | 17 | NCD, HIV | Active |
2. Program Enrollment and Longitudinal Care
Patients enrolled in a program (line list + counts):
Enrolment lists and counts for each care program (e.g., HIV, TB, NCD, ANC), with enrolment date and current status. Used by program coordinators for cohort management and donor/partner reporting.
The line list is operational: used by program coordinators, facility managers, and clinicians who need to see which patients are enrolled.
The aggregate is reporting / analytical: used by program managers, MOH submissions, and donor reporting, where the question is how many patients are enrolled.
Output Fields:
patient_id: Patient Identifierpatient_name:Patient Name (First Name + Last Name)age_at_enrolment: Patient's age at the time of programme enrolment (calculated from birthdate and enrolment date; does not change after enrolment))age_at_report: Patient's age at the time of report generationbirthdate: Patient's date of birthgender: Patient's sex/genderprogram: Name of the programme the patient is enrolled in (e.g., HIV, TB, NCD, ANC)enrolment_date: Date the patient was enrolled into the programmeenrolment_location: Location where the patient was enrolled into the programmecurrent_status: Patient's status in the programme as of the report generation date (e.g., Active, Completed, Lost to follow-up, Transferred out, Deceased)
Parameters:
Program (single or multiple — e.g., HIV, TB)
Date range (enrolment period — from/to)
Optional: Filter by location, status, gender, or age band
Optional: Configurable age bands (default: WHO 5-year bands; implementations may adjust to national MOH standards)
→ Line List Report
Patient ID | Patient Name | Age | Birthdate | Gender | Program | Enrolment Date | Enrolment Location | Current Status |
|---|---|---|---|---|---|---|---|---|
100008E | Joshua Johnson | 4 | 25-Sept-2021 | M | NCD | 02-Jun-2026 | Outpatient Clinic | Active |
100000Y | Betty Williams | 52 | 15-Mar-1974 | F | HIV | 10-May-2026 | Outpatient Clinic | Active |
→ Aggregate Report (By Program and Sex)
Program | Male | Female | Unknown | Total |
|---|---|---|---|---|
HIV | 22 | 38 | 0 | 60 |
TB | 14 | 11 | 1 | 26 |
NCD | 9 | 17 | 0 | 26 |
ANC | 0 | 44 | 0 | 44 |
Total | 45 | 110 | 1 | 156 |
→ Aggregate Report (By Age and Gender)
Age Band | Male | Female | Unknown | Total |
|---|---|---|---|---|
< 1 year | 0 | 0 | 0 | 0 |
1 – 4 years | 0 | 0 | 0 | 0 |
5 – 14 years | 1 | 2 | 0 | 3 |
15 – 24 years | 1 | 2 | 0 | 3 |
25 – 49 years | 3 | 5 | 0 | 8 |
50+ years | 4 | 8 | 0 | 12 |
Total | 9 | 17 | 0 | 26 |
3. Patient Flow
Newly registered patients in a period, by age/sex/location (line list + aggregate):
Line list and counts of first-time registrations within a date range, disaggregated by demographic dimensions. Used to track catchment growth and reach.
The line list is operational: used by registry clerks, facility managers, and clinicians who need to see which patients registered.
The aggregate is reporting / analytical: used by managers, MOH submissions, and donor reporting, where the question is how many patients registered.
Output Fields:
patient_id: Patient Identifierpatient_name:Patient Name (First Name + Last Name)age_at_registration: Patient's age at the time of registrationage_at_report: Patient's age at the time of report generationbirthdate: Patient's date of birthgender: Patient's sex/genderregistration_date: Date the patient was first registered in the systemBy default, this is the system-generated
person.date_created.Implementations that maintain a separate "Registration Date" person attribute (for backdated paper registrations) may configure the report to use that field instead.
registration_location: Location where the patient was first registered in the system.patient_status: Active / Deceased / Transferred out
Parameters:
Date range (registration period — from/to)
Optional: Filter by location, gender, or age band
Optional: Configurable age bands (default: WHO 5-year bands; implementations may adjust to national MOH standards)
→ Line List Report
Patient ID | Patient Name | Age | Birthdate | Gender | Registration Date | Registration Location | Current Status |
|---|---|---|---|---|---|---|---|
100000Y | Betty Williams | 52 | 15-Mar-1974 | F | 10-May-2026 | Outpatient Clinic | Active |
100008E | Joshua Johnson | 4 | 25-Sept-2021 | M | 02-Jun-2026 | Outpatient Clinic | Active |
→ Aggregate Report
Age Band | Male | Female | Unknown | Total |
|---|---|---|---|---|
< 5 years | 4 | 6 | 1 | 11 |
5 – 14 years | 7 | 9 | 1 | 17 |
15 – 24 years | 5 | 11 | 3 | 19 |
25 - 29 years | 3 | 4 | 5 | 12 |
50+ years | 5 | 2 | 7 | 14 |
Total | 24 | 32 | 17 | 73 |
Patient visits/attendance workload (line list + aggregate):
Total patient visits over a defined period, grouped by location, service, or provider. Used to monitor workload and plan staffing.
The line list is operational: used by front-desk supervisors and providers who need to see which visits occurred, when, and with whom.
The aggregate is reporting / analytical: used by facility managers, MOH submissions, and donor reporting, where the question is how many visits occurred.
Output Fields:
visit_id: Primary key of the visit record