From 0fd241cc399e0e665d0a7614e1a75c7abdb20b42 Mon Sep 17 00:00:00 2001
From: thomaswoehlke <thomas.woehlke@gmail.com>
Date: Sat, 23 Jan 2021 17:00:47 +0100
Subject: [PATCH] Vaccination

---
 app.py                                        |  9 ++--
 data/germany_vaccinations_timeseries_v2.tsv   | 52 ++++++++++---------
 .../vaccination/vaccination_service.py        | 26 +++++-----
 server_mq.py                                  | 17 +++++-
 4 files changed, 60 insertions(+), 44 deletions(-)

diff --git a/app.py b/app.py
index 260f1a35..888cc52a 100644
--- a/app.py
+++ b/app.py
@@ -15,6 +15,7 @@ from server_mq import who_run_update_task, who_update_short_task, who_update_ini
 from server_mq import alive_message_task
 from server_mq import europe_update_initial_task
 from server_mq import vaccination_update_initial_task
+from server_mq import admin_database_drop_create_task
 
 drop_and_create_data_again = True
 
@@ -573,12 +574,8 @@ def url_admin_database_drop():
         who_service.run_download()
         flash("vaccination_service.run_download started")
         vaccination_service.run_download()
-        flash("europe_update_initial_task async started")
-        flash("who_update_initial_task async started")
-        flash("vaccination_update_initial_task async started")
-        europe_update_initial_task.apply_async()
-        who_update_initial_task.apply_async()
-        vaccination_update_initial_task.apply_async()
+        flash("admin_database_drop_create_task async started")
+        admin_database_drop_create_task.apply_async()
     app.logger.info("url_admin_database_drop [done]")
     return redirect(url_for('url_admin_tasks'))
 
