Skip to content

Instantly share code, notes, and snippets.

@adityadeshlahre
Last active November 22, 2025 12:55
Show Gist options
  • Select an option

  • Save adityadeshlahre/6d0a63070f1758b84839f1e23e2e5485 to your computer and use it in GitHub Desktop.

Select an option

Save adityadeshlahre/6d0a63070f1758b84839f1e23e2e5485 to your computer and use it in GitHub Desktop.
[GSOC 2025] - Work Submission - OpenELIS Organization - Rewriting All JSP page -> React Js page

GSOC 2025 x OpenELIS Global [Final Work Sumbission]



Project Background | Goals

OpenELIS Global is open enterprise-level laboratory information system software tailored for public health laboratories. OpenELIS is used at a national scale in a variety of settings, from small general hospital labs, all the way up to national reference labs, and all sizes in between.

The project involved rewriting the Test Management Pages & components from JSP (Jakarta Server Pages) to React.js, covering Test Configurations, Test Management, and other operational pages. Previously, all pages followed an MVC (Model–View–Controller) architecture, making them non-user-friendly. Therefore, the UX needed significant improvement.

Eventually, all MVC Controllers were rewritten as REST Controllers (REST Endpoints), so now all routes return JSON as the response. Additionally, the routes were updated to accept JSON in the request body and perform the required actions according to the specified routes and functions.

My Contribution

For the past 12-13 weeks, I have been focused on migrating all Test Management & Componenet Pages to React.js (New UI) to enhance user-friendliness. Additionally, I integrated translations across all pages, as OpenELIS is used globally. The previous JSP pages were poorly structured in terms of user experience, making the move to the new stack essential.

The backend code is strictly written in Java, using Spring Boot (web framework) and Maven (builder). The original MVC structure was followed throughout, but it was necessary to convert to REST Controllers (REST Endpoints) for the new release of OpenELIS 3.2.x In this release, both the old and new UIs will be operational.

Current state of Project | What's Left

Currently, 95% of the pages have been completed. The remaining pages are fairly complex, but I see it as a good challenge to tackle and finish them. By the end of GSoC, I will ensure these remaining pages are completed.

Code [Merged]

Right now, in the codebase 50K Lines and 250+ Commnits got merged.

image

  • You can view all merged PR HERE
  • In Progress PR HERE
Pull Request Status
Test Management Config Menu Page Merged
Test Menu List Notification Config Menu Page Merged
TestOrderability Page Merged
Test Activation Deactivation page Merged
Test Add Page: Adding New Test Page Merged
Unit Of Management: Create UOM Merged
Docs : CICD Test Performing at Local Merged
Result Selection Option Page Merged
Panel Management: Create New Panel Merged
UX Enhencment: Sorting Fix as Test Activation Deactivation Page Merged
Panel Management: Panel Order Merged
Sample Type Management: Create New Smaple Type Merged
Test Section: Test Unit Create Merged
Sample Type & Test Section Order page Merged
Sample Type & Test Section Test Assignment page Merged
Panel Managment: Panel Test Assign Merged
Test Modifiy Entry Page Merged
UX Logic: Page skipping logic for freeText as resultType Merged
UX Enhencment: Test Modify Entry page Merged
UX Logic: Test Modify Entry Page: Result Type Merged
Component Fix: Componenet Logic fixes Merged

Demo workflow video

Learning

  • Maven Project Building/Bundlers
  • Spring Boot (WEB FRAMEWORK) (initally started with JAVA then learned to perform POST/GET calls)
  • Shifting MVC controllers to Rest Controller (Get the desiered JSON Values)
  • Conditional rendering and Complex Rendering (using react JS)
  • State Management (On older version of react js)
  • Formik as Form Management Library
  • YUP as Input/Run Time Validation
  • Fixing other SETUP issues

Challenges

  • Debugging Different mode/level of LOGGER (Info/Debug)
  • Update Data/PUT/POST of JSON values
  • Handaling natorius users EDGE cases
  • Implementaion of workflow from old to new ui (we need to keep the same workflow)

Revelent Links


Thoughts

As we move forward in the real world, there's always room for improvement in every line of code. I want to extend my sincere thanks to my mentor, the organization admins, and the community members for their continuous support and assistance throughout this project. It has been an exciting journey working with this wonderful community, and I’ve gained so much from the experience. I would also like to thank Google for providing this incredible opportunity. Keep pushing code!

Thank you for reading.

Comments are disabled for this gist.