We are team Endeavour presenting you Contagion Buster!
by secondary students Yong Saan Cern, 15 and Lim Wei Zhe, 17
IntroductionContagion Buster is a unique, Covid-19 detection and protection system which uses a combination of hardware, software and applications to help alert, connect, control and reduce the spread of Covid-19. The system includes a public application that provides updates and information on the Covid-19 conditions globally and locally with group services that can connect users with their workers, family and friends to get to know their health status. Contagion Buster also consists of a face tracker, thermal detection mechanism and student's name recognition that can be placed in malls and schools to replace manual thermal detection, thus reducing the risk of contracting the disease.
DemonstrationsApplicationsHere is how our Contagion Buster App and Health Checkpoint are able to be applied in different sectors in our society:
- School and Universities
As both of us are currently studying in secondary school, we understand that students in Malaysia have been severely impacted in their studies as they have to adapt in this Covid-19 pandemic quarantine. However, recently our Ministry of Education have released guidelines for school reopening which include taking down students' temperature prior entering their respective classrooms.
Currently, school teachers need to get every student's body temperature by using an infrared thermometer gun while another teacher write down the name of the students and their temperature. This puts both students' and teachers' health at risk as they have to be within the 1 meter range in order to obtain accurate scanning results. Our Contagion Buster Health Checkpoint is capable of gathering students temperature and adjusting the infrared sensor according to students' height without any human supervision.
From the article above, some people tend to falsify their own identity which makes it difficult for contact tracing. Certain schools that required students to record their own name and temperature creates a possibility of falsifying their identity. Health Checkpoint has a dedicated feature for schools and universities, which recognizes student's names from the name tag on their uniform.
- Government
Our project is able to alert, connect, control and reduce the spread of Covid-19 at a much lower cost. Developing countries that don't have existing health infrastructure can implement our system countrywide. Besides, whenever there is a new cluster of Covid-19 cases, our government uses various methods such as SMS and social media to inform the public that whoever has been to the area with the confirmed case in the last 14 days should get a Covid-19 screening test done. Shops that experienced Covid-19 outbreak have to give authorities all customers' phone number and dial to them one by one. This procedure has wasted lots of time for contact tracing and puts the public at risk. Thus, we decided to store all of the customers' data in online cloud database, Airtable. In the event of a new Covid-19 case, the authorities can quickly trace back those customers and get them tested.
- Shop Owners
Similar to schools and universities, our government also released guidelines for shop owners to reopen. We found out there are many repetitions in that process.
Thus, with our Contagion Buster App and Health Checkpoint, the whole process is sped up significantly. The health of security guards, shop owners and customers can be safeguarded and encourage more people to help out small businesses (since the whole screening process is much faster and safer).
- Companies
Companies are starting to reopen and employees are slowly getting back to the workforce. Most companies require employees to submit their health status through a health questionnaire daily. Thus, our app has included Group Services made for companies to track their employees' health. The data is then displayed in the form of charts and alert admins which employee is considered high risk.
- Personal
Our app displays the latest Covid-19 information regionally and globally. Individuals can fill in Self Health Declaration Forms daily and monitor his/her health with our Health Data Analysis. It tracks user location too! In other words, there are many useful features in a small package.
- Friends and Families
Friends and families can monitor the health status of each other especially elderly relatives by using our Group Services function. Admin of the group can view family members that are at high risk after automated evaluation of their form submission.
1.0 Contagion Buster Health CheckpointContagion Buster Health Checkpoint consists of a face tracker, thermal detection mechanism and student's name recognition that can be placed in malls and schools to replace manual thermal detection, thus reducing the risk of contracting the disease. These are Health Checkpoint taken from various angles:
Health Checkpoint is primarily made out of T-slot aluminium. We chose T-slot aluminium because it is easy to assemble, disassemble and doesn't require to drill holes to secure it in place. The dimensions and quantities of T-slot aluminium is shown below:
2 x 100 cm (39.4 inches)
2 x 50 cm (19.7 inches)
2 x 40 cm (15.7 inches)
1 x 20 cm (7.9 inches)(U-slot aluminium - mounting for detecting school name badge)
Health Checkpoint can be modified to higher or lower either by using a longer T-slot aluminium or using a higher table. By default, the table height is 80 cm (31.5 inches). The overall dimension of Health Checkpoint is 180 cm x 50 cm x 40 cm (Height x Length x Width) or 70.9 inches x 19.7 inches x 15.7 inches.
Next, in order to reposition the sensors smoothly and accurately, we decided to use sturdy rubber tracks to move the sensors perpendicularly for ascent or descent.
Moving on, these are the electrical components used in the development of Health Checkpoint:
1 x Arduino UNO
1 x HC-SR04 Ultrasonic Sensor
1 x L298N Motor Driver
1 x Breadboard
1 x WS2812B LED Strip (x30)
1 x Infrared Thermometer Non-contact Module GY-906
1 x 5V DC Motor
1 x DC-DC Adjustable Step-Down Voltage Regulator Module
1 x 2.1 mm Barrel Jack with Terminal Block
1 x 12v Adapter
1 x Microswitch
1 x USB plug
1 x USB charger
1 x Extension Cord
Few USB Cables
Many Jumper Wires
Most of the electrical components are located in this container. Two holes are drill at the side of the container for the wires and cables to go through.
Here is a Fritzing version of our circuit:
Health Checkpoint uses Logitech C310 HD Webcam as its face tracker camera. The webcam can be adjusted to a certain angle for different viewing perspective. It can be substituted with other cameras with a wide angle lens too.
The Webcam uses code similar to facial recognition whereby a face is first identified, followed by the identification of eyes and lastly the position of the eyes. Once the eyes are detected, the coordinates of the eyes are recorded down and one of the six positions on the rubber track is pinned down. The rubber track is divided into 6 sections as shown below:
This position is then sent to Arduino which controls the motor to move the sensors to that particular position, thus controlling the sensors to reach the height similar to the user.
1.4 Software - PythonHealth Checkpoint is programmed using Python 3.8.3. We initially started by using Raspberry Pi 3B+ as our computer for the entire system. However, we found out that Raspberry Pi has a lower refresh rate and slower processing speed. Thus, we decided to use a laptop and run our python code using PyCharm. We included an iPad 3rd Generation as a display to mirror laptop's screen using VNC server.
These are the libraries used for Health Checkpoint:
Importing necessary libraries for the face tracker, serial communication between Arduino, Airtable and student's name recognizer. Before importing pytesseract from the library, please follow the instructions from this link: https://github.com/tesseract-ocr/tesseract/wiki#windows (Windows users)
To check out the full Python code, please check out the attachment section.
After importing necessary libraries and configuring them properly, it will begin serial read communication between Arduino. We decode the byte string and remove \n\r from Arduino into Unicode. It will be saved in a variable called "string".
import cv2
import qrcode
import serial
import time
import numpy as np
position = 0
newpos = 0
face_cascade = cv2.CascadeClassifier('venv/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('venv/Lib/site-packages/cv2/data/haarcascade_eye.xml')
cap = cv2.VideoCapture(2)
cv2.namedWindow("frame", 0)
#set up serial
degree_sign = u"\N{DEGREE SIGN}"
ser = serial.Serial('COM21' , 9600)
time.sleep(2)
font = cv2.FONT_HERSHEY_DUPLEX
fontScale = 1.0
fontColor = (0,0,0)
fontColor2=(255,255,255)
lineType=2
tempdata = str(0)
Reading serial data from Arduino ultrasonic sensor and temperature sensor and store as variable “string”
# Read and record the data
data =[] # empty list to store the data
while True:
b = ser.readline() # read a byte string
string_n = b.decode() # decode byte string into Unicode
string = string_n.rstrip() # remove \n and \r
#flt = float(string) # convert string to float
print(string)
data.append(string) # add to the end of data list
Whenever Python received serial data, it converts data from variable “string” into a QR code called “myqr.png” as well as process temperature data on a plain white screen called “canvas.png”. It will not display the data yet.
# show the data
qr = qrcode.make(str("ABC Pharmacy," )+str("1X6T7,")+string)
qr.save('myqr.png', scale=100)
#read qrcode
qimg = cv2.imread('myqr.png')
qimg = cv2.resize(qimg,(320,360))
sign = cv2.imread('image.png')
value = cv2.imread('canvas.png')
value = cv2.resize(value,(320,360))
combine = np.concatenate((qimg, value), axis=1)
tempdata = "Your Temp: "+str(string)+"'C"
The following code will verify whether the serial data is indeed a temperature reading. If returns true, it will display QR code which contains user’s temperature, store name and store code. (It display school name, student's name and body temperature under school services) User's temperature reading will be displayed in text form too!
if string != "Please Step Closer":
cv2.destroyWindow("warning")
cv2.putText(combine,str(tempdata),(285,250),font,fontScale,fontColor)
cv2.putText(combine, str("Shop: ABC Pharmacy"), (285, 150), font, fontScale, fontColor)
cv2.putText(combine, str("Shop Code: 1X6T7"), (285, 200), font, fontScale, fontColor)
cv2.imshow("your temperature",combine)
else:
ser.write(b'9')
position = 0
newpos = 0
cv2.destroyWindow("your temperature")
cv2.imshow("warning",sign)
If user temperature is still not recorded, it runs a loop to adjust sensors position as it is possible that height of sensors is incorrect. The webcam will scan for possible human faces and eyes and print out the coordinates accordingly.
while (True):
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
img = frame
faces = face_cascade.detectMultiScale(gray, 1.2, 5)
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x + w, y + h), (255, 255, 0), 1)
roi_gray = img[y:y + h, x:x + w]
roi_color = img[y:y + h, x:x + w]
eyes = eye_cascade.detectMultiScale(roi_gray, 1.2, 6)
for (ex, ey, ew, eh) in eyes:
cv2.rectangle(roi_color, (ex, ey), (ex + ew, ey + eh), (0, 255, 0), 1)
cv2.putText(img, ' ', (x + 5, y + h - 5), font, fontScale, fontColor, lineType)
print('Coordinate Face Tracking = (', x, ',', y, ') Height:Width=[', h, ',', w, ']')
The code below determines the position of the user’s forehead from 1 to 6 based on the y-axis coordinate from the webcam point of view.
if y >= 0 and y <= 50:
print("1")
newpos = 1
#170~165
elif y >= 50 and y <= 100:
print("2")
newpos = 2
#165~160
elif y >= 100 and y <= 150:
print("3")
newpos = 3
#160~155
elif y >= 150 and y <= 200:
print("4")
newpos = 4
#155~150
elif y >= 200 and y <= 250:
print("5")
newpos = 5
#150~145
elif y >= 250 and y <= 300:
print("6")
newpos = 6
#145~140
The variable “newpos” represents the position the sensors should head to and variable “position” represents the current position of the sensors. The variable “newpos” is subtracted with the variable “position” in order to find the shortest route possible to the new position. If the subtraction of both variables is equivalent to 0, it will not send serial communication to Arduino since the user's forehead has not been shifted. A one second delay is added to allow sufficient time for Arduino to retrieve data and shift the ultrasonic and infrared thermometer sensors to the intended position.
if newpos - position == 1:
ser.write(b'1')
elif newpos - position == 2:
ser.write(b'2')
elif newpos - position == 3:
ser.write(b'3')
elif newpos - position == 4:
ser.write(b'4')
elif newpos - position == 5:
ser.write(b'5')
elif newpos - position == 6:
ser.write(b'6')
elif newpos - position == -1:
ser.write(b'a')
elif newpos - position == -2:
ser.write(b'b')
elif newpos - position == -3:
ser.write(b'c')
elif newpos - position == -4:
ser.write(b'd')
elif newpos - position == -5:
ser.write(b'e')
elif newpos - position == -6:
ser.write(b'9')
print(str("b'") + str(newpos - position) + str("'"))
if newpos != position:
time.sleep(1)
position = newpos
Afterwards, face tracker frame will be displayed and refreshed. It will break out of the while loop when temperature of the user has been detected. In this case, the loop will be break out once Arduino sends a notification to Python via serial.
cv2.imshow('frame', img)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
received_data = ser.read(ser.inWaiting())
print(received_data)
if received_data != b'':
Break
#Force stop the code if spacebar is pressed
#wait for spacebar
if cv2.waitKey(1) & 0xFF == ord(' '):
break
cv2.destroyAllWindows()
This is the end result:
Health Checkpoint is also programmed using Arduino IDE. First, import all the necessary libraries and define their port values. These include LED strip library, GY-906 contactless temperature sensor library and math library. Next, we initialize the variables "y", "serialdata", "t" and "w" which will be explained later as well as assign a port to the pingPin(Trigger Pin) and echoPin of the Ultrasonic Sensor.
#include <FastLED.h>
#define DATA_PIN 2
#define NUM_LEDS 30
#define BRIGHTNESS 20
CRGB leds[NUM_LEDS];
#include <Wire.h>
#include <Adafruit_MLX90614.h>
#include "math.h"
char y = 0;
char serialdata;
int t = 100;
int w = 9;
const int pingPin = 9; // Trigger Pin of Ultrasonic Sensor
const int echoPin = 10; // Echo Pin of Ultrasonic Sensor
Adafruit_MLX90614 mlx = Adafruit_MLX90614();
Next, we setup the number of LED in our LED strip as well as brightness of the LED strip. After that, we set the motor ports (11 and 12) as output and the port of the reset switch on the rubber track (8) as input and begin the temperature sensor. If the switch is not pushed, reset the rubber track.
void setup() {
FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
FastLED.setBrightness( BRIGHTNESS );
Serial.begin(9600); // Starting Serial Terminal
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
pinMode(8,INPUT_PULLUP);
mlx.begin();
while (digitalRead(8)== 1) {
analogWrite(11,120);
digitalWrite(12,LOW);
}
digitalWrite(11,LOW);
digitalWrite(12,LOW);
}
When the code begins, we first store all the incoming data from Python into the variable "serialdata" and reset the rubber track if the data received is "9". If the data received is a number, rotate the track downwards to the specified position. If the data received is an alphabet, rotate the track upwards to the specified position. Lastly, if the data received from python is the same as variable "y", no movement is needed.
void loop() {
if (Serial.available() > 0){
serialdata = Serial.read();
//Serial.print(serialdata);
//Serial.print(y);
if (serialdata == '9'){
while (digitalRead(8)== 1) {
analogWrite(11,120);
digitalWrite(12,LOW);
}
digitalWrite(11,LOW);
digitalWrite(12,LOW);
}
else if (serialdata != y && isDigit(serialdata)){
if (serialdata == '1'){
t = 125;
}
else if (serialdata == '2'){
t = 250;
}
else if (serialdata == '3'){
t = 375;
}
else if (serialdata == '4'){
t = 500;
}
else if (serialdata == '5'){
t = 625;
}
else if (serialdata == '6'){
t = 750;
}
analogWrite(12,150);
digitalWrite(11,LOW);
delay(t);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
y = serialdata;
//Serial.print(y);
}
else if (serialdata != y && isAlpha(serialdata)){
if (serialdata == 'a'){
t = 150;
}
else if (serialdata == 'b'){
t = 300;
}
else if (serialdata == 'c'){
t = 450;
}
else if (serialdata == 'd'){
t = 600;
}
else if (serialdata == 'e'){
t = 750;
}
analogWrite(11,200);
digitalWrite(12,LOW);
delay(t);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
y = serialdata;
//Serial.print(y);
}
}
else if(serialdata == y) {
digitalWrite(11,LOW);
digitalWrite(12,LOW);
}
Setting up the Ultrasonic Sensor requires the Trigger Pin to be an output and the Echo Pin to be an input. The Trigger Pin sends out an ultrasound wave which bounces off a surface and reflects back to the Echo Pin, thus the Trigger Pin is set from Low to HIGH and then back to LOW.
long duration, inches, cm;
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(10);
digitalWrite(pingPin, LOW);
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
The body temperature code will be explained in 1.6 Infrared Thermometer Calibration and 1.7 Body Temperature Detection.
If the distance of the object is further than 4 cm (1.6 inches) and the variable "w" is 0, no user is detected and the variable "w" is set to 1. This is to ensure that Arduino only prompts "Please Step Closer" to Python once every time. Led strips are set to blue color to indicate standby and a text, "Please Step Closer" is send to Python via serial.
else {
if (w != 1){
w = 1;
for( int i = 0; i < 30; i++) {
leds[i] = CRGB::Blue;
FastLED.show();
}
Serial.println("Please Step Closer");
}
}
}
long microsecondsToInches(long microseconds) {
return microseconds / 74 / 2;
}
long microsecondsToCentimeters(long microseconds) {
return microseconds / 29 / 2;
}
1.6 Infrared Thermometer CalibrationHealth Checkpoint uses an Infrared Thermometer Non-contact Module GY-906 to detect body temperature. To test the accuracy of the infrared thermometer, a digital multimeter is used to calibrate the infrared thermometer.
After averaging the infrared thermometer reading, which is 12.61°C, we added 2.2°C to offset the difference readings.
Serial.print(float(mlx.readObjectTempC()+2.2),1);
1.7 Body Temperature DetectionThe HC-SR04 Arduino Ultrasonic Sensor and the infrared thermometer are assembled together and mounted on the rubber tracks. We used an old CD-ROM player cover as its frame and drill three holes respectively. Once the user's forehead is within 4 cm (1.6 inches) from the infrared thermometer, it will start to gather body temperature data. After much testing, we have determined that the infrared thermometer works best and can gather accurate body temperature data when the forehead is at least 4 cm (1.6 inches) from the sensor.
In the Arduino code, we sort the gathered body temperature data into these following groups:
Normal: 35.0–37.5 °C (95.0–99.5 °F)
Fever: >37.5 or 38.3 °C (99.5 or 100.9 °F)
Hypothermia: <35.0 °C (95.0 °F)
if ( cm < 4) {
if ( mlx.readObjectTempC()+2.2 >= 30){
for (int d=0;d<70;d++){
delay(100);
if ( mlx.readObjectTempC()+2.2 >= 37.50){
Serial.print(float(mlx.readObjectTempC()+2.2),1);
Serial.println();
for( int i = 0; i < 30; i++) {
leds[i] = CRGB::Red;
FastLED.show();
}
}
else if ( mlx.readObjectTempC()+2.2 >= 35.00){
Serial.print(float(mlx.readObjectTempC()+2.2),1);
Serial.println();
for( int i = 0; i < 30; i++) {
leds[i] = CRGB::Green;
FastLED.show();
}
}
else if ( mlx.readObjectTempC()+2.2 < 35.00){
Serial.print(float(mlx.readObjectTempC()+2.2),1);
Serial.println();
for( int i = 0; i < 30; i++) {
leds[i] = CRGB::Blue;
FastLED.show();
}
}
}
w = 0;
}
}
Once it is in one of the temperature groups, it will turn on the LED lights accordingly and send data to python via pyserial. The for loop below will gather body temperature data 70 times to get the most accurate result over a period of 7 seconds.
for (int d=0;d<70;d++){
1.8 Student's Name RecognitionFor schools and universities, our Health Checkpoint includes an additional feature which is student's name recognition. This can prevent students from falsifying their names and reduce human involvement. We installed another Webcam of the same type at the left side of Health Checkpoint:
Of course, there will be additional software involved. Please remember to import libraries for pytesseract and install Tesseract Optical Character Recognition (Check out 1.4 Software - Python if you have not),
This is the setup code for pytesseract and Airtable: You can retrieve your Airtable Base_ID, Table Name and API Key from API Documenation.
import pytesseract
from airtable import airtable
at = airtable.Airtable('Base_ID','Table Name',api_key='')
absd = at.get_all()
print(absd)
capsb = cv2.VideoCapture(0)
After initial setup, we merge both the Shop Services Python code and the pytesseract python code. Whenever Arduino sends body temperature data to Python, it will generate a QR code and show students' body temperature. Next, it will find any possible text from the webcam video feed. Once the length of the result is greater than 7, it will insert the student's name together with his/her body temperature into Airtable.
if string != "Please Step Closer":
cv2.destroyWindow("warning")
cv2.putText(combine,str(tempdata),(285,250),font,fontScale,fontColor)
cv2.putText(combine, str("Catholic High School"), (285, 150), font, fontScale, fontColor)
cv2.imshow("your temperature",combine)
while (True):
text = ""
ret, img = capsb.read()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
custom_oem_psm_config = r'--oem 3 --psm 3'
text = pytesseract.image_to_string(img)
cv2.imshow('frame1', img)
print(text)
if len(text) > 7:
at.insert({'Name': text, 'Temperature': str(string)})
break
if cv2.waitKey(1) & 0xFF == ord('q'):
break
This is a screenshot when the Python code is running:
After the student's name and temperature is recorded, the code will loop back again and restart the whole process.
2.0 Contagion Buster AppDownload link: https://drive.google.com/file/d/1K3VI6b0PbO-TLm-Zb4bZC_woAcSyKswn/view?usp=sharing
Our app is built on MIT App Inventor Platform. It's primary purpose is to provide updates and information on the Covid-19 conditions globally and connect users with their workers, family and friends to get to know their health status. We use multiple App Inventor extensions and connections to APIs (Application programming interface) in order to integrate all the different features into one application. The flowchart below shows how our app functions:
First up, after the user fills up their personal information, the data will be sent automatically to our cloud database which is Airtable. https://airtable.com/ Airtable works like a spreadsheet but gives you the power of a database to organize anything, which is an ideal choice for app development. These are our Airtable spreadsheets used in our app and our health checkpoint too:
(All the names, password, group codes, date and time in the image is not valid)
It is fairly simple to set up Airtable extension in App Inventor. After clicking on the Airtable icon, you can fill in your API Key and Base ID (like the one below). You can obtain the API key and Base ID by > Help > API Documentation > Authentication from your Airtable spreadsheet. Make sure to change the TableName and ViewName too!
Once Log In is successful, the app will proceed to HomeScreen where it will display the latest information of Covid-19. Our app uses RapidAPI's Covid-19 Application Programming Interface. This is the API we are currently using: https://rapidapi.com/Gramzivi/api/covid-19-data The source of the Covid-19 data is from World Health Organization, John Hopkins University, Statista, Humanitarian Data Exchange and Central for Disease Control and Prevention. This is an example response when retrieving the Covid-19 data from this API:
[{"country":"USA", "code":"US", "confirmed":2438879, "recovered":1022768, "critical":16502, "deaths":123745, "latitude":37.09024, "longitude":-95.712891, "lastChange":"2020-06-24T18:58:56+02:00", "lastUpdate":"2020-06-24T19:00:03+02:00"}]
To convert this response to a text readable by our app, we decoded the json text and replace unnecessary characters. The json text will be then converted in to comma separated value(CSV) list and the data is then displayed.
Here is the result:
When HomeScreen initializes, the app will get user's country of origin automatically and displayed both regional and global data. User can view other country's data too!
Besides, our app also allow users to view charts of Covid-19 data regionally. Upon gathering all the available Covid-19 data for the specific country, the app plots charts with the collected data. It uses ChartMaker, an extension that adds graphing capability (for pie, bar, and line graphs) through Google Charts. We used this particular extension for various screens to ease understanding of large quantities of data and the relationships between parts of the data and can be read more quickly.
2.3 Self Health Declaration Form and Health Data AnalysisAccording to the WHO, on average it takes 5–6 days from when someone is infected with the Covid-19 disease for symptoms to show. However, in worse case scenarios, it may even take up to 14 days before the symptoms are shown.
Thus, our app has this unique feature that allows users to record their health condition and their whereabouts daily. Here are the following questions:
1) Have you gone outstation or overseas in the past 14 days?
2) Does anyone who stay with you have had any of the above experiences OR has been identified as primary or secondary contact to a Covid-19 patient?
3) Have you developed any of the Covid-19 symptoms?
4) Have you traveled to a recently infected Covid-19 area?
Once a user has submitted the form, the user can trace back their form submission history in the profile screen. If there is a consistent pattern of symptoms according to form submission data, users can seek medical personnel for a Covid-19 test.
Besides, our app has a Health Analysis feature. It will evaluate your chances of contracting Covid-19 by a number of parameters such as data from Self Health Declaration Form, user's age, country and location history.
The pie chart will never show 0% or 100% chances of contracting the Covid-19 disease. Note that the data is just an estimation and may vary from actual condition.
2.4 Group ServicesGroup Services assist private community or company in contact tracing. Company's admins can get workers' state of health through the app surveys. Admins create a group account with up to 7 different customizable questions for their employees to fill in. Data from employees will be updated to the admin's account automatically and the data is processed and displayed into charts for the admin to get an overview of their employees’ health condition. High risk individuals and user's failing to submit questionnaires will be displayed. Every group created in Contagion Buster will be given a unique 5 alphanumeric code for the admin to share with their respective members.
Members may join the group using the given code and are reminded to fill in the questionnaire daily. Group Services has an unlimited capacity of groups for every member and admin accounts. Thus, this app allows any members of the public to monitor their family members, friends or communities.
2.5 Contact Tracing (Integration with Health Checkpoint)Note: This feature currently only works with Contagion Buster Health Checkpoint.
When users of the app enter a store with Contagion Buster Health Checkpoint, the Health Checkpoint will display a QR Code when a body temperature reading is detected. Upon scanning the QR Code with the app, it will verify whether the shop exists in Airtable database and record the user's name, phone number, body temperature and time & date of entry under that particular store's column. Therefore, government agencies or shop owners can trace customers that have been to their shops if there is an outbreak nearby. User's entries are recorded down on their respective app too!
2.6 Privacy and SecurityContagion Buster protects user's privacy and personal information. Airtable uses 256-bit SSL/TLS encryption. Personal information such as Name, Password, Age, Phone Number, Country, Date of Birth, Group Services and Shop Services will be sent to Airtable to create a better user experience. Other data such as Location History, Self Health Declaration Form and Health Data Analysis results are all private to the user and are stored securely on their personal devices and will not be shared with anyone.
Cost for overall projectContagion Buster App - FREE
Contagion Buster Health Checkpoint - 125 USD (excluding Laptop and iPad)
SummaryTo sum it up, Contagion Buster is a fully automated body temperature detection system with an integrated public app that can also be used as a standalone which provides data and statistics, group services, health assessment forms and also health analysis features! With the use of AI and robotics technology, we strongly believe that Contagion Buster is able to flatten out the curve and in time, break the chain on the Covid-19 virus infection. We hope that this low-cost system can help many developing countries and protect the health of all.
Comments