GSoC 2020: Hybrid Mobile App

A great summer concludes now! Here’s the final report of my journey with OpenEMR in the summer of 2020.

Overview

The objective of the project was to develop a mobile application that can not only avail OpenEMR features to increase accessibility but can also unlock a large range of medical usage which needs image processing or hardware which can be found in the daily use smartphone. It is split into two repositories, openemr/app-golang-openemr contains the go server which can be used to create an independent WebRTC server and it also has an API endpoint for OCR. openemr/app-flutter-openemr covers the flutter hybrid app, also it uses the openemr/app-golang-openemr as a submodule. Installation steps for the project can be found at README.md

*Note: Links point to the commit made by end of summer(v2.1.1) instead of master.

Mentors

  • Brady Miller
  • Stephen Waite
  • Rachel Ellison
  • David Vu
  • Asher Densmore-Lynn

Project Objectives

The primary objectives of the project were:

  • In-App Telehealth (Completed)
  • Medicine recognition (In Progress)

The secondary objectives of the project were:

  • Barcode/QRcode scanner (Completed)
  • Heartbeat Measurement (Completed)
  • List and Add Patient (Completed)
  • Extending chat support to OpenEMR WebApp (Future Work)
  • Facial Expression Detection (Future Work)

Summary

This section contains the per phase summary of the work done, along with the links to the respective commits.

Phase 1

The first phase started with the search for the available tech, that can be used to achieve my goals. By the end of this phase, I was done with the Heartbeat Measurement, OpenEMR API integration, and prototype for Telehealth and Code scanner.

The commits are as follows:

*Note: Commits made under this phase are either experimental or prototype, hence I would not advise using any part of it for production.

Phase 2

In this Phase, I mainly worked on developing a production-ready front-end as the previous one was just a prototype. Also, the WebRTC prototype is added.

The commits are as follows:

  • openemr/app-flutter-openemr
    • Under commit#UI Changed, WebRTC prototype was added which was further improved in webrtc fixed.
    • Final UI was developed which was pushed at the start of Phase 3.

Phase 3

All the prototype were cleared and production-ready implementation was added for the same along with the UI created in phase 2.

The commits are as follows:

Future Work

2.1.1 -> Current Version
2.1.2 -> Add Loading screens
2.1.3 -> Remove deprecated function
2.1.4 -> Error message based on API response
2.2 -> Medicine recognition
3.0 -> All OpenEMR API will be support


I thank my mentors and all the members of OpenEMR for being such an awesome and supportive community, it was a great summer of challenges, learning, and a lot of fun.