GSoC Journey: Week 04 of Coding Period

Senthilathiban
3 min readJun 21, 2024

--

Hello folks,

Myself Senthil Athiban, a final year undergraduate student at Madras Institute of Technology. This blog represents a continuous series documenting my journey through GSoC. If you haven’t already read my previous blogs, I encourage you to check out my previous blogs here. I have been selected as a GSoC student at OpenMRS for the Validation Rule Builder for the Form Builder project. My primary mentor is Dennis Kigen, and my backup mentor is Hadijah Kyampeire.

Week 4: June 17 — June 21

This week, I focused on two main tasks:

  1. Developing a calculation expression logic in the rule builder.
  2. Integrating custom validation logic, including hideWhenExpression, failsWhenExpression, and calculateExpression into the schema.

GSoC Admin Review

On June 17, 2024, I and other contributors of OpenMRS had a call with our GSoC Admin. We had an enjoyable chat, sharing our progress through demos and discussing the challenges we faced. During my turn, I presented my work with a live demo. Everyone was impressed and encouraged me to continue, highlighting that working in the form library is not a joke. Our GSoC Admin advised us to share our progress in the OpenMRS squad call, which happens every Thursday, where the squad leaders, members, and the product manager. I’ll detail my squad call experience at the end of this blog. For now, let’s dive into the technical aspects.

Tasks Completed

  1. Developing a Calculate Expression Logic: The rule builder’s purpose extends beyond building conditional logic; it also supports calculating necessary fields without user interaction. This functionality helps prevent manual errors and enhances user experience.
  2. Integrating the Logic into Schema: This was the challenging part. Integrating conditional logic, validation checks, and calculations logics into the schema ensures these logics are seamlessly reflected in the form.
  3. PR Review Changes: This week, my mentor provided early feedback and suggested some minor changes.

Demo of my work: https://www.loom.com/share/28eb61eef1004f69bffe6a144e3479cf?sid=1f9a072d-83c5-45f0-a612-6d5a6cf5be45

Challenges Faced

  1. Schema Integration: Integrating conditional and calculation logics into the schema was challenging. The goal was to ensure that whenever a user builds logic using the rule builder, it dynamically and seamlessly reflects in the schema. The workload increased because we didn’t have a submit button for building conditional logic. A submit button would have ensured that changes are reflected in the schema only upon submission. In our rule builder, however, users can build their logic without worrying about latency; any changes made are reflected dynamically in the schema. I utilized side effect calls to listen for changes in the current and global states and implemented some debugging to prevent infinite re-renders.

Squad Call Review

This week has been fulfilling as my work met the organization’s expectations. Every Thursday, we have a squad call where squad leaders, members, and the product manager participate. The objective of the call is to share each squad’s work and discuss any blockers. Each squad has 2–3 minutes to present. At the end of the call, I had the opportunity to share my work with a live demo. Everyone congratulated me, and the UI/UX team was particularly satisfied. Our GSoC Admin thanked me for my thorough documentation of the rule builder and for following best practices.

Plans for Next Week

  1. Implement Changes Based on Mentor Reviews: I will carefully review and incorporate the feedback provided by my mentor on my recent pull request.
  2. Developing Additional Conditional Logics: There are still many logics to integrate into the rule builder, such as disableWhenExpression. I will ensure these are also integrated into the schema.

About Me

I’m Senthil Athiban, a final-year undergrad from India. Days are for VS Code, nights for GitHub — a constant journey of coding and exploration, fueled by passion and curiosity.

GitHub: https://github.com/senthil-k8s

LinkedIn: https://www.linkedin.com/in/senthil-athiban-m/

Twitter: https://twitter.com/senthil_k8s

--

--