updating html file with vaccines from table

This commit is contained in:
frankknoll
2023-10-10 10:30:26 +02:00
parent e457568ef6
commit 16b5d7a57f
4 changed files with 215 additions and 17 deletions

View File

@@ -0,0 +1,144 @@
<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
<!-- Meta, title, CSS, favicons, etc. -->
<meta charset="utf-8"/>
<meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<title>Symptoms caused by Vaccines</title>
<!-- Google tag (gtag.js) -->
<!-- <script async="" src="https://www.googletagmanager.com/gtag/js?id=G-ERHYDH4P64"></script>
<script>Claudia Goldin
window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments); }
gtag('js', new Date());
gtag('config', 'G-ERHYDH4P64');
</script> -->
<!-- Bootstrap -->
<link href="../gentelella/vendors/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet"/>
<link href="https://cdn.datatables.net/1.13.1/css/jquery.dataTables.css" rel="stylesheet" type="text/css"/>
<!-- Font Awesome -->
<link href="../gentelella/vendors/font-awesome/css/font-awesome.min.css" rel="stylesheet"/>
<!-- Custom Theme Style -->
<link href="../gentelella/build/css/custom.css" rel="stylesheet"/>
<link href="../forkMeOnGitHub.css" rel="stylesheet" type="text/css"/>
<script src="../Utils.js"></script>
<script src="../UIUtils.js"></script>
<script src="../DataTablesFilter.js"></script>
<script src="../NumberWithBarElementFactory.js"></script>
<script src="../GoogleAnalytics.js"></script>
<script src="../BatchCodeSelectInitializer.js"></script>
<script src="../HistoDescrsProvider.js"></script>
<script src="../HistogramTable.js"></script>
<script src="../AdverseReactionReportsChartView.js"></script>
<script src="../BatchCodeDetailsView.js"></script>
<script>
document.addEventListener(
"DOMContentLoaded",
event => {
BatchCodeSelectInitializer.initialize(
{
batchCodeSelectElement: $('#batchCodeSelect'),
batchCodeDetailsElement: document.querySelector("#batchCodeDetails")
}
);
});
</script>
</head>
<body class="nav-md">
<div class="container body">
<div class="main_container">
<!-- top navigation -->
<div class="top_nav">
</div>
<!-- top navigation -->
<!-- page content -->
<div class="right_col" role="main">
<div>
<div class="page-title">
<div class="title_left">
<h1>Symptoms caused by Vaccines</h1>
</div>
</div>
<div class="clearfix"></div>
<p>
<label>Check out your batch code:</label>
<select id="vaccineSelect" name="vaccine"><option disabled="" hidden="" selected="" value="">Select Vaccine</option><option value="6VAX-F">6VAX-F</option><option value="ADEN">ADEN</option><option value="ADEN_4_7">ADEN_4_7</option><option value="ANTH">ANTH</option><option value="BCG">BCG</option><option value="CEE">CEE</option><option value="CHOL">CHOL</option><option value="COVID19">COVID19</option><option value="COVID19-2">COVID19-2</option><option value="DF">DF</option><option value="DPIPV">DPIPV</option><option value="DPP">DPP</option><option value="DT">DT</option><option value="DTAP">DTAP</option><option value="DTAPH">DTAPH</option><option value="DTAPHEPBIP">DTAPHEPBIP</option><option value="DTAPIPV">DTAPIPV</option><option value="DTAPIPVHIB">DTAPIPVHIB</option><option value="DTIPV">DTIPV</option><option value="DTOX">DTOX</option><option value="DTP">DTP</option><option value="DTPHEP">DTPHEP</option><option value="DTPHIB">DTPHIB</option><option value="DTPIHI">DTPIHI</option><option value="DTPIPV">DTPIPV</option><option value="DTPPHIB">DTPPHIB</option><option value="DTPPVHBHPB">DTPPVHBHPB</option><option value="EBZR">EBZR</option><option value="FLU(H1N1)">FLU(H1N1)</option><option value="FLU3">FLU3</option><option value="FLU4">FLU4</option><option value="FLUA3">FLUA3</option><option value="FLUA4">FLUA4</option><option value="FLUC3">FLUC3</option><option value="FLUC4">FLUC4</option><option value="FLUN(H1N1)">FLUN(H1N1)</option><option value="FLUN3">FLUN3</option><option value="FLUN4">FLUN4</option><option value="FLUR3">FLUR3</option><option value="FLUR4">FLUR4</option><option value="FLUX">FLUX</option><option value="FLUX(H1N1)">FLUX(H1N1)</option><option value="H5N1">H5N1</option><option value="HBHEPB">HBHEPB</option><option value="HBPV">HBPV</option><option value="HEP">HEP</option><option value="HEPA">HEPA</option><option value="HEPAB">HEPAB</option><option value="HEPATYP">HEPATYP</option><option value="HIBV">HIBV</option><option value="HPV2">HPV2</option><option value="HPV4">HPV4</option><option value="HPV9">HPV9</option><option value="HPVX">HPVX</option><option value="IPV">IPV</option><option value="JEV">JEV</option><option value="JEV1">JEV1</option><option value="JEVX">JEVX</option><option value="LYME">LYME</option><option value="MEA">MEA</option><option value="MEN">MEN</option><option value="MENB">MENB</option><option value="MENHIB">MENHIB</option><option value="MER">MER</option><option value="MM">MM</option><option value="MMR">MMR</option><option value="MMRV">MMRV</option><option value="MNC">MNC</option><option value="MNQ">MNQ</option><option value="MNQHIB">MNQHIB</option><option value="MU">MU</option><option value="MUR">MUR</option><option value="OPV">OPV</option><option value="PER">PER</option><option value="PLAGUE">PLAGUE</option><option value="PNC">PNC</option><option value="PNC10">PNC10</option><option value="PNC13">PNC13</option><option value="PNC15">PNC15</option><option value="PNC20">PNC20</option><option value="PPV">PPV</option><option value="RAB">RAB</option><option value="RUB">RUB</option><option value="RV">RV</option><option value="RV1">RV1</option><option value="RV5">RV5</option><option value="RVX">RVX</option><option value="SMALL">SMALL</option><option value="SMALLMNK">SMALLMNK</option><option value="SSEV">SSEV</option><option value="TBE">TBE</option><option value="TD">TD</option><option value="TDAP">TDAP</option><option value="TDAPIPV">TDAPIPV</option><option value="TTOX">TTOX</option><option value="TYP">TYP</option><option value="UNK">UNK</option><option value="VARCEL">VARCEL</option><option value="VARZOS">VARZOS</option><option value="YF">YF</option></select>
or view a <a href="batchCodes.html" target="_blank">table of all batch codes <i aria-hidden="true" class="fa fa-external-link"></i>
</a>
</p>
<div class="row" id="batchCodeDetails">
<div class="col-xs-12 col-sm-6">
<div class="x_panel">
<div class="x_title">
<h3>Outcomes of Adverse Events</h3>
<div class="clearfix"></div>
</div>
<div class="x_content">
<canvas id="adverseReactionReportsChartView"></canvas>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-6">
<div class="x_panel">
<div class="x_title">
<h3>Frequencies of Reported Symptoms</h3>
<div class="clearfix"></div>
</div>
<div class="x_content">
<table class="display" id="histogramTable">
<thead>
<tr>
<th>Symptom</th>
<th>Frequency</th>
</tr>
</thead>
</table>
</div>
</div>
</div>
</div>
<div class="clearfix"></div>
</div>
</div>
</div>
<!-- page content -->
<!-- footer content -->
<footer>
<dl>
<dt>Data Source:</dt>
<dd><a href="https://vaers.hhs.gov/data/datasets.html" target="_blank">Vaccine Adverse Event Reporting System
(VAERS) <i aria-hidden="true" class="fa fa-external-link"></i>
</a></dd>
<dt>Last updated:</dt>
<dd id="last_updated">October 06, 2023</dd>
</dl>
<span id="forkongithub"><a href="https://github.com/KnollFrank/HowBadIsMyBatch" target="_blank">Fork me on
GitHub <i aria-hidden="true" class="fa fa-external-link"></i>
</a></span>
<div class="clearfix"></div>
</footer>
</div>
<template id="template-number-with-bar">
<div>
<div class="number"></div>
<div class="bar"></div>
</div>
</template>
<!-- jQuery -->
<script src="../gentelella/vendors/jquery/dist/jquery.min.js"></script>
<!-- Bootstrap -->
<script src="../gentelella/vendors/bootstrap/dist/js/bootstrap.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet"/>
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.2.0/dist/chart.umd.min.js"></script>
<script charset="utf8" src="https://cdn.datatables.net/1.13.1/js/jquery.dataTables.min.js" type="text/javascript"></script>
<script src=" https://cdn.jsdelivr.net/npm/chartjs-plugin-datalabels@2.2.0/dist/chartjs-plugin-datalabels.min.js "></script>
<!-- FastClick -->
<script src="../gentelella/vendors/fastclick/lib/fastclick.js"></script>
<!-- Custom Theme Scripts -->
<script src="../gentelella/build/js/custom.js"></script>
</body>
</html>

