From 40c3b72a6b906b9c4e86324f4a2e4390fd6997c5 Mon Sep 17 00:00:00 2001 From: ivan-aksamentov Date: Mon, 25 May 2020 14:53:08 +0200 Subject: [PATCH] feat: add parser for official case counts in Ontario, Canada --- data/Pipfile | 1 + data/case-counts/canada/CAN-Ontario.tsv | 219 ++++---- data/parsers/canada-ontario.py | 59 +++ data/parsers/canada.py | 5 +- data/sources.json | 5 + src/assets/data/caseCounts.json | 630 +++++++++++++----------- 6 files changed, 510 insertions(+), 409 deletions(-) create mode 100644 data/parsers/canada-ontario.py diff --git a/data/Pipfile b/data/Pipfile index dd7ff2cf1..77fb00f51 100644 --- a/data/Pipfile +++ b/data/Pipfile @@ -13,6 +13,7 @@ requests = "*" xlrd = "*" schemapi = {editable = true,git = "https://github.com/altair-viz/schemapi.git"} ipython = "*" +pandas [requires] python_version = "3.8" diff --git a/data/case-counts/canada/CAN-Ontario.tsv b/data/case-counts/canada/CAN-Ontario.tsv index 806007d98..eafb2a261 100644 --- a/data/case-counts/canada/CAN-Ontario.tsv +++ b/data/case-counts/canada/CAN-Ontario.tsv @@ -1,109 +1,110 @@ -# Data source: https://github.com/ishaberry/Covid19Canada -# Data provenance: Offical government data -# License: none specified -time cases deaths hospitalized icu recovered -2020-01-25 1 0 -2020-01-27 2 0 -2020-01-31 3 0 -2020-02-12 3 0 1 -2020-02-13 3 0 1 -2020-02-14 3 0 1 -2020-02-15 3 0 1 -2020-02-16 3 0 1 -2020-02-17 3 0 1 -2020-02-18 3 0 1 -2020-02-19 3 0 1 -2020-02-20 3 0 1 -2020-02-21 3 0 1 -2020-02-22 3 0 1 -2020-02-23 4 0 3 -2020-02-24 4 0 1 -2020-02-25 4 0 1 -2020-02-26 5 0 3 -2020-02-27 6 0 3 -2020-02-28 8 0 3 -2020-02-29 11 0 3 -2020-03-01 15 0 3 -2020-03-02 15 0 1 -2020-03-03 20 0 3 -2020-03-04 20 0 1 -2020-03-05 22 0 4 -2020-03-06 28 0 4 -2020-03-07 28 0 1 -2020-03-08 32 0 4 -2020-03-09 35 0 5 -2020-03-10 37 0 5 -2020-03-11 42 1 5 -2020-03-12 59 1 5 -2020-03-13 79 1 5 -2020-03-14 103 1 5 -2020-03-15 145 1 5 -2020-03-16 177 1 5 -2020-03-17 189 1 5 -2020-03-18 214 1 5 -2020-03-19 258 2 5 -2020-03-20 318 2 5 -2020-03-21 377 3 6 -2020-03-22 425 6 8 -2020-03-23 503 6 8 -2020-03-24 588 8 8 -2020-03-25 688 13 8 -2020-03-26 858 15 8 -2020-03-27 993 18 8 -2020-03-28 1144 19 8 -2020-03-29 1355 23 8 -2020-03-30 1706 34 431 -2020-03-31 1966 58 534 -2020-04-01 2851 71 689 -2020-04-02 3288 85 831 -2020-04-03 3686 103 1023 -2020-04-04 4021 133 1219 -2020-04-05 4441 141 1449 -2020-04-06 4845 162 1624 -2020-04-07 5391 189 1802 -2020-04-08 5838 211 2074 -2020-04-09 6397 233 2305 -2020-04-10 6804 268 2574 -2020-04-11 7293 289 2858 -2020-04-12 7726 302 3121 -2020-04-13 8220 332 3357 -2020-04-14 8780 397 3568 -2020-04-15 9302 445 3902 -2020-04-16 9821 498 4194 -2020-04-17 10447 533 4556 -2020-04-18 11008 571 4875 -2020-04-19 11539 602 5209 -2020-04-20 12214 651 5515 -2020-04-21 12706 697 5806 -2020-04-22 13418 757 6221 -2020-04-23 13995 798 6680 -2020-04-24 14485 850 7087 -2020-04-25 14913 898 7509 -2020-04-26 15400 945 8000 -2020-04-27 15856 1002 8525 -2020-04-28 16314 1050 8964 -2020-04-29 16777 1133 9612 -2020-04-30 17168 1176 10205 -2020-05-01 17720 1237 10825 -2020-05-02 18158 1264 11390 -2020-05-03 18401 1302 12005 -2020-05-04 18950 1426 12505 -2020-05-05 19330 1485 12779 -2020-05-06 19779 1544 13222 -2020-05-07 20260 1591 13569 -2020-05-08 20690 1648 13990 -2020-05-09 21010 1708 14383 -2020-05-10 21325 1726 14772 -2020-05-11 21687 1775 15131 -2020-05-12 22031 1838 15391 -2020-05-13 22388 1870 15845 -2020-05-14 22749 1902 16204 -2020-05-15 23142 1925 16641 -2020-05-16 23515 1959 17020 -2020-05-17 23845 1982 17360 -2020-05-18 24153 2002 17638 -2020-05-19 24655 2017 17898 -2020-05-20 25094 2066 18190 -2020-05-21 25498 2090 18509 -2020-05-22 25995 2112 18767 -2020-05-23 26466 2139 19146 +time cases deaths hospitalized icu recovered +2020-01-26 +2020-01-27 +2020-01-28 1 +2020-01-30 2 +2020-01-31 2 +2020-02-03 3 +2020-02-04 3 +2020-02-05 3 +2020-02-06 3 +2020-02-08 3 +2020-02-10 3 +2020-02-11 3 +2020-02-12 3 1 +2020-02-13 3 1 +2020-02-14 3 1 +2020-02-17 3 1 +2020-02-18 3 1 +2020-02-19 3 1 +2020-02-20 3 2 +2020-02-21 3 3 +2020-02-24 4 3 +2020-02-25 4 3 +2020-02-26 4 3 +2020-02-27 5 3 +2020-02-28 6 3 +2020-03-02 18 3 +2020-03-03 20 3 +2020-03-04 20 3 +2020-03-05 22 4 +2020-03-06 26 4 +2020-03-07 28 4 +2020-03-08 29 4 +2020-03-09 35 4 +2020-03-10 36 5 +2020-03-11 42 5 +2020-03-12 59 5 +2020-03-13 79 5 +2020-03-14 103 5 +2020-03-15 145 5 +2020-03-16 177 5 +2020-03-17 189 1 5 +2020-03-18 214 1 5 +2020-03-19 258 2 5 +2020-03-20 318 2 5 +2020-03-21 377 2 6 +2020-03-22 425 5 8 +2020-03-23 503 6 8 +2020-03-24 588 8 8 +2020-03-25 688 13 8 +2020-03-26 858 15 8 +2020-03-27 993 18 8 +2020-03-28 1144 19 8 +2020-03-29 1355 23 8 +2020-03-30 1706 23 431 +2020-03-31 1966 33 534 +2020-04-01 2392 37 674 +2020-04-02 2793 53 405 167 831 +2020-04-03 3255 67 462 194 1023 +2020-04-04 3630 94 506 196 1219 +2020-04-05 4038 119 523 200 1449 +2020-04-06 4347 132 589 216 1624 +2020-04-07 4726 153 614 233 1802 +2020-04-08 5276 174 605 246 2074 +2020-04-09 5759 200 632 264 2305 +2020-04-10 6237 222 673 260 2574 +2020-04-11 6648 253 691 257 2858 +2020-04-12 7049 274 738 261 3121 +2020-04-13 7470 291 760 263 3357 +2020-04-14 7953 334 769 255 3568 +2020-04-15 8447 385 795 254 3902 +2020-04-16 8961 423 807 248 4194 +2020-04-17 9525 478 829 245 4556 +2020-04-18 10010 514 828 250 4875 +2020-04-19 10578 553 809 247 5209 +2020-04-20 11184 584 802 247 5515 +2020-04-21 11735 622 859 250 5806 +2020-04-22 12245 659 878 243 6221 +2020-04-23 12879 713 887 233 6680 +2020-04-24 13519 763 910 243 7087 +2020-04-25 13995 811 925 245 7509 +2020-04-26 14432 835 938 252 8000 +2020-04-27 14856 892 945 241 8525 +2020-04-28 15381 951 957 239 8964 +2020-04-29 15728 996 977 235 9612 +2020-04-30 16187 1082 999 233 10205 +2020-05-01 16608 1121 1017 225 10825 +2020-05-02 17119 1176 977 221 11390 +2020-05-03 17553 1216 1010 232 12005 +2020-05-04 17923 1300 984 225 12505 +2020-05-05 18310 1361 1043 223 12779 +2020-05-06 18722 1429 1032 219 13222 +2020-05-07 19121 1477 1033 220 13569 +2020-05-08 19598 1540 1028 213 13990 +2020-05-09 19944 1599 1016 203 14383 +2020-05-10 20238 1634 961 195 14772 +2020-05-11 20546 1669 1027 194 15131 +2020-05-12 20907 1725 1025 192 15391 +2020-05-13 21236 1765 1018 189 15845 +2020-05-14 21581 1798 1026 184 16204 +2020-05-15 21922 1825 986 179 16641 +2020-05-16 22313 1858 975 180 17020 +2020-05-17 22653 1881 934 171 17360 +2020-05-18 22957 1904 972 174 17638 +2020-05-19 23384 1919 987 167 17898 +2020-05-20 23774 1962 991 160 18190 +2020-05-21 24187 1993 984 155 18509 +2020-05-22 24628 2021 961 153 18767 +2020-05-23 25040 2048 912 147 19146 +2020-05-24 25500 2073 878 148 19477 diff --git a/data/parsers/canada-ontario.py b/data/parsers/canada-ontario.py new file mode 100644 index 000000000..44aebe28e --- /dev/null +++ b/data/parsers/canada-ontario.py @@ -0,0 +1,59 @@ +import os +from typing import Dict + +import pandas as pd +import requests + +from parsers.utils import sanitize +from paths import BASE_PATH, TSV_DIR + +COUNTRY = 'canada' +REGION = 'CAN-Ontario' +URL = 'https://data.ontario.ca/api/3/action/datastore_search?resource_id=ed270bb8-340b-41f9-a7c6-e8ef587e6d11' +DESIRED_PAGE_SIZE = 1000 +cols = ['time', 'cases', 'deaths', 'hospitalized', 'icu', 'recovered'] +dcols = { + 'Reported Date': 'time', + 'Total Cases': 'cases', + 'Deaths': 'deaths', + 'Number of patients hospitalized with COVID-19': 'hospitalized', + 'Number of patients in ICU with COVID-19': 'icu', + 'Resolved': 'recovered', +} + + +def parse(): + real_page_size = DESIRED_PAGE_SIZE + url = f'{URL}&offset=0&limit={real_page_size}' + response: Dict = requests.get(url).json() + result = response.get('result') + + n_rows = int(result.get('total')) + real_page_size = int(result.get('limit')) + n_pages = int(n_rows / real_page_size) + 1 + + records = result.get('records') + df = pd.DataFrame.from_dict(records) + + for page in range(1, n_pages): + offset = page * real_page_size + response: Dict = requests.get(f'{URL}&offset={offset}&limit={real_page_size}').json() + new_records = response.get('result').get('records') + new_df = pd.DataFrame.from_dict(new_records) + df = df.append(new_df) + + df = df[dcols.keys()] + df = df.rename(columns=dcols) + df['time'] = df['time'].apply(pd.to_datetime) + df = df.set_index('time') + + assert len(df.index) == n_rows + + region = sanitize(REGION) + filepath = f'{BASE_PATH}/{TSV_DIR}/{COUNTRY}/{region}.tsv' + os.makedirs(os.path.dirname(filepath), exist_ok=True) + df.to_csv(filepath, sep='\t', na_rep='', float_format='%i', date_format='%Y-%m-%d') + + +if __name__ == '__main__': + parse() diff --git a/data/parsers/canada.py b/data/parsers/canada.py index d368c72ec..d0ae778d4 100644 --- a/data/parsers/canada.py +++ b/data/parsers/canada.py @@ -47,7 +47,10 @@ def parse(): elif state == 'CAN-PEI': state = 'CAN-Prince Edward Island' - + # Ontario is handled in its own parser `canada.ontario.py` + if state == 'CAN-Ontario': + continue + # Hack: recovered currently has no county-level data. county = None # county-level removed as requested in https://github.com/neherlab/covid19_scenarios_data/pull/42#issuecomment-603427339 diff --git a/data/sources.json b/data/sources.json index 756d9ddbf..82937bb0b 100644 --- a/data/sources.json +++ b/data/sources.json @@ -44,6 +44,11 @@ "dataProvenance": "Offical government data", "license": "none specified" }, + "canada-ontario": { + "primarySource": "https://data.ontario.ca/api/3/action/datastore_search?resource_id=ed270bb8-340b-41f9-a7c6-e8ef587e6d11", + "dataProvenance": "Ontario.ca - official website of the Ontario Government. Dataset: \"Confirmed positive cases of COVID19 in Ontario\".", + "license": "Open Government Licence – Ontario (https://www.ontario.ca/page/open-government-licence-ontario)" + }, "unitedstates": { "primarySource": "https://covidtracking.com/api/states/daily", "dataProvenance": "The COVID Tracking Project", diff --git a/src/assets/data/caseCounts.json b/src/assets/data/caseCounts.json index 1940c7803..9b206a102 100644 --- a/src/assets/data/caseCounts.json +++ b/src/assets/data/caseCounts.json @@ -45065,25 +45065,41 @@ }, { "data": [ + { + "cases": null, + "deaths": null, + "hospitalized": null, + "icu": null, + "recovered": null, + "time": "2020-01-26" + }, + { + "cases": null, + "deaths": null, + "hospitalized": null, + "icu": null, + "recovered": null, + "time": "2020-01-27" + }, { "cases": 1, - "deaths": 0, + "deaths": null, "hospitalized": null, "icu": null, "recovered": null, - "time": "2020-01-25" + "time": "2020-01-28" }, { "cases": 2, - "deaths": 0, + "deaths": null, "hospitalized": null, "icu": null, "recovered": null, - "time": "2020-01-27" + "time": "2020-01-30" }, { - "cases": 3, - "deaths": 0, + "cases": 2, + "deaths": null, "hospitalized": null, "icu": null, "recovered": null, @@ -45091,167 +45107,175 @@ }, { "cases": 3, - "deaths": 0, + "deaths": null, "hospitalized": null, "icu": null, - "recovered": 1, - "time": "2020-02-12" + "recovered": null, + "time": "2020-02-03" }, { "cases": 3, - "deaths": 0, + "deaths": null, "hospitalized": null, "icu": null, - "recovered": 1, - "time": "2020-02-13" + "recovered": null, + "time": "2020-02-04" }, { "cases": 3, - "deaths": 0, + "deaths": null, "hospitalized": null, "icu": null, - "recovered": 1, - "time": "2020-02-14" + "recovered": null, + "time": "2020-02-05" }, { "cases": 3, - "deaths": 0, + "deaths": null, "hospitalized": null, "icu": null, - "recovered": 1, - "time": "2020-02-15" + "recovered": null, + "time": "2020-02-06" }, { "cases": 3, - "deaths": 0, + "deaths": null, "hospitalized": null, "icu": null, - "recovered": 1, - "time": "2020-02-16" + "recovered": null, + "time": "2020-02-08" }, { "cases": 3, - "deaths": 0, + "deaths": null, "hospitalized": null, "icu": null, - "recovered": 1, - "time": "2020-02-17" + "recovered": null, + "time": "2020-02-10" }, { "cases": 3, - "deaths": 0, + "deaths": null, "hospitalized": null, "icu": null, - "recovered": 1, - "time": "2020-02-18" + "recovered": null, + "time": "2020-02-11" }, { "cases": 3, - "deaths": 0, + "deaths": null, "hospitalized": null, "icu": null, "recovered": 1, - "time": "2020-02-19" + "time": "2020-02-12" }, { "cases": 3, - "deaths": 0, + "deaths": null, "hospitalized": null, "icu": null, "recovered": 1, - "time": "2020-02-20" + "time": "2020-02-13" }, { "cases": 3, - "deaths": 0, + "deaths": null, "hospitalized": null, "icu": null, "recovered": 1, - "time": "2020-02-21" + "time": "2020-02-14" }, { "cases": 3, - "deaths": 0, + "deaths": null, "hospitalized": null, "icu": null, "recovered": 1, - "time": "2020-02-22" + "time": "2020-02-17" }, { - "cases": 4, - "deaths": 0, + "cases": 3, + "deaths": null, "hospitalized": null, "icu": null, - "recovered": 3, - "time": "2020-02-23" + "recovered": 1, + "time": "2020-02-18" }, { - "cases": 4, - "deaths": 0, + "cases": 3, + "deaths": null, "hospitalized": null, "icu": null, "recovered": 1, - "time": "2020-02-24" + "time": "2020-02-19" }, { - "cases": 4, - "deaths": 0, + "cases": 3, + "deaths": null, "hospitalized": null, "icu": null, - "recovered": 1, - "time": "2020-02-25" + "recovered": 2, + "time": "2020-02-20" }, { - "cases": 5, - "deaths": 0, + "cases": 3, + "deaths": null, "hospitalized": null, "icu": null, "recovered": 3, - "time": "2020-02-26" + "time": "2020-02-21" }, { - "cases": 6, - "deaths": 0, + "cases": 4, + "deaths": null, "hospitalized": null, "icu": null, "recovered": 3, - "time": "2020-02-27" + "time": "2020-02-24" }, { - "cases": 8, - "deaths": 0, + "cases": 4, + "deaths": null, "hospitalized": null, "icu": null, "recovered": 3, - "time": "2020-02-28" + "time": "2020-02-25" }, { - "cases": 11, - "deaths": 0, + "cases": 4, + "deaths": null, "hospitalized": null, "icu": null, "recovered": 3, - "time": "2020-02-29" + "time": "2020-02-26" }, { - "cases": 15, - "deaths": 0, + "cases": 5, + "deaths": null, "hospitalized": null, "icu": null, "recovered": 3, - "time": "2020-03-01" + "time": "2020-02-27" }, { - "cases": 15, - "deaths": 0, + "cases": 6, + "deaths": null, "hospitalized": null, "icu": null, - "recovered": 1, + "recovered": 3, + "time": "2020-02-28" + }, + { + "cases": 18, + "deaths": null, + "hospitalized": null, + "icu": null, + "recovered": 3, "time": "2020-03-02" }, { "cases": 20, - "deaths": 0, + "deaths": null, "hospitalized": null, "icu": null, "recovered": 3, @@ -45259,23 +45283,23 @@ }, { "cases": 20, - "deaths": 0, + "deaths": null, "hospitalized": null, "icu": null, - "recovered": 1, + "recovered": 3, "time": "2020-03-04" }, { "cases": 22, - "deaths": 0, + "deaths": null, "hospitalized": null, "icu": null, "recovered": 4, "time": "2020-03-05" }, { - "cases": 28, - "deaths": 0, + "cases": 26, + "deaths": null, "hospitalized": null, "icu": null, "recovered": 4, @@ -45283,15 +45307,15 @@ }, { "cases": 28, - "deaths": 0, + "deaths": null, "hospitalized": null, "icu": null, - "recovered": 1, + "recovered": 4, "time": "2020-03-07" }, { - "cases": 32, - "deaths": 0, + "cases": 29, + "deaths": null, "hospitalized": null, "icu": null, "recovered": 4, @@ -45299,15 +45323,15 @@ }, { "cases": 35, - "deaths": 0, + "deaths": null, "hospitalized": null, "icu": null, - "recovered": 5, + "recovered": 4, "time": "2020-03-09" }, { - "cases": 37, - "deaths": 0, + "cases": 36, + "deaths": null, "hospitalized": null, "icu": null, "recovered": 5, @@ -45315,7 +45339,7 @@ }, { "cases": 42, - "deaths": 1, + "deaths": null, "hospitalized": null, "icu": null, "recovered": 5, @@ -45323,7 +45347,7 @@ }, { "cases": 59, - "deaths": 1, + "deaths": null, "hospitalized": null, "icu": null, "recovered": 5, @@ -45331,7 +45355,7 @@ }, { "cases": 79, - "deaths": 1, + "deaths": null, "hospitalized": null, "icu": null, "recovered": 5, @@ -45339,7 +45363,7 @@ }, { "cases": 103, - "deaths": 1, + "deaths": null, "hospitalized": null, "icu": null, "recovered": 5, @@ -45347,7 +45371,7 @@ }, { "cases": 145, - "deaths": 1, + "deaths": null, "hospitalized": null, "icu": null, "recovered": 5, @@ -45355,7 +45379,7 @@ }, { "cases": 177, - "deaths": 1, + "deaths": null, "hospitalized": null, "icu": null, "recovered": 5, @@ -45395,7 +45419,7 @@ }, { "cases": 377, - "deaths": 3, + "deaths": 2, "hospitalized": null, "icu": null, "recovered": 6, @@ -45403,7 +45427,7 @@ }, { "cases": 425, - "deaths": 6, + "deaths": 5, "hospitalized": null, "icu": null, "recovered": 8, @@ -45467,7 +45491,7 @@ }, { "cases": 1706, - "deaths": 34, + "deaths": 23, "hospitalized": null, "icu": null, "recovered": 431, @@ -45475,435 +45499,443 @@ }, { "cases": 1966, - "deaths": 58, + "deaths": 33, "hospitalized": null, "icu": null, "recovered": 534, "time": "2020-03-31" }, { - "cases": 2851, - "deaths": 71, + "cases": 2392, + "deaths": 37, "hospitalized": null, "icu": null, - "recovered": 689, + "recovered": 674, "time": "2020-04-01" }, { - "cases": 3288, - "deaths": 85, - "hospitalized": null, - "icu": null, + "cases": 2793, + "deaths": 53, + "hospitalized": 405, + "icu": 167, "recovered": 831, "time": "2020-04-02" }, { - "cases": 3686, - "deaths": 103, - "hospitalized": null, - "icu": null, + "cases": 3255, + "deaths": 67, + "hospitalized": 462, + "icu": 194, "recovered": 1023, "time": "2020-04-03" }, { - "cases": 4021, - "deaths": 133, - "hospitalized": null, - "icu": null, + "cases": 3630, + "deaths": 94, + "hospitalized": 506, + "icu": 196, "recovered": 1219, "time": "2020-04-04" }, { - "cases": 4441, - "deaths": 141, - "hospitalized": null, - "icu": null, + "cases": 4038, + "deaths": 119, + "hospitalized": 523, + "icu": 200, "recovered": 1449, "time": "2020-04-05" }, { - "cases": 4845, - "deaths": 162, - "hospitalized": null, - "icu": null, + "cases": 4347, + "deaths": 132, + "hospitalized": 589, + "icu": 216, "recovered": 1624, "time": "2020-04-06" }, { - "cases": 5391, - "deaths": 189, - "hospitalized": null, - "icu": null, + "cases": 4726, + "deaths": 153, + "hospitalized": 614, + "icu": 233, "recovered": 1802, "time": "2020-04-07" }, { - "cases": 5838, - "deaths": 211, - "hospitalized": null, - "icu": null, + "cases": 5276, + "deaths": 174, + "hospitalized": 605, + "icu": 246, "recovered": 2074, "time": "2020-04-08" }, { - "cases": 6397, - "deaths": 233, - "hospitalized": null, - "icu": null, + "cases": 5759, + "deaths": 200, + "hospitalized": 632, + "icu": 264, "recovered": 2305, "time": "2020-04-09" }, { - "cases": 6804, - "deaths": 268, - "hospitalized": null, - "icu": null, + "cases": 6237, + "deaths": 222, + "hospitalized": 673, + "icu": 260, "recovered": 2574, "time": "2020-04-10" }, { - "cases": 7293, - "deaths": 289, - "hospitalized": null, - "icu": null, + "cases": 6648, + "deaths": 253, + "hospitalized": 691, + "icu": 257, "recovered": 2858, "time": "2020-04-11" }, { - "cases": 7726, - "deaths": 302, - "hospitalized": null, - "icu": null, + "cases": 7049, + "deaths": 274, + "hospitalized": 738, + "icu": 261, "recovered": 3121, "time": "2020-04-12" }, { - "cases": 8220, - "deaths": 332, - "hospitalized": null, - "icu": null, + "cases": 7470, + "deaths": 291, + "hospitalized": 760, + "icu": 263, "recovered": 3357, "time": "2020-04-13" }, { - "cases": 8780, - "deaths": 397, - "hospitalized": null, - "icu": null, + "cases": 7953, + "deaths": 334, + "hospitalized": 769, + "icu": 255, "recovered": 3568, "time": "2020-04-14" }, { - "cases": 9302, - "deaths": 445, - "hospitalized": null, - "icu": null, + "cases": 8447, + "deaths": 385, + "hospitalized": 795, + "icu": 254, "recovered": 3902, "time": "2020-04-15" }, { - "cases": 9821, - "deaths": 498, - "hospitalized": null, - "icu": null, + "cases": 8961, + "deaths": 423, + "hospitalized": 807, + "icu": 248, "recovered": 4194, "time": "2020-04-16" }, { - "cases": 10447, - "deaths": 533, - "hospitalized": null, - "icu": null, + "cases": 9525, + "deaths": 478, + "hospitalized": 829, + "icu": 245, "recovered": 4556, "time": "2020-04-17" }, { - "cases": 11008, - "deaths": 571, - "hospitalized": null, - "icu": null, + "cases": 10010, + "deaths": 514, + "hospitalized": 828, + "icu": 250, "recovered": 4875, "time": "2020-04-18" }, { - "cases": 11539, - "deaths": 602, - "hospitalized": null, - "icu": null, + "cases": 10578, + "deaths": 553, + "hospitalized": 809, + "icu": 247, "recovered": 5209, "time": "2020-04-19" }, { - "cases": 12214, - "deaths": 651, - "hospitalized": null, - "icu": null, + "cases": 11184, + "deaths": 584, + "hospitalized": 802, + "icu": 247, "recovered": 5515, "time": "2020-04-20" }, { - "cases": 12706, - "deaths": 697, - "hospitalized": null, - "icu": null, + "cases": 11735, + "deaths": 622, + "hospitalized": 859, + "icu": 250, "recovered": 5806, "time": "2020-04-21" }, { - "cases": 13418, - "deaths": 757, - "hospitalized": null, - "icu": null, + "cases": 12245, + "deaths": 659, + "hospitalized": 878, + "icu": 243, "recovered": 6221, "time": "2020-04-22" }, { - "cases": 13995, - "deaths": 798, - "hospitalized": null, - "icu": null, + "cases": 12879, + "deaths": 713, + "hospitalized": 887, + "icu": 233, "recovered": 6680, "time": "2020-04-23" }, { - "cases": 14485, - "deaths": 850, - "hospitalized": null, - "icu": null, + "cases": 13519, + "deaths": 763, + "hospitalized": 910, + "icu": 243, "recovered": 7087, "time": "2020-04-24" }, { - "cases": 14913, - "deaths": 898, - "hospitalized": null, - "icu": null, + "cases": 13995, + "deaths": 811, + "hospitalized": 925, + "icu": 245, "recovered": 7509, "time": "2020-04-25" }, { - "cases": 15400, - "deaths": 945, - "hospitalized": null, - "icu": null, + "cases": 14432, + "deaths": 835, + "hospitalized": 938, + "icu": 252, "recovered": 8000, "time": "2020-04-26" }, { - "cases": 15856, - "deaths": 1002, - "hospitalized": null, - "icu": null, + "cases": 14856, + "deaths": 892, + "hospitalized": 945, + "icu": 241, "recovered": 8525, "time": "2020-04-27" }, { - "cases": 16314, - "deaths": 1050, - "hospitalized": null, - "icu": null, + "cases": 15381, + "deaths": 951, + "hospitalized": 957, + "icu": 239, "recovered": 8964, "time": "2020-04-28" }, { - "cases": 16777, - "deaths": 1133, - "hospitalized": null, - "icu": null, + "cases": 15728, + "deaths": 996, + "hospitalized": 977, + "icu": 235, "recovered": 9612, "time": "2020-04-29" }, { - "cases": 17168, - "deaths": 1176, - "hospitalized": null, - "icu": null, + "cases": 16187, + "deaths": 1082, + "hospitalized": 999, + "icu": 233, "recovered": 10205, "time": "2020-04-30" }, { - "cases": 17720, - "deaths": 1237, - "hospitalized": null, - "icu": null, + "cases": 16608, + "deaths": 1121, + "hospitalized": 1017, + "icu": 225, "recovered": 10825, "time": "2020-05-01" }, { - "cases": 18158, - "deaths": 1264, - "hospitalized": null, - "icu": null, + "cases": 17119, + "deaths": 1176, + "hospitalized": 977, + "icu": 221, "recovered": 11390, "time": "2020-05-02" }, { - "cases": 18401, - "deaths": 1302, - "hospitalized": null, - "icu": null, + "cases": 17553, + "deaths": 1216, + "hospitalized": 1010, + "icu": 232, "recovered": 12005, "time": "2020-05-03" }, { - "cases": 18950, - "deaths": 1426, - "hospitalized": null, - "icu": null, + "cases": 17923, + "deaths": 1300, + "hospitalized": 984, + "icu": 225, "recovered": 12505, "time": "2020-05-04" }, { - "cases": 19330, - "deaths": 1485, - "hospitalized": null, - "icu": null, + "cases": 18310, + "deaths": 1361, + "hospitalized": 1043, + "icu": 223, "recovered": 12779, "time": "2020-05-05" }, { - "cases": 19779, - "deaths": 1544, - "hospitalized": null, - "icu": null, + "cases": 18722, + "deaths": 1429, + "hospitalized": 1032, + "icu": 219, "recovered": 13222, "time": "2020-05-06" }, { - "cases": 20260, - "deaths": 1591, - "hospitalized": null, - "icu": null, + "cases": 19121, + "deaths": 1477, + "hospitalized": 1033, + "icu": 220, "recovered": 13569, "time": "2020-05-07" }, { - "cases": 20690, - "deaths": 1648, - "hospitalized": null, - "icu": null, + "cases": 19598, + "deaths": 1540, + "hospitalized": 1028, + "icu": 213, "recovered": 13990, "time": "2020-05-08" }, { - "cases": 21010, - "deaths": 1708, - "hospitalized": null, - "icu": null, + "cases": 19944, + "deaths": 1599, + "hospitalized": 1016, + "icu": 203, "recovered": 14383, "time": "2020-05-09" }, { - "cases": 21325, - "deaths": 1726, - "hospitalized": null, - "icu": null, + "cases": 20238, + "deaths": 1634, + "hospitalized": 961, + "icu": 195, "recovered": 14772, "time": "2020-05-10" }, { - "cases": 21687, - "deaths": 1775, - "hospitalized": null, - "icu": null, + "cases": 20546, + "deaths": 1669, + "hospitalized": 1027, + "icu": 194, "recovered": 15131, "time": "2020-05-11" }, { - "cases": 22031, - "deaths": 1838, - "hospitalized": null, - "icu": null, + "cases": 20907, + "deaths": 1725, + "hospitalized": 1025, + "icu": 192, "recovered": 15391, "time": "2020-05-12" }, { - "cases": 22388, - "deaths": 1870, - "hospitalized": null, - "icu": null, + "cases": 21236, + "deaths": 1765, + "hospitalized": 1018, + "icu": 189, "recovered": 15845, "time": "2020-05-13" }, { - "cases": 22749, - "deaths": 1902, - "hospitalized": null, - "icu": null, + "cases": 21581, + "deaths": 1798, + "hospitalized": 1026, + "icu": 184, "recovered": 16204, "time": "2020-05-14" }, { - "cases": 23142, - "deaths": 1925, - "hospitalized": null, - "icu": null, + "cases": 21922, + "deaths": 1825, + "hospitalized": 986, + "icu": 179, "recovered": 16641, "time": "2020-05-15" }, { - "cases": 23515, - "deaths": 1959, - "hospitalized": null, - "icu": null, + "cases": 22313, + "deaths": 1858, + "hospitalized": 975, + "icu": 180, "recovered": 17020, "time": "2020-05-16" }, { - "cases": 23845, - "deaths": 1982, - "hospitalized": null, - "icu": null, + "cases": 22653, + "deaths": 1881, + "hospitalized": 934, + "icu": 171, "recovered": 17360, "time": "2020-05-17" }, { - "cases": 24153, - "deaths": 2002, - "hospitalized": null, - "icu": null, + "cases": 22957, + "deaths": 1904, + "hospitalized": 972, + "icu": 174, "recovered": 17638, "time": "2020-05-18" }, { - "cases": 24655, - "deaths": 2017, - "hospitalized": null, - "icu": null, + "cases": 23384, + "deaths": 1919, + "hospitalized": 987, + "icu": 167, "recovered": 17898, "time": "2020-05-19" }, { - "cases": 25094, - "deaths": 2066, - "hospitalized": null, - "icu": null, + "cases": 23774, + "deaths": 1962, + "hospitalized": 991, + "icu": 160, "recovered": 18190, "time": "2020-05-20" }, { - "cases": 25498, - "deaths": 2090, - "hospitalized": null, - "icu": null, + "cases": 24187, + "deaths": 1993, + "hospitalized": 984, + "icu": 155, "recovered": 18509, "time": "2020-05-21" }, { - "cases": 25995, - "deaths": 2112, - "hospitalized": null, - "icu": null, + "cases": 24628, + "deaths": 2021, + "hospitalized": 961, + "icu": 153, "recovered": 18767, "time": "2020-05-22" }, { - "cases": 26466, - "deaths": 2139, - "hospitalized": null, - "icu": null, + "cases": 25040, + "deaths": 2048, + "hospitalized": 912, + "icu": 147, "recovered": 19146, "time": "2020-05-23" + }, + { + "cases": 25500, + "deaths": 2073, + "hospitalized": 878, + "icu": 148, + "recovered": 19477, + "time": "2020-05-24" } ], "name": "CAN-Ontario"