LibreHealth Planet

September 01, 2020

Darshpreet Singh

GSoC Journey Ended Only, Not The Open Source

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.

September 01, 2020 05:00 AM

August 31, 2020

Aishwarya Harpale

GSoC 2020 with LibreHealth : Final Report

Low Powered Models for Disease Detection and Classification for Radiology Images


Project Description -

The aim of this project is to create Deep Learning models for detection and classification of radiology images. The models must be compressed such that they can be deployed to low powered devices like ARM devices, Android devices, etc. Compression techniques such as Quantization and Pruning can be used.  

 

Mentors -

Priyanshu Sinha

Judy Gichoya

Geeta Priya Padmanabhan


Tech Stack - 

Numpy

Pandas

PyDicom

Tensorflow

Tensorflow-Lite/ Tensorflow-Model-Optimization

Docker

Qemu


Project Link - Click here

Commits - Click here  

Merge Requests - Click here


Why to do this -

There has been a lot of progress in developing Machine Learning models that predict the medical condition of a patient based upon specific inputs relevant to the diagnosis of that condition. However, these models have drawbacks while deployment in real-time on edge devices. Firstly, they have been trained on high-end GPUs that consume a lot of power and have a lot of computational capacity. Edge devices function on limited power and have a considerably low computational limit. Next, these models are extremely large in size, usually a few hundred megabytes. While training, a large amount of space is available. But the same is not reflected on edge devices having low storage capacity. Healthcare professionals do not have high-end machines available for immediate usage of these models. But edge devices, being low-cost, are easily available. To tackle the problem of model deployment, we use model compression techniques that reduce four factors - power consumption, storage usage, computational cost and latency of detection models in the healthcare category.

 

What have you done -

For the purpose of this project, 2 datasets were used -

RSNA Pneumonia Detection Dataset

Chest-XRay 14 Dataset

The compression techniques used were -

Dynamic Quantization

Float16 Quantization

Int8 Quantization

Model Pruning

Model Pruning + Dynamic Quantization

Model Pruning + Float16 Quantization

Model Pruning + Int8 Quantization

 

RSNA Pneumonia Detection -

Two models were trained on this dataset - DenseNet201 and InceptionV3. We achieved the following results in the models’ performance with respect to accuracy and size.

Accuracies comparing original and compressed models -

 

Size comparing original and compressed models -

 

Accuracies comparing pruned and quantized-pruned models - 

 


Size comparing pruned and quantized-pruned models - 

 


Chest XRay14 -

Pretrained CheXNet model was used for this dataset from Bruce Chou's Github repository (link in references). The following results were obtained for this dataset.    

AUROC Score Comparison between orginial and compressed models -

AUROC Score Comparison between Pruned and Quantized Pruned models -

 

 Model Size Comparison -

 

 

How have you done it -

The general pipeline goes like this -

Step 1 - Data Exploration and Cleaning

In this step, we take raw data and explore it. We find out the number of classes, number of data items per class and the general distribution of data points. After deriving these insights, we clean the raw data to get rid of any unnecessary features or data entries. We also restructure tabular data such that it can be fed to the models. This involves steps like creating one-hot encoding of labels, creating extra columns, modifing path variable to redirect to images. In case of images, activities such as augmentation, resizing, shearing, etc are performed. 

Step 2 - Modelling

This is the next step in which we initialize data generators that generate preprocessed images and labels in fixed batches. Data is split into train-val-test subsets. Model architectures are initialized. We have used 3 architectures for this project - DenseNet201, InceptionV3 and CheXNet. We also initialize callbacks, checkpoints and optimizers that will be used during training. 

Step 3 - Training and Model Evaluation

Here, we train the models till we achieve acceptable performance. The model should neither be underfit nor overfit. After training is over, we evaluate the models. We evaluated DenseNet and InceptionV3 trained on the RSNA Pnemonia Detection Dataset based on accuracy. This is because the models directly output the class of the input image. CheXNet trained on Chest-XRay14 dataset was evaluated based on AUROC score because the output was not a fixed class but a class probability score. We also record the size of this original model.

Step 4 - Model Pruning

In model pruning, we trim the unnecessary connections in the neural network. here, I have used Polynomial Decay as the sparsity function. Pruning starts from 50% and goes upto 80% of the total weights in the model. After this, we remove the excess connections and compress the layers of the neural network. This model gets saved in a .h5 format.

Step 5 - Post-training Quantization

After the models are trained, we quantize them. This is done using Tensorflow Lite Converters. There are 3 types of quantizations that we are performing in this project - Dynamic, Float16 and Int8 quantization. We initialize the converter as per our requirement and pass the pre-trained or pruned model to it. The output is a quantized model in the form of a TFLite FlatBuffer. We evaluate the quantized models based on accuracy/AUROC score (as per the original model) and size.

Step 6 - Inference

For performing inference, using normal .h5 models, we use the model.predict() fucntion. While using TFLite models, we initialize interpreters that will set the input and output tensors. We invoke the interpreter on an input image and retrive the output tensor returned by the interpreter. The inference script was run for all models - original, pruned, quantized and hybrid.

 

Future Scope -

1. Testing these models on actual hardware such as Raspberry Pi and Android phones.

2. Compressing object detection/segmentation/UV based models.

3. Creating a UI to serve these models on the frontend.

 

References -

1. https://www.tensorflow.org/lite/performance/model_optimization
2. https://youtu.be/3JWRVx1OKQQ
3. https://youtu.be/4iq-d2AmfRU
4. CheXNet - https://github.com/brucechou1983/CheXNet-Keras

by Aishwarya Harpale (noreply@blogger.com) at August 31, 2020 08:36 AM

August 28, 2020

Kislay Singh

Quarantine, GSOC and a world on fire

 

"Experience"




The experience that I have had in the past few months have been of a rather exclusive nature. The one that humanity has once every century, definitely not a critique on humanity or our definition of what is acceptable. I am just glad that I had got into GSOC and met the amazing folks at LibreHealth. The quarantine so far has been good and I am grateful for that.

The learning was immense on many levels. The plannings we did to solve problems in our weekly meets to learning about new tech stack. It was all amazing. Definitely learned a lot more about Linux and git :). But I believe it is just the beginning of the journey and there is a long way to go in FOSS world. I plan to improve this project to the best of my abilities.

I plan to keep in touch with my mentors and keep collaborating further, there are of course room for iterations and improvements. No software is ever complete. I just hope a lot of learning is to come in the future.

by Kislay_Singh (noreply@blogger.com) at August 28, 2020 07:08 PM

Darshpreet Singh

Final Report

Organization - LibreHealth

Project - Develop an Android, IOS mobile application to show patient friendly costs of care.

Student - Darshpreet Singh

Goal

Recent changes in Medicare’s payment policies under the inpatient prospective payment system (PPS) and the long-term care hospital PPS required that the CDM be made available in a machine-readable format by January 1, 2019 . These formats are in XML or CSV and while machine readable do not make sense for a patient who is comparing the prices

The Goal of this Cost Of Care Project is to provide patient friendly costs of care, to help patients get better cost estimates for medical procedures of US Hospitals. User can view the chargemaster, search for a particular procedure in multiple hospitals chargemasters & can sort data by Category or sort by price in ascending or descending order. App downloads hospitals chargemaster from GitLab Repository and save it to local storage of phone in SQL database. Users can also compare hospitals based on ratings & patients experience to get idea about hospital services. This App can work offline and can update downloaded data.

Librehealth Project Repository

My Forked Repository

Mobile App

What was done:

During these three months, I have:

  • Used Scrapy & selenium to implement a web scraper in python which scraps US hospitals ChargeMasters
  • Developed a Flutter Application from scratch which shows these CDM & provides many other functionalities
  • Created a CI pipeline in Data Scraper Repo to scrap & push data every month.

Merge Requests

Cost Of Care Mobile Application Project

  1. Merge Request !2 - Created UI with Dummy Data - status:-Merged
  • Developed UI Screens of App with Dummy Data
  • Created Navigation Drawer,Bottom Navigation, Home, Search, Settings, Saved ChargeMasters,View CDM Screens
  1. Merge Request !12 - Worked on home,download cdm,saved cdm screens backend, Added Download Progress Indicator - status:-Merged
  • Added GeoLocator & Location package to get user Location
  • Used overpass API to fetch nearby hospitals
  • Used GitLab API to download CDM
  • Showed a progress when CDMs are downloading
  • Created SQL Database in App
  • Woked on Saved screen which shows all tables from SQL
  1. Merge Request !13 - Worked on Compare Hospitals UI, View CDM Statewise Screen - status:-Merged
  • Made UI with Dummy Data for compare hospitals screen
  • Used Gitlab API for view CDM statewise screen
  • Showed CDM for each state from GitLab Data Scraper Repository
  1. Merge Request !15 - Working on Search functionality & fixing issues in App - status:-Merged
  • Added Search Functionality in View CDM Screen
  • Used Flutter Cache Manager to store downloaded CDM before inserting to SQL
  • Fixed issues in App - CDMs not displayed immediately after downloading
  • Improved hospital CDM list tile UI
  1. Merge Request !20 - Created Unit tests,Added alert dialog, search by price, added location choose feature, Used LH theme- status:-Under Review
  • Completed readme.md
  • Added Unit tests
  • completed readme.md
  • Fixed dart analysis
  • added license
  • fixed bugs
  • Worked on share,about screens of app
  • Search by price
  • unit tests passed
  • Splash screen created
  • Used LH colors for theme
  • Created table in readme.md for screenshots of App
  • Added intro slides in App

Cost Of Care Data Scraper Project

  1. Merge Request !10 - Scraped & Processed Medicare data- status:-Merged
  • Used scrapy for web scraping
  • Used Selenium to automate web browser interaction from Python. With Selenium webdriver this scraper can also scrap dynamic websites.
  • Scraped & Processed CDM of Alaska
  • Scraped & Processed CDM of California
  • Scraped & Processed CDM of Indiana
  • Scraped & Processed Medicare Data
  • Wrote process scripts for each hospital
  1. Merge Request !12 - Trigger Pipeline- status:-Merged
  • Created CI(Continous Integration) pipeline which scraps, process cdm & then push to GitLab Repository
  • Tested CI pipeline on my forked repo
  1. Merge Request !27 - Fixing issues - status:-Merged
  • Completed readme.md
  • added license
  • Made Repository size small with BFG Repo Cleaner
  • Used lowercase for naming directories
  • Fixed problems in Adventist Hospital

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, Mua N. Laurent, Saptarshi Purkayastha, Robby O Connor, Judy Gichoya for being so nice and helpful. I have learnt a lot in the past 4 months and it has been a great experience to be a part of this wonderful organisation.

