# Introduction - Akhil | GSoC 2026 | Generic Reporting Framework

**URL:** <https://talk.openelis-global.org/t/introduction-akhil-gsoc-2026-generic-reporting-framework/2289>\
**Category:** GSOC\
**Tags:** intro, gsoc2026\
**Created:** [April 16, 2026, 5:33pm UTC](https://talk.openelis-global.org/t/introduction-akhil-gsoc-2026-generic-reporting-framework/2289 "2026-04-16T17:33:16Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![AkhilKumar](https://avatars.discourse-cdn.com/v4/letter/a/ee7513/32.png) [@AkhilKumar](https://talk.openelis-global.org/u/AkhilKumar)\
**Post date:** [April 16, 2026, 5:33pm UTC](https://talk.openelis-global.org/t/introduction-akhil-gsoc-2026-generic-reporting-framework/2289/1 "2026-04-16T17:33:16Z")

</div>

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](https://github.com/Akhilreddy175/jobapplicationtracker)

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

---

<div class="post-metadata">

**Author:** ![Agaba\_Derrick\_Junior](https://yyz2.discourse-cdn.com/flex030/user_avatar/talk.openelis-global.org/agaba_derrick_junior/32/503_2.png) [@Agaba\_Derrick\_Junior](https://talk.openelis-global.org/u/Agaba_Derrick_Junior)\
**Post date:** [April 16, 2026, 6:57pm UTC](https://talk.openelis-global.org/t/introduction-akhil-gsoc-2026-generic-reporting-framework/2289/2 "2026-04-16T18:57:32Z")

</div>

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](https://github.com/DIGI-UW/OpenELIS-Global-2/tree/develop/src/main/java/org/openelisglobal/reportdefinition)

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](https://github.com/orgs/DIGI-UW/projects/6) for issues !

---

<div class="post-metadata">

**Author:** ![junaid](https://yyz2.discourse-cdn.com/flex030/user_avatar/talk.openelis-global.org/junaid/32/1166_2.png) [@junaid](https://talk.openelis-global.org/u/junaid)\
**Post date:** [April 17, 2026, 5:36am UTC](https://talk.openelis-global.org/t/introduction-akhil-gsoc-2026-generic-reporting-framework/2289/3 "2026-04-17T05:36:03Z")

</div>

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:

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 🙂

Good luck!
