Background
Back in early May, the Ministry of Health (MOH) and Singapore Armed Forces (SAF) approached Prof Ben and the CVWO team, as they were looking to build a scalable system to support forward contact-tracing. They wanted a system that could handle the increasing number of cases, one that is flexible enough to support the ever-evolving requirements.
A team was thus quickly put together to support this mission. Within 2.5 weeks, the team pushed out an app to production, which has been working smoothly till date. After the initial deployment, the team continued to implement features that greatly enhanced workflows on the ground, eventually building a comprehensive and stable system that could be handed over for the government to simply maintain.
What is Forward Contact Tracing?
Unlike backward contact tracing, which traces the likely origin of a patient’s infection, forward contact tracing looks at individuals who need to be quarantined as a result of interacting with infected patients. This is done via activity mapping, where the activities performed by a patient before and after their likely date of infection are tracked, and the people involved in these activities are quarantined promptly.
Key Workflows On The Ground
Case Routing and Assignment
As there were numerous cases that needed to be mapped daily, a complex and comprehensive case routing workflow was set up, where cases could be assigned and delegated to various teams and activity mappers.
Activity Mapping
Individuals who did the activity mapping, also known as activity mappers, would need to consolidate information from various sources and craft a complete picture of each case’s activity history. This is done with reference to information from GovTech, SafeEntry, TraceTogether, as well as from calling up the patient as well.
Uploading Activity Maps
After each activity map is completed and vetted, the maps would need to be transferred over to MOH for them to issue quarantine orders.
Reporting of Numbers
The number of cases being mapped are also reported to higher-ups, be it for tracking purposes or for press releases.
Project Objectives
Case Routing and Permissions Control Systems
The first requirement for our team was to build a case routing system that could support the complex organisational structures on the ground. A case will generally need to be claimed from a centralised pool by an Activity Mapping Group (AMG), before being assigned to an Activity Mapping Centre (AMC), and finally being tasked to an Activity Mapper.
We thus needed not just a system to track the statuses of a case, but also a permissions system that allows for fine-grained access control. As such, a User-Duty-Group permissions system, various types of Routing Tables, and a case status State Machine were all rolled out with the first deployment on 1 June.
Activity Mapping Interface
The mapping interface was key to the operations, as Activity Mappers would use this screen to do their work. When the CVWO team first got onboard, there was already a basic mapping interface built by the SAF team. As such, we did not do much to it prior to the first deployment.
Subsequently, our team took over the interface and revamped it. This ranged from improving the integration with information sources such as TraceTogether and SafeEntry, to the building of a Visual Map for mappers to see a geospatial representation of their work. All these greatly enhanced the experience for mappers, helping them to create more accurate and detailed activity maps.
Dashboard Analytics
Our team also looked into building analytic features for the application. This eventually culminated in a dashboard where users can not only see the number and statuses of cases in the system, but also metrics on how the various AMGs and AMCs on the ground are performing. All these real-time numbers help leaders to make swift decisions during these uncertain times, and also allows for precise optimisation of workflow processes.
Other Supporting Features
A variety of other supporting features were built, ranging from an internal audit system to ensure that work was being done properly on the ground, to functionalities that supported real-world workflows, such as a case vetting system that allows AMC leaders to check their mappers’ work before sending it over to MOH.
Project Process
Codebase Initialisation & Rapid Development
When our team got onboard, there was an initial codebase already set up by the SAF team. This codebase was still very new and had a basic interface for activity mapping, but much was needed to be done. Furthermore, the technology stack chosen by the SAF team was quite bleeding-edge, with frameworks and libraries such as Apollo, GraphQL and Prisma. Our team had no prior experience with any of these.
We quickly dived in and familiarised ourselves with the technologies used. At the same time, we also had to perform requirements analysis and create mock-ups to run through with stakeholders. It was a rough process with multiple sleepless nights, but we were able to successfully push out the initial app with the core functionalities of Case Routing and Activity Mapping on 1 June 2020, within 2.5 weeks.
Expanding Coverage
After the initial release, the focus switched to incorporating and supporting other workflows in our application, as well as stabilising what we have already built. One such workflow would be the statistics reporting workflow, where our team spent 1 week after the initial launch to do up a dashboard that helped users to instantly see the number of cases and their progress.
As the situation with COVID-19 is constantly evolving, our team had to be ready to deal with sudden and urgent requirements. It was only near the end of June when the situation stabilised and our app was complete enough that no further major changes were required.
Documentation, Testing & Handover
Another complexity was the handing over of this project. Both SAF and CVWO were tasked to build the application, but ultimately it would be handed over to MOH for them to maintain. Unlike other tech projects, which tend to have a handover-takeover process that will last quite a number of weeks, our team only had 2 weeks to do so. Furthermore, as our technology stack is really new, the team taking over this project is unlikely to be very familiar with the technologies used.
Thus, our team got started with documentation and testing in early July (way before the new team came in), while still supporting any new requirements. We wanted to make sure that the team taking over can easily understand what every part of our code was doing, and that they had a suite of test cases to fall back on, should they need to make any major changes.
This process lasted a month and culminated in a smooth and successful handover of this project in early August.
Screenshots
All data shown below are fake data used for demo and testing purposes.
Project Team
- Zhu Hanming (Project Lead, Year 1)
- Sebastian Toh Shi Jian (Developer, Year 1)
- Tan Ying Jie, Dexter (Developer, Year 1)
- Low Jie Feng (Developer, Year 1)
Other members who helped out are:
- Lee Sing Jie (Project Lead, Senior Software Engineer at Facebook)
Sing Jie came in as the Project Lead to support the first 3 weeks, which were really rough and rocky. His experience and expertise were invaluable in getting the entire project ramped up, and he also led the smooth and successful initial deployment on 1 June. His designs and decisions were also very well-thought-out, as they continued to benefit the developers for the rest of the project.
- Tan E-Liang (Developer, Year 4)
E-Liang helped with the initial stages of the project, setting up tools and configurations that would later greatly help the developers. He also gave valuable feedback and suggestions throughout the project, helping the team identify bugs and areas to improve on.
Afterthoughts
It has been an honour to be able to contribute to the nation over the past 3 months alongside these hardworking and amazing team members. It was not an easy journey, but it was definitely rewarding.
– Zhu Hanming
I am very thankful to be given this opportunity to help out in the fight against COVID-19. The past 3 months have been tiring, but also full of meaning and fulfilment.
– Sebastian Toh Shi Jian
Being able to work on such a project is definitely an opportunity like no other. These 3 months have definitely been very tough, but looking at the final product and its impact on Singapore’s effort to fight COVID-19 makes all the effort worthwhile.
– Tan Ying Jie, Dexter
In these unprecedented circumstances presented by COVID-19, I feel privileged to have the chance to help limit the spread of the virus. It has been a difficult journey, but I am glad of what we managed to build to help the country in this fight.
– Low Jie Feng
We would like to express our heartfelt gratitude to the following people who have been influential and supportive during our project:
- Prof Ben Leong (NUS) for his guidance and advice.
- The SAF team for steadily anchoring things on the ground and ensuring smooth deployments.
- MOH for their support on the ground.
- GIC for their generous support for the programme.