refactoring

This commit is contained in:
frankknoll
2022-02-01 10:31:14 +01:00
parent 87ce4ac013
commit a97068a0ae

View File

@@ -129,43 +129,72 @@
" \n", " \n",
" @staticmethod\n", " @staticmethod\n",
" def createBatchCodeTable(df : pd.DataFrame):\n", " def createBatchCodeTable(df : pd.DataFrame):\n",
" batchCodeTableDict = {\n", " return BatchCodeTableFactory._asDataFrame(\n",
" 'ADRs': df['VAX_LOT'].value_counts(),\n", " {\n",
" 'DEATHS': BatchCodeTableFactory._filterDataFrame(df, 'DIED').value_counts(),\n", " 'ADRs': BatchCodeTableFactory._getADRs(df),\n",
" 'DISABILITIES': BatchCodeTableFactory._filterDataFrame(df, 'DISABLE').value_counts(),\n", " 'DEATHS': BatchCodeTableFactory._getDEATHS(df),\n",
" 'LIFE THREATENING ILLNESSES': BatchCodeTableFactory._filterDataFrame(df, 'L_THREAT').value_counts()\n", " 'DISABILITIES': BatchCodeTableFactory._getDISABILITIES(df),\n",
" }\n", " 'LIFE THREATENING ILLNESSES': BatchCodeTableFactory._getLIFE_THREATENING_ILLNESSES(df)\n",
" batchCodeTable = pd.concat(batchCodeTableDict, axis = 'columns')\n", " })\n",
" batchCodeTable.index.name = 'VAX_LOT'\n",
" return batchCodeTable.replace(to_replace = np.nan, value = 0)\n",
"\n", "\n",
" # create table from https://www.howbadismybatch.com/combined.html\n", " # create table from https://www.howbadismybatch.com/combined.html\n",
" # FK-TODO: DRY with createBatchCodeTable()\n",
" @staticmethod\n", " @staticmethod\n",
" def createSevereEffectsBatchCodeTable(df : pd.DataFrame):\n", " def createSevereEffectsBatchCodeTable(df : pd.DataFrame):\n",
" batchCodeTableDict = {\n", " return BatchCodeTableFactory._addCompanyColumn(\n",
" 'ADRs': df['VAX_LOT'].value_counts(),\n", " BatchCodeTableFactory._asDataFrame(\n",
" 'DEATHS': BatchCodeTableFactory._filterDataFrame(df, 'DIED').value_counts(),\n", " {\n",
" 'DISABILITIES': BatchCodeTableFactory._filterDataFrame(df, 'DISABLE').value_counts(),\n", " 'ADRs': BatchCodeTableFactory._getADRs(df),\n",
" 'LIFE THREATENING ILLNESSES': BatchCodeTableFactory._filterDataFrame(df, 'L_THREAT').value_counts(),\n", " 'DEATHS': BatchCodeTableFactory._getDEATHS(df),\n",
" 'HOSPITALISATIONS': BatchCodeTableFactory._filterDataFrame(df, 'HOSPITAL').value_counts(),\n", " 'DISABILITIES': BatchCodeTableFactory._getDISABILITIES(df),\n",
" 'EMERGENCY ROOM OR DOCTOR VISITS': BatchCodeTableFactory._filterDataFrame(df, 'ER_VISIT').value_counts()\n", " 'LIFE THREATENING ILLNESSES': BatchCodeTableFactory._getLIFE_THREATENING_ILLNESSES(df),\n",
" }\n", " 'HOSPITALISATIONS': BatchCodeTableFactory._getHOSPITALISATIONS(df),\n",
" batchCodeTable = pd.concat(batchCodeTableDict, axis = 'columns')\n", " 'EMERGENCY ROOM OR DOCTOR VISITS': BatchCodeTableFactory._getER_VISITs(df)\n",
" batchCodeTable.index.name = 'VAX_LOT'\n", " }),\n",
" # add Company column:\n", " BatchCodeTableFactory._createCompanyByBatchCodeTable(df))\n",
" batchCodeTable = pd.merge(\n", "\n",
" @staticmethod\n",
" def _getADRs(df):\n",
" return df['VAX_LOT'].value_counts()\n",
"\n",
" @staticmethod\n",
" def _getDEATHS(df):\n",
" return BatchCodeTableFactory._countValues(df, 'DIED')\n",
"\n",
" @staticmethod\n",
" def _getDISABILITIES(df):\n",
" return BatchCodeTableFactory._countValues(df, 'DISABLE')\n",
"\n",
" @staticmethod\n",
" def _getLIFE_THREATENING_ILLNESSES(df):\n",
" return BatchCodeTableFactory._countValues(df, 'L_THREAT')\n",
"\n",
" @staticmethod\n",
" def _getHOSPITALISATIONS(df):\n",
" return BatchCodeTableFactory._countValues(df, 'HOSPITAL')\n",
"\n",
" @staticmethod\n",
" def _getER_VISITs(df):\n",
" return BatchCodeTableFactory._countValues(df, 'ER_VISIT')\n",
"\n",
" @staticmethod\n",
" def _countValues(df, column):\n",
" return df[df[column] == 'Y']['VAX_LOT'].value_counts()\n",
"\n",
" @staticmethod\n",
" def _asDataFrame(dict):\n",
" dataFrame = pd.concat(dict, axis = 'columns')\n",
" dataFrame.index.name = 'VAX_LOT'\n",
" return dataFrame.replace(to_replace = np.nan, value = 0)\n",
"\n",
" @staticmethod\n",
" def _addCompanyColumn(batchCodeTable, companyByBatchCodeTable):\n",
" return pd.merge(\n",
" batchCodeTable,\n", " batchCodeTable,\n",
" BatchCodeTableFactory._createCompanyByBatchCodeTable(df),\n", " companyByBatchCodeTable,\n",
" how = 'left',\n", " how = 'left',\n",
" left_index = True,\n", " left_index = True,\n",
" right_index = True,\n", " right_index = True,\n",
" validate = 'one_to_one')\n", " validate = 'one_to_one')\n",
" return batchCodeTable.replace(to_replace = np.nan, value = 0)\n",
"\n",
" @staticmethod\n",
" def _filterDataFrame(df, col):\n",
" return df[df[col] == 'Y']['VAX_LOT']\n",
"\n", "\n",
" @staticmethod\n", " @staticmethod\n",
" def _createManufacturerByBatchCodeTable(df):\n", " def _createManufacturerByBatchCodeTable(df):\n",