diff --git a/data/germany_vaccinations_timeseries_v2.tsv b/data/germany_vaccinations_timeseries_v2.tsv
index 242bb39f..50e178f5 100644
--- a/data/germany_vaccinations_timeseries_v2.tsv
+++ b/data/germany_vaccinations_timeseries_v2.tsv
@@ -1,24 +1,28 @@
-date	dosen_kumulativ	dosen_differenz_zum_vortag	dosen_biontech_kumulativ	dosen_moderna_kumulativ	personen_erst_kumulativ	personen_voll_kumulativ	impf_quote_erst	impf_quote_voll	indikation_alter_dosen	indikation_beruf_dosen	indikation_medizinisch_dosen	indikation_pflegeheim_dosen	indikation_alter_erst	indikation_beruf_erst	indikation_medizinisch_erst	indikation_pflegeheim_erst	indikation_alter_voll	indikation_beruf_voll	indikation_medizinisch_voll	indikation_pflegeheim_voll										
-2020-12-27	24179	0	24179	0	24179	0	0.00029	0.00000	5891	8178	976	13584	5891	8178	976	13584	0	0	0	0										
-2020-12-28	43726	19547	43726	0	43726	0	0.00053	0.00000	12523	15574	1686	23354	12523	15574	1686	23354	0	0	0	0										
-2020-12-29	86531	42805	86531	0	86531	0	0.00104	0.00000	21630	37283	2725	40245	21630	37283	2725	40245	0	0	0	0										
-2020-12-30	143768	57237	143768	0	143768	0	0.00173	0.00000	32263	68330	3943	61490	32263	68330	3943	61490	0	0	0	0										
-2020-12-31	181629	37861	181629	0	181629	0	0.00218	0.00000	40306	86774	5487	76865	40306	86774	5487	76865	0	0	0	0										
-2021-01-01	212205	30576	212205	0	212205	0	0.00255	0.00000	47947	98956	6409	91734	47947	98956	6409	91734	0	0	0	0										
-2021-01-02	256963	44758	256963	0	256963	0	0.00309	0.00000	57572	120155	7467	110570	57572	120155	7467	110570	0	0	0	0										
-2021-01-03	281508	24545	281508	0	281508	0	0.00338	0.00000	64309	130734	8150	121462	64309	130734	8150	121462	0	0	0	0										
-2021-01-04	330016	48508	330016	0	330016	0	0.00397	0.00000	75556	155413	10482	137731	75556	155413	10482	137731	0	0	0	0										
-2021-01-05	380817	50801	380817	0	380817	0	0.00458	0.00000	87330	181726	12627	155645	87330	181726	12627	155645	0	0	0	0										
-2021-01-06	436540	55723	436540	0	436540	0	0.00525	0.00000	97479	210848	15223	175734	97479	210848	15223	175734	0	0	0	0										
-2021-01-07	493650	57110	493650	0	493650	0	0.00594	0.00000	111827	240025	17922	193472	111827	240025	17922	193472	0	0	0	0										
-2021-01-08	551325	57675	551325	0	551325	0	0.00663	0.00000	124977	269829	20583	212622	124977	269829	20583	212622	0	0	0	0										
-2021-01-09	604775	53450	604775	0	604775	0	0.00727	0.00000	138513	292637	22106	234466	138513	292637	22106	234466	0	0	0	0										
-2021-01-10	636972	32197	636972	0	636972	0	0.00766	0.00000	148981	306273	23059	246201	148981	306273	23059	246201	0	0	0	0										
-2021-01-11	702552	65580	702552	0	702552	0	0.00845	0.00000	168970	337618	25747	266395	168970	337618	25747	266395	0	0	0	0										
-2021-01-12	782126	79574	782126	0	782126	0	0.00940	0.00000	190111	378649	28738	289894	190111	378649	28738	289894	0	0	0	0										
-2021-01-13	875514	93388	875192	322	875514	0	0.01053	0.00000	211878	427187	30372	315929	211878	427187	30372	315929	0	0	0	0										
-2021-01-14	973784	98270	970407	3377	973784	0	0.01171	0.00000	233588	476087	31872	346075	233588	476087	31872	346075	0	0	0	0										
-2021-01-15	1062660	88876	1055282	7378	1062545	115	0.01278	0.00000	257103	520179	34251	371290	257103	520160	34251	371254	0	19	0	36										
-2021-01-16	1116813	54153	1107679	9134	1116357	456	0.01342	0.00001	272722	543186	35530	388392	272722	543134	35530	388278	0	52	0	114										
-2021-01-17	1157743	40930	1147194	10549	1146254	11489	0.01378	0.00014	283437	559748	36721	402176	280481	556578	36352	396419	2956	3170	369	5757										
-2021-01-18	1220284	62541	1207954	12330	1195543	24741	0.01438	0.00030	305468	585039	38117	418626	299576	576794	37687	407835	5892	8245	430	10791				
+date	dosen_kumulativ	dosen_differenz_zum_vortag	dosen_biontech_kumulativ	dosen_moderna_kumulativ	personen_erst_kumulativ	personen_voll_kumulativ	impf_quote_erst	impf_quote_voll	indikation_alter_dosen	indikation_beruf_dosen	indikation_medizinisch_dosen	indikation_pflegeheim_dosen	indikation_alter_erst	indikation_beruf_erst	indikation_medizinisch_erst	indikation_pflegeheim_erst	indikation_alter_voll	indikation_beruf_voll	indikation_medizinisch_voll	indikation_pflegeheim_voll
+2020-12-27	24256	24256	24256	0	24256	0	0.00029	0.00000	6114	8238	877	13493	6114	8238	877	13493	0	0	0	0
+2020-12-28	43905	19649	43905	0	43905	0	0.00053	0.00000	12980	15463	1622	23294	12980	15463	1622	23294	0	0	0	0
+2020-12-29	86981	43076	86981	0	86981	0	0.00105	0.00000	22393	36876	2661	40452	22393	36876	2661	40452	0	0	0	0
+2020-12-30	144421	57440	144421	0	144421	0	0.00174	0.00000	33477	67667	3918	61679	33477	67667	3918	61679	0	0	0	0
+2020-12-31	182427	38006	182427	0	182427	0	0.00219	0.00000	41637	86182	5402	77086	41637	86182	5402	77086	0	0	0	0
+2021-01-01	213023	30596	213023	0	213023	0	0.00256	0.00000	49331	98437	6362	91825	49331	98437	6362	91825	0	0	0	0
+2021-01-02	257920	44897	257920	0	257920	0	0.00310	0.00000	59318	119388	7403	110722	59318	119388	7403	110722	0	0	0	0
+2021-01-03	282450	24530	282450	0	282450	0	0.00340	0.00000	66210	129823	8103	121545	66210	129823	8103	121545	0	0	0	0
+2021-01-04	331080	48630	331080	0	331080	0	0.00398	0.00000	78664	153812	10425	137430	78664	153812	10425	137430	0	0	0	0
+2021-01-05	382086	51006	382086	0	382086	0	0.00459	0.00000	92388	177809	13132	155384	92388	177809	13132	155384	0	0	0	0
+2021-01-06	438354	56268	438354	0	438354	0	0.00527	0.00000	104772	204934	16035	175580	104772	204934	16035	175580	0	0	0	0
+2021-01-07	496204	57850	496204	0	496204	0	0.00597	0.00000	121675	231486	19052	194012	121675	231486	19052	194012	0	0	0	0
+2021-01-08	554232	58028	554232	0	554232	0	0.00666	0.00000	136792	258787	22218	213632	136792	258787	22218	213632	0	0	0	0
+2021-01-09	607874	53642	607874	0	607874	0	0.00731	0.00000	151137	280356	23735	236133	151137	280356	23735	236133	0	0	0	0
+2021-01-10	640337	32463	640337	0	640337	0	0.00770	0.00000	161768	293787	24765	248098	161768	293787	24765	248098	0	0	0	0
+2021-01-11	706205	65868	706205	0	706205	0	0.00849	0.00000	183730	321246	27969	269979	183730	321246	27969	269979	0	0	0	0
+2021-01-12	786323	80118	786323	0	786323	0	0.00945	0.00000	207145	359019	31702	294265	207145	359019	31702	294265	0	0	0	0
+2021-01-13	880221	93898	879532	689	880221	0	0.01058	0.00000	230597	403991	33804	322197	230597	403991	33804	322197	0	0	0	0
+2021-01-14	978830	98609	975505	4684	978784	46	0.01177	0.00000	254201	448510	35929	354458	254200	448509	35929	354457	1	1	0	1
+2021-01-15	1069381	90551	1061220	9520	1069117	264	0.01286	0.00000	279630	490106	38231	381974	279628	490086	38231	381934	2	20	0	40
+2021-01-16	1124280	54899	1114269	11370	1123548	732	0.01351	0.00001	295724	512753	39670	399490	295719	512698	39670	399372	5	55	0	118
+2021-01-17	1169306	45026	1157880	12785	1154115	15191	0.01388	0.00018	307433	530983	40438	414535	303698	526311	40146	408100	3735	4672	292	6435
+2021-01-18	1237259	67953	1223892	14726	1205919	31340	0.01450	0.00038	331660	557508	42243	432560	323875	546885	41785	420487	7785	10623	458	12073
+2021-01-19	1321216	83957	1306374	16201	1262754	58462	0.01518	0.00070	359502	590538	44749	455695	346145	569257	43883	435846	13357	21281	866	19849
+2021-01-20	1439168	117952	1423197	17319	1334041	105127	0.01604	0.00126	389636	638228	47834	490809	369880	597936	46453	457000	19756	40292	1381	33809
+2021-01-21	1526041	86873	1508969	18416	1390052	135989	0.01671	0.00164	422935	674371	52442	519875	393711	619938	48808	473224	29224	54433	3634	46651
+2021-01-22	1632777	106736	1614470	19651	1469353	163424	0.01767	0.00197	456933	720183	55165	557621	419138	653041	50924	497963	37795	67142	4241	59658
diff --git a/org/woehlke/covid19/vaccination/vaccination_service.py b/org/woehlke/covid19/vaccination/vaccination_service.py
index 6f0d4ad4..b3b752aa 100644
--- a/org/woehlke/covid19/vaccination/vaccination_service.py
+++ b/org/woehlke/covid19/vaccination/vaccination_service.py
@@ -1,8 +1,8 @@
 import os
 from database import app
