Source code for cowidev.hosp.sources.sweden
import re
import pandas as pd
from cowidev.utils.web.scraping import get_soup
METADATA = {
"source_url_ref": "https://www.folkhalsomyndigheten.se/smittskydd-beredskap/utbrott/aktuella-utbrott/covid-19/statistik-och-analyser/analys-och-prognoser/",
"source_name": "Swedish Public Health Agency",
"entity": "Sweden",
}
[docs]def main() -> pd.DataFrame:
soup = get_soup(METADATA["source_url_ref"])
file_url = soup.find(
class_="xlsx", text=re.compile(".*Underlag för Vårdbelastning aktuell beläggning över tid.*")
).get("href")
file_url = "https://www.folkhalsomyndigheten.se" + file_url
hosp = pd.read_excel(file_url, sheet_name="Slutenvård Total", usecols=["Datum", "Riket_(17_av_21)"]).rename(
columns={"Riket_(17_av_21)": "hospital_stock", "Datum": "date"}
)
icu = pd.read_excel(
file_url, sheet_name="inom intensivvårdsavdelning", usecols=["Datum", "Riket_(17_av_21)"]
).rename(columns={"Riket_(17_av_21)": "icu_stock", "Datum": "date"})
df = (
pd.merge(hosp, icu, on="date", how="outer", validate="one_to_one")
.melt("date", var_name="indicator")
.dropna(subset=["value"])
)
df["indicator"] = df.indicator.replace(
{
"hospital_stock": "Daily hospital occupancy",
"icu_stock": "Daily ICU occupancy",
}
)
df["entity"] = METADATA["entity"]
return df, METADATA
if __name__ == "__main__":
main()