I am very much thankful to Mua N. Laurent, 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, Your words of encouragement brightened me & helped sharpen my skills.

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.

Communication

The Cost Of Care 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/

August 28, 2020 05:00 AM

August 27, 2020

Kislay Singh

Final Submission

 

"Problem statement"

Our app is geared towards improving the dataset in Radiology domain. We provide gui interface to visualise the inferences and modify the inference output. This helps in increasing and improving the dataset. To summarise ML domain in Andrej Karpathy's words "Data is king" and we are making the data even better.

"Dataset" 

The dataset that we worked on is NIH 14 Chest-xrays. The dataset has 112,000 images of over 30,000 distinct patients. But for Object detection it has annotation data for just 900 images. Which to train for medical purpose is just unusable. So we decided we will start with this dataset.

"Web App flow" [ Frontend ]

Here is the flow of the app:

Sign Up/ Sign In


Get Image and start annotations:

Things we can do:
  • Select the Deep Learning model from which you want your annotations from
  • Add more bounding boxes
  • Remove bounding boxes
  • Change the label of bounding boxes
  • Add more labels to the label list




  • Switch to segmentation
  • Add segmentation label manually

  • hit save on the segmentation and bbox to save the labels to the backend
  • In the end you can download the bbox or segmentation data in CSV format to further train and improve the model.

Link to Commits

Link to Django API Docs

Link to LibreHeath Forum

"Architecture Diagram" [ Backend ]

"Work Status"

The initial goal for the app in my proposal was to build a gui where user can modify object detection bounding box coming from inference of multiple models. As the summer progressed we decided we wanted to add image segmentation feature as well. So far it is all completed.

TO DO:
1) Segmentation tool right now can only be used for annotations not visualisation.(unlike the bounding box tool)

2) Add more deep learning models to our app.(We plan to keep adding more and better models in the future)

3) Add support for more datasets.

4) Finalise a strategy to host.

by Kislay_Singh (noreply@blogger.com) at August 27, 2020 06:23 PM

August 22, 2020

Darshpreet Singh

Coding Period: Week 12

Making Compare by price feature

My Mentor Mua suggested this feature, it is very useful, we just enter price & all the procedures whose price is approximate to that entered price gets displayed.

download_cdm

Created option in App settings to choose any location of US to try App.

I displayed an alert dialog when user presses on button choose a US state, then it displays all US states, when user presses any state then the app takes it as a new location & fetches nearby hospital when user presses on Save button. This feature I created for those who want to test this app and are not a resident of US.

download_cdm

download_cdm

Making IntroSlides for app

I have made intro slides in App, I have searched a lot for images on Google & use intro slides package for flutter.

download_cdm download_cdm download_cdm

Making Splash Screen

I used LibreHealth Logo for splash screen, I scaled image to different resolutions for this & then placed it in app & ios folder in App.

download_cdm

Used Orange LH theme

I used LibreHealth Orange theme for App,earlier I used indigo color, but now with this orange theme App looks great.

Working on Updating all CDM from App

App should update its saved CDM from gitlab every month, I have to work on this feature, I will complete it by tomorrow.

What do I plan to do 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.

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

Project is almost done, I only need to discuss report a bug feature with @mua_rachmann & make a CI pipeline for App

August 22, 2020 05:00 AM

August 21, 2020

Aishwarya Harpale

Week 12 : Coding Period

 This week I was successfully able to make my models produce good results. I was evaluating them on the wrong structure of data. Yes, yes the data format that I was working on since ages did not prove useful to me. But it was a building block to the generators that I finally created. After that, I re-evaluated my original model and viola! I got an AUC-ROC score of 0.81. As this generator model proved useful, I immediately parallelized my operations. 

I was running a total of 6 notebooks. 2 on PLHI server, 2 locally, 1 Kaggle notebook and 1 Colab notebook. 

The PLHI server did not have the complete data so I exported a subset over there and re-trained my pruning model.

My local system had the data but lacked processing power. So I ran model evaluations locally. Each Int-8 model took over 24 hours. 

The Kaggle notebook had data and processing power but the data was not in the correct structure to be fed to models. So I tested inference scripts here.

Colab lacked the data but had processing power. It also had support for Tensorflow-model-optimization library. So I ran my model quantization scripts here by uploading a small subset of the data.

The main problem was that the data is 45GB in size. It took a lot of time to download or upload anywhere. Even for my local system, I had to clear a lot of my personal data to make space for this dataset.

Along with the notebooks that I was running, I was also testing my custom scripts locally. Finally, I finished these processes and pushed my code. I also submitted my model results.

While I was working on these tasks, I also setup my Raspberry Pi on Qemu and began working on it. There were 2 main blockers here - network and space. The emulator was not getting internet access initially. So I built a bridge interface from my host ethernet to the guest (RPi) ethernet. This took quite some time to troubleshoot and in the end I was able to provide internet access to my Pi. A few tweeks later, I was able to get it to connect to my Wifi connection. 

The next blocker was the size of the image. After emulating, I was not left with enough space on my partition to install Tensorflow or other packages. So I had to resize the Raspbian image. This needed me to tinker with the partitions using fdisk and in the end, I was able to allocate space to the image.

Right now, I am trying to solve the MemoryError that I get everytime I  try to install Tensorflow on the Pi. I also get an error that says that grpcio is not supported. Hopefully this will get resolved soon because the scripts are ready to be run.

After this last task I can say that I have completed my project.

Happy Coding :)

by Aishwarya Harpale (noreply@blogger.com) at August 21, 2020 10:17 PM

August 18, 2020

Ahani Peitra Okumo

My Journey As An Outreachy Intern

The Beginning

From the beginning of my ‘Outreachy’ internship I had in mind that I was here to learn and to contribute the little I know. It was not easy regarding the fact that I had no working experience and most of all, it is an open source contribution. Following my core values and my background(https://ahanipeitra571448494.wordpress.com/2020/06/02/my-outreachy-participation-3/). I was able to pull through the various stages of the internship with the help of the understanding mentors I have in ‘LibreHealth'(https://librehealth.io/)

The Issues I faced

Writing exams and working with real life projects are purely different things. I came to realize this when i was selected as a LibreHealth intern.

I have gotten stuck with many issues over the period of my internship, some more tougher than others. For example, I got stuck on Mysql not running on my server.

Most of these issues should not have taken more than a couple of hours to figure out but more often it took me days. This is because I seek the help of my mentors mostly after I have tried figuring out my self. It was normal for me to think that the bugs that I was getting were because of a bigger task or things that I did not understand yet. This would force me to go extra miles to better understand what is going on. I will later find out at times that the issue I was facing was just minor or small mistakes I made. How ever I got more excited at the end because being stuck on something for long and finding the solution gives some one the mastery of it. The more difficulties I faced the more knowledge I accumulated and the more confidence and experience I gained.

I also faced the issue of getting the wright location of the files. Sometimes getting a particular line of code to work with is very tricky.

Some time ago it was ‘GitHub’ I could not get my branches or do other operation I spent days on this. It helped me to understand ‘GitHub’ better. From this link you can read about how I got stuck (https://ahanipeitra571448494.wordpress.com/2020/06/11/how-i-got-stuck-during-my-outreachy-internship/)

My Progress So Far

Though facing the issues I talked about I have been able to progress in both my work in the internship and my skills as a software developer. I am now able to work on an open source contribution and also on my own projects.

Me working with Librehealth As an Outreachy intern has also given me more skills and understanding on how to write a report and a blog. Before the internship I can recall how difficult it was for me writing reports in a good format and a blog but with the help and the guidance of my mentors I am now better on it.

I have been able to make some fixes in the ‘Libreehr System’ though am still on some few tricky issues to fix, but I believe I get more better with time.

Working as an Outreachy intern, I have also been able to improve on my English writing skills and communication. This because My mentors always have the patience and time to correct the mistakes I make and tell me what to do best. English writing and communication is one of the main things am so happy to have improved in.

Also getting to understand how to use Git’, ‘GitHub’, ‘WordPress’, editor like Visual ‘Studio code’ is a very big achievement for me as a software developer.

What I want After My Internship

From all the skills I have gathered during the Outreachy intership which is an open source contribution, I will love to continue contributing in an open source to better my skills. After that I will love to be an entrepreneur.I want to struggle and build my own web applications and also help my community.

by peitraahani at August 18, 2020 05:47 PM

August 14, 2020

Aishwarya Harpale

Week 11 : Coding Period

This week I was finally able to get my data in the correct format to be fed to the pretrained Chexnet model. And the solution to my bug was mentioned on some random issue on Github only a few days ago. Luckily, due to this, I was able to evaluate my models. Therefore, I was able to finish all types of compression techniques on this dataset.


However, after evaluation, the result of the model is very poor. It is unable to classify the diseases and gets a auroc score of roughly 0.5. The cause of this is dataset imbalance which is clearly observed in the models bias towards certain classes of the disease. I need to discuss this with my mentor. I tried methods such as top-3 and top-5 score to get a better result. But the performance remains fairly constant. 


I have also started with writing scripts for this dataset. This should get completed in approximately 4-5 days. Simultaneously, I have also been working on methods to test my model on edge devices. As soon as I finish my scripts, I will work on this front. 


This will be the last stage to complete my work for GSoC 2020. I hope all goes fine and I am able to complete my work before time.


Till then, 

Happy Coding!

by Aishwarya Harpale (noreply@blogger.com) at August 14, 2020 11:30 PM

Prajwal S Belagavi

A Sigh of Relief: Week 15

It is the eleventh week of the coding period and the fifteenth blog of my GSoC journey. I finally managed to get everything in one single picture. I was having a hard time shifting from Live mode to Demo mode, but in the end, I was able to pull it off. It really is a sigh of relief to be able to produce an output than a virtual concept.

To see more of the conversation concerning the project, refer https://forums.librehealth.io/t/project-android-application-to-show-birth-registration-newborn-health-data/3684

Here is the link to the project.

What progress have you made this week?

I managed to show the DEMO mode of the app with the user flow of the app. The app used dummy credentials to display the realistic scenario of the LIVE mode of the app.

I worked on making a dummy app for the informant. The UI of the app is similar to the server-side.

What do I plan to do next week?

I plan to finish the working of the LIVE mode of the app. The app would also add an extra credential, which is the Guardian-Child credential.

There would also be an Immunization Credential for the Child, which would only be present in the DEMO mode. 

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

No.

by prajwalsb27 at August 14, 2020 10:42 PM

Kislay Singh

GSOC Coding: Week 11

 

"Previously on LibreHealth GSOC 2020" [ Recap ]

The app is ready, some requests were done by my mentors. which I have been adding.


"Finalising features UI and everything" [ Work ]

Here is the look at the webapp in its full glory:


This week I have added validation for diseases, and a logging on the backend for keeping the track of who is adding more labels to the already provided label. Tweaked the theme color to match the logo's color.

I have also started the work on frontend segmentation tool. It should be finished soon.

"Next week" [ On LibreHealth ]

1) Complete the segmentation tool.

2) Start making final documentations.