-from org.woehlke.covid19.who.who_service_download import WhoServiceDownload
-from org.woehlke.covid19.who.who_service_import import WhoServiceImport
-from org.woehlke.covid19.who.who_service_update import WhoServiceUpdate
+from org.woehlke.covid19.vaccination.vaccination_service_download import VaccinationServiceDownload
+from org.woehlke.covid19.vaccination.vaccination_service_import import VaccinationServiceImport
+from org.woehlke.covid19.vaccination.vaccination_service_update import VaccinationServiceUpdate
 
 vaccination_service = None
 
@@ -14,13 +14,13 @@ class VaccinationService:
         app.logger.info("------------------------------------------------------------")
         self.__database = database
         self.limit_nr = 20
-        self.__who_cvsfile_name = "WHO-COVID-19-global-data.csv"
-        self.__src_who_cvsfile_name = "data"+os.sep+self.__who_cvsfile_name
-        self.__src_who_cvsfile_tmp_name = "data"+os.sep+"tmp_"+self.__who_cvsfile_name
-        self.__url_src_data = "https://covid19.who.int/"+self.__who_cvsfile_name
-        self.vaccination_service_download = WhoServiceDownload(database)
-        self.vaccination_service_import = WhoServiceImport(database)
-        self.vaccination_service_update = WhoServiceUpdate(database)
+        self.__cvsfile_name = "germany_vaccinations_timeseries_v2.tsv"
+        self.__src_cvsfile_name = "data"+os.sep+self.__cvsfile_name
+        self.__src_cvsfile_tmp_name = "data"+os.sep+"tmp_"+self.__cvsfile_name
+        self.__url_src_data = "https://impfdashboard.de/static/data/germany_vaccinations_timeseries_v2.tsv"
+        self.vaccination_service_download = VaccinationServiceDownload(database)
+        self.vaccination_service_import = VaccinationServiceImport(database)
+        self.vaccination_service_update = VaccinationServiceUpdate(database)
         app.logger.info("------------------------------------------------------------")
         app.logger.info(" Vaccination Service [ready]")
 
