Working on case cards.

This commit is contained in:
Joshua Bemenderfer
2021-12-30 21:56:56 -05:00
parent 4e83fd3dbd
commit bbaef02acb
512 changed files with 847 additions and 1240952 deletions

View File

@@ -0,0 +1,58 @@
import mkdirp from 'mkdirp'
import path from 'path'
import fsp from 'fs/promises'
import Papa from 'papaparse'
import { getCounty } from '../../util.js'
async function processSingleZip ({ date, zip }, countyInfo) {
const output = {
directory: `./public/data/state/cases`,
file: county => `${county}.json`
}
try {
await fsp.rm(output.directory, { recursive: true })
} catch (e) {}
const csv = await zip.entryData('epicurve_rpt_date.csv').then(res => res.toString())
const rows = Papa.parse(csv, {
header: true
}).data
const counties = rows.reduce((counties, row) => {
const county = getCounty(row.county)
const info = countyInfo[county]
if (!county) return counties
if (!counties[county]) counties[county] = []
counties[county].push({
report_date: row['report_date'],
population: info.population,
cases: parseInt(row.cases),
cases_per_capita: parseInt(row.cases) / info.population,
moving_avg_cases: parseInt(row.moving_avg_cases),
moving_avg_cases_per_capita: parseInt(row.moving_avg_cases) / info.population,
total_cases: parseInt(row.total_cases_cum),
total_cases_per_capita: parseInt(row.total_cases_cum) / 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))
}
}
function process (zips, countyInfo) {
return processSingleZip(zips.at(-1), countyInfo)
}
export default process

View File

@@ -0,0 +1,58 @@
import mkdirp from 'mkdirp'
import path from 'path'
import fsp from 'fs/promises'
import Papa from 'papaparse'
import { getCounty } from '../../util.js'
async function processSingleZip ({ date, zip }) {
const output = {
directory: `./public/data/state/testing`,
file: county => `${county}.json`
}
try {
await fsp.rm(output.directory, { recursive: true })
} catch (e) {}
const csv = await zip.entryData('pcr_antigen.csv').then(res => res.toString())
const rows = Papa.parse(csv, {
header: true
}).data
const counties = rows.reduce((counties, row) => {
const county = getCounty(row.county)
if (!county) return counties
if (!counties[county]) counties[county] = []
counties[county].push({
report_date: row['report_date'],
pcr_performed: +row['ALL PCR tests performed'],
pcr_positive: +row['All PCR positive tests'],
antigen_performed: +row['Antigen Tests Performed'],
antigen_positive: +row['Antigen Positive Tests'],
combined_performed: (+row['ALL PCR tests performed']) + (+row['Antigen Tests Performed']),
combined_positive: (+row['All PCR positive tests']) + (+row['Antigen Positive Tests']),
seven_day_percent_positive: +row['7 day percent positive'],
combined_performed_running_total: (+row['Running total of all PCR tests']) + (+row['Running total of all Antigen tests']),
})
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))
}
}
function process (zips) {
return processSingleZip(zips.at(-1))
}
export default process