by Kislay_Singh (noreply@blogger.com) at August 14, 2020 07:50 PM

Darshpreet Singh

Coding Period: Week 11

Decreased size of scraper repository

I reduced the repository size from 600 MB to around 14 MB using BFG Repo Cleaner, it is a tool which cleans large blobs in git repository commits, I ran it to clear all blobs greater than 10 Kb & then I achieved 14 MB size, Well it is not the original size but a lot better than previous one.

Fixed CI pipeline

The problem with CI pipeline was with authentication, I & my mentors fixed this issue correctly,Now we have used an access token instead of SSH earlier.Data is pushed in master branch of Gitlab repository

Wrote Unit tests of App

I worked a lot on this during this week, I have used flutter's two popular packages,

  • bloc_test This is very useful for testing blocx which are used in BLoC architecture.

  • mockito - Used flutter's mockito package which is used for mocking repository, I used it for testing mocking all repository & all API clients

Wrote Unit Tests for

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

Completing README.md for App

Readme of app is now completed, I have also modified readme of scraper as suggested by Mentor Mua to display links of hospitals in a table. I viewed a lot of Open Source projects Repositories to get idea.

https://gitlab.com/Darshpreet2000/lh-toolkit-cost-of-care-app-data-scraper/-/blob/fix-issue/README.md

What do I plan to do next week?

  • I need to test app more to ensure each & every component is working correctly

  • Finding & fixing bugs in app.

  • Discussing with @mua_rachmann for REST server, App icon, Intro slides

  • Completing Unit tests for other screens

August 14, 2020 05:00 AM

Bolu Oluwalade

Week 15:Coding Period (Week 11)

Brief Updates

This week, I completed the unit testing and documentations for the FHIR Medication Request custom elements. These are the last sets of components to be created based on my GSoC proposal. I will make the Merge Request to the lh-toolkit web components repo once the Medication Statements are approved.

The Medication Request Resource, covers all the types of medication orders for both inpatient and outpatient use. It contains the instrcutions to patients about the use of a medication such as the dosage, the dispense request, the priority of the request, the request date, the reason for the request, if a substitute can be used etc. I have created components for each of these parts that makes up the whole resource. An example of this is the dispense request component that can be used to get the quantity, duration, validity period of a medication request. The dispense request component was created by creating and bringing together some other components such as fhir-dispenserequest-quantity, fhir-dispenserequest-duration,fhir-dispenserequest-validityperiod and fhir-period.The element is shown below

The next course of action is to use these components to create the LibreHealth ELectronic Health Record PWA based on the design's team prototype.

August 14, 2020 05:00 AM

August 08, 2020

Prajwal S Belagavi

Debugging Begins: Week14

It is the tenth week of the coding period and the fourteenth blog of my GSoC journey. It was in this week that I was able to make a have successful communication between the server and the SDK. However, there is a lot of debugging still left, which I’m currently working on.

To see more of the conversation concerning the project, refer https://forums.librehealth.io/t/project-android-application-to-show-birth-registration-newborn-health-data/3684

Here is the link to the project.

What progress have you made this week?

We revised our plan for August. I started to create a dummy app for the informant. I was able to fill the guardian app with dummy credentials. However, we feel it needs to have more interaction with the user. 

I was able to initialize the SDK in the app with the right configurations. Until now, I was not able to test end-to-end with our server.

What do I plan to do next week?

I plan to finish the informant dummy app, which is coded in Flutter. I’ll also be working on shifting the app from LIVE mode to DEMO mode and vice-versa. 

There was some issue while receiving the child credential. I plan to resolve this with the mentor in the coming week. 

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

A few bugs have popped up after the SDK initialization, which is a good thing. I’ll be working on it in the coming week. 

by prajwalsb27 at August 08, 2020 05:34 AM

Darshpreet Singh

Coding Period: Week 10

Fixing issues

I worked on different issues created by mentor Mua,

  • Adding Search & Filter Functionality in View CDM Screen

I have to make same functionality as in search screen

  • Searching while typing

For this I have to listen textcontroller & have search in database whenever user enters any word

  • Improving UI of CDM List tile

I have decreased font size of CDM List tile, Added different color background to category

download_cdm

  • Fixed Bug CDM not getting saved immediately after downloading

This was small problem, I just need to call Saved screen bloc to refresh data

Working on Share App & About App

With the share app feature in navigation drawer user can share app using social media platforms, About feature displays an intro about the project & it also contains a link to this project Repository.

ScreenShots

download_cdm

Writing Readme.md for App

This is in progress, I have searched & viewed a lot of readme of many open source projects to get idea about it, I will complete this readme by Sunday

Searching on internet on how to make Git Repo Smaller

The scraper repo is very large but it doesn't contains any large file, its size is only 1 MB but on cloning we have to clone around 500 MB, it is because Git History of commit is very large. I want to discuss with mentor mua about it

What do I plan to do next week?

  • Decreasing size of data scraper repository
  • Completing readme of App
  • Writing Unit Test of Home Screen, Download CDM screen, Saved CDM Screen
  • Developing & discussing REST API with flask

August 08, 2020 05:00 AM

August 07, 2020

Aishwarya Harpale

Week 10 : Coding Period

This week I presented my work to Saptarshi and Judy and took their feedback. I have a lot to work on. I began working on the ChexNet model for Chest-XRay14 dataset. I have finished quantizing these models into Dynamic, Float16 and Int8 models. As I am using a pre-trained model, I am putting time into getting the input and output data formats correct for the model, inference, and other purposes.

Currently, I am running scripts to prune these models. This should get done soon.

I have also restructured my scripts for the RSNA Pneumonia Detection dataset. Along with this, I added the inference scripts. I will raise an MR for this after discussing with my mentor.

I have to write scripts after I finish working on the Chest-XRay14 dataset for all the steps - preprocessing, quantizing, pruning, evaluation, inference, etc. Once this is done, I want to evaluate all my models on ARM devices using Qemu emulator. I will check parameters such as FPS, latency and power consumption.

Till then,

Happy Coding!

by Aishwarya Harpale (noreply@blogger.com) at August 07, 2020 10:26 PM

Kislay Singh

GSOC Coding: Week 10

"Previously on LibreHealth GSOC 2020" [ Recap ]

The segmentation integration is completed and valid output is coming.

"UI and other features" [ Work ]

1) Added feature for downloading the annotation data in CSV format. Made all the necessary changes to the UI and Backend to facilitate this.

2) Added Snackbars for notifying user about the status of uploads.

3) Trained the retinanet few more steps to get better results.

"Next week" [ On LibreHealth ]

1) Start working on adding the segmentation functionality to the Frontend.

by Kislay_Singh (noreply@blogger.com) at August 07, 2020 05:03 PM

Bolu Oluwalade

Week 14:Coding Period (Week 10)

Updates

I was a bit behind schedule last week as regards my GSoC targets.I was able to make up some significant ground this week. I wrote the unit tests and the README documentations for the FHIR Medication Statement Components and made the Merge Request(Pending Mentor's review and approval). I also completed creating the components for FHIR Medication Request components, which are the last batch of components to be created. I am currently writing the unit tests and README documentation for these components, which should be completed tomorrow (08/08/20).

The next course of action is to use these components to create the LibreHealth ELectronic Health Record PWA based on the design's team prototype. The final weeks will be dedicated to achieving this. I will have more update on my progress next week!

August 07, 2020 05:00 AM

August 02, 2020

Kislay Singh

GSOC Coding: Week 9

"Previously on LibreHealth GSOC 2020" [ Recap ]

The demo backend and frontend was connected and they are working. Added support for UNET for segmentation.

"UNET model served" [ Work ]

I have served the model and updated the frontend and backend accordingly. Everything on the DevOps side is working fine. But the segmentation output is coming out gibberish. I'am currently trying to figure out what is happening wrong.

"Next week" [ On LibreHealth ]

1) Complete the Segmentation integration.
2) Start looking into OHIF viewer.

by Kislay_Singh (noreply@blogger.com) at August 02, 2020 06:24 PM

July 31, 2020

Aishwarya Harpale

Week 9 - Coding Period

Update on the project -

This week I tried converting the Chexnet Pytorch model to Onnx and then to Tensorflow again. As Onnx does not support DataParallel, I tried this conversion without using it. I wrote a regex to convert the state dictionary keys of the Pytorch model as the model was outdated and the keys needed to be renamed. I was able to convert the model to Onnx format. Inspite of these changes, I ran into a lot of errors while converting this new model to Tensorflow. So I dropped this model and began working on the purely Tensorflow model. This is not the standard model, but it gives considerably good results. I am currently converting the output format of this model to represent the actual class names instead of probability values and compressing these too.
 
I added modifications to the scripts to convert pruned models to quantized ones. I need to clean this code to specify the different input formats for models - hdf5 and h5 models. I have evaluated my models for size and accuracy. After completing these tasks, I want to evaluate them for latency, power consumption and computational cost. This may differ from device to device.

The second evaluation results came this week and my mentor has given me suggestions to modify my repository. I need to restructure my project and correct my errors. The scripts need to separated and I also need to make provisions for a few remaining edge cases.

I also need to structure my timeline to achieve substantial results by the end of this month.

Till then, Happy Coding!

by Aishwarya Harpale (noreply@blogger.com) at July 31, 2020 10:34 PM

Prajwal S Belagavi

The Last Phase: Week 13

It is the nineth week of the coding period and the thirteenth blog of my GSoC journey. I just feel that I have all the pieces of the puzzle and just need to put it right for the big picture. This week is the beginning of the last phase of the project. It has been a roller coaster with success and failures. However, the future looks bright and only thing left to do is CODE!

To see more of the conversation concerning the project, refer https://forums.librehealth.io/t/project-android-application-to-show-birth-registration-newborn-health-data/3684

Here is the link to the project.

What progress have you made this week?

I was able to test for Birth Credential as well and was able to receive credentials. I worked on having a demo mode in the app. This would allow the user to install the app and still be able to play or feel what it is like to have credentials.

I have completed around 60% of the integration and hope to achieve the rest in the coming week.

What do I plan to do next week?

I plan to finish the rest of the integration of the SDK. Try to wrap up the demo part to present it to the mentors by Thursday of the week. 

I have to figure out to use the mobile SDK in the staged mode and not in production mode. This way, I can connect to the server, like how connect.me app can.

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

Nothing as of now.

by prajwalsb27 at July 31, 2020 07:53 PM

Darshpreet Singh

Coding Period: Week 9

Working on Compare Hospitals List Screen

