Add hospitalizations page.
This commit is contained in:
5
components.d.ts
vendored
5
components.d.ts
vendored
@@ -7,6 +7,7 @@ declare module 'vue' {
|
|||||||
Cache: typeof import('./src/components/charts/state/testing/cache.js')['default']
|
Cache: typeof import('./src/components/charts/state/testing/cache.js')['default']
|
||||||
Card: typeof import('./src/components/Card.vue')['default']
|
Card: typeof import('./src/components/Card.vue')['default']
|
||||||
ChipsCases: typeof import('./src/components/charts/overall/cases/ChipsCases.vue')['default']
|
ChipsCases: typeof import('./src/components/charts/overall/cases/ChipsCases.vue')['default']
|
||||||
|
ChipsHospitalizations: typeof import('./src/components/charts/overall/hospitalizations/ChipsHospitalizations.vue')['default']
|
||||||
ChipsTesting: typeof import('./src/components/charts/overall/testing/ChipsTesting.vue')['default']
|
ChipsTesting: typeof import('./src/components/charts/overall/testing/ChipsTesting.vue')['default']
|
||||||
County_time_series: typeof import('./src/components/charts/state/cases/county_time_series.js')['default']
|
County_time_series: typeof import('./src/components/charts/state/cases/county_time_series.js')['default']
|
||||||
County_time_series_store: typeof import('./src/components/charts/state/cases/county_time_series_store.js')['default']
|
County_time_series_store: typeof import('./src/components/charts/state/cases/county_time_series_store.js')['default']
|
||||||
@@ -24,7 +25,9 @@ declare module 'vue' {
|
|||||||
JSGrid: typeof import('./src/components/jscharting/JSGrid.vue')['default']
|
JSGrid: typeof import('./src/components/jscharting/JSGrid.vue')['default']
|
||||||
JSLabel: typeof import('./src/components/jscharting/JSLabel.vue')['default']
|
JSLabel: typeof import('./src/components/jscharting/JSLabel.vue')['default']
|
||||||
MapCases: typeof import('./src/components/charts/overall/cases/MapCases.vue')['default']
|
MapCases: typeof import('./src/components/charts/overall/cases/MapCases.vue')['default']
|
||||||
|
MapHospitalizations: typeof import('./src/components/charts/overall/hospitalizations/MapHospitalizations.vue')['default']
|
||||||
ParametersCases: typeof import('./src/components/charts/overall/cases/ParametersCases.vue')['default']
|
ParametersCases: typeof import('./src/components/charts/overall/cases/ParametersCases.vue')['default']
|
||||||
|
ParametersHospitalizations: typeof import('./src/components/charts/overall/hospitalizations/ParametersHospitalizations.vue')['default']
|
||||||
ParametersTesting: typeof import('./src/components/charts/overall/testing/ParametersTesting.vue')['default']
|
ParametersTesting: typeof import('./src/components/charts/overall/testing/ParametersTesting.vue')['default']
|
||||||
SliceSelector: typeof import('./src/components/SliceSelector.vue')['default']
|
SliceSelector: typeof import('./src/components/SliceSelector.vue')['default']
|
||||||
StatCard: typeof import('./src/components/cards/StatCard.vue')['default']
|
StatCard: typeof import('./src/components/cards/StatCard.vue')['default']
|
||||||
@@ -41,6 +44,8 @@ declare module 'vue' {
|
|||||||
TrendDailyCases: typeof import('./src/components/charts/overall/cases/TrendDailyCases.vue')['default']
|
TrendDailyCases: typeof import('./src/components/charts/overall/cases/TrendDailyCases.vue')['default']
|
||||||
'TrendDailyCases copy': typeof import('./src/components/charts/state/cases/TrendDailyCases copy.vue')['default']
|
'TrendDailyCases copy': typeof import('./src/components/charts/state/cases/TrendDailyCases copy.vue')['default']
|
||||||
TrendDailyCasesPerCapita: typeof import('./src/components/charts/overall/cases/TrendDailyCasesPerCapita.vue')['default']
|
TrendDailyCasesPerCapita: typeof import('./src/components/charts/overall/cases/TrendDailyCasesPerCapita.vue')['default']
|
||||||
|
TrendDailyHospitalizations: typeof import('./src/components/charts/overall/hospitalizations/TrendDailyHospitalizations.vue')['default']
|
||||||
|
TrendDailyHospitalizationsPerCapita: typeof import('./src/components/charts/overall/hospitalizations/TrendDailyHospitalizationsPerCapita.vue')['default']
|
||||||
TrendPCRPositive: typeof import('./src/components/charts/overall/testing/TrendPCRPositive.vue')['default']
|
TrendPCRPositive: typeof import('./src/components/charts/overall/testing/TrendPCRPositive.vue')['default']
|
||||||
TrendPCRTests: typeof import('./src/components/charts/overall/testing/TrendPCRTests.vue')['default']
|
TrendPCRTests: typeof import('./src/components/charts/overall/testing/TrendPCRTests.vue')['default']
|
||||||
TrendTotalCases: typeof import('./src/components/charts/overall/cases/TrendTotalCases.vue')['default']
|
TrendTotalCases: typeof import('./src/components/charts/overall/cases/TrendTotalCases.vue')['default']
|
||||||
|
@@ -3,8 +3,9 @@ import fg from 'fast-glob'
|
|||||||
import path from 'path'
|
import path from 'path'
|
||||||
import StreamZip from 'node-stream-zip'
|
import StreamZip from 'node-stream-zip'
|
||||||
import Counties from './parser/counties.js'
|
import Counties from './parser/counties.js'
|
||||||
import StateTesting from './parser/state/testing.js'
|
import OverallTesting from './parser/overall/testing.js'
|
||||||
import StateCases from './parser/state/cases.js'
|
import OverallCases from './parser/overall/cases.js'
|
||||||
|
import OverallHospitalizations from './parser/overall/hospitalizations.js'
|
||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
const sources = await fg(['./data/raw/*.zip'])
|
const sources = await fg(['./data/raw/*.zip'])
|
||||||
@@ -17,8 +18,9 @@ async function main() {
|
|||||||
|
|
||||||
const counties = await Counties(zips)
|
const counties = await Counties(zips)
|
||||||
|
|
||||||
await StateTesting(zips)
|
await OverallTesting(zips)
|
||||||
await StateCases(zips, counties)
|
await OverallCases(zips, counties)
|
||||||
|
await OverallHospitalizations(zips, counties)
|
||||||
}
|
}
|
||||||
|
|
||||||
main()
|
main()
|
||||||
|
130
data/parser/overall/hospitalizations.js
Normal file
130
data/parser/overall/hospitalizations.js
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
import mkdirp from 'mkdirp'
|
||||||
|
import path from 'path'
|
||||||
|
import fsp from 'fs/promises'
|
||||||
|
import Papa from 'papaparse'
|
||||||
|
import { getCounty } from '../../util.js'
|
||||||
|
|
||||||
|
async function processByCounty({ date, zip }, countyInfo, output) {
|
||||||
|
output = {
|
||||||
|
directory: path.join(output.directory, 'by-county'),
|
||||||
|
file: county => `${county}.json`
|
||||||
|
}
|
||||||
|
|
||||||
|
const csv = await zip.entryData('epicurve_rpt_date.csv').then(res => res.toString())
|
||||||
|
|
||||||
|
const rows = Papa.parse(csv, {
|
||||||
|
header: true
|
||||||
|
}).data
|
||||||
|
|
||||||
|
const hospitalizations_last_14_days = []
|
||||||
|
|
||||||
|
function computeHospitalizationsLast14Days() {
|
||||||
|
return hospitalizations_last_14_days.reduce((prev, current) => prev + current, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
const counties = rows.reduce((counties, row) => {
|
||||||
|
const county = getCounty(row.county)
|
||||||
|
const info = countyInfo[county]
|
||||||
|
if (!county) return counties
|
||||||
|
if (!counties[county]) counties[county] = []
|
||||||
|
hospitalizations_last_14_days.unshift(+row.confirmed_case_hospitalization)
|
||||||
|
hospitalizations_last_14_days.length = 14
|
||||||
|
|
||||||
|
counties[county].push({
|
||||||
|
report_date: row['report_date'],
|
||||||
|
population: info.population,
|
||||||
|
hospitalizations: parseInt(row.confirmed_case_hospitalization),
|
||||||
|
hospitalizations_per_capita: parseInt(row.confirmed_case_hospitalization) / info.population,
|
||||||
|
hospitalizations_last_14_days: computeHospitalizationsLast14Days(),
|
||||||
|
hospitalizations_last_14_days_per_capita: computeHospitalizationsLast14Days() / info.population
|
||||||
|
})
|
||||||
|
return counties
|
||||||
|
}, {})
|
||||||
|
|
||||||
|
for (const county in counties) {
|
||||||
|
const data = {
|
||||||
|
segment: { county },
|
||||||
|
headers: Object.keys(counties[county][0]),
|
||||||
|
rows: counties[county].map(row => Object.values(row))
|
||||||
|
}
|
||||||
|
|
||||||
|
await mkdirp(output.directory)
|
||||||
|
await fsp.writeFile(path.join(output.directory, output.file(county)), JSON.stringify(data))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function processCombined({ date, zip }, countyInfo, output) {
|
||||||
|
output = {
|
||||||
|
directory: output.directory,
|
||||||
|
file: `combined.json`
|
||||||
|
}
|
||||||
|
|
||||||
|
const csv = await zip.entryData('epicurve_rpt_date.csv').then(res => res.toString())
|
||||||
|
|
||||||
|
const rows = Papa.parse(csv, {
|
||||||
|
header: true
|
||||||
|
}).data
|
||||||
|
|
||||||
|
const report_dates = new Set()
|
||||||
|
|
||||||
|
let hospitalizations_last_14_days = []
|
||||||
|
|
||||||
|
function computeHospitalizationsLast14Days() {
|
||||||
|
return hospitalizations_last_14_days.reduce((prev, current) => prev + current, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
let oldCounty = null
|
||||||
|
const results = rows.map(row => {
|
||||||
|
const county = getCounty(row.county)
|
||||||
|
if (!county) return null
|
||||||
|
if (['-- All --', '-- Unknown --'].includes(county)) return null
|
||||||
|
const info = countyInfo[county]
|
||||||
|
|
||||||
|
if (oldCounty !== county) {
|
||||||
|
hospitalizations_last_14_days = []
|
||||||
|
oldCounty = county
|
||||||
|
}
|
||||||
|
hospitalizations_last_14_days.unshift(+row.confirmed_case_hospitalization)
|
||||||
|
hospitalizations_last_14_days.length = 14
|
||||||
|
|
||||||
|
report_dates.add(row['report_date'])
|
||||||
|
return {
|
||||||
|
county,
|
||||||
|
report_date: row['report_date'],
|
||||||
|
population: info.population,
|
||||||
|
hospitalizations: parseInt(row.confirmed_case_hospitalization),
|
||||||
|
hospitalizations_per_capita: parseInt(row.confirmed_case_hospitalization) / info.population,
|
||||||
|
hospitalizations_last_14_days: computeHospitalizationsLast14Days(county),
|
||||||
|
hospitalizations_last_14_days_per_capita: computeHospitalizationsLast14Days(county) / info.population
|
||||||
|
}
|
||||||
|
}).filter(row => !!row)
|
||||||
|
|
||||||
|
const data = {
|
||||||
|
segment: { report_date: Array.from(report_dates) },
|
||||||
|
headers: Object.keys(results[0]),
|
||||||
|
rows: results.map(row => Object.values(row))
|
||||||
|
}
|
||||||
|
|
||||||
|
await mkdirp(output.directory)
|
||||||
|
await fsp.writeFile(path.join(output.directory, output.file), JSON.stringify(data))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async function processSingleZip (zip, countyInfo) {
|
||||||
|
const output = {
|
||||||
|
directory: `./public/data/state/hospitalizations/`,
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
await fsp.rm(output.directory, { recursive: true })
|
||||||
|
} catch (e) {}
|
||||||
|
|
||||||
|
await processByCounty(zip, countyInfo, output)
|
||||||
|
await processCombined(zip, countyInfo, output)
|
||||||
|
}
|
||||||
|
|
||||||
|
function process (zips, countyInfo) {
|
||||||
|
return processSingleZip(zips.at(-1), countyInfo)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default process
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Bacon.json
Normal file
1
public/data/state/hospitalizations/by-county/Bacon.json
Normal file
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Baker.json
Normal file
1
public/data/state/hospitalizations/by-county/Baker.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Banks.json
Normal file
1
public/data/state/hospitalizations/by-county/Banks.json
Normal file
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Barrow.json
Normal file
1
public/data/state/hospitalizations/by-county/Barrow.json
Normal file
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Bartow.json
Normal file
1
public/data/state/hospitalizations/by-county/Bartow.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Bibb.json
Normal file
1
public/data/state/hospitalizations/by-county/Bibb.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Brooks.json
Normal file
1
public/data/state/hospitalizations/by-county/Brooks.json
Normal file
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Bryan.json
Normal file
1
public/data/state/hospitalizations/by-county/Bryan.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Burke.json
Normal file
1
public/data/state/hospitalizations/by-county/Burke.json
Normal file
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Butts.json
Normal file
1
public/data/state/hospitalizations/by-county/Butts.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Camden.json
Normal file
1
public/data/state/hospitalizations/by-county/Camden.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Clarke.json
Normal file
1
public/data/state/hospitalizations/by-county/Clarke.json
Normal file
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Clay.json
Normal file
1
public/data/state/hospitalizations/by-county/Clay.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Clinch.json
Normal file
1
public/data/state/hospitalizations/by-county/Clinch.json
Normal file
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Cobb.json
Normal file
1
public/data/state/hospitalizations/by-county/Cobb.json
Normal file
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Coffee.json
Normal file
1
public/data/state/hospitalizations/by-county/Coffee.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Cook.json
Normal file
1
public/data/state/hospitalizations/by-county/Cook.json
Normal file
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Coweta.json
Normal file
1
public/data/state/hospitalizations/by-county/Coweta.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Crisp.json
Normal file
1
public/data/state/hospitalizations/by-county/Crisp.json
Normal file
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Dade.json
Normal file
1
public/data/state/hospitalizations/by-county/Dade.json
Normal file
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Dawson.json
Normal file
1
public/data/state/hospitalizations/by-county/Dawson.json
Normal file
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/DeKalb.json
Normal file
1
public/data/state/hospitalizations/by-county/DeKalb.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Dodge.json
Normal file
1
public/data/state/hospitalizations/by-county/Dodge.json
Normal file
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Dooly.json
Normal file
1
public/data/state/hospitalizations/by-county/Dooly.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Early.json
Normal file
1
public/data/state/hospitalizations/by-county/Early.json
Normal file
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Echols.json
Normal file
1
public/data/state/hospitalizations/by-county/Echols.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Elbert.json
Normal file
1
public/data/state/hospitalizations/by-county/Elbert.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Evans.json
Normal file
1
public/data/state/hospitalizations/by-county/Evans.json
Normal file
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Fannin.json
Normal file
1
public/data/state/hospitalizations/by-county/Fannin.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Floyd.json
Normal file
1
public/data/state/hospitalizations/by-county/Floyd.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Fulton.json
Normal file
1
public/data/state/hospitalizations/by-county/Fulton.json
Normal file
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Gilmer.json
Normal file
1
public/data/state/hospitalizations/by-county/Gilmer.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Glynn.json
Normal file
1
public/data/state/hospitalizations/by-county/Glynn.json
Normal file
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Gordon.json
Normal file
1
public/data/state/hospitalizations/by-county/Gordon.json
Normal file
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Grady.json
Normal file
1
public/data/state/hospitalizations/by-county/Grady.json
Normal file
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Greene.json
Normal file
1
public/data/state/hospitalizations/by-county/Greene.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Hall.json
Normal file
1
public/data/state/hospitalizations/by-county/Hall.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Harris.json
Normal file
1
public/data/state/hospitalizations/by-county/Harris.json
Normal file
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Hart.json
Normal file
1
public/data/state/hospitalizations/by-county/Hart.json
Normal file
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Heard.json
Normal file
1
public/data/state/hospitalizations/by-county/Heard.json
Normal file
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Henry.json
Normal file
1
public/data/state/hospitalizations/by-county/Henry.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Irwin.json
Normal file
1
public/data/state/hospitalizations/by-county/Irwin.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Jasper.json
Normal file
1
public/data/state/hospitalizations/by-county/Jasper.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Jones.json
Normal file
1
public/data/state/hospitalizations/by-county/Jones.json
Normal file
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Lamar.json
Normal file
1
public/data/state/hospitalizations/by-county/Lamar.json
Normal file
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Lanier.json
Normal file
1
public/data/state/hospitalizations/by-county/Lanier.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Lee.json
Normal file
1
public/data/state/hospitalizations/by-county/Lee.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/data/state/hospitalizations/by-county/Long.json
Normal file
1
public/data/state/hospitalizations/by-county/Long.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user