Skip to content

Commit 2f2f63a

Browse files
committed
working on converting into api calls instead of time diff
1 parent 7b419b0 commit 2f2f63a

File tree

4 files changed

+20
-5
lines changed

4 files changed

+20
-5
lines changed

nhsn/delphi_nhsn/constants.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,4 +65,4 @@
6565
f"{NUM_HOSP_REPORTING_RSV}_prelim": float,
6666
}
6767

68-
RECENTLY_UPDATED_DIFF = timedelta(hours=36)
68+
RECENTLY_UPDATED_DIFF = timedelta(days=2)

nhsn/delphi_nhsn/pull.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,16 @@
44
import logging
55
import random
66
import time
7-
from datetime import datetime
7+
from datetime import datetime, timezone
88
from pathlib import Path
99
from typing import Optional
1010
from urllib.error import HTTPError
1111

1212
import pandas as pd
1313
from delphi_utils import create_backup_csv
1414
from sodapy import Socrata
15+
from delphi_epidata import Epidata
16+
from epiweeks import Week
1517

1618
from .constants import (
1719
MAIN_DATASET_ID,
@@ -47,10 +49,17 @@ def check_last_updated(socrata_token, dataset_id, logger):
4749
response = client.get_metadata(dataset_id)
4850

4951
updated_timestamp = datetime.utcfromtimestamp(int(response["rowsUpdatedAt"]))
50-
now = datetime.utcnow()
51-
# currently set to run twice a week, RECENTLY_UPDATED_DIFF may need adjusting based on the cadence
52-
recently_updated_source = (now - updated_timestamp) < RECENTLY_UPDATED_DIFF
52+
cdc_updated_epiweek = Week.fromdate(updated_timestamp)
53+
54+
meta_df = pd.DataFrame(Epidata.covidcast_meta()["epidata"])
55+
signal_suffix = 'prelim' if dataset_id == PRELIM_DATASET_ID else "ew"
56+
nhsn_meta_df = meta_df[(meta_df["data_source"] == "nhsn") & (meta_df["signal"].str.endswith(signal_suffix))]
57+
last_updated = datetime.utcfromtimestamp(nhsn_meta_df["last_update"].min())
58+
covidcast_updated_epiweek = Week.fromdate(last_updated)
5359

60+
# currently set to run twice a week, RECENTLY_UPDATED_DIFF may need adjusting based on the cadence
61+
recently_updated_source = (last_updated - updated_timestamp) > RECENTLY_UPDATED_DIFF
62+
print("non")
5463
prelim_prefix = "Preliminary " if dataset_id == PRELIM_DATASET_ID else ""
5564
if recently_updated_source:
5665
logger.info(

nhsn/tests/conftest.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@
2323
with open(f"{TEST_DIR}/test_data/prelim_page.json", "r") as f:
2424
PRELIM_TEST_DATA = json.load(f)
2525

26+
27+
covidcast_metadata = pd.read_csv(f"{TEST_DIR}/test_data/covid_metadata.csv",
28+
parse_dates=["max_time", "min_time", "max_issue", "last_update"])
29+
30+
2631
@pytest.fixture(scope="session")
2732
def params():
2833
params = {

nhsn/tests/test_pull.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@ def test_pull_nhsn_data_backup(self, mock_socrata, dataset, caplog, params):
161161
@pytest.mark.parametrize('dataset', DATASETS, ids=["data", "prelim_data"])
162162
@pytest.mark.parametrize("updatedAt", [time.time(), time.time() - 172800, time.time() - 108000], ids=["updated", "stale", "updated_late"])
163163
@patch("delphi_nhsn.pull.Socrata")
164+
@patch("delphi_nhsn.pull.Epidata.covidcast_meta", return_value=covidcast_metadata):
164165
def test_check_last_updated(self, mock_socrata, dataset, updatedAt, caplog):
165166
mock_client = MagicMock()
166167
mock_socrata.return_value = mock_client

0 commit comments

Comments
 (0)