I have use medicare Open Data API to fetch hospitals statewise available for comparision. After fetching I am displaying it as list of Strings with compare button which is a boolean.

User can select 2 hospitals to compare , I have added snackbar to show if user has selected more than 2 hospitals

ScreenShots

download_cdm

Worked on Compare Hospital Screen

This Screen compares two hospitals, Again I have used medicare API, I am calling GET Request two times one for each hospital.

ScreenShots

download_cdm

download_cdm

Search Functionality in View CDM Screen

Used SearchDelegate provided by flutter, I have created search functionality using it. This will query database & will get results & show it to user.

ScreenShots

download_cdm

What do I plan to do next week?

  1. Working on Share App, About, Report a bug, Screens

  2. Writing Readme of App

  3. Using Flutter Cache Manager to store CDM while downloading

  4. Writing Unit Test of Home Screen

July 31, 2020 05:00 AM

Bolu Oluwalade

Week 13:Coding Period (Week 9)

Updates

Today, I received my second evaluation result from my mentor and I passed! I am a bit behind on my targets and I have to make up some ground before the final evaluation in a month's time. Its the business end of the project and my activities in the coming weeks will determine my GSoC fate.

Coding update: I made the MR for Medication Resource and it was accepted to the librehealth toolkit monorepo. I started working on creating the some EHR workflows using some of the created custom elements. I ran into some troubles with replicating the high fidelity prototype for the EHR created by a member of the LibreHealth team. I will work during the weekend to find a solution

My plan for the coming week is to create some workflows using the created custom elements. I will also make MR for FHIR Medication Statement Resource and dosage data type.

July 31, 2020 05:00 AM

July 27, 2020

Kislay Singh

GSOC Coding: Week 8

"Previously on LibreHealth GSOC 2020" [ Recap ]

The demo backend and frontend was connected and they are working. Added support for multiple models. Trained tf2 resnet.

"Trained retinaNet in tf1" [ Work ]

The previous trained net was having too many bugs so I trained another model from scratch. Here are the diagnostics.


I have finished the deployment part as well. and integrated React with Django. (Django serves the react app now).

"Next week" [ On LibreHealth ]

1) Add Image segmentation support to the app

by Kislay_Singh (noreply@blogger.com) at July 27, 2020 09:21 AM

July 26, 2020

Ahani Peitra Okumo

My Career As A Software Developer

What Do I Want As A Career?

Choosing a career, I asked my self the following questions which puts me in a right direction:

  • What are my skills and what level of skills have i acquired?
  • What am i really interested on?
  • What is my personality?
  • What are my values?
  • Are there jobs available in this career and how much do i want to make?
  • Where do i want to live?
  • Why do i want to pursue this career?
  • What are my talents band strength, on what am I really good at?
  • What kinds of jobs are out there?
  • What job duties are involved?

This drives me to follow my core values. I love to learn new things particularly in my field of studies. The drive for learning has really pushed me forward to pursue my career as a software developer. Looking at my skills and the level of knowledge i have acquired shows that i have much to learn as a software developer. This can not be possible without loyalty. i stay loyal to those that i can learn from which includes friends, the communities in which I belong, groups, mentors, and other associations. gaining knowledge on how to do things is also something I cherish much. Asking my self all the above questions and knowing my value, I have to choose a career.

But before choosing a career I also look at my family and the community I come from. Having so much love for them, I put them first before choosing my career as a software developer.

My community

Coming from a community where the inhabitant are mostly farmers and cattle herdsmen. I have always wanted to create an impact to improve the life of my people in my own little way. The people In my community produce much farm products such as vegetable, oil, milk, eggs, rubber, cocoa, coffee. This area is blessed with a volcanic soil which is a very rich and it favors the production of many different products with a high level of output.

Identifying the problem of my community

Despite the rich soil and massive production by this local farmers, they still remain very poor. This is mainly because they are unable to market their products directly to the companies which can use their products as raw materials. And also because the population in the small village is limited to consume all the products produced in the area.

I also noticed that the local farmers can do better if they engage in industrialized or modern method of farming and the use of fertilizers to improve on their production.

How Did This Prompt Me In Choosing A Career?

I needed to help the local farmers in my own little way. I thought of a way to create an impact. I came with the idea to build a platform where the farmers can be linked to other parts of the country and why not the world.

I became more passionate about software development which was already my field of studies. This is because with software development, I would be able to create a website where farmers will be able to display their products and the quantity of harvest they have made online through the website. And also wholesalers and producers will be able see the products and place their commands which can easily be seen by the farmers on the website or through direct contact since their information will be available there. Also in the platform there will be a sensitization program where farmers will be able to learn better ways of farming in order to improve on their produce and also better ways to market their products. My passion for my career as a web developer grew much stronger because many people in my community supported and love my idea. Also from the other advantages listed below I took web development as a career.

These Are The Advantages In Choosing A Career In Software development

The Payment Is Good

Software developer jobs are becoming more and more popular, and a career in IT is now a realistic and respectable option for many people. This are advantages of choosing a path of software development.

In the Government’s official website, the average rate of pay for software developer jobs is between 65 and 90 thousand dollars per year. That’s well above the New Zealand average of $55,000. Compared to other professions, a career as a developer is in the higher wage rate.

The skills are transferable

Software developer jobs across the board all work on the same basis, so that means you can move company, country or even field, and still have the necessary skills to find a good job. And usually moving company means a good pay increase too!

You Can Work Any Where

Working from home is a lot of people’s dream, but as a developer you can do much more than that. All you need is a computer and an internet connection, so you’re not even restricted to your home! You can literally go anywhere in the world and still work. If you’re an immigrant to New Zealand this allows you to go back and visit family without taking holidays. Maybe you’re the nomadic type and want to see the world? Software developer jobs allow you to still have regular income while you travel.

Most Working Environments Are Comfortable

If you don’t end up working from home, then at least with a job in IT you will always have a comfortable working environment. A nice air-conditioned office, a comfortable chair, fast internet connection, a coffee machine… it’s these little things in life that make the day go faster. Software developer jobs don’t make you work outside in the rain, hail or snow!

Continues Study

The great thing about the IT industry is that it is forever changing and expanding. You’ll never master your field because next week someone will invent something new that you’ll have to learn! And maybe that someone will be you! Working as a software developer means that you’ll always be adding to your knowledge base, always learning something new, and you’ll never be bored. Who can ask for more in a job!

It Is Possible To Create Things Your Own Way

One of the great things about software developer jobs is that you build things in an imaginary word. How cool is that? Every day you create something from nothing. Your imagination is the only thing holding you back. How many jobs are like that? As a developer, you’re in the same league as writers, artists and musicians. Go have fun!

by peitraahani at July 26, 2020 10:45 PM

July 25, 2020

Prajwal S Belagavi

Good Sign: Week 12

It is the eighth week of the coding period and the twelth blog of my GSoC journey. In the past week, there has been many commits from Evernym on their repository, a good sign for the growth of our project. We can now work directly work with our server and not make it compatible with the teset server which runs the old verity UI code.

To see more of the conversation concerning the project, refer https://forums.librehealth.io/t/project-android-application-to-show-birth-registration-newborn-health-data/3684

Here is the link to the project.

What progress have you made this week?

I tested the Evernym sample app with our server. I was able to see successful connections and also was able to receive the credential offer from the server. It certainly is a considerable improvement from where we were the last week. 

I have started working on the changes which were done on the sample app by Evernym. We also discussed an alternate plan if we did not reach our goal with the SDK integration. However, that seems unlikely with our current progress. The plan is to have got the APK ready to show the demo with dummy data. We’ll be discussing be more on this plan at this week’s meet.

What do I plan to do next week?

In the coming week, I would be working on successfully making connections with our server from the Guardian app. My mentor and I would do end to end testing and resolve the bugs.

I would also try to integrate a demo button in the settings screen, which would change the app from demo mode with dummy credentials to real connection with real credentials.

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

Nothing as of now.

by prajwalsb27 at July 25, 2020 06:33 PM

July 24, 2020

Aishwarya Harpale

Week 8 : Coding Period

This week I focused on the Chest-Xray14 dataset and its available models. The benchmark model for this dataset is the Chexnet model. This was availabale on Github in 2 formats - Pytorch and Tensorflow. So I downloaded the Pytorch model and set up a pipeline to convert this model from Pytorch to ONNX to Tensorflow. Part 1 of converting the Pytorch model to ONNX was implemented successfully inspite of a lot of bugs (because DataParallel is not supported by ONNX). Now the part of converting the ONNX model to Tensorflow is generating a lot of errors. Errors that sometimes have no solutions available on the internet! This section will require me to look into it thoroughly.

During this course, I also searched for available Keras models of Chexnet. The one that I found did not have any concrete results. Because the creator did not add a threshold/classifier. The model simply outputs scores per class. Another fishy aspect of this model is that it is only 28MB in size. How can such a heavy, un-compressed model have such a low size? It would either be wise to add additional layers to this model and then use it, or create my own version of chexnet in Tensorflow and train it (with concrete results).

I have also been writing docstrings for the python scripts that I created for training and compressing models based on the RSNA Pneumonia Detection Dataset. I will commit this part of my code shortly.

During the first few days of this week, I finished running the Int8 evaluation scripts (that took anywhere between 12 to 24 hours to run) for my quantized pruned models. I presented these results to my mentor and I also observed that some of these models gave results which were same to the purely quantized models.

Since I have run into these many roadblocks this week, I will discuss with my mentor to decide my goals for this week as well as the upcoming month.

Happy coding!

by Aishwarya Harpale (noreply@blogger.com) at July 24, 2020 10:02 PM

Ruba Awayes

Life after #Outreachy

My internship with Outreachy is coming to an end, it is one of the best experiences of my life.
As any new and life-changing experience, there is always a question about the next step!

#Outreachy: I have learned a lot while working with the LibreHealth team, it gave me some experience of remote jobs and I enjoyed the flexibility that came with it. Working within a community where I interacted with a diverse group of people, I learned from their opinions and different perspectives. This improved my communication skills as I communicated with mentors and volunteers through the LibreHealth Chat system. My technical writing skills have improved a lot through writing documentations and blogging.

#BeforeOutreachy: I have been contributing to Mozilla for more than three years, with the Arabic Localization team (L10n), helping users by answering questions and providing troubleshooting steps in SUMO (Mozilla Support) and contributing to Mozilla Common Voice to help build a high quality, publicly open dataset.

I am an active member of several communities, I am the vice president at ArabWIC Palestine chapter aiming to inspire and support women in computing in the Arab world and create links with the global tech ecosystem. Moreover, I am an active volunteer at Palestine Tech meetups – a youth initiative that aims to create a voluntary and independent tech community. Moreover, in 2018 I helped in translating the Technovation curriculum from English to Arabic language, which helped thousands of Arab school girls to understand the contest and participate in it.