@@ -58,9 +58,9 @@ class VaccinationService:
     def run_update_initial(self, import_file=True):
         app.logger.info(" run update initial [begin]")
         app.logger.info("------------------------------------------------------------")
-        if import_file:
-            self.vaccination_service_import.import_file()
-        self.vaccination_service_update.update_db_initial()
+        #if import_file:
+        #    self.vaccination_service_import.import_file()
+        #self.vaccination_service_update.update_db_initial()
         app.logger.info("")
         app.logger.info(" run update initial [done]")
         app.logger.info("------------------------------------------------------------")
diff --git a/server_mq.py b/server_mq.py
index b75c378c..353f31e8 100644
--- a/server_mq.py
+++ b/server_mq.py
@@ -83,9 +83,24 @@ def vaccination_update_initial_task(self):
     logger.info("------------------------------------------------------------")
     logger.info(" Received: vaccination_update_initial_task [OK] ")
     logger.info("------------------------------------------------------------")
-    #vaccination_service.run_update_initial()
+    vaccination_service.run_update_initial()
     self.update_state(state=states.SUCCESS)
     result = "OK (vaccination_update_initial_task)"
     return result
 
 
+@celery.task(bind=True)
+def admin_database_drop_create_task(self):
+    self.update_state(state=states.STARTED)
+    logger.info("------------------------------------------------------------")
+    logger.info(" Received: admin_database_drop_create_task [OK] ")
+    logger.info("------------------------------------------------------------")
+    who_service.run_update_initial()
+    europe_service.run_update_initial()
+    vaccination_service.run_update_initial()
+    self.update_state(state=states.SUCCESS)
+    result = "OK (admin_database_drop_create_task)"
+    return result
+
+
+
-- 
GitLab