Tracking a disease’s progression is incredibly useful in a pandemic like COVID-19. The Weather Company created a Data Disease Tracker API that allows you to track the progression of a disease for a given location. It provides information regarding active diseases including confirmed cases, deaths, and recoveries over a period of up to 60 days in the past.
In this tutorial, I show you how to connect a Node.js application to the Weather Company Data Disease Tracker API endpoint.
Prerequisites
- Install Node.js.
- Clone the repository.
Steps
- Obtain a Weather Company API Key
- Obtain a HERE Location Services API Key
- Install the CLI application
- Run the CLI application
Obtain a Weather Company API Key
If you’re participating in the Call for Code Global Challenge, you have access to The Weather Company API for COVID-19 Disease Tracking.
Go to the Call for Code Weather website and register. A time-limited API key will be sent to you via email. The documentation for the Weather Company APIs for Call for Code can be found here.
Obtain a HERE Location Services API Key
When using the application, you may pass it a geocode (for example, ‘35.843686,-78.78548’), a postal key (for example, 90210:US), or an address. If you pass an address, the application will try to use HERE Location Services for geocoding.
To access the HERE Geocoding API, an API Key is required. Follow the instructions outlined in the HERE Developer Portal to generate a free API Key.
Install the CLI application
To run this application on your local machine, from a terminal window:
Go into the cloned repository directory:
$ cd twc-disease-tracker-api-nodejsInstall the application globally to make it available as a command-line script:
$ npm install -g .Note: To uninstall the script, run:
npm uninstall -g twc-disease-tracker-api-nodejsWhen using the application, you can pass the API keys as command-line arguments or set them as environment variables. To configure your API keys in environment variables, from a terminal window:
Set your Weather Company Data API key
$ export TWC_APIKEY=<YOUR_TWC_APIKEY>(Optional) If would like to be able to pass an address (instead of geocode or postal key), set your HERE Location Services API key:
$ export HERE_APIKEY=<YOUR_HERE_APIKEY>
Run the CLI application
Note: For more detailed usage information, see the in-app help page which you can access by executing:
covid-cli --help
Use the command covid-cli <location> to display a table of total accumulated reported cases for the given location’s county, state, or country. The location can be a geocode (latitude, longitude), a postal code (for example, 90210:US) or an address (if the HERE API is configured), as the following commands show:
Using geocode
The following command requests data about cases at a specific latitude and longitude.
shell
$ covid-cli 42.35866,-71.05674
Using postal key
The following command requests data about cases in a specific postal code (in this case, 02109).
shell
$ covid-cli 02109:US
Using postal address
The following command requests data about cases at a specific address.
shell
$ covid-cli 'Boston, MA'
Sample output
The sample output would look like the following:
Total accumulated COVID-19 reported cases in the past
14 day(s) for Suffolk County (Population: 722023)
┌─────────┬──────────────┬───────────┬────────┐
│ (index) │ dateReport │ confirmed │ deaths │
├─────────┼──────────────┼───────────┼────────┤
│ 0 │ '2020-04-17' │ 6820 │ 0 │
│ 1 │ '2020-04-16' │ 6820 │ 120 │
│ 2 │ '2020-04-15' │ 6279 │ 120 │
│ 3 │ '2020-04-14' │ 5872 │ 106 │
│ 4 │ '2020-04-13' │ 5579 │ 88 │
│ 5 │ '2020-04-12' │ 5359 │ 81 │
│ 6 │ '2020-04-11' │ 4926 │ 66 │
│ 7 │ '2020-04-10' │ 4534 │ 56 │
│ 8 │ '2020-04-09' │ 4041 │ 50 │
│ 9 │ '2020-04-08' │ 3600 │ 42 │
│ 10 │ '2020-04-07' │ 3245 │ 41 │
│ 11 │ '2020-04-06' │ 2929 │ 28 │
│ 12 │ '2020-04-05' │ 2658 │ 26 │
│ 13 │ '2020-04-04' │ 2429 │ 24 │
└─────────┴──────────────┴───────────┴────────┘
You can specify the (location) level of the data to retrieve or the number of days (maximum 60) through command-line options. The following command shows that you are looking for the latest data from New Bedford, Massachusetts in the last five days:
Command
$ covid-cli 'new bedford, ma' --level state --days 5
Output
When I ran that command, it returned these results:
Total accumulated COVID-19 reported cases in the past
5 day(s) for Massachusetts (Population: 6949503)
┌─────────┬──────────────┬───────────┬────────┐
│ (index) │ dateReport │ confirmed │ deaths │
├─────────┼──────────────┼───────────┼────────┤
│ 0 │ '2020-04-17' │ 32181 │ 1245 │
│ 1 │ '2020-04-16' │ 32181 │ 1245 │
│ 2 │ '2020-04-15' │ 29918 │ 1108 │
│ 3 │ '2020-04-14' │ 28163 │ 957 │
│ 4 │ '2020-04-13' │ 26867 │ 844 │
└─────────┴──────────────┴───────────┴────────┘
You can also pass API keys as command-line options. The command-line options override any set environment variables. A HERE API Key is required only if you plan to pass an address instead of geocode or postal key. The following command is looking for data about a specific address in Cambridge, MA:
Command
shell
$ covid-cli 'cambridge, ma' --twcapikey XXXXXXXXXX --hereapikey XXXXXXXXXX
Output
When I ran that command, it returned these results:
Total accumlated COVID-19 reported cases in the past
14 day(s) for Middlesex County (Population: 1503085)
┌─────────┬──────────────┬───────────┬────────┐
│ (index) │ dateReport │ confirmed │ deaths │
├─────────┼──────────────┼───────────┼────────┤
│ 0 │ '2020-04-17' │ 7206 │ 0 │
│ 1 │ '2020-04-16' │ 7206 │ 188 │
│ 2 │ '2020-04-15' │ 6681 │ 188 │
│ 3 │ '2020-04-14' │ 6254 │ 163 │
│ 4 │ '2020-04-13' │ 5983 │ 149 │
│ 5 │ '2020-04-12' │ 5660 │ 137 │
│ 6 │ '2020-04-11' │ 4872 │ 109 │
│ 7 │ '2020-04-10' │ 4447 │ 93 │
│ 8 │ '2020-04-09' │ 4045 │ 80 │
│ 9 │ '2020-04-08' │ 3545 │ 69 │
│ 10 │ '2020-04-07' │ 3187 │ 69 │
│ 11 │ '2020-04-06' │ 2950 │ 42 │
│ 12 │ '2020-04-05' │ 2632 │ 38 │
│ 13 │ '2020-04-04' │ 2468 │ 32 │
└─────────┴──────────────┴───────────┴────────┘
Conclusion
Now that you know how to connect your Node.js application to The Weather Company API for COVID-19 Disease Tracking, you are equipped to extend your knowledge and find new and creative ways to fight the disease.
Resources
The Weather Company – COVID-19
Call for Code – The Weather Company
Call for Code – COVID-19
HERE – Geocoding and Search
Node.js
License
This code is licensed under Apache 2.0. Full license text is available in LICENSE.