I am enjoying and developing myself through contributing to these different communities, and I would love to continue contributing to the LibreHealth community and other projects that involve technical writing and documentation.

#Currently: I’m working as a Teaching assistant at An-Najah National University in Palestine, I hold a B.Sc in Computer Information Systems, and Arabic is my first language.
One of my future goals is to pursue my Master degree mainly in Big Data specialization, I’m currently searching for a scholarship.

My advice is Never stop learning, be open-minded and keep developing your skills, even if you don’t know what your next step is!

by Ruba at July 24, 2020 07:55 PM

Darshpreet Singh

Coding Period: Week 8

Completing View CDM Statewise Screen

This screen displays all data from the scraper, I have used GitLab API to get data from Gitlab Repository, User can download CDM from other states also & app can work Offline after CDM are saved to SQL Database

I have created separate BLoC for this screen but for displaying list of hospitals I am using "download cdm screen" & "view cdm screen".

ScreenShots

download_cdm

Made UI of Compare Hospital Screen

I have only made UI of Compare Hospital Screen, I will complete its backend work by next week, I will get data from medicare hospital compare data, I will use socrata API to get data in app

https://www.medicare.gov/hospitalcompare/search.html

This is Medicare Hospital Compare Website, It uses data from

https://data.medicare.gov/data/hospital-compare data.medicare.gov

ScreenShots of UI

download_cdm

download_cdm

Scraped & processed Medicare Data

I made scrapy spider to scrap data from CMS Data of

Inpatient Data of 3000 Hospitals

https://data.cms.gov/Medicare-Inpatient/Inpatient-Prospective-Payment-System-IPPS-Provider/tcsp-6e99

Outpatient Data of Hospitals

https://data.cms.gov/Medicare-Outpatient/Provider-Outpatient-Hospital-Charge-Data-by-APC-CY/fmbt-qrrw

I also made process script which processes CDM to proper columns & also seperates each hospital & places to its state folder by its state Code

What do I plan to do next week?

  1. Completing compare hospitals screen

  2. Adding search functionality in view cdm screen

  3. Discussing with mentors for GUI of scraper

July 24, 2020 05:00 AM

Bolu Oluwalade

Week 12:Coding Period (Week 8)

Unit tests and documentations

I was focused on writing unit tests and the README documentations for all the 14 components created for the FHIR Medication and Medication resources created last week.I have documented the procedures for unit testing in a prvious blog that can be accessed here. Below is a snip of the unit test for fhir-medication-batch. All the unit tests for the 14 components passed. I will be making a Merge Requests to the Project's monorepo this weekend.

During this coming week, I plan to integrate all the created components for the Observation, Medication and Medication Resources into the Lh-toolkit App which is a progressive web application. This will be used to create at least three workflows like creating a new medication record, entering a patient's height and weight values, taking observation notes etc.

July 24, 2020 05:00 AM

July 19, 2020

Kislay Singh

GSOC Coding: Week 7

"Previously on LibreHealth GSOC 2020" [ Recap ]

The demo backend and frontend was connected and they were working (with some bugs!).

"Trained retinaNet" [ Work ]

This week has been all about training the retinanet model. Tensorflow just released Object detection API support for tensorflow v2. And it had bugs. So I ended up training the model from scratch and since there is a scarcity of data had to do some data augmentation to get nice results. The training went pretty well here is the loss curve:


Although the loss looks pretty good, it can be further improved. And I will try that in the coming week.

"Next week" [ On LibreHealth ]

1) Start the segmentation part.

2) Improve this model.


by Kislay_Singh (noreply@blogger.com) at July 19, 2020 05:25 PM

July 17, 2020

Prajwal S Belagavi

A Lot To Cover: Week 11

This is the seventh week of the coding period and the eleventh blog of my GSoC journey. It has already been 6 been weeks since I’ve started coding. There’s still a lot to cover, and we are on the verge of putting all the pieces together.

To see more of the conversation concerning the project, refer https://forums.librehealth.io/t/project-android-application-to-show-birth-registration-newborn-health-data/3684

Here is the link to the project.

What progress have you made this week?

I have made progress in implementing a local database in the app. I have used the accessible ROOM database for this purpose. Most of the time, I spent time debugging the app to make it work with the test server. I’m still working on it. I also started making a document of the UI designs and will upload it to GitLab.

What do I plan to do next week?

I have received the credentials’ dummy data, and I plan to put them in the app for demo. There is still work left in integrating the local database in the app. I would be continuing that as well. I also plan to finish up the work on documenting UI designs.

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

The integration of the SDK with the server code is still uncertain. Once that gets resolved, it’s only a matter of a few days for the end outcome!

by prajwalsb27 at July 17, 2020 09:58 PM

Aishwarya Harpale

Week 7 : Coding Period

I have finished converting the pruned models to tflite format. I have done dynamic, float16 and int8 quantization. I have also evaluated their results to be presented shortly.

Currently I am working on the chest-xray14 models. I am using onnx to convert benchmark pytorch models to tensorflow format by using an intermediate onnx format. I am also implementing knowledge distillation by writing my own code for it. The available code is having issues storing the soft targets and I am finding a way to work around that. The code available on Github is in pytorch and cannot be used on my models. The available code in tensorflow is outdated and is not working correctly.

So for the next week, I will be working on chestx-ray14 as well as knowledge distillation simultaneously. The knowledge distillation script will be reusable for both the datasets. I hope to complete these modules in the upcoming days.

Happy Coding :)

by Aishwarya Harpale (noreply@blogger.com) at July 17, 2020 08:22 PM

Week 6 : Coding Period

This week has been pretty stressful with a lot of people in my locality getting infected with Covid-19. But work has been pretty smooth.

This week, I resolved the problem with my pruned models. They had too many layers, parameters and had a size greater than the original model! I went through all my code and finally got rid of all the extra layers that I had accidentally saved with the model. It is now easy to quantize these pruned models. I am also trying to experiment with Knowledge Distillation. At the same time I have started working on my next models based on the Chest-XRay 14 dataset.

I have also been trying to evaluate my Int8 models on the validation and test datasets. This has been taking more than 12 hours for some reason. Be it locally, on the plhi server or on Colab. I also lost my results a couple of times due to the long processing time. So I am running different evaluation scripts on each platform for faster processing. Hopefully this will get done faster.

I am a bit unsure about my specific goals for next week as it depends on the results that I produce. But I am sure that I will get something substantial.

Till then, Happy Coding!

by Aishwarya Harpale (noreply@blogger.com) at July 17, 2020 08:21 PM

Darshpreet Singh

Coding Period: Week 7

Showing Progress Indicator while downloading CDM

The progress indicator shows percent 0-60 for downloading CDM, Rest of 60-100 percent are used for inserting downloaded large CSV to SQL Database in App

This task was really challenging for me, it involves a lot of state change & also I first have to get original file size using GitLab API.

I have used BLoC Architecture properly for handling states of progress indicator.

Color of progress indicator change from red-orange-green.

ScreenShots

download_cdm

download_cdm

Working on Gitlab CI Pipeline

I was able to successfully install chromedriver & chromebrowser on Linux CI, but it was not working earlier because there was no display in CI terminal for bowser to display, I was getting an excaption, After searching a lot on StackOverFlow , I found a solution to use pyvirtualdisplay & now it is working correctly.

The CI Pipeline Scraps CDM & make a "Data" directory which contains CDM & after running "process.py" it makes "CDM" directory which contains CDM in proper columns.

Making Process Scripts for California Hospitals

There are around 370 hospitals in california, Till now I have completed process script of around 250 Hospitals, for rest work I will surely complete by tomorrow.

This task is very time consuming & also boring, I have to check column names, rows to skip in each CDM.

I will create its MR by tomorrow.

View CDM Statewise Screen

This task is pending from last week, I will complete it in this weekend , I just have to get available states using Gitlab API, & then show the data in list view, Opening each state will work as "View CDM Screen" which is already created. So, this will done by tomorrow.

What do I plan to do next week?

For Web Scraper

1.Scraping & making process script for following data.

Inpatient Data of 3000 Hospitals

https://data.cms.gov/Medicare-Inpatient/Inpatient-Prospective-Payment-System-IPPS-Provider/tcsp-6e99

Outpatient Data of Hospitals

https://data.cms.gov/Medicare-Outpatient/Provider-Outpatient-Hospital-Charge-Data-by-APC-CY/fmbt-qrrw

For App

1.Completing view CDM Statewise screen.

2.Working on Compare Hospitals Functionality of App

July 17, 2020 05:00 AM

Bolu Oluwalade

Week 11:Coding Period (Week 7)

Quick Update

I adjusted my plans slightly for this week to increase efficiency. In the past couple of weeks, I have focused my efforts on creating at least three components per week accompanied with unit test and documentations. While this was okay, I decided this week to focus my efforts on creating the components without the writing unit tests and documentations. As a result, I was able to create 14 components for FHIR Medication, Medication statement and ratio data type. I tested the properties of the components created by passing the appropriate JSON/string and url in the value and URL properties respectively.All the components worked as intended. The components are available in a forked repo here

Next week, I plan to write the unit tests, refine the codes if needed, write documentations for the components and make MRs to the main repo.

July 17, 2020 05:00 AM

July 16, 2020

Ruba Awayes

My Outreachy Internship Progress

Only one month left to the end of my Outreachy internship! Looking behind, I actually see how much I’ve learned and enjoyed it!

My internship is to document the most commonly used healthcare workflows in LibreHealth EHR, and to update existing documentations that are affected by the fixed issues and need to be updated in the wiki.

I didn’t have a specific project timeline to follow, rather than task by task basis where I should make all the existing and to-be discovered PRs documented and get my new written docs published.

My first task was to go through all the Pull Requests (PRs) on LibreEHR repository, and make a list of the affected documents and the changes needed, then proceed to revise the documents. That way I had the list prioritized with the order in which the revisions should be made. After the revisions were completed, I published them on the wiki. In this task I had the chance to get an exposure to Mediawiki markup -which I never used before- and to get familiar with the EHR medical workflows and its documentation.

The next tasks were documenting two sections in the LibreHealth EHR Other Reports (Inventory and Procedures sections), and updating the FlowBoard documentation which I previously accomplished in the contribution period and I uploaded it to the wiki. I learned in these tasks how to wikify LibreHealth EHR docs.

My current task is to revise and update the LibreHealth EHR Basic Setup doc, which is a set of configuration instructions for the administrator required for a basic LibreHealth EHR setup to a new facility practice. It is supposed to be completed by the end of the internship, but I hope to finish it earlier.

