58 lines
1.8 KiB
JavaScript
58 lines
1.8 KiB
JavaScript
import mkdirp from 'mkdirp'
|
|
import path from 'path'
|
|
import fs from 'fs/promises'
|
|
import Papa from 'papaparse'
|
|
|
|
async function processSingleZip(zip) {
|
|
const output = {
|
|
directory: `./public/data/testing-trend`,
|
|
file: county => `${county}.json`
|
|
}
|
|
|
|
try {
|
|
await fs.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 = row.county === 'Georgia' ? 'All' : 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 fs.writeFile(path.join(output.directory, output.file(county)), JSON.stringify(data))
|
|
}
|
|
|
|
}
|
|
|
|
function process (zips) {
|
|
return Promise.all(zips.map(zip => processSingleZip(zip)))
|
|
}
|
|
|
|
export default process
|