Skip to content

Commit ac8c065

Browse files
committed
[wip] Add support for querying multiple signals; cmu-delphi/covidcast-indicators#116
1 parent 66079cd commit ac8c065

File tree

2 files changed

+25
-6
lines changed

2 files changed

+25
-6
lines changed

integrations/client/test_delphi_epidata.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ def test_covidcast(self):
5050
self.cur.execute('''
5151
insert into covidcast values
5252
(0, 'src', 'sig', 'day', 'county', 20200414, '01234',
53+
123, 1.5, 2.5, 3.5, 456, 4),
54+
(0, 'src', 'sig2', 'day', 'county', 20200414, '01234',
5355
123, 1.5, 2.5, 3.5, 456, 4)
5456
''')
5557
self.cnx.commit()
@@ -72,6 +74,24 @@ def test_covidcast(self):
7274
'message': 'success',
7375
})
7476

77+
# fetch data
78+
response = Epidata.covidcast(
79+
'src', ['sig','sig2'], 'day', 'county', 20200414, '01234')
80+
81+
# check result
82+
self.assertEqual(response, { # TODO
83+
'result': 1,
84+
'epidata': [{
85+
'time_value': 20200414,
86+
'geo_value': '01234',
87+
'value': 1.5,
88+
'stderr': 2.5,
89+
'sample_size': 3.5,
90+
'direction': 4,
91+
}],
92+
'message': 'success',
93+
})
94+
7595
def test_covidcast_meta(self):
7696
"""Test that the covidcast_meta endpoint returns expected data."""
7797

src/server/api.php

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -925,17 +925,16 @@ function get_dengue_nowcast($locations, $epiweeks) {
925925

926926
// queries the `covidcast` table.
927927
// $source (required): name of upstream data souce
928-
// $signal (required): name of signal derived from upstream data
928+
// $signals (required): array of names for signals derived from upstream data
929929
// $time_type (required): temporal resolution (e.g. day, week)
930930
// $geo_type (required): spatial resolution (e.g. county, msa, state)
931931
// $time_values (required): array of time values/ranges
932932
// $geo_value (required): location identifier or `*` as a wildcard for all
933933
// locations (specific to `$geo_type`)
934-
function get_covidcast($source, $signal, $time_type, $geo_type, $time_values, $geo_value) {
934+
function get_covidcast($source, $signals, $time_type, $geo_type, $time_values, $geo_value) {
935935
// required for `mysqli_real_escape_string`
936936
global $dbh;
937937
$source = mysqli_real_escape_string($dbh, $source);
938-
$signal = mysqli_real_escape_string($dbh, $signal);
939938
$time_type = mysqli_real_escape_string($dbh, $time_type);
940939
$geo_type = mysqli_real_escape_string($dbh, $geo_type);
941940
$geo_value = mysqli_real_escape_string($dbh, $geo_value);
@@ -949,7 +948,7 @@ function get_covidcast($source, $signal, $time_type, $geo_type, $time_values, $g
949948
$fields_float = array('value', 'stderr', 'sample_size');
950949
// build the source, signal, time, and location (type and id) filters
951950
$condition_source = "t.`source` = '{$source}'";
952-
$condition_signal = "t.`signal` = '{$signal}'";
951+
$condition_signal = filter_strings('t.`signal`', $signals);
953952
$condition_time_type = "t.`time_type` = '{$time_type}'";
954953
$condition_geo_type = "t.`geo_type` = '{$geo_type}'";
955954
$condition_time_value = filter_integers('t.`time_value`', $time_values);
@@ -1444,11 +1443,11 @@ function meta_delphi() {
14441443
}
14451444
}
14461445
} else if($source === 'covidcast') {
1447-
if(require_all($data, array('data_source', 'signal', 'time_type', 'geo_type', 'time_values', 'geo_value'))) {
1446+
if(require_all($data, array('data_source', 'signals', 'time_type', 'geo_type', 'time_values', 'geo_value'))) {
14481447
// parse the request
14491448
$time_values = extract_values($_REQUEST['time_values'], 'int');
14501449
// get the data
1451-
$epidata = get_covidcast($_REQUEST['data_source'], $_REQUEST['signal'], $_REQUEST['time_type'], $_REQUEST['geo_type'], $time_values, $_REQUEST['geo_value']);
1450+
$epidata = get_covidcast($_REQUEST['data_source'], $_REQUEST['signals'], $_REQUEST['time_type'], $_REQUEST['geo_type'], $time_values, $_REQUEST['geo_value']);
14521451
store_result($data, $epidata);
14531452
}
14541453
} else if($source === 'covidcast_meta') {

0 commit comments

Comments
 (0)