refactoring
This commit is contained in:
@@ -125,72 +125,61 @@
|
|||||||
"source": [
|
"source": [
|
||||||
"import pandas as pd\n",
|
"import pandas as pd\n",
|
||||||
"\n",
|
"\n",
|
||||||
"class BatchCodeTableFactory:\n",
|
"class BatchCodeTableHelper:\n",
|
||||||
"\n",
|
" \n",
|
||||||
" def __init__(self, dataFrame : pd.DataFrame):\n",
|
" def __init__(self, dataFrame : pd.DataFrame):\n",
|
||||||
" self.dataFrame = dataFrame \n",
|
" self.dataFrame = dataFrame \n",
|
||||||
"\n",
|
"\n",
|
||||||
" def createBatchCodeTable(self, manufacturer, dose):\n",
|
" def createBatchCodeTable(self):\n",
|
||||||
" df = DataFrameFilter(self.dataFrame).filterBy(manufacturer = manufacturer, dose = dose)\n",
|
" return self._asDataFrame(\n",
|
||||||
" return BatchCodeTableFactory._asDataFrame(\n",
|
|
||||||
" {\n",
|
" {\n",
|
||||||
" 'ADRs': BatchCodeTableFactory._getADRs(df),\n",
|
" 'ADRs': self._getADRs(),\n",
|
||||||
" 'DEATHS': BatchCodeTableFactory._getDEATHS(df),\n",
|
" 'DEATHS': self._getDEATHS(),\n",
|
||||||
" 'DISABILITIES': BatchCodeTableFactory._getDISABILITIES(df),\n",
|
" 'DISABILITIES': self._getDISABILITIES(),\n",
|
||||||
" 'LIFE THREATENING ILLNESSES': BatchCodeTableFactory._getLIFE_THREATENING_ILLNESSES(df)\n",
|
" 'LIFE THREATENING ILLNESSES': self._getLIFE_THREATENING_ILLNESSES()\n",
|
||||||
" })\n",
|
" })\n",
|
||||||
"\n",
|
"\n",
|
||||||
" # create table from https://www.howbadismybatch.com/combined.html\n",
|
" # create table from https://www.howbadismybatch.com/combined.html\n",
|
||||||
" def createSevereEffectsBatchCodeTable(self, dose):\n",
|
" def createSevereEffectsBatchCodeTable(self):\n",
|
||||||
" df = DataFrameFilter(self.dataFrame).filterForSevereEffects(dose)\n",
|
" return self._addCompanyColumn(\n",
|
||||||
" return BatchCodeTableFactory._addCompanyColumn(\n",
|
" self._asDataFrame(\n",
|
||||||
" BatchCodeTableFactory._asDataFrame(\n",
|
|
||||||
" {\n",
|
" {\n",
|
||||||
" 'ADRs': BatchCodeTableFactory._getADRs(df),\n",
|
" 'ADRs': self._getADRs(),\n",
|
||||||
" 'DEATHS': BatchCodeTableFactory._getDEATHS(df),\n",
|
" 'DEATHS': self._getDEATHS(),\n",
|
||||||
" 'DISABILITIES': BatchCodeTableFactory._getDISABILITIES(df),\n",
|
" 'DISABILITIES': self._getDISABILITIES(),\n",
|
||||||
" 'LIFE THREATENING ILLNESSES': BatchCodeTableFactory._getLIFE_THREATENING_ILLNESSES(df),\n",
|
" 'LIFE THREATENING ILLNESSES': self._getLIFE_THREATENING_ILLNESSES(),\n",
|
||||||
" 'HOSPITALISATIONS': BatchCodeTableFactory._getHOSPITALISATIONS(df),\n",
|
" 'HOSPITALISATIONS': self._getHOSPITALISATIONS(),\n",
|
||||||
" 'EMERGENCY ROOM OR DOCTOR VISITS': BatchCodeTableFactory._getER_VISITs(df)\n",
|
" 'EMERGENCY ROOM OR DOCTOR VISITS': self._getER_VISITs()\n",
|
||||||
" }),\n",
|
" }),\n",
|
||||||
" BatchCodeTableFactory._createCompanyByBatchCodeTable(df))\n",
|
" self._createCompanyByBatchCodeTable())\n",
|
||||||
"\n",
|
"\n",
|
||||||
" @staticmethod\n",
|
" def _getADRs(self):\n",
|
||||||
" def _getADRs(df):\n",
|
" return self.dataFrame['VAX_LOT'].value_counts()\n",
|
||||||
" return df['VAX_LOT'].value_counts()\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
" @staticmethod\n",
|
" def _getDEATHS(self):\n",
|
||||||
" def _getDEATHS(df):\n",
|
" return self._countValues('DIED')\n",
|
||||||
" return BatchCodeTableFactory._countValues(df, 'DIED')\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
" @staticmethod\n",
|
" def _getDISABILITIES(self):\n",
|
||||||
" def _getDISABILITIES(df):\n",
|
" return self._countValues('DISABLE')\n",
|
||||||
" return BatchCodeTableFactory._countValues(df, 'DISABLE')\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
" @staticmethod\n",
|
" def _getLIFE_THREATENING_ILLNESSES(self):\n",
|
||||||
" def _getLIFE_THREATENING_ILLNESSES(df):\n",
|
" return self._countValues('L_THREAT')\n",
|
||||||
" return BatchCodeTableFactory._countValues(df, 'L_THREAT')\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
" @staticmethod\n",
|
" def _getHOSPITALISATIONS(self):\n",
|
||||||
" def _getHOSPITALISATIONS(df):\n",
|
" return self._countValues('HOSPITAL')\n",
|
||||||
" return BatchCodeTableFactory._countValues(df, 'HOSPITAL')\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
" @staticmethod\n",
|
" def _getER_VISITs(self):\n",
|
||||||
" def _getER_VISITs(df):\n",
|
" return self._countValues('ER_VISIT')\n",
|
||||||
" return BatchCodeTableFactory._countValues(df, 'ER_VISIT')\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
" @staticmethod\n",
|
" def _countValues(self, column):\n",
|
||||||
" def _countValues(df, column):\n",
|
" return self.dataFrame[self.dataFrame[column] == 'Y']['VAX_LOT'].value_counts()\n",
|
||||||
" return df[df[column] == 'Y']['VAX_LOT'].value_counts()\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
" @staticmethod\n",
|
" def _asDataFrame(self, dict):\n",
|
||||||
" def _asDataFrame(dict):\n",
|
|
||||||
" dataFrame = pd.concat(dict, axis = 'columns')\n",
|
" dataFrame = pd.concat(dict, axis = 'columns')\n",
|
||||||
" dataFrame.index.name = 'VAX_LOT'\n",
|
" dataFrame.index.name = 'VAX_LOT'\n",
|
||||||
" return dataFrame.replace(to_replace = np.nan, value = 0)\n",
|
" return dataFrame.replace(to_replace = np.nan, value = 0)\n",
|
||||||
"\n",
|
"\n",
|
||||||
" @staticmethod\n",
|
" def _addCompanyColumn(self, batchCodeTable, companyByBatchCodeTable):\n",
|
||||||
" def _addCompanyColumn(batchCodeTable, companyByBatchCodeTable):\n",
|
|
||||||
" return pd.merge(\n",
|
" return pd.merge(\n",
|
||||||
" batchCodeTable,\n",
|
" batchCodeTable,\n",
|
||||||
" companyByBatchCodeTable,\n",
|
" companyByBatchCodeTable,\n",
|
||||||
@@ -199,15 +188,26 @@
|
|||||||
" right_index = True,\n",
|
" right_index = True,\n",
|
||||||
" validate = 'one_to_one')\n",
|
" validate = 'one_to_one')\n",
|
||||||
"\n",
|
"\n",
|
||||||
" @staticmethod\n",
|
" def _createCompanyByBatchCodeTable(self):\n",
|
||||||
" def _createManufacturerByBatchCodeTable(df):\n",
|
" return self._createManufacturerByBatchCodeTable().rename(columns = {\"VAX_MANU\": \"COMPANY\"})\n",
|
||||||
" manufacturerByBatchCodeTable = df[['VAX_LOT', 'VAX_MANU']]\n",
|
"\n",
|
||||||
|
" def _createManufacturerByBatchCodeTable(self):\n",
|
||||||
|
" manufacturerByBatchCodeTable = self.dataFrame[['VAX_LOT', 'VAX_MANU']]\n",
|
||||||
" manufacturerByBatchCodeTable = manufacturerByBatchCodeTable.drop_duplicates(subset = ['VAX_LOT'])\n",
|
" manufacturerByBatchCodeTable = manufacturerByBatchCodeTable.drop_duplicates(subset = ['VAX_LOT'])\n",
|
||||||
" return manufacturerByBatchCodeTable.set_index('VAX_LOT')\n",
|
" return manufacturerByBatchCodeTable.set_index('VAX_LOT')\n",
|
||||||
"\n",
|
"\n",
|
||||||
|
"class BatchCodeTableFactory:\n",
|
||||||
|
"\n",
|
||||||
" @staticmethod\n",
|
" @staticmethod\n",
|
||||||
" def _createCompanyByBatchCodeTable(df):\n",
|
" def createBatchCodeTable(dataFrame : pd.DataFrame, manufacturer, dose):\n",
|
||||||
" return BatchCodeTableFactory._createManufacturerByBatchCodeTable(df).rename(columns = {\"VAX_MANU\": \"COMPANY\"})\n"
|
" filteredDataFrame = DataFrameFilter(dataFrame).filterBy(manufacturer = manufacturer, dose = dose)\n",
|
||||||
|
" return BatchCodeTableHelper(filteredDataFrame).createBatchCodeTable()\n",
|
||||||
|
"\n",
|
||||||
|
" # create table from https://www.howbadismybatch.com/combined.html\n",
|
||||||
|
" @staticmethod\n",
|
||||||
|
" def createSevereEffectsBatchCodeTable(dataFrame : pd.DataFrame, dose):\n",
|
||||||
|
" severeEffectsDataFrame = DataFrameFilter(dataFrame).filterForSevereEffects(dose)\n",
|
||||||
|
" return BatchCodeTableHelper(severeEffectsDataFrame).createSevereEffectsBatchCodeTable()\n"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -411,30 +411,29 @@
|
|||||||
"\n",
|
"\n",
|
||||||
" def test_createSevereEffectsBatchCodeTable(self):\n",
|
" def test_createSevereEffectsBatchCodeTable(self):\n",
|
||||||
" # Given\n",
|
" # Given\n",
|
||||||
" batchCodeTableFactory = BatchCodeTableFactory(\n",
|
" dataFrame = VaersDescr2DataFrameConverter.createDataFrameFromDescrs(\n",
|
||||||
" VaersDescr2DataFrameConverter.createDataFrameFromDescrs(\n",
|
" [\n",
|
||||||
" [\n",
|
" {\n",
|
||||||
" {\n",
|
" 'VAERSDATA': self.createDataFrame(\n",
|
||||||
" 'VAERSDATA': self.createDataFrame(\n",
|
" columns = ['DIED', 'L_THREAT', 'DISABLE', 'HOSPITAL', 'ER_VISIT'],\n",
|
||||||
" columns = ['DIED', 'L_THREAT', 'DISABLE', 'HOSPITAL', 'ER_VISIT'],\n",
|
" data = [ ['Y', 'Y', np.NaN, 'Y', 'Y'],\n",
|
||||||
" data = [ ['Y', 'Y', np.NaN, 'Y', 'Y'],\n",
|
" [np.NaN, np.NaN, 'Y', np.NaN, 'Y']],\n",
|
||||||
" [np.NaN, np.NaN, 'Y', np.NaN, 'Y']],\n",
|
" index = [\n",
|
||||||
" index = [\n",
|
" \"0916600\",\n",
|
||||||
" \"0916600\",\n",
|
" \"0916601\"]),\n",
|
||||||
" \"0916601\"]),\n",
|
" 'VAERSVAX': self.createDataFrame(\n",
|
||||||
" 'VAERSVAX': self.createDataFrame(\n",
|
" columns = ['VAX_TYPE', 'VAX_MANU', 'VAX_LOT', 'VAX_DOSE_SERIES'],\n",
|
||||||
" columns = ['VAX_TYPE', 'VAX_MANU', 'VAX_LOT', 'VAX_DOSE_SERIES'],\n",
|
" data = [ ['COVID19', 'MODERNA', '037K20A', '1'],\n",
|
||||||
" data = [ ['COVID19', 'MODERNA', '037K20A', '1'],\n",
|
" ['COVID19', 'PFIZER\\BIONTECH', '025L20A', '1']],\n",
|
||||||
" ['COVID19', 'PFIZER\\BIONTECH', '025L20A', '1']],\n",
|
" index = [\n",
|
||||||
" index = [\n",
|
" \"0916600\",\n",
|
||||||
" \"0916600\",\n",
|
" \"0916601\"],\n",
|
||||||
" \"0916601\"],\n",
|
" dtypes = {'VAX_DOSE_SERIES': \"string\"})\n",
|
||||||
" dtypes = {'VAX_DOSE_SERIES': \"string\"})\n",
|
" }\n",
|
||||||
" }\n",
|
" ])\n",
|
||||||
" ]))\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
" # When\n",
|
" # When\n",
|
||||||
" batchCodeTable = batchCodeTableFactory.createSevereEffectsBatchCodeTable('1')\n",
|
" batchCodeTable = BatchCodeTableFactory.createSevereEffectsBatchCodeTable(dataFrame, '1')\n",
|
||||||
"\n",
|
"\n",
|
||||||
" # Then\n",
|
" # Then\n",
|
||||||
" batchCodeTableExpected = pd.DataFrame(\n",
|
" batchCodeTableExpected = pd.DataFrame(\n",
|
||||||
@@ -496,11 +495,8 @@
|
|||||||
" self._test_createBatchCodeTable(dataFrame, \"MODERNA\", '1')\n",
|
" self._test_createBatchCodeTable(dataFrame, \"MODERNA\", '1')\n",
|
||||||
"\n",
|
"\n",
|
||||||
" def _test_createBatchCodeTable(self, dataFrame, manufacturer, dose):\n",
|
" def _test_createBatchCodeTable(self, dataFrame, manufacturer, dose):\n",
|
||||||
" # Given\n",
|
|
||||||
" batchCodeTableFactory = BatchCodeTableFactory(dataFrame)\n",
|
|
||||||
"\n",
|
|
||||||
" # When\n",
|
" # When\n",
|
||||||
" batchCodeTable = batchCodeTableFactory.createBatchCodeTable(manufacturer, dose)\n",
|
" batchCodeTable = BatchCodeTableFactory.createBatchCodeTable(dataFrame, manufacturer, dose)\n",
|
||||||
"\n",
|
"\n",
|
||||||
" # Then\n",
|
" # Then\n",
|
||||||
" batchCodeTableExpected = pd.DataFrame(\n",
|
" batchCodeTableExpected = pd.DataFrame(\n",
|
||||||
@@ -537,8 +533,7 @@
|
|||||||
"def saveBatchCodeTable(manufacturer, excelFile):\n",
|
"def saveBatchCodeTable(manufacturer, excelFile):\n",
|
||||||
" vaersDescrs = VaersDescrReader(\"VAERS\").readAllVaersDescrs()\n",
|
" vaersDescrs = VaersDescrReader(\"VAERS\").readAllVaersDescrs()\n",
|
||||||
" dataFrame = VaersDescr2DataFrameConverter.createDataFrameFromDescrs(vaersDescrs)\n",
|
" dataFrame = VaersDescr2DataFrameConverter.createDataFrameFromDescrs(vaersDescrs)\n",
|
||||||
" batchCodeTableFactory = BatchCodeTableFactory(dataFrame)\n",
|
" batchCodeTable = BatchCodeTableFactory.createBatchCodeTable(dataFrame, manufacturer = manufacturer, dose = '1')\n",
|
||||||
" batchCodeTable = batchCodeTableFactory.createBatchCodeTable(manufacturer = manufacturer, dose = '1')\n",
|
|
||||||
" display(manufacturer, batchCodeTable)\n",
|
" display(manufacturer, batchCodeTable)\n",
|
||||||
" batchCodeTable.to_excel(excelFile)"
|
" batchCodeTable.to_excel(excelFile)"
|
||||||
]
|
]
|
||||||
@@ -565,8 +560,7 @@
|
|||||||
"def saveSevereEffectsBatchCodeTable(excelFile):\n",
|
"def saveSevereEffectsBatchCodeTable(excelFile):\n",
|
||||||
" vaersDescrs = VaersDescrReader(\"VAERS\").readAllVaersDescrs()\n",
|
" vaersDescrs = VaersDescrReader(\"VAERS\").readAllVaersDescrs()\n",
|
||||||
" dataFrame = VaersDescr2DataFrameConverter.createDataFrameFromDescrs(vaersDescrs)\n",
|
" dataFrame = VaersDescr2DataFrameConverter.createDataFrameFromDescrs(vaersDescrs)\n",
|
||||||
" batchCodeTableFactory = BatchCodeTableFactory(dataFrame)\n",
|
" severeEffectsBatchCodeTable = BatchCodeTableFactory.createSevereEffectsBatchCodeTable(dataFrame, dose = '1')\n",
|
||||||
" severeEffectsBatchCodeTable = batchCodeTableFactory.createSevereEffectsBatchCodeTable(dose = '1')\n",
|
|
||||||
" display('severeEffectsBatchCodeTable', severeEffectsBatchCodeTable)\n",
|
" display('severeEffectsBatchCodeTable', severeEffectsBatchCodeTable)\n",
|
||||||
" severeEffectsBatchCodeTable.to_excel(excelFile)"
|
" severeEffectsBatchCodeTable.to_excel(excelFile)"
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user