Inspiration

With shortages of the personal protective equipment (PPE) needed for healthcare workers to properly and safely care for COVID-19 patients, some volunteers from my brother's medical school in NYC started contacting local hardware and car repair shops (amongst other businesses) for any PPE they have in stock. However they found it very time consuming and difficult to coordinate across a team of volunteers as each person needs to manually search for locations and their contact info while minimizing duplicate work between team members. Thus I created a Python script to aid volunteer efforts in sourcing PPE for hospital workers in the wake of the COVID-19 pandemic.

What it does

This tool aggregates all of the locations that match the user's specified search criteria and outputs the contact information in a spreadsheet so that volunteers can efficiently contact businesses for their PPE in a time sensitive matter. In addition to searching for PPE, the tool can be used to search for other things such as child care workers to care for the healthcare workers’ children whose schools have shut down. This tool has already been used by volunteer efforts in NYC to search for PPE and was quickly used to search for potential child care workers with considerable success!

How I built it

I used Python and the Google Places API to generate the list of locations and contact info that match a specific search criteria. The search criteria inputs I decided on where location types, keywords, latitude and longitude for the origin of the search, and search radius. Given the search criteria the script sends API requests to Google Places to find places matching the search criteria as well as their contact info. The script then outputs a csv file with the name, address, phone number, and website of each location so that the volunteers can efficiently coordinate their tasks. I hosted the code on Google Colab since it allows for easy access for anyone to run the program through the cloud and avoid the hassle of running the code locally which could be a barrier for my target demographic. More implementation details can be found here.

Challenges I ran into

One challenge was that the Google Places API only returns a max of 60 results no matter the search radius size. In addition each API call costs money and so I had to use API calls sparingly. This means that there could be many locations that are overlooked and so I needed to search in smaller zones in such a way to minimize overlap but also get full coverage of the search area. I decided to implement a grid search where the original search circle would be split into multiple zones offset in such a way as to minimize overlap and still cover every point in the search radius.

Accomplishments that I'm proud of

I am pleased that my tool has been used to help volunteer efforts by Columbia, Cornell, and NYU medical students in aiding healthcare workers and hope that it is useful to many more.

What I learned

I learned a lot about using the Google Places API and how to write code efficiently so as to reduce API calls. I also learned how to write for a non technical audience to use a technical program since my Medium article is primarily directed to the volunteer workers who would benefit by using my tool to aid their efforts. In addition I learned about some of the unique ways in which healthcare workers can be helped during this time (such as finding child care workers to care for their children) as well as how volunteers are helping (sourcing PPE from hardware stores and other small businesses).

What's next for this project

I am currently generating contact lists upon request from volunteer efforts in the NYC area, however I wrote an article on Medium on how to use my tool in hopes of helping others in their efforts to support their healthcare workers. In the future this tool could be developed into a website to make it a more user friendly platform. The main barrier for this however is I would still need the user to input their own API key as I can't afford to have all the requests go through my own API key.

Built With

Share this project:

Updates