Gsoc 2025 : Immunization and Vaccination Schedule in O3 - Project weekly Updates & Discussion

Excited to Announce: GSoC 2025 Selection! :heart:

I’m thrilled to share that I’ve been selected for Google Summer of Code 2025 with OpenMRS! :tada:

:microscope: Project Title: Immunization and Vaccination Schedule in O3

:teacher: Primary Mentor: [@dkigen]

:mechanic: Backup Mentor: [@grace]

This thread will be the space where I post updates and discussions throughout the summer. Feel free to engage, give feedback, or just follow along! :glowing_star:


:hammer_and_wrench: Project Goals

  • Enhance the Vaccination Entry Form
    • Add fields for validUntil, notes, and batch information (manufacturer, expiration date).
  • Visual Immunization History
    • Display immunization history in a scrollable table with fixed headers.
    • Show vaccine names, all dose dates, next due dates (green if upcoming, red if overdue).
    • Include pagination.
  • Modify Immunization Table View
    • Collapse/expand rows per vaccine, showing recent doses.
    • Expandable rows list all doses with fields: Sequence, Vaccination Date, Valid Until, and Edit/Delete actions.
  • Highlight Overdue Doses
    • Visually mark overdue entries in red and upcoming ones in green.
  • Allow Deletion of Mistaken Doses
    • Add a Carbon Button (trash icon) for each dose.
    • Confirm deletion using a Carbon Modal.
    • DELETE request to FHIR Immunization resource to remove incorrect records.

:books: Resources:

:backhand_index_pointing_right: Project Wiki

I’m incredibly grateful for this opportunity and excited to contribute to OpenMRS and make a meaningful impact. Looking forward to learning, building, and collaborating with this amazing community.

cc: @dkigen @grace @ibacher @jayasanka @beryl @fanderson

7 Likes

Blog post on the Community bonding period

3 Likes

Hello team, I am currently working on immunization workspace refactoring. In the immunization workspace, I need to add an extra field called ‘notes’ (comments). However, the FHIR resource in OpenMRS is not updated for this field, and I cannot map the notes.

sources:

jira ticket:

@ibacher @dkigen @cioan @mherman22 @dkayiwa @mozzy

1 Like

week 3 blog

Concepts Update

Greetings @chintu, after looking a bit, you were right with your comment on last week’s O3 squad call: There were some immunization options available in CIEL that we didn’t have. This PR will update the list to add 19 more options. Let me know if in your feedback you hear of other vaccines that are missing - these were all the missing ones I personally could find in CIEL.

Feedback

Last week @chintu asked for more feedback on his work so far. Here’s a screenshot of how it’s progressing:

Demo video:

Here’s my main feedback and questions:

  1. Ready for Next Release (with testing): As a general view-only overview of the patients’ history, it’s great. I’d like to get this into the very next O3 Release. @chintu @dennis could you put this behind a feature flag for now at least, or even pop it into dev3 directly without a feature flag? (@chintu please just test it a bunch :slight_smile: see if you can force it to do anything weird! )

  2. Expires Date (Most Important point of feedback): While I’d say this is fine as the “MVP”, what’s really missing to elevate this to a level that will really help providers is showing the " Date coverage expires / Valid until" date. (And then making it red if that date is in the past.) What needs to happen in order for us to show this information? Are we waiting on some kind of backend variable? Do you just need a concept for “Valid until” to support the Entry/Edit form itself?

    • Dennis mentioned a while ago that in the Immunizations FHIR resource, you couldn’t find a “valid until” field. Do you just need either (a) for me an Ian to suggest an alternative FHIR resource, or (b) for us to invent something in the OpenMRS data model? Or a concept for it?
    • Yes, there is an expiration date which is already being recorded in the form, but it falls under vaccination batch information, so it’s not about the patient’s immunization coverage timeline - it’s literally just about the expiry date of the vial/injection itself used to inject/insert into the patient. So yeah, not the same :slight_smile:
  3. App order: Please move the history view up so it’s above the entry/edit widget. Why: It’s easier to skim than the edit/entry widget, and the other open source EMR that guided our design for this follows a similar pattern.

  4. Horizontal Scroll Bar: As soon as there is data that goes past the user’s horizontal screen display, can we please show the Horizontal Scroll Bar by default (so not on hover)? This is to make it easier for the vast majority of our users who do not have a trackpad that easily responds to left/right horizontal scroll hand movements. (Most users are on a very old desktop with an old or simple mouse, or on a tablet.)

  5. Immunization App Text: Please update the text so instead of “Single Dose on [date]”, it says “Last dose [date], Dose # [dose number]”, as shown in the image below. This is more clear for users :slight_smile:

  6. The “More than 10” Bug: Dennis mentioned a while ago that in the immunization widget, when adding vaccinations or doses, if more than 10 entries are added, the form accepts them but doesn’t display entries beyond the 10th. Did you already fix this? If not, please fix :slight_smile:

CCing @reagan @fanderson @mseaton @ddesimone @michaelbontyes and anyone else interested in case they have further feedback for this wonderful GSOC student and his work :slight_smile:

2 Likes

Super grateful for your feedback, @grace — feeling pumped!

1 Like

@ibacher you mentioned

  1. FHIR represents “next vaccination” as a separate resource (ImmunizationRecommendation) that we don’t currently support. Realistically the concept of “date of next dose due” is not usually part of the vaccination record. It’s probably beyond the scope of the GSoC project to add the data model and API to support that.

However, since the core part of the project is building an Immunization History Card, we would ideally need a “vaccination valid until” field to help flag patients appropriately.

I came across the FHIR Immunization extensions and was wondering — would it be a valid approach to use or define a custom extension on the Immunization resource to store this information?

Please let me know if this could be a feasible path forward, or if there’s a better alternative you’d suggest.

Upon further review: @ibacher what would you think of using this FHIR resource (supported in R4 and R5):

Recommended date " in "ImmunizationRecommendation”.

The 2 questions then to figure out would be:

  • How to connect/associate this to the specific Immunization resource (since the ImmunizationRecommendation resource is a different one)
  • Would we need to pick 1 of these 4 “Content Logic Definitions”? I don’t love any of them.
1 Like

Hi @ibacher, Just following up on the discussion around the “valid until” / “coverage expiry” field for immunizations.

I understand we’re not currently supporting ImmunizationRecommendation, so I was wondering if you’d had a chance to consider whether we could proceed with a custom extension on the Immunization resource, or if you’d prefer we explore another approach

I don’t mind using the EU extension you posted.

1 Like

@mherman22 might you have the bandwidth to take this on? Thanks.

2 Likes

Yes. What @dennis said above.

2 Likes

I do, @chintu do you mind creating a ticket for this that i can followup with?

1 Like

sure i will @mherman22 thanks and here it is Jira

Would LOINC 45354-8 Date next dose make any sense?

I’ve been thinking about the approach for implementing nextDoseDate. It would be cleaner and more consistent if we tied it to a concept, similar to how other immunization data points are handled.

Would love to have your take on this @ibacher.

1 Like

That’s pretty much exactly the concept we’d need. @akanter Would it be possible to add this to the next release of CIEL?

2 Likes