Hello, This blog is about my Google Summer Of Code journey with LibreHealth, it covers everything from applying for GSoC, getting selected, community bonding to final evaluations. I hope you will enjoy reading this & will find something useful in it. So, Let's get started.

Little Bit About Myself

I am Darshpreet Singh currently pursuing Bachelor Of Technology in Computer Science & Engineering, I have just completed my second year of engineering. From the beginning of my second year I started learning mobile app development, I was really passionate about app development and then got into the field deeper with time, completed 2 internships, and so on my journey with open source started

Aiming for GSoC 2020 & Submitting POC, Proposal

I heard a lot about GSoC from my college seniors and LinkedIn, I started asking a lot to people on LinkedIn how to get selected & what more should I learn. I got replies from lot of people they guided me a lot. I aimed to get selected in GSoC in 2020, I contributed in some organisation before the GSoC but the projects I contributed to were not selected, I was little disappointed. Still I had some hope I kept searching in the organisation & projects list to find an android related project. Finally after searching a lot I found LibreHealth, they had a lot of projects in mobile development, I aimed to submit my best to this organisation, I completed the POC(Proof Of Concept) task in just 2 days, I also did more than the required. I communicated a lot with mentors & after discussing a lot I submitted my proposal.

Getting Selected

It was a long month for me waiting for the results, On day of result I frequently checked my mail & GSoC website for result. It was 4th May at 11:30 PM, I got surprised to see that I am selected for GSoC, I was very happy, I thanked my mentors a lot for selecting me & assured them that I will defintely work hard & will make them feel proud of my work. Due to my excitement I was not able to sleep on time, I slept late at night but woke up early to start my GSoC journey & to tell my parents & friends about it.

download_cdm

About Project

To make an app which can display costs of medical procedures of US hospitals & a web scraper which can scrape ChargeMasters & update data periodically in GitLab Repository. The app will display nearby hospitals and the user can compare hospitals, filter hospitals based on location & radius. App can download nearby hospitals ChargeMaster from GitLab Repository and save it to local storage of phone in SQL database. User can view downloaded ChargeMaster, search in it, filter by price & category. This App can work offline and can update downloaded ChargeMasters.

About My Work

The Community Bonding Period

The community period begin the next day, I introduced myself to community & other selected students. I discussed a lot about project ideas such as use of API to get nearby hospitals & dicussing about CI (Continous Integration) Pipeline which will scrap the chargemasters every month automatically. Searched data on internet to get chargemasters, I found some websites of US government which had good amount of data.

First Work Period

  • Completed UI of App Screens with Dummy Data
  • Worked on Data Scraper
  • Setup GitLab CI Pipeline
  • Scraped & Processed CDM of Alaska State
  • Made SQL Database class for App
  • Worked on Home Screen backend Code
    • Used Overpass API to fetch Nearby hospitals
    • Used Google Images to get image of hospital by name
  • Scraped & Processed CDM of Indiana State
  • Learned & Used Flutter BLoC (Business Logic Of Component) Architecture
  • Used Hive to store local data
  • Worked on new tab in bottom navigation which will download cdm
  • Wrote SQL queries with which we can read & insert data in SQL Database in App

Blockers Faced

  • I wanted app to completely work offline after it fetched data once, So I started to store everything locally, I faced problem in saving images of hospitals, I thought it is not necessary to store images when user is offline, So, I am showing a placeholder, but whenever internet will be ON user can view images of hospitals as well

Second Work Period

  • Worked on Search Screen of App.
  • Made DAO ( Data Access Object ) class which uses SQL queries to query database.
  • Made Comparing Hospitals procedures functionality
  • Tested both IOS & Android App
  • Scraped CDM of California State
  • Wrote Readme.md file for scraper
  • Separated “process.py” from “Data” Directory, so that user don’t need to clone large repository.
  • I have to setup chromedriver & chromebrowser in CI Pipeline & then make this project run properly
  • I worked on Showing progress indicator while downloading CDM & saving to SQL database.
  • Fixed Network exceptions while downloading CDM in app.
  • Made Readme.md & troubleshoot.md for web scraper
  • Fixed the blocker
  • Completed UI of compare hospitals screen
  • Fixed bugs in download CDM screen
  • Scraped Medicare Data & wrote process script for that

Blockers Faced

chromedriver & chromebrowser were not working in Linux CI Pipeline, I was getting exception in pipeline, but it was working on my windows. I solved this blocker after searching too much on internet & found that chromedriver & chromebrowser need to be same.

Third Work Period

  • Worked on Share App, About App screens.
  • Used Flutter cache Manager to download & Save CDM to cache.
  • Search functionality in view CDM Screen.
  • Decreased size of data scraper repository
  • Fixed CI pipeline & CDMs are saved in master branch
  • Wrote Unit Test of

    • Home Screen
    • Download CDM screen,
    • Saved CDM Screen
    • View CDM
    • Search Screen
    • View CDM Statewise screen
    • Compare Hospital Screen
    • Settings Screen
  • Also Wrote Unit Tests for Overpass API, GitLab API, Medicare Hospital Compare API

  • Complete Readme.md for app
  • Created App Intro Slides
  • Worked on search by price in search screen of App
  • Created Splash Screen
  • Created option in App settings to choose any location of US to try App.
  • Fixed various bugs in App [ Fixed Location permission bug, if user denies then he has to manually allow location from settings ]
  • Used Orange LH theme as suggested by Mentor Mua N. Laurent.
  • Added retry button in snackbar of Location widget

Blockers Faced

I don't have IOS machine, So I was not able to setup splash screen for ios app properly, I have asked Mentor Mua N. Laurent for help in this. Still I will try to use a virtual macOS to setup the splash screen.

About Mentors

I had 4 mentors assigned during GSoC

I would like to thank all of them for their valuable suggestions & their involvement with me during the project. I want to specially thank mentor Mua N. Laurent for guiding me very closely, having frequent chat & video calls with me, testing my code, suggesting improvements in it. I could not reach this level without your mentoring.

GSoC Journey Ended Only, Not The Open Source

It was great experience for me during the GSoC working for open source projects. GSoC journey ended only, not my open source journey, I will continue to contribute to LibreHealth. 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.

https://gist.github.com/Darshpreet2000/9f08ee2080163851a2b6834c1eef16ba

Conclusion

GSoC was a wonderful experience for me, It improved a lot my programming skills, i would just say that GSoC is a great opportunity, work hard, be patient & enjoy your summer writing code. And also become a part of your organization after completing this program.

Screenshots

Home screen displaying nearby hospitals & user location Settings screen to filter nearby hospitals & change location Search screen - Searching by procedure
Search screen - Searching by price Bottom sheet to filter searching in CDM Navigation drawer - Navigate to different app screens.
Choose any two hospitals to compare them Compare screen - Comparing general information Compare screen - Comparing patient experience
Download CDM - Download ChargeMaster of your nearby hospitals View CDM - Viewing individual CDM with search functionality. View CDM Statewise - View CDM of other states of US.
Saved ChargeMasters - CDMs Saved in SQL database of app About us page of the project in the app.