I’m grateful to my mentors for being patient with me, I want to thank my mentors Toni Shortsleeve (KoniKodes) and Harley Tuck Jr (Htuck), who really supported me, guided me through my internship process, and answered my many questions when I wasn’t sure about a task.

by Ruba at July 16, 2020 07:30 PM

July 12, 2020

Kislay Singh

GSOC Coding: Week 6

"Previously on LibreHealth GSOC 2020" [ Recap ]

The demo backend was connected to the frontend and some of the apis were modified for easy connection.

"Frontend completed" [ Work ]

Requirements for frontend completed so fas:

1) Login/SignUp

2) User can request images with bounding box annotations.

3) User can filter bounding box annotations based upon which model was used for annotations.

4) User can modify the bounding box location/disease/size in real time.

Here are few screenshots:




"Next week" [ On LibreHealth ]

1) Complete the training of retinanet and integrate it to the tensorflow serving server.
2) Make modifications to the frontend if requested by the mentors :)

by Kislay_Singh (noreply@blogger.com) at July 12, 2020 09:22 PM

July 10, 2020

Prajwal S Belagavi

Adapting To Changes: Week 10

This is the sixth week of the coding period and the tenth blog of my GSoC journey. It has been a week of ups and downs. I got a part of the app done right, whereas the other part of the app is still on a loose end.

To see more of the conversation concerning the project, refer https://forums.librehealth.io/t/project-android-application-to-show-birth-registration-newborn-health-data/3684

Here is the link to the project.

What progress have you made this week?

This week I pushed code to feature-ui-mhbs branch, which has the app’s UI similar to the mHBS training app. The color scheme, bottom navigation, app bar, and all other details seem to align with the mHBS training app.

The Evernym Team had updated their SDK. So, I pulled the latest commit from git and started testing it out with the verity UI instance (test server) that I had access to. However, the newest SDK doesn’t seem to interact with the verity UI instance. Hence, we got stuck at some point, and I started debugging and going through their code commits and in-line code documentation. I was not able to find any link between the verity server-side code and the mobile SDK. So, I’ve decided to use the old SDK and start coding until I get a further positive result with Evernym SDK.

What do I plan to do next week?

I have the test server, which is working fine. So, to integrate scanning, connections, and notifications in the app is my next priority. My mentor has provided me with some dummy data. I’ll try to incorporate that as well.

We also plan to receive further support from Evernym Team going forward and discussing the changes to be implemented on the app.

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

The Evernym Team have been updating their sample app, and it’s unclear whether it works with the old verity UI instance (test server).

by prajwalsb27 at July 10, 2020 08:10 PM

Bolu Oluwalade

Week 10:Coding Period (Week 6)

Updates

I rounded up the creation of the custom elements for the FHIR observation resource this week by creating custom elements. I decided to bring together custom elements for most of the observation resources I have created so far. Because there are various categories of observations ranging from vital signs to labs and different use of observation resource from a physician making an observation in an observation note, to a record of vital signs and to the ordering and reporting of labs. I think the components would have a wide range of use. Below is a snippet of some of the components.

While a majority of the components have input fields in form of textboxes and drop down menus, I felt that the reference range component should use a span tag. This is because, it would be rather unusual to have a physician/radiologist/lab technician inputting the reference range of an observation. It seems like its general practice that those values are displayed based on the age and population the patient belongs.

I ran into some challenges while implementing some of the created components within other components. While these components works as expected while implemented alone, there seems to be some data binding problems when used with other components. This is as a result of the attribute/property relationship in LitElement. I am currently reading on how to solve this and hopefully come up with a solution over the weekend

I will start working on the creating custom elements for medication resources next week

July 10, 2020 05:00 AM

Darshpreet Singh

Coding Period: Week 6

Wrote Readme.md of scraper

I worked on readme.md of scraper, I wrote in detail about project & then how to setup project in your system. I have written the commands which will be needed for scraping data. Then user needs to process the scraped CDM.

Till now I have scraped & processed data of three states Alaska, Indiana, New York.

Scraped CDM of California

I made scrapy spider which gets data from this (Link) , This data is provided by California State Health Department. I have to make "process.py" scripts for each hospital.

Changed Code Organisation

Separated “process.py” from “Data” Directory, so that user don’t need to clone large repository. I have made changes in all process.py scripts.

Working on changes suggested by Mentor Mua

I am currently working on changes suggested by Mentor Mua on Cost Of Care App, I will make Merge Request by tomorrow

Setting Gitlab CI

I have tried a lot but chromedriver & chromebrowser are not working in Linux CI Pipeline, I am getting exception in pipeline,but its working on my windows, maybe I am not installing them properly , I will search more on this, & will discuss with my mentors

What do I plan to do next week?

For Web Scraper

  • Generating “process.py” script for each hospital

For App

  • Working on View CDM Statewise screen.

GitLab CI Pipeline

  • I have to setup chromedriver & chromebrowser in CI Pipeline & then make this project run properly

July 10, 2020 05:00 AM

July 06, 2020

Ruba Awayes

LibreHealth for newcomers

Times flies so quickly! I can’t believe that I am in the 7th week of my Outreachy journey!

In this blog post, I will talk about LibreHealth for anyone who is interested in contributing to it or just interested in writing documentations.

So, I’m currently an Outreachy intern with LibreHealth, which is a collaborative community that is creating free and open-source Health IT software that is targeted towards providing fast and easy solutions for the healthcare needs of developing countries all around the world.

One of its projects is the LibreHealth EHR application which is designed to be focused on an electronically based healthcare system that is suitable for use by health practitioners, and it also focuses heavily on patient interface, to allow easy access and usability.

My project is Improving Documentation for the LibreHealth EHR Wiki, by documenting the most commonly used healthcare workflows, and reviewing any new fixes or changes that needs to be updated in the existing documentations.

But what is documentation and why it is important?

Documentation is writing up a specification of features and instructions that describes the use of a product or a software to its users.

Documentation is often divided into the following categories:

  • Installation: Describes the steps required to install software, hardware, or any items that requires to be assembled.
  • Quick Reference:  brief, illustrated numbered steps with minimal explanation; contain only the specific steps and information necessary to perform the described workflow correctly, with brief directions to more detailed information.
  • Tutorials: illustrated steps with adequate details and explanations; should be carefully organized to keep the workflow as the primary focus with exceptions and unexpected behaviors identified and explained, in a separate appendix or external documents as appropriate.

In my first internship weeks, my task was to go through previous issues that have been fixed in order to update the existing documentation that are affected by these issues, and keep the docs clear and up to date.

After that, I had to update it in the wiki, which is a type of website whose contents can be edited from the web browser, and which keeps a version history for each editable page.

Documentation is really important because it will reach users who don’t have background in technology to understand the system with clear, simple and easy to follow instructions and helpful screenshots.

What makes me most excited to work on this project?

It is always an amazing thing to gain new & different experiences!

By contributing to LibreHealth, I’ve learned more about medical workflow and Healthcare FOSS which is a new field for me. I learned how to format the Markdown for wiki updates and learned to make both Quick Reference and Tutorial documents. I started with minimal skills, now I have a good knowledge to explain the main features of the system to healthcare professionals.

The fact that by improving LibreHealth documentation, I am helping thousands of users who use this medical system in their daily work and also improving my skills while doing so, makes me so excited.

How to Get Involved with LibreHealth?

There are two ways to contribute to LibreHealth open source projects: contributing code and contributing documentation.

The process is simple, you can start by registering in LibreHealth’s online chat and do so at the LibreHealth Forums, then introducing yourself and how you can contribute. You will find mentors and volunteers who are happy to guide you through.

My journey and experience so far with this wonderful community has been an exciting one. I encourage everyone to be part of the amazing LibreHealth community.

by Ruba at July 06, 2020 07:00 PM

Kislay Singh

GSOC Coding: Week 4

"Previously on LibreHealth GSOC 2020" [ Recap ]

The demo of the app was ready but it was not dockerized. Running it would have been a nightmare.

"Docker" [ Work ]

This week was all about learning about docker and make it easy to deploy my project. Which I successfully did thanks to docker compose. Docker compose is awesome if you want to build and run multiple container which communicate with each other. In our case as of now we have 3 docker containers communicating with each other.


"Next week" [ On LibreHealth ]

1. Add support for the react app.

by Kislay_Singh (noreply@blogger.com) at July 06, 2020 03:40 PM

GSOC Coding: Week 5

"Previously on LibreHealth GSOC 2020" [ Recap ]

The demo of the app backend is completely dockerized and it is super easy to run now.

"React js" [ Work ]

Now that the backend is ready it is time to work on the frontend. The frontend as of now me and my mentor decided will be in Reactjs. This week I made basic mods the react frontend added login page and sign up methods. Changed the backend to easily integrate with the React frontend.

As I'm having placements I'm unable to work with my full dedication right now and I feel very bad about it. Anyways I will make sure I compensate everything by putting extra hours, all hours in the coming weeks.

"Next week" [ On LibreHealth ]

1. Complete the React app integration with the backend.

by Kislay_Singh (noreply@blogger.com) at July 06, 2020 03:40 PM

July 05, 2020

Ahani Peitra Okumo

Improve Code for the EHR system LibreHealth

What is LibreHealth

LibreHealth is the foundation of a worldwide ecosystem of open source Health IT innovation and is a place where people can come together to build tools that enhance the quality of healthcare around the world.

LibreHealth EHR

The LibreHealth EHR application is a clinically-focused electronic health record (EHR) system designed to be both easy to use “out of the box” and also customizable for use in a variety of health care settings. It builds on the strength of the LibreHealth Toolkit, and adapts many of the proven user experiences built over many years with OpenEMR. It is designed to be a modern, easy-to-use experience for health care professionals in their daily work. LibreHealth is a 100% volunteer-run organization, with all of our contributors (developers, support, and leadership) donating their time and talents. While we would love to have you join our effort, we realize not everyone is able to contribute in this way so some people support financially.

How to join the LibreHealth community

You can the join the Librehealth community by following the following links https://chat.librehealth.io/home and https://forums.librehealth.io/. Also you can join during the Outreachy participation round if your application is selected.

What You Need To Know In Other To Contribute To LibreHealth EHR.

To work with the LibreHealth EHR system, you must have the basic knowledge of web development programs like HTML, CSS, JavaScript, PHP and Database.

