Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 84 additions & 0 deletions epidatpy/_endpoints.py
Original file line number Diff line number Diff line change
Expand Up @@ -870,6 +870,90 @@ def pvt_quidel(self, auth: str, locations: StringParam, epiweeks: EpiRangeParam
],
)

def pub_rvdss(
self,
geo_type: StringParam,
geo_values: Union[str, Sequence[str]] = "*",
time_values: EpiRangeParam = "*",
as_of: Union[None, str, int] = None,
issues: Optional[EpiRangeParam] = None,
) -> CALL_TYPE:
"""Fetch Canadian respiratory data"""
if sum([issues is not None, as_of is not None]) > 1:
raise InvalidArgumentException("`issues` and `as_of` are mutually exclusive.")

return self._create_call(
"rvdss/",
{
"geo_type": geo_type,
"geo_values": geo_values,
"time_values": time_values,
"as_of": as_of,
"issues": issues,
},
[
# descriptive fields
EpidataFieldInfo(
"geo_type",
EpidataFieldType.categorical,
categories=["nation", "region", "province", "lab"]
),
EpidataFieldInfo("geo_value",EpidataFieldType.text),
EpidataFieldInfo("region", EpidataFieldType.text),
EpidataFieldInfo(
"time_type",
EpidataFieldType.categorical,
categories=["week"]
),
EpidataFieldInfo("epiweek", EpidataFieldType.epiweek), # Stored as an int in YYYYWW format
EpidataFieldInfo("time_value", EpidataFieldType.epiweek), # Stored as a date
EpidataFieldInfo("issue", EpidataFieldType.epiweek), # Stored as a date
EpidataFieldInfo("week", EpidataFieldType.int),
EpidataFieldInfo("weekorder", EpidataFieldType.int),
EpidataFieldInfo("year", EpidataFieldType.int),

# value fields
EpidataFieldInfo("adv_pct_positive", EpidataFieldType.float),
EpidataFieldInfo("adv_positive_tests", EpidataFieldType.float),
EpidataFieldInfo("adv_tests", EpidataFieldType.float),
EpidataFieldInfo("evrv_pct_positive", EpidataFieldType.float),
EpidataFieldInfo("evrv_positive_tests", EpidataFieldType.float),
EpidataFieldInfo("evrv_tests", EpidataFieldType.float),
EpidataFieldInfo("flu_pct_positive", EpidataFieldType.float),
EpidataFieldInfo("flu_positive_tests", EpidataFieldType.float),
EpidataFieldInfo("flu_tests", EpidataFieldType.float),
EpidataFieldInfo("flua_pct_positive", EpidataFieldType.float),
EpidataFieldInfo("flua_positive_tests", EpidataFieldType.float),
EpidataFieldInfo("flua_tests", EpidataFieldType.float),
EpidataFieldInfo("fluah1n1pdm09_positive_tests", EpidataFieldType.float),
EpidataFieldInfo("fluah3_positive_tests", EpidataFieldType.float),
EpidataFieldInfo("fluauns_positive_tests", EpidataFieldType.float),
EpidataFieldInfo("flub_pct_positive", EpidataFieldType.float),
EpidataFieldInfo("flub_positive_tests", EpidataFieldType.float),
EpidataFieldInfo("flub_tests", EpidataFieldType.float),
EpidataFieldInfo("hcov_pct_positive", EpidataFieldType.float),
EpidataFieldInfo("hcov_positive_tests", EpidataFieldType.float),
EpidataFieldInfo("hcov_tests", EpidataFieldType.float),
EpidataFieldInfo("hmpv_pct_positive", EpidataFieldType.float),
EpidataFieldInfo("hmpv_positive_tests", EpidataFieldType.float),
EpidataFieldInfo("hmpv_tests", EpidataFieldType.float),
EpidataFieldInfo("hpiv1_positive_tests", EpidataFieldType.float),
EpidataFieldInfo("hpiv2_positive_tests", EpidataFieldType.float),
EpidataFieldInfo("hpiv3_positive_tests", EpidataFieldType.float),
EpidataFieldInfo("hpiv4_positive_tests", EpidataFieldType.float),
EpidataFieldInfo("hpiv_pct_positive", EpidataFieldType.float),
EpidataFieldInfo("hpiv_positive_tests", EpidataFieldType.float),
EpidataFieldInfo("hpiv_tests", EpidataFieldType.float),
EpidataFieldInfo("hpivother_positive_tests", EpidataFieldType.float),
EpidataFieldInfo("rsv_pct_positive", EpidataFieldType.float),
EpidataFieldInfo("rsv_positive_tests", EpidataFieldType.float),
EpidataFieldInfo("rsv_tests", EpidataFieldType.float),
EpidataFieldInfo("sarscov2_pct_positive", EpidataFieldType.float),
EpidataFieldInfo("sarscov2_positive_tests", EpidataFieldType.float),
EpidataFieldInfo("sarscov2_tests", EpidataFieldType.float),
]
)

