Emergency rooms and hospitals around the country NEED our help. To give you some perspective on how bad the situation is, I have family-friends that are doctors who are personally reaching out to 3D parts manufacturers for simple PPE (personal protective equipment) like face-masks that could be 3D printed and manufactured for a healthcare professionals. The government simply does not have the supply needed to meet the demand at these hospitals, and so hospitals are now forced to spend time trying to find more solutions when they should be focusing on the exponentially growing number of patients entering our hospitals every day.
The positive, however, is that companies and individuals, both nationally and internationally, want to help. In recent news, individuals like Jack Ma, Marc Benioff, and Elon Musk have offered to donate respirators or other equipment like masks and protective gear. But the acts of a few prominent business leaders is not going to fix the problem. This problem calls upon everyone willing and able to pitch in what they can to make a difference. The only issue, is that it's not clear how people can help.
Until now. Cobridge can help deliver on this promise and close the supply and demand gap.
What it does
Cobridge aims to connect medical equipment producers / consumers. If you have a 3D printer at home that can print medical-grade face masks, you should join and help out. If you are the leader of a business and have an empty high tech manufacturing plant that could be used to produce ventilators, you should join and help out.
Hospitals join the platform as "consumers." In other words, they need resources like PPE, health products like hand sanitizer, etc. Authorized manufacturers and businesses join as "producers." When producers join, the platform smartly matches the resources that those producers can provide to consumers that need them. The platform uses heuristics like distance, location, urgency, resource availability, etc. to determine how to best distribute resources. Once it has found an applicable pool of potential consumers, it notifies producers and initiates a conversation between the two. With the help of GCP's Translation API, it can even communicate with manufacturers abroad.
Additionally, Cobridge serves as a live data analytics tool for hospitals. Hospitals, or even governmental agencies like the WHO can get real time analytics on the demand for certain items based on location and can respond accordingly. By using a Kafka Stream, people can create real-time models that can assess risk based on future coronavirus outbreaks and can help hospitals allocate the resources they need before that time comes.
How I built it
I knew that something like this would require a framework that could handle high throughput. I also, however, didn't want to over-engineer the solution and initially thought about using just a simple REST API. But I ultimately decided to use kafka for the following reasons:
- publish-subscribe framework enabled for real time analytics and streams
- the platform may potentially require hundreds of consumers who want realtime data
- it needed to scale well with potentially hundreds of thousands of messages
I built the backend in Node.js / Express with a REST API. I connected that to Google GCP's Translation API and Twilio's SMS API to allow for producers and consumers to communicate regardless of language barriers.
I built the frontend in React and created a Map interface via Mapbox with clustering to provide an example of how an interactive display like a map could help producers, governments, or large healthcare agencies understand where demand might be highest. Furthermore, I created a data analytics page using react-vis that provides real-time analytics for hospitals.
(Please see the 3rd gallery image for an architecture overview)
Challenges I ran into
I had never built something using Kafka before. It took some time to understand the architecture and how consumers / producers exactly worked. Also, I worked on this entirely by myself, so I was a bit rusty in areas like backend development, creating REST APIs, etc.
Accomplishments that I'm proud of
I had the chance to use Kafka for an actual non-trivial use case. A lot of people like throwing big words out there like Machine Learning, parallel computing, big data, etc. etc. For the first time in a long time, I saw this as a very clear case where Kafka and a streaming framework could be extremely useful to handle high throughput on a platform with extensibility for data science / analytics and multiple consumers that you would need to publish content. I'm also just very satisfied with how much I was able to get done as a one person team.
What I learned
Just keep swimming
What's next for Cobridge
I'd really like to see this implemented. I know for a fact that there is a demand for it. The next steps include creating an official user registration system, building out an in-house messaging platform for producers and consumers to communicate, and further improving the data analytics / streaming engine so that hospitals can have data analytics and governmental agencies can get information real-time.
Try It out
express.js, firebase, gcp, kafka, mapbox, material-ui, node.js, react, react-vis, translation-cloud, twilio