Also you must have the basic knowledge on how to use Git (https://git-scm.com/) and GitHub (https://github.com) in order to get the source code on your local machine and send your contribution.

How I joined LibreHelth

After being accepted in the initial outreachy (https://www.outreachy.org/) participation round, I saw that the LibreHealth EHR project was the best for me join because it has the skills which I identify my self with. LibreHealth had two projects which where on the Outreachy site open for participation “Improve Code for the EHR system” and “Improve Documentation for the EHR Wiki.”

I joined their chat forum (https://chat.librehealth.io) and from the chat I got the directive on how to clone their source code from Gitub (https://github.com/LibreHealthIO/lh-ehr).

I cloned their source code to my local machine and followed all their installation instructions ( Installation Instructions) and started my contribution process. and I got the LibreHelth EHR system on my machine.

What Have I benefited From Joining The LibreHealth community

As member of this community I have come to understand and get a clear view on how to work with a project in real world.

Also being part of an active open source community means being part of a group of people who have “been there, done that” and can share their experience, advice, best practices, and ideas.

Contributing to an open source project deepens understanding of the project and the what the project actually needs or requires. I have come to practically understand the implementation of the basics of HTML, CSS, JavaScript, PHP and database. This is because the Librehealth EHR system is build on this.

By participating in an open source project you can contribute based on what has and hasn’t worked for your community project and reap the benefits participating in fixing a problem which gives you must experience as a software developer.

I have also benefited from this community on building my morals and reputation as a software developer. Being an Outreachy candidate is a massive opportunity for me to build my self esteem and I have gained more confidence working with codes.

Contributing to open source provides a clear view into a project, and also a chance to get to the company source code to work with experience mentors and other contributors. Being a member of the LibreHaelth community, I have been able to come across great software developers and mentors like Toni Shortsleeve, Elizabeth Ngai, Maggie Negm, Robby O’Connor, Virginia Balseiro, Mua, Htuck who have thought me a lot since I joined the community.

by peitraahani at July 05, 2020 08:58 PM

July 03, 2020

Aishwarya Harpale

Week 5 : Coding period

Week 5 Update -

Today I received the results of my first evaluation and I have passed!! Woohoo!

I am happy that my mentors are happy with my work. They have asked me to improve my code by making it more reusable. So I will work on this feedback in the upcoming weeks.

Work update for this week - I have (finally) successfully implemented int8 quantization. Although I had to migrate everything to Colab for this, it finally run. Even though my code is split on various platforms, I am happy that most of what I have implemented is running well on my local machine.

The 2nd thing that I did this week was make python scripts for every module of my notebook. I made scripts for dataset preprocessing, model building, model training, quantization and pruning. I am now adding inference scripts for large as well as compressed models. This is the part that I have to make more reusable. I also have to cover the edge cases and erroneous inputs for these scripts. I want to present the results of model compression as one report.

Next week I will either start the experimental portion of this project i.e. Knowledge Distillation/ int4 quantization etc. or I will begin with the next dataset.

Happy coding!

by Aishwarya Harpale (noreply@blogger.com) at July 03, 2020 09:58 PM

Prajwal S Belagavi

First Evaluation: Week 9

This is the fifth week of the Coding Period and the ninth blog of my GSoC journey. I had my first GSoC evaluation, and it went extremely well. The mentor’s feedback has motivated me even more, and they are quite happy with the progress of the project.

To see more of the conversation concerning the project, refer https://forums.librehealth.io/t/project-android-application-to-show-birth-registration-newborn-health-data/3684

Here is the link to the project.

What progress have you made this week?

This week I finished working on the rest of the screens of the app. I also had a live demo with the mentors. There are few discussions on it being not similar to the mHBS Training App. I plan to work on it this weekend.

My mentor and I tested the app with the server, and we found out that the Evernym SDK was altered a bit and wasn’t compatible with the way the app was coded. In the meantime, I would be working with the test server.

My mentor also suggested me to document all the UI work I have done. The document would include the decisions I have taken to keep in mind the new material design UI for an Android App. This would help us get a better understanding of the app in the future. As of now, I have pushed all my code to the feature-ui branch on GitLab.

What do I plan to do next week?

I plan to work on making the app look similar to the mHBS Training app. I would be creating a new branch called feature-ui-mhbs and would make all changes to make the app look identical to mHBS. I plan to do it over the weekend.

I have the test server, which is working fine. So, to integrate scanning, connections, and notifications in the app is my next priority. My mentor has provided me with some dummy data. I’ll try to incorporate that as well.

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

There was a slight change in how the Evernym SDK functioned in the server. We found out that this week, while testing. We hope to fix that soon. This isn’t a blocker for now, as I can work with the test server.

by prajwalsb27 at July 03, 2020 07:58 PM

Darshpreet Singh

Coding Period: Week 5

Working on Saved Screen of App

Saved Screen displays downloaded CDM which are saved to SQL database, User can view any CDM from SQL database.I have created separate BLoC for this.

For getting list of saved screen , I am searching all tables in database.

Screen UI

download_cdm

Made DAO ( Data Access Object )

This directly queries the database, I have created following Queries

  • Create Table with column ( description, charge, category )

  • Inserting CDM to table

  • Searching particular procedure in Database & converting result to list

  • Getting data of table

Worked on Search Screen & Filter Functionality

In search screen user can search for any procedure, the procedure will be queried in database, which returns list. I have also worked on filter functionality of App.

In Filter Functionality user can sort list by

  • Category which is of three types - Standard, DRG , Pharmacy

  • Price in Ascending or Descending Order

I have also created a "Clear All" button , which clears the filter.

I am saving these filter data to Hive as key-value Pair

UI

download_cdm

What do I plan to do next week?

For Web Scraper

  • Scraping CDM of California State

  • Making Separate Spider class for it

  • Generating “process.py” script for each hospital

  • Making generate.py file by which user can generate “process.py” scripts which will parse CDM to proper columns

For App

  • Working on View CDM Statewise screen.

  • Making seperate BLoC for it.

  • Using GitLab API to get CDM of each state

July 03, 2020 05:00 AM

Bolu Oluwalade

Week 9:Coding Period (Week 5)

Updates

Today, I received my first evaluation result from my mentor and I passed!. I also got pointers to areas for improvement. The prominent area was my communication with the group. I was advised to be more open with my work to the other group memebers. I am going to consciously work on that moving forward. The next month is shaping up to be the most crucial yet for the project, all hands must be on deck.

Coding update: This week, I created three new components for the FHIR Observation Resources which are; fhir-observation-mwethod, fhir-obsevation-interpretation and fhir-observation-valuestring. These components can are based on the observation method, interpretation and valueString. The first two are Codable concept types which has a code, system and display fields as values in a key:value structure. The keys are 'method' and 'interpretation' respectively. The observation valuestring's value is a string type in a key:value structure. Please check out the documentation. here
I also created unit tests and the README documents for the custom elements.

In additon, this week, I removed the material-components-web-components as a submodule from the Librehealth's lh-toolkit-webcomponents monorepo. The submodule was a stop gap pending the time that the material-components are stable. It is now stable. It has a current version of 0.18.0 which was released this week after I made the Merge Request containing v0.15.0 Material Components. I might have to update it later in the project or not. I will decide that later.

My plan for the coming week is to complete the creation of all the remaining custom elements for the FHIR Observation resource. I will then move on to Medication Resource in the subsequent weeks.

Happy 4th of July!!!

July 03, 2020 05:00 AM

June 26, 2020

Aishwarya Harpale

Week 4 : Coding Period

Coding Period Update

This week my progress has been comparatively slower than other weeks. In the beginning of this week I tried to train my models again. But this time, I reduced the dataset size almost to half of the original size. I balanced the positive and negative samples in the dataset and retrained the models. These efforts went to waste as I did not receive good performance from my models even after altering the hyperparameters. They gave accuracies lesser than the imbalanced dataset. My time got wasted and then I quickly got onto my next task of pruning and int8 quantization.

I migrated my notebook from Kaggle to Jupyter Hub hosted on PLHI server. I successfully pruned my models on the server as most of the issues that I had faced on Kaggle and Colab were solved here. I experimented with quite some parameters ran pruning on DenseNet as well as Inception. Now I tried Int8 quantization and quantization of the pruned models. Unfortunately, I ran into a lot of errors in this process as TFLite convertors were not able to access the required binaries. Now I will shift this to Colab/Kaggle (which ever is ready to give me the outputs) and then quantize my pruned models as well as perform int8 quantization.

Along with this, I am now preparing for my next task. This time, I do not wish to go into that loop of training models but rather pick up SOTA models and then quantize them. This will be quicker. more efficient and relative to the purpose of this project. I hope to increase my speed next week to recover for the unfortunate series of events this week.

Till then, keep coding and persisting!
See you next week.

by Aishwarya Harpale (noreply@blogger.com) at June 26, 2020 11:15 PM

Prajwal S Belagavi

UI Design: Week 8

This is the fourth week of the Coding Period. I have just finished my academic work, and now the only focus is on the current project. I had planned to implement MVVM design in the app. It requires a learning curve, and I think it’s better to just get the functionality of the app going and then see about optimizing the codebase.

To see more of the conversation concerning the project, refer https://forums.librehealth.io/t/project-android-application-to-show-birth-registration-newborn-health-data/3684

Here is the link to the project.

What progress have you made this week?

This week I thought of spending some time on UI designing. One of my mentors had already designed the screens of the app using Proto. However, it was running on a trial period, and it got expired. I had an EDU account which would give extra benefits to use prototyping software, and I thought of designing using the Figma tool. Here is the link to the project design.

What do I plan to do next week?

My mentor and I would test the app with the server-side up and running. Check if there are any issues while interacting with the server. I also plan to implement a local auth in the app. This would ensure the safety of the app. The app would require a fingerprint or a passcode to open it.

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

None as of now. 

by prajwalsb27 at June 26, 2020 08:50 PM

Darshpreet Singh

Coding Period: Week 4

Working on Download CDM Tab in Bottom Navigation

Created a new tab in bottom Navigation which will display all the hospitals in current state of user. I have used GitLab Repository API.

Small Problem

I have faced small problem while fetching data from API, I can get maximum of 100 Hospitals data by calling API, which is the limitation of GitLab API.

Solution

So, I have to call API as many times in App till all hospitals data is fetched, I am fetching total number of pages in first call then calling API as many times the total number of pages & getting data of 100 hospitals each time.

Screen UI

download_cdm

Saving CDM to SQL Database

I will download csv of each file from GitLab API, I will save it SQL Database in App, Currently I am working on this feature, I have to manage a lot of states in App, I am using BLoC Architecture to do this, I have made DAO [ Data Access Object ] file for it , to do this in cleaner way.

Displaying CDM

When user will click on download button of any list item, View button will appear, I am working on this & will display CDM as list on new Screen, I will complete this by Sunday.

Scraping CDM of New York State

Currently, I am working on this, I have to make spider file for it which will get data from New York State Health Department, I have done making process script which will parse data to proper column names. This Data is provided by OSHPD New York Department.

What do I plan to do next week?

  1. Working on Search Screen & Saved screen backend
  1. Scraping CDM of California State

June 26, 2020 05:00 AM

Bolu Oluwalade

Week 8:Coding Period (Week 4)

Unit Testing of Custom Elements

During the past week, one of my major tasks was writing unit tests for 4 components using the web component tester. The web component tester (wct) brings together a series of tools that ensures the process is as seamless as possible. Please check out the documentations here .

The tools that came out of the box with WCT includes Mocha, as a testing framework, Chai for assertions, async, lodash, sinon and sinon-chai, text-fixture and allySuite. More information about these is available in the link above. The testing suite can be in javaScript or html.I went with html to maintain the format of the project's monorepo.

The steps involved in the unit testing are available here. Below is the description of the steps involved in the unit testing for observation status custom element. The first step was to create an observation JSON file that contains all the information in an fhir observation resource that can be locally imported. This was important because the hapi server that houses the fhir resources instances is not always available. Next , I created the html file that contains the testing code. The observation status is built with the material web component, "mwc-select". There are four options for the observation status including, Regsistered, Preliminary, Final and Amended. In proper functioning, the value for the observation status is determined by the value attribute or url passed to the "fhir-observation-status" tag. A snip of the component is shown below.

To write the unit test, I asserted that the value selected is equal to my assertion value and not equal to a wrong value. I also checked that the AJAX call returns the appropriate response.

To start the unit test, a fake server was created using sinon where mock XHR request can me made to recieve an AJAX response. The AJAX response is first tested. This is followed by the teardown() function that cleans up the server after the test. Next, the value for the observation status contained in the observation JSON file was confirmed using the assert functions. The results obtained from the test is presented below

June 26, 2020 05:00 AM

June 21, 2020

Kislay Singh

GSOC Coding: Week 3

"Previously on LibreHealth GSOC 2020" [ Recap ]

The Django Backend and TF-Serving has been successfully implemented. The communication between the two is facilitated by Python based middleware.

"Synchronous to Asynchronous" [ Work ]

This week was all about converting the python middleware into asynchronous service and generating Doc strings and documentation as the end of first month is nearing. Fortunately, I have completed my commitments for the first month and right no, I'm polishing the code. Python's Asyncio module was used to get the async await features.

For facilitating dataset storage, I have looked into NextCloud.

"Next week" [ On LibreHealth ]

1) Train the NIH Xray dataset on a different object detection algo and add a support for selecting different ML algos.
2) Complete all documentations.

by Kislay_Singh (noreply@blogger.com) at June 21, 2020 06:00 PM

June 19, 2020

Aishwarya Harpale

Week 3 : Coding period


What did I do this week?

  • I fine-tuned my DenseNet201 and InceptionV3 models till I could maximize their accuracy. I used class-weighting for this purpose and achieved around 85% accuracy on both the models.
  • For both the models, I calculated all the performance metrics like -
    • Accuracy
    • Loss
    • Confusion matrix
    • Precision
    • Recall
    • F1 score
    • ROC curve

      I will now document all these metrics to present them to my mentor.
  • I implemented dynamic range and Float16 quantization methods on DenseNet201 and InceptionV3 and evaluated their accuracy. Float16 gave minimum change in accuracy while dynamic range dropped the accuracy considerably.
Plans for the upcoming week

I tried implementing Int8 quantization and model pruning but ran into a heap of errors. So this week, I will rectify those errors and make these modules run.

Earlier when I had experimented with pruning I ran into a lot of OOM errors so my mentor has been gracious to provide me with a Jupyter Hub access hosted on the PLHI server. The best part about this is that my data will be persistent and I would not have to run the complete notebook every time I need to run a single module. So I will be migrating my work from the Kaggle notebook to the PLHI server.

I was evaluating my system architecture and looking for easier methods to develop this system. Currently, the design says that I will run a Raspberry Pi from the Qemu emulator. This Raspberry Pi will host the Flask application that will test the images. The emulator is supposed to be run using a Docker container. Sounds complex? Yes it is. So I have a few more approaches in my mind to simplify this architecture for testing. I will discuss this with my mentor in our upcoming meeting.


That's all for this week folks. See you next week!
Happy coding! :)