def pvt_sensors(
self,
auth: str,
Expand Down
69 changes: 69 additions & 0 deletions tests/test_epidata_calls.py
Original file line number Diff line number Diff line change
Expand Up @@ -367,6 +367,75 @@ def test_pvt_quidel(self) -> None:
assert str(data["epiweek"].dtype) == "string"
assert str(data["value"].dtype) == "Float64"

def test_pub_rvdss(self) -> None:
# pylint: disable=too-many-statements
apicall = EpiDataContext().pub_rvdss(
geo_type="province",
geo_values=["yu", "on"],
time_values=EpiRange(20200601, 20200801),
)
data = apicall.df()

assert len(data) > 0

apicall = EpiDataContext().pub_rvdss(
geo_type="region",
geo_values="*",
time_values=EpiRange(20200601, 20200801),
)
data = apicall.df()

assert len(data) > 0

assert str(data["geo_type"].dtype) == "string"
assert str(data["geo_value"].dtype) == "string"
assert str(data["region"].dtype) == "string"
assert str(data["time_type"].dtype) == "string"
assert str(data["epiweek"].dtype) == "Int64"
assert str(data["time_value"].dtype) == "datetime64[ns]"
assert str(data["issue"].dtype) == "datetime64[ns]"
assert str(data["week"].dtype) == "Int64"
assert str(data["weekorder"].dtype) == "Int64"
assert str(data["year"].dtype) == "Int64"
assert str(data["adv_pct_positive"].dtype) == "Float64"
assert str(data["adv_positive_tests"].dtype) == "Float64"
assert str(data["adv_tests"].dtype) == "Float64"
assert str(data["evrv_pct_positive"].dtype) == "Float64"
assert str(data["evrv_positive_tests"].dtype) == "Float64"
assert str(data["evrv_tests"].dtype) == "Float64"
assert str(data["flu_pct_positive"].dtype) == "Float64"
assert str(data["flu_positive_tests"].dtype) == "Float64"
assert str(data["flu_tests"].dtype) == "Float64"
assert str(data["flua_pct_positive"].dtype) == "Float64"
assert str(data["flua_positive_tests"].dtype) == "Float64"
assert str(data["flua_tests"].dtype) == "Float64"
assert str(data["fluah1n1pdm09_positive_tests"].dtype) == "Float64"
assert str(data["fluah3_positive_tests"].dtype) == "Float64"
assert str(data["fluauns_positive_tests"].dtype) == "Float64"
assert str(data["flub_pct_positive"].dtype) == "Float64"
assert str(data["flub_positive_tests"].dtype) == "Float64"
assert str(data["flub_tests"].dtype) == "Float64"
assert str(data["hcov_pct_positive"].dtype) == "Float64"
assert str(data["hcov_positive_tests"].dtype) == "Float64"
assert str(data["hcov_tests"].dtype) == "Float64"
assert str(data["hmpv_pct_positive"].dtype) == "Float64"
assert str(data["hmpv_positive_tests"].dtype) == "Float64"
assert str(data["hmpv_tests"].dtype) == "Float64"
assert str(data["hpiv1_positive_tests"].dtype) == "Float64"
assert str(data["hpiv2_positive_tests"].dtype) == "Float64"
assert str(data["hpiv3_positive_tests"].dtype) == "Float64"
assert str(data["hpiv4_positive_tests"].dtype) == "Float64"
assert str(data["hpiv_pct_positive"].dtype) == "Float64"
assert str(data["hpiv_positive_tests"].dtype) == "Float64"
assert str(data["hpiv_tests"].dtype) == "Float64"
assert str(data["hpivother_positive_tests"].dtype) == "Float64"
assert str(data["rsv_pct_positive"].dtype) == "Float64"
assert str(data["rsv_positive_tests"].dtype) == "Float64"
assert str(data["rsv_tests"].dtype) == "Float64"
assert str(data["sarscov2_pct_positive"].dtype) == "Float64"
assert str(data["sarscov2_positive_tests"].dtype) == "Float64"
assert str(data["sarscov2_tests"].dtype) == "Float64"

@pytest.mark.skipif(not secret_sensors, reason="Sensors key not available.")
def test_pvt_sensors(self) -> None:
apicall = EpiDataContext().pvt_sensors(
Expand Down