Call for code submission for COVID-19 track.
PocketCare S is a comprehensive smartphone-based solution for monitoring close encounters. It is a bluetooth low energy (BLE) based solution which enables smartphones to send and receive anonymous beacon signals. It checks the distance between a smartphone and another beacon (or smartphone running PocketCare S) to see if they are close to each other (less than 2m). If so, the smartphone records the duration of such a close encounter with another beacon.
PocketCare S is designed to report social distance information without collecting or revealing any personally identifiable information about any specific individual.
- Demo Video
- The Architecture
- Getting Started
- How does PocketCare S Work?
- Built With
- Project RoadMap
- Further Readings
- License
- Acknowledgments
If you're having trouble accessing the video, click here.
Before you begin, make sure you satisfy the following requirements in order to run the server on your local system:
- NPM (node package manager) which can be installed from here
-
Clone the repository
-
Open the project on Visual Studio Code
-
Search for file constants.js
-
Update the Server API URL from here and paste inplace of "YOUR_HOSTED_SERVER_API_URL"
export const baseUrl = "YOUR_HOSTED_SERVER_API_URL";
-
Inside the project directory open the terminal and run the following commands in order:
npm install
npm start
-
Install the OC cli on your system using the following link
-
Once installed, open the Openshift console
-
Copy and paste the login command in terminal at the folder where the react application source code resides.
-
Inside the terminal run the following commands in order:
npm install
npx nodeshift --strictSSL=false --dockerImage=nodeshift/ubi8-s2i-web-app --imageTag=10.x --build.env YARN\_ENABLED=true --expose
-
This will install the react application on Openshift and public url will be provided in terminal logs.
Click here to view the screenshots.
- Get the patient's App Client ID following the steps as mentioned here
- Copy and paste the ID in the text box with the label "Enter COVID-19 infected patient's App-Client ID for tracing".
- On clicking Start Tracing, the web portal will fetch all the App Client IDs which have come in contact with the infected user within 14 days and had atleast 5 minutes of close encounter.
- The App Client IDs of close encounters with their respective encouter details will be displayed as shown in Contact Tracing Screenshot.
- The tracer can make decision to notify the respective user(s) based on this information.
- On clicking Notify, a push notification will be sent using IBM's Push Notification Service with the proper guidelines.
- Tracer can also export the detailed information of these users by clicking on the Export Data button located in the top right corner of table.
- PocketCare S uses Bluetooth Low Energy (BLE) to discover and compute the duration close encounters.
- A close encounter session starts when two people are within 2 meters for at least 5 minutes.
- Close encounter data will be displayed in the mobile application after a close encounter session starts.
- Users are notified immediately if a close encounter session exceeds 10 minutes.
- The virtual bluetooth name changes every hour to ensure user privacy.
- Data stored in the mobile application is anonymized (contains no Personally Identifiable Information) and consists of daily health report and close encounters for a maximum period of 14 days.
- Data upload to the server takes place every hour.
PocketCare S has made significant technological advances compared to other solutions. An Infographic with this information can be found here.
PocketCare S cares values the security and privacy of its users. The app does not collect any private information about an individual person. All the data collected is anonymous and will not reveal any personally identifiable information. An Infographic with this information can be found here.
For a more detailed description, refer to the additional information section.
- BeaconMonitor - Used for close contact detection
- Charts - Used to visualize data
- CryptoSwift - Used for encryption
- Android Beacon Library - Used for close contact detection
- High Charts - Used to visualize data
- IBM Push Notifications - Push Notification for Exposure
- Red Hat OpenShift on IBM Cloud
- Server using OpenJDK 8
- Database using MongoDB
- Web Portal hosted using Node JS Server
- React - Used to build the web portal
- High Charts - Used to visualize data
- Spring Boot - Framework for the Server
You can read more about PocketCare S on our website. We also have a White Paper which can be accessed here.
An in-depth video of the PocketCare S Mobile Application can be found here.
PocketCare S is also available on Google Play and to the University at Buffalo (UB) community using the Apple Developer Enterprise Program.
This project is licensed under the Apache 2 License - see the LICENSE file for details.
Special thanks to all who helped bring the project to fruition:
Sourav Samanta, Rishabh Joshi, Jeetendra Gan, Shanelle Ileto, Aritra Paul, Dr. Peter Winkelstein, Dr. Matthew R. Bonner, Kevin Wang, Chen Yuan, Dheeraj Bhatia, Latheeshwarraj Mohanraj, Dr. Wen Dong, Dr. Tong Guan, Dr. Marina Blanton, Sasha Shapiro, Stephen Fung, David G. Young
And our deepest gratitude for the support of University at Buffalo.