@@ -8,75 +8,103 @@ class Database(BaseDatabase):
88 # note we share a database with state_timeseries
99 TABLE_NAME = 'covid_hosp_state_timeseries'
1010
11- # These are the names that appear in the CSV header, in order of appearance
12- # in the database table, along with corresponding data type converters .
13- # However, note that the corresponding database column names may be shorter
11+ # These are 3-tuples of (CSV header name, SQL db column name, data type) for
12+ # all the columns in the CSV file .
13+ # Note that the corresponding database column names may be shorter
1414 # due to constraints on the length of column names. See
1515 # /src/ddl/covid_hosp.sql for more information.
1616 # Additionally, all column names below are shared with state_timeseries,
1717 # except for reporting_cutoff_start (here) and date (there). If you need
1818 # to update a column name, do it in both places.
1919 ORDERED_CSV_COLUMNS = [
20- ('state' , str ),
21- ('reporting_cutoff_start' , Utils .int_from_date ),
22- ('critical_staffing_shortage_today_yes' , int ),
23- ('critical_staffing_shortage_today_no' , int ),
24- ('critical_staffing_shortage_today_not_reported' , int ),
25- ('critical_staffing_shortage_anticipated_within_week_yes' , int ),
26- ('critical_staffing_shortage_anticipated_within_week_no' , int ),
27- ('critical_staffing_shortage_anticipated_within_week_not_reported' , int ),
28- ('hospital_onset_covid' , int ),
29- ('hospital_onset_covid_coverage' , int ),
30- ('inpatient_beds' , int ),
31- ('inpatient_beds_coverage' , int ),
32- ('inpatient_beds_used' , int ),
33- ('inpatient_beds_used_coverage' , int ),
34- ('inpatient_beds_used_covid' , int ),
35- ('inpatient_beds_used_covid_coverage' , int ),
36- ('previous_day_admission_adult_covid_confirmed' , int ),
37- ('previous_day_admission_adult_covid_confirmed_coverage' , int ),
38- ('previous_day_admission_adult_covid_suspected' , int ),
39- ('previous_day_admission_adult_covid_suspected_coverage' , int ),
40- ('previous_day_admission_pediatric_covid_confirmed' , int ),
41- ('previous_day_admission_pediatric_covid_confirmed_coverage' , int ),
42- ('previous_day_admission_pediatric_covid_suspected' , int ),
43- ('previous_day_admission_pediatric_covid_suspected_coverage' , int ),
44- ('staffed_adult_icu_bed_occupancy' , int ),
45- ('staffed_adult_icu_bed_occupancy_coverage' , int ),
46- ('staffed_icu_adult_patients_confirmed_and_suspected_covid' , int ),
47- ('staffed_icu_adult_patients_confirmed_and_suspected_covid_coverage' , int ),
48- ('staffed_icu_adult_patients_confirmed_covid' , int ),
49- ('staffed_icu_adult_patients_confirmed_covid_coverage' , int ),
50- ('total_adult_patients_hospitalized_confirmed_and_suspected_covid' , int ),
51- ('total_adult_patients_hospitalized_confirmed_and_suspected_covid_coverage' , int ),
52- ('total_adult_patients_hospitalized_confirmed_covid' , int ),
53- ('total_adult_patients_hospitalized_confirmed_covid_coverage' , int ),
54- ('total_pediatric_patients_hospitalized_confirmed_and_suspected_covid' , int ),
55- ('total_pediatric_patients_hospitalized_confirmed_and_suspected_covid_coverage' , int ),
56- ('total_pediatric_patients_hospitalized_confirmed_covid' , int ),
57- ('total_pediatric_patients_hospitalized_confirmed_covid_coverage' , int ),
58- ('total_staffed_adult_icu_beds' , int ),
59- ('total_staffed_adult_icu_beds_coverage' , int ),
60- ('inpatient_beds_utilization' , float ),
61- ('inpatient_beds_utilization_coverage' , int ),
62- ('inpatient_beds_utilization_numerator' , int ),
63- ('inpatient_beds_utilization_denominator' , int ),
64- ('percent_of_inpatients_with_covid' , float ),
65- ('percent_of_inpatients_with_covid_coverage' , int ),
66- ('percent_of_inpatients_with_covid_numerator' , int ),
67- ('percent_of_inpatients_with_covid_denominator' , int ),
68- ('inpatient_bed_covid_utilization' , float ),
69- ('inpatient_bed_covid_utilization_coverage' , int ),
70- ('inpatient_bed_covid_utilization_numerator' , int ),
71- ('inpatient_bed_covid_utilization_denominator' , int ),
72- ('adult_icu_bed_covid_utilization' , float ),
73- ('adult_icu_bed_covid_utilization_coverage' , int ),
74- ('adult_icu_bed_covid_utilization_numerator' , int ),
75- ('adult_icu_bed_covid_utilization_denominator' , int ),
76- ('adult_icu_bed_utilization' , float ),
77- ('adult_icu_bed_utilization_coverage' , int ),
78- ('adult_icu_bed_utilization_numerator' , int ),
79- ('adult_icu_bed_utilization_denominator' , int ),
20+ ('state' , 'state' , str ),
21+ ('reporting_cutoff_start' , 'reporting_cutoff_start' , Utils .int_from_date ),
22+ ('critical_staffing_shortage_today_yes' , 'critical_staffing_shortage_today_yes' , int ),
23+ ('critical_staffing_shortage_today_no' , 'critical_staffing_shortage_today_no' , int ),
24+ ('critical_staffing_shortage_today_not_reported' ,
25+ 'critical_staffing_shortage_today_not_reported' , int ),
26+ ('critical_staffing_shortage_anticipated_within_week_yes' ,
27+ 'critical_staffing_shortage_anticipated_within_week_yes' , int ),
28+ ('critical_staffing_shortage_anticipated_within_week_no' ,
29+ 'critical_staffing_shortage_anticipated_within_week_no' , int ),
30+ ('critical_staffing_shortage_anticipated_within_week_not_reported' ,
31+ 'critical_staffing_shortage_anticipated_within_week_not_reported' , int ),
32+ ('hospital_onset_covid' , 'hospital_onset_covid' , int ),
33+ ('hospital_onset_covid_coverage' , 'hospital_onset_covid_coverage' , int ),
34+ ('inpatient_beds' , 'inpatient_beds' , int ),
35+ ('inpatient_beds_coverage' , 'inpatient_beds_coverage' , int ),
36+ ('inpatient_beds_used' , 'inpatient_beds_used' , int ),
37+ ('inpatient_beds_used_coverage' , 'inpatient_beds_used_coverage' , int ),
38+ ('inpatient_beds_used_covid' , 'inpatient_beds_used_covid' , int ),
39+ ('inpatient_beds_used_covid_coverage' , 'inpatient_beds_used_covid_coverage' , int ),
40+ ('previous_day_admission_adult_covid_confirmed' , 'previous_day_admission_adult_covid_confirmed' ,
41+ int ),
42+ ('previous_day_admission_adult_covid_confirmed_coverage' ,
43+ 'previous_day_admission_adult_covid_confirmed_coverage' , int ),
44+ ('previous_day_admission_adult_covid_suspected' , 'previous_day_admission_adult_covid_suspected' ,
45+ int ),
46+ ('previous_day_admission_adult_covid_suspected_coverage' ,
47+ 'previous_day_admission_adult_covid_suspected_coverage' , int ),
48+ ('previous_day_admission_pediatric_covid_confirmed' ,
49+ 'previous_day_admission_pediatric_covid_confirmed' , int ),
50+ ('previous_day_admission_pediatric_covid_confirmed_coverage' ,
51+ 'previous_day_admission_pediatric_covid_confirmed_coverage' , int ),
52+ ('previous_day_admission_pediatric_covid_suspected' ,
53+ 'previous_day_admission_pediatric_covid_suspected' , int ),
54+ ('previous_day_admission_pediatric_covid_suspected_coverage' ,
55+ 'previous_day_admission_pediatric_covid_suspected_coverage' , int ),
56+ ('staffed_adult_icu_bed_occupancy' , 'staffed_adult_icu_bed_occupancy' , int ),
57+ ('staffed_adult_icu_bed_occupancy_coverage' , 'staffed_adult_icu_bed_occupancy_coverage' , int ),
58+ ('staffed_icu_adult_patients_confirmed_and_suspected_covid' ,
59+ 'staffed_icu_adult_patients_confirmed_suspected_covid' , int ),
60+ ('staffed_icu_adult_patients_confirmed_and_suspected_covid_coverage' ,
61+ 'staffed_icu_adult_patients_confirmed_suspected_covid_coverage' , int ),
62+ ('staffed_icu_adult_patients_confirmed_covid' , 'staffed_icu_adult_patients_confirmed_covid' ,
63+ int ),
64+ ('staffed_icu_adult_patients_confirmed_covid_coverage' ,
65+ 'staffed_icu_adult_patients_confirmed_covid_coverage' , int ),
66+ ('total_adult_patients_hospitalized_confirmed_and_suspected_covid' ,
67+ 'total_adult_patients_hosp_confirmed_suspected_covid' , int ),
68+ ('total_adult_patients_hospitalized_confirmed_and_suspected_covid_coverage' ,
69+ 'total_adult_patients_hosp_confirmed_suspected_covid_coverage' , int ),
70+ ('total_adult_patients_hospitalized_confirmed_covid' ,
71+ 'total_adult_patients_hosp_confirmed_covid' , int ),
72+ ('total_adult_patients_hospitalized_confirmed_covid_coverage' ,
73+ 'total_adult_patients_hosp_confirmed_covid_coverage' , int ),
74+ ('total_pediatric_patients_hospitalized_confirmed_and_suspected_covid' ,
75+ 'total_pediatric_patients_hosp_confirmed_suspected_covid' , int ),
76+ ('total_pediatric_patients_hospitalized_confirmed_and_suspected_covid_coverage' ,
77+ 'total_pediatric_patients_hosp_confirmed_suspected_covid_coverage' , int ),
78+ ('total_pediatric_patients_hospitalized_confirmed_covid' ,
79+ 'total_pediatric_patients_hosp_confirmed_covid' , int ),
80+ ('total_pediatric_patients_hospitalized_confirmed_covid_coverage' ,
81+ 'total_pediatric_patients_hosp_confirmed_covid_coverage' , int ),
82+ ('total_staffed_adult_icu_beds' , 'total_staffed_adult_icu_beds' , int ),
83+ ('total_staffed_adult_icu_beds_coverage' , 'total_staffed_adult_icu_beds_coverage' , int ),
84+ ('inpatient_beds_utilization' , 'inpatient_beds_utilization' , float ),
85+ ('inpatient_beds_utilization_coverage' , 'inpatient_beds_utilization_coverage' , int ),
86+ ('inpatient_beds_utilization_numerator' , 'inpatient_beds_utilization_numerator' , int ),
87+ ('inpatient_beds_utilization_denominator' , 'inpatient_beds_utilization_denominator' , int ),
88+ ('percent_of_inpatients_with_covid' , 'percent_of_inpatients_with_covid' , float ),
89+ ('percent_of_inpatients_with_covid_coverage' , 'percent_of_inpatients_with_covid_coverage' , int ),
90+ ('percent_of_inpatients_with_covid_numerator' , 'percent_of_inpatients_with_covid_numerator' ,
91+ int ),
92+ ('percent_of_inpatients_with_covid_denominator' , 'percent_of_inpatients_with_covid_denominator' ,
93+ int ),
94+ ('inpatient_bed_covid_utilization' , 'inpatient_bed_covid_utilization' , float ),
95+ ('inpatient_bed_covid_utilization_coverage' , 'inpatient_bed_covid_utilization_coverage' , int ),
96+ ('inpatient_bed_covid_utilization_numerator' , 'inpatient_bed_covid_utilization_numerator' , int ),
97+ ('inpatient_bed_covid_utilization_denominator' , 'inpatient_bed_covid_utilization_denominator' ,
98+ int ),
99+ ('adult_icu_bed_covid_utilization' , 'adult_icu_bed_covid_utilization' , float ),
100+ ('adult_icu_bed_covid_utilization_coverage' , 'adult_icu_bed_covid_utilization_coverage' , int ),
101+ ('adult_icu_bed_covid_utilization_numerator' , 'adult_icu_bed_covid_utilization_numerator' , int ),
102+ ('adult_icu_bed_covid_utilization_denominator' , 'adult_icu_bed_covid_utilization_denominator' ,
103+ int ),
104+ ('adult_icu_bed_utilization' , 'adult_icu_bed_utilization' , float ),
105+ ('adult_icu_bed_utilization_coverage' , 'adult_icu_bed_utilization_coverage' , int ),
106+ ('adult_icu_bed_utilization_numerator' , 'adult_icu_bed_utilization_numerator' , int ),
107+ ('adult_icu_bed_utilization_denominator' , 'adult_icu_bed_utilization_denominator' , int ),
80108 ]
81109
82110 def __init__ (self , * args , ** kwargs ):
@@ -85,4 +113,4 @@ def __init__(self, *args, **kwargs):
85113 ** kwargs ,
86114 table_name = Database .TABLE_NAME ,
87115 columns_and_types = Database .ORDERED_CSV_COLUMNS ,
88- additional_fields = ('D' ,) )
116+ additional_fields = [ ('D' , 'record_type' )] )
0 commit comments