diff --git a/src/intensivstationen/IntensiveCareBedsPersister.py b/src/intensivstationen/IntensiveCareBedsPersister.py new file mode 100644 index 00000000000..d8d1b3a67fd --- /dev/null +++ b/src/intensivstationen/IntensiveCareBedsPersister.py @@ -0,0 +1,38 @@ +from IntensiveCareBedsProvider import getIntensiveCareBeds +from IOUtils import IOUtils + +def getAndPersistIntensiveCareBeds4AlleKreise(timeSeries, intensivstationenDataDir, kreisValues): + getAndPersistIntensiveCareBeds(timeSeries, intensivstationenDataDir) + for kreis in kreisValues: + getAndPersistIntensiveCareBeds( + timeSeries, + intensivstationenDataDir = intensivstationenDataDir, + kreis = kreis) + +def getAndPersistIntensiveCareBeds(timeSeries, intensivstationenDataDir, kreis = None): + intensiveCareBeds = getIntensiveCareBeds(timeSeries, kreis) + display(kreis) + _saveAsJson(intensiveCareBeds, _getFilename(intensivstationenDataDir, kreis)) + + +def _saveAsJson(intensiveCareBeds, file): + IOUtils.saveDictAsJson( + { + 'population': int(intensiveCareBeds.iloc[0]['Einwohnerzahl']), + 'data': _intensiveCareBeds2Dict(intensiveCareBeds), + }, + file) + + +def _intensiveCareBeds2Dict(intensiveCareBeds): + df = intensiveCareBeds[['date', 'betten_belegt', 'betten_frei']].copy() + df['date'] = df['date'].dt.strftime('%Y-%m-%d') + return df.to_dict(orient = "records") + + +def _getFilename(intensivstationenDataDir, kreis): + return f'{intensivstationenDataDir}/intensivstationen-{_getSuffix(kreis)}.json' + + +def _getSuffix(kreis): + return kreis if kreis is not None else 'de' diff --git a/src/intensivstationen/Intensivstationen.ipynb b/src/intensivstationen/Intensivstationen.ipynb index bf46b7856dd..a59faf16000 100644 --- a/src/intensivstationen/Intensivstationen.ipynb +++ b/src/intensivstationen/Intensivstationen.ipynb @@ -26,14 +26,13 @@ "from DateProvider import DateProvider\n", "from datetime import datetime\n", "from ColumnsAdder import ColumnsAdder\n", - "from IOUtils import IOUtils\n", "from Datawrapper import Datawrapper\n", "from MedianOfFreeBedsByKreisTableFactory import MedianOfFreeBedsByKreisTableFactory\n", "from TimeseriesReader import readTimeseries\n", "from IntensivstationenHtmlFileUpdater import saveLastUpdatedIntensivstationen, saveKreisOptions\n", "from KreiseReader import readKreise\n", "from KreisOptionsProvider import getKreisOptionsAndAlleLandkreise\n", - "from IntensiveCareBedsProvider import getIntensiveCareBeds\n", + "from IntensiveCareBedsPersister import getAndPersistIntensiveCareBeds4AlleKreise\n", "\n", "\n", "pd.set_option('display.max_rows', 100)\n", @@ -100,43 +99,6 @@ "saveKreisOptions(kreisOptions, toHtmlFile = \"../../docs/intensivstationen.html\")" ] }, - { - "cell_type": "code", - "execution_count": null, - "id": "a97f5b2b", - "metadata": {}, - "outputs": [], - "source": [ - "def getAndPersistIntensiveCareBeds(timeSeries, kreis = None):\n", - " intensiveCareBeds = getIntensiveCareBeds(timeSeries, kreis)\n", - " display(kreis)\n", - " _saveAsJson(intensiveCareBeds, _getFilename(kreis))\n", - " return intensiveCareBeds\n", - "\n", - "\n", - "def _saveAsJson(intensiveCareBeds, file):\n", - " IOUtils.saveDictAsJson(\n", - " {\n", - " 'population': int(intensiveCareBeds.iloc[0]['Einwohnerzahl']),\n", - " 'data': _intensiveCareBeds2Dict(intensiveCareBeds),\n", - " },\n", - " file)\n", - "\n", - "\n", - "def _intensiveCareBeds2Dict(intensiveCareBeds):\n", - " df = intensiveCareBeds[['date', 'betten_belegt', 'betten_frei']].copy()\n", - " df['date'] = df['date'].dt.strftime('%Y-%m-%d')\n", - " return df.to_dict(orient = \"records\")\n", - "\n", - "\n", - "def _getFilename(kreis):\n", - " return f'../../docs/data/intensivstationen/intensivstationen-{_getSuffix(kreis)}.json'\n", - "\n", - "\n", - "def _getSuffix(kreis):\n", - " return kreis if kreis is not None else 'de'\n" - ] - }, { "cell_type": "code", "execution_count": null, @@ -144,18 +106,10 @@ "metadata": {}, "outputs": [], "source": [ - "getAndPersistIntensiveCareBeds(timeSeries)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1b97137f", - "metadata": {}, - "outputs": [], - "source": [ - "for kreis in kreisValues:\n", - " getAndPersistIntensiveCareBeds(timeSeries, kreis)" + "getAndPersistIntensiveCareBeds4AlleKreise(\n", + " timeSeries,\n", + " intensivstationenDataDir = '../../docs/data/intensivstationen',\n", + " kreisValues = kreisValues)\n" ] }, {