diff --git a/HowBadIsMyBatch.ipynb b/HowBadIsMyBatch.ipynb index 58720f1bca4..dff3645780b 100644 --- a/HowBadIsMyBatch.ipynb +++ b/HowBadIsMyBatch.ipynb @@ -208,19 +208,30 @@ "source": [ "import pandas as pd\n", "\n", - "class BatchCodeTableHelper:\n", - " \n", - " def __init__(self, dataFrame : pd.DataFrame):\n", - " self.dataFrame = dataFrame\n", + "class BatchCodeTableFactory:\n", + "\n", + " @staticmethod\n", + " def createBatchCodeTable(dataFrame : pd.DataFrame, manufacturer, dose):\n", + " dataFrame = DataFrameFilter().filterByCovid19(dataFrame)\n", + " dataFrame = DataFrameFilter().filterBy(dataFrame, manufacturer = manufacturer, dose = dose)\n", + " return BatchCodeTableFactory._createSummationTableByVAX_LOT(dataFrame)[['ADRs', 'DEATHS', 'DISABILITIES', 'LIFE THREATENING ILLNESSES']]\n", "\n", " # create table from https://www.howbadismybatch.com/combined.html\n", - " def createSevereEffectsBatchCodeTable(self):\n", - " batchCodeTable = SummationTableFactory.createSummationTable(self.dataFrame.groupby('VAX_LOT'))\n", + " @staticmethod\n", + " def createSevereEffectsBatchCodeTable(dataFrame : pd.DataFrame, dose):\n", + " dataFrame = DataFrameFilter().filterByCovid19(dataFrame)\n", + " dataFrame = DataFrameFilter().filterBy(dataFrame, dose = dose)\n", + " return BatchCodeTableFactory._createSummationTableByVAX_LOT(dataFrame)\n", + "\n", + " @staticmethod\n", + " def _createSummationTableByVAX_LOT(dataFrame):\n", + " batchCodeTable = SummationTableFactory.createSummationTable(dataFrame.groupby('VAX_LOT'))\n", " batchCodeTable = batchCodeTable[['ADRs', 'DEATHS', 'DISABILITIES', 'LIFE THREATENING ILLNESSES', 'HOSPITALISATIONS', 'EMERGENCY ROOM OR DOCTOR VISITS']]\n", " batchCodeTable = batchCodeTable.sort_values(by = 'ADRs', ascending = False)\n", - " return self._addCompanyColumn(batchCodeTable, self._createCompanyByBatchCodeTable())\n", + " return BatchCodeTableFactory._addCompanyColumn(batchCodeTable, BatchCodeTableFactory._createCompanyByBatchCodeTable(dataFrame))\n", "\n", - " def _addCompanyColumn(self, batchCodeTable, companyByBatchCodeTable):\n", + " @staticmethod\n", + " def _addCompanyColumn(batchCodeTable, companyByBatchCodeTable):\n", " return pd.merge(\n", " batchCodeTable,\n", " companyByBatchCodeTable,\n", @@ -229,29 +240,15 @@ " right_index = True,\n", " validate = 'one_to_one')\n", "\n", - " def _createCompanyByBatchCodeTable(self):\n", - " return self._createManufacturerByBatchCodeTable().rename(columns = {\"VAX_MANU\": \"COMPANY\"})\n", + " @staticmethod\n", + " def _createCompanyByBatchCodeTable(dataFrame):\n", + " return BatchCodeTableFactory._createManufacturerByBatchCodeTable(dataFrame).rename(columns = {\"VAX_MANU\": \"COMPANY\"})\n", "\n", - " def _createManufacturerByBatchCodeTable(self):\n", - " manufacturerByBatchCodeTable = self.dataFrame[['VAX_LOT', 'VAX_MANU']]\n", + " @staticmethod\n", + " def _createManufacturerByBatchCodeTable(dataFrame):\n", + " manufacturerByBatchCodeTable = dataFrame[['VAX_LOT', 'VAX_MANU']]\n", " manufacturerByBatchCodeTable = manufacturerByBatchCodeTable.drop_duplicates(subset = ['VAX_LOT'])\n", - " return manufacturerByBatchCodeTable.set_index('VAX_LOT')\n", - "\n", - "\n", - "class BatchCodeTableFactory:\n", - "\n", - " @staticmethod\n", - " def createBatchCodeTable(dataFrame : pd.DataFrame, manufacturer, dose):\n", - " dataFrame = DataFrameFilter().filterByCovid19(dataFrame)\n", - " dataFrame = DataFrameFilter().filterBy(dataFrame, manufacturer = manufacturer, dose = dose)\n", - " return BatchCodeTableHelper(dataFrame).createSevereEffectsBatchCodeTable()[['ADRs', 'DEATHS', 'DISABILITIES', 'LIFE THREATENING ILLNESSES']]\n", - "\n", - " # create table from https://www.howbadismybatch.com/combined.html\n", - " @staticmethod\n", - " def createSevereEffectsBatchCodeTable(dataFrame : pd.DataFrame, dose):\n", - " dataFrame = DataFrameFilter().filterByCovid19(dataFrame)\n", - " dataFrame = DataFrameFilter().filterBy(dataFrame, dose = dose)\n", - " return BatchCodeTableHelper(dataFrame).createSevereEffectsBatchCodeTable()\n" + " return manufacturerByBatchCodeTable.set_index('VAX_LOT')\n" ] }, { @@ -281,7 +278,6 @@ " dataFrame['VAX_DOSE_SERIES'].rename('Dose')\n", " ]))\n", "\n", - " # FK-TODO: DRY because it generates a subset of BatchCodeTableHelper.createSevereEffectsBatchCodeTable()\n", " @staticmethod\n", " def _getDoseTable(dataFrame):\n", " doseTable = SummationTableFactory.createSummationTable(\n",