Introduction - Akhil | GSoC 2026 | Generic Reporting Framework

Hi everyone!

My name is Akhil, and I am an Undergraduate (B.Tech) student interested in contributing to OpenELIS Global through GSoC 2026.

I am particularly excited about the Generic Reporting Framework project — building a UI-based ad-hoc reporting system that empowers lab workers to generate patient reports without developer intervention is a real and meaningful problem, and I’d love to work on it.

My skills:

  • HTML, CSS, JavaScript (frontend)
  • Java + Spring Boot (backend REST APIs)
  • PostgreSQL, Docker, AWS (EC2, RDS, ECR)
  • GitHub Actions (CI/CD pipelines)

I am committed to learning and contributing actively. I have already cloned the repository and am exploring the codebase.

A project I recently built:
I developed a full-stack “Job Application Tracker” using HTML/CSS/JS on the frontend and Java Spring Boot on the backend, connected to a PostgreSQL database. I containerized the app with Docker, deployed it to AWS EC2 behind an Nginx reverse proxy. I also configured CloudWatch alarms for observability.
Here is my project GitHub link: GitHub - Akhilreddy175/jobapplicationtracker: Full-stack job application tracker built with Java Spring Boot, PostgreSQL, Docker, and deployed on AWS EC2 with Nginx. · GitHub

This experience gave me hands-on familiarity with Java Spring Boot REST APIs and full-stack architecture — which I believe directly applies to the reporting framework project.

I would love guidance from @Moses_Mutesasira on:

  1. How the existing reporting system works in OpenELIS
  2. The expected approach for the new reporting framework UI
  3. Any good first issues I can start contributing to

Thank you for building such an impactful open-source project. I look forward to being part of this community!

— Akhil

1 Like

hi @AkhilKumar thanks for bringing this up, so we have really had our hands lay down some good foundation onto the reporting framework you can take a look here

Currently OpenELIS currently relies on hard-coded, pre-designed reports. Any request for a new report or slight modification requires a developer to alter SQL queries and deploy a new version. This project aims to decouple report generation from the core codebase by introducing a Generic Robust Reporting Framework. The framework will empower administrative users to create, configure and execute dynamic patient ad-hoc reports directly from the UI using metadata-driven definitions without writing any code.

you can take a look at OpenELIS Issues Dashboard · GitHub for issues !

Hi @Akhil,

Nice to see your interest in the reporting framework!

Since you’re starting to explore the codebase, I tried to map out the current reporting flow in a simple way while going through it sharing it here in case it helps you as well.

At a high level, the flow looks like this:

  1. The UI sends a request (with filters) to the backend.

  2. ReportRestController receives the request.

  3. It uses ReportImplementationFactory to decide which report class to use (based on report name).

  4. A specific implementation (like PatientClinicalReport) is selected.

  5. That class:

    • fetches data (patients, samples, analyses, results)

    • processes and maps it into a flat structure (report beans)

  6. Finally, the data is passed to JasperReports to generate a PDF.

One thing that stood out to me while exploring this is:

  • Each report requires its own Java class

  • Data fetching + transformation + formatting are tightly coupled

  • Extending the system often means adding new classes and logic

This seems to be one of the reasons why a more flexible / generic reporting approach is being discussed.

If you haven’t already, you might want to look into:

  • ReportImplementationFactory

  • PatientClinicalReport

  • PatientReport (base class)

Understanding these gives a pretty good picture of how things currently work.

Happy to discuss more if you dive deeper into this — I’m also exploring this area and still learning :slightly_smiling_face:

Good luck!