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:
- openemr/app-flutter-openemr
- In the commit#Initial commit, I initialized the flutter project.
- Then, A prototype for
Code Scanner
was added in the commit#QR Code scanner added. - Interface to list patients using
OpenEMR API
has been added in the commit#Updated Patient List View. - Prototype for
Heartbeat Measurement
was added in the commit#Added Heart rate module which was further improved in commit#BPM optimized and logout functionality in side menu. - Firebase was first introduced for telehealth in the commit#chat system using firebase.
- Prototype for
ML Kit
can be found in the commit#apply ml kit on home page, it was further removed and only a part of it used for OCR. - Other commits include different experiments done before finalizing a perfect one for the use.
- openemr/app-golang-openemr
- An endpoint for OCR has been added in commit:initial commit which uses
tesseract-ocr
.
- An endpoint for OCR has been added in commit:initial commit which uses
*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:
- openemr/app-flutter-openemr
- In commit#UI Changed, the first production-ready app with the new UI was released and all the prototype code was removed.
- Then, OpenEMR endpoint was added back with updated UI and additional functionality(patient history and starred patients) in commit#Patient can be starred and history is being stored.
- Firebase with all the functionality and documentation was added by end of commit#firebase chat is enabled.
- Media sharing during the chat was added in commit#image sharing support.
openemr/app-golang-openemr
repo was added as submodule under commit#added submodule which is used by Video calling feature introduced in commit#Added calling feature along with text recognition.- commit#New API support added the support for API for new OpenEMR.
- Finally, under commit#Minor Improvements, the code was cleared and the error message has been improved.
- openemr/app-golang-openemr
WebRTC server
has been added in commit#webrtc added which acts as a back-end for calling feature in the OpenEMR app.
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.