We are going to try something new that we introduced in 2020. This is in addition to your blog post. The goal is to catch things early if you are behind in your timeline early.
Note: You aren’t required to do this until 2026-05-29T23:59:00Z and every Friday before 23:59 UTC. There is a short 24hr grace period.
Please note: The only posts on this topic should be the progress reports. No need to respond to posts, if there is an issue, use the project topics. Let’s keep this thread clean.
This week I pushed the next lh-form-designer MVP steps on the gsoc26-form-designer branch. The component now has a group-aware canvas, item selection, palette-based field insertion, editable field text, and a required toggle in the properties panel. The demo is now behaving like a basic Questionnaire editor instead of just a placeholder shell.
What I plan to do next
Next I want to add minimal choice.answerOption editing, then move toward a simple enableWhen implementation and grouped FHIR Questionnaire JSON export. After that I’ll clean up the demo data and keep polishing the editor flow.
Blockers
No major blockers right now. I did hit a parser compatibility issue earlier with optional chaining, but I worked around it by keeping the code compatible with the current Polymer CLI setup.
This week, I focused on two important areas of the LibreHealth EHR Laravel project. First is upgrading the application to a modern Laravel and PHP stack, and second is building the foundation for MU security testing.
Next Week :
Next week, I will continue by working on the MU workflow tests after clarifications from the Mua Rachmann and Robby O’Connor on top of the above foundation I built.
I will also start working on CVSS vectors so that the security findings can be described and prioritized in a more structured way and it would eventually help us for the main goal of our CI/CD pipeline ready.
This week I got my gsoc26-form-designer branch aligned with the latest upstream work and fixed the build/test setup that was blocking local verification. I also landed two authoring features in the designer: editing answer options for choice items and a minimal enableWhen editor.
What I plan to do next
Next, I’m planning to work on exporting the current designer state as Questionnaire JSON, and then I want to add a few basic tests for the designer interactions.
Blockers
No major blockers at the moment. I had a test/build issue earlier, but that has been resolved.
Added exportQuestionnaire() method to the lh-form-designer Lit component that generates a valid FHIR Questionnaire JSON from the current designer state
Added a visible Export JSON panel in the demo so the output can be inspected directly in the UI
Implemented filtering of incomplete enableWhen rules from the exported and preview JSON, so only valid conditional logic entries appear in the output
Fixed a rendering issue in renderProperties() where the component was crashing on initial render after the new code was introduced
Added tests covering export structure, nested group items, choice answer options, and invalid enableWhen filtering — all 23 tests are now passing
What I plan do next?
Add Import / Load Questionnaire JSON functionality so an existing Questionnaire can be loaded back into the designer for continued editing
Add delete selected item and reorder (move up/down) actions to the form canvas
Add tests for the above interactions
Have I had any blockers or issues impeding my project?
Yes I hit a runtime crash after updating the component where a method call inside renderProperties() was failing silently. The page went blank and the error only showed up in the browser console. It took me some time to connect the stack trace back to the missing method. Fixed now, but I learnt to always read the full diff carefully before committing any change.
This week was actually good, I had my first ever meeting with my mentor Mua Rachmann, there was actually big dilemma with the decision on MU workflows, which was about deciding which routes should I consider for which MU workflow and how to map them. We conluded that, for now we would be maintaining the 6 main MU workflows. I have map every routes and their respective MU’s in the blog kindly refer that for more information.
After finalizing the MU workflows, I completed the static layer of our CI/CD Pipeline.
Next week, I will focus on:
Implementing the finalized Meaningful Use workflow test suites.
Integrating OWASP ZAP in CI/CD dynamic layer scanning.
Current Blocker: OWASP ZAP Integration
Since OWASP ZAP is bit tricky to integrate it in pipeline, whatever tutorials I found were bit old and not much helpful, For the SPA applications, the authentication is bit different and in our case we are using the sanctum for authentication, the csfr token management for the spider ajax scanning is pain in the neck.
This week I completed the main midterm features for lh-form-designer. I implemented the FHIR Questionnaire export flow, added the Export JSON panel in the demo, and filtered incomplete enableWhen rules so the exported JSON stays valid and clean. I also fixed the rendering issue in renderProperties() that was causing the component to crash on initial load.
In addition, I completed the remaining form-designer interactions: import/load support, delete and reorder actions for items and groups, and recovery behavior when the last group is deleted. I also fixed the addField() state bug so adding a field updates only the selected group instead of dropping other groups, and cleaned up unrelated formatting churn and CI node version mismatch in the review process. The component is now working properly in the demo with multiple groups, field insertion, property editing, and export flow.
What do I plan to do next?
At this point, the main functionality is implemented and only test-related cleanup remains. I plan to finish the remaining test work, verify everything passes cleanly, and then prepare the final merge-ready version of the midterm deliverable.
Have I had any blockers or issues impeding my project?
The main issue this week was a state update bug in addField() that came up during review. I investigated the flow, fixed the issue so only the selected group is updated, and verified the behavior in the demo and tests.