diff --git a/.bumpversion.cfg b/.bumpversion.cfg
index 94fcc59cf..4562fa94a 100644
--- a/.bumpversion.cfg
+++ b/.bumpversion.cfg
@@ -1,5 +1,5 @@
[bumpversion]
-current_version = 4.1.12
+current_version = 4.1.15
commit = False
tag = False
diff --git a/.env.example b/.env.example
index 51cac1ae4..0ffe2a1e8 100644
--- a/.env.example
+++ b/.env.example
@@ -4,3 +4,6 @@ FLASK_SECRET=abc
#API_KEY_REQUIRED_STARTING_AT=2021-07-30
API_KEY_ADMIN_PASSWORD=abc
API_KEY_REGISTER_WEBHOOK_TOKEN=abc
+
+# Sentry
+# If setting a Sentry DSN, note that the URL should NOT be quoted!
diff --git a/.github/workflows/performance-tests-one-time.yml b/.github/workflows/performance-tests-one-time.yml
index f11c02c4d..effda8e8c 100644
--- a/.github/workflows/performance-tests-one-time.yml
+++ b/.github/workflows/performance-tests-one-time.yml
@@ -1,9 +1,9 @@
-name: One-time performance testing - 26th October 2023
+name: One-time performance testing - 8th November 2023
-# Run "At every 30th minute on day-of-month 26 in October"
+# Run "At every 30th minute on day-of-month 8 in November"
on:
schedule:
- - cron: '*/30 * 26 10 *'
+ - cron: '*/30 * 8 11 *'
# Add some extra perms to comment on a PR
permissions:
@@ -65,6 +65,8 @@ jobs:
path: delphi-admin
- name: Build & run Locust
continue-on-error: true # sometimes ~2-5 queries fail, we shouldn't end the run if that's the case
+ env:
+ PERFTEST_API_KEY: ${{secrets.PERFTEST_API_KEY}}
run: |
cd delphi-admin/load-testing/locust
docker build -t locust .
diff --git a/.github/workflows/performance-tests.yml b/.github/workflows/performance-tests.yml
index ec30856d0..be87de13f 100644
--- a/.github/workflows/performance-tests.yml
+++ b/.github/workflows/performance-tests.yml
@@ -73,6 +73,8 @@ jobs:
path: delphi-admin
- name: Build & run Locust
continue-on-error: true # sometimes ~2-5 queries fail, we shouldn't end the run if that's the case
+ env:
+ PERFTEST_API_KEY: ${{secrets.PERFTEST_API_KEY}}
run: |
cd delphi-admin/load-testing/locust
docker build -t locust .
diff --git a/dev/local/Makefile b/dev/local/Makefile
index 84c308257..d0854a064 100644
--- a/dev/local/Makefile
+++ b/dev/local/Makefile
@@ -77,6 +77,7 @@ LOG_REDIS:=delphi_redis_instance_$(NOW).log
WEB_CONTAINER_ID:=$(shell docker ps -q --filter 'name=delphi_web_epidata')
DATABASE_CONTAINER_ID:=$(shell docker ps -q --filter 'name=delphi_database_epidata')
REDIS_CONTAINER_ID:=$(shell docker ps -q --filter 'name=delphi_redis')
+ENV_FILE:=repos/delphi/delphi-epidata/.env
M1=
ifeq ($(shell uname -smp), Darwin arm64 arm)
@@ -104,8 +105,10 @@ web:
@# Run the web server
@# MODULE_NAME specifies the location of the `app` variable, the actual WSGI application object to run.
@# see https://github.com/tiangolo/meinheld-gunicorn-docker#module_name
+ @touch $(ENV_FILE)
@docker run --rm -p 127.0.0.1:10080:80 \
$(M1) \
+ --env-file $(ENV_FILE) \
--env "MODULE_NAME=delphi.epidata.server.main" \
--env "SQLALCHEMY_DATABASE_URI=$(sqlalchemy_uri)" \
--env "FLASK_SECRET=abc" --env "FLASK_PREFIX=/epidata" --env "LOG_DEBUG" \
diff --git a/dev/local/setup.cfg b/dev/local/setup.cfg
index c3ac94651..db4a5125b 100644
--- a/dev/local/setup.cfg
+++ b/dev/local/setup.cfg
@@ -1,6 +1,6 @@
[metadata]
name = Delphi Development
-version = 4.1.12
+version = 4.1.15
[options]
packages =
diff --git a/devops/Dockerfile b/devops/Dockerfile
index 97dc0e2c8..3c5ff2672 100644
--- a/devops/Dockerfile
+++ b/devops/Dockerfile
@@ -7,7 +7,6 @@ FROM tiangolo/meinheld-gunicorn:python3.8
LABEL org.opencontainers.image.source=https://github.com/cmu-delphi/delphi-epidata
COPY ./devops/gunicorn_conf.py /app
-COPY ./devops/start_wrapper.sh /
RUN mkdir -p /app/delphi/epidata
COPY ./src/server /app/delphi/epidata/server
COPY ./src/common /app/delphi/epidata/common
@@ -18,7 +17,6 @@ COPY requirements.api.txt /app/requirements_also.txt
RUN ln -s -f /usr/share/zoneinfo/America/New_York /etc/localtime \
&& rm -rf /app/delphi/epidata/__pycache__ \
&& chmod -R o+r /app/delphi/epidata \
- && chmod 755 /start_wrapper.sh \
&& pip install --no-cache-dir -r /tmp/requirements.txt -r requirements_also.txt
# the file /tmp/requirements.txt is created in the parent docker definition. (see:
# https://github.com/tiangolo/meinheld-gunicorn-docker/blob/master/docker-images/python3.8.dockerfile#L5 )
@@ -28,4 +26,4 @@ RUN ln -s -f /usr/share/zoneinfo/America/New_York /etc/localtime \
ENV PYTHONUNBUFFERED 1
ENTRYPOINT [ "/entrypoint.sh" ]
-CMD [ "/start_wrapper.sh" ]
+CMD [ "/start.sh" ]
diff --git a/devops/start_wrapper.sh b/devops/start_wrapper.sh
deleted file mode 100644
index a5192d6e3..000000000
--- a/devops/start_wrapper.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env sh
-set -e
-
-# If a New Relic license key is found then we start with custom New Relic
-# commands, otherwise we start via start.sh.
-if [ -z "${NEW_RELIC_LICENSE_KEY}" ]; then
- sh /start.sh
-else
- newrelic-admin run-program /start.sh
-fi
diff --git a/docs/epidata_development.md b/docs/epidata_development.md
index 29a0fdde7..c8c35e11f 100644
--- a/docs/epidata_development.md
+++ b/docs/epidata_development.md
@@ -388,3 +388,13 @@ The command above maps two local directories into the container:
- `/repos/delphi/delphi-epidata/src`: Just the source code, which forms the
container's `delphi.epidata` python package.
+## instrumentation with Sentry
+
+Delphi uses [Sentry](https://sentry.io/welcome/) in production for debugging, APM, and other observability purposes. You can instrument your local environment if you want to take advantage of Sentry's features during the development process. In most cases this option is available to internal Delphi team members only.
+
+The bare minimum to set up instrumentation is to supply the DSN for the [epidata-api](https://cmu-delphi.sentry.io/projects/epidata-api/?project=4506123377442816) Sentry project to the application environment.
+
+- You can get the DSN from the Sentry [project's keys config](https://cmu-delphi.sentry.io/settings/projects/epidata-api/keys/), or by asking someone in the prodsys, DevOps, or sysadmin space.
+- Once you have the DSN, add it to your local `.env` file and rebuild your containers to start sending telemetry to Sentry.
+
+Additional internal documentation for Sentry can be found [here](https://bookstack.delphi.cmu.edu/books/systems-handbook/page/sentry).
diff --git a/docs/symptom-survey/publications.md b/docs/symptom-survey/publications.md
index 149e5d379..723148e7a 100644
--- a/docs/symptom-survey/publications.md
+++ b/docs/symptom-survey/publications.md
@@ -26,6 +26,16 @@ Pandemic"](https://www.pnas.org/topic/548) in *PNAS*:
Research publications using the survey data include:
+- de Vries, M., Kim, J.Y. & Han, H. (2023). [The unequal landscape of civic
+ opportunity in America](https://doi.org/10.1038/s41562-023-01743-1). *Nature
+ Human Behavior*.
+- E. Tuzhilina, T. J. Hastie, D. J. McDonald, J. K. Tay & R. Tibshirani (2023).
+ [Smooth multi-period forecasting with application to prediction of COVID-19
+ cases](https://doi.org/10.1080/10618600.2023.2285337). *Journal of Computational
+ and Graphical Statistics*.
+- W. Dempsey (2023). [Addressing selection bias and measurement error in
+ COVID-19 case count data using auxiliary information](https://doi.org/10.1214/23-AOAS1744).
+ *Annals of Applied Statistics* 17 (4), 2903-2923.
- Ma, M.Z., Chen, S.X. (2023). [Beyond the surface: accounting for confounders
in understanding the link between collectivism and COVID-19 pandemic in the
United States](https://doi.org/10.1186/s12889-023-16384-2). *BMC Public
@@ -33,7 +43,7 @@ Research publications using the survey data include:
- C.K. Ettman, E. Badillo Goicoechea, and E.A. Stuart (2023). [Evolution of
depression and anxiety over the COVID-19 pandemic and across demographic
groups in a large sample of U.S. adults](https://doi.org/10.1016/j.focus.2023.100140).
- *AJPM Focus*.
+ *AJPM Focus* 2 (4), 100140.
- M. Rubinstein, Z. Branson, and E.H. Kennedy (2023). [Heterogeneous
interventional effects with multiple mediators: Semiparametric and
nonparametric approaches](https://doi.org/10.1515/jci-2022-0070). *Journal of
diff --git a/integrations/acquisition/covid_hosp/state_daily/test_scenarios.py b/integrations/acquisition/covid_hosp/state_daily/test_scenarios.py
index 8636295bc..651f3aa7e 100644
--- a/integrations/acquisition/covid_hosp/state_daily/test_scenarios.py
+++ b/integrations/acquisition/covid_hosp/state_daily/test_scenarios.py
@@ -47,62 +47,122 @@ def setUp(self):
cur.execute('delete from api_user')
cur.execute('insert into api_user(api_key, email) values("key", "email")')
- @freeze_time("2021-03-16")
- def test_acquire_dataset(self):
- """Acquire a new dataset."""
+ def get_modified_dataset(self, critical_staffing_shortage_today_yes, reporting_cutoff_start):
+ """Get a simplified version of a test dataset.
- # make sure the data does not yet exist
- with self.subTest(name='no data yet'):
- response = Epidata.covid_hosp('MA', Epidata.range(20200101, 20210101))
- self.assertEqual(response['result'], -2, response)
+ Only WY data is modified. The issue date is specified in the metadata file.
+ """
+ df = self.test_utils.load_sample_dataset()
+ df_new = pd.DataFrame(df[df["state"] == "WY"], columns=df.columns).reset_index(drop=True)
+ df_new["critical_staffing_shortage_today_yes"] = critical_staffing_shortage_today_yes
+ df_new["reporting_cutoff_start"] = reporting_cutoff_start
+ return df_new
- # acquire sample data into local database
- # mock out network calls to external hosts
- with self.subTest(name='first acquisition'), \
- patch.object(Network, 'fetch_metadata', return_value=self.test_utils.load_sample_metadata()) as mock_fetch_meta, \
- patch.object(Network, 'fetch_dataset', side_effect=[self.test_utils.load_sample_dataset("dataset0.csv"), # dataset for 3/13
- self.test_utils.load_sample_dataset("dataset0.csv"), # first dataset for 3/15
- self.test_utils.load_sample_dataset()] # second dataset for 3/15
- ) as mock_fetch:
- acquired = Update.run()
- self.assertTrue(acquired)
- self.assertEqual(mock_fetch_meta.call_count, 1)
-
- # make sure the data now exists
- with self.subTest(name='initial data checks'):
- response = Epidata.covid_hosp('WY', Epidata.range(20200101, 20210101))
- self.assertEqual(response['result'], 1)
- self.assertEqual(len(response['epidata']), 1)
- row = response['epidata'][0]
- self.assertEqual(row['state'], 'WY')
- self.assertEqual(row['date'], 20201209)
- self.assertEqual(row['issue'], 20210315)
- self.assertEqual(row['critical_staffing_shortage_today_yes'], 8)
- self.assertEqual(row['total_patients_hospitalized_confirmed_influenza_covid_coverage'], 56)
- actual = row['inpatient_bed_covid_utilization']
- expected = 0.11729857819905214
- self.assertAlmostEqual(actual, expected)
- self.assertIsNone(row['critical_staffing_shortage_today_no'])
-
- # expect 61 fields per row (63 database columns, except `id` and `record_type`)
- self.assertEqual(len(row), 118)
-
- with self.subTest(name='all date batches acquired'):
- response = Epidata.covid_hosp('WY', Epidata.range(20200101, 20210101), issues=20210313)
- self.assertEqual(response['result'], 1)
-
- # re-acquisition of the same dataset should be a no-op
- with self.subTest(name='second acquisition'), \
- patch.object(Network, 'fetch_metadata', return_value=self.test_utils.load_sample_metadata()) as mock_fetch_meta, \
- patch.object(Network, 'fetch_dataset', return_value=self.test_utils.load_sample_dataset()) as mock_fetch:
- acquired = Update.run()
- self.assertFalse(acquired)
+ def test_acquire_dataset(self):
+ """Acquire a new dataset."""
- # make sure the data still exists
- with self.subTest(name='final data checks'):
- response = Epidata.covid_hosp('WY', Epidata.range(20200101, 20210101))
- self.assertEqual(response['result'], 1)
- self.assertEqual(len(response['epidata']), 1)
+ with freeze_time("2021-03-15"):
+ # make sure the data does not yet exist
+ with self.subTest(name='no data yet'):
+ response = Epidata.covid_hosp('MA', Epidata.range(20200101, 20210101))
+ self.assertEqual(response['result'], -2, response)
+
+ # acquire sample data into local database
+ # mock out network calls to external hosts
+ # issues: 3/13, 3/15
+ with self.subTest(name='first acquisition'), \
+ patch.object(Network, 'fetch_metadata',
+ return_value=self.test_utils.load_sample_metadata("metadata.csv")) as mock_fetch_meta, \
+ patch.object(Network, 'fetch_dataset', side_effect=[
+ self.test_utils.load_sample_dataset(),
+ self.test_utils.load_sample_dataset()
+ ]) as mock_fetch:
+ acquired = Update.run()
+ self.assertTrue(acquired)
+ self.assertEqual(mock_fetch_meta.call_count, 1)
+
+ # make sure the data now exists
+ with self.subTest(name='initial data checks'):
+ response = Epidata.covid_hosp('WY', Epidata.range(20200101, 20210101))
+ self.assertEqual(response['result'], 1)
+ self.assertEqual(len(response['epidata']), 1)
+ row = response['epidata'][0]
+ self.assertEqual(row['state'], 'WY')
+ self.assertEqual(row['date'], 20201209)
+ self.assertEqual(row['issue'], 20210315) # include today's data by default
+ self.assertEqual(row['critical_staffing_shortage_today_yes'], 8)
+ self.assertEqual(row['total_patients_hospitalized_confirmed_influenza_covid_coverage'], 56)
+ self.assertIsNone(row['critical_staffing_shortage_today_no'])
+
+ # expect 61 fields per row (63 database columns, except `id` and `record_type`)
+ self.assertEqual(len(row), 118)
+
+ with self.subTest(name='all date batches acquired'):
+ response = Epidata.covid_hosp('WY', Epidata.range(20200101, 20210101), issues=20210313)
+ self.assertEqual(response['result'], 1)
+
+ # re-acquisition of the same dataset should be a no-op
+ # issues: 3/13, 3/15
+ with self.subTest(name='second acquisition'), \
+ patch.object(Network, 'fetch_metadata',
+ return_value=self.test_utils.load_sample_metadata("metadata.csv")) as mock_fetch_meta, \
+ patch.object(Network, 'fetch_dataset', side_effect=[
+ self.test_utils.load_sample_dataset(),
+ self.test_utils.load_sample_dataset()
+ ]) as mock_fetch:
+ acquired = Update.run()
+ self.assertFalse(acquired)
+
+ # make sure the data still exists
+ response = Epidata.covid_hosp('WY', Epidata.range(20200101, 20210101))
+ self.assertEqual(response['result'], 1)
+ self.assertEqual(len(response['epidata']), 1)
+
+ with freeze_time("2021-03-16"):
+ # simulate issue posted after yesterday's run
+ with self.subTest(name='late issue posted'), \
+ patch.object(Network, 'fetch_metadata',
+ return_value=self.test_utils.load_sample_metadata("metadata2.csv")) as mock_fetch_meta, \
+ patch.object(Network, 'fetch_dataset', side_effect=[
+ self.get_modified_dataset(critical_staffing_shortage_today_yes = 9, reporting_cutoff_start="2020-12-09"),
+ self.get_modified_dataset(critical_staffing_shortage_today_yes = 10, reporting_cutoff_start="2020-12-09"),
+ self.get_modified_dataset(critical_staffing_shortage_today_yes = 11, reporting_cutoff_start="2020-12-10"),
+ self.get_modified_dataset(critical_staffing_shortage_today_yes = 12, reporting_cutoff_start="2020-12-10"),
+ ]) as mock_fetch:
+ acquired = Update.run()
+ self.assertTrue(acquired)
+ self.assertEqual(mock_fetch_meta.call_count, 1)
+
+ # make sure everything was filed correctly
+ with self.subTest(name='late issue data checks'):
+ response = Epidata.covid_hosp('WY', Epidata.range(20200101, 20210101))
+ self.assertEqual(response['result'], 1)
+ self.assertEqual(len(response['epidata']), 2)
+
+ # should have data from 03-15 00:00:01AM
+ row = response['epidata'][0]
+ self.assertEqual(row['state'], 'WY')
+ self.assertEqual(row['date'], 20201209)
+ self.assertEqual(row['issue'], 20210315) # include today's data by default
+ self.assertEqual(row['critical_staffing_shortage_today_yes'], 10)
+ self.assertEqual(row['total_patients_hospitalized_confirmed_influenza_covid_coverage'], 56)
+ self.assertIsNone(row['critical_staffing_shortage_today_no'])
+
+ # should have data from 03-16 00:00:01AM
+ row = response['epidata'][1]
+ self.assertEqual(row['state'], 'WY')
+ self.assertEqual(row['date'], 20201210)
+ self.assertEqual(row['issue'], 20210316) # include today's data by default
+ self.assertEqual(row['critical_staffing_shortage_today_yes'], 12)
+ self.assertEqual(row['total_patients_hospitalized_confirmed_influenza_covid_coverage'], 56)
+ self.assertIsNone(row['critical_staffing_shortage_today_no'])
+
+ # expect 61 fields per row (63 database columns, except `id` and `record_type`)
+ self.assertEqual(len(row), 118)
+
+ with self.subTest(name='all date batches acquired'):
+ response = Epidata.covid_hosp('WY', Epidata.range(20200101, 20210101), issues=20210316)
+ self.assertEqual(response['result'], 1)
@freeze_time("2021-03-16")
@@ -121,7 +181,7 @@ def test_acquire_specific_issue(self):
self.assertEqual(pre_max_issue, pd.Timestamp('1900-01-01 00:00:00'))
with self.subTest(name='first acquisition'), \
patch.object(Network, 'fetch_metadata', return_value=self.test_utils.load_sample_metadata()) as mock_fetch_meta, \
- patch.object(Network, 'fetch_dataset', side_effect=[self.test_utils.load_sample_dataset("dataset0.csv")]
+ patch.object(Network, 'fetch_dataset', side_effect=[self.test_utils.load_sample_dataset()]
) as mock_fetch:
acquired = Utils.update_dataset(Database,
Network,
diff --git a/integrations/server/test_api_keys.py b/integrations/server/test_api_keys.py
index 8faf1beba..91fb11a57 100644
--- a/integrations/server/test_api_keys.py
+++ b/integrations/server/test_api_keys.py
@@ -62,7 +62,7 @@ def test_multiples_allowed_signal_two_multiples(self):
def test_multiples_non_allowed_signal(self):
"""Test requests with 2 multiples and non-allowed dashboard signal"""
params = {
- "signal": "hospital-admissions:smoothed_adj_covid19_from_claims",
+ "signal": "hospital-admissions:smoothed_covid19",
"time_type": "day",
"geo_type": "state",
"geo_value": "pa,ny",
@@ -76,7 +76,7 @@ def test_multiples_non_allowed_signal(self):
def test_multiples_mixed_allowed_signal_two_multiples(self):
"""Test requests with 2 multiples and mixed-allowed dashboard signal"""
params = {
- "signal": "fb-survey:smoothed_wcli,hospital-admissions:smoothed_adj_covid19_from_claims",
+ "signal": "fb-survey:smoothed_wcli,hospital-admissions:smoothed_covid19",
"time_type": "day",
"geo_type": "state",
"geo_value": "pa",
diff --git a/requirements.api.txt b/requirements.api.txt
index d2c47f64b..c1ac3c2f1 100644
--- a/requirements.api.txt
+++ b/requirements.api.txt
@@ -5,7 +5,6 @@ Flask-Limiter==3.3.0
jinja2==3.0.3
more_itertools==8.4.0
mysqlclient==2.1.1
-newrelic
orjson==3.4.7
pandas==1.2.3
python-dotenv==0.15.0
@@ -13,8 +12,9 @@ pyyaml
redis==3.5.3
requests==2.31.0
scipy==1.10.0
+sentry-sdk[flask]
SQLAlchemy==1.4.40
structlog==22.1.0
tenacity==7.0.0
typing-extensions
-werkzeug==2.2.3
+werkzeug==2.3.8
diff --git a/requirements.dev.txt b/requirements.dev.txt
index a92efdf8d..c071f208d 100644
--- a/requirements.dev.txt
+++ b/requirements.dev.txt
@@ -1,4 +1,4 @@
-aiohttp==3.8.5
+aiohttp==3.9.0
black>=20.8b1
bump2version==1.0.1
covidcast==0.1.5
diff --git a/src/acquisition/covid_hosp/common/database.py b/src/acquisition/covid_hosp/common/database.py
index 4fd0981a1..efbdb6c45 100644
--- a/src/acquisition/covid_hosp/common/database.py
+++ b/src/acquisition/covid_hosp/common/database.py
@@ -184,15 +184,16 @@ def nan_safe_dtype(dtype, value):
for csv_name in self.key_columns:
dataframe.loc[:, csv_name] = dataframe[csv_name].map(self.columns_and_types[csv_name].dtype)
- num_columns = 2 + len(dataframe_columns_and_types) + len(self.additional_fields)
- value_placeholders = ', '.join(['%s'] * num_columns)
- columns = ', '.join(f'`{i.sql_name}`' for i in dataframe_columns_and_types + self.additional_fields)
- sql = f'INSERT INTO `{self.table_name}` (`id`, `{self.publication_col_name}`, {columns}) ' \
- f'VALUES ({value_placeholders})'
+ col_names = [f'`{i.sql_name}`' for i in dataframe_columns_and_types + self.additional_fields]
+ value_placeholders = ', '.join(['%s'] * (2 + len(col_names))) # extra 2 for `id` and `self.publication_col_name` cols
+ columnstring = ', '.join(col_names)
+ sql = f'REPLACE INTO `{self.table_name}` (`id`, `{self.publication_col_name}`, {columnstring}) VALUES ({value_placeholders})'
id_and_publication_date = (0, publication_date)
+ num_values = len(dataframe.index)
if logger:
- logger.info('updating values', count=len(dataframe.index))
+ logger.info('updating values', count=num_values)
n = 0
+ rows_affected = 0
many_values = []
with self.new_cursor() as cursor:
for index, row in dataframe.iterrows():
@@ -208,6 +209,7 @@ def nan_safe_dtype(dtype, value):
if n % 5_000 == 0:
try:
cursor.executemany(sql, many_values)
+ rows_affected += cursor.rowcount
many_values = []
except Exception as e:
if logger:
@@ -216,6 +218,11 @@ def nan_safe_dtype(dtype, value):
# insert final batch
if many_values:
cursor.executemany(sql, many_values)
+ rows_affected += cursor.rowcount
+ if logger:
+ # NOTE: REPLACE INTO marks 2 rows affected for a "replace" (one for a delete and one for a re-insert)
+ # which allows us to count rows which were updated
+ logger.info('rows affected', total=rows_affected, updated=rows_affected-num_values)
# deal with non/seldomly updated columns used like a fk table (if this database needs it)
if hasattr(self, 'AGGREGATE_KEY_COLS'):
diff --git a/src/acquisition/covid_hosp/common/utils.py b/src/acquisition/covid_hosp/common/utils.py
index 5f718ad69..b72aec8f2 100644
--- a/src/acquisition/covid_hosp/common/utils.py
+++ b/src/acquisition/covid_hosp/common/utils.py
@@ -188,33 +188,61 @@ def update_dataset(database, network, newer_than=None, older_than=None):
Whether a new dataset was acquired.
"""
logger = database.logger()
-
+
metadata = network.fetch_metadata(logger=logger)
datasets = []
- with database.connect() as db:
- max_issue = db.get_max_issue(logger=logger)
-
- older_than = datetime.datetime.today().date() if newer_than is None else older_than
- newer_than = max_issue if newer_than is None else newer_than
+ # daily runs specify no bounds; patching runs specify at least one bound
+ is_patch_run = any(bound is not None for bound in (newer_than, older_than))
+ if is_patch_run:
+ logger.warn('runing update_dataset() as a "patch" with some specific date bound[s] specified;'
+ ' this will include and overwrite any revisions that were already collected.',
+ newer_than=newer_than, older_than=older_than)
+ if older_than is None:
+ # by default, include days "older than tomorrow" which thus includes "today"
+ older_than = (datetime.datetime.today().date() + datetime.timedelta(days=1))
+ if newer_than is None:
+ # by default, include days "newer than the day before the last update"
+ # which thus includes the day of the last update (in case there are new updates
+ # that day which were published after the one we already ingested)
+ with database.connect() as db:
+ max_issue = db.get_max_issue(logger=logger)
+ newer_than = (max_issue - datetime.timedelta(days=1))
+ logger.info("looking up issues in date range", newer_than=newer_than, older_than=older_than)
daily_issues = Utils.issues_to_fetch(metadata, newer_than, older_than, logger=logger)
if not daily_issues:
- logger.info("no new issues; nothing to do")
+ logger.info("no issues found in date range; nothing to do")
return False
for issue, revisions in daily_issues.items():
issue_int = int(issue.strftime("%Y%m%d"))
- # download the dataset and add it to the database
- dataset = Utils.merge_by_key_cols([network.fetch_dataset(url, logger=logger) for url, _ in revisions],
- db.KEY_COLS,
- logger=logger)
- # add metadata to the database
+ # download dataset(s) and save associated metadata
+ dataset_list = []
all_metadata = []
for url, index in revisions:
- all_metadata.append((url, metadata.loc[index].reset_index().to_json()))
+ with database.connect() as db:
+ already_in_db = db.contains_revision(url)
+ if already_in_db:
+ logger.info(f"already collected revision: {url}")
+ if is_patch_run or not already_in_db:
+ logger.info(f"including dataset revision: {url}")
+ dataset_list.append(network.fetch_dataset(url, logger=logger))
+ all_metadata.append((url, metadata.loc[index].reset_index().to_json()))
+ if not dataset_list:
+ # we already had everything for this issue or the issue was empty:
+ # move on to the next issue
+ continue
+ dataset = Utils.merge_by_key_cols(dataset_list,
+ database.KEY_COLS,
+ logger=logger)
datasets.append((
issue_int,
dataset,
all_metadata
))
+ tot_revs = sum(len(revisions) for revisions in daily_issues.values())
+ logger.info(f"{len(daily_issues)} issues checked w/ {tot_revs} revisions, resulting in {len(datasets)} datasets.")
+ if not datasets:
+ logger.info("nothing to do, exiting")
+ return False
with database.connect() as db:
for issue_int, dataset, all_metadata in datasets:
db.insert_dataset(issue_int, dataset, logger=logger)
diff --git a/src/client/delphi_epidata.R b/src/client/delphi_epidata.R
index 90191c95e..7c35121cb 100644
--- a/src/client/delphi_epidata.R
+++ b/src/client/delphi_epidata.R
@@ -15,7 +15,7 @@ Epidata <- (function() {
# API base url
BASE_URL <- getOption('epidata.url', default = 'https://api.delphi.cmu.edu/epidata/')
- client_version <- '4.1.12'
+ client_version <- '4.1.15'
auth <- getOption("epidata.auth", default = NA)
diff --git a/src/client/delphi_epidata.js b/src/client/delphi_epidata.js
index 236ba34a0..d51f6ef4d 100644
--- a/src/client/delphi_epidata.js
+++ b/src/client/delphi_epidata.js
@@ -22,7 +22,7 @@
}
})(this, function (exports, fetchImpl, jQuery) {
const BASE_URL = "https://api.delphi.cmu.edu/epidata/";
- const client_version = "4.1.12";
+ const client_version = "4.1.15";
// Helper function to cast values and/or ranges to strings
function _listitem(value) {
diff --git a/src/client/packaging/npm/package.json b/src/client/packaging/npm/package.json
index d1680c4fe..5911292e9 100644
--- a/src/client/packaging/npm/package.json
+++ b/src/client/packaging/npm/package.json
@@ -2,7 +2,7 @@
"name": "delphi_epidata",
"description": "Delphi Epidata API Client",
"authors": "Delphi Group",
- "version": "4.1.12",
+ "version": "4.1.15",
"license": "MIT",
"homepage": "https://github.com/cmu-delphi/delphi-epidata",
"bugs": {
diff --git a/src/client/packaging/pypi/delphi_epidata/__init__.py b/src/client/packaging/pypi/delphi_epidata/__init__.py
index 5115c39ef..7b875348d 100644
--- a/src/client/packaging/pypi/delphi_epidata/__init__.py
+++ b/src/client/packaging/pypi/delphi_epidata/__init__.py
@@ -1,4 +1,4 @@
from .delphi_epidata import Epidata
name = "delphi_epidata"
-__version__ = "4.1.12"
+__version__ = "4.1.15"
diff --git a/src/client/packaging/pypi/setup.py b/src/client/packaging/pypi/setup.py
index a0aefc954..710110411 100644
--- a/src/client/packaging/pypi/setup.py
+++ b/src/client/packaging/pypi/setup.py
@@ -5,7 +5,7 @@
setuptools.setup(
name="delphi_epidata",
- version="4.1.12",
+ version="4.1.15",
author="David Farrow",
author_email="dfarrow0@gmail.com",
description="A programmatic interface to Delphi's Epidata API.",
diff --git a/src/server/_config.py b/src/server/_config.py
index c6eaedaf4..ae12a01d4 100644
--- a/src/server/_config.py
+++ b/src/server/_config.py
@@ -7,7 +7,7 @@
load_dotenv()
-VERSION = "4.1.12"
+VERSION = "4.1.15"
MAX_RESULTS = int(10e6)
MAX_COMPATIBILITY_RESULTS = int(3650)
diff --git a/src/server/endpoints/admin.py b/src/server/endpoints/admin.py
index a6f941b48..2931e6a29 100644
--- a/src/server/endpoints/admin.py
+++ b/src/server/endpoints/admin.py
@@ -1,11 +1,13 @@
+import json
from pathlib import Path
+import socket
from typing import Dict, List, Set
from flask import Blueprint, make_response, render_template_string, request
from werkzeug.exceptions import NotFound, Unauthorized
from werkzeug.utils import redirect
-from .._common import log_info_with_request
+from .._common import db, log_info_with_request
from .._config import ADMIN_PASSWORD, API_KEY_REGISTRATION_FORM_LINK, API_KEY_REMOVAL_REQUEST_LINK, REGISTER_WEBHOOK_TOKEN
from .._db import WriteSession
from .._security import resolve_auth_token
@@ -130,6 +132,22 @@ def diags():
# such as a full current "X-Forwarded-For" path as inserted into headers by intermediate proxies...
# (but only when initiated purposefully by us to keep junk out of the logs)
_require_admin()
- log_info_with_request("diagnostics", headers=request.headers)
- response_text = f"request path: {request.headers.get('X-Forwarded-For', 'idk')}"
- return make_response(response_text, 200, {'content-type': 'text/plain'})
+
+ try:
+ serving_host = socket.gethostbyname_ex(socket.gethostname())
+ except e:
+ serving_host = e
+
+ try:
+ db_host = db.execute('SELECT @@hostname AS hn').fetchone()['hn']
+ except e:
+ db_host = e
+
+ log_info_with_request("diagnostics", headers=request.headers, serving_host=serving_host, database_host=db_host)
+
+ response_data = {
+ 'request_path': request.headers.get('X-Forwarded-For', 'idfk'),
+ 'serving_host': serving_host,
+ 'database_host': db_host,
+ }
+ return make_response(json.dumps(response_data), 200, {'content-type': 'text/plain'})
diff --git a/src/server/endpoints/covidcast_utils/dashboard_signals.py b/src/server/endpoints/covidcast_utils/dashboard_signals.py
index 42f3d612d..9bd564575 100644
--- a/src/server/endpoints/covidcast_utils/dashboard_signals.py
+++ b/src/server/endpoints/covidcast_utils/dashboard_signals.py
@@ -30,6 +30,10 @@ def __new__(cls):
with open(module_dir / 'descriptions.raw.txt', 'r') as f:
for desc in yaml.safe_load_all(f):
srcsigs.append( (desc['Id'], desc['Signal']) )
+ if 'Overrides' in desc:
+ for sub_geo in desc['Overrides']:
+ sub_signal = desc['Overrides'][sub_geo]
+ srcsigs.append( (sub_signal['Id'], sub_signal['Signal']) )
source_id = None
with open(module_dir / 'questions.raw.txt', 'r') as f:
diff --git a/src/server/endpoints/covidcast_utils/db_signals.csv b/src/server/endpoints/covidcast_utils/db_signals.csv
index 850a43b8b..01b878c80 100644
--- a/src/server/endpoints/covidcast_utils/db_signals.csv
+++ b/src/server/endpoints/covidcast_utils/db_signals.csv
@@ -146,10 +146,10 @@ This item was shown to respondents starting in Wave 10, March 2, 2021.
Discontinued as of Wave 11, May 19, 2021.",Delphi US COVID-19 Trends and Impact Survey,covid,Self-reported (survey),"county,hrr,msa,nation,state",day,Date,Percentage,percent,public,bad,TRUE,TRUE,FALSE,TRUE,TRUE,https://cmu-delphi.github.io/delphi-epidata/api/covidcast-signals/fb-survey.html#mental-health-indicators
fb-survey,smoothed_wfelt_isolated_7d,TRUE,smoothed_felt_isolated_7d,FALSE,Felt Isolated (Last Seven Days) (Unweighted),FALSE,,,Delphi US COVID-19 Trends and Impact Survey,covid,Self-reported (survey),"county,hrr,msa,nation,state",day,Date,Percentage,percent,public,bad,TRUE,FALSE,FALSE,TRUE,TRUE,
-fb-survey,smoothed_whad_covid_ever,FALSE,smoothed_whad_covid_ever,FALSE,Ever Had COVID-19,TRUE,Estimated percentage of people who report having ever had COVID-19.,"Estimated percentage of people who report having ever had COVID-19.
+fb-survey,smoothed_whad_covid_ever,FALSE,smoothed_whad_covid_ever,FALSE,Ever Had COVID-19,FALSE,Estimated percentage of people who report having ever had COVID-19.,"Estimated percentage of people who report having ever had COVID-19.
Based on survey item B13. This item was shown to respondents starting in Wave 11, May 19, 2021.",Delphi US COVID-19 Trends and Impact Survey,covid,Self-reported (survey),"county,hrr,msa,nation,state",day,Date,Percentage,percent,late,bad,TRUE,TRUE,FALSE,TRUE,TRUE,https://cmu-delphi.github.io/delphi-epidata/api/covidcast-signals/fb-survey.html#testing-indicators
-fb-survey,smoothed_whad_covid_ever,TRUE,smoothed_had_covid_ever,FALSE,Ever Had COVID-19 (Unweighted),TRUE,,,Delphi US COVID-19 Trends and Impact Survey,covid,Self-reported (survey),"county,hrr,msa,nation,state",day,Date,Percentage,percent,late,bad,TRUE,FALSE,FALSE,TRUE,TRUE,
+fb-survey,smoothed_whad_covid_ever,TRUE,smoothed_had_covid_ever,FALSE,Ever Had COVID-19 (Unweighted),FALSE,,,Delphi US COVID-19 Trends and Impact Survey,covid,Self-reported (survey),"county,hrr,msa,nation,state",day,Date,Percentage,percent,late,bad,TRUE,FALSE,FALSE,TRUE,TRUE,
fb-survey,smoothed_whesitancy_reason_allergic,FALSE,smoothed_whesitancy_reason_allergic,FALSE,Vaccine Hesitancy: Allergic,FALSE,Estimated percentage of respondents who say they are hesitant to get vaccinated because they are worried about having an allergic reaction,"Estimated percentage of respondents who say they are hesitant to get vaccinated because they are worried about having an allergic reaction, among respondents who answered ""Yes, probably"", ""No, probably not"", or ""No, definitely not"" when asked if they would get vaccinated if offered.
This item was shown to respondents starting in Wave 8, February 8, 2021.
@@ -163,7 +163,7 @@ fb-survey,smoothed_whesitancy_reason_cost,TRUE,smoothed_hesitancy_reason_cost,FA
fb-survey,smoothed_whesitancy_reason_dislike_vaccines,FALSE,smoothed_whesitancy_reason_dislike_vaccines,FALSE,Vaccine Hesitancy: Dislike Vaccines,FALSE,Estimated percentage of respondents who say they are hesitant to get vaccinated because they dislike vaccines,"Estimated percentage of respondents who say they are hesitant to get vaccinated because they dislike vaccines, among respondents who answered ""Yes, probably"", ""No, probably not"", or ""No, definitely not"" when asked if they would get vaccinated if offered.
This item was shown to respondents starting in Wave 8, February 8, 2021.",Delphi US COVID-19 Trends and Impact Survey,covid,Self-reported (survey),"county,hrr,msa,nation,state",day,Date,Percentage,percent,public,neutral,TRUE,TRUE,FALSE,TRUE,TRUE,https://cmu-delphi.github.io/delphi-epidata/api/covidcast-signals/fb-survey.html#reasons-for-hesitancy
-fb-survey,smoothed_whesitancy_reason_dislike_vaccines,TRUE,smoothed_hesitancy_reason_dislike_vaccines,FALSE,Vaccine Hesitancy: Dislike Vaccines (Unweighted),TRUE,,,Delphi US COVID-19 Trends and Impact Survey,covid,Self-reported (survey),"county,hrr,msa,nation,state",day,Date,Percentage,percent,public,neutral,TRUE,FALSE,FALSE,TRUE,TRUE,
+fb-survey,smoothed_whesitancy_reason_dislike_vaccines,TRUE,smoothed_hesitancy_reason_dislike_vaccines,FALSE,Vaccine Hesitancy: Dislike Vaccines (Unweighted),FALSE,,,Delphi US COVID-19 Trends and Impact Survey,covid,Self-reported (survey),"county,hrr,msa,nation,state",day,Date,Percentage,percent,public,neutral,TRUE,FALSE,FALSE,TRUE,TRUE,
fb-survey,smoothed_whesitancy_reason_dislike_vaccines_generally,FALSE,smoothed_whesitancy_reason_dislike_vaccines_generally,FALSE,Vaccine Hesitance: Dislike Vaccines Generally,FALSE,Estimated percentage of respondents who say they are hesitant to get vaccinated because they dislike vaccines generally,"Estimated percentage of respondents who say they are hesitant to get vaccinated because they dislike vaccines generally, among respondents who answered ""Yes, probably"", ""No, probably not"", or ""No, definitely not"" when asked if they would get vaccinated if offered.
This item was shown to respondents starting in Wave 12, December 19, 2021.",Delphi US COVID-19 Trends and Impact Survey,covid,Self-reported (survey),"county,hrr,msa,nation,state",day,Day,Percentage,percent,public,neutral,TRUE,TRUE,FALSE,TRUE,TRUE,https://cmu-delphi.github.io/delphi-epidata/api/covidcast-signals/fb-survey.html#reasons-for-hesitancy
@@ -231,7 +231,7 @@ fb-survey,smoothed_winperson_school_fulltime_oldest,FALSE,smoothed_winperson_sch
This item was shown to respondents starting in Wave 12, December 19, 2021.",Delphi US COVID-19 Trends and Impact Survey,covid,Self-reported (survey),"county,hrr,msa,nation,state",day,Day,Percentage,percent,public,neutral,TRUE,TRUE,FALSE,TRUE,TRUE,https://cmu-delphi.github.io/delphi-epidata/api/covidcast-signals/fb-survey.html#schooling-indicators
fb-survey,smoothed_winperson_school_fulltime_oldest,TRUE,smoothed_inperson_school_fulltime_oldest,FALSE,In-person School Full-time (Oldest Child) (Unweighted),FALSE,,,Delphi US COVID-19 Trends and Impact Survey,covid,Self-reported (survey),"county,hrr,msa,nation,state",day,Day,Percentage,percent,public,neutral,TRUE,FALSE,FALSE,TRUE,TRUE,
fb-survey,smoothed_winperson_school_parttime,FALSE,smoothed_winperson_school_parttime,FALSE,In-person School Part-time,FALSE,Estimated percentage of people who had any children attending in-person school on a part-time basis,"Estimated percentage of people who had any children attending in-person school on a part-time basis, among people reporting any pre-K-grade 12 children in their household.",Delphi US COVID-19 Trends and Impact Survey,covid,Self-reported (survey),"county,hrr,msa,nation,state",day,Date,Percentage,percent,public,neutral,TRUE,TRUE,FALSE,TRUE,TRUE,https://cmu-delphi.github.io/delphi-epidata/api/covidcast-signals/fb-survey.html#schooling-indicators
-fb-survey,smoothed_winperson_school_parttime,TRUE,smoothed_inperson_school_parttime,FALSE,In-person School Part-time (Unweighted),TRUE,,,Delphi US COVID-19 Trends and Impact Survey,covid,Self-reported (survey),"county,hrr,msa,nation,state",day,Date,Percentage,percent,public,neutral,TRUE,FALSE,FALSE,TRUE,TRUE,
+fb-survey,smoothed_winperson_school_parttime,TRUE,smoothed_inperson_school_parttime,FALSE,In-person School Part-time (Unweighted),FALSE,,,Delphi US COVID-19 Trends and Impact Survey,covid,Self-reported (survey),"county,hrr,msa,nation,state",day,Date,Percentage,percent,public,neutral,TRUE,FALSE,FALSE,TRUE,TRUE,
fb-survey,smoothed_winperson_school_parttime_oldest,FALSE,smoothed_winperson_school_parttime_oldest,FALSE,In-person School Part-time (Oldest Child),FALSE,Estimated percentage of people whose oldest child is attending in-person school on a part-time basis,"Estimated percentage of people whose oldest child is attending in-person school on a part-time basis, among people reporting any pre-K-grade 12 children in their household.
This item was shown to respondents starting in Wave 12, December 19, 2021.",Delphi US COVID-19 Trends and Impact Survey,covid,Self-reported (survey),"county,hrr,msa,nation,state",day,Day,Percentage,percent,public,neutral,TRUE,TRUE,FALSE,TRUE,TRUE,https://cmu-delphi.github.io/delphi-epidata/api/covidcast-signals/fb-survey.html#schooling-indicators
diff --git a/src/server/endpoints/covidcast_utils/descriptions.raw.txt b/src/server/endpoints/covidcast_utils/descriptions.raw.txt
index e0d057aab..98bda8f1e 100644
--- a/src/server/endpoints/covidcast_utils/descriptions.raw.txt
+++ b/src/server/endpoints/covidcast_utils/descriptions.raw.txt
@@ -43,18 +43,6 @@ SignalTooltip: Percentage of daily doctor visits that are due to lab-confirmed i
Description: Delphi receives aggregated statistics from Change Healthcare, Inc. on lab-confirmed influenza outpatient doctor visits, derived from ICD codes found in insurance claims. Using this data, we estimate the percentage of daily doctor’s visits in each area that resulted in a diagnosis of influenza. Note that these estimates are based only on visits by patients whose insurance claims are accessible to Change Healthcare.
---
-Name: COVID Cases
-Id: jhu-csse
-Signal: confirmed_7dav_incidence_prop
-Highlight: [default]
-ExtendedColorScale: true
-
-
-SignalTooltip: Newly reported COVID-19 cases per 100,000 people, based on data from Johns Hopkins University
-
-
-Description: This data shows the number of COVID-19 confirmed cases newly reported each day. It reflects only cases reported by state and local health authorities. It is based on case counts compiled and made public by [a team at Johns Hopkins University](https://systems.jhu.edu/research/public-health/ncov/). The signal may not be directly comparable across regions with vastly different testing capacity or reporting criteria.
----
Name: COVID Hospital Admissions
Id: hhs
Signal: confirmed_admissions_covid_1d_prop_7dav
@@ -63,8 +51,8 @@ ExtendedColorScale: true
Levels: [nation, state, county]
Overrides:
County:
- Id: dsew-cpr
- Signal: confirmed_admissions_covid_1d_prop_7dav
+ Id: hospital-admissions
+ Signal: smoothed_adj_covid19_from_claims
@@ -89,11 +77,11 @@ SignalTooltip: Confirmed influenza hospital admissions per 100,000 people
Description: This data shows the number of hospital admissions with lab-confirmed influenza each day. We source this data from the Report on Patient Impact and Hospital Capacity published by the US Department of Health & Human Services (HHS).
---
Name: COVID Deaths
-Id: jhu-csse
-Signal: deaths_7dav_incidence_prop
+Id: nchs-mortality
+Signal: deaths_covid_incidence_prop
-SignalTooltip: Newly reported COVID-19 deaths per 100,000 people, based on data from Johns Hopkins University
+SignalTooltip: Newly reported COVID-19 deaths per 100,000 people, based on NCHS mortality data.
-Description: This data shows the number of COVID-19 deaths newly reported each day. The signal is based on COVID-19 death counts compiled and made public by [a team at Johns Hopkins University](https://systems.jhu.edu/research/public-health/ncov/).
\ No newline at end of file
+Description: This data shows the number of COVID-19 deaths newly reported each week. The signal is based on COVID-19 death counts compiled and made public by [the National Center for Health Statistics](https://www.cdc.gov/nchs/nvss/vsrr/COVID19/index.htm).
diff --git a/src/server/main.py b/src/server/main.py
index a91a91ee2..2ec07e5a5 100644
--- a/src/server/main.py
+++ b/src/server/main.py
@@ -1,5 +1,7 @@
+import os
import pathlib
import logging
+import sentry_sdk
from typing import Dict, Callable
from flask import request, send_file, Response, send_from_directory, jsonify
@@ -13,6 +15,18 @@
from .endpoints.admin import bp as admin_bp, enable_admin
from ._limiter import limiter, apply_limit
+SENTRY_DSN = os.environ.get('SENTRY_DSN')
+if SENTRY_DSN:
+ sentry_sdk.init(
+ dsn = SENTRY_DSN,
+ environment = os.environ.get('SENTRY_ENVIRONMENT', 'development'),
+ profiles_sample_rate = float(os.environ.get('SENTRY_PROFILES_SAMPLE_RATE', 1.0)),
+ traces_sample_rate = float(os.environ.get('SENTRY_TRACES_SAMPLE_RATE', 1.0)),
+ attach_stacktrace = os.environ.get('SENTRY_ATTACH_STACKTRACE', 'False').lower() in ('true', '1', 't'),
+ debug = os.environ.get('SENTRY_DEBUG', 'False').lower() in ('true', '1', 't')
+ )
+
+
__all__ = ["app"]
logger = get_structured_logger("webapp_main")
diff --git a/testdata/acquisition/covid_hosp/state_daily/dataset.csv b/testdata/acquisition/covid_hosp/state_daily/dataset.csv
index fed00532c..5e6997b1e 100644
--- a/testdata/acquisition/covid_hosp/state_daily/dataset.csv
+++ b/testdata/acquisition/covid_hosp/state_daily/dataset.csv
@@ -51,4 +51,4 @@ MI,30,129,4,32,127,4,41,159,23598,163,18003,163,3812,159,376,163,162,159,9,159,9
MN,21,116,2,26,111,2,63,138,10358,139,7558,139,1516,138,182,139,70,138,3,138,2,138,806,139,346,138,355,139,1490,138,1358,139,26,138,21,138,1019,139,0.7296775439273991,139,7558,10358,0.2082417582417582,138,1516,7280,0.151630326065213,138,1516,9998,0.365364308342133,138,346,947,0.7909715407262021,139,806,1019,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
MO,47,78,16,62,63,16,22,137,17433,141,13521,141,2611,137,315,141,239,137,5,137,18,137,1615,141,645,137,604,141,2546,137,2307,141,65,137,26,137,1931,141,0.7755980037859233,141,13521,17433,0.1964487247009254,137,2611,13291,0.1523959610109146,137,2611,17133,0.3456591639871382,137,645,1866,0.8363542206110823,141,1615,1931,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
MS,21,85,2,30,76,2,12,106,8799,108,5637,108,1254,106,142,108,30,106,3,106,5,106,718,108,338,106,263,108,1234,106,1066,108,20,106,5,106,881,108,0.6406409819297647,108,5637,8799,0.2250134577426879,106,1254,5573,0.143922873866636,106,1254,8713,0.3953216374269006,106,338,855,0.8149829738933031,108,718,881,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-WY,8,,2,7,22,2,5,29,1729,31,856,31,198,29,26,31,15,29,0,29,0,29,58,31,32,29,32,31,196,29,189,31,2,29,2,29,137,31,0.4950838635049161,31,856,1729,0.2362768496420047,29,198,838,0.1172985781990521,29,198,1688,0.2519685039370078,29,32,127,0.4233576642335766,31,58,137,2020/12/09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
+WY,8,,2,7,22,2,5,29,1729,31,856,31,198,29,26,31,15,29,0,29,0,29,58,31,32,29,32,31,196,29,189,31,2,29,2,29,137,31,0.4950838635049161,31,856,1729,0.2362768496420047,29,198,838,0.1172985781990521,29,198,1688,0.2519685039370078,29,32,127,0.4233576642335766,31,58,137,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
diff --git a/testdata/acquisition/covid_hosp/state_daily/dataset0.csv b/testdata/acquisition/covid_hosp/state_daily/dataset0.csv
deleted file mode 100644
index d0dce36c6..000000000
--- a/testdata/acquisition/covid_hosp/state_daily/dataset0.csv
+++ /dev/null
@@ -1,54 +0,0 @@
-state,critical_staffing_shortage_today_yes,critical_staffing_shortage_today_no,critical_staffing_shortage_today_not_reported,critical_staffing_shortage_anticipated_within_week_yes,critical_staffing_shortage_anticipated_within_week_no,critical_staffing_shortage_anticipated_within_week_not_reported,hospital_onset_covid,hospital_onset_covid_coverage,inpatient_beds,inpatient_beds_coverage,inpatient_beds_used,inpatient_beds_used_coverage,inpatient_beds_used_covid,inpatient_beds_used_covid_coverage,previous_day_admission_adult_covid_confirmed,previous_day_admission_adult_covid_confirmed_coverage,previous_day_admission_adult_covid_suspected,previous_day_admission_adult_covid_suspected_coverage,previous_day_admission_pediatric_covid_confirmed,previous_day_admission_pediatric_covid_confirmed_coverage,previous_day_admission_pediatric_covid_suspected,previous_day_admission_pediatric_covid_suspected_coverage,staffed_adult_icu_bed_occupancy,staffed_adult_icu_bed_occupancy_coverage,staffed_icu_adult_patients_confirmed_and_suspected_covid,staffed_icu_adult_patients_confirmed_and_suspected_covid_coverage,staffed_icu_adult_patients_confirmed_covid,staffed_icu_adult_patients_confirmed_covid_coverage,total_adult_patients_hospitalized_confirmed_and_suspected_covid,total_adult_patients_hospitalized_confirmed_and_suspected_covid_coverage,total_adult_patients_hospitalized_confirmed_covid,total_adult_patients_hospitalized_confirmed_covid_coverage,total_pediatric_patients_hospitalized_confirmed_and_suspected_covid,total_pediatric_patients_hospitalized_confirmed_and_suspected_covid_coverage,total_pediatric_patients_hospitalized_confirmed_covid,total_pediatric_patients_hospitalized_confirmed_covid_coverage,total_staffed_adult_icu_beds,total_staffed_adult_icu_beds_coverage,inpatient_beds_utilization,inpatient_beds_utilization_coverage,inpatient_beds_utilization_numerator,inpatient_beds_utilization_denominator,percent_of_inpatients_with_covid,percent_of_inpatients_with_covid_coverage,percent_of_inpatients_with_covid_numerator,percent_of_inpatients_with_covid_denominator,inpatient_bed_covid_utilization,inpatient_bed_covid_utilization_coverage,inpatient_bed_covid_utilization_numerator,inpatient_bed_covid_utilization_denominator,adult_icu_bed_covid_utilization,adult_icu_bed_covid_utilization_coverage,adult_icu_bed_covid_utilization_numerator,adult_icu_bed_covid_utilization_denominator,adult_icu_bed_utilization,adult_icu_bed_utilization_coverage,adult_icu_bed_utilization_numerator,adult_icu_bed_utilization_denominator,reporting_cutoff_start,deaths_covid,deaths_covid_coverage,geocoded_state,icu_patients_confirmed_influenza,icu_patients_confirmed_influenza_coverage,on_hand_supply_therapeutic_a_casirivimab_imdevimab_courses,on_hand_supply_therapeutic_b_bamlanivimab_courses,on_hand_supply_therapeutic_c_bamlanivimab_etesevimab_courses,previous_day_admission_adult_covid_confirmed_18-19,previous_day_admission_adult_covid_confirmed_18-19_coverage,previous_day_admission_adult_covid_confirmed_20-29,previous_day_admission_adult_covid_confirmed_20-29_coverage,previous_day_admission_adult_covid_confirmed_30-39,previous_day_admission_adult_covid_confirmed_30-39_coverage,previous_day_admission_adult_covid_confirmed_40-49,previous_day_admission_adult_covid_confirmed_40-49_coverage,previous_day_admission_adult_covid_confirmed_50-59,previous_day_admission_adult_covid_confirmed_50-59_coverage,previous_day_admission_adult_covid_confirmed_60-69,previous_day_admission_adult_covid_confirmed_60-69_coverage,previous_day_admission_adult_covid_confirmed_70-79,previous_day_admission_adult_covid_confirmed_70-79_coverage,previous_day_admission_adult_covid_confirmed_80+,previous_day_admission_adult_covid_confirmed_80+_coverage,previous_day_admission_adult_covid_confirmed_unknown,previous_day_admission_adult_covid_confirmed_unknown_coverage,previous_day_admission_adult_covid_suspected_18-19,previous_day_admission_adult_covid_suspected_18-19_coverage,previous_day_admission_adult_covid_suspected_20-29,previous_day_admission_adult_covid_suspected_20-29_coverage,previous_day_admission_adult_covid_suspected_30-39,previous_day_admission_adult_covid_suspected_30-39_coverage,previous_day_admission_adult_covid_suspected_40-49,previous_day_admission_adult_covid_suspected_40-49_coverage,previous_day_admission_adult_covid_suspected_50-59,previous_day_admission_adult_covid_suspected_50-59_coverage,previous_day_admission_adult_covid_suspected_60_69,previous_day_admission_adult_covid_suspected_60-69_coverage,previous_day_admission_adult_covid_suspected_70-79,previous_day_admission_adult_covid_suspected_70-79_coverage,previous_day_admission_adult_covid_suspected_80,previous_day_admission_adult_covid_suspected_80+_coverage,previous_day_admission_adult_covid_suspected_unknown,previous_day_admission_adult_covid_suspected_unknown_coverage,previous_day_admission_influenza_confirmed,previous_day_admission_influenza_confirmed_coverage,previous_day_deaths_covid_and_influenza,previous_day_deaths_covid_and_influenza_coverage,previous_day_deaths_influenza,previous_day_deaths_influenza_coverage,previous_week_therapeutic_a_casirivimab_imdevimab_courses_used,previous_week_therapeutic_b_bamlanivimab_courses_used,previous_week_therapeutic_c_bamlanivimab_etesevimab_courses_used,total_patients_hospitalized_confirmed_influenza,total_patients_hospitalized_confirmed_influenza_coverage,total_patients_hospitalized_confirmed_influenza_covid,total_patients_hospitalized_confirmed_influenza_covid_coverage
-AK,4,20,0,3,21,0,2,24,1625,24,936,24,140,24,18,24,1,24,1,24,1,24,96,24,22,24,21,24,129,24,123,24,11,24,10,24,131,24,0.576,24,936,1625,0.1495726495726495,24,140,936,0.0861538461538461,24,140,1625,0.1679389312977099,24,22,131,0.732824427480916,24,96,131,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-AL,36,74,7,40,69,8,35,111,15116,116,11358,116,2484,111,336,113,110,111,4,111,8,111,1274,116,605,111,584,113,2464,111,2271,113,20,111,14,111,1458,116,0.7513892564170416,116,11358,15116,0.2200567298014457,110,2405,10929,0.1648954405210833,110,2405,14585,0.4105113636363636,110,578,1408,0.8737997256515775,116,1274,1458,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-AR,37,71,2,42,66,2,7,108,9297,110,6743,110,1205,108,153,110,272,108,0,108,10,108,815,110,311,108,308,110,1177,108,975,110,28,108,10,108,1027,110,0.7252877272238356,110,6743,9297,0.1789958407605466,108,1205,6732,0.1301858254105445,108,1205,9256,0.3079207920792079,108,311,1010,0.7935735150925024,110,815,1027,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-AZ,38,81,3,42,77,3,60,119,16657,122,12769,122,3711,119,459,122,267,119,6,119,10,119,1532,122,774,119,755,122,3664,119,3185,122,47,119,26,119,2155,122,0.7665846190790658,122,12769,16657,0.2965241709948062,119,3711,12515,0.227041908840624,119,3711,16345,0.3712230215827338,119,774,2085,0.7109048723897912,122,1532,2155,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-CA,113,275,27,137,253,25,114,407,67724,415,51751,415,14178,405,1964,415,593,407,29,405,16,405,6548,413,2939,405,2933,413,14008,405,13314,413,170,405,131,405,7872,413,0.7641456499911405,415,51751,67724,0.2780817887614004,405,14178,50985,0.2127136062892893,405,14178,66653,0.388345665961945,405,2939,7568,0.8318089430894309,413,6548,7872,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-CO,11,79,13,17,73,13,45,101,11800,103,7939,103,1664,101,221,103,100,101,5,101,10,101,1049,103,455,101,437,103,1636,101,1518,103,28,101,17,101,1538,103,0.6727966101694915,103,7939,11800,0.2117317724901387,101,1664,7859,0.1428816761119697,101,1664,11646,0.3033333333333333,101,455,1500,0.6820546163849155,103,1049,1538,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-CT,2,37,1,3,36,1,33,39,8858,40,6765,40,1394,39,166,40,78,39,3,39,1,39,665,40,264,39,249,40,1376,39,1231,40,18,39,15,39,1129,40,0.7637164145405283,40,6765,8858,0.2077805932329706,39,1394,6709,0.1591324200913242,39,1394,8760,0.2384823848238482,39,264,1107,0.5890168290522586,40,665,1129,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-DC,0,12,2,0,12,2,6,12,3645,14,2916,14,295,13,24,14,72,13,1,13,13,13,296,14,64,12,61,13,265,13,249,14,30,13,11,13,359,14,0.8,14,2916,3645,0.1046470379567222,13,295,2819,0.0839977220956719,13,295,3512,0.1887905604719764,12,64,339,0.8245125348189415,14,296,359,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-DE,1,14,1,3,12,1,5,15,3274,16,2379,16,434,15,43,16,26,15,8,15,1,15,156,16,57,15,55,16,426,15,395,16,8,15,7,15,186,16,0.726634086744044,16,2379,3274,0.1839762611275964,15,434,2359,0.1338679827267119,15,434,3242,0.3166666666666666,15,57,180,0.8387096774193549,16,156,186,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-FL,9,249,11,29,229,11,100,263,57986,269,43794,269,5248,263,677,269,269,263,10,263,11,263,4971,269,1015,263,977,269,5203,263,4790,269,45,263,29,263,6229,269,0.7552512675473391,269,43794,57986,0.1220947816578647,263,5248,42983,0.0922109184193418,263,5248,56913,0.1685766483972762,263,1015,6021,0.7980414191684059,269,4971,6229,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-GA,32,126,13,39,119,13,21,168,22424,171,17776,171,3268,168,470,171,172,168,11,168,51,168,2328,171,796,168,762,171,3200,168,2899,171,68,168,15,168,2632,171,0.7927220834819836,171,17776,22424,0.1858824867754962,168,3268,17581,0.147666169626316,168,3268,22131,0.3087664856477889,168,796,2578,0.8844984802431611,171,2328,2632,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-HI,1,25,0,2,24,0,0,26,2645,26,1813,26,72,26,4,26,12,26,0,26,1,26,155,26,21,26,19,26,70,26,55,26,2,26,0,26,229,26,0.6854442344045368,26,1813,2645,0.0397131825703254,26,72,1813,0.0272211720226843,26,72,2645,0.0917030567685589,26,21,229,0.6768558951965066,26,155,229,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-IA,4,75,47,5,75,46,7,124,8452,126,4806,126,793,124,71,126,22,124,0,124,0,124,469,126,262,124,160,126,787,124,765,126,6,124,6,124,697,126,0.5686228111689541,126,4806,8452,0.1672642902341278,124,793,4741,0.0949928126497364,124,793,8348,0.3864306784660767,124,262,678,0.672883787661406,126,469,697,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-MT,16,50,1,18,48,1,9,66,3206,67,2177,67,356,66,54,67,20,66,1,66,0,66,159,67,71,66,72,67,352,66,352,67,4,66,2,66,237,67,0.6790393013100436,67,2177,3206,0.164967562557924,66,356,2158,0.1124092200820966,66,356,3167,0.3212669683257919,66,71,221,0.6708860759493671,67,159,237,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-NC,9,119,4,13,115,4,46,128,24092,132,18256,132,2824,128,326,132,265,128,4,128,18,128,2064,132,641,128,617,132,2785,128,2444,132,39,128,17,128,2496,132,0.7577619126681056,132,18256,24092,0.156523666999224,128,2824,18042,0.1187053383774695,128,2824,23790,0.2632443531827515,128,641,2435,0.8269230769230769,132,2064,2496,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-ND,21,26,3,20,27,3,2,49,2573,50,1636,50,253,49,18,48,2,46,0,49,0,49,66,48,51,49,50,50,253,49,240,50,0,49,0,49,88,48,0.635833657209483,50,1636,2573,0.1569478908188585,49,253,1612,0.0993325480957989,49,253,2547,0.2738095238095238,47,23,84,0.75,48,66,88,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-NE,16,84,1,26,74,1,17,100,5399,101,3409,101,716,100,74,101,26,100,2,100,0,100,376,101,190,100,183,101,708,100,686,101,8,100,8,100,570,101,0.6314132246712354,101,3409,5399,0.212778603268945,100,716,3365,0.1346117691295356,100,716,5319,0.3429602888086642,100,190,554,0.6596491228070176,101,376,570,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-NH,5,24,1,7,22,1,15,30,3117,30,2188,30,268,30,43,30,19,30,0,30,0,30,175,30,69,30,59,30,268,30,241,30,0,30,0,30,282,30,0.7019570099454604,30,2188,3117,0.1224862888482632,30,268,2188,0.0859801090792428,30,268,3117,0.2446808510638297,30,69,282,0.6205673758865248,30,175,282,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-NJ,11,83,2,10,82,4,161,95,23202,96,17216,96,3738,95,470,96,259,95,4,95,4,95,1606,96,679,95,666,96,3718,95,3430,96,20,95,7,95,2459,96,0.7420049995690027,96,17216,23202,0.2186476368741226,95,3738,17096,0.1621269951422623,95,3738,23056,0.2797692624639472,95,679,2427,0.6531110207401383,96,1606,2459,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-NM,18,35,1,18,35,1,10,52,4461,54,3079,53,837,52,140,54,19,53,0,52,1,50,431,53,218,52,219,53,828,52,792,53,9,52,3,52,432,54,0.6969216840199185,53,3079,4418,0.2781655034895314,52,837,3009,0.1943348038077548,52,837,4307,0.5304136253041363,52,218,411,0.9976851851851852,53,431,432,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-NV,9,51,2,15,45,2,80,60,8655,62,6900,62,1956,60,154,62,135,60,1,60,5,60,737,62,352,60,385,62,1949,60,1804,62,7,60,18,60,1065,62,0.7972270363951474,62,6900,8655,0.2885381324679156,60,1956,6779,0.2306059891535015,60,1956,8482,0.3591836734693877,60,352,980,0.692018779342723,62,737,1065,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-NY,23,171,10,22,172,10,174,195,59150,204,42745,204,7352,195,964,204,325,195,3,195,19,195,4180,204,1276,195,1159,204,7226,195,6247,204,126,195,51,195,6835,204,0.722654268808115,204,42745,59150,0.1733471658964444,195,7352,42412,0.1256967002906479,195,7352,58490,0.190504628247238,195,1276,6698,0.6115581565471836,204,4180,6835,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-OH,39,185,5,63,161,5,230,224,33828,229,22677,229,5436,225,604,229,282,225,19,225,37,225,3151,229,1225,225,1187,229,5338,225,5033,229,98,225,61,225,4234,229,0.6703618304363249,229,22677,33828,0.24215965787598,225,5436,22448,0.1622057112165428,225,5436,33513,0.2939764818814495,225,1225,4167,0.7442135096835144,229,3151,4234,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-OK,48,96,11,56,88,11,50,153,10853,155,7667,155,1674,153,312,155,79,153,3,153,16,153,1060,155,443,153,492,155,1637,153,1657,155,37,153,31,153,1185,155,0.706440615498019,155,7667,10853,0.2268600081311831,153,1674,7379,0.1594741354672763,153,1674,10497,0.3969534050179211,153,443,1116,0.8945147679324894,155,1060,1185,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-OR,5,58,2,7,56,2,13,63,6621,65,4919,65,666,63,51,65,83,63,0,63,34,63,541,65,137,63,124,65,654,63,552,65,12,63,5,63,794,65,0.7429391330614711,65,4919,6621,0.1388078365985827,63,666,4798,0.1029525428968928,63,666,6469,0.1760925449871465,63,137,778,0.681360201511335,65,541,794,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-PA,41,181,6,44,178,6,132,222,37110,228,28259,228,7014,222,724,228,472,222,8,222,17,222,3256,228,1383,222,1360,228,6922,222,6360,228,92,222,58,222,3991,228,0.7614928590676368,228,28259,37110,0.2502140410958904,222,7014,28032,0.1909766656683094,222,7014,36727,0.3567191127160175,222,1383,3877,0.8158356301678777,228,3256,3991,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-PR,1,0,68,1,0,68,23,66,9298,69,5316,69,660,67,38,66,63,66,2,65,18,66,478,69,96,67,90,66,624,67,480,66,36,66,7,65,681,69,0.5717358571735858,69,5316,9298,0.1303574955559944,67,660,5063,0.0733659404179635,67,660,8996,0.1476923076923077,67,96,650,0.7019089574155654,69,478,681,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-RI,3,11,1,3,11,1,9,14,2291,15,1951,14,504,14,30,15,0,14,0,14,0,14,143,15,52,14,55,15,498,14,436,15,6,14,6,14,177,15,0.8515931907463989,14,1951,2291,0.2648449816079873,13,504,1903,0.2272317403065825,14,504,2218,0.3209876543209876,14,52,162,0.807909604519774,15,143,177,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-SC,22,63,2,31,54,2,12,85,11395,87,8947,87,1310,85,186,87,99,85,0,85,3,85,1015,87,295,85,291,87,1307,85,1112,87,3,85,1,85,1301,87,0.7851689337428697,87,8947,11395,0.1482571299230421,85,1310,8836,0.1167141838916607,85,1310,11224,0.2352472089314194,85,295,1254,0.7801691006917756,87,1015,1301,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-SD,11,50,3,14,47,3,88,61,2876,64,1748,64,444,61,45,64,12,61,0,61,0,61,176,64,83,61,89,64,440,61,440,64,4,61,4,61,261,64,0.60778859527121,64,1748,2876,0.2642857142857143,61,444,1680,0.1606367583212735,61,444,2764,0.3387755102040816,61,83,245,0.6743295019157088,64,176,261,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-TN,23,76,45,43,56,45,32,99,19907,144,12813,126,2815,99,311,99,123,99,0,99,4,99,1782,141,688,99,659,99,2791,99,2573,99,24,99,17,99,2134,144,0.6951120273422666,126,12813,18433,0.2356437301188682,99,2815,11946,0.1682304428375067,99,2815,16733,0.343142144638404,99,688,2005,0.8579682233991334,141,1782,2077,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-TX,147,439,5,176,410,5,87,586,71468,591,53428,591,9734,586,1154,591,714,586,16,586,63,586,6577,591,2712,586,2679,591,9612,586,9055,591,122,586,81,586,7939,591,0.747579336206414,591,53428,71468,0.1845343039678477,586,9734,52749,0.1379300572465,586,9734,70572,0.3512043512043512,586,2712,7722,0.8284418692530545,591,6577,7939,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-UT,6,52,1,7,51,1,1,58,6217,59,3625,59,585,58,94,59,10,58,2,58,0,58,482,59,196,58,194,59,577,58,554,59,8,58,0,58,663,59,0.5830786552999839,59,3625,6217,0.1643258426966292,58,585,3560,0.0955726188531285,58,585,6121,0.303875968992248,58,196,645,0.726998491704374,59,482,663,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-VA,30,70,8,39,61,8,33,105,19094,108,13128,108,2195,105,201,108,294,105,1,105,14,105,1467,108,450,105,397,108,2156,105,1702,108,39,105,22,105,2052,108,0.6875458259138997,108,13128,19094,0.1691584463625154,105,2195,12976,0.1165507354112462,105,2195,18833,0.2263581488933601,105,450,1988,0.7149122807017544,108,1467,2052,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-VI,1,1,0,2,0,0,0,2,168,2,88,2,3,2,0,2,0,2,0,2,1,2,13,2,2,2,2,2,2,2,2,2,1,2,0,2,20,2,0.5238095238095238,2,88,168,0.034090909090909,2,3,88,0.0178571428571428,2,3,168,0.1,2,2,20,0.65,2,13,20,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-VT,0,16,1,1,15,1,0,16,1312,17,765,17,11,16,0,17,3,16,0,16,0,16,65,17,2,16,1,17,11,16,9,17,0,16,0,16,111,17,0.583079268292683,17,765,1312,0.014647137150466,16,11,751,0.0086274509803921,16,11,1275,0.0192307692307692,16,2,104,0.5855855855855856,17,65,111,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-WA,13,89,2,20,82,2,24,102,13929,104,9476,104,1118,102,78,104,102,102,0,102,16,102,998,104,264,102,243,104,1100,102,996,104,18,102,13,102,1365,104,0.6803072725967406,104,9476,13929,0.1191262653169952,102,1118,9385,0.0809031044214487,102,1118,13819,0.1965748324646314,102,264,1343,0.7311355311355311,104,998,1365,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-WI,53,93,3,57,89,3,19,146,13998,149,8873,147,1630,144,355,149,85,146,2,146,1,146,1064,147,351,144,372,147,1619,144,1590,147,11,144,4,144,1660,149,0.6437640571718783,147,8873,13783,0.1896230805025593,144,1630,8596,0.1218509381774688,144,1630,13377,0.2222925902469917,144,351,1579,0.6409638554216868,147,1064,1660,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-WV,17,42,4,19,40,4,14,59,6240,63,4554,63,799,59,81,63,47,59,0,59,2,59,520,63,196,59,199,63,791,59,755,63,8,59,1,59,653,63,0.7298076923076923,63,4554,6240,0.1801984663960306,59,799,4434,0.1323505052178234,59,799,6037,0.327212020033389,59,196,599,0.7963246554364471,63,520,653,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-ID,7,44,1,8,43,1,9,51,3768,52,2206,52,480,51,67,52,12,51,1,51,0,51,241,52,115,51,113,52,473,51,463,52,7,51,5,51,318,52,0.5854564755838642,52,2206,3768,0.2238805970149253,51,480,2144,0.1304347826086956,51,480,3680,0.3807947019867549,51,115,302,0.7578616352201258,52,241,318,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-IL,36,147,18,41,142,18,48,196,30979,201,21251,201,5144,196,482,201,401,196,6,196,19,196,2484,201,1060,196,968,201,5040,196,4397,201,104,196,51,196,3566,201,0.6859808257206494,201,21251,30979,0.2447775398524863,196,5144,21015,0.1684127815610267,196,5144,30544,0.3027706369608683,196,1060,3501,0.696578799775659,201,2484,3566,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-IN,29,133,2,34,128,2,10,162,18918,164,13102,164,3127,162,381,164,191,162,3,162,5,162,1712,164,718,162,690,164,3098,162,2803,164,29,162,11,162,2214,164,0.6925679247277725,164,13102,18918,0.2413181046457786,162,3127,12958,0.1668356186309555,162,3127,18743,0.3322535863026377,162,718,2161,0.7732610659439928,164,1712,2214,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-KS,39,107,4,53,93,4,19,147,8897,150,5448,150,1232,147,166,150,68,147,0,147,0,147,701,150,290,147,282,150,1225,147,1092,150,7,147,4,147,866,150,0.6123412386197594,150,5448,8897,0.2281904056306723,147,1232,5399,0.1401433284040495,147,1232,8791,0.3460620525059666,147,290,838,0.8094688221709007,150,701,866,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-KY,4,30,90,7,115,2,18,122,14268,124,8694,124,1806,122,424,124,93,122,1,122,1,122,1261,124,440,122,445,124,1800,122,1635,124,6,122,7,122,1723,124,0.6093355761143818,124,8694,14268,0.2113022113022113,122,1806,8547,0.1282033080144814,122,1806,14087,0.2623732856290995,122,440,1677,0.7318630295995356,124,1261,1723,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-LA,38,173,10,43,168,10,20,211,14074,221,9304,221,1393,221,176,212,14,212,3,212,1,212,1365,221,441,221,434,221,1382,221,2192,221,11,221,8,221,1846,221,0.6610771635640188,221,9304,14074,0.1497205503009458,221,1393,9304,0.0989768367201932,221,1393,14074,0.2388949079089924,221,441,1846,0.7394366197183099,221,1365,1846,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-MA,9,91,1,8,92,1,67,100,19217,101,15086,101,1745,100,235,101,109,100,2,100,1,100,1032,101,381,100,355,101,1710,100,1518,101,35,100,17,100,1476,101,0.7850340844044336,101,15086,19217,0.1164497831164497,100,1745,14985,0.0914234819510661,100,1745,19087,0.2627586206896551,100,381,1450,0.6991869918699187,101,1032,1476,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-MD,9,49,1,11,47,1,42,58,12067,59,9632,59,2134,58,229,59,345,58,1,58,8,58,1052,59,439,58,384,59,2081,58,1646,59,53,58,9,58,1339,59,0.7982099941990553,59,9632,12067,0.2228720626631853,58,2134,9575,0.1785027185278126,58,2134,11955,0.3376923076923077,58,439,1300,0.7856609410007468,59,1052,1339,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-ME,10,21,8,8,23,8,1,38,3307,39,2213,39,230,38,19,39,32,38,0,38,0,38,248,39,64,38,55,39,230,38,183,39,0,38,0,38,328,39,0.6691865739340792,39,2213,3307,0.1055045871559633,38,230,2180,0.0702933985330073,38,230,3272,0.2012578616352201,38,64,318,0.7560975609756098,39,248,328,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-MI,30,129,4,32,127,4,41,159,23598,163,18003,163,3812,159,376,163,162,159,9,159,9,159,2209,163,873,159,842,163,3689,159,3407,163,123,159,24,159,2649,163,0.7629036359013476,163,18003,23598,0.2133303486484974,159,3812,17869,0.1629407993160931,159,3812,23395,0.334610962054427,159,873,2609,0.8338995847489619,163,2209,2649,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-MN,21,116,2,26,111,2,63,138,10358,139,7558,139,1516,138,182,139,70,138,3,138,2,138,806,139,346,138,355,139,1490,138,1358,139,26,138,21,138,1019,139,0.7296775439273991,139,7558,10358,0.2082417582417582,138,1516,7280,0.151630326065213,138,1516,9998,0.365364308342133,138,346,947,0.7909715407262021,139,806,1019,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-MO,47,78,16,62,63,16,22,137,17433,141,13521,141,2611,137,315,141,239,137,5,137,18,137,1615,141,645,137,604,141,2546,137,2307,141,65,137,26,137,1931,141,0.7755980037859233,141,13521,17433,0.1964487247009254,137,2611,13291,0.1523959610109146,137,2611,17133,0.3456591639871382,137,645,1866,0.8363542206110823,141,1615,1931,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-MS,21,85,2,30,76,2,12,106,8799,108,5637,108,1254,106,142,108,30,106,3,106,5,106,718,108,338,106,263,108,1234,106,1066,108,20,106,5,106,881,108,0.6406409819297647,108,5637,8799,0.2250134577426879,106,1254,5573,0.143922873866636,106,1254,8713,0.3953216374269006,106,338,855,0.8149829738933031,108,718,881,2020-12-09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
-WY,8,,2,7,22,2,5,29,1729,31,856,31,198,29,26,31,15,29,0,29,0,29,58,31,32,29,32,31,196,29,189,31,2,29,2,29,137,31,0.4950838635049161,31,856,1729,0.2362768496420047,29,198,838,0.2272985781990521,29,198,1688,0.2519685039370078,29,32,127,0.4233576642335766,31,58,137,2020/12/09,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
diff --git a/testdata/acquisition/covid_hosp/state_daily/metadata.csv b/testdata/acquisition/covid_hosp/state_daily/metadata.csv
index b8080899c..6ca34cca5 100644
--- a/testdata/acquisition/covid_hosp/state_daily/metadata.csv
+++ b/testdata/acquisition/covid_hosp/state_daily/metadata.csv
@@ -1,5 +1,3 @@
Update Date,Days Since Update,User,Rows,Row Change,Columns,Column Change,Metadata Published,Metadata Updates,Column Level Metadata,Column Level Metadata Updates,Archive Link
-03/13/2021 03:31:46 PM,1,Janell So,53,0,61,0,"{""name"": ""COVID-19 Reported Patient Impact and Hospital Capacity by State"", ""description"": ""
The following dataset provides state-aggregated data for hospital utilization. These are derived from reports with facility-level granularity across two main sources: (1) HHS TeleTracking, and (2) reporting provided directly to HHS Protect by state/territorial health departments on behalf of their healthcare facilities.\n\n
The file will be updated daily and provides the latest values reported by each facility within the last four days. This allows for a more comprehensive picture of the hospital utilization within a state by ensuring a hospital is represented, even if they miss a single day of reporting.\n\n
No statistical analysis is applied to account for non-response and/or to account for missing data.\n\n
The below table displays one value for each field (i.e., column). Sometimes, reports for a given facility will be provided to both HHS TeleTracking and HHS Protect. When this occurs, to ensure that there are not duplicate reports, deduplication is applied: specifically, HHS selects the TeleTracking record provided directly by the facility over the state-provided data to HHS Protect."", ""Archive Repository"": ""https://healthdata.gov/d/4cnb-m4rz"", ""Contact Email"": ""HealthData@hhs.gov"", ""Language"": ""English"", ""Contact Name"": ""HealthData.gov Team"", ""Last Update"": ""2021-03-12 23:06"", ""Program Code"": ""009:028 - Department of Health and Human Services - Emerging and Zoonotic Infectious Diseases"", ""Publisher"": ""U.S. Department of Health & Human Services"", ""Is Quality Data"": ""True"", ""Bureau Code"": ""009:00 - Department of Health and Human Services"", ""Public Access Level"": ""Public""}","{""updates"": {""Archive Repository"": ""https://healthdata.gov/d/4cnb-m4rz"", ""Last Update"": ""2021-03-12 23:06""}, ""additions"": {}, ""deletions"": {}}","[{""name"": ""state"", ""dataTypeName"": ""text"", ""description"": ""1. The two digit state code"", ""fieldName"": ""state""}, {""name"": ""critical_staffing_shortage_today_yes"", ""dataTypeName"": ""number"", ""description"": ""2. Number of hospitals reporting a critical staffing shortage today in this state."", ""fieldName"": ""critical_staffing_shortage_today_yes""}, {""name"": ""critical_staffing_shortage_today_no"", ""dataTypeName"": ""number"", ""description"": ""3. Number of hospitals reporting as not having a critical staffing shortage today in this state."", ""fieldName"": ""critical_staffing_shortage_today_no""}, {""name"": ""critical_staffing_shortage_today_not_reported"", ""dataTypeName"": ""number"", ""description"": ""4. Number of hospitals not reporting staffing shortage today status in this state."", ""fieldName"": ""critical_staffing_shortage_today_not_reported""}, {""name"": ""critical_staffing_shortage_anticipated_within_week_yes"", ""dataTypeName"": ""number"", ""description"": ""5. Number of hospitals reporting that they anticipate a critical staffing shortage within a week in this state."", ""fieldName"": ""critical_staffing_shortage_anticipated_within_week_yes""}, {""name"": ""critical_staffing_shortage_anticipated_within_week_no"", ""dataTypeName"": ""number"", ""description"": ""6. Number of hospitals reporting that they do not anticipate a critical staffing shortage within a week in this state."", ""fieldName"": ""critical_staffing_shortage_anticipated_within_week_no""}, {""name"": ""critical_staffing_shortage_anticipated_within_week_not_reported"", ""dataTypeName"": ""number"", ""description"": ""7. Number of hospitals not reporting staffing shortage within week status in this state."", ""fieldName"": ""critical_staffing_shortage_anticipated_within_week_not_reported""}, {""name"": ""hospital_onset_covid"", ""dataTypeName"": ""number"", ""description"": ""8. Total current inpatients with onset of suspected or laboratory-confirmed COVID-19 fourteen or more days after admission for a condition other than COVID-19 in this state."", ""fieldName"": ""hospital_onset_covid""}, {""name"": ""hospital_onset_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""9. Number of hospitals reporting \""hospital_onset_covid\"" in this state"", ""fieldName"": ""hospital_onset_covid_coverage""}, {""name"": ""inpatient_beds"", ""dataTypeName"": ""number"", ""description"": ""10. Reported total number of staffed inpatient beds including all overflow and surge/expansion beds used for inpatients (includes all ICU beds) in this state"", ""fieldName"": ""inpatient_beds""}, {""name"": ""inpatient_beds_coverage"", ""dataTypeName"": ""number"", ""description"": ""11. Number of hospitals reporting \""inpatient_beds\"" in this state"", ""fieldName"": ""inpatient_beds_coverage""}, {""name"": ""inpatient_beds_used"", ""dataTypeName"": ""number"", ""description"": ""12. Reported total number of staffed inpatient beds that are occupied in this state"", ""fieldName"": ""inpatient_beds_used""}, {""name"": ""inpatient_beds_used_coverage"", ""dataTypeName"": ""number"", ""description"": ""13. Number of hospitals reporting \""inpatient_beds_used\"" in this state"", ""fieldName"": ""inpatient_beds_used_coverage""}, {""name"": ""inpatient_beds_used_covid"", ""dataTypeName"": ""number"", ""description"": ""14. Reported patients currently hospitalized in an inpatient bed who have suspected or confirmed COVID-19 in this state"", ""fieldName"": ""inpatient_beds_used_covid""}, {""name"": ""inpatient_beds_used_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""15. Number of hospitals reporting \""inpatient_beds_used_covid\"" in this state"", ""fieldName"": ""inpatient_beds_used_covid_coverage""}, {""name"": ""previous_day_admission_adult_covid_confirmed"", ""dataTypeName"": ""number"", ""description"": ""16. Number of patients who were admitted to an adult inpatient bed on the previous calendar day who had confirmed COVID-19 at the time of admission in this state"", ""fieldName"": ""previous_day_admission_adult_covid_confirmed""}, {""name"": ""previous_day_admission_adult_covid_confirmed_coverage"", ""dataTypeName"": ""number"", ""description"": ""17. Number of hospitals reporting \""previous_day_admission_adult_covid_confirmed\"" in this state"", ""fieldName"": ""previous_day_admission_adult_covid_confirmed_coverage""}, {""name"": ""previous_day_admission_adult_covid_suspected"", ""dataTypeName"": ""number"", ""description"": ""18. Number of patients who were admitted to an adult inpatient bed on the previous calendar day who had suspected COVID-19 at the time of admission in this state"", ""fieldName"": ""previous_day_admission_adult_covid_suspected""}, {""name"": ""previous_day_admission_adult_covid_suspected_coverage"", ""dataTypeName"": ""number"", ""description"": ""19. Number of hospitals reporting \""previous_day_admission_adult_covid_suspected\"" in this state"", ""fieldName"": ""previous_day_admission_adult_covid_suspected_coverage""}, {""name"": ""previous_day_admission_pediatric_covid_confirmed"", ""dataTypeName"": ""number"", ""description"": ""20. Number of pediatric patients who were admitted to an inpatient bed, including NICU, PICU, newborn, and nursery, on the previous calendar day who had confirmed COVID-19 at the time of admission in this state"", ""fieldName"": ""previous_day_admission_pediatric_covid_confirmed""}, {""name"": ""previous_day_admission_pediatric_covid_confirmed_coverage"", ""dataTypeName"": ""number"", ""description"": ""21. Number of hospitals reporting \""previous_day_admission_pediatric_covid_confirmed\"" in this state"", ""fieldName"": ""previous_day_admission_pediatric_covid_confirmed_coverage""}, {""name"": ""previous_day_admission_pediatric_covid_suspected"", ""dataTypeName"": ""number"", ""description"": ""22. Number of pediatric patients who were admitted to an inpatient bed, including NICU, PICU, newborn, and nursery, on the previous calendar day who had suspected COVID-19 at the time of admission in this state"", ""fieldName"": ""previous_day_admission_pediatric_covid_suspected""}, {""name"": ""previous_day_admission_pediatric_covid_suspected_coverage"", ""dataTypeName"": ""number"", ""description"": ""23. Number of hospitals reporting \""previous_day_admission_pediatric_covid_suspected\"" in this state"", ""fieldName"": ""previous_day_admission_pediatric_covid_suspected_coverage""}, {""name"": ""staffed_adult_icu_bed_occupancy"", ""dataTypeName"": ""number"", ""description"": ""24. Reported total number of staffed inpatient adult ICU beds that are occupied in this state"", ""fieldName"": ""staffed_adult_icu_bed_occupancy""}, {""name"": ""staffed_adult_icu_bed_occupancy_coverage"", ""dataTypeName"": ""number"", ""description"": ""25. Number of hospitals reporting \""staffed_adult_icu_bed_occupancy\"" in this state"", ""fieldName"": ""staffed_adult_icu_bed_occupancy_coverage""}, {""name"": ""staffed_icu_adult_patients_confirmed_and_suspected_covid"", ""dataTypeName"": ""number"", ""description"": ""26. Reported patients currently hospitalized in an adult ICU bed who have suspected or confirmed COVID-19 in this state"", ""fieldName"": ""staffed_icu_adult_patients_confirmed_and_suspected_covid""}, {""name"": ""staffed_icu_adult_patients_confirmed_and_suspected_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""27. Number of hospitals reporting \""staffed_icu_adult_patients_confirmed_and_suspected_covid\"" in this state"", ""fieldName"": ""staffed_icu_adult_patients_confirmed_and_suspected_covid_coverage""}, {""name"": ""staffed_icu_adult_patients_confirmed_covid"", ""dataTypeName"": ""number"", ""description"": ""28. Reported patients currently hospitalized in an adult ICU bed who have confirmed COVID-19 in this state"", ""fieldName"": ""staffed_icu_adult_patients_confirmed_covid""}, {""name"": ""staffed_icu_adult_patients_confirmed_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""29. Number of hospitals reporting \""staffed_icu_adult_patients_confirmed_covid\"" in this state"", ""fieldName"": ""staffed_icu_adult_patients_confirmed_covid_coverage""}, {""name"": ""total_adult_patients_hospitalized_confirmed_and_suspected_covid"", ""dataTypeName"": ""number"", ""description"": ""30. Reported patients currently hospitalized in an adult inpatient bed who have laboratory-confirmed or suspected COVID-19. This include those in observation beds."", ""fieldName"": ""total_adult_patients_hospitalized_confirmed_and_suspected_covid""}, {""name"": ""total_adult_patients_hospitalized_confirmed_and_suspected_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""31. Number of hospitals reporting \""total_adult_patients_hospitalized_confirmed_and_suspected_covid\"" in this state"", ""fieldName"": ""total_adult_patients_hospitalized_confirmed_and_suspected_covid_coverage""}, {""name"": ""total_adult_patients_hospitalized_confirmed_covid"", ""dataTypeName"": ""number"", ""description"": ""32. Reported patients currently hospitalized in an adult inpatient bed who have laboratory-confirmed COVID-19. This include those in observation beds."", ""fieldName"": ""total_adult_patients_hospitalized_confirmed_covid""}, {""name"": ""total_adult_patients_hospitalized_confirmed_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""33. Number of hospitals reporting \""total_adult_patients_hospitalized_confirmed_covid\"" in this state"", ""fieldName"": ""total_adult_patients_hospitalized_confirmed_covid_coverage""}, {""name"": ""total_pediatric_patients_hospitalized_confirmed_and_suspected_covid"", ""dataTypeName"": ""number"", ""description"": ""34. Reported patients currently hospitalized in a pediatric inpatient bed, including NICU, newborn, and nursery, who are suspected or laboratory-confirmed-positive for COVID-19. This include those in observation beds."", ""fieldName"": ""total_pediatric_patients_hospitalized_confirmed_and_suspected_covid""}, {""name"": ""total_pediatric_patients_hospitalized_confirmed_and_suspected_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""35. Number of hospitals reporting \""total_pediatric_patients_hospitalized_confirmed_and_suspected_covid\"" in this state"", ""fieldName"": ""total_pediatric_patients_hospitalized_confirmed_and_suspected_covid_coverage""}, {""name"": ""total_pediatric_patients_hospitalized_confirmed_covid"", ""dataTypeName"": ""number"", ""description"": ""36. Reported patients currently hospitalized in a pediatric inpatient bed, including NICU, newborn, and nursery, who are laboratory-confirmed-positive for COVID-19. This include those in observation beds."", ""fieldName"": ""total_pediatric_patients_hospitalized_confirmed_covid""}, {""name"": ""total_pediatric_patients_hospitalized_confirmed_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""37. Number of hospitals reporting \""total_pediatric_patients_hospitalized_confirmed_covid\"" in this state"", ""fieldName"": ""total_pediatric_patients_hospitalized_confirmed_covid_coverage""}, {""name"": ""total_staffed_adult_icu_beds"", ""dataTypeName"": ""number"", ""description"": ""38. Reported total number of staffed inpatient adult ICU beds in this state"", ""fieldName"": ""total_staffed_adult_icu_beds""}, {""name"": ""total_staffed_adult_icu_beds_coverage"", ""dataTypeName"": ""number"", ""description"": ""39. Number of hospitals reporting \""total_staffed_adult_icu_beds\"" in this state"", ""fieldName"": ""total_staffed_adult_icu_beds_coverage""}, {""name"": ""inpatient_beds_utilization"", ""dataTypeName"": ""number"", ""description"": ""40. Percentage of inpatient beds that are being utilized in this state. This number only accounts for hospitals in the state that report both \""inpatient_beds_used\"" and \""inpatient_beds\"" fields."", ""fieldName"": ""inpatient_beds_utilization""}, {""name"": ""inpatient_beds_utilization_coverage"", ""dataTypeName"": ""number"", ""description"": ""41. Number of hospitals reporting both \""inpatient_beds_used\"" and \""inpatient_beds\"""", ""fieldName"": ""inpatient_beds_utilization_coverage""}, {""name"": ""inpatient_beds_utilization_numerator"", ""dataTypeName"": ""number"", ""description"": ""42. Sum of \""inpatient_beds_used\"" for hospitals reporting both \""inpatient_beds_used\"" and \""inpatient_beds\"""", ""fieldName"": ""inpatient_beds_utilization_numerator""}, {""name"": ""inpatient_beds_utilization_denominator"", ""dataTypeName"": ""number"", ""description"": ""43. Sum of \""inpatient_beds\"" for hospitals reporting both \""inpatient_beds_used\"" and \""inpatient_beds\"""", ""fieldName"": ""inpatient_beds_utilization_denominator""}, {""name"": ""percent_of_inpatients_with_covid"", ""dataTypeName"": ""number"", ""description"": ""44. Percentage of inpatient population who have suspected or confirmed COVID-19 in this state. This number only accounts for hospitals in the state that report both \""inpatient_beds_used_covid\"" and \""inpatient_beds_used\"" fields."", ""fieldName"": ""percent_of_inpatients_with_covid""}, {""name"": ""percent_of_inpatients_with_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""45. Number of hospitals reporting both \""inpatient_beds_used_covid\"" and \""inpatient_beds_used\""."", ""fieldName"": ""percent_of_inpatients_with_covid_coverage""}, {""name"": ""percent_of_inpatients_with_covid_numerator"", ""dataTypeName"": ""number"", ""description"": ""46. Sum of \""inpatient_beds_used_covid\"" for hospitals reporting both \""inpatient_beds_used_covid\"" and \""inpatient_beds_used\""."", ""fieldName"": ""percent_of_inpatients_with_covid_numerator""}, {""name"": ""percent_of_inpatients_with_covid_denominator"", ""dataTypeName"": ""number"", ""description"": ""47. Sum of \""inpatient_beds_used\"" for hospitals reporting both \""inpatient_beds_used_covid\"" and \""inpatient_beds_used\""."", ""fieldName"": ""percent_of_inpatients_with_covid_denominator""}, {""name"": ""inpatient_bed_covid_utilization"", ""dataTypeName"": ""number"", ""description"": ""48. Percentage of total (used/available) inpatient beds currently utilized by patients who have suspected or confirmed COVID-19 in this state. This number only accounts for hospitals in the state that report both \""inpatient_beds_used_covid\"" and \""inpatient_beds\"" fields."", ""fieldName"": ""inpatient_bed_covid_utilization""}, {""name"": ""inpatient_bed_covid_utilization_coverage"", ""dataTypeName"": ""number"", ""description"": ""49. Number of hospitals reporting both \""inpatient_beds_used_covid\"" and \""inpatient_beds\""."", ""fieldName"": ""inpatient_bed_covid_utilization_coverage""}, {""name"": ""inpatient_bed_covid_utilization_numerator"", ""dataTypeName"": ""number"", ""description"": ""50. Sum of \""inpatient_beds_used_covid\"" for hospitals reporting both \""inpatient_beds_used_covid\"" and \""inpatient_beds\""."", ""fieldName"": ""inpatient_bed_covid_utilization_numerator""}, {""name"": ""inpatient_bed_covid_utilization_denominator"", ""dataTypeName"": ""number"", ""description"": ""51. Sum of \""inpatient_beds\"" for hospitals reporting both \""inpatient_beds_used_covid\"" and \""inpatient_beds\""."", ""fieldName"": ""inpatient_bed_covid_utilization_denominator""}, {""name"": ""adult_icu_bed_covid_utilization"", ""dataTypeName"": ""number"", ""description"": ""52. Percentage of total staffed adult ICU beds currently utilized by patients who have suspected or confirmed COVID-19 in this state. This number only accounts for hospitals in the state that report both \""staffed_icu_adult_patients_confirmed_and_suspected_covid\"" and \""total_staffed_adult_icu_beds\"" fields."", ""fieldName"": ""adult_icu_bed_covid_utilization""}, {""name"": ""adult_icu_bed_covid_utilization_coverage"", ""dataTypeName"": ""number"", ""description"": ""53. Number of hospitals reporting both both \""staffed_icu_adult_patients_confirmed_and_suspected_covid\"" and \""total_staffed_adult_icu_beds\""."", ""fieldName"": ""adult_icu_bed_covid_utilization_coverage""}, {""name"": ""adult_icu_bed_covid_utilization_numerator"", ""dataTypeName"": ""number"", ""description"": ""54. Sum of \""staffed_icu_adult_patients_confirmed_and_suspected_covid\"" for hospitals reporting both \""staffed_icu_adult_patients_confirmed_and_suspected_covid\"" and \""total_staffed_adult_icu_beds\""."", ""fieldName"": ""adult_icu_bed_covid_utilization_numerator""}, {""name"": ""adult_icu_bed_covid_utilization_denominator"", ""dataTypeName"": ""number"", ""description"": ""55. Sum of \""total_staffed_adult_icu_beds\"" for hospitals reporting both \""staffed_icu_adult_patients_confirmed_and_suspected_covid\"" and \""total_staffed_adult_icu_beds\""."", ""fieldName"": ""adult_icu_bed_covid_utilization_denominator""}, {""name"": ""adult_icu_bed_utilization"", ""dataTypeName"": ""number"", ""description"": ""56. Percentage of staffed adult ICU beds that are being utilized in this state. This number only accounts for hospitals in the state that report both \""staffed_adult_icu_bed_occupancy\"" and \""total_staffed_adult_icu_beds\"" fields."", ""fieldName"": ""adult_icu_bed_utilization""}, {""name"": ""adult_icu_bed_utilization_coverage"", ""dataTypeName"": ""number"", ""description"": ""57. Number of hospitals reporting both both \""staffed_adult_icu_bed_occupancy\"" and \""total_staffed_adult_icu_beds\""."", ""fieldName"": ""adult_icu_bed_utilization_coverage""}, {""name"": ""adult_icu_bed_utilization_numerator"", ""dataTypeName"": ""number"", ""description"": ""58. Sum of \""staffed_adult_icu_bed_occupancy\"" for hospitals reporting both \""staffed_adult_icu_bed_occupancy\"" and \""total_staffed_adult_icu_beds\""."", ""fieldName"": ""adult_icu_bed_utilization_numerator""}, {""name"": ""adult_icu_bed_utilization_denominator"", ""dataTypeName"": ""number"", ""description"": ""59. Sum of \""total_staffed_adult_icu_beds\"" for hospitals reporting both \""staffed_adult_icu_bed_occupancy\"" and \""total_staffed_adult_icu_beds\""."", ""fieldName"": ""adult_icu_bed_utilization_denominator""}, {""name"": ""reporting_cutoff_start"", ""dataTypeName"": ""calendar_date"", ""description"": ""60. Look back date start - The latest reports from each hospital is summed for this report starting with this date."", ""fieldName"": ""reporting_cutoff_start""}, {""name"": ""geocoded_state"", ""dataTypeName"": ""point"", ""description"": """", ""fieldName"": ""geocoded_state""}]","{""updates"": [], ""additions"": [], ""deletions"": []}",https://us-dhhs-aa.s3.us-east-2.amazonaws.com/6xf2-c3ie_2021-03-13T15-31-46.csv
-03/15/2021 00:00:00 AM,0,Stormy Kick,53,0,61,0,"{""name"": ""COVID-19 Reported Patient Impact and Hospital Capacity by State"", ""description"": ""
The following dataset provides state-aggregated data for hospital utilization. These are derived from reports with facility-level granularity across two main sources: (1) HHS TeleTracking, and (2) reporting provided directly to HHS Protect by state/territorial health departments on behalf of their healthcare facilities.\n\n
The file will be updated daily and provides the latest values reported by each facility within the last four days. This allows for a more comprehensive picture of the hospital utilization within a state by ensuring a hospital is represented, even if they miss a single day of reporting.\n\n
No statistical analysis is applied to account for non-response and/or to account for missing data.\n\n
The below table displays one value for each field (i.e., column). Sometimes, reports for a given facility will be provided to both HHS TeleTracking and HHS Protect. When this occurs, to ensure that there are not duplicate reports, deduplication is applied: specifically, HHS selects the TeleTracking record provided directly by the facility over the state-provided data to HHS Protect."", ""Archive Repository"": ""https://healthdata.gov/d/4cnb-m4rz"", ""Contact Email"": ""HealthData@hhs.gov"", ""Language"": ""English"", ""Contact Name"": ""HealthData.gov Team"", ""Last Update"": ""2021-03-15 23:08"", ""Program Code"": ""009:028"", ""Publisher"": ""U.S. Department of Health & Human Services"", ""Is Quality Data"": ""true"", ""Bureau Code"": ""009:0"", ""Public Access Level"": ""public""}","{""updates"": {""Last Update"": ""2021-03-15 23:08""}, ""additions"": {}, ""deletions"": {}}","[{""name"": ""state"", ""dataTypeName"": ""text"", ""description"": ""1. The two digit state code"", ""fieldName"": ""state""}, {""name"": ""critical_staffing_shortage_today_yes"", ""dataTypeName"": ""number"", ""description"": ""2. Number of hospitals reporting a critical staffing shortage today in this state."", ""fieldName"": ""critical_staffing_shortage_today_yes""}, {""name"": ""critical_staffing_shortage_today_no"", ""dataTypeName"": ""number"", ""description"": ""3. Number of hospitals reporting as not having a critical staffing shortage today in this state."", ""fieldName"": ""critical_staffing_shortage_today_no""}, {""name"": ""critical_staffing_shortage_today_not_reported"", ""dataTypeName"": ""number"", ""description"": ""4. Number of hospitals not reporting staffing shortage today status in this state."", ""fieldName"": ""critical_staffing_shortage_today_not_reported""}, {""name"": ""critical_staffing_shortage_anticipated_within_week_yes"", ""dataTypeName"": ""number"", ""description"": ""5. Number of hospitals reporting that they anticipate a critical staffing shortage within a week in this state."", ""fieldName"": ""critical_staffing_shortage_anticipated_within_week_yes""}, {""name"": ""critical_staffing_shortage_anticipated_within_week_no"", ""dataTypeName"": ""number"", ""description"": ""6. Number of hospitals reporting that they do not anticipate a critical staffing shortage within a week in this state."", ""fieldName"": ""critical_staffing_shortage_anticipated_within_week_no""}, {""name"": ""critical_staffing_shortage_anticipated_within_week_not_reported"", ""dataTypeName"": ""number"", ""description"": ""7. Number of hospitals not reporting staffing shortage within week status in this state."", ""fieldName"": ""critical_staffing_shortage_anticipated_within_week_not_reported""}, {""name"": ""hospital_onset_covid"", ""dataTypeName"": ""number"", ""description"": ""8. Total current inpatients with onset of suspected or laboratory-confirmed COVID-19 fourteen or more days after admission for a condition other than COVID-19 in this state."", ""fieldName"": ""hospital_onset_covid""}, {""name"": ""hospital_onset_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""9. Number of hospitals reporting \""hospital_onset_covid\"" in this state"", ""fieldName"": ""hospital_onset_covid_coverage""}, {""name"": ""inpatient_beds"", ""dataTypeName"": ""number"", ""description"": ""10. Reported total number of staffed inpatient beds including all overflow and surge/expansion beds used for inpatients (includes all ICU beds) in this state"", ""fieldName"": ""inpatient_beds""}, {""name"": ""inpatient_beds_coverage"", ""dataTypeName"": ""number"", ""description"": ""11. Number of hospitals reporting \""inpatient_beds\"" in this state"", ""fieldName"": ""inpatient_beds_coverage""}, {""name"": ""inpatient_beds_used"", ""dataTypeName"": ""number"", ""description"": ""12. Reported total number of staffed inpatient beds that are occupied in this state"", ""fieldName"": ""inpatient_beds_used""}, {""name"": ""inpatient_beds_used_coverage"", ""dataTypeName"": ""number"", ""description"": ""13. Number of hospitals reporting \""inpatient_beds_used\"" in this state"", ""fieldName"": ""inpatient_beds_used_coverage""}, {""name"": ""inpatient_beds_used_covid"", ""dataTypeName"": ""number"", ""description"": ""14. Reported patients currently hospitalized in an inpatient bed who have suspected or confirmed COVID-19 in this state"", ""fieldName"": ""inpatient_beds_used_covid""}, {""name"": ""inpatient_beds_used_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""15. Number of hospitals reporting \""inpatient_beds_used_covid\"" in this state"", ""fieldName"": ""inpatient_beds_used_covid_coverage""}, {""name"": ""previous_day_admission_adult_covid_confirmed"", ""dataTypeName"": ""number"", ""description"": ""16. Number of patients who were admitted to an adult inpatient bed on the previous calendar day who had confirmed COVID-19 at the time of admission in this state"", ""fieldName"": ""previous_day_admission_adult_covid_confirmed""}, {""name"": ""previous_day_admission_adult_covid_confirmed_coverage"", ""dataTypeName"": ""number"", ""description"": ""17. Number of hospitals reporting \""previous_day_admission_adult_covid_confirmed\"" in this state"", ""fieldName"": ""previous_day_admission_adult_covid_confirmed_coverage""}, {""name"": ""previous_day_admission_adult_covid_suspected"", ""dataTypeName"": ""number"", ""description"": ""18. Number of patients who were admitted to an adult inpatient bed on the previous calendar day who had suspected COVID-19 at the time of admission in this state"", ""fieldName"": ""previous_day_admission_adult_covid_suspected""}, {""name"": ""previous_day_admission_adult_covid_suspected_coverage"", ""dataTypeName"": ""number"", ""description"": ""19. Number of hospitals reporting \""previous_day_admission_adult_covid_suspected\"" in this state"", ""fieldName"": ""previous_day_admission_adult_covid_suspected_coverage""}, {""name"": ""previous_day_admission_pediatric_covid_confirmed"", ""dataTypeName"": ""number"", ""description"": ""20. Number of pediatric patients who were admitted to an inpatient bed, including NICU, PICU, newborn, and nursery, on the previous calendar day who had confirmed COVID-19 at the time of admission in this state"", ""fieldName"": ""previous_day_admission_pediatric_covid_confirmed""}, {""name"": ""previous_day_admission_pediatric_covid_confirmed_coverage"", ""dataTypeName"": ""number"", ""description"": ""21. Number of hospitals reporting \""previous_day_admission_pediatric_covid_confirmed\"" in this state"", ""fieldName"": ""previous_day_admission_pediatric_covid_confirmed_coverage""}, {""name"": ""previous_day_admission_pediatric_covid_suspected"", ""dataTypeName"": ""number"", ""description"": ""22. Number of pediatric patients who were admitted to an inpatient bed, including NICU, PICU, newborn, and nursery, on the previous calendar day who had suspected COVID-19 at the time of admission in this state"", ""fieldName"": ""previous_day_admission_pediatric_covid_suspected""}, {""name"": ""previous_day_admission_pediatric_covid_suspected_coverage"", ""dataTypeName"": ""number"", ""description"": ""23. Number of hospitals reporting \""previous_day_admission_pediatric_covid_suspected\"" in this state"", ""fieldName"": ""previous_day_admission_pediatric_covid_suspected_coverage""}, {""name"": ""staffed_adult_icu_bed_occupancy"", ""dataTypeName"": ""number"", ""description"": ""24. Reported total number of staffed inpatient adult ICU beds that are occupied in this state"", ""fieldName"": ""staffed_adult_icu_bed_occupancy""}, {""name"": ""staffed_adult_icu_bed_occupancy_coverage"", ""dataTypeName"": ""number"", ""description"": ""25. Number of hospitals reporting \""staffed_adult_icu_bed_occupancy\"" in this state"", ""fieldName"": ""staffed_adult_icu_bed_occupancy_coverage""}, {""name"": ""staffed_icu_adult_patients_confirmed_and_suspected_covid"", ""dataTypeName"": ""number"", ""description"": ""26. Reported patients currently hospitalized in an adult ICU bed who have suspected or confirmed COVID-19 in this state"", ""fieldName"": ""staffed_icu_adult_patients_confirmed_and_suspected_covid""}, {""name"": ""staffed_icu_adult_patients_confirmed_and_suspected_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""27. Number of hospitals reporting \""staffed_icu_adult_patients_confirmed_and_suspected_covid\"" in this state"", ""fieldName"": ""staffed_icu_adult_patients_confirmed_and_suspected_covid_coverage""}, {""name"": ""staffed_icu_adult_patients_confirmed_covid"", ""dataTypeName"": ""number"", ""description"": ""28. Reported patients currently hospitalized in an adult ICU bed who have confirmed COVID-19 in this state"", ""fieldName"": ""staffed_icu_adult_patients_confirmed_covid""}, {""name"": ""staffed_icu_adult_patients_confirmed_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""29. Number of hospitals reporting \""staffed_icu_adult_patients_confirmed_covid\"" in this state"", ""fieldName"": ""staffed_icu_adult_patients_confirmed_covid_coverage""}, {""name"": ""total_adult_patients_hospitalized_confirmed_and_suspected_covid"", ""dataTypeName"": ""number"", ""description"": ""30. Reported patients currently hospitalized in an adult inpatient bed who have laboratory-confirmed or suspected COVID-19. This include those in observation beds."", ""fieldName"": ""total_adult_patients_hospitalized_confirmed_and_suspected_covid""}, {""name"": ""total_adult_patients_hospitalized_confirmed_and_suspected_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""31. Number of hospitals reporting \""total_adult_patients_hospitalized_confirmed_and_suspected_covid\"" in this state"", ""fieldName"": ""total_adult_patients_hospitalized_confirmed_and_suspected_covid_coverage""}, {""name"": ""total_adult_patients_hospitalized_confirmed_covid"", ""dataTypeName"": ""number"", ""description"": ""32. Reported patients currently hospitalized in an adult inpatient bed who have laboratory-confirmed COVID-19. This include those in observation beds."", ""fieldName"": ""total_adult_patients_hospitalized_confirmed_covid""}, {""name"": ""total_adult_patients_hospitalized_confirmed_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""33. Number of hospitals reporting \""total_adult_patients_hospitalized_confirmed_covid\"" in this state"", ""fieldName"": ""total_adult_patients_hospitalized_confirmed_covid_coverage""}, {""name"": ""total_pediatric_patients_hospitalized_confirmed_and_suspected_covid"", ""dataTypeName"": ""number"", ""description"": ""34. Reported patients currently hospitalized in a pediatric inpatient bed, including NICU, newborn, and nursery, who are suspected or laboratory-confirmed-positive for COVID-19. This include those in observation beds."", ""fieldName"": ""total_pediatric_patients_hospitalized_confirmed_and_suspected_covid""}, {""name"": ""total_pediatric_patients_hospitalized_confirmed_and_suspected_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""35. Number of hospitals reporting \""total_pediatric_patients_hospitalized_confirmed_and_suspected_covid\"" in this state"", ""fieldName"": ""total_pediatric_patients_hospitalized_confirmed_and_suspected_covid_coverage""}, {""name"": ""total_pediatric_patients_hospitalized_confirmed_covid"", ""dataTypeName"": ""number"", ""description"": ""36. Reported patients currently hospitalized in a pediatric inpatient bed, including NICU, newborn, and nursery, who are laboratory-confirmed-positive for COVID-19. This include those in observation beds."", ""fieldName"": ""total_pediatric_patients_hospitalized_confirmed_covid""}, {""name"": ""total_pediatric_patients_hospitalized_confirmed_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""37. Number of hospitals reporting \""total_pediatric_patients_hospitalized_confirmed_covid\"" in this state"", ""fieldName"": ""total_pediatric_patients_hospitalized_confirmed_covid_coverage""}, {""name"": ""total_staffed_adult_icu_beds"", ""dataTypeName"": ""number"", ""description"": ""38. Reported total number of staffed inpatient adult ICU beds in this state"", ""fieldName"": ""total_staffed_adult_icu_beds""}, {""name"": ""total_staffed_adult_icu_beds_coverage"", ""dataTypeName"": ""number"", ""description"": ""39. Number of hospitals reporting \""total_staffed_adult_icu_beds\"" in this state"", ""fieldName"": ""total_staffed_adult_icu_beds_coverage""}, {""name"": ""inpatient_beds_utilization"", ""dataTypeName"": ""number"", ""description"": ""40. Percentage of inpatient beds that are being utilized in this state. This number only accounts for hospitals in the state that report both \""inpatient_beds_used\"" and \""inpatient_beds\"" fields."", ""fieldName"": ""inpatient_beds_utilization""}, {""name"": ""inpatient_beds_utilization_coverage"", ""dataTypeName"": ""number"", ""description"": ""41. Number of hospitals reporting both \""inpatient_beds_used\"" and \""inpatient_beds\"""", ""fieldName"": ""inpatient_beds_utilization_coverage""}, {""name"": ""inpatient_beds_utilization_numerator"", ""dataTypeName"": ""number"", ""description"": ""42. Sum of \""inpatient_beds_used\"" for hospitals reporting both \""inpatient_beds_used\"" and \""inpatient_beds\"""", ""fieldName"": ""inpatient_beds_utilization_numerator""}, {""name"": ""inpatient_beds_utilization_denominator"", ""dataTypeName"": ""number"", ""description"": ""43. Sum of \""inpatient_beds\"" for hospitals reporting both \""inpatient_beds_used\"" and \""inpatient_beds\"""", ""fieldName"": ""inpatient_beds_utilization_denominator""}, {""name"": ""percent_of_inpatients_with_covid"", ""dataTypeName"": ""number"", ""description"": ""44. Percentage of inpatient population who have suspected or confirmed COVID-19 in this state. This number only accounts for hospitals in the state that report both \""inpatient_beds_used_covid\"" and \""inpatient_beds_used\"" fields."", ""fieldName"": ""percent_of_inpatients_with_covid""}, {""name"": ""percent_of_inpatients_with_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""45. Number of hospitals reporting both \""inpatient_beds_used_covid\"" and \""inpatient_beds_used\""."", ""fieldName"": ""percent_of_inpatients_with_covid_coverage""}, {""name"": ""percent_of_inpatients_with_covid_numerator"", ""dataTypeName"": ""number"", ""description"": ""46. Sum of \""inpatient_beds_used_covid\"" for hospitals reporting both \""inpatient_beds_used_covid\"" and \""inpatient_beds_used\""."", ""fieldName"": ""percent_of_inpatients_with_covid_numerator""}, {""name"": ""percent_of_inpatients_with_covid_denominator"", ""dataTypeName"": ""number"", ""description"": ""47. Sum of \""inpatient_beds_used\"" for hospitals reporting both \""inpatient_beds_used_covid\"" and \""inpatient_beds_used\""."", ""fieldName"": ""percent_of_inpatients_with_covid_denominator""}, {""name"": ""inpatient_bed_covid_utilization"", ""dataTypeName"": ""number"", ""description"": ""48. Percentage of total (used/available) inpatient beds currently utilized by patients who have suspected or confirmed COVID-19 in this state. This number only accounts for hospitals in the state that report both \""inpatient_beds_used_covid\"" and \""inpatient_beds\"" fields."", ""fieldName"": ""inpatient_bed_covid_utilization""}, {""name"": ""inpatient_bed_covid_utilization_coverage"", ""dataTypeName"": ""number"", ""description"": ""49. Number of hospitals reporting both \""inpatient_beds_used_covid\"" and \""inpatient_beds\""."", ""fieldName"": ""inpatient_bed_covid_utilization_coverage""}, {""name"": ""inpatient_bed_covid_utilization_numerator"", ""dataTypeName"": ""number"", ""description"": ""50. Sum of \""inpatient_beds_used_covid\"" for hospitals reporting both \""inpatient_beds_used_covid\"" and \""inpatient_beds\""."", ""fieldName"": ""inpatient_bed_covid_utilization_numerator""}, {""name"": ""inpatient_bed_covid_utilization_denominator"", ""dataTypeName"": ""number"", ""description"": ""51. Sum of \""inpatient_beds\"" for hospitals reporting both \""inpatient_beds_used_covid\"" and \""inpatient_beds\""."", ""fieldName"": ""inpatient_bed_covid_utilization_denominator""}, {""name"": ""adult_icu_bed_covid_utilization"", ""dataTypeName"": ""number"", ""description"": ""52. Percentage of total staffed adult ICU beds currently utilized by patients who have suspected or confirmed COVID-19 in this state. This number only accounts for hospitals in the state that report both \""staffed_icu_adult_patients_confirmed_and_suspected_covid\"" and \""total_staffed_adult_icu_beds\"" fields."", ""fieldName"": ""adult_icu_bed_covid_utilization""}, {""name"": ""adult_icu_bed_covid_utilization_coverage"", ""dataTypeName"": ""number"", ""description"": ""53. Number of hospitals reporting both both \""staffed_icu_adult_patients_confirmed_and_suspected_covid\"" and \""total_staffed_adult_icu_beds\""."", ""fieldName"": ""adult_icu_bed_covid_utilization_coverage""}, {""name"": ""adult_icu_bed_covid_utilization_numerator"", ""dataTypeName"": ""number"", ""description"": ""54. Sum of \""staffed_icu_adult_patients_confirmed_and_suspected_covid\"" for hospitals reporting both \""staffed_icu_adult_patients_confirmed_and_suspected_covid\"" and \""total_staffed_adult_icu_beds\""."", ""fieldName"": ""adult_icu_bed_covid_utilization_numerator""}, {""name"": ""adult_icu_bed_covid_utilization_denominator"", ""dataTypeName"": ""number"", ""description"": ""55. Sum of \""total_staffed_adult_icu_beds\"" for hospitals reporting both \""staffed_icu_adult_patients_confirmed_and_suspected_covid\"" and \""total_staffed_adult_icu_beds\""."", ""fieldName"": ""adult_icu_bed_covid_utilization_denominator""}, {""name"": ""adult_icu_bed_utilization"", ""dataTypeName"": ""number"", ""description"": ""56. Percentage of staffed adult ICU beds that are being utilized in this state. This number only accounts for hospitals in the state that report both \""staffed_adult_icu_bed_occupancy\"" and \""total_staffed_adult_icu_beds\"" fields."", ""fieldName"": ""adult_icu_bed_utilization""}, {""name"": ""adult_icu_bed_utilization_coverage"", ""dataTypeName"": ""number"", ""description"": ""57. Number of hospitals reporting both both \""staffed_adult_icu_bed_occupancy\"" and \""total_staffed_adult_icu_beds\""."", ""fieldName"": ""adult_icu_bed_utilization_coverage""}, {""name"": ""adult_icu_bed_utilization_numerator"", ""dataTypeName"": ""number"", ""description"": ""58. Sum of \""staffed_adult_icu_bed_occupancy\"" for hospitals reporting both \""staffed_adult_icu_bed_occupancy\"" and \""total_staffed_adult_icu_beds\""."", ""fieldName"": ""adult_icu_bed_utilization_numerator""}, {""name"": ""adult_icu_bed_utilization_denominator"", ""dataTypeName"": ""number"", ""description"": ""59. Sum of \""total_staffed_adult_icu_beds\"" for hospitals reporting both \""staffed_adult_icu_bed_occupancy\"" and \""total_staffed_adult_icu_beds\""."", ""fieldName"": ""adult_icu_bed_utilization_denominator""}, {""name"": ""reporting_cutoff_start"", ""dataTypeName"": ""calendar_date"", ""description"": ""60. Look back date start - The latest reports from each hospital is summed for this report starting with this date."", ""fieldName"": ""reporting_cutoff_start""}, {""name"": ""geocoded_state"", ""dataTypeName"": ""point"", ""description"": """", ""fieldName"": ""geocoded_state""}]","{""updates"": [], ""additions"": [], ""deletions"": []}",https://test0.csv
-03/15/2021 00:00:01 AM,0,Stormy Kick,53,0,61,0,"{""name"": ""COVID-19 Reported Patient Impact and Hospital Capacity by State"", ""description"": ""
The following dataset provides state-aggregated data for hospital utilization. These are derived from reports with facility-level granularity across two main sources: (1) HHS TeleTracking, and (2) reporting provided directly to HHS Protect by state/territorial health departments on behalf of their healthcare facilities.\n\n
The file will be updated daily and provides the latest values reported by each facility within the last four days. This allows for a more comprehensive picture of the hospital utilization within a state by ensuring a hospital is represented, even if they miss a single day of reporting.\n\n
No statistical analysis is applied to account for non-response and/or to account for missing data.\n\n
The below table displays one value for each field (i.e., column). Sometimes, reports for a given facility will be provided to both HHS TeleTracking and HHS Protect. When this occurs, to ensure that there are not duplicate reports, deduplication is applied: specifically, HHS selects the TeleTracking record provided directly by the facility over the state-provided data to HHS Protect."", ""Archive Repository"": ""https://healthdata.gov/d/4cnb-m4rz"", ""Contact Email"": ""HealthData@hhs.gov"", ""Language"": ""English"", ""Contact Name"": ""HealthData.gov Team"", ""Last Update"": ""2021-03-15 23:08"", ""Program Code"": ""009:028"", ""Publisher"": ""U.S. Department of Health & Human Services"", ""Is Quality Data"": ""true"", ""Bureau Code"": ""009:0"", ""Public Access Level"": ""public""}","{""updates"": {""Last Update"": ""2021-03-15 23:08""}, ""additions"": {}, ""deletions"": {}}","[{""name"": ""state"", ""dataTypeName"": ""text"", ""description"": ""1. The two digit state code"", ""fieldName"": ""state""}, {""name"": ""critical_staffing_shortage_today_yes"", ""dataTypeName"": ""number"", ""description"": ""2. Number of hospitals reporting a critical staffing shortage today in this state."", ""fieldName"": ""critical_staffing_shortage_today_yes""}, {""name"": ""critical_staffing_shortage_today_no"", ""dataTypeName"": ""number"", ""description"": ""3. Number of hospitals reporting as not having a critical staffing shortage today in this state."", ""fieldName"": ""critical_staffing_shortage_today_no""}, {""name"": ""critical_staffing_shortage_today_not_reported"", ""dataTypeName"": ""number"", ""description"": ""4. Number of hospitals not reporting staffing shortage today status in this state."", ""fieldName"": ""critical_staffing_shortage_today_not_reported""}, {""name"": ""critical_staffing_shortage_anticipated_within_week_yes"", ""dataTypeName"": ""number"", ""description"": ""5. Number of hospitals reporting that they anticipate a critical staffing shortage within a week in this state."", ""fieldName"": ""critical_staffing_shortage_anticipated_within_week_yes""}, {""name"": ""critical_staffing_shortage_anticipated_within_week_no"", ""dataTypeName"": ""number"", ""description"": ""6. Number of hospitals reporting that they do not anticipate a critical staffing shortage within a week in this state."", ""fieldName"": ""critical_staffing_shortage_anticipated_within_week_no""}, {""name"": ""critical_staffing_shortage_anticipated_within_week_not_reported"", ""dataTypeName"": ""number"", ""description"": ""7. Number of hospitals not reporting staffing shortage within week status in this state."", ""fieldName"": ""critical_staffing_shortage_anticipated_within_week_not_reported""}, {""name"": ""hospital_onset_covid"", ""dataTypeName"": ""number"", ""description"": ""8. Total current inpatients with onset of suspected or laboratory-confirmed COVID-19 fourteen or more days after admission for a condition other than COVID-19 in this state."", ""fieldName"": ""hospital_onset_covid""}, {""name"": ""hospital_onset_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""9. Number of hospitals reporting \""hospital_onset_covid\"" in this state"", ""fieldName"": ""hospital_onset_covid_coverage""}, {""name"": ""inpatient_beds"", ""dataTypeName"": ""number"", ""description"": ""10. Reported total number of staffed inpatient beds including all overflow and surge/expansion beds used for inpatients (includes all ICU beds) in this state"", ""fieldName"": ""inpatient_beds""}, {""name"": ""inpatient_beds_coverage"", ""dataTypeName"": ""number"", ""description"": ""11. Number of hospitals reporting \""inpatient_beds\"" in this state"", ""fieldName"": ""inpatient_beds_coverage""}, {""name"": ""inpatient_beds_used"", ""dataTypeName"": ""number"", ""description"": ""12. Reported total number of staffed inpatient beds that are occupied in this state"", ""fieldName"": ""inpatient_beds_used""}, {""name"": ""inpatient_beds_used_coverage"", ""dataTypeName"": ""number"", ""description"": ""13. Number of hospitals reporting \""inpatient_beds_used\"" in this state"", ""fieldName"": ""inpatient_beds_used_coverage""}, {""name"": ""inpatient_beds_used_covid"", ""dataTypeName"": ""number"", ""description"": ""14. Reported patients currently hospitalized in an inpatient bed who have suspected or confirmed COVID-19 in this state"", ""fieldName"": ""inpatient_beds_used_covid""}, {""name"": ""inpatient_beds_used_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""15. Number of hospitals reporting \""inpatient_beds_used_covid\"" in this state"", ""fieldName"": ""inpatient_beds_used_covid_coverage""}, {""name"": ""previous_day_admission_adult_covid_confirmed"", ""dataTypeName"": ""number"", ""description"": ""16. Number of patients who were admitted to an adult inpatient bed on the previous calendar day who had confirmed COVID-19 at the time of admission in this state"", ""fieldName"": ""previous_day_admission_adult_covid_confirmed""}, {""name"": ""previous_day_admission_adult_covid_confirmed_coverage"", ""dataTypeName"": ""number"", ""description"": ""17. Number of hospitals reporting \""previous_day_admission_adult_covid_confirmed\"" in this state"", ""fieldName"": ""previous_day_admission_adult_covid_confirmed_coverage""}, {""name"": ""previous_day_admission_adult_covid_suspected"", ""dataTypeName"": ""number"", ""description"": ""18. Number of patients who were admitted to an adult inpatient bed on the previous calendar day who had suspected COVID-19 at the time of admission in this state"", ""fieldName"": ""previous_day_admission_adult_covid_suspected""}, {""name"": ""previous_day_admission_adult_covid_suspected_coverage"", ""dataTypeName"": ""number"", ""description"": ""19. Number of hospitals reporting \""previous_day_admission_adult_covid_suspected\"" in this state"", ""fieldName"": ""previous_day_admission_adult_covid_suspected_coverage""}, {""name"": ""previous_day_admission_pediatric_covid_confirmed"", ""dataTypeName"": ""number"", ""description"": ""20. Number of pediatric patients who were admitted to an inpatient bed, including NICU, PICU, newborn, and nursery, on the previous calendar day who had confirmed COVID-19 at the time of admission in this state"", ""fieldName"": ""previous_day_admission_pediatric_covid_confirmed""}, {""name"": ""previous_day_admission_pediatric_covid_confirmed_coverage"", ""dataTypeName"": ""number"", ""description"": ""21. Number of hospitals reporting \""previous_day_admission_pediatric_covid_confirmed\"" in this state"", ""fieldName"": ""previous_day_admission_pediatric_covid_confirmed_coverage""}, {""name"": ""previous_day_admission_pediatric_covid_suspected"", ""dataTypeName"": ""number"", ""description"": ""22. Number of pediatric patients who were admitted to an inpatient bed, including NICU, PICU, newborn, and nursery, on the previous calendar day who had suspected COVID-19 at the time of admission in this state"", ""fieldName"": ""previous_day_admission_pediatric_covid_suspected""}, {""name"": ""previous_day_admission_pediatric_covid_suspected_coverage"", ""dataTypeName"": ""number"", ""description"": ""23. Number of hospitals reporting \""previous_day_admission_pediatric_covid_suspected\"" in this state"", ""fieldName"": ""previous_day_admission_pediatric_covid_suspected_coverage""}, {""name"": ""staffed_adult_icu_bed_occupancy"", ""dataTypeName"": ""number"", ""description"": ""24. Reported total number of staffed inpatient adult ICU beds that are occupied in this state"", ""fieldName"": ""staffed_adult_icu_bed_occupancy""}, {""name"": ""staffed_adult_icu_bed_occupancy_coverage"", ""dataTypeName"": ""number"", ""description"": ""25. Number of hospitals reporting \""staffed_adult_icu_bed_occupancy\"" in this state"", ""fieldName"": ""staffed_adult_icu_bed_occupancy_coverage""}, {""name"": ""staffed_icu_adult_patients_confirmed_and_suspected_covid"", ""dataTypeName"": ""number"", ""description"": ""26. Reported patients currently hospitalized in an adult ICU bed who have suspected or confirmed COVID-19 in this state"", ""fieldName"": ""staffed_icu_adult_patients_confirmed_and_suspected_covid""}, {""name"": ""staffed_icu_adult_patients_confirmed_and_suspected_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""27. Number of hospitals reporting \""staffed_icu_adult_patients_confirmed_and_suspected_covid\"" in this state"", ""fieldName"": ""staffed_icu_adult_patients_confirmed_and_suspected_covid_coverage""}, {""name"": ""staffed_icu_adult_patients_confirmed_covid"", ""dataTypeName"": ""number"", ""description"": ""28. Reported patients currently hospitalized in an adult ICU bed who have confirmed COVID-19 in this state"", ""fieldName"": ""staffed_icu_adult_patients_confirmed_covid""}, {""name"": ""staffed_icu_adult_patients_confirmed_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""29. Number of hospitals reporting \""staffed_icu_adult_patients_confirmed_covid\"" in this state"", ""fieldName"": ""staffed_icu_adult_patients_confirmed_covid_coverage""}, {""name"": ""total_adult_patients_hospitalized_confirmed_and_suspected_covid"", ""dataTypeName"": ""number"", ""description"": ""30. Reported patients currently hospitalized in an adult inpatient bed who have laboratory-confirmed or suspected COVID-19. This include those in observation beds."", ""fieldName"": ""total_adult_patients_hospitalized_confirmed_and_suspected_covid""}, {""name"": ""total_adult_patients_hospitalized_confirmed_and_suspected_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""31. Number of hospitals reporting \""total_adult_patients_hospitalized_confirmed_and_suspected_covid\"" in this state"", ""fieldName"": ""total_adult_patients_hospitalized_confirmed_and_suspected_covid_coverage""}, {""name"": ""total_adult_patients_hospitalized_confirmed_covid"", ""dataTypeName"": ""number"", ""description"": ""32. Reported patients currently hospitalized in an adult inpatient bed who have laboratory-confirmed COVID-19. This include those in observation beds."", ""fieldName"": ""total_adult_patients_hospitalized_confirmed_covid""}, {""name"": ""total_adult_patients_hospitalized_confirmed_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""33. Number of hospitals reporting \""total_adult_patients_hospitalized_confirmed_covid\"" in this state"", ""fieldName"": ""total_adult_patients_hospitalized_confirmed_covid_coverage""}, {""name"": ""total_pediatric_patients_hospitalized_confirmed_and_suspected_covid"", ""dataTypeName"": ""number"", ""description"": ""34. Reported patients currently hospitalized in a pediatric inpatient bed, including NICU, newborn, and nursery, who are suspected or laboratory-confirmed-positive for COVID-19. This include those in observation beds."", ""fieldName"": ""total_pediatric_patients_hospitalized_confirmed_and_suspected_covid""}, {""name"": ""total_pediatric_patients_hospitalized_confirmed_and_suspected_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""35. Number of hospitals reporting \""total_pediatric_patients_hospitalized_confirmed_and_suspected_covid\"" in this state"", ""fieldName"": ""total_pediatric_patients_hospitalized_confirmed_and_suspected_covid_coverage""}, {""name"": ""total_pediatric_patients_hospitalized_confirmed_covid"", ""dataTypeName"": ""number"", ""description"": ""36. Reported patients currently hospitalized in a pediatric inpatient bed, including NICU, newborn, and nursery, who are laboratory-confirmed-positive for COVID-19. This include those in observation beds."", ""fieldName"": ""total_pediatric_patients_hospitalized_confirmed_covid""}, {""name"": ""total_pediatric_patients_hospitalized_confirmed_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""37. Number of hospitals reporting \""total_pediatric_patients_hospitalized_confirmed_covid\"" in this state"", ""fieldName"": ""total_pediatric_patients_hospitalized_confirmed_covid_coverage""}, {""name"": ""total_staffed_adult_icu_beds"", ""dataTypeName"": ""number"", ""description"": ""38. Reported total number of staffed inpatient adult ICU beds in this state"", ""fieldName"": ""total_staffed_adult_icu_beds""}, {""name"": ""total_staffed_adult_icu_beds_coverage"", ""dataTypeName"": ""number"", ""description"": ""39. Number of hospitals reporting \""total_staffed_adult_icu_beds\"" in this state"", ""fieldName"": ""total_staffed_adult_icu_beds_coverage""}, {""name"": ""inpatient_beds_utilization"", ""dataTypeName"": ""number"", ""description"": ""40. Percentage of inpatient beds that are being utilized in this state. This number only accounts for hospitals in the state that report both \""inpatient_beds_used\"" and \""inpatient_beds\"" fields."", ""fieldName"": ""inpatient_beds_utilization""}, {""name"": ""inpatient_beds_utilization_coverage"", ""dataTypeName"": ""number"", ""description"": ""41. Number of hospitals reporting both \""inpatient_beds_used\"" and \""inpatient_beds\"""", ""fieldName"": ""inpatient_beds_utilization_coverage""}, {""name"": ""inpatient_beds_utilization_numerator"", ""dataTypeName"": ""number"", ""description"": ""42. Sum of \""inpatient_beds_used\"" for hospitals reporting both \""inpatient_beds_used\"" and \""inpatient_beds\"""", ""fieldName"": ""inpatient_beds_utilization_numerator""}, {""name"": ""inpatient_beds_utilization_denominator"", ""dataTypeName"": ""number"", ""description"": ""43. Sum of \""inpatient_beds\"" for hospitals reporting both \""inpatient_beds_used\"" and \""inpatient_beds\"""", ""fieldName"": ""inpatient_beds_utilization_denominator""}, {""name"": ""percent_of_inpatients_with_covid"", ""dataTypeName"": ""number"", ""description"": ""44. Percentage of inpatient population who have suspected or confirmed COVID-19 in this state. This number only accounts for hospitals in the state that report both \""inpatient_beds_used_covid\"" and \""inpatient_beds_used\"" fields."", ""fieldName"": ""percent_of_inpatients_with_covid""}, {""name"": ""percent_of_inpatients_with_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""45. Number of hospitals reporting both \""inpatient_beds_used_covid\"" and \""inpatient_beds_used\""."", ""fieldName"": ""percent_of_inpatients_with_covid_coverage""}, {""name"": ""percent_of_inpatients_with_covid_numerator"", ""dataTypeName"": ""number"", ""description"": ""46. Sum of \""inpatient_beds_used_covid\"" for hospitals reporting both \""inpatient_beds_used_covid\"" and \""inpatient_beds_used\""."", ""fieldName"": ""percent_of_inpatients_with_covid_numerator""}, {""name"": ""percent_of_inpatients_with_covid_denominator"", ""dataTypeName"": ""number"", ""description"": ""47. Sum of \""inpatient_beds_used\"" for hospitals reporting both \""inpatient_beds_used_covid\"" and \""inpatient_beds_used\""."", ""fieldName"": ""percent_of_inpatients_with_covid_denominator""}, {""name"": ""inpatient_bed_covid_utilization"", ""dataTypeName"": ""number"", ""description"": ""48. Percentage of total (used/available) inpatient beds currently utilized by patients who have suspected or confirmed COVID-19 in this state. This number only accounts for hospitals in the state that report both \""inpatient_beds_used_covid\"" and \""inpatient_beds\"" fields."", ""fieldName"": ""inpatient_bed_covid_utilization""}, {""name"": ""inpatient_bed_covid_utilization_coverage"", ""dataTypeName"": ""number"", ""description"": ""49. Number of hospitals reporting both \""inpatient_beds_used_covid\"" and \""inpatient_beds\""."", ""fieldName"": ""inpatient_bed_covid_utilization_coverage""}, {""name"": ""inpatient_bed_covid_utilization_numerator"", ""dataTypeName"": ""number"", ""description"": ""50. Sum of \""inpatient_beds_used_covid\"" for hospitals reporting both \""inpatient_beds_used_covid\"" and \""inpatient_beds\""."", ""fieldName"": ""inpatient_bed_covid_utilization_numerator""}, {""name"": ""inpatient_bed_covid_utilization_denominator"", ""dataTypeName"": ""number"", ""description"": ""51. Sum of \""inpatient_beds\"" for hospitals reporting both \""inpatient_beds_used_covid\"" and \""inpatient_beds\""."", ""fieldName"": ""inpatient_bed_covid_utilization_denominator""}, {""name"": ""adult_icu_bed_covid_utilization"", ""dataTypeName"": ""number"", ""description"": ""52. Percentage of total staffed adult ICU beds currently utilized by patients who have suspected or confirmed COVID-19 in this state. This number only accounts for hospitals in the state that report both \""staffed_icu_adult_patients_confirmed_and_suspected_covid\"" and \""total_staffed_adult_icu_beds\"" fields."", ""fieldName"": ""adult_icu_bed_covid_utilization""}, {""name"": ""adult_icu_bed_covid_utilization_coverage"", ""dataTypeName"": ""number"", ""description"": ""53. Number of hospitals reporting both both \""staffed_icu_adult_patients_confirmed_and_suspected_covid\"" and \""total_staffed_adult_icu_beds\""."", ""fieldName"": ""adult_icu_bed_covid_utilization_coverage""}, {""name"": ""adult_icu_bed_covid_utilization_numerator"", ""dataTypeName"": ""number"", ""description"": ""54. Sum of \""staffed_icu_adult_patients_confirmed_and_suspected_covid\"" for hospitals reporting both \""staffed_icu_adult_patients_confirmed_and_suspected_covid\"" and \""total_staffed_adult_icu_beds\""."", ""fieldName"": ""adult_icu_bed_covid_utilization_numerator""}, {""name"": ""adult_icu_bed_covid_utilization_denominator"", ""dataTypeName"": ""number"", ""description"": ""55. Sum of \""total_staffed_adult_icu_beds\"" for hospitals reporting both \""staffed_icu_adult_patients_confirmed_and_suspected_covid\"" and \""total_staffed_adult_icu_beds\""."", ""fieldName"": ""adult_icu_bed_covid_utilization_denominator""}, {""name"": ""adult_icu_bed_utilization"", ""dataTypeName"": ""number"", ""description"": ""56. Percentage of staffed adult ICU beds that are being utilized in this state. This number only accounts for hospitals in the state that report both \""staffed_adult_icu_bed_occupancy\"" and \""total_staffed_adult_icu_beds\"" fields."", ""fieldName"": ""adult_icu_bed_utilization""}, {""name"": ""adult_icu_bed_utilization_coverage"", ""dataTypeName"": ""number"", ""description"": ""57. Number of hospitals reporting both both \""staffed_adult_icu_bed_occupancy\"" and \""total_staffed_adult_icu_beds\""."", ""fieldName"": ""adult_icu_bed_utilization_coverage""}, {""name"": ""adult_icu_bed_utilization_numerator"", ""dataTypeName"": ""number"", ""description"": ""58. Sum of \""staffed_adult_icu_bed_occupancy\"" for hospitals reporting both \""staffed_adult_icu_bed_occupancy\"" and \""total_staffed_adult_icu_beds\""."", ""fieldName"": ""adult_icu_bed_utilization_numerator""}, {""name"": ""adult_icu_bed_utilization_denominator"", ""dataTypeName"": ""number"", ""description"": ""59. Sum of \""total_staffed_adult_icu_beds\"" for hospitals reporting both \""staffed_adult_icu_bed_occupancy\"" and \""total_staffed_adult_icu_beds\""."", ""fieldName"": ""adult_icu_bed_utilization_denominator""}, {""name"": ""reporting_cutoff_start"", ""dataTypeName"": ""calendar_date"", ""description"": ""60. Look back date start - The latest reports from each hospital is summed for this report starting with this date."", ""fieldName"": ""reporting_cutoff_start""}, {""name"": ""geocoded_state"", ""dataTypeName"": ""point"", ""description"": """", ""fieldName"": ""geocoded_state""}]","{""updates"": [], ""additions"": [], ""deletions"": []}",https://test.csv
-03/16/2021 00:00:00 AM,0,Stormy Kick,53,0,61,0,"{""name"": ""COVID-19 Reported Patient Impact and Hospital Capacity by State"", ""description"": ""
The following dataset provides state-aggregated data for hospital utilization. These are derived from reports with facility-level granularity across two main sources: (1) HHS TeleTracking, and (2) reporting provided directly to HHS Protect by state/territorial health departments on behalf of their healthcare facilities.\n\n
The file will be updated daily and provides the latest values reported by each facility within the last four days. This allows for a more comprehensive picture of the hospital utilization within a state by ensuring a hospital is represented, even if they miss a single day of reporting.\n\n
No statistical analysis is applied to account for non-response and/or to account for missing data.\n\n
The below table displays one value for each field (i.e., column). Sometimes, reports for a given facility will be provided to both HHS TeleTracking and HHS Protect. When this occurs, to ensure that there are not duplicate reports, deduplication is applied: specifically, HHS selects the TeleTracking record provided directly by the facility over the state-provided data to HHS Protect."", ""Archive Repository"": ""https://healthdata.gov/d/4cnb-m4rz"", ""Contact Email"": ""HealthData@hhs.gov"", ""Language"": ""English"", ""Contact Name"": ""HealthData.gov Team"", ""Last Update"": ""2021-03-15 23:08"", ""Program Code"": ""009:028"", ""Publisher"": ""U.S. Department of Health & Human Services"", ""Is Quality Data"": ""true"", ""Bureau Code"": ""009:0"", ""Public Access Level"": ""public""}","{""updates"": {""Last Update"": ""2021-03-15 23:08""}, ""additions"": {}, ""deletions"": {}}","[{""name"": ""state"", ""dataTypeName"": ""text"", ""description"": ""1. The two digit state code"", ""fieldName"": ""state""}, {""name"": ""critical_staffing_shortage_today_yes"", ""dataTypeName"": ""number"", ""description"": ""2. Number of hospitals reporting a critical staffing shortage today in this state."", ""fieldName"": ""critical_staffing_shortage_today_yes""}, {""name"": ""critical_staffing_shortage_today_no"", ""dataTypeName"": ""number"", ""description"": ""3. Number of hospitals reporting as not having a critical staffing shortage today in this state."", ""fieldName"": ""critical_staffing_shortage_today_no""}, {""name"": ""critical_staffing_shortage_today_not_reported"", ""dataTypeName"": ""number"", ""description"": ""4. Number of hospitals not reporting staffing shortage today status in this state."", ""fieldName"": ""critical_staffing_shortage_today_not_reported""}, {""name"": ""critical_staffing_shortage_anticipated_within_week_yes"", ""dataTypeName"": ""number"", ""description"": ""5. Number of hospitals reporting that they anticipate a critical staffing shortage within a week in this state."", ""fieldName"": ""critical_staffing_shortage_anticipated_within_week_yes""}, {""name"": ""critical_staffing_shortage_anticipated_within_week_no"", ""dataTypeName"": ""number"", ""description"": ""6. Number of hospitals reporting that they do not anticipate a critical staffing shortage within a week in this state."", ""fieldName"": ""critical_staffing_shortage_anticipated_within_week_no""}, {""name"": ""critical_staffing_shortage_anticipated_within_week_not_reported"", ""dataTypeName"": ""number"", ""description"": ""7. Number of hospitals not reporting staffing shortage within week status in this state."", ""fieldName"": ""critical_staffing_shortage_anticipated_within_week_not_reported""}, {""name"": ""hospital_onset_covid"", ""dataTypeName"": ""number"", ""description"": ""8. Total current inpatients with onset of suspected or laboratory-confirmed COVID-19 fourteen or more days after admission for a condition other than COVID-19 in this state."", ""fieldName"": ""hospital_onset_covid""}, {""name"": ""hospital_onset_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""9. Number of hospitals reporting \""hospital_onset_covid\"" in this state"", ""fieldName"": ""hospital_onset_covid_coverage""}, {""name"": ""inpatient_beds"", ""dataTypeName"": ""number"", ""description"": ""10. Reported total number of staffed inpatient beds including all overflow and surge/expansion beds used for inpatients (includes all ICU beds) in this state"", ""fieldName"": ""inpatient_beds""}, {""name"": ""inpatient_beds_coverage"", ""dataTypeName"": ""number"", ""description"": ""11. Number of hospitals reporting \""inpatient_beds\"" in this state"", ""fieldName"": ""inpatient_beds_coverage""}, {""name"": ""inpatient_beds_used"", ""dataTypeName"": ""number"", ""description"": ""12. Reported total number of staffed inpatient beds that are occupied in this state"", ""fieldName"": ""inpatient_beds_used""}, {""name"": ""inpatient_beds_used_coverage"", ""dataTypeName"": ""number"", ""description"": ""13. Number of hospitals reporting \""inpatient_beds_used\"" in this state"", ""fieldName"": ""inpatient_beds_used_coverage""}, {""name"": ""inpatient_beds_used_covid"", ""dataTypeName"": ""number"", ""description"": ""14. Reported patients currently hospitalized in an inpatient bed who have suspected or confirmed COVID-19 in this state"", ""fieldName"": ""inpatient_beds_used_covid""}, {""name"": ""inpatient_beds_used_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""15. Number of hospitals reporting \""inpatient_beds_used_covid\"" in this state"", ""fieldName"": ""inpatient_beds_used_covid_coverage""}, {""name"": ""previous_day_admission_adult_covid_confirmed"", ""dataTypeName"": ""number"", ""description"": ""16. Number of patients who were admitted to an adult inpatient bed on the previous calendar day who had confirmed COVID-19 at the time of admission in this state"", ""fieldName"": ""previous_day_admission_adult_covid_confirmed""}, {""name"": ""previous_day_admission_adult_covid_confirmed_coverage"", ""dataTypeName"": ""number"", ""description"": ""17. Number of hospitals reporting \""previous_day_admission_adult_covid_confirmed\"" in this state"", ""fieldName"": ""previous_day_admission_adult_covid_confirmed_coverage""}, {""name"": ""previous_day_admission_adult_covid_suspected"", ""dataTypeName"": ""number"", ""description"": ""18. Number of patients who were admitted to an adult inpatient bed on the previous calendar day who had suspected COVID-19 at the time of admission in this state"", ""fieldName"": ""previous_day_admission_adult_covid_suspected""}, {""name"": ""previous_day_admission_adult_covid_suspected_coverage"", ""dataTypeName"": ""number"", ""description"": ""19. Number of hospitals reporting \""previous_day_admission_adult_covid_suspected\"" in this state"", ""fieldName"": ""previous_day_admission_adult_covid_suspected_coverage""}, {""name"": ""previous_day_admission_pediatric_covid_confirmed"", ""dataTypeName"": ""number"", ""description"": ""20. Number of pediatric patients who were admitted to an inpatient bed, including NICU, PICU, newborn, and nursery, on the previous calendar day who had confirmed COVID-19 at the time of admission in this state"", ""fieldName"": ""previous_day_admission_pediatric_covid_confirmed""}, {""name"": ""previous_day_admission_pediatric_covid_confirmed_coverage"", ""dataTypeName"": ""number"", ""description"": ""21. Number of hospitals reporting \""previous_day_admission_pediatric_covid_confirmed\"" in this state"", ""fieldName"": ""previous_day_admission_pediatric_covid_confirmed_coverage""}, {""name"": ""previous_day_admission_pediatric_covid_suspected"", ""dataTypeName"": ""number"", ""description"": ""22. Number of pediatric patients who were admitted to an inpatient bed, including NICU, PICU, newborn, and nursery, on the previous calendar day who had suspected COVID-19 at the time of admission in this state"", ""fieldName"": ""previous_day_admission_pediatric_covid_suspected""}, {""name"": ""previous_day_admission_pediatric_covid_suspected_coverage"", ""dataTypeName"": ""number"", ""description"": ""23. Number of hospitals reporting \""previous_day_admission_pediatric_covid_suspected\"" in this state"", ""fieldName"": ""previous_day_admission_pediatric_covid_suspected_coverage""}, {""name"": ""staffed_adult_icu_bed_occupancy"", ""dataTypeName"": ""number"", ""description"": ""24. Reported total number of staffed inpatient adult ICU beds that are occupied in this state"", ""fieldName"": ""staffed_adult_icu_bed_occupancy""}, {""name"": ""staffed_adult_icu_bed_occupancy_coverage"", ""dataTypeName"": ""number"", ""description"": ""25. Number of hospitals reporting \""staffed_adult_icu_bed_occupancy\"" in this state"", ""fieldName"": ""staffed_adult_icu_bed_occupancy_coverage""}, {""name"": ""staffed_icu_adult_patients_confirmed_and_suspected_covid"", ""dataTypeName"": ""number"", ""description"": ""26. Reported patients currently hospitalized in an adult ICU bed who have suspected or confirmed COVID-19 in this state"", ""fieldName"": ""staffed_icu_adult_patients_confirmed_and_suspected_covid""}, {""name"": ""staffed_icu_adult_patients_confirmed_and_suspected_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""27. Number of hospitals reporting \""staffed_icu_adult_patients_confirmed_and_suspected_covid\"" in this state"", ""fieldName"": ""staffed_icu_adult_patients_confirmed_and_suspected_covid_coverage""}, {""name"": ""staffed_icu_adult_patients_confirmed_covid"", ""dataTypeName"": ""number"", ""description"": ""28. Reported patients currently hospitalized in an adult ICU bed who have confirmed COVID-19 in this state"", ""fieldName"": ""staffed_icu_adult_patients_confirmed_covid""}, {""name"": ""staffed_icu_adult_patients_confirmed_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""29. Number of hospitals reporting \""staffed_icu_adult_patients_confirmed_covid\"" in this state"", ""fieldName"": ""staffed_icu_adult_patients_confirmed_covid_coverage""}, {""name"": ""total_adult_patients_hospitalized_confirmed_and_suspected_covid"", ""dataTypeName"": ""number"", ""description"": ""30. Reported patients currently hospitalized in an adult inpatient bed who have laboratory-confirmed or suspected COVID-19. This include those in observation beds."", ""fieldName"": ""total_adult_patients_hospitalized_confirmed_and_suspected_covid""}, {""name"": ""total_adult_patients_hospitalized_confirmed_and_suspected_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""31. Number of hospitals reporting \""total_adult_patients_hospitalized_confirmed_and_suspected_covid\"" in this state"", ""fieldName"": ""total_adult_patients_hospitalized_confirmed_and_suspected_covid_coverage""}, {""name"": ""total_adult_patients_hospitalized_confirmed_covid"", ""dataTypeName"": ""number"", ""description"": ""32. Reported patients currently hospitalized in an adult inpatient bed who have laboratory-confirmed COVID-19. This include those in observation beds."", ""fieldName"": ""total_adult_patients_hospitalized_confirmed_covid""}, {""name"": ""total_adult_patients_hospitalized_confirmed_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""33. Number of hospitals reporting \""total_adult_patients_hospitalized_confirmed_covid\"" in this state"", ""fieldName"": ""total_adult_patients_hospitalized_confirmed_covid_coverage""}, {""name"": ""total_pediatric_patients_hospitalized_confirmed_and_suspected_covid"", ""dataTypeName"": ""number"", ""description"": ""34. Reported patients currently hospitalized in a pediatric inpatient bed, including NICU, newborn, and nursery, who are suspected or laboratory-confirmed-positive for COVID-19. This include those in observation beds."", ""fieldName"": ""total_pediatric_patients_hospitalized_confirmed_and_suspected_covid""}, {""name"": ""total_pediatric_patients_hospitalized_confirmed_and_suspected_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""35. Number of hospitals reporting \""total_pediatric_patients_hospitalized_confirmed_and_suspected_covid\"" in this state"", ""fieldName"": ""total_pediatric_patients_hospitalized_confirmed_and_suspected_covid_coverage""}, {""name"": ""total_pediatric_patients_hospitalized_confirmed_covid"", ""dataTypeName"": ""number"", ""description"": ""36. Reported patients currently hospitalized in a pediatric inpatient bed, including NICU, newborn, and nursery, who are laboratory-confirmed-positive for COVID-19. This include those in observation beds."", ""fieldName"": ""total_pediatric_patients_hospitalized_confirmed_covid""}, {""name"": ""total_pediatric_patients_hospitalized_confirmed_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""37. Number of hospitals reporting \""total_pediatric_patients_hospitalized_confirmed_covid\"" in this state"", ""fieldName"": ""total_pediatric_patients_hospitalized_confirmed_covid_coverage""}, {""name"": ""total_staffed_adult_icu_beds"", ""dataTypeName"": ""number"", ""description"": ""38. Reported total number of staffed inpatient adult ICU beds in this state"", ""fieldName"": ""total_staffed_adult_icu_beds""}, {""name"": ""total_staffed_adult_icu_beds_coverage"", ""dataTypeName"": ""number"", ""description"": ""39. Number of hospitals reporting \""total_staffed_adult_icu_beds\"" in this state"", ""fieldName"": ""total_staffed_adult_icu_beds_coverage""}, {""name"": ""inpatient_beds_utilization"", ""dataTypeName"": ""number"", ""description"": ""40. Percentage of inpatient beds that are being utilized in this state. This number only accounts for hospitals in the state that report both \""inpatient_beds_used\"" and \""inpatient_beds\"" fields."", ""fieldName"": ""inpatient_beds_utilization""}, {""name"": ""inpatient_beds_utilization_coverage"", ""dataTypeName"": ""number"", ""description"": ""41. Number of hospitals reporting both \""inpatient_beds_used\"" and \""inpatient_beds\"""", ""fieldName"": ""inpatient_beds_utilization_coverage""}, {""name"": ""inpatient_beds_utilization_numerator"", ""dataTypeName"": ""number"", ""description"": ""42. Sum of \""inpatient_beds_used\"" for hospitals reporting both \""inpatient_beds_used\"" and \""inpatient_beds\"""", ""fieldName"": ""inpatient_beds_utilization_numerator""}, {""name"": ""inpatient_beds_utilization_denominator"", ""dataTypeName"": ""number"", ""description"": ""43. Sum of \""inpatient_beds\"" for hospitals reporting both \""inpatient_beds_used\"" and \""inpatient_beds\"""", ""fieldName"": ""inpatient_beds_utilization_denominator""}, {""name"": ""percent_of_inpatients_with_covid"", ""dataTypeName"": ""number"", ""description"": ""44. Percentage of inpatient population who have suspected or confirmed COVID-19 in this state. This number only accounts for hospitals in the state that report both \""inpatient_beds_used_covid\"" and \""inpatient_beds_used\"" fields."", ""fieldName"": ""percent_of_inpatients_with_covid""}, {""name"": ""percent_of_inpatients_with_covid_coverage"", ""dataTypeName"": ""number"", ""description"": ""45. Number of hospitals reporting both \""inpatient_beds_used_covid\"" and \""inpatient_beds_used\""."", ""fieldName"": ""percent_of_inpatients_with_covid_coverage""}, {""name"": ""percent_of_inpatients_with_covid_numerator"", ""dataTypeName"": ""number"", ""description"": ""46. Sum of \""inpatient_beds_used_covid\"" for hospitals reporting both \""inpatient_beds_used_covid\"" and \""inpatient_beds_used\""."", ""fieldName"": ""percent_of_inpatients_with_covid_numerator""}, {""name"": ""percent_of_inpatients_with_covid_denominator"", ""dataTypeName"": ""number"", ""description"": ""47. Sum of \""inpatient_beds_used\"" for hospitals reporting both \""inpatient_beds_used_covid\"" and \""inpatient_beds_used\""."", ""fieldName"": ""percent_of_inpatients_with_covid_denominator""}, {""name"": ""inpatient_bed_covid_utilization"", ""dataTypeName"": ""number"", ""description"": ""48. Percentage of total (used/available) inpatient beds currently utilized by patients who have suspected or confirmed COVID-19 in this state. This number only accounts for hospitals in the state that report both \""inpatient_beds_used_covid\"" and \""inpatient_beds\"" fields."", ""fieldName"": ""inpatient_bed_covid_utilization""}, {""name"": ""inpatient_bed_covid_utilization_coverage"", ""dataTypeName"": ""number"", ""description"": ""49. Number of hospitals reporting both \""inpatient_beds_used_covid\"" and \""inpatient_beds\""."", ""fieldName"": ""inpatient_bed_covid_utilization_coverage""}, {""name"": ""inpatient_bed_covid_utilization_numerator"", ""dataTypeName"": ""number"", ""description"": ""50. Sum of \""inpatient_beds_used_covid\"" for hospitals reporting both \""inpatient_beds_used_covid\"" and \""inpatient_beds\""."", ""fieldName"": ""inpatient_bed_covid_utilization_numerator""}, {""name"": ""inpatient_bed_covid_utilization_denominator"", ""dataTypeName"": ""number"", ""description"": ""51. Sum of \""inpatient_beds\"" for hospitals reporting both \""inpatient_beds_used_covid\"" and \""inpatient_beds\""."", ""fieldName"": ""inpatient_bed_covid_utilization_denominator""}, {""name"": ""adult_icu_bed_covid_utilization"", ""dataTypeName"": ""number"", ""description"": ""52. Percentage of total staffed adult ICU beds currently utilized by patients who have suspected or confirmed COVID-19 in this state. This number only accounts for hospitals in the state that report both \""staffed_icu_adult_patients_confirmed_and_suspected_covid\"" and \""total_staffed_adult_icu_beds\"" fields."", ""fieldName"": ""adult_icu_bed_covid_utilization""}, {""name"": ""adult_icu_bed_covid_utilization_coverage"", ""dataTypeName"": ""number"", ""description"": ""53. Number of hospitals reporting both both \""staffed_icu_adult_patients_confirmed_and_suspected_covid\"" and \""total_staffed_adult_icu_beds\""."", ""fieldName"": ""adult_icu_bed_covid_utilization_coverage""}, {""name"": ""adult_icu_bed_covid_utilization_numerator"", ""dataTypeName"": ""number"", ""description"": ""54. Sum of \""staffed_icu_adult_patients_confirmed_and_suspected_covid\"" for hospitals reporting both \""staffed_icu_adult_patients_confirmed_and_suspected_covid\"" and \""total_staffed_adult_icu_beds\""."", ""fieldName"": ""adult_icu_bed_covid_utilization_numerator""}, {""name"": ""adult_icu_bed_covid_utilization_denominator"", ""dataTypeName"": ""number"", ""description"": ""55. Sum of \""total_staffed_adult_icu_beds\"" for hospitals reporting both \""staffed_icu_adult_patients_confirmed_and_suspected_covid\"" and \""total_staffed_adult_icu_beds\""."", ""fieldName"": ""adult_icu_bed_covid_utilization_denominator""}, {""name"": ""adult_icu_bed_utilization"", ""dataTypeName"": ""number"", ""description"": ""56. Percentage of staffed adult ICU beds that are being utilized in this state. This number only accounts for hospitals in the state that report both \""staffed_adult_icu_bed_occupancy\"" and \""total_staffed_adult_icu_beds\"" fields."", ""fieldName"": ""adult_icu_bed_utilization""}, {""name"": ""adult_icu_bed_utilization_coverage"", ""dataTypeName"": ""number"", ""description"": ""57. Number of hospitals reporting both both \""staffed_adult_icu_bed_occupancy\"" and \""total_staffed_adult_icu_beds\""."", ""fieldName"": ""adult_icu_bed_utilization_coverage""}, {""name"": ""adult_icu_bed_utilization_numerator"", ""dataTypeName"": ""number"", ""description"": ""58. Sum of \""staffed_adult_icu_bed_occupancy\"" for hospitals reporting both \""staffed_adult_icu_bed_occupancy\"" and \""total_staffed_adult_icu_beds\""."", ""fieldName"": ""adult_icu_bed_utilization_numerator""}, {""name"": ""adult_icu_bed_utilization_denominator"", ""dataTypeName"": ""number"", ""description"": ""59. Sum of \""total_staffed_adult_icu_beds\"" for hospitals reporting both \""staffed_adult_icu_bed_occupancy\"" and \""total_staffed_adult_icu_beds\""."", ""fieldName"": ""adult_icu_bed_utilization_denominator""}, {""name"": ""reporting_cutoff_start"", ""dataTypeName"": ""calendar_date"", ""description"": ""60. Look back date start - The latest reports from each hospital is summed for this report starting with this date."", ""fieldName"": ""reporting_cutoff_start""}, {""name"": ""geocoded_state"", ""dataTypeName"": ""point"", ""description"": """", ""fieldName"": ""geocoded_state""}]","{""updates"": [], ""additions"": [], ""deletions"": []}",https://test.csv
+03/13/2021 00:00:00 AM,0,0,0,0,0,0,0,0,0,0,https://test0.csv
+03/15/2021 00:00:00 AM,0,0,0,0,0,0,0,0,0,0,https://test1.csv
diff --git a/testdata/acquisition/covid_hosp/state_daily/metadata2.csv b/testdata/acquisition/covid_hosp/state_daily/metadata2.csv
new file mode 100644
index 000000000..866d1bef2
--- /dev/null
+++ b/testdata/acquisition/covid_hosp/state_daily/metadata2.csv
@@ -0,0 +1,7 @@
+Update Date,Days Since Update,User,Rows,Row Change,Columns,Column Change,Metadata Published,Metadata Updates,Column Level Metadata,Column Level Metadata Updates,Archive Link
+03/13/2021 00:00:00 AM,0,0,0,0,0,0,0,0,0,0,https://test0.csv
+03/15/2021 00:00:00 AM,0,0,0,0,0,0,0,0,0,0,https://test1.csv
+03/15/2021 00:00:01 AM,0,0,0,0,0,0,0,0,0,0,https://test2.csv
+03/15/2021 00:00:02 AM,0,0,0,0,0,0,0,0,0,0,https://test3.csv
+03/16/2021 00:00:00 AM,0,0,0,0,0,0,0,0,0,0,https://test4.csv
+03/16/2021 00:00:01 AM,0,0,0,0,0,0,0,0,0,0,https://test5.csv
diff --git a/tests/acquisition/covid_hosp/common/test_database.py b/tests/acquisition/covid_hosp/common/test_database.py
index c070a00ae..a45953313 100644
--- a/tests/acquisition/covid_hosp/common/test_database.py
+++ b/tests/acquisition/covid_hosp/common/test_database.py
@@ -148,7 +148,7 @@ def test_insert_dataset(self):
actual_sql = mock_cursor.executemany.call_args[0][0]
self.assertIn(
- 'INSERT INTO `test_table` (`id`, `publication_date`, `sql_str_col`, `sql_int_col`, `sql_float_col`)',
+ 'REPLACE INTO `test_table` (`id`, `publication_date`, `sql_str_col`, `sql_int_col`, `sql_float_col`)',
actual_sql)
expected_values = [
diff --git a/tests/acquisition/covid_hosp/common/test_utils.py b/tests/acquisition/covid_hosp/common/test_utils.py
index 85dbd110c..005fcc0f2 100644
--- a/tests/acquisition/covid_hosp/common/test_utils.py
+++ b/tests/acquisition/covid_hosp/common/test_utils.py
@@ -109,34 +109,54 @@ def test_run_skip_old_dataset(self):
mock_connection.insert_metadata.assert_not_called()
mock_connection.insert_dataset.assert_not_called()
- def test_run_acquire_new_dataset(self):
- """Acquire a new dataset."""
-
+ def _create_update_mocks(self, contains_revisions):
mock_network = MagicMock()
mock_network.fetch_metadata.return_value = \
self.test_utils.load_sample_metadata()
fake_dataset = pd.DataFrame({"date": [pd.Timestamp("2020/1/1")], "state": ["ca"]})
mock_network.fetch_dataset.return_value = fake_dataset
mock_database = MagicMock()
+ mock_logger = MagicMock()
+ mock_database.logger.return_value = mock_logger
with mock_database.connect() as mock_connection:
pass
- type(mock_connection).KEY_COLS = PropertyMock(return_value=["state", "date"])
+ mock_database.KEY_COLS = ["state", "date"]
mock_connection.get_max_issue.return_value = pd.Timestamp("1900/1/1")
+ mock_connection.contains_revision.return_value = contains_revisions
+
with patch.object(Utils, 'issues_to_fetch') as mock_issues:
mock_issues.return_value = {pd.Timestamp("2021/3/15"): [("url1", pd.Timestamp("2021-03-15 00:00:00")),
("url2", pd.Timestamp("2021-03-15 00:00:00"))]}
result = Utils.update_dataset(database=mock_database, network=mock_network)
- self.assertTrue(result)
-
- # should have been called twice
- mock_connection.insert_metadata.assert_called()
- assert mock_connection.insert_metadata.call_count == 2
- # most recent call should be for the final revision at url2
- args = mock_connection.insert_metadata.call_args[0]
- self.assertEqual(args[:2], (20210315, "url2"))
- pd.testing.assert_frame_equal(
- mock_connection.insert_dataset.call_args[0][1],
- pd.DataFrame({"state": ["ca"], "date": [pd.Timestamp("2020/1/1")]})
- )
- self.assertEqual(mock_connection.insert_dataset.call_args[0][0], 20210315)
+ return (result, mock_connection, mock_logger)
+
+ def test_run_acquire_new_dataset(self):
+ """Acquire a new dataset."""
+
+ with self.subTest(name="new data"):
+ (result, mock_connection, mock_logger) = self._create_update_mocks(False)
+
+ # for debugging:
+ print(mock_logger.info.call_args_list)
+
+ self.assertTrue(result)
+
+ # should have been called twice
+ mock_connection.insert_metadata.assert_called()
+ assert mock_connection.insert_metadata.call_count == 2
+ # most recent call should be for the final revision at url2
+ args = mock_connection.insert_metadata.call_args[0]
+ self.assertEqual(args[:2], (20210315, "url2"))
+ pd.testing.assert_frame_equal(
+ mock_connection.insert_dataset.call_args[0][1],
+ pd.DataFrame({"state": ["ca"], "date": [pd.Timestamp("2020/1/1")]})
+ )
+ self.assertEqual(mock_connection.insert_dataset.call_args[0][0], 20210315)
+
+ with self.subTest(name="old data"):
+ (result, mock_connection, mock_logger) = self._create_update_mocks(True)
+
+ print(mock_logger.info.call_args_list)
+
+ self.assertFalse(result)