View File

@@ -205,18 +205,6 @@
"countryCountsByBatchcode"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "0d755bc8",
"metadata": {},
"outputs": [],
"source": [
"# df = countryCountsByBatchcode.loc[(slice(None), 'Germany'), :][['COUNTRY_COUNT_BY_VAX_LOT Clicked']].sort_values(by = 'COUNTRY_COUNT_BY_VAX_LOT Clicked', ascending = False)\n",
"symptomByVaccineInPercent = countryCountsByBatchcode.loc[(slice(None), 'Germany'), :].sort_values(by = 'COUNTRY_COUNT_BY_VAX_LOT Clicked', ascending = False)\n",
"symptomByVaccineInPercent"
]
},
{
"cell_type": "code",
"execution_count": null,
@@ -437,6 +425,17 @@
"# Symptoms caused by Vaccines\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "5cd9935f",
"metadata": {},
"outputs": [],
"source": [
"from SymptomsCausedByVaccines.HtmlUpdater import updateHtmlFile\n",
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": null,
@@ -444,13 +443,11 @@
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"\n",
"symptomByVaccineInPercent = pd.read_csv(\n",
"symptomByVaccine = pd.read_csv(\n",
" 'data/ratings-1990-2022.csv',\n",
" index_col = 'VAX_TYPE',\n",
" usecols = lambda columnName: columnName != 'Unnamed: 0')\n",
"symptomByVaccineInPercent"
"symptomByVaccine"
]
},
{
@@ -460,7 +457,20 @@
"metadata": {},
"outputs": [],
"source": [
"symptomByVaccineInPercent.loc['COVID19'].sum()"
"symptomByVaccine.loc['COVID19'].sum()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "803dfbef",
"metadata": {},
"outputs": [],
"source": [
"updateHtmlFile(\n",
" symptomByVaccine,\n",
" htmlFile = \"../docs/SymptomsCausedByVaccines/index.html\",\n",
" lastUpdated = dateProvider.getLastUpdatedDataSource())"
]
}
],

