# COVID "Score" Proposal
This is a proposal to calculate a COVID score for a user's itinerary or a destination associated with a user's itinerary
### Objectives
* Get a sense for the rate of change of the COVID "situation" in a given state over some interval of time
* Take into account the population of a state (e.g. N cases in NY implies a different situation than N cases in Wyoming)
* Calculate a high level score and return that as a response to the Web backend/API layer triggered by an inbound HTTP request to the DS API
* Enable flexible changes to the score calculation without the need for updating code
### Primary COVID Attribute/Data Element
* Key off of the `new_case` CDC/SODA data element to calculate the score
* Fetch the given state's COVID date from `14` days ago (2 weeks ago) and from `1` day ago (yesterday)
* Use environment variables for the time interval (e.g. `INT_START` and `INT_END`)
* Use environment variables for low and high score values (e.g. `THRESHOLD_LOW`, `THRESHOLD_HIGH`)
### Calculation Methodology
1. Execute an outbound request from the DS backend/API to the CDC/SODA API
1. Grab the `new_case` values at the start of the interval and end of the interval
1. Calculate `new_case_per_million` (or per capita?)start and end values by dividing each value by the state's population (stored statically locally or in a database)
1. Generate the `new_case_rate_pct_diff` by dividing the difference between `new_case_per_million_end` and `new_case_per_million_start` by `new_case_per_million_start`
1. Generate a score value (e.g 0/Green, 1/Yellow, 2/Red):
* **0/Green**: `new_case_rate_pct_diff < threshold_low` e.g. threshold_low = -.02 (-2%)
* **1/Yellow**: `threshold_low < new_case_rate_pct_diff < threshold_high` e.g. threshold_high = .02 (2%)
* **2/Red**: `new_case_rate_pct_diff > threshold_high`
### Inbound Request Parameters (Query Parameter)
* `state`
### Outbound Response Parameters (JSON document)
* `covid_score`: (0, 1, 2)
* `covid_data`: pass on the end interval covid API data (the web backend can use this or ignore it)
### Tasks
[ ] Review notes with team
### Issues
* What do we do if there is no data for the start and/or end dates?
* What type of visualization should we send back to the web API world?
* Send back contiguous states?
* Send back a live map of all 50 states?
* Update the disclaimer with additional language
### Nice to Haves
* Precalcuate scores for each state every day (e.g. cron like task that executes daily)
* Define a route where an authorized caller can update configuration values on the fly:
* `INT_START`
* `INT_END`
* `THRESHOLD_LOW`
* `THRESHOLD_HIGH`
* maybe the COVID API data element name (e.g. use new_death instead of new_case)
### Other
$newCasesRatePctDiff = (newCasesPerMillionEnd - newCasesPerMillionStart) / newCasesPerMillionStart$
or
$newCasesRatePctDiff = (newCasesPerCapitaEnd - newCasesPerCapitaStart) / newCasesPerCapitaStart$