GSoC Journey: Week 06 of coding period
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 6: July 01 — July 05
Tasks to be completed this week:
📄 Add New Conditional Logic
- Hide pages and sections
- Disable form fields based on user inputs
- Integrate this logic dynamically into the schema for conditional rendering
🛠️ Increase Unit Test Coverage
- Cover newly defined logic in the rule builder
GSoC Admin Meeting
On July 1, 2024, the OpenMRS contributors and I had a meeting with our GSoC admin to share our GSoC work progress and discuss information regarding the mid-term evaluation. We had a fun chat, discussed our work progress, challenges faced, and upcoming schedules.
Tasks Completed
✅ Developing a validation rule:
- Added new rules for hiding pages and sections to enable conditional rendering of forms.
- Implemented rules to automatically disable form fields based on conditional checks.
- Integrated these rules into the form schema to ensure they are reflected in the forms.
🧪 Testing:
- Added unit test cases for the newly implemented validation rules.
- Ensured that the new code does not affect existing logic in the rule builder.
- Created new examples and tutorial guides to help users understand the functionality of the newly added validation rules.
Challenges Faced
🔍 Integration Complexity: Ensuring seamless integration of new validation rules into the schema.
🔄 Editing Flexibility: Allowing users to edit rules without deleting incorrect logic and starting anew.
🛠️ Automatic Adjustment: Implementing automatic schema adjustments for updated logic integration, aiming for minimal latency.
Example scenario:
Consider a scenario where a doctor creates a rule to show or hide a specific field based on the response to the form field, “Are you affected by COVID-19?”. If the patient responds positively, the subsequent form fields should become visible to gather details about the patient’s COVID experience and symptoms. Conversely, if the patient responds negatively, these form fields should remain hidden. This dynamic rendering enhances the form’s usability.
However, if the doctor mistakenly hides an entire page instead of just the specified field, it results in incorrect conditional logic that needs to be rectified. It would be beneficial if the doctor could edit the existing validation rule to correct the mistake by hiding only the specified section. This process should seamlessly delete the incorrect logic from the schema and replace it with the corrected validation logic, thus ensuring accurate and efficient form functionality.
Click here to watch the demo.
Lessons Learned
🌟 Understanding Client Requirements: Prioritize understanding the client’s needs when developing a feature or product.
🛠️ Effortless User Experience: Ensure the user experience is seamless and intuitive from the user’s perspective.
🔍 User-Centric Approach: Always consider the user’s viewpoint to maintain clarity and guide effective development.
Plans for Next Week
- Implement Changes Based on Mentor Reviews: I will carefully review and incorporate the feedback provided by my mentor on my recent pull request.
- Adding helper functions: Integrating new helper functions for date validations.
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.
I’m Senthil Athiban, a final-year undergrad from India. My days are for VS Code, and my nights are for GitHub — a constant journey of coding and exploration, fueled by passion and curiosity.
🔗 Connect with Me
- GitHub: senthil-k8s
- LinkedIn: Senthil Athiban M
- Twitter: @senthil_k8s