View File

@@ -0,0 +1,34 @@
from bs4 import BeautifulSoup
from HtmlTransformerUtil import HtmlTransformerUtil
from DateProvider import DateProvider
from SymptomsCausedByVaccines.Analyzer import Analyzer
from SymptomsCausedByVaccines.HtmlUtils import getVaccineOptions
from SymptomsCausedByVaccines.OptionsSetter import OptionsSetter
def updateHtmlFile(symptomByVaccine, htmlFile, lastUpdated):
vaccineOptions = getVaccineOptions(Analyzer(symptomByVaccine).getVaccines())
_saveVaccineOptions(vaccineOptions, htmlFile)
saveLastUpdated2HtmlFile(lastUpdated, htmlFile)
def _saveVaccineOptions(vaccineOptions, htmlFile):
HtmlTransformerUtil().applySoupTransformerToFile(
file=htmlFile,
soupTransformer = lambda soup:
BeautifulSoup(
OptionsSetter().setOptions(
html = str(soup),
selectElementId = 'vaccineSelect',
options = vaccineOptions),
'lxml'))
# FK-TODO: DRY with src/BatchCodeTableHtmlUpdater.py
def saveLastUpdated2HtmlFile(lastUpdated, htmlFile):
def setLastUpdated(soup):
soup.find(id="last_updated").string.replace_with(
lastUpdated.strftime(DateProvider.DATE_FORMAT))
return soup
HtmlTransformerUtil().applySoupTransformerToFile(
file = htmlFile,
soupTransformer = setLastUpdated)

View File

@@ -0,0 +1,10 @@
def getVaccineOptions(vaccines):
return ['<option hidden disabled selected value>Select Vaccine</option>'] + _getVaccineOptions(vaccines)
def _getVaccineOptions(vaccines):
return [_getVaccineOption(vaccine) for vaccine in vaccines]
def _getVaccineOption(vaccine):
return '<option value="{vaccine}">{vaccine}</option>'.format(vaccine=vaccine)