Skip to content

Instantly share code, notes, and snippets.

@Darshpreet2000
Last active August 19, 2021 10:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Darshpreet2000/593f13f7018c9e5cfd7c0893bfff40a5 to your computer and use it in GitHub Desktop.
Save Darshpreet2000/593f13f7018c9e5cfd7c0893bfff40a5 to your computer and use it in GitHub Desktop.
Google Summer Of Code 2021 Final Report

Organization - LibreHealth

Project - Develop an Android, IOS Mobile Application For Newborn Clinical Decision Support..

Student - Darshpreet Singh

Goal

To develop an Android & IOS application to provide clinical decision-support for nurses and doctors delivering essential newborn care interventions during the first day of life. This application provides knowledge, skills, and competencies to nurses and doctors in low/middle-income settings so that they can provide life-saving care to newborns from birth through 24 hours postnatal. App uses DHIS2 as backend & can be setup for any hospital/organization

The Goals of this project are

  • Ability to track multiple babies at a time;
  • Time-stamping births to generate an essential newborn care clock for each baby being tracked in the app;
  • Automated classification of babies health status, based on results from observations and assessments that are conducted during the first 2 hours after birth;
  • Automated advice on management of babies, based on their classification; Reminders/alerts to provide recommended essential newborn care interventions;
  • If particular interventions are not delivered on time, or at all, capture of information regarding why this essential newborn care was late, or missed

Links

Librehealth Project Repository

My Forked Repository

Link to Documentation

https://librehealth.gitlab.io/incubating-projects/mhbs/lh-mhbs-eceb/

What was done:

During these three months, I have:

  • Developed a Flutter Application from scratch which helps doctors to monitor new born babies health
  • Prepared user & developer documentation
  • Created program/stages in DHIS2 & extracted metadata
  • Deloyed to F-Droid

Merge Requests

