-
-
Notifications
You must be signed in to change notification settings - Fork 5
/
generate-csv.js
516 lines (445 loc) · 45.3 KB
/
generate-csv.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
const fs = require('fs');
const _ = require('lodash');
const { format } = require('@fast-csv/format');
const PUBLICATION_JSON_PATH = 'docs/data/publications.json';
const DATA_CSV_PATH = 'docs/data/all.csv';
const DATA_JSON_PATH = 'docs/data/all.json';
const DISTRIBUTION_DATA_CSV_PATH = 'docs/data/distribution.csv';
const DISTRIBUTION_DATA_JSON_PATH = 'docs/data/distribution.json';
const AIR_DATA_CSV_PATH = 'docs/data/air.csv';
const AIR_DATA_JSON_PATH = 'docs/data/air.json';
const AIR_RESI_DATA_CSV_PATH = 'docs/data/air_residence.csv';
const AIR_RESI_DATA_JSON_PATH = 'docs/data/air_residence.json';
const PUBLICATION_JSON_DATA_PATH = 'docs/data/';
const SECOND_DOSE_PUBLICATION_JSON_DATA_PATH = 'docs/wahealth/';
// population data based on https://www.abs.gov.au/statistics/people/population/national-state-and-territory-population/sep-2020#data-download
// The eligible population is calculated as all people ages 16 or older
const STATE_16_OVER_POPULATIONS = {
NSW: 8167532 - 1601881,
VIC: 6696670 - 1289096,
QLD: 5176186 - 1063479,
SA: 1770375 - 329975,
WA: 2663561 - 548583,
TAS: 540780 - 100608,
NT: 246143 - 55572,
ACT: 431380 - 87343
}
const COLUMN_TO_PATH_MAPPING = {
DATE_AS_AT: 'dataAsAt',
TOTALS_NATIONAL_TOTAL: 'totals.national.total',
TOTALS_NATIONAL_LAST_24HR: 'totals.national.last24hr',
TOTALS_CWTH_ALL_TOTAL: 'totals.cwthAll.total',
TOTALS_CWTH_ALL_LAST_24HR: 'totals.cwthAll.last24hr',
TOTALS_CWTH_PRIMARY_CARE_TOTAL: 'totals.cwthPrimaryCare.total',
TOTALS_CWTH_PRIMARY_CARE_LAST_24HR: 'totals.cwthPrimaryCare.last24hr',
TOTALS_CWTH_AGED_CARE_TOTAL: 'totals.cwthAgedCare.total',
TOTALS_CWTH_AGED_CARE_LAST_24HR: 'totals.cwthAgedCare.last24hr',
STATE_CLINICS_VIC_TOTAL: 'stateClinics.VIC.total',
STATE_CLINICS_VIC_LAST_24HR: 'stateClinics.VIC.last24hr',
STATE_CLINICS_QLD_TOTAL: 'stateClinics.QLD.total',
STATE_CLINICS_QLD_LAST_24HR: 'stateClinics.QLD.last24hr',
STATE_CLINICS_WA_TOTAL: 'stateClinics.WA.total',
STATE_CLINICS_WA_LAST_24HR: 'stateClinics.WA.last24hr',
STATE_CLINICS_TAS_TOTAL: 'stateClinics.TAS.total',
STATE_CLINICS_TAS_LAST_24HR: 'stateClinics.TAS.last24hr',
STATE_CLINICS_SA_TOTAL: 'stateClinics.SA.total',
STATE_CLINICS_SA_LAST_24HR: 'stateClinics.SA.last24hr',
STATE_CLINICS_ACT_TOTAL: 'stateClinics.ACT.total',
STATE_CLINICS_ACT_LAST_24HR: 'stateClinics.ACT.last24hr',
STATE_CLINICS_NT_TOTAL: 'stateClinics.NT.total',
STATE_CLINICS_NT_LAST_24HR: 'stateClinics.NT.last24hr',
STATE_CLINICS_NSW_TOTAL: 'stateClinics.NSW.total',
STATE_CLINICS_NSW_LAST_24HR: 'stateClinics.NSW.last24hr',
CWTH_AGED_CARE_VIC_TOTAL: 'cwthAgedCare.VIC.total',
CWTH_AGED_CARE_VIC_LAST_24HR: 'cwthAgedCare.VIC.last24hr',
CWTH_AGED_CARE_QLD_TOTAL: 'cwthAgedCare.QLD.total',
CWTH_AGED_CARE_QLD_LAST_24HR: 'cwthAgedCare.QLD.last24hr',
CWTH_AGED_CARE_WA_TOTAL: 'cwthAgedCare.WA.total',
CWTH_AGED_CARE_WA_LAST_24HR: 'cwthAgedCare.WA.last24hr',
CWTH_AGED_CARE_TAS_TOTAL: 'cwthAgedCare.TAS.total',
CWTH_AGED_CARE_TAS_LAST_24HR: 'cwthAgedCare.TAS.last24hr',
CWTH_AGED_CARE_SA_TOTAL: 'cwthAgedCare.SA.total',
CWTH_AGED_CARE_SA_LAST_24HR: 'cwthAgedCare.SA.last24hr',
CWTH_AGED_CARE_ACT_TOTAL: 'cwthAgedCare.ACT.total',
CWTH_AGED_CARE_ACT_LAST_24HR: 'cwthAgedCare.ACT.last24hr',
CWTH_AGED_CARE_NT_TOTAL: 'cwthAgedCare.NT.total',
CWTH_AGED_CARE_NT_LAST_24HR: 'cwthAgedCare.NT.last24hr',
CWTH_AGED_CARE_NSW_TOTAL: 'cwthAgedCare.NSW.total',
CWTH_AGED_CARE_NSW_LAST_24HR: 'cwthAgedCare.NSW.last24hr',
CWTH_PRIMARY_CARE_VIC_TOTAL: 'cwthPrimaryCare.VIC.total',
CWTH_PRIMARY_CARE_VIC_LAST_24HR: 'cwthPrimaryCare.VIC.last24hr',
CWTH_PRIMARY_CARE_QLD_TOTAL: 'cwthPrimaryCare.QLD.total',
CWTH_PRIMARY_CARE_QLD_LAST_24HR: 'cwthPrimaryCare.QLD.last24hr',
CWTH_PRIMARY_CARE_WA_TOTAL: 'cwthPrimaryCare.WA.total',
CWTH_PRIMARY_CARE_WA_LAST_24HR: 'cwthPrimaryCare.WA.last24hr',
CWTH_PRIMARY_CARE_TAS_TOTAL: 'cwthPrimaryCare.TAS.total',
CWTH_PRIMARY_CARE_TAS_LAST_24HR: 'cwthPrimaryCare.TAS.last24hr',
CWTH_PRIMARY_CARE_SA_TOTAL: 'cwthPrimaryCare.SA.total',
CWTH_PRIMARY_CARE_SA_LAST_24HR: 'cwthPrimaryCare.SA.last24hr',
CWTH_PRIMARY_CARE_ACT_TOTAL: 'cwthPrimaryCare.ACT.total',
CWTH_PRIMARY_CARE_ACT_LAST_24HR: 'cwthPrimaryCare.ACT.last24hr',
CWTH_PRIMARY_CARE_NT_TOTAL: 'cwthPrimaryCare.NT.total',
CWTH_PRIMARY_CARE_NT_LAST_24HR: 'cwthPrimaryCare.NT.last24hr',
CWTH_PRIMARY_CARE_NSW_TOTAL: 'cwthPrimaryCare.NSW.total',
CWTH_PRIMARY_CARE_NSW_LAST_24HR: 'cwthPrimaryCare.NSW.last24hr',
CWTH_AGED_CARE_DOSES_FIRST_DOSE: 'cwthAgedCareBreakdown.cwthAgedCareDoses.firstDose',
CWTH_AGED_CARE_DOSES_SECOND_DOSE: 'cwthAgedCareBreakdown.cwthAgedCareDoses.secondDose',
CWTH_AGED_CARE_FACILITIES_FIRST_DOSE: 'cwthAgedCareBreakdown.cwthAgedCareFacilities.firstDose',
CWTH_AGED_CARE_FACILITIES_SECOND_DOSE: 'cwthAgedCareBreakdown.cwthAgedCareFacilities.secondDose',
APPROX_VIC_SECOND_DOSE_TOTAL: 'secondDoseData.VIC',
APPROX_QLD_SECOND_DOSE_TOTAL: 'secondDoseData.QLD',
APPROX_WA_SECOND_DOSE_TOTAL: 'secondDoseData.WA',
APPROX_TAS_SECOND_DOSE_TOTAL: 'secondDoseData.TAS',
APPROX_SA_SECOND_DOSE_TOTAL: 'secondDoseData.SA',
APPROX_ACT_SECOND_DOSE_TOTAL: 'secondDoseData.ACT',
APPROX_NT_SECOND_DOSE_TOTAL: 'secondDoseData.NT',
APPROX_NSW_SECOND_DOSE_TOTAL: 'secondDoseData.NSW',
FIRST_NATIONS_VIC_FIRST_DOSE_TOTAL: 'firstNations.VIC.firstDoseCount',
FIRST_NATIONS_VIC_SECOND_DOSE_TOTAL: 'firstNations.VIC.secondDoseCount',
FIRST_NATIONS_QLD_FIRST_DOSE_TOTAL: 'firstNations.QLD.firstDoseCount',
FIRST_NATIONS_QLD_SECOND_DOSE_TOTAL: 'firstNations.QLD.secondDoseCount',
FIRST_NATIONS_WA_FIRST_DOSE_TOTAL: 'firstNations.WA.firstDoseCount',
FIRST_NATIONS_WA_SECOND_DOSE_TOTAL: 'firstNations.WA.secondDoseCount',
FIRST_NATIONS_TAS_FIRST_DOSE_TOTAL: 'firstNations.TAS.firstDoseCount',
FIRST_NATIONS_TAS_SECOND_DOSE_TOTAL: 'firstNations.TAS.secondDoseCount',
FIRST_NATIONS_SA_FIRST_DOSE_TOTAL: 'firstNations.SA.firstDoseCount',
FIRST_NATIONS_SA_SECOND_DOSE_TOTAL: 'firstNations.SA.secondDoseCount',
FIRST_NATIONS_ACT_FIRST_DOSE_TOTAL: 'firstNations.ACT.firstDoseCount',
FIRST_NATIONS_ACT_SECOND_DOSE_TOTAL: 'firstNations.ACT.secondDoseCount',
FIRST_NATIONS_NT_FIRST_DOSE_TOTAL: 'firstNations.NT.firstDoseCount',
FIRST_NATIONS_NT_SECOND_DOSE_TOTAL: 'firstNations.NT.secondDoseCount',
FIRST_NATIONS_NSW_FIRST_DOSE_TOTAL: 'firstNations.NSW.firstDoseCount',
FIRST_NATIONS_NSW_SECOND_DOSE_TOTAL: 'firstNations.NSW.secondDoseCount',
FIRST_NATIONS_AUS_FIRST_DOSE_TOTAL: 'firstNations.AUS.firstDoseCount',
FIRST_NATIONS_AUS_SECOND_DOSE_TOTAL: 'firstNations.AUS.secondDoseCount',
FIRST_NATIONS_VIC_FIRST_PCT_TOTAL: 'firstNations.VIC.firstDosePct',
FIRST_NATIONS_VIC_SECOND_PCT_TOTAL: 'firstNations.VIC.secondDosePct',
FIRST_NATIONS_QLD_FIRST_PCT_TOTAL: 'firstNations.QLD.firstDosePct',
FIRST_NATIONS_QLD_SECOND_PCT_TOTAL: 'firstNations.QLD.secondDosePct',
FIRST_NATIONS_WA_FIRST_PCT_TOTAL: 'firstNations.WA.firstDosePct',
FIRST_NATIONS_WA_SECOND_PCT_TOTAL: 'firstNations.WA.secondDosePct',
FIRST_NATIONS_TAS_FIRST_PCT_TOTAL: 'firstNations.TAS.firstDosePct',
FIRST_NATIONS_TAS_SECOND_PCT_TOTAL: 'firstNations.TAS.secondDosePct',
FIRST_NATIONS_SA_FIRST_PCT_TOTAL: 'firstNations.SA.firstDosePct',
FIRST_NATIONS_SA_SECOND_PCT_TOTAL: 'firstNations.SA.secondDosePct',
FIRST_NATIONS_ACT_FIRST_PCT_TOTAL: 'firstNations.ACT.firstDosePct',
FIRST_NATIONS_ACT_SECOND_PCT_TOTAL: 'firstNations.ACT.secondDosePct',
FIRST_NATIONS_NT_FIRST_PCT_TOTAL: 'firstNations.NT.firstDosePct',
FIRST_NATIONS_NT_SECOND_PCT_TOTAL: 'firstNations.NT.secondDosePct',
FIRST_NATIONS_NSW_FIRST_PCT_TOTAL: 'firstNations.NSW.firstDosePct',
FIRST_NATIONS_NSW_SECOND_PCT_TOTAL: 'firstNations.NSW.secondDosePct',
FIRST_NATIONS_AUS_FIRST_PCT_TOTAL: 'firstNations.AUS.firstDosePct',
FIRST_NATIONS_AUS_SECOND_PCT_TOTAL: 'firstNations.AUS.secondDosePct',
}
const DISTRIBUTION_COLUMN_TO_PATH_MAPPING = {
DATE_AS_AT: 'dataAsAt',
STATE_CLINICS_VIC_DISTRIBUTED: "distribution.VIC.distributed",
STATE_CLINICS_QLD_DISTRIBUTED: "distribution.QLD.distributed",
STATE_CLINICS_WA_DISTRIBUTED: "distribution.WA.distributed",
STATE_CLINICS_TAS_DISTRIBUTED: "distribution.TAS.distributed",
STATE_CLINICS_SA_DISTRIBUTED: "distribution.SA.distributed",
STATE_CLINICS_ACT_DISTRIBUTED: "distribution.ACT.distributed",
STATE_CLINICS_NT_DISTRIBUTED: "distribution.NT.distributed",
STATE_CLINICS_NSW_DISTRIBUTED: "distribution.NSW.distributed",
CWTH_AGED_CARE_DISTRIBUTED: "distribution.cwthAgedCare.distributed",
CWTH_PRIMARY_CARE_DISTRIBUTED: "distribution.cwthPrimaryCare.distributed",
STATE_CLINICS_VIC_AVAILABLE: "distribution.VIC.available",
STATE_CLINICS_QLD_AVAILABLE: "distribution.QLD.available",
STATE_CLINICS_WA_AVAILABLE: "distribution.WA.available",
STATE_CLINICS_TAS_AVAILABLE: "distribution.TAS.available",
STATE_CLINICS_SA_AVAILABLE: "distribution.SA.available",
STATE_CLINICS_ACT_AVAILABLE: "distribution.ACT.available",
STATE_CLINICS_NT_AVAILABLE: "distribution.NT.available",
STATE_CLINICS_NSW_AVAILABLE: "distribution.NSW.available",
CWTH_AGED_CARE_AVAILABLE: "distribution.cwthAgedCare.available",
CWTH_PRIMARY_CARE_AVAILABLE: "distribution.cwthPrimaryCare.available",
STATE_CLINICS_VIC_ADMINISTERED: "distribution.VIC.administered",
STATE_CLINICS_QLD_ADMINISTERED: "distribution.QLD.administered",
STATE_CLINICS_WA_ADMINISTERED: "distribution.WA.administered",
STATE_CLINICS_TAS_ADMINISTERED: "distribution.TAS.administered",
STATE_CLINICS_SA_ADMINISTERED: "distribution.SA.administered",
STATE_CLINICS_ACT_ADMINISTERED: "distribution.ACT.administered",
STATE_CLINICS_NT_ADMINISTERED: "distribution.NT.administered",
STATE_CLINICS_NSW_ADMINISTERED: "distribution.NSW.administered",
CWTH_AGED_CARE_ADMINISTERED: "distribution.cwthAgedCare.administered",
CWTH_PRIMARY_CARE_ADMINISTERED: "distribution.cwthPrimaryCare.administered",
STATE_CLINICS_VIC_AVAILABLE_MINUS_ADMINISTERED: "distribution.VIC.availableMinusAdministered",
STATE_CLINICS_QLD_AVAILABLE_MINUS_ADMINISTERED: "distribution.QLD.availableMinusAdministered",
STATE_CLINICS_WA_AVAILABLE_MINUS_ADMINISTERED: "distribution.WA.availableMinusAdministered",
STATE_CLINICS_TAS_AVAILABLE_MINUS_ADMINISTERED: "distribution.TAS.availableMinusAdministered",
STATE_CLINICS_SA_AVAILABLE_MINUS_ADMINISTERED: "distribution.SA.availableMinusAdministered",
STATE_CLINICS_ACT_AVAILABLE_MINUS_ADMINISTERED: "distribution.ACT.availableMinusAdministered",
STATE_CLINICS_NT_AVAILABLE_MINUS_ADMINISTERED: "distribution.NT.availableMinusAdministered",
STATE_CLINICS_NSW_AVAILABLE_MINUS_ADMINISTERED: "distribution.NSW.availableMinusAdministered",
CWTH_AGED_CARE_AVAILABLE_MINUS_ADMINISTERED: "distribution.cwthAgedCare.availableMinusAdministered",
CWTH_PRIMARY_CARE_AVAILABLE_MINUS_ADMINISTERED: "distribution.cwthPrimaryCare.availableMinusAdministered",
STATE_CLINICS_VIC_ESTIMATED_DOSE_UTILISATION: "distribution.VIC.estimatedUtilisationPct",
STATE_CLINICS_QLD_ESTIMATED_DOSE_UTILISATION: "distribution.QLD.estimatedUtilisationPct",
STATE_CLINICS_WA_ESTIMATED_DOSE_UTILISATION: "distribution.WA.estimatedUtilisationPct",
STATE_CLINICS_TAS_ESTIMATED_DOSE_UTILISATION: "distribution.TAS.estimatedUtilisationPct",
STATE_CLINICS_SA_ESTIMATED_DOSE_UTILISATION: "distribution.SA.estimatedUtilisationPct",
STATE_CLINICS_ACT_ESTIMATED_DOSE_UTILISATION: "distribution.ACT.estimatedUtilisationPct",
STATE_CLINICS_NT_ESTIMATED_DOSE_UTILISATION: "distribution.NT.estimatedUtilisationPct",
STATE_CLINICS_NSW_ESTIMATED_DOSE_UTILISATION: "distribution.NSW.estimatedUtilisationPct",
CWTH_AGED_CARE_ESTIMATED_DOSE_UTILISATION: "distribution.cwthAgedCare.estimatedUtilisationPct",
CWTH_PRIMARY_CARE_ESTIMATED_DOSE_UTILISATION: "distribution.cwthPrimaryCare.estimatedUtilisationPct",
}
const AIR_COLUMN_TO_PATH_MAPPING = {
DATE_AS_AT: 'dataAsAt',
AIR_95_PLUS_FIRST_DOSE_COUNT: 'doseBreakdown.national[0].firstDoseCount',AIR_95_PLUS_FIRST_DOSE_PCT: 'doseBreakdown.national[0].firstDosePct',AIR_95_PLUS_SECOND_DOSE_COUNT: 'doseBreakdown.national[0].secondDoseCount',AIR_95_PLUS_SECOND_DOSE_PCT: 'doseBreakdown.national[0].secondDosePct',AIR_95_PLUS_FEMALE_PCT: 'doseBreakdown.national[0].femalePct',AIR_95_PLUS_MALE_PCT: 'doseBreakdown.national[0].malePct',
AIR_90_94_FIRST_DOSE_COUNT: 'doseBreakdown.national[1].firstDoseCount',AIR_90_94_FIRST_DOSE_PCT: 'doseBreakdown.national[1].firstDosePct',AIR_90_94_SECOND_DOSE_COUNT: 'doseBreakdown.national[1].secondDoseCount',AIR_90_94_SECOND_DOSE_PCT: 'doseBreakdown.national[1].secondDosePct',AIR_90_94_FEMALE_PCT: 'doseBreakdown.national[1].femalePct',AIR_90_94_MALE_PCT: 'doseBreakdown.national[1].malePct',
AIR_85_89_FIRST_DOSE_COUNT: 'doseBreakdown.national[2].firstDoseCount',AIR_85_89_FIRST_DOSE_PCT: 'doseBreakdown.national[2].firstDosePct',AIR_85_89_SECOND_DOSE_COUNT: 'doseBreakdown.national[2].secondDoseCount',AIR_85_89_SECOND_DOSE_PCT: 'doseBreakdown.national[2].secondDosePct',AIR_85_89_FEMALE_PCT: 'doseBreakdown.national[2].femalePct',AIR_85_89_MALE_PCT: 'doseBreakdown.national[2].malePct',
AIR_80_84_FIRST_DOSE_COUNT: 'doseBreakdown.national[3].firstDoseCount',AIR_80_84_FIRST_DOSE_PCT: 'doseBreakdown.national[3].firstDosePct',AIR_80_84_SECOND_DOSE_COUNT: 'doseBreakdown.national[3].secondDoseCount',AIR_80_84_SECOND_DOSE_PCT: 'doseBreakdown.national[3].secondDosePct',AIR_80_84_FEMALE_PCT: 'doseBreakdown.national[3].femalePct',AIR_80_84_MALE_PCT: 'doseBreakdown.national[3].malePct',
AIR_75_79_FIRST_DOSE_COUNT: 'doseBreakdown.national[4].firstDoseCount',AIR_75_79_FIRST_DOSE_PCT: 'doseBreakdown.national[4].firstDosePct',AIR_75_79_SECOND_DOSE_COUNT: 'doseBreakdown.national[4].secondDoseCount',AIR_75_79_SECOND_DOSE_PCT: 'doseBreakdown.national[4].secondDosePct',AIR_75_79_FEMALE_PCT: 'doseBreakdown.national[4].femalePct',AIR_75_79_MALE_PCT: 'doseBreakdown.national[4].malePct',
AIR_70_74_FIRST_DOSE_COUNT: 'doseBreakdown.national[5].firstDoseCount',AIR_70_74_FIRST_DOSE_PCT: 'doseBreakdown.national[5].firstDosePct',AIR_70_74_SECOND_DOSE_COUNT: 'doseBreakdown.national[5].secondDoseCount',AIR_70_74_SECOND_DOSE_PCT: 'doseBreakdown.national[5].secondDosePct',AIR_70_74_FEMALE_PCT: 'doseBreakdown.national[5].femalePct',AIR_70_74_MALE_PCT: 'doseBreakdown.national[5].malePct',
AIR_65_69_FIRST_DOSE_COUNT: 'doseBreakdown.national[6].firstDoseCount',AIR_65_69_FIRST_DOSE_PCT: 'doseBreakdown.national[6].firstDosePct',AIR_65_69_SECOND_DOSE_COUNT: 'doseBreakdown.national[6].secondDoseCount',AIR_65_69_SECOND_DOSE_PCT: 'doseBreakdown.national[6].secondDosePct',AIR_65_69_FEMALE_PCT: 'doseBreakdown.national[6].femalePct',AIR_65_69_MALE_PCT: 'doseBreakdown.national[6].malePct',
AIR_60_64_FIRST_DOSE_COUNT: 'doseBreakdown.national[7].firstDoseCount',AIR_60_64_FIRST_DOSE_PCT: 'doseBreakdown.national[7].firstDosePct',AIR_60_64_SECOND_DOSE_COUNT: 'doseBreakdown.national[7].secondDoseCount',AIR_60_64_SECOND_DOSE_PCT: 'doseBreakdown.national[7].secondDosePct',AIR_60_64_FEMALE_PCT: 'doseBreakdown.national[7].femalePct',AIR_60_64_MALE_PCT: 'doseBreakdown.national[7].malePct',
AIR_55_59_FIRST_DOSE_COUNT: 'doseBreakdown.national[8].firstDoseCount',AIR_55_59_FIRST_DOSE_PCT: 'doseBreakdown.national[8].firstDosePct',AIR_55_59_SECOND_DOSE_COUNT: 'doseBreakdown.national[8].secondDoseCount',AIR_55_59_SECOND_DOSE_PCT: 'doseBreakdown.national[8].secondDosePct',AIR_55_59_FEMALE_PCT: 'doseBreakdown.national[8].femalePct',AIR_55_59_MALE_PCT: 'doseBreakdown.national[8].malePct',
AIR_50_54_FIRST_DOSE_COUNT: 'doseBreakdown.national[9].firstDoseCount',AIR_50_54_FIRST_DOSE_PCT: 'doseBreakdown.national[9].firstDosePct',AIR_50_54_SECOND_DOSE_COUNT: 'doseBreakdown.national[9].secondDoseCount',AIR_50_54_SECOND_DOSE_PCT: 'doseBreakdown.national[9].secondDosePct',AIR_50_54_FEMALE_PCT: 'doseBreakdown.national[9].femalePct',AIR_50_54_MALE_PCT: 'doseBreakdown.national[9].malePct',
AIR_45_49_FIRST_DOSE_COUNT: 'doseBreakdown.national[10].firstDoseCount',AIR_45_49_FIRST_DOSE_PCT: 'doseBreakdown.national[10].firstDosePct',AIR_45_49_SECOND_DOSE_COUNT: 'doseBreakdown.national[10].secondDoseCount',AIR_45_49_SECOND_DOSE_PCT: 'doseBreakdown.national[10].secondDosePct',AIR_45_49_FEMALE_PCT: 'doseBreakdown.national[10].femalePct',AIR_45_49_MALE_PCT: 'doseBreakdown.national[10].malePct',
AIR_40_44_FIRST_DOSE_COUNT: 'doseBreakdown.national[11].firstDoseCount',AIR_40_44_FIRST_DOSE_PCT: 'doseBreakdown.national[11].firstDosePct',AIR_40_44_SECOND_DOSE_COUNT: 'doseBreakdown.national[11].secondDoseCount',AIR_40_44_SECOND_DOSE_PCT: 'doseBreakdown.national[11].secondDosePct',AIR_40_44_FEMALE_PCT: 'doseBreakdown.national[11].femalePct',AIR_40_44_MALE_PCT: 'doseBreakdown.national[11].malePct',
AIR_35_39_FIRST_DOSE_COUNT: 'doseBreakdown.national[12].firstDoseCount',AIR_35_39_FIRST_DOSE_PCT: 'doseBreakdown.national[12].firstDosePct',AIR_35_39_SECOND_DOSE_COUNT: 'doseBreakdown.national[12].secondDoseCount',AIR_35_39_SECOND_DOSE_PCT: 'doseBreakdown.national[12].secondDosePct',AIR_35_39_FEMALE_PCT: 'doseBreakdown.national[12].femalePct',AIR_35_39_MALE_PCT: 'doseBreakdown.national[12].malePct',
AIR_30_34_FIRST_DOSE_COUNT: 'doseBreakdown.national[13].firstDoseCount',AIR_30_34_FIRST_DOSE_PCT: 'doseBreakdown.national[13].firstDosePct',AIR_30_34_SECOND_DOSE_COUNT: 'doseBreakdown.national[13].secondDoseCount',AIR_30_34_SECOND_DOSE_PCT: 'doseBreakdown.national[13].secondDosePct',AIR_30_34_FEMALE_PCT: 'doseBreakdown.national[13].femalePct',AIR_30_34_MALE_PCT: 'doseBreakdown.national[13].malePct',
AIR_25_29_FIRST_DOSE_COUNT: 'doseBreakdown.national[14].firstDoseCount',AIR_25_29_FIRST_DOSE_PCT: 'doseBreakdown.national[14].firstDosePct',AIR_25_29_SECOND_DOSE_COUNT: 'doseBreakdown.national[14].secondDoseCount',AIR_25_29_SECOND_DOSE_PCT: 'doseBreakdown.national[14].secondDosePct',AIR_25_29_FEMALE_PCT: 'doseBreakdown.national[14].femalePct',AIR_25_29_MALE_PCT: 'doseBreakdown.national[14].malePct',
AIR_20_24_FIRST_DOSE_COUNT: 'doseBreakdown.national[15].firstDoseCount',AIR_20_24_FIRST_DOSE_PCT: 'doseBreakdown.national[15].firstDosePct',AIR_20_24_SECOND_DOSE_COUNT: 'doseBreakdown.national[15].secondDoseCount',AIR_20_24_SECOND_DOSE_PCT: 'doseBreakdown.national[15].secondDosePct',AIR_20_24_FEMALE_PCT: 'doseBreakdown.national[15].femalePct',AIR_20_24_MALE_PCT: 'doseBreakdown.national[15].malePct',
AIR_16_19_FIRST_DOSE_COUNT: 'doseBreakdown.national[16].firstDoseCount',AIR_16_19_FIRST_DOSE_PCT: 'doseBreakdown.national[16].firstDosePct',AIR_16_19_SECOND_DOSE_COUNT: 'doseBreakdown.national[16].secondDoseCount',AIR_16_19_SECOND_DOSE_PCT: 'doseBreakdown.national[16].secondDosePct',AIR_16_19_FEMALE_PCT: 'doseBreakdown.national[16].femalePct',AIR_16_19_MALE_PCT: 'doseBreakdown.national[16].malePct',
AIR_NSW_16_PLUS_FIRST_DOSE_COUNT: 'doseBreakdown.NSW[0].firstDoseCount',AIR_NSW_16_PLUS_FIRST_DOSE_PCT: 'doseBreakdown.NSW[0].firstDosePct',AIR_NSW_16_PLUS_SECOND_DOSE_COUNT: 'doseBreakdown.NSW[0].secondDoseCount',AIR_NSW_16_PLUS_SECOND_DOSE_PCT: 'doseBreakdown.NSW[0].secondDosePct',AIR_NSW_16_PLUS_POPULATION: 'doseBreakdown.NSW[0].cohortPopulation',
AIR_VIC_16_PLUS_FIRST_DOSE_COUNT: 'doseBreakdown.VIC[0].firstDoseCount',AIR_VIC_16_PLUS_FIRST_DOSE_PCT: 'doseBreakdown.VIC[0].firstDosePct',AIR_VIC_16_PLUS_SECOND_DOSE_COUNT: 'doseBreakdown.VIC[0].secondDoseCount',AIR_VIC_16_PLUS_SECOND_DOSE_PCT: 'doseBreakdown.VIC[0].secondDosePct',AIR_VIC_16_PLUS_POPULATION: 'doseBreakdown.VIC[0].cohortPopulation',
AIR_QLD_16_PLUS_FIRST_DOSE_COUNT: 'doseBreakdown.QLD[0].firstDoseCount',AIR_QLD_16_PLUS_FIRST_DOSE_PCT: 'doseBreakdown.QLD[0].firstDosePct',AIR_QLD_16_PLUS_SECOND_DOSE_COUNT: 'doseBreakdown.QLD[0].secondDoseCount',AIR_QLD_16_PLUS_SECOND_DOSE_PCT: 'doseBreakdown.QLD[0].secondDosePct',AIR_QLD_16_PLUS_POPULATION: 'doseBreakdown.QLD[0].cohortPopulation',
AIR_WA_16_PLUS_FIRST_DOSE_COUNT: 'doseBreakdown.WA[0].firstDoseCount',AIR_WA_16_PLUS_FIRST_DOSE_PCT: 'doseBreakdown.WA[0].firstDosePct',AIR_WA_16_PLUS_SECOND_DOSE_COUNT: 'doseBreakdown.WA[0].secondDoseCount',AIR_WA_16_PLUS_SECOND_DOSE_PCT: 'doseBreakdown.WA[0].secondDosePct',AIR_WA_16_PLUS_POPULATION: 'doseBreakdown.WA[0].cohortPopulation',
AIR_TAS_16_PLUS_FIRST_DOSE_COUNT: 'doseBreakdown.TAS[0].firstDoseCount',AIR_TAS_16_PLUS_FIRST_DOSE_PCT: 'doseBreakdown.TAS[0].firstDosePct',AIR_TAS_16_PLUS_SECOND_DOSE_COUNT: 'doseBreakdown.TAS[0].secondDoseCount',AIR_TAS_16_PLUS_SECOND_DOSE_PCT: 'doseBreakdown.TAS[0].secondDosePct',AIR_TAS_16_PLUS_POPULATION: 'doseBreakdown.TAS[0].cohortPopulation',
AIR_SA_16_PLUS_FIRST_DOSE_COUNT: 'doseBreakdown.SA[0].firstDoseCount',AIR_SA_16_PLUS_FIRST_DOSE_PCT: 'doseBreakdown.SA[0].firstDosePct',AIR_SA_16_PLUS_SECOND_DOSE_COUNT: 'doseBreakdown.SA[0].secondDoseCount',AIR_SA_16_PLUS_SECOND_DOSE_PCT: 'doseBreakdown.SA[0].secondDosePct',AIR_SA_16_PLUS_POPULATION: 'doseBreakdown.SA[0].cohortPopulation',
AIR_ACT_16_PLUS_FIRST_DOSE_COUNT: 'doseBreakdown.ACT[0].firstDoseCount',AIR_ACT_16_PLUS_FIRST_DOSE_PCT: 'doseBreakdown.ACT[0].firstDosePct',AIR_ACT_16_PLUS_SECOND_DOSE_COUNT: 'doseBreakdown.ACT[0].secondDoseCount',AIR_ACT_16_PLUS_SECOND_DOSE_PCT: 'doseBreakdown.ACT[0].secondDosePct',AIR_ACT_16_PLUS_POPULATION: 'doseBreakdown.ACT[0].cohortPopulation',
AIR_NT_16_PLUS_FIRST_DOSE_COUNT: 'doseBreakdown.NT[0].firstDoseCount',AIR_NT_16_PLUS_FIRST_DOSE_PCT: 'doseBreakdown.NT[0].firstDosePct',AIR_NT_16_PLUS_SECOND_DOSE_COUNT: 'doseBreakdown.NT[0].secondDoseCount',AIR_NT_16_PLUS_SECOND_DOSE_PCT: 'doseBreakdown.NT[0].secondDosePct',AIR_NT_16_PLUS_POPULATION: 'doseBreakdown.NT[0].cohortPopulation',
AIR_NSW_50_PLUS_FIRST_DOSE_COUNT: 'doseBreakdown.NSW[1].firstDoseCount',AIR_NSW_50_PLUS_FIRST_DOSE_PCT: 'doseBreakdown.NSW[1].firstDosePct',AIR_NSW_50_PLUS_SECOND_DOSE_COUNT: 'doseBreakdown.NSW[1].secondDoseCount',AIR_NSW_50_PLUS_SECOND_DOSE_PCT: 'doseBreakdown.NSW[1].secondDosePct',AIR_NSW_50_PLUS_POPULATION: 'doseBreakdown.NSW[1].cohortPopulation',
AIR_VIC_50_PLUS_FIRST_DOSE_COUNT: 'doseBreakdown.VIC[1].firstDoseCount',AIR_VIC_50_PLUS_FIRST_DOSE_PCT: 'doseBreakdown.VIC[1].firstDosePct',AIR_VIC_50_PLUS_SECOND_DOSE_COUNT: 'doseBreakdown.VIC[1].secondDoseCount',AIR_VIC_50_PLUS_SECOND_DOSE_PCT: 'doseBreakdown.VIC[1].secondDosePct',AIR_VIC_50_PLUS_POPULATION: 'doseBreakdown.VIC[1].cohortPopulation',
AIR_QLD_50_PLUS_FIRST_DOSE_COUNT: 'doseBreakdown.QLD[1].firstDoseCount',AIR_QLD_50_PLUS_FIRST_DOSE_PCT: 'doseBreakdown.QLD[1].firstDosePct',AIR_QLD_50_PLUS_SECOND_DOSE_COUNT: 'doseBreakdown.QLD[1].secondDoseCount',AIR_QLD_50_PLUS_SECOND_DOSE_PCT: 'doseBreakdown.QLD[1].secondDosePct',AIR_QLD_50_PLUS_POPULATION: 'doseBreakdown.QLD[1].cohortPopulation',
AIR_WA_50_PLUS_FIRST_DOSE_COUNT: 'doseBreakdown.WA[1].firstDoseCount',AIR_WA_50_PLUS_FIRST_DOSE_PCT: 'doseBreakdown.WA[1].firstDosePct',AIR_WA_50_PLUS_SECOND_DOSE_COUNT: 'doseBreakdown.WA[1].secondDoseCount',AIR_WA_50_PLUS_SECOND_DOSE_PCT: 'doseBreakdown.WA[1].secondDosePct',AIR_WA_50_PLUS_POPULATION: 'doseBreakdown.WA[1].cohortPopulation',
AIR_TAS_50_PLUS_FIRST_DOSE_COUNT: 'doseBreakdown.TAS[1].firstDoseCount',AIR_TAS_50_PLUS_FIRST_DOSE_PCT: 'doseBreakdown.TAS[1].firstDosePct',AIR_TAS_50_PLUS_SECOND_DOSE_COUNT: 'doseBreakdown.TAS[1].secondDoseCount',AIR_TAS_50_PLUS_SECOND_DOSE_PCT: 'doseBreakdown.TAS[1].secondDosePct',AIR_TAS_50_PLUS_POPULATION: 'doseBreakdown.TAS[1].cohortPopulation',
AIR_SA_50_PLUS_FIRST_DOSE_COUNT: 'doseBreakdown.SA[1].firstDoseCount',AIR_SA_50_PLUS_FIRST_DOSE_PCT: 'doseBreakdown.SA[1].firstDosePct',AIR_SA_50_PLUS_SECOND_DOSE_COUNT: 'doseBreakdown.SA[1].secondDoseCount',AIR_SA_50_PLUS_SECOND_DOSE_PCT: 'doseBreakdown.SA[1].secondDosePct',AIR_SA_50_PLUS_POPULATION: 'doseBreakdown.SA[1].cohortPopulation',
AIR_ACT_50_PLUS_FIRST_DOSE_COUNT: 'doseBreakdown.ACT[1].firstDoseCount',AIR_ACT_50_PLUS_FIRST_DOSE_PCT: 'doseBreakdown.ACT[1].firstDosePct',AIR_ACT_50_PLUS_SECOND_DOSE_COUNT: 'doseBreakdown.ACT[1].secondDoseCount',AIR_ACT_50_PLUS_SECOND_DOSE_PCT: 'doseBreakdown.ACT[1].secondDosePct',AIR_ACT_50_PLUS_POPULATION: 'doseBreakdown.ACT[1].cohortPopulation',
AIR_NT_50_PLUS_FIRST_DOSE_COUNT: 'doseBreakdown.NT[1].firstDoseCount',AIR_NT_50_PLUS_FIRST_DOSE_PCT: 'doseBreakdown.NT[1].firstDosePct',AIR_NT_50_PLUS_SECOND_DOSE_COUNT: 'doseBreakdown.NT[1].secondDoseCount',AIR_NT_50_PLUS_SECOND_DOSE_PCT: 'doseBreakdown.NT[1].secondDosePct',AIR_NT_50_PLUS_POPULATION: 'doseBreakdown.NT[1].cohortPopulation',
AIR_NSW_70_PLUS_FIRST_DOSE_COUNT: 'doseBreakdown.NSW[2].firstDoseCount',AIR_NSW_70_PLUS_FIRST_DOSE_PCT: 'doseBreakdown.NSW[2].firstDosePct',AIR_NSW_70_PLUS_SECOND_DOSE_COUNT: 'doseBreakdown.NSW[2].secondDoseCount',AIR_NSW_70_PLUS_SECOND_DOSE_PCT: 'doseBreakdown.NSW[2].secondDosePct',AIR_NSW_70_PLUS_POPULATION: 'doseBreakdown.NSW[2].cohortPopulation',
AIR_VIC_70_PLUS_FIRST_DOSE_COUNT: 'doseBreakdown.VIC[2].firstDoseCount',AIR_VIC_70_PLUS_FIRST_DOSE_PCT: 'doseBreakdown.VIC[2].firstDosePct',AIR_VIC_70_PLUS_SECOND_DOSE_COUNT: 'doseBreakdown.VIC[2].secondDoseCount',AIR_VIC_70_PLUS_SECOND_DOSE_PCT: 'doseBreakdown.VIC[2].secondDosePct',AIR_VIC_70_PLUS_POPULATION: 'doseBreakdown.VIC[2].cohortPopulation',
AIR_QLD_70_PLUS_FIRST_DOSE_COUNT: 'doseBreakdown.QLD[2].firstDoseCount',AIR_QLD_70_PLUS_FIRST_DOSE_PCT: 'doseBreakdown.QLD[2].firstDosePct',AIR_QLD_70_PLUS_SECOND_DOSE_COUNT: 'doseBreakdown.QLD[2].secondDoseCount',AIR_QLD_70_PLUS_SECOND_DOSE_PCT: 'doseBreakdown.QLD[2].secondDosePct',AIR_QLD_70_PLUS_POPULATION: 'doseBreakdown.QLD[2].cohortPopulation',
AIR_WA_70_PLUS_FIRST_DOSE_COUNT: 'doseBreakdown.WA[2].firstDoseCount',AIR_WA_70_PLUS_FIRST_DOSE_PCT: 'doseBreakdown.WA[2].firstDosePct',AIR_WA_70_PLUS_SECOND_DOSE_COUNT: 'doseBreakdown.WA[2].secondDoseCount',AIR_WA_70_PLUS_SECOND_DOSE_PCT: 'doseBreakdown.WA[2].secondDosePct',AIR_WA_70_PLUS_POPULATION: 'doseBreakdown.WA[2].cohortPopulation',
AIR_TAS_70_PLUS_FIRST_DOSE_COUNT: 'doseBreakdown.TAS[2].firstDoseCount',AIR_TAS_70_PLUS_FIRST_DOSE_PCT: 'doseBreakdown.TAS[2].firstDosePct',AIR_TAS_70_PLUS_SECOND_DOSE_COUNT: 'doseBreakdown.TAS[2].secondDoseCount',AIR_TAS_70_PLUS_SECOND_DOSE_PCT: 'doseBreakdown.TAS[2].secondDosePct',AIR_TAS_70_PLUS_POPULATION: 'doseBreakdown.TAS[2].cohortPopulation',
AIR_SA_70_PLUS_FIRST_DOSE_COUNT: 'doseBreakdown.SA[2].firstDoseCount',AIR_SA_70_PLUS_FIRST_DOSE_PCT: 'doseBreakdown.SA[2].firstDosePct',AIR_SA_70_PLUS_SECOND_DOSE_COUNT: 'doseBreakdown.SA[2].secondDoseCount',AIR_SA_70_PLUS_SECOND_DOSE_PCT: 'doseBreakdown.SA[2].secondDosePct',AIR_SA_70_PLUS_POPULATION: 'doseBreakdown.SA[2].cohortPopulation',
AIR_ACT_70_PLUS_FIRST_DOSE_COUNT: 'doseBreakdown.ACT[2].firstDoseCount',AIR_ACT_70_PLUS_FIRST_DOSE_PCT: 'doseBreakdown.ACT[2].firstDosePct',AIR_ACT_70_PLUS_SECOND_DOSE_COUNT: 'doseBreakdown.ACT[2].secondDoseCount',AIR_ACT_70_PLUS_SECOND_DOSE_PCT: 'doseBreakdown.ACT[2].secondDosePct',AIR_ACT_70_PLUS_POPULATION: 'doseBreakdown.ACT[2].cohortPopulation',
AIR_NT_70_PLUS_FIRST_DOSE_COUNT: 'doseBreakdown.NT[2].firstDoseCount',AIR_NT_70_PLUS_FIRST_DOSE_PCT: 'doseBreakdown.NT[2].firstDosePct',AIR_NT_70_PLUS_SECOND_DOSE_COUNT: 'doseBreakdown.NT[2].secondDoseCount',AIR_NT_70_PLUS_SECOND_DOSE_PCT: 'doseBreakdown.NT[2].secondDosePct',AIR_NT_70_PLUS_POPULATION: 'doseBreakdown.NT[2].cohortPopulation',
AIR_AUS_16_PLUS_FIRST_DOSE_COUNT: 'doseBreakdown.AUS[0].firstDoseCount',AIR_AUS_16_PLUS_FIRST_DOSE_PCT: 'doseBreakdown.AUS[0].firstDosePct',AIR_AUS_16_PLUS_SECOND_DOSE_COUNT: 'doseBreakdown.AUS[0].secondDoseCount',AIR_AUS_16_PLUS_SECOND_DOSE_PCT: 'doseBreakdown.AUS[0].secondDosePct',AIR_AUS_16_PLUS_POPULATION: 'doseBreakdown.AUS[0].cohortPopulation',
AIR_AUS_50_PLUS_FIRST_DOSE_COUNT: 'doseBreakdown.AUS[1].firstDoseCount',AIR_AUS_50_PLUS_FIRST_DOSE_PCT: 'doseBreakdown.AUS[1].firstDosePct',AIR_AUS_50_PLUS_SECOND_DOSE_COUNT: 'doseBreakdown.AUS[1].secondDoseCount',AIR_AUS_50_PLUS_SECOND_DOSE_PCT: 'doseBreakdown.AUS[1].secondDosePct',AIR_AUS_50_PLUS_POPULATION: 'doseBreakdown.AUS[1].cohortPopulation',
AIR_AUS_70_PLUS_FIRST_DOSE_COUNT: 'doseBreakdown.AUS[2].firstDoseCount',AIR_AUS_70_PLUS_FIRST_DOSE_PCT: 'doseBreakdown.AUS[2].firstDosePct',AIR_AUS_70_PLUS_SECOND_DOSE_COUNT: 'doseBreakdown.AUS[2].secondDoseCount',AIR_AUS_70_PLUS_SECOND_DOSE_PCT: 'doseBreakdown.AUS[2].secondDosePct',AIR_AUS_70_PLUS_POPULATION: 'doseBreakdown.AUS[2].cohortPopulation',
AIR_12_15_FIRST_DOSE_COUNT: 'doseBreakdown.national[17].firstDoseCount',AIR_12_15_FIRST_DOSE_PCT: 'doseBreakdown.national[17].firstDosePct',AIR_12_15_SECOND_DOSE_COUNT: 'doseBreakdown.national[17].secondDoseCount',AIR_12_15_SECOND_DOSE_PCT: 'doseBreakdown.national[17].secondDosePct',AIR_12_15_FEMALE_PCT: 'doseBreakdown.national[17].femalePct',AIR_12_15_MALE_PCT: 'doseBreakdown.national[17].malePct',
AIR_NSW_12_15_FIRST_DOSE_COUNT: 'doseBreakdown.NSW[3].firstDoseCount',AIR_NSW_12_15_FIRST_DOSE_PCT: 'doseBreakdown.NSW[3].firstDosePct',AIR_NSW_12_15_SECOND_DOSE_COUNT: 'doseBreakdown.NSW[3].secondDoseCount',AIR_NSW_12_15_SECOND_DOSE_PCT: 'doseBreakdown.NSW[3].secondDosePct',AIR_NSW_12_15_POPULATION: 'doseBreakdown.NSW[3].cohortPopulation',
AIR_VIC_12_15_FIRST_DOSE_COUNT: 'doseBreakdown.VIC[3].firstDoseCount',AIR_VIC_12_15_FIRST_DOSE_PCT: 'doseBreakdown.VIC[3].firstDosePct',AIR_VIC_12_15_SECOND_DOSE_COUNT: 'doseBreakdown.VIC[3].secondDoseCount',AIR_VIC_12_15_SECOND_DOSE_PCT: 'doseBreakdown.VIC[3].secondDosePct',AIR_VIC_12_15_POPULATION: 'doseBreakdown.VIC[3].cohortPopulation',
AIR_QLD_12_15_FIRST_DOSE_COUNT: 'doseBreakdown.QLD[3].firstDoseCount',AIR_QLD_12_15_FIRST_DOSE_PCT: 'doseBreakdown.QLD[3].firstDosePct',AIR_QLD_12_15_SECOND_DOSE_COUNT: 'doseBreakdown.QLD[3].secondDoseCount',AIR_QLD_12_15_SECOND_DOSE_PCT: 'doseBreakdown.QLD[3].secondDosePct',AIR_QLD_12_15_POPULATION: 'doseBreakdown.QLD[3].cohortPopulation',
AIR_WA_12_15_FIRST_DOSE_COUNT: 'doseBreakdown.WA[3].firstDoseCount',AIR_WA_12_15_FIRST_DOSE_PCT: 'doseBreakdown.WA[3].firstDosePct',AIR_WA_12_15_SECOND_DOSE_COUNT: 'doseBreakdown.WA[3].secondDoseCount',AIR_WA_12_15_SECOND_DOSE_PCT: 'doseBreakdown.WA[3].secondDosePct',AIR_WA_12_15_POPULATION: 'doseBreakdown.WA[3].cohortPopulation',
AIR_TAS_12_15_FIRST_DOSE_COUNT: 'doseBreakdown.TAS[3].firstDoseCount',AIR_TAS_12_15_FIRST_DOSE_PCT: 'doseBreakdown.TAS[3].firstDosePct',AIR_TAS_12_15_SECOND_DOSE_COUNT: 'doseBreakdown.TAS[3].secondDoseCount',AIR_TAS_12_15_SECOND_DOSE_PCT: 'doseBreakdown.TAS[3].secondDosePct',AIR_TAS_12_15_POPULATION: 'doseBreakdown.TAS[3].cohortPopulation',
AIR_SA_12_15_FIRST_DOSE_COUNT: 'doseBreakdown.SA[3].firstDoseCount',AIR_SA_12_15_FIRST_DOSE_PCT: 'doseBreakdown.SA[3].firstDosePct',AIR_SA_12_15_SECOND_DOSE_COUNT: 'doseBreakdown.SA[3].secondDoseCount',AIR_SA_12_15_SECOND_DOSE_PCT: 'doseBreakdown.SA[3].secondDosePct',AIR_SA_12_15_POPULATION: 'doseBreakdown.SA[3].cohortPopulation',
AIR_ACT_12_15_FIRST_DOSE_COUNT: 'doseBreakdown.ACT[3].firstDoseCount',AIR_ACT_12_15_FIRST_DOSE_PCT: 'doseBreakdown.ACT[3].firstDosePct',AIR_ACT_12_15_SECOND_DOSE_COUNT: 'doseBreakdown.ACT[3].secondDoseCount',AIR_ACT_12_15_SECOND_DOSE_PCT: 'doseBreakdown.ACT[3].secondDosePct',AIR_ACT_12_15_POPULATION: 'doseBreakdown.ACT[3].cohortPopulation',
AIR_NT_12_15_FIRST_DOSE_COUNT: 'doseBreakdown.NT[3].firstDoseCount',AIR_NT_12_15_FIRST_DOSE_PCT: 'doseBreakdown.NT[3].firstDosePct',AIR_NT_12_15_SECOND_DOSE_COUNT: 'doseBreakdown.NT[3].secondDoseCount',AIR_NT_12_15_SECOND_DOSE_PCT: 'doseBreakdown.NT[3].secondDosePct',AIR_NT_12_15_POPULATION: 'doseBreakdown.NT[3].cohortPopulation',
AIR_AUS_16_PLUS_THIRD_DOSE_COUNT: 'thirdDoses.AUS.thirdDoseCount',
AIR_AUS_16_PLUS_THIRD_DOSE_PCT: 'thirdDoses.AUS.thirdDosePct16',
AIR_AUS_18_PLUS_THIRD_DOSE_COUNT: 'thirdDoses.AUS.thirdDoseCount',
AIR_AUS_18_PLUS_THIRD_DOSE_PCT: 'thirdDoses.AUS.thirdDosePct',
AIR_NSW_18_PLUS_THIRD_DOSE_COUNT: 'thirdDoses.NSW.total', AIR_NSW_18_PLUS_THIRD_DOSE_PCT: 'thirdDoses.NSW.thirdDosePct',
AIR_VIC_18_PLUS_THIRD_DOSE_COUNT: 'thirdDoses.VIC.total', AIR_VIC_18_PLUS_THIRD_DOSE_PCT: 'thirdDoses.VIC.thirdDosePct',
AIR_QLD_18_PLUS_THIRD_DOSE_COUNT: 'thirdDoses.QLD.total', AIR_QLD_18_PLUS_THIRD_DOSE_PCT: 'thirdDoses.QLD.thirdDosePct',
AIR_WA_18_PLUS_THIRD_DOSE_COUNT: 'thirdDoses.WA.total', AIR_WA_18_PLUS_THIRD_DOSE_PCT: 'thirdDoses.WA.thirdDosePct',
AIR_TAS_18_PLUS_THIRD_DOSE_COUNT: 'thirdDoses.TAS.total', AIR_TAS_18_PLUS_THIRD_DOSE_PCT: 'thirdDoses.TAS.thirdDosePct',
AIR_SA_18_PLUS_THIRD_DOSE_COUNT: 'thirdDoses.SA.total', AIR_SA_18_PLUS_THIRD_DOSE_PCT: 'thirdDoses.SA.thirdDosePct',
AIR_ACT_18_PLUS_THIRD_DOSE_COUNT: 'thirdDoses.ACT.total', AIR_ACT_18_PLUS_THIRD_DOSE_PCT: 'thirdDoses.ACT.thirdDosePct',
AIR_NT_18_PLUS_THIRD_DOSE_COUNT: 'thirdDoses.NT.total', AIR_NT_18_PLUS_THIRD_DOSE_PCT: 'thirdDoses.NT.thirdDosePct',
AIR_AUS_12_15_FIRST_DOSE_COUNT: 'doseBreakdown.national[17].firstDoseCount',AIR_AUS_12_15_FIRST_DOSE_PCT: 'doseBreakdown.national[17].firstDosePct',AIR_AUS_12_15_SECOND_DOSE_COUNT: 'doseBreakdown.national[17].secondDoseCount',AIR_AUS_12_15_SECOND_DOSE_PCT: 'doseBreakdown.national[17].secondDosePct',AIR_AUS_12_15_FEMALE_PCT: 'doseBreakdown.national[17].femalePct',AIR_AUS_12_15_MALE_PCT: 'doseBreakdown.national[17].malePct',
// AIR_AUS_5_11_FIRST_DOSE_COUNT: 'doseBreakdown.national[17].firstDoseCount',AIR_AUS_5_11_FIRST_DOSE_PCT: 'doseBreakdown.national[17].firstDosePct',AIR_AUS_5_11_SECOND_DOSE_COUNT: 'doseBreakdown.national[17].secondDoseCount',AIR_AUS_5_11_SECOND_DOSE_PCT: 'doseBreakdown.national[17].secondDosePct',AIR_AUS_5_11_FEMALE_PCT: 'doseBreakdown.national[17].femalePct',AIR_AUS_5_11_MALE_PCT: 'doseBreakdown.national[17].malePct',
AIR_AUS_5_11_FIRST_DOSE_COUNT: 'doseBreakdown.AUS[4].firstDoseCount',AIR_AUS_5_11_FIRST_DOSE_PCT: 'doseBreakdown.AUS[4].firstDosePct',AIR_AUS_5_11_SECOND_DOSE_COUNT: 'doseBreakdown.AUS[4].secondDoseCount',AIR_AUS_5_11_SECOND_DOSE_PCT: 'doseBreakdown.AUS[4].secondDosePct',AIR_AUS_5_11_POPULATION: 'doseBreakdown.AUS[4].cohortPopulation',
AIR_NSW_5_11_FIRST_DOSE_COUNT: 'doseBreakdown.NSW[4].firstDoseCount',AIR_NSW_5_11_FIRST_DOSE_PCT: 'doseBreakdown.NSW[4].firstDosePct',AIR_NSW_5_11_SECOND_DOSE_COUNT: 'doseBreakdown.NSW[4].secondDoseCount',AIR_NSW_5_11_SECOND_DOSE_PCT: 'doseBreakdown.NSW[4].secondDosePct',AIR_NSW_5_11_POPULATION: 'doseBreakdown.NSW[4].cohortPopulation',
AIR_VIC_5_11_FIRST_DOSE_COUNT: 'doseBreakdown.VIC[4].firstDoseCount',AIR_VIC_5_11_FIRST_DOSE_PCT: 'doseBreakdown.VIC[4].firstDosePct',AIR_VIC_5_11_SECOND_DOSE_COUNT: 'doseBreakdown.VIC[4].secondDoseCount',AIR_VIC_5_11_SECOND_DOSE_PCT: 'doseBreakdown.VIC[4].secondDosePct',AIR_VIC_5_11_POPULATION: 'doseBreakdown.VIC[4].cohortPopulation',
AIR_QLD_5_11_FIRST_DOSE_COUNT: 'doseBreakdown.QLD[4].firstDoseCount',AIR_QLD_5_11_FIRST_DOSE_PCT: 'doseBreakdown.QLD[4].firstDosePct',AIR_QLD_5_11_SECOND_DOSE_COUNT: 'doseBreakdown.QLD[4].secondDoseCount',AIR_QLD_5_11_SECOND_DOSE_PCT: 'doseBreakdown.QLD[4].secondDosePct',AIR_QLD_5_11_POPULATION: 'doseBreakdown.QLD[4].cohortPopulation',
AIR_WA_5_11_FIRST_DOSE_COUNT: 'doseBreakdown.WA[4].firstDoseCount',AIR_WA_5_11_FIRST_DOSE_PCT: 'doseBreakdown.WA[4].firstDosePct',AIR_WA_5_11_SECOND_DOSE_COUNT: 'doseBreakdown.WA[4].secondDoseCount',AIR_WA_5_11_SECOND_DOSE_PCT: 'doseBreakdown.WA[4].secondDosePct',AIR_WA_5_11_POPULATION: 'doseBreakdown.WA[4].cohortPopulation',
AIR_TAS_5_11_FIRST_DOSE_COUNT: 'doseBreakdown.TAS[4].firstDoseCount',AIR_TAS_5_11_FIRST_DOSE_PCT: 'doseBreakdown.TAS[4].firstDosePct',AIR_TAS_5_11_SECOND_DOSE_COUNT: 'doseBreakdown.TAS[4].secondDoseCount',AIR_TAS_5_11_SECOND_DOSE_PCT: 'doseBreakdown.TAS[4].secondDosePct',AIR_TAS_5_11_POPULATION: 'doseBreakdown.TAS[4].cohortPopulation',
AIR_SA_5_11_FIRST_DOSE_COUNT: 'doseBreakdown.SA[4].firstDoseCount',AIR_SA_5_11_FIRST_DOSE_PCT: 'doseBreakdown.SA[4].firstDosePct',AIR_SA_5_11_SECOND_DOSE_COUNT: 'doseBreakdown.SA[4].secondDoseCount',AIR_SA_5_11_SECOND_DOSE_PCT: 'doseBreakdown.SA[4].secondDosePct',AIR_SA_5_11_POPULATION: 'doseBreakdown.SA[4].cohortPopulation',
AIR_ACT_5_11_FIRST_DOSE_COUNT: 'doseBreakdown.ACT[4].firstDoseCount',AIR_ACT_5_11_FIRST_DOSE_PCT: 'doseBreakdown.ACT[4].firstDosePct',AIR_ACT_5_11_SECOND_DOSE_COUNT: 'doseBreakdown.ACT[4].secondDoseCount',AIR_ACT_5_11_SECOND_DOSE_PCT: 'doseBreakdown.ACT[4].secondDosePct',AIR_ACT_5_11_POPULATION: 'doseBreakdown.ACT[4].cohortPopulation',
AIR_NT_5_11_FIRST_DOSE_COUNT: 'doseBreakdown.NT[4].firstDoseCount',AIR_NT_5_11_FIRST_DOSE_PCT: 'doseBreakdown.NT[4].firstDosePct',AIR_NT_5_11_SECOND_DOSE_COUNT: 'doseBreakdown.NT[4].secondDoseCount',AIR_NT_5_11_SECOND_DOSE_PCT: 'doseBreakdown.NT[4].secondDosePct',AIR_NT_5_11_POPULATION: 'doseBreakdown.NT[4].cohortPopulation',
}
const generateCsv = async () => {
let publications = JSON.parse(fs.readFileSync(PUBLICATION_JSON_PATH)).filter(v => v.vaccineDataPath != null);
publications.sort((a, b) => a.vaccineDataPath.localeCompare(b.vaccineDataPath));
// handle when health publishes the data multiple times
publications = _.uniqBy(publications, 'vaccineDataPath');
const output = [];
const stream = format({ headers: true });
stream.pipe(fs.createWriteStream(DATA_CSV_PATH));
for(const publication of publications){
const localDataFile = publication.vaccineDataPath.replace("https://vaccinedata.covid19nearme.com.au/data/", PUBLICATION_JSON_DATA_PATH);
const data = JSON.parse(fs.readFileSync(localDataFile));
const secondDoselocalDataFile = publication.vaccineDataPath.replace("https://vaccinedata.covid19nearme.com.au/data/", SECOND_DOSE_PUBLICATION_JSON_DATA_PATH);
const secondDoseRawData = fs.existsSync(secondDoselocalDataFile) ? JSON.parse(fs.readFileSync(secondDoselocalDataFile)) : {};
const secondDoseData = {};
if(secondDoseRawData && secondDoseRawData.entries){
for(const row of secondDoseRawData.entries){
secondDoseData[row[0]] = Math.round(STATE_16_OVER_POPULATIONS[row[0]] * Number(row[1]));
}
}
const lookupData = {
...data.pdfData,
secondDoseData
}
const row = {};
for(const key in COLUMN_TO_PATH_MAPPING){
row[key] = _.get(lookupData, COLUMN_TO_PATH_MAPPING[key])
}
row.VALIDATED = publication.validation.length === 0 ? 'Y' : 'N';
row.URL = publication.pdfUrl;
stream.write(row);
output.push(row);
}
stream.end();
fs.writeFileSync(DATA_JSON_PATH, JSON.stringify(output, null, 4));
}
const generateDistributionCsv = async (csvPath, jsonPath, mapping, checkPath) => {
let publications = JSON.parse(fs.readFileSync(PUBLICATION_JSON_PATH)).filter(v => v.vaccineDataPath != null);
publications.sort((a, b) => a.vaccineDataPath.localeCompare(b.vaccineDataPath));
// handle when health publishes the data multiple times
publications = _.uniqBy(publications, 'vaccineDataPath');
const output = [];
const stream = format({ headers: [...Object.keys(mapping), 'VALIDATED', 'URL'] });
stream.pipe(fs.createWriteStream(csvPath));
for(const publication of publications){
const localDataFile = publication.vaccineDataPath.replace("https://vaccinedata.covid19nearme.com.au/data/", PUBLICATION_JSON_DATA_PATH);
const data = JSON.parse(fs.readFileSync(localDataFile));
const lookupData = {
...data.pdfData,
}
if(!_.get(lookupData, checkPath)){
continue;
}
const row = {};
for(const key in mapping){
row[key] = _.get(lookupData, mapping[key])
}
row.VALIDATED = publication.validation.length === 0 ? 'Y' : 'N';
row.URL = publication.pdfUrl;
stream.write(row);
output.push(row);
}
stream.end();
fs.writeFileSync(jsonPath, JSON.stringify(output, null, 4));
}
const generateAirStateOfResidence = async (csvPath, jsonPath) => {
let publications = JSON.parse(fs.readFileSync(PUBLICATION_JSON_PATH)).filter(v => v.vaccineDataPath != null);
publications.sort((a, b) => a.vaccineDataPath.localeCompare(b.vaccineDataPath));
// handle when health publishes the data multiple times
publications = _.uniqBy(publications, 'vaccineDataPath');
const output = [];
const stream = format({ headers: [
'DATE_AS_AT',
'STATE',
'AGE_LOWER',
'AGE_UPPER',
'AIR_RESIDENCE_FIRST_DOSE_PCT',
'AIR_RESIDENCE_SECOND_DOSE_PCT',
'AIR_RESIDENCE_FIRST_DOSE_COUNT',
'AIR_RESIDENCE_SECOND_DOSE_COUNT',
'AIR_RESIDENCE_FIRST_DOSE_APPROX_COUNT',
'AIR_RESIDENCE_SECOND_DOSE_APPROX_COUNT',
'ABS_ERP_JUN_2020_POP',
'VALIDATED',
'URL'
] });
stream.pipe(fs.createWriteStream(csvPath));
for(const publication of publications){
const localDataFile = publication.vaccineDataPath.replace("https://vaccinedata.covid19nearme.com.au/data/", PUBLICATION_JSON_DATA_PATH);
const data = JSON.parse(fs.readFileSync(localDataFile));
const lookupData = {
...data.pdfData,
}
const stateOfResidence = _.get(lookupData, 'stateOfResidence');
if(!stateOfResidence){
continue;
}
for(const stateCode in stateOfResidence){
for(const ageGroup of stateOfResidence[stateCode].ageBucketsEstimatedPopulation){
const row = {
DATE_AS_AT: _.get(lookupData, 'dataAsAt'),
STATE: stateCode,
AGE_LOWER: ageGroup.ageLower,
AGE_UPPER: ageGroup.ageUpper || 999,
AIR_RESIDENCE_FIRST_DOSE_PCT: ageGroup.firstDosePct,
AIR_RESIDENCE_SECOND_DOSE_PCT: ageGroup.secondDosePct,
AIR_RESIDENCE_FIRST_DOSE_APPROX_COUNT: ageGroup.firstDoseCount,
AIR_RESIDENCE_SECOND_DOSE_APPROX_COUNT: ageGroup.secondDoseCount,
ABS_ERP_JUN_2020_POP: ageGroup.cohortPopulation
};
row.VALIDATED = publication.validation.length === 0 ? 'Y' : 'N';
row.URL = publication.pdfUrl;
stream.write(row);
output.push(row);
}
for(const ageGroup of stateOfResidence[stateCode].ageBucketsActualPopulation){
const row = {
DATE_AS_AT: _.get(lookupData, 'dataAsAt'),
STATE: stateCode,
AGE_LOWER: ageGroup.ageLower,
AGE_UPPER: ageGroup.ageUpper || 999,
AIR_RESIDENCE_FIRST_DOSE_PCT: ageGroup.firstDosePct,
AIR_RESIDENCE_SECOND_DOSE_PCT: ageGroup.secondDosePct,
AIR_RESIDENCE_FIRST_DOSE_COUNT: ageGroup.firstDoseCount,
AIR_RESIDENCE_SECOND_DOSE_COUNT: ageGroup.secondDoseCount,
ABS_ERP_JUN_2020_POP: ageGroup.cohortPopulation
};
row.VALIDATED = publication.validation.length === 0 ? 'Y' : 'N';
row.URL = publication.pdfUrl;
stream.write(row);
output.push(row);
}
const age1215 = _.get(lookupData, 'doseBreakdown.' + stateCode).find(v => v.ageLower === 12 && v.ageUpper === 15);
if(age1215){
const row = {
DATE_AS_AT: _.get(lookupData, 'dataAsAt'),
STATE: stateCode,
AGE_LOWER: 12,
AGE_UPPER: 15,
AIR_RESIDENCE_FIRST_DOSE_PCT: (age1215 || {}).firstDosePct,
AIR_RESIDENCE_SECOND_DOSE_PCT: (age1215 || {}).secondDosePct,
AIR_RESIDENCE_FIRST_DOSE_COUNT: (age1215 || {}).firstDoseCount,
AIR_RESIDENCE_SECOND_DOSE_COUNT: (age1215 || {}).secondDoseCount,
AIR_RESIDENCE_FIRST_DOSE_APPROX_COUNT: (age1215 || {}).firstDoseCount,
AIR_RESIDENCE_SECOND_DOSE_APPROX_COUNT: (age1215 || {}).secondDoseCount,
ABS_ERP_JUN_2020_POP: (age1215 || {}).cohortPopulation
};
row.VALIDATED = publication.validation.length === 0 ? 'Y' : 'N';
row.URL = publication.pdfUrl;
stream.write(row);
output.push(row);
}
const age511 = _.get(lookupData, 'doseBreakdown.' + stateCode).find(v => v.ageLower === 5 && v.ageUpper === 11);
if(age511){
const row = {
DATE_AS_AT: _.get(lookupData, 'dataAsAt'),
STATE: stateCode,
AGE_LOWER: 5,
AGE_UPPER: 11,
AIR_RESIDENCE_FIRST_DOSE_PCT: (age511 || {}).firstDosePct,
AIR_RESIDENCE_SECOND_DOSE_PCT: (age511 || {}).secondDosePct,
AIR_RESIDENCE_FIRST_DOSE_COUNT: (age511 || {}).firstDoseCount,
AIR_RESIDENCE_SECOND_DOSE_COUNT: (age511 || {}).secondDoseCount,
AIR_RESIDENCE_FIRST_DOSE_APPROX_COUNT: (age511 || {}).firstDoseCount,
AIR_RESIDENCE_SECOND_DOSE_APPROX_COUNT: (age511 || {}).secondDoseCount,
ABS_ERP_JUN_2020_POP: (age511 || {}).cohortPopulation
};
row.VALIDATED = publication.validation.length === 0 ? 'Y' : 'N';
row.URL = publication.pdfUrl;
stream.write(row);
output.push(row);
}
}
}
stream.end();
fs.writeFileSync(jsonPath, JSON.stringify(output, null, 4));
}
generateCsv();
generateDistributionCsv(DISTRIBUTION_DATA_CSV_PATH, DISTRIBUTION_DATA_JSON_PATH, DISTRIBUTION_COLUMN_TO_PATH_MAPPING, "distribution.NSW.distributed");
generateDistributionCsv(AIR_DATA_CSV_PATH, AIR_DATA_JSON_PATH, AIR_COLUMN_TO_PATH_MAPPING, "doseBreakdown.national[0].firstDoseCount");
generateAirStateOfResidence(AIR_RESI_DATA_CSV_PATH, AIR_RESI_DATA_JSON_PATH);