Google Summer of Code 2026 Weekly Status Reports

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.

@gsoc2026contributors,

Answer the following questions in a once-weekly post on Fridays and BE BRIEF

  • What progress have you made this week?
  • What do I plan to do next week?
  • Have you had any blockers or issues that are impeding your project?

The point of these is to catch any issues and handle them early.

Any questions can be directed toward @judywawira, @sunbiz, or myself.

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.

1 Like

What progress have you made this week?

  • Bumped SDK constraint to >=3.0.0 and resolved analyzer/hive_generator conflicts.

  • Designed and wrote the Pigeon schema defining SyncApi with 5 async methods (login, syncMetadata, pushTrackedEntity, pullTrackedEntity, logout).

  • Ran Pigeon code generation producing Dart, Kotlin, and Swift platform interfaces.

  • Created the Dart PlatformSyncService wrapper for the rest of the app to use.

  • Wrote a Kotlin SyncApiImpl stub returning mock responses and registered it in MainActivity.

  • Built a Flutter integration test verifying the bridge round-trip works on device.

What do I plan to do next week?

  • Adding the official DHIS2 d2 SDK dependency to the Android build.

  • Implementing real login() using d2 SDK initialization and authentication.

  • Integrating the native auth bridge into the existing LoginScreen flow.

Have you had any blockers or issues that are impeding your project?

  • NONE
1 Like

What progress have you made this week?

  • Created a ArtifactManager object which hooks into the OHIFViewer and gets access to the cornerstone tools
  • Created a FindSimilarArtifacts tool which gets the coordinates from the rectangle ROI and performs the next steps
  • Drafted the EventListener which takes the input from the FastApi in the later days.

What do I plan to do next week?

  • Extracting the DICOM Instance UID from the Orthanc so that it can be sent to the model.

  • Creating a JSON payload of the exact ROI coordinates.

  • Drafting the architecture for FastAPI.

Have you had any blockers or issues that are impeding your project?

NONE

1 Like

Weekly status update

  • 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.
2 Likes

My Blog - GSoC 2026 Week 1: Laravel 12 Upgrade and Security Testing Foundation | Kishan Singh.

Progress :

  • 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.

Blockers :

  • No blocker’s.
2 Likes

What progress have you made this week?

  • Created a frontend JSON payload and also implemeted a draft JWT token.
  • Fetching the DICOM SOP Instance UID from Orthanc.
  • Created an architectural plan and opening an draft MR of the FastAPI Server.

What do I plan to do next week?

  • Containerizing the FastAPI

  • Establishing the internal network bridge to the Orthanc database.

  • Creating the baseline of the MedSam Model.

  • Implementing a logic to download the .dcm files into memory and cropping the matrices based on frontend coordinates.

Have you had any blockers or issues that are impeding your project?

NONE

1 Like

Weekly status update

  • 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.
1 Like

What progress have you made this week?

  • Added the d2 SDK dependency with Maven repository and bumped Kotlin to 2.3.0 for compatibility.
  • Configured multidex, desugaring, and packaging exclusions for the d2 SDK.
  • Implemented real login() and logout() in SyncApiImpl using d2 SDK initialization.
  • Integrated PlatformSyncService.login into the existing LoginBloc (d2 init fires in background after HTTP login succeeds).
  • Validated login against local DHIS2 Docker instance — returns real userId and orgUnits.
  • Cached active org unit ID in flutter_secure_storage after successful login.

What do I plan to do next week?

  • Implementing syncMetadata using d2.metadataModule().blockingDownload().
  • Caching program ID in flutter_secure_storage after metadata sync.
  • Building a debug metadata viewer screen to verify integration.

Have you had any blockers or issues that are impeding your project?

  • NONE
1 Like

Hiii @r0bby my updates for this week:

My Blog - GSoC 2026 Week 3: CI/CD Pipeline Configuration | Kishan Singh

Progress :

  • This week, I wasn’t able to code much due to my re-exam but I laid the foundation for the CI/CD pipeline for the project.
  • The setup for the pipeline was quite easy because we are there on the gitlab and it is easy to create a ci-config.yml there.

Next Week :

  • I postponed the meet with the Mua Rachmaan regarding the MU workflows and for upcoming week I want to mark it done on first priority.
  • Secondly I will complete the static layer of CI/CD pipeline.

Blockers :

  • No blocker’s.
1 Like

What progress have you made this week?

  • containerized the FastAPI Service.
  • Established the internal network bridge to the Orthanc database.
  • Implemented a logic to download the .dcm files into memory and cropping the matrices based on frontend coordinates.

What do I plan to do next week?

  • Restructuring the files.
  • Creating the baseline of the MedSam Model.
  • passing the cropped numpy array to medsam and extracting the 1D feature embeddings
  • Finalising the MedSam model
  • plannings for 2.5D volumetric tracking.

Have you had any blockers or issues that are impeding your project?

NONE

1 Like

What progress have you made this week?

  • Implemented syncMetadata() in Kotlin using d2.metadataModule().blockingDownload().
  • Retrieved available Organisation Units, Programs, and - Tracked Entity Attributes for the logged-in user.
  • Cached org unit ID in flutter_secure_storage after login (carried over from Week 2).
  • Created a Flutter debug metadata viewer screen displaying fetched counts for verification.

What do I plan to do next week?

  • Analyzing the Infant model’s 22 attributes and creating a mapping layer in Kotlin.
  • Implementing pushTrackedEntity to register/update infants via d2’s tracker module.
  • Adding a Dart-side helper for Infant-to-Payload conversion.

Have you had any blockers or issues that are impeding your project?

  • NONE
1 Like

What progress have I made this week?

  • 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.
1 Like

Blog - https://kishansinghifs1.github.io/posts/gsoc-2026-librehealth-week-3-mu-workflows-static-layer-and-dynamic-blocker/

Progress :

  • 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.
1 Like

What progress have you made this week?

  • Created InfantMapper.kt mapping all 22 Infant attributes to their DHIS2 tracked entity attribute UIDs.
  • Implemented real pushTrackedEntity() using d2’s tracker module to create/update TEIs.
  • Added InfantSyncHelper on the Dart side for converting Infant model to TrackedEntityPayload.
  • Tested pushTrackedEntity via integration test on physical device, all current tests pass against local DHIS2.

What do I plan to do next week?

  • Mapping clinical events (vitals, KMC sessions) to DHIS2 program stage events.
  • Implementing pullTrackedEntity for bidirectional sync.
  • Writing Kotlin unit tests for the mapping layers.
  • Adding event push to integration test after pull is complete.

Have you had any blockers or issues that are impeding your project?

  • NONE
1 Like

What progress have I made this week?

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.

1 Like