Essential Care For Every Baby Application Project

  1. Merge Request !1 - Migrating to Flutter Project from Cordova
  • Migrating to Flutter Project from Cordova
  • Created CI/CD pipeline to build apk
  1. Merge Request !2 - Week -1 Created Register Baby Screen UI, Added Navigation Drawer
  • Developed UI of Register Baby Screen
  • Created Sliders for weight, temperature etc.
  • Created Model Class for storing Baby’s Information
  • Created Bloc for register baby screen
  • Created App Drawer with items ( Doctor’s Schedule, Messaging, Share App, Report Bug)
  1. Merge Request !3 - Created user authetication & login feature, added dark mode functionality, localized app strings, added unit tests for authentication functionality
  • Users can now login using username & password in App
  • Added Dark mode support
  • Created config files to store dhis2 apis & id
  • Added metadata files in README.md
  • Added Unit tests for Authentication
  • Added Support for other languages
  • Added 3 languages
  1. Merge Request !7 - Register baby functionality, Added functionality to queue API request to make app work offline
  • Baby able to get registered using app & their data is stored using api in DHIS2.
  • This feature works offline also, data is synced when user is online next time
  • Created a refresh bloc for state management
  • Added Snackbars for showing info related to syncing
  • stored the list in hive storage
  1. Merge Request !8 - Assessments Phases - 1, 2, 3, 4
  • Localized all strings in all phase assessments
  • Created 0- 60 mins from birth assessments UI
  • Created 60 - 90 minutes from birth UI
  • Created Phase 3 and Phase 4 assessments UI for Normal, Problem, Danger Classification
  1. Merge Request !9 - User profile screen notification functionality
  • Fetching notifications from dhis2 of a user
  • Saving notification for offline viewing
  1. Merge Request !10 - List of babies enrolled in program fetching functionality
  • fetch list of babies enrolled in ECEB program
  • display appropriate color for Danger(Red), Problem (Yellow), Normal(Green) in list tile of baby in app.
  • create child model class
  • save data after fetching for offline access
  1. Merge Request !11 - Phase 1 assessments capture functionality, Offline Notification feature
  • Created Phase 1 Assessments Capture functionality
  • Created Offline Notification showing functionality
  1. Merge Request !12 - Assessments Bloc, Client, Repository, Phase 1 Unit Testing
  • Flutter Assessment BloC test
  • AssessmentsRepository testing
  • Assessment Client Test
  1. Merge Request !13 - Searching & Sorting functionality
  • Sort List of babies
  • Search List of babies by mother's name
  1. Merge Request !14 - Phase 2 assessments capture with Unit tests
  • Stage 2 assessments capture with notifications showing
  • Stage 2 Unit Test
  • Classification repository to classify babies health using program rules
  • Classification repository Unit Test
  1. Merge Request !15 - Settings screen to toggle app settings
  • Created end drawer to toggle settings
  • User can toggle notifications, notifications sound, dark mode
  • The settings done by user are saved instantly in storage and changes are made according to it
  • Wrote unit test for settings bloc with test cases
  1. Merge Request !16 - Phase 3 assessments capture with Unit test
  • Create model class for stage-3 normal, problem, danger
  • create methods to validate all stage-3 assessments
  • create methods to push data to dhis2
  • capture assessments
  • show assessments based on classification
  • unit test phase 3
  1. Merge Request !17 - Summary of 24 hours on home screen
  • Showing summary of 24 hours in home screen
  • To show summary of 24 hours, We need to use lastUpdatedDuration=1d (1 day) as parameter in API to fetch all the events happened within 24 hours.
  1. Merge Request !18 - Phase 4 assessments capture with Unit tests
  • Stage 4 assessments capture with notifications showing
  • Stage 4 Unit Test
  1. Merge Request !19 - On call doctors viewing with Unit tests
  • Fetching events from on call doctors program
  • displaying on call doctors
  • displaying images with cache
  • saving the list to local storage
  1. Merge Request !20 - Notification screen risk assessments and monitoring alerts with unit tests
  • Created notification screen bloc
  • Created repository with methods to get risk assessments and monitoring alerts
  • on tap of the list item the child assessments are opened
  1. Merge Request !21 - On call doctor alert feature
  • Shows a alert UI for 4 seconds on tap
  • Create message to other user with subject and message body
  • if user is offline the it saves API request and when user is online next time it the sends the data
  1. Merge Request !22 - Create Discharge assessment, added schedule time for stage 4
  • Create Discharge assessments UI
  • Created discharge floating action button to appear only when child is normal & 24 hours have passed
  • Create model class for discharge
  • Create stage 5 discharge event
  • added methods to validate , register stage 5
  • added api request to mark enrollment as COMPLETED
  • added method to queue api request when user is offline
  • Created unit test for stage 5
  • Created stage 4 variable schedule to store time
  1. Merge Request !23 - On call doctor schedule
  • shows list of doctor in program
  • shows name, date, start time , end time of on call schedule
  • shows profile image in circle
  • uses cache image so that user can view image & data offline
  1. Merge Request !24 - notification count, about app, share app feature, load more notifications
  • Created notifications count in bottom app bar
  • Created About App, Share App feature
  • Added Load more notification feature
  1. Merge Request !25 - Created sphinx Documentation, Splash Screen, App Icons
  • Created Documentation using sphinx
  • Deployed documentation on Gitlab pages
  • Created App Icon
  • Created Splash Screen
  • Updated metadata
  • Created CI script to build documentation
  • Added link to docs in README.md

What after GSoC

I will continue to contribute to LibreHealth for this project. I will assist the new members who are willing to contribute for this project. I will actively take part in the discussions and I will contribute by creating, Solving issues and adding improvements to this app.

I would be happy if I get chance to become mentor for next year GSoC.

Thanks to Almighty Lord

I am thankful to god that I was able to complete this project during this COVID pandemic, may everyone prosper & be in peace that's what I pray.

"In the remembrance of God, the filth of the mind is removed & one's works are accomplished." By Guru Arjan Dev Ji

Thanks to my mentors

I would like to thank my mentors, Saptarshi Purkayastha, Robby O Connor, Sherri Bucher. I have learned a lot in the past 3 months and it has been a great experience.

I am very much thankful to Saptarshi Purkayastha I highly appreciate your mentoring & guidance, I am very grateful to you, this was all possible because of your encouragement, advice, and support that you’ve given me. You have been incredibly generous with your time and energy. Thank you for reviewing all my merge requests & merging them & also providing feedback.

Screenshots

Login Screen Home Screen List of Babies Screen
Sort By Feature Profile Screen Risk Assessments
Monitoring Alerts Drawer Doctor Schedule Screen
Settings Screen Home Screen Drawer
List of Babies Doctor Schedule Screen Settings Screen
Stage 1 Stage 2 Register
Normal Problem Danger
Discharge Notification About Screen

Communication

The LibreHealth Essential Care For Every Baby chat channel is on Librehealth Forums, my entire communication with my mentors can be seen there.

Blog posts during GSoC

https://darshpreet2000.github.io/My-Blog/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment