From 85550e6c6ec97c97e5e390cfbb76331e7ffd4cb3 Mon Sep 17 00:00:00 2001 From: frankknoll Date: Sun, 27 Aug 2023 17:21:53 +0200 Subject: [PATCH] refactoring --- docs/BatchCodeTableInitializer.js | 11 - src/BarChartDescriptionTables.py | 48 -- src/BarChartDescriptionTablesTest.py | 378 ----------- .../CountryByBatchcode 20230826-20230826.csv | 641 ++++++++++++++++++ 4 files changed, 641 insertions(+), 437 deletions(-) delete mode 100644 src/BarChartDescriptionTables.py delete mode 100644 src/BarChartDescriptionTablesTest.py create mode 100644 src/data/GoogleAnalytics/CountryByBatchcode 20230826-20230826.csv diff --git a/docs/BatchCodeTableInitializer.js b/docs/BatchCodeTableInitializer.js index 95e4cf4fd8b..b2990c836e1 100644 --- a/docs/BatchCodeTableInitializer.js +++ b/docs/BatchCodeTableInitializer.js @@ -62,17 +62,6 @@ class BatchCodeTableInitializer { this.#getColumnIndex('Company') ] }, - // FK-TODO: make visible again - { - visible: false, - targets: - [ - this.#getColumnIndex('Company'), - this.#getColumnIndex('Deaths'), - this.#getColumnIndex('Disabilities'), - this.#getColumnIndex('Life Threatening Illnesses') - ] - }, { render: data => { const numberInPercent = parseFloat(data); diff --git a/src/BarChartDescriptionTables.py b/src/BarChartDescriptionTables.py deleted file mode 100644 index 7a067503e99..00000000000 --- a/src/BarChartDescriptionTables.py +++ /dev/null @@ -1,48 +0,0 @@ -import math -import numpy as np - - -class BarChartDescriptionTables: - - @staticmethod - def filter(barChartDescriptionTable, predicate): - return barChartDescriptionTable[barChartDescriptionTable.apply( - lambda barChartDescription: predicate( - barChartDescription['BAR_CHART_DESCRIPTION']), - axis='columns')] - - @staticmethod - def isValidJensenShannonDistance(barChartDescription): - jensenShannonDistance = barChartDescription['Jensen-Shannon distance'] - return not math.isnan(jensenShannonDistance) - - @staticmethod - def hasMinSizeOfGuessedHistogram(barChartDescription, minSizeOfGuessedHistogram): - sizeOfGuessedHistogram = sum( - barChartDescription['Adverse Reaction Reports guessed']) - return sizeOfGuessedHistogram >= minSizeOfGuessedHistogram - - @staticmethod - def hasMinSizeOfKnownHistogram(barChartDescription, minSizeOfKnownHistogram): - sizeOfKnownHistogram = sum( - barChartDescription['Adverse Reaction Reports known']) - return sizeOfKnownHistogram >= minSizeOfKnownHistogram - - @staticmethod - def hasCountryWithGuessedGreaterThanKnown(barChartDescription): - guessedBarChart = barChartDescription['Adverse Reaction Reports guessed'] - knownBarChart = barChartDescription['Adverse Reaction Reports known'] - return np.any(np.asarray(guessedBarChart) > np.asarray(knownBarChart)) - - @staticmethod - def isGuessedGreaterThanKnown(barChartDescription): - sizeOfGuessedHistogram = sum( - barChartDescription['Adverse Reaction Reports guessed']) - sizeOfKnownHistogram = sum( - barChartDescription['Adverse Reaction Reports known']) - return sizeOfGuessedHistogram >= sizeOfKnownHistogram - - @staticmethod - def containsCountry(barChartDescription, country): - COUNTRIES = [country.upper() for country in barChartDescription['countries']] - return country.upper() in COUNTRIES diff --git a/src/BarChartDescriptionTablesTest.py b/src/BarChartDescriptionTablesTest.py deleted file mode 100644 index ed4a2890664..00000000000 --- a/src/BarChartDescriptionTablesTest.py +++ /dev/null @@ -1,378 +0,0 @@ -import unittest -import pandas as pd -import numpy as np -from pandas.testing import assert_frame_equal -from TestHelper import TestHelper -from BarChartDescriptionTables import BarChartDescriptionTables - - -class BarChartDescriptionTablesTest(unittest.TestCase): - - def test_filterValidJensenShannonDistances(self): - # Given - barChartDescriptionTable = TestHelper.createDataFrame( - columns=['BAR_CHART_DESCRIPTION'], - data=[ - [ - { - 'countries': ['Germany', 'Hungary'], - 'Adverse Reaction Reports guessed': [0, 0], - 'Adverse Reaction Reports known': [20, 30], - 'Jensen-Shannon distance': np.nan - } - ], - [ - { - 'countries': ['Germany'], - 'Adverse Reaction Reports guessed': [70], - 'Adverse Reaction Reports known': [80], - 'Jensen-Shannon distance': 0.4711 - } - ] - ], - index=pd.Index( - [ - '!D0181', - '# 009C01A' - ], - name='VAX_LOT')) - - # When - barChartDescriptionTableResult = BarChartDescriptionTables.filter( - barChartDescriptionTable, - BarChartDescriptionTables.isValidJensenShannonDistance) - - # Then - assert_frame_equal( - barChartDescriptionTableResult, - TestHelper.createDataFrame( - columns=['BAR_CHART_DESCRIPTION'], - data=[ - [ - { - 'countries': ['Germany'], - 'Adverse Reaction Reports guessed': [70], - 'Adverse Reaction Reports known': [80], - 'Jensen-Shannon distance': 0.4711 - } - ] - ], - index=pd.Index( - [ - '# 009C01A', - ], - name='VAX_LOT')), - check_dtype=True) - - def test_filterHasMinSizeOfGuessedHistogram_true(self): - # Given - barChartDescriptionTable = TestHelper.createDataFrame( - columns=['BAR_CHART_DESCRIPTION'], - data=[ - [ - { - 'countries': ['Germany', 'Hungary'], - 'Adverse Reaction Reports guessed': [10, 20], - 'Adverse Reaction Reports known': [20, 30], - 'Jensen-Shannon distance': 0.4711 - } - ] - ], - index=pd.Index( - [ - '!D0181' - ], - name='VAX_LOT')) - - # When - barChartDescriptionTableResult = BarChartDescriptionTables.filter( - barChartDescriptionTable, - lambda barChartDescription: - BarChartDescriptionTables.hasMinSizeOfGuessedHistogram( - barChartDescription, - minSizeOfGuessedHistogram=20)) - - # Then - assert_frame_equal( - barChartDescriptionTableResult, - barChartDescriptionTable, - check_dtype=True) - - def test_filterHasMinSizeOfGuessedHistogram_false(self): - # Given - barChartDescriptionTable = TestHelper.createDataFrame( - columns=['BAR_CHART_DESCRIPTION'], - data=[ - [ - { - 'countries': ['Germany', 'Hungary'], - 'Adverse Reaction Reports guessed': [10, 20], - 'Adverse Reaction Reports known': [20, 30], - 'Jensen-Shannon distance': 0.4711 - } - ] - ], - index=pd.Index( - [ - '!D0181' - ], - name='VAX_LOT')) - - # When - barChartDescriptionTableResult = BarChartDescriptionTables.filter( - barChartDescriptionTable, - lambda barChartDescription: - BarChartDescriptionTables.hasMinSizeOfGuessedHistogram( - barChartDescription, - minSizeOfGuessedHistogram=31)) - - # Then - assert_frame_equal( - barChartDescriptionTableResult, - TestHelper.createDataFrame( - columns=['BAR_CHART_DESCRIPTION'], - data=[], - index=pd.Index( - [], - name='VAX_LOT')), - check_dtype=True) - - def test_filterHasMinSizeOfKnownHistogram_true(self): - # Given - barChartDescriptionTable = TestHelper.createDataFrame( - columns=['BAR_CHART_DESCRIPTION'], - data=[ - [ - { - 'countries': ['Germany', 'Hungary'], - 'Adverse Reaction Reports guessed': [10, 20], - 'Adverse Reaction Reports known': [20, 30], - 'Jensen-Shannon distance': 0.4711 - } - ] - ], - index=pd.Index( - [ - '!D0181' - ], - name='VAX_LOT')) - - # When - barChartDescriptionTableResult = BarChartDescriptionTables.filter( - barChartDescriptionTable, - lambda barChartDescription: - BarChartDescriptionTables.hasMinSizeOfKnownHistogram( - barChartDescription, - minSizeOfKnownHistogram=20)) - - # Then - assert_frame_equal( - barChartDescriptionTableResult, - barChartDescriptionTable, - check_dtype=True) - - def test_filterHasMinSizeOfKnownHistogram_false(self): - # Given - barChartDescriptionTable = TestHelper.createDataFrame( - columns=['BAR_CHART_DESCRIPTION'], - data=[ - [ - { - 'countries': ['Germany', 'Hungary'], - 'Adverse Reaction Reports guessed': [100, 20], - 'Adverse Reaction Reports known': [20, 30], - 'Jensen-Shannon distance': 0.4711 - } - ] - ], - index=pd.Index( - [ - '!D0181' - ], - name='VAX_LOT')) - - # When - barChartDescriptionTableResult = BarChartDescriptionTables.filter( - barChartDescriptionTable, - lambda barChartDescription: - BarChartDescriptionTables.hasMinSizeOfKnownHistogram( - barChartDescription, - minSizeOfKnownHistogram=51)) - - # Then - assert_frame_equal( - barChartDescriptionTableResult, - TestHelper.createDataFrame( - columns=['BAR_CHART_DESCRIPTION'], - data=[], - index=pd.Index( - [], - name='VAX_LOT')), - check_dtype=True) - - def test_filterHasCountryWithGuessedGreaterThanKnown(self): - # Given - guessed = 25 - known = 20 - barChartDescriptionTable = TestHelper.createDataFrame( - columns=['BAR_CHART_DESCRIPTION'], - data=[ - [ - { - 'countries': ['Germany', 'Hungary'], - 'Adverse Reaction Reports guessed': [guessed, 20], - 'Adverse Reaction Reports known': [known, 30], - 'Jensen-Shannon distance': 0.4711 - } - ], - [ - { - 'countries': ['Germany', 'America'], - 'Adverse Reaction Reports guessed': [25, 20], - 'Adverse Reaction Reports known': [250, 200], - 'Jensen-Shannon distance': 0.815 - } - ]], - index=pd.Index( - [ - '!D0181', - 'some batch code' - ], - name='VAX_LOT')) - - # When - barChartDescriptionTableResult = BarChartDescriptionTables.filter( - barChartDescriptionTable, - BarChartDescriptionTables.hasCountryWithGuessedGreaterThanKnown) - - # Then - assert_frame_equal( - barChartDescriptionTableResult, - TestHelper.createDataFrame( - columns=['BAR_CHART_DESCRIPTION'], - data=[ - [ - { - 'countries': ['Germany', 'Hungary'], - 'Adverse Reaction Reports guessed': [guessed, 20], - 'Adverse Reaction Reports known': [known, 30], - 'Jensen-Shannon distance': 0.4711 - } - ] - ], - index=pd.Index( - [ - '!D0181' - ], - name='VAX_LOT')), - check_dtype=True) - - def test_filterIsGuessedGreaterThanKnown(self): - # Given - barChartDescriptionTable = TestHelper.createDataFrame( - columns=['BAR_CHART_DESCRIPTION'], - data=[ - [ - { - 'countries': ['Germany', 'Hungary'], - 'Adverse Reaction Reports guessed': [250, 1], - 'Adverse Reaction Reports known': [240, 9], - 'Jensen-Shannon distance': 0.4711 - } - ], - [ - { - 'countries': ['Germany', 'America'], - 'Adverse Reaction Reports guessed': [25, 2000], - 'Adverse Reaction Reports known': [5000, 200], - 'Jensen-Shannon distance': 0.815 - } - ]], - index=pd.Index( - [ - '!D0181', - 'some batch code' - ], - name='VAX_LOT')) - - # When - barChartDescriptionTableResult = BarChartDescriptionTables.filter( - barChartDescriptionTable, - BarChartDescriptionTables.isGuessedGreaterThanKnown) - - # Then - assert_frame_equal( - barChartDescriptionTableResult, - TestHelper.createDataFrame( - columns=['BAR_CHART_DESCRIPTION'], - data=[ - [ - { - 'countries': ['Germany', 'Hungary'], - 'Adverse Reaction Reports guessed': [250, 1], - 'Adverse Reaction Reports known': [240, 9], - 'Jensen-Shannon distance': 0.4711 - } - ] - ], - index=pd.Index( - [ - '!D0181' - ], - name='VAX_LOT')), - check_dtype=True) - - def test_filterContainsCountry(self): - # Given - barChartDescriptionTable = TestHelper.createDataFrame( - columns=['BAR_CHART_DESCRIPTION'], - data=[ - [ - { - 'countries': ['Germany', 'Hungary'], - 'Adverse Reaction Reports guessed': [25, 20], - 'Adverse Reaction Reports known': [20, 30], - 'Jensen-Shannon distance': 0.4711 - } - ], - [ - { - 'countries': ['Germany', 'America'], - 'Adverse Reaction Reports guessed': [25, 20], - 'Adverse Reaction Reports known': [250, 200], - 'Jensen-Shannon distance': 0.815 - } - ]], - index=pd.Index( - [ - '!D0181', - 'some batch code' - ], - name='VAX_LOT')) - - # When - barChartDescriptionTableResult = BarChartDescriptionTables.filter( - barChartDescriptionTable, - lambda barChartDescription: BarChartDescriptionTables.containsCountry(barChartDescription, 'America')) - - # Then - assert_frame_equal( - barChartDescriptionTableResult, - TestHelper.createDataFrame( - columns=['BAR_CHART_DESCRIPTION'], - data=[ - [ - { - 'countries': ['Germany', 'America'], - 'Adverse Reaction Reports guessed': [25, 20], - 'Adverse Reaction Reports known': [250, 200], - 'Jensen-Shannon distance': 0.815 - } - ] - ], - index=pd.Index( - [ - 'some batch code' - ], - name='VAX_LOT')), - check_dtype=True) diff --git a/src/data/GoogleAnalytics/CountryByBatchcode 20230826-20230826.csv b/src/data/GoogleAnalytics/CountryByBatchcode 20230826-20230826.csv new file mode 100644 index 00000000000..9dd2c5835f4 --- /dev/null +++ b/src/data/GoogleAnalytics/CountryByBatchcode 20230826-20230826.csv @@ -0,0 +1,641 @@ +# ---------------------------------------- +# HowBadIsMyBatch +# Batchcode By Country-Country By Clicked Batchcode +# 20230826-20230826 +# ---------------------------------------- + +Clicked Batchcode,Country,Event count +,,4974,Grand total +#006B21A,United States,1 +#FC3180,United States,1 +000004A,Italy,1 +000004A 19/03/2,Italy,1 +000050A,Germany,1 +000124A,Germany,1 +000128A,Germany,1 +000130A,Germany,1 +000140A,Germany,1 +000141A,Germany,1 +000142A,Netherlands,1 +000207A,Germany,1 +0009C21A,Germany,1 +0009C21A,United States,1 +001J21-2A,United States,1 +0022B21A,United States,1 +002A221A,United States,1 +002CZ1A,United States,1 +002F21A,United States,1 +003J212A,United States,1 +004F21A,United States,1 +004M20A,United States,1 +005C21A,United States,1 +006M20A,United States,1 +007C21A,United States,1 +007J21-2A,United States,1 +007MZ0A,United States,1 +008B21A,United States,1 +010M20A,United States,1 +011A21A,United States,1 +012H21B-MODERNA,United States,1 +012L20A,United States,1 +013120A,Germany,1 +013L20A,United States,1 +013M20A OR 0BM2,United States,1 +014M2DA,United States,1 +016G21A,Italy,1 +016M2UA,United States,1 +01DE/A90001668/,Germany,1 +023C21A,United States,1 +023H22A,United States,1 +023M2OA,United States,1 +025L20A,United States,1 +026821A,United States,1 +026A21A,United States,1 +028L20A,United States,1 +029L20A,United States,1 +030A21A,United States,1 +030G22B,United States,1 +031M20A,United States,1 +032H21A,United States,1 +032L2OA,United States,1 +033F21A,United States,1 +036A21A,United States,1 +037B21A,United States,1 +037F21A,United States,1 +037K2OA,United States,1 +038A21A,United States,1 +038D21A,Guatemala,1 +038K20A,United States,1 +039K20A,Canada,1 +039K20A,Iran,1 +043821A,United States,1 +0471321A,United States,1 +047B12A,United States,1 +049C21A,United States,1 +049L21A-MODERNA,United States,1 +050E21A,United States,1 +052C21A,Canada,1 +059H21A,United States,1 +062H21A,Canada,1 +067H21A,United States,1 +068H21A,United States,1 +069H21A,United States,1 +092D21A,Canada,1 +094F21A,Italy,1 +1110-20-026L20A,United States,1 +1111-20-EW0153,United States,1 +1111-20-EW0167,United States,1 +1111-20-EW0168,United States,1 +1111-20-EW0171,United States,1 +1111-20-FE3592,United States,1 +1111-20-FF2593,Canada,1 +1111-20-FH8027,United States,1 +1805018,United States,1 +1805020,United States,1 +1820095,United States,1 +1822809,United States,1 +1822811,United States,1 +1C007A,Germany,1 +1CO11A,Germany,1 +1D015A,Germany,1 +1D017A,Germany,1 +1DO16A,France,1 +1E024A,Germany,1 +1E029A,Germany,1 +1F1007A,Austria,1 +1F1008A,Netherlands,1 +1F1009A,Netherlands,1 +1F1021A,Germany,1 +1F1022A,Germany,1 +1F1023A,Germany,1 +1F1049A,Germany,1 +1F1050A,Germany,1 +1F1054A,Germany,1 +1F1054A,Italy,1 +1G040A,Germany,1 +1G044A,Austria,1 +1H048A,Germany,1 +1H048A,Poland,1 +203A21A,United States,1 +206A21A,United States,1 +210004,Germany,1 +211D21A,United States,1 +214003,Italy,1 +216044,Germany,1 +21C1005,Poland,1 +3001442,Poland,1 +3001651,Germany,1 +3002334,Germany,1 +3002537,Netherlands,1 +3002541,Switzerland,1 +3002543,Italy,1 +3002544,Poland,1 +30025TB,France,1 +3003604,Netherlands,1 +3004215,Switzerland,1 +3004732,Germany,1 +3005687,Italy,1 +3005840,Germany,1 +30145BA,United States,1 +301558A,United States,1 +30380777700688,Germany,1 +32030BD,United States,1 +33030BD,United States,1 +33030BD-PFIZER-,United States,1 +3303680,United States,1 +330368D,United States,1 +33038D,United States,1 +3313OBA,United States,1 +34397TB,Germany,1 +4301MF009,Germany,1 +49269018,Australia,1 +49269018,Italy,1 +49269044,Australia,1 +49283017,Australia,1 +7006320006,Germany,1 +939903,United States,1 +AA1234,Italy,1 +ABV4678,Italy,1 +ABW2586,Italy,1 +ABY4057,Belgium,1 +ACB4692,Germany,1 +ACB5317,Germany,1 +ACB9471,Germany,1 +B1F1024A,Germany,1 +BNT162B2,United States,1 +CH-B:ER7812,Germany,1 +CH.-B.: FD7958,Germany,1 +CH.-B.: SCWF3,Germany,1 +CH.-B.:1C011A,Germany,1 +CH.-B.:FE6975,Germany,1 +CH.B.:1C007A,Netherlands,1 +CH.B.:EX3599,Germany,1 +COMIRNATY EX867,Germany,1 +EJ2163,Sweden,1 +EJ6789,France,1 +EJ6789,United States,1 +EJ6790,Germany,1 +EJ6796,United States,1 +EK5730 PFIZER,United States,1 +EL0725,Italy,1 +EL3246,Poland,1 +EL3246,United States,1 +EL3247,Poland,1 +EL3247,United States,1 +EL8723,Germany,1 +EL9267,United States,1 +EM4965,United Kingdom,1 +EN1698,United States,1 +EN6201,United States,1 +EN6202,United States,1 +EN6205,United States,1 +EN6208,United States,1 +EN6955,United States,1 +EP 2163,Sweden,1 +EP6775,Panama,1 +EP7533,Poland,1 +EP9598,United States,1 +EP9605,Switzerland,1 +ER7934,United Kingdom,1 +ER8731,Mongolia,1 +ER8733,United States,1 +ER8734,United States,1 +ER8735,United States,1 +ER8737,United States,1 +ER9480,Germany,1 +ER9480,Netherlands,1 +ET 9096,Belgium,1 +ET3674,United States,1 +ET8885,United Kingdom,1 +EW 0153,United States,1 +EW0162,United States,1 +EW0164,United States,1 +EW0169,United States,1 +EW0179,United States,1 +EW0182,United States,1 +EW0185,Poland,1 +EW0189,United States,1 +EW0193,Canada,1 +EW153,United States,1 +EW3143-L687,United Kingdom,1 +EW3344,Singapore,1 +EW4109,United Kingdom,1 +EW6126,Belgium,1 +EW6126,United States,1 +EW8904,Germany,1 +EX 8679,Germany,1 +EX0893,Austria,1 +EX3599,Montenegro,1 +EX6537,Netherlands,1 +EX7389,Italy,1 +EX7823,Netherlands,1 +EY0573,Germany,1 +EY7015,Croatia,1 +FA4598,Australia,1 +FA5833,Germany,1 +FA7338,Australia,1 +FA7812,Australia,1 +FA7842,Poland,1 +FA8016,Italy,1 +FA9091,Canada,1 +FA9094,Canada,1 +FC 1433,Poland,1 +FC1433,Poland,1 +FC1436,Germany,1 +FC2473,Austria,1 +FC3095,Germany,1 +FC3180,United States,1 +FC3181,United States,1 +FC3182,United States,1 +FC3184,United States,1 +FC3558,Italy,1 +FC3661,Belgium,1 +FC3661,Switzerland,1 +FC5089,Italy,1 +FC5435,Italy,1 +FC6984,France,1 +FC8736,Australia,1 +FC8889,Germany,1 +FD0348,Germany,1 +FD0785,Spain,1 +FD1921,Switzerland,1 +FD2934,Germany,1 +FD4342,Croatia,1 +FD4342,Poland,1 +FD5996,Germany,1 +FD6840,Czechia,1 +FD7204,Canada,1 +FD9234,France,1 +FE 8405,Germany,1 +FE1248,France,1 +FE1510,United Kingdom,1 +FE2083,Denmark,1 +FE2707,Switzerland,1 +FE3064,Australia,1 +FE3065,Spain,1 +FE3380,United Kingdom,1 +FE3544,Austria,1 +FE3590,United States,1 +FE3594,United States,1 +FE3594-PFIZER-2,United States,1 +FE7010,Netherlands,1 +FE8087,Singapore,1 +FE8163,Australia,1 +FE8236,Ireland,1 +FE8244,Czechia,1 +FE8244,Netherlands,1 +FE8405,Germany,1 +FE8405,Spain,1 +FE9174,Germany,1 +FF 0900,Germany,1 +FF0680,Germany,1 +FF0900,Germany,1 +FF2382,United Kingdom,1 +FF2500,Canada,1 +FF2507,Canada,1 +FF25595,Canada,1 +FF2570,Canada,1 +FF2581,Canada,1 +FF2586,Canada,1 +FF2588,United States,1 +FF2589,Canada,1 +FF2593,United States,1 +FF2597,Canada,1 +FF3220,Japan,1 +FF3316,United Kingdom,1 +FF3318,Canada,1 +FF3318,Ireland,1 +FF3318,United Kingdom,1 +FF3319,Canada,1 +FF3389,Canada,1 +FF3389,United Kingdom,1 +FF3620,Japan,1 +FF4202,Canada,1 +FF4204,Canada,1 +FF4206,Australia,1 +FF4222,Canada,1 +FF4481,Canada,1 +FF4554,Netherlands,1 +FF8288,Italy,1 +FG3712,Australia,1 +FG3739,Italy,1 +FG6273,Netherlands,1 +FH0161,Switzerland,1 +FH8028,United States,1 +FH8030,United States,1 +FH9951,Italy,1 +FJ1611,United States,1 +FJ5683,United States,1 +FJ5973,Sweden,1 +FJ7489,Japan,1 +FJS682,United States,1 +FK6304,Austria,1 +FK6304,Sweden,1 +FK8917,Portugal,1 +FK9414,New Zealand,1 +FK9729,United States,1 +FK9894,United States,1 +FL0007,United States,1 +FL3198,United States,1 +FL3211,Poland,1 +FL3560,Australia,1 +FL5729,New Zealand,1 +FL9262,United States,1 +FM0698,United States,1 +FM3802,United States,1 +FM7380,Canada,1 +FM7533,Croatia,1 +FM9992,Poland,1 +FN1430,Switzerland,1 +FN2034,United Kingdom,1 +FN5519,United States,1 +FN7934,Canada,1 +FN9501,Canada,1 +FN9605,Portugal,1 +FN9607,Portugal,1 +FP1972,Germany,1 +FP1972,Italy,1 +FP7136,United States,1 +FP7137-PFIZER-2,United States,1 +GD6797,Croatia,1 +GD6802,Sweden,1 +GE8310,Italy,1 +GH9722,Austria,1 +GJ1836,Germany,1 +GJ2542,Netherlands,1 +GJ2631,Sweden,1 +GJ5342,United States,1 +GJ6739,United States,1 +GK0932,Canada,1 +GL0087,United States,1 +GL8592,Germany,1 +J&J 1805029,United States,1 +J07BX03,France,1 +J202100034,United States,1 +L202106031,Philippines,1 +L202106046,Philippines,1 +LOT 3002339,Germany,1 +LOT 3004233,Germany,1 +LOT 3004235,Netherlands,1 +LOT XE393,Germany,1 +LOT000086A,United States,1 +LOT000140A,Germany,1 +LOT3002188,Germany,1 +LOT3004233,France,1 +LOT3004952,Norway,1 +MRNA-1273,Canada,1 +NA0079,Canada,1 +P0001340,Poland,1 +PFIZER EN6198,United States,1 +PFIZER EN6201,United States,1 +PFIZER EN6202,United States,1 +PFIZER EN6205,United States,1 +PFIZER EN6207,United States,1 +PFIZER EN6208,United States,1 +PFIZER ER2613,United States,1 +PFIZER ER8730,United States,1 +PFIZER ER8733,United States,1 +PFIZER EW0150,United States,1 +PFIZER EW0164,United States,1 +PFIZER EW0167,United States,1 +PFIZER EW0171,United States,1 +PFIZER EW0172,United States,1 +PFIZER EW0177,United States,1 +PFIZER FC3182,United States,1 +PFIZER FF2588,Canada,1 +PFIZER FJ8762,United States,1 +PFIZER-BIONTECH,Poland,1 +PJ4989,United States,1 +PV46672,United Kingdom,1 +PV46677,United Kingdom,1 +PV46691,United Kingdom,1 +PV46698,United Kingdom,1 +PW40010,United Kingdom,1 +PW40011,United Kingdom,1 +PW40037,United Kingdom,1 +SCKX 7,Switzerland,1 +SCKX7,Poland,1 +SCKX7,Switzerland,1 +SCPT7,Germany,1 +SCRW2,Germany,1 +SCTJ2,Germany,1 +SCUL2,Germany,1 +SCVC6,Germany,1 +SCVK4,Sweden,1 +SCVY8,Germany,1 +SDCH8,Sweden,1 +SDEW9,Germany,1 +SL0007,Germany,1 +XD974,Germany,1 +XE389,Sweden,1 +001B21A,United States,2 +002A21A,United States,2 +006C21A,United States,2 +010A21A,United States,2 +016G21A (27/04/,Italy,2 +019B21A,United States,2 +023M20A,United States,2 +030L20A,United States,2 +032L20A,United States,2 +032M20A,United States,2 +047B21A,United States,2 +047C21A,United States,2 +1808982,United States,2 +1E021A,Germany,2 +1F1010A,Germany,2 +1F1020A,Italy,2 +1F1032A,Germany,2 +1F1042A,Germany,2 +1F1051A,Germany,2 +205A21A,United States,2 +3002917,Italy,2 +3004233,Germany,2 +3004669,Italy,2 +3005686,United Kingdom,2 +301358A,United States,2 +331308A,United States,2 +33130BA,United States,2 +33233TB,Germany,2 +4120Z003,United Kingdom,2 +ABZ5320,Germany,2 +ACB4694,Germany,2 +ACB7737,Germany,2 +ACC0681,Germany,2 +CH.-B.:FD7958,Germany,2 +COMIRNATY CH.-B,Germany,2 +EH6198,United States,2 +EJ6789,Germany,2 +EJ6797,Germany,2 +EK9788,United States,2 +EL3302,United States,2 +EL9262,United States,2 +EL9263,United States,2 +EN3924,United Kingdom,2 +EN6198,United States,2 +EN6200,United States,2 +EN6201,Canada,2 +EN6204,United States,2 +EN6207,United States,2 +EP2163,Germany,2 +EP2163,Sweden,2 +ER1742,Canada,2 +ER7812,Germany,2 +ER8731,United States,2 +ER8732,United States,2 +ET3620,Czechia,2 +EW0153,United States,2 +EW0158,United States,2 +EW0167,United States,2 +EW0172,United States,2 +EW0175,United States,2 +EW0176,United States,2 +EW0177,United States,2 +EW0185,United States,2 +EW0191,United States,2 +EW0196,United States,2 +EW0199,Canada,2 +EW0217,United States,2 +EW3143,United Kingdom,2 +EWO150,United States,2 +EX2405,Belgium,2 +EX7823,Germany,2 +EX8680,Germany,2 +FA7812,Belgium,2 +FC3558,Australia,2 +FD0785,Netherlands,2 +FD0809,United States,2 +FD0810,Canada,2 +FD7958,Germany,2 +FE1573,Netherlands,2 +FE6975,Germany,2 +FE7011,Germany,2 +FF0884,Australia,2 +FF3318,Germany,2 +FF3622,Japan,2 +FF9944,Japan,2 +FG1657,Singapore,2 +FG6270,Italy,2 +FH8027,United States,2 +FJ1614,United States,2 +FK9707,United Kingdom,2 +FL3209,United States,2 +FL3560,Switzerland,2 +FP7137,United States,2 +GH9694,United States,2 +LOT3004233,Germany,2 +PFIZER EK5730,United States,2 +PV46689,United Kingdom,2 +SCJU6,Germany,2 +SCVW7,Germany,2 +SDEH4,Germany,2 +XD985,Germany,2 +XE395,Germany,2 +(not set),Guadeloupe,3 +(not set),India,3 +(not set),Malaysia,3 +024M20A,United States,3 +026L20A,United States,3 +027A21A,United States,3 +1H049A,Germany,3 +31101TB,Germany,3 +ACB8967,Germany,3 +CH.-B.: EX8680,Germany,3 +CH.-B.:FC3095,Germany,3 +EJ6796,Germany,3 +EK9788,Germany,3 +EL1283,United States,3 +EM0477,Germany,3 +EP2163,Czechia,3 +EP6955,United States,3 +EP7534,United States,3 +ER2659,Germany,3 +ER8736,United States,3 +EW0150,United States,3 +EW0171,United States,3 +EW0216,Canada,3 +EW0221,Canada,3 +EX8679,Germany,3 +EY3014,Switzerland,3 +FD0932,Switzerland,3 +FE2083,Norway,3 +FE3592,United States,3 +FF2590,United States,3 +FF2595,Canada,3 +FF2834,Netherlands,3 +FF3380,United Kingdom,3 +FF4222,Spain,3 +FG7369,Belgium,3 +FJ5790,Japan,3 +FK9712,United Kingdom,3 +FK9893,United States,3 +PFIZER EN5318,United States,3 +SCWF3,Germany,3 +(not set),Costa Rica,4 +(not set),Jordan,4 +(not set),Luxembourg,4 +(not set),Mexico,4 +(not set),Montenegro,4 +(not set),Panama,4 +(not set),Peru,4 +(not set),Philippines,4 +(not set),Thailand,4 +(not set),Uruguay,4 +33036BD,United States,4 +EL0739,United Kingdom,4 +EP9598,Germany,4 +EW0168,United States,4 +EWO169,United States,4 +EX3510,Germany,4 +FE8235,Switzerland,4 +FF2589,United States,4 +FF4213,France,4 +FF5109,Canada,4 +FH8020,United States,4 +(not set),Colombia,5 +(not set),Croatia,5 +(not set),Dominican Republic,5 +(not set),Russia,5 +(not set),Singapore,5 +(not set),Slovenia,5 +49283017,Italy,5 +ET3045,Germany,5 +FD7206,Canada,5 +(not set),Argentina,6 +(not set),Guatemala,7 +(not set),Sri Lanka,7 +FF8841,United States,7 +(not set),China,8 +(not set),Türkiye,8 +(not set),Chile,9 +(not set),Denmark,9 +(not set),Lebanon,9 +(not set),Paraguay,9 +FA8721,Canada,9 +(not set),South Korea,10 +(not set),Mongolia,11 +(not set),Hungary,12 +(not set),Ireland,12 +(not set),New Zealand,12 +(not set),Finland,13 +(not set),Portugal,14 +(not set),Iran,18 +(not set),Israel,18 +(not set),Norway,21 +(not set),Brazil,23 +(not set),Czechia,29 +(not set),Belgium,53 +(not set),Sweden,59 +(not set),Switzerland,64 +(not set),Japan,71 +(not set),Austria,82 +(not set),Spain,83 +(not set),Australia,94 +(not set),France,130 +(not set),Italy,195 +(not set),United Kingdom,195 +(not set),Netherlands,197 +(not set),Poland,201 +(not set),Canada,234 +(not set),Germany,812 +(not set),United States,1348 +