by Aishwarya Harpale (noreply@blogger.com) at June 19, 2020 10:05 PM

Prajwal S Belagavi

Roll Up Your Sleeves: Week 7

This is the third week of the Coding Period. It has been a hard week, working on this project as well as preparing for the online assessments, tests and project submissions of the college. Sometimes, we just have to roll up your sleeves, double our efforts and keep going!

To see more of the conversation concerning the project, refer https://forums.librehealth.io/t/project-android-application-to-show-birth-registration-newborn-health-data/3684

Here is the link to the project.

What progress have you made this week?

I have almost completed the UI of the screens of the app. I’ve tried to make it similar to what the mHBS app looks like.

I have now started to work on the architecture of the codebase. I would be following the MVVM design pattern as it’s a standard design pattern. It would easy to do unit testing later on. 

MVVM Design Pattern

What do I plan to do next week?

I plan to modify the codebase with the MVVM pattern and, if time persists, work on testing the application. I still need to work on filling the app with dummy data. The app would contain the screens which let the guardian make the connection, accept the credential, and also the notifications screen.

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

This week and the next week, I have my Academic Semester Exams, so I might not be able to contribute much. However, the mentors have been kind and have asked me to focus on the exams for the current week and resume the work later.

by prajwalsb27 at June 19, 2020 07:01 PM

Darshpreet Singh

Coding Period: Week 3

This week I learned BLoC Architecture in Flutter, I understood it quickly from YouTube videos. I started implementing it in App.

I will try to explain first what BLOC components should do as short as possible (and as trivial as possible).

  • UI screen - obviously shows data to the user

  • BLOC (or the ViewModel) - decides HOW to display data to the user, do we make the text bold, do we show the error, do we go to next screen.

  • Repo - decides WHAT data to display to the user (do we show the content from db, do we fetch it from API)

Working on Home Screen Backend

I have created BLoC for home screen & location services, I have done the following tasks in Home screen

  1. Fetched & Displayed User Location using Geolocator Package App will ask for location permission & will access location of user, I have used two packages

    • location - For asking GPS Permission

    • GeoLocator - For Getting coordinates of user location

  2. Fetched Nearby Hospitals using Overpass API

    • Used Overpass API for Getting Nearby Hospitals, I have to pass Location Coordinates & radius to get hospitals around my Location

    • Then I Parsed JSoN data recieved to list of objects

  3. Fetching Image of each hospital from Google

    • For fetching images, I have Used FutureBuilder Widget in flutter which executes a function which searches on Google by Hospital name & fetches the HTML Response, Then I get the link of first image & pass it to another widget Cached Netwrok Image which loads the image.
  4. Using Shimmer Loading Effect to load list

    • I have use flutter shimmer package for doing this, I have created a ListTile for this, While the data is Loading I display this.

GIF of Home Screen

Home Demo

SQL Database Class

Completed Main functionality of SQL Database class

  • Implemented Basic Insertion in SQL Database using Flutter sqflite package, Some Other function are remaining which I will complete in upcoming weeks

Working on Web Crawler

Scraped CDM of Indiana State

  • I have Used Data Provided by Indiana State, It contains discharge data of Hospitals of 2018, I have scraped data using scrapy, processed data to proper column names using python.

What do I plan to do next week

  1. I have used shared pref to store some data, I will replace it with Hive

  2. I will use sqflite to store CDM

  3. Working on Main Feature of this App [ Compare Prices Screen]

  4. Scraping CDM of New York State

June 19, 2020 05:00 AM

Bolu Oluwalade

Week 7:Coding Period (Week 3)

Creating custom elements for the FHIR Observation resource

I created four custom elements this week, including fhir-observation-effectivedatetime, fhir-observation-category,fhir-observation-issued and fhir-observation-valuequantity. fhir-observation-effectivedatetime adds data and time an observation was made to the page. fhir-observation-category specifies the category of an observation ranging from laboratory to imaging. There are a total of 8 observation categories. The fhir-observation-issed is the datetime an observation was made available to providers, typically after the results have been reviewed and verified. fhir-observation-valuequantity adds the actual value of an observation to a page.

The figure below shows an implementation of the fhir-observation-valuequantity. In this component, the value of an observation can be added to the page by passing the value html attribute or a url. The value is a JSON object that contains the actual value of the observation, the unit of measurement, the measurement system and code. All these object fields are passed to the element but only the value and the units are displayed by default. The observation value can also be added to the page through a URL. When the url value is passed, the element makes an AJAX call and populates the appropriate textfield based on the JSON object returned.

The figure below shows the code behind the figure above.

More components will be created next week and I will also start the unit testing of all the elements.

June 19, 2020 05:00 AM

June 14, 2020

Kislay Singh

GSOC Coding: Week 2

"Previously on LibreHealth GSOC 2020" [ Recap ]

The Django server is implemented successfully. The Django backend is a Restful server that is responsible for communication between user and TF-Serving. Also, it is responsible for storing user data.

"Tensorflow Serving" [ Work ]

The diagram above explains how we plan to deploy our ML models. Basically, the python middleware sends images to the TF Serving and receives BBox information and then send the received data to client.
The client in this case is the Django Rest Server. The Django server stores Images and BBox data in a SQL DB. The User can now request for image and Bbox data from Django Server. As of now everything is implemented, but improvements will be made to the python based Middleware.

"Next week" [ On LibreHealth ]

1) Make the Python middleware Asynchronous and document everything.
2) Decide what type of file storage server we want to implement.

by Kislay_Singh (noreply@blogger.com) at June 14, 2020 08:02 PM

June 13, 2020

Darshpreet Singh

Coding Period: Week 2

Second week of coding period is just going to over, I worked really hard this week,discussed each & every details with my mentors about the feature to be implemeted, sended multiple Merge Request this week. A detailed info about my work is given below

Completing UI for Main Features

I developed UI for rest of the main features of this App, I made a bottom Sheet UI which displays option to filter costs by Category & Price. I also made view cdm screen by which user will be able to view cdm of individual hospital.

bottom.jpeg

Setting Web Crawler & CI Pipeline

I setup GitLab CI (Continous Integration) Pipeline which will automatically scrap CDM of hospital whenever we will schedule it. This pipeline will also process data after scraping to proper columns , which I will use it in App.

I discussed a lot with mentors about it, I have finally sent a merge request for this feature.

I also scraped CDM of Alaska State, I will start scraping CDM for next week.

Making SQL Database in App

I only made a skeleton class for database in App, I have written functions in it to create database, create table, Insert a list of object in table, A lot of other functions are also needed which I will do by next week.

What I plan to do next week?

I will start working on backend code of home screen, I will use Overpass API to display nearby hospital by getting user location, I will display nearby hospital list with image from Google to make it more attractive.

For web crawler Repository , I will scrap CDM of Indiana State.

June 13, 2020 05:00 AM