Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import fetch from 'node-fetch';
- const ageMap = {
- "10000": "all",
- "41700": "0-65",
- "53950": "65-80",
- "21700": "80+"
- };
- const sexMap = {
- "1100": "all"
- };
- const residents = {
- "2015": (16992010 + 17072044) / 2,
- "2016": (16992010 + 17072044) / 2,
- "2017": (17091456 + 17172903) / 2,
- "2018": (17192306 + 17271231) / 2,
- "2019": (17299343 + 17399364) / 2,
- "2020": (17422992 + 17469635) / 2,
- "2021": (17422992 + 17469635) / 2
- };
- function range(start, stop, step) {
- var a = [start], b = start;
- while (b < stop) {
- a.push(b += step || 1);
- }
- return a;
- }
- const selectSex = (sex = 1100) => `(Geslacht eq '${sex}')`;
- const selectAge = (age = 10000) => `(LeeftijdOp31December eq '${age}')`;
- const selectWeek = (year, week) => `(Perioden eq '${year}W${100 + week}')`;
- const selectYear = (year, startWeek = 2, endWeek = 51) => range(startWeek, endWeek).map((week) => selectWeek(year, week));
- function buildUrl(year, startWeek = 2, endWeek = 51) {
- const filterSexes = [1100].map(selectSex);
- const filterAges = [10000, 41700, 53950, 21700].map(selectAge);
- const filterPeriods = selectYear(year, startWeek, endWeek);
- const select = `Geslacht, LeeftijdOp31December, Perioden, Overledenen_1`;
- const filter = `(${filterSexes.join(' or ')}) and (${filterAges.join(' or ')}) and (${filterPeriods.join(' or ')})`;
- return `https://opendata.cbs.nl/ODataApi/odata/70895ned/UntypedDataSet?$filter=${filter}&$select=${select}`
- }
- async function main() {
- const data = [];
- const getYearTasks = range(2015, 2021).map((year) => ({year, get: new Promise((resolve, reject) => {
- (async () => {
- try {
- const response = await fetch(buildUrl(year, 29, 39));
- const json = await response.json();
- resolve(json);
- } catch(e) {
- reject(e);
- }
- })();
- })}));
- for(const getYearTask of getYearTasks) {
- const deathsWeekMap = {};
- const yearData = await getYearTask.get;
- const yearValues = yearData.value;
- for(const value of yearValues) {
- const sex = sexMap[value['Geslacht']];
- const age = ageMap[value['LeeftijdOp31December']];
- const year = Number(value['Perioden'].substring(0, 4));
- const week = Number(value['Perioden'].substring(6, 8));
- const deaths = Number(value['Overledenen_1']);
- if(!deathsWeekMap[week]) {
- deathsWeekMap[week] = {};
- }
- deathsWeekMap[week]['Week'] = `${year} week ${week}`;
- deathsWeekMap[week][age] = deaths;
- }
- data.push(Object.values(deathsWeekMap));
- }
- const [during_2021, during_2020, ...before_2020_rest] = data.reverse();
- {
- console.log("all:");
- const during_2020_total = during_2020.reduce((r, week) => week['all'] + r, 0);
- const during_2021_total = during_2021.reduce((r, week) => week['all'] + r, 0);
- const before_2020_average = before_2020_rest.reduce((r, year) => year.reduce((r, week) => week['all'] + r, 0) + r, 0) / before_2020_rest.length;
- console.log("deaths during 2020 week 29-39:\n", during_2020_total);
- console.log("deaths during 2021 week 29-39:\n", during_2021_total);
- console.log("average between 2015 until 2019 week 29-39:\n", before_2020_average);
- console.log("difference before 2020 vs during 2020 week 29-39:\n", during_2020_total - before_2020_average);
- console.log("difference before 2020 vs during 2021 week 29-39:\n", during_2021_total - before_2020_average);
- }
- console.log();
- {
- console.log("0-65:");
- const during_2020_total = during_2020.reduce((r, week) => week['0-65'] + r, 0);
- const during_2021_total = during_2021.reduce((r, week) => week['0-65'] + r, 0);
- const before_2020_average = before_2020_rest.reduce((r, year) => year.reduce((r, week) => week['0-65'] + r, 0) + r, 0) / before_2020_rest.length;
- console.log("deaths during 2020 week 29-39:\n", during_2020_total);
- console.log("deaths during 2021 week 29-39:\n", during_2021_total);
- console.log("average between 2015 until 2019 week 29-39:\n", before_2020_average);
- console.log("difference before 2020 vs during 2020 week 29-39:\n", during_2020_total - before_2020_average);
- console.log("difference before 2020 vs during 2021 week 29-39:\n", during_2021_total - before_2020_average);
- }
- console.log();
- {
- console.log("65-80:");
- const during_2020_total = during_2020.reduce((r, week) => week['65-80'] + r, 0);
- const during_2021_total = during_2021.reduce((r, week) => week['65-80'] + r, 0);
- const before_2020_average = before_2020_rest.reduce((r, year) => year.reduce((r, week) => week['65-80'] + r, 0) + r, 0) / before_2020_rest.length;
- console.log("deaths during 2020 week 29-39:\n", during_2020_total);
- console.log("deaths during 2021 week 29-39:\n", during_2021_total);
- console.log("average between 2015 until 2019 week 29-39:\n", before_2020_average);
- console.log("difference before 2020 vs during 2020 week 29-39:\n", during_2020_total - before_2020_average);
- console.log("difference before 2020 vs during 2021 week 29-39:\n", during_2021_total - before_2020_average);
- }
- console.log();
- {
- console.log("80+:");
- const during_2020_total = during_2020.reduce((r, week) => week['80+'] + r, 0);
- const during_2021_total = during_2021.reduce((r, week) => week['80+'] + r, 0);
- const before_2020_average = before_2020_rest.reduce((r, year) => year.reduce((r, week) => week['80+'] + r, 0) + r, 0) / before_2020_rest.length;
- console.log("deaths during 2020 week 29-39:\n", during_2020_total);
- console.log("deaths during 2021 week 29-39:\n", during_2021_total);
- console.log("average between 2015 until 2019 week 29-39:\n", before_2020_average);
- console.log("difference before 2020 vs during 2020 week 29-39:\n", during_2020_total - before_2020_average);
- console.log("difference before 2020 vs during 2021 week 29-39:\n", during_2021_total - before_2020_average);
- }
- }
- main().catch(x => console.error(x));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement