Inspiration was born from a desire to help reduce the massive societal upheaval that COVID-19 was wreaking around the world. The disease was spreading rapidly, as was fear, mass unemployment, anxiety and disruption. I'm always the type of person to pitch in and help wherever possible and so with my medical contacts and 20+ years experience in software development, we knew we could develop a distributed solution to empower people everywhere to help fight this disease.
What it does
We've developed a contact tracing (not another one :-) and self-reporting app. We've researched and learnt from the experiences that other countries have had in dealing with this pandemic plus we've brought all of our product design and user psychology skills to this.
We've employed a sophisticated, two-stage contact tracing system. This is key in employing a containment strategy. When multiple users are using the app, it will anonymously record any close contact between the users. This data is stored locally on the phone. It is encrypted and it is also anonymous. If a user does start showing symptoms and they self-isolate, then the backend goes through all close interactions (within 1.5m) that the user has had over the preceding 14 days and sends them an anonymous alert advising them to self-isolate. If the user with symptoms does then tests positive for COVID-19, a more serious warning message is sent to those possibly infected users strongly urging them to quarantine if they have not done so already.
This two stage warning is designed to prevent further contagion in society and also within a household too and to-date has not been deployed anywhere.
In addition, those users who are in self-isolation or quarantine, can assess their condition multiple times per day and record their temperature, and whether they have a cough, fever, breathlessness, body aches, and other symptoms. This is presented in the form of a simple questionnaire. They can then nominate for a doctor to monitor them remotely. This remote monitoring is also vitally important because if the patient's symptoms deteriorate the doctor can intervene early and/or alert other people the user may have come into contact with. This has proven very effective in Taiwan.
Plus the app gives the user reassurance about their symptoms and guidance on what to do next. This reassurance is important when there is such a level of anxiety around the disease and symptoms may be misinterpreted.
The information provided on how to self-isolate, how to quarantine, and what to do next if the user is recovering means the app can provide all of the answers to hand.
How I built it
Our designers started work on how to make this user-friendly and reassuring, while our software developers worked on the backend and frontend. We have used Flutter for the app because of its speed of development, cross-platform nature, performance, and rich UI ability. We have used a gRPC backend for rich bidirectional communication between the app and the backend. And all data is stored in a postgresql database. This is deployed using Kubernetes so it can be scaled as appropriate.
We have had input from leading Australian doctors on this so we're confident that we have the right medical questions in place. In order to reassure users and provide them with the correct advice, this has been important.
Challenges I ran into
Without a doubt the hardest part has been figuring out when the user has come into close contact with someone else. We started by thinking we could record the GPS coordinates of the phone every 1 minute and then we could compare the GPS history with other users. But after much testing this was ruled out because: a) we would have to store this data on a central server. The data storage would be immense. And even with it anonymized, we were uncomfortable storing it b) GPS coordinates are not enough. Users could be working in skyscrapers or apartment blocks. They may have the same GPS coordinate but different heights. We started to record and use altitude in our algorithms but altitude measurements are not accurate and not every phone records them. c) even with GPS coordinates, the accuracy rapidly becomes unusable in indoor environments or highly urbanized environments due to poor signals or multipath reflections.
So we had to rule out GPS tracking. And instead resort to local Bluetooth scanning. It has the advantage of being very localized. Power draw and management is still an issue though.
Accomplishments that I'm proud of
We are very proud of the design. We have tried to take user psychology into account and provide an app that is reassuring and gives user the information that they need. To many COVID-19 apps are being rushed out with a poor experience and this either confuses users or prevents self-isolation or reassurance.
We're also proud of the responsiveness of the app. It is lightweight (in terms of size) and lag is minimal to non-existent. It looks attractive too.
What I learned
The hardest part is not actually in developing the technology or the design, but in getting medical authorities or governments on board. Partly they are so overloaded with the current crisis that they are stretched beyond belief. But also their decision making and rules prevent them from responding quickly in a crisis. And getting their feedback and support has been hard. But they need to help champion this because the more people use it the more effective the automated, anonymous contact tracing will be.
What's next for UpHealth
We are looking for a medical partner or tech company that can help us to release it for both Apple and Android. There are now requirements in place from Apple and Google that COVID-19 related apps need to be championed by a government or medical authority. We are days away from being able to release this and need support to do that.
Plus translating it into multiple languages. We have the ability to display multiple languages already. We just need the translations.
Try It out
.net, c#, flutter, grpc, kubernetes, linux, postgresql