Source code for cowidev.hosp.sources.germany

import pandas as pd
import numpy as np

METADATA = {
    "source_url": {
        "icu": "https://diviexchange.blob.core.windows.net/%24web/zeitreihe-deutschland.csv",
        "hosp": "https://raw.githubusercontent.com/robert-koch-institut/COVID-19-Hospitalisierungen_in_Deutschland/master/Aktuell_Deutschland_COVID-19-Hospitalisierungen.csv",
    },
    "source_url_ref": "https://github.com/robert-koch-institut/COVID-19-Hospitalisierungen_in_Deutschland/",
    "source_name": "Robert Koch Institute",
    "entity": "Germany",
}


[docs]def main() -> pd.DataFrame: # Hospital admissions hosp_flow = pd.read_csv( METADATA["source_url"]["hosp"], usecols=["Datum", "Bundesland", "Altersgruppe", "7T_Hospitalisierung_Faelle"] ) hosp_flow = ( hosp_flow[(hosp_flow.Bundesland == "Bundesgebiet") & (hosp_flow.Altersgruppe == "00+")] .drop(columns=["Bundesland", "Altersgruppe"]) .rename(columns={"Datum": "date"}) .groupby("date", as_index=False) .sum() ) # ICU admissions and patients icu = ( pd.read_csv( METADATA["source_url"]["icu"], usecols=["Datum", "Aktuelle_COVID_Faelle_ITS", "faelle_covid_erstaufnahmen"] ) .rename(columns={"Datum": "date"}) .groupby("date", as_index=False) .sum() .sort_values("date") ) icu["date"] = icu.date.str.slice(0, 10) icu.loc[icu.faelle_covid_erstaufnahmen == 0, "faelle_covid_erstaufnahmen"] = np.nan icu["faelle_covid_erstaufnahmen"] = icu.faelle_covid_erstaufnahmen.rolling(7).sum() # Merge df = ( pd.merge(hosp_flow, icu, on="date", how="outer") .sort_values("date") .melt(id_vars="date", var_name="indicator") .dropna(subset=["value"]) ) df["indicator"] = df["indicator"].replace( { "Aktuelle_COVID_Faelle_ITS": "Daily ICU occupancy", "7T_Hospitalisierung_Faelle": "Weekly new hospital admissions", "faelle_covid_erstaufnahmen": "Weekly new ICU admissions", }, ) df["entity"] = METADATA["entity"] return df, METADATA
if __name__ == "__main__": main()