Esempio n. 1
0
def now(config):

    df = get_health.now(config,
                        "br")[config["br"]["simulacovid"]["columns"]["cnes"]]

    # merge cases
    cases = get_cities_cases.now(config, "br")
    cases = cases[cases["is_last"] == True].drop(config["br"]["cases"]["drop"],
                                                 1)

    df = df.merge(cases, on="city_id", how="left", suffixes=("", "_y"))
    df = df[[c for c in df.columns if not c.endswith("_y")]]

    health_region_rate = (df[[
        "health_region_id", "health_region_notification_rate"
    ]].dropna().groupby("health_region_id").mean())

    # get notification for cities without cases
    df["health_region_notification_rate"] = df.apply(
        lambda row: _recover_notification_rate(row, health_region_rate),
        axis=1)

    df["notification_rate"] = np.where(
        df["notification_rate"].isnull(),
        df["health_region_notification_rate"],
        df["notification_rate"],
    )

    df["last_updated"] = pd.to_datetime(df["last_updated"])
    return df
Esempio n. 2
0
def now(config=None):

    # Import cases
    df = get_cities_cases.now(config, "br")
    df["last_updated"] = pd.to_datetime(df["last_updated"])

    return get_rt(df, "city_id", config)
Esempio n. 3
0
def now(config):
    cols = [
        "health_region_id",
        "health_region_name",
        "state_num_id",
        "state_id",
        "state_name",
        "last_updated",
    ]

    # Pega casos já tratados para cidades (+ taxa de notificação da regional)
    df = get_cities_cases.now(config)
    logger.info("FINISH LOAD DATA")

    # Agrega colunas calculadas em cidades para regionais de saúde
    grouped = df.groupby(cols, sort=False)
    df = grouped.agg({
        "confirmed_cases": "sum",
        "daily_cases": "sum",
        "deaths": "sum",
        "new_deaths": "sum",
        "is_last":
        "max",  # todas as cidades são atualizadas numa mesma tabela diária no Brasil.io
        "estimated_cases": "mean",  # mesmo valor para todas cidades
        "expected_mortality": "mean",
        "notification_rate": "mean",
        "total_estimated_cases": "mean",
    }).reset_index()

    # Converte data e ordena tabela
    df["last_updated"] = pd.to_datetime(df["last_updated"])
    df = df.sort_values(by=["health_region_id", "last_updated"])

    # Padroniza ids e nomes + populacao
    df = get_default_ids(df, config, place_type="health_region")
    logger.info("FINISH DATA TREATMENT")

    # Gera métricas de média móvel e tendência
    groups = df.groupby("health_region_id", as_index=False)
    df = groups.apply(lambda x: get_rolling_indicators(
        x, config, cols=["daily_cases", "new_deaths"]))
    df = df.reset_index(drop=True)
    logger.info("FINISH DATA GROW CALCULATION")

    # Calcula casos ativos
    df["active_cases"] = np.nan
    df.loc[~df["notification_rate"].isnull(), "active_cases"] = round(
        df["infectious_period_cases"] / df["notification_rate"], 0)

    return df
def now(config):

    # Get resource data
    data_cases = get_cities_cases.now(config)
    data_rt = get_cities_rt.now(config)
    data_rt_region = get_health_region_rt.now(config)

    return get_place_indicators(
        place_id="city_id",
        data_cases=data_cases,
        data_rt=data_rt,
        data_rt_region=data_rt_region,
        config=config,
    )
Esempio n. 5
0
def now(config):

    # Get resource data
    df = (get_health.now(config, "br")[[
        "country_iso",
        "country_name",
        "state_num_id",
        "state_id",
        "state_name",
        "health_region_id",
        "health_region_name",
        "city_name",
        "city_id",
        "last_updated_number_beds",
        "author_number_beds",
        "last_updated_number_icu_beds",
        "author_number_icu_beds",
        "population",
    ]].sort_values("city_id").set_index("city_id"))

    df = get_situation_indicators(
        df,
        data=get_cities_cases.now(config),
        place_id="city_id",
        rules=config["br"]["farolcovid"]["rules"],
        classify="situation_classification",
    )

    df = get_control_indicators(
        df,
        data=get_cities_rt.now(config),
        place_id="city_id",
        rules=config["br"]["farolcovid"]["rules"],
        classify="control_classification",
        config=config,
        region_data=get_health_region_farolcovid_main.now(config),
    )

    df = get_trust_indicators(
        df,
        data=get_cities_cases.now(config),
        place_id="city_id",
        rules=config["br"]["farolcovid"]["rules"],
        classify="trust_classification",
    )

    df = get_capacity_indicators(
        df,
        place_id="city_id",
        config=config,
        rules=config["br"]["farolcovid"]["rules"],
        classify="capacity_classification",
        data=get_health_region_farolcovid_main.now(config),
    )

    cols = [col for col in df.columns if "classification" in col]
    df["overall_alert"] = df.apply(
        lambda row: get_overall_alert(row[cols]),
        axis=1)  # .replace(config["br"]["farolcovid"]["categories"])

    return df.reset_index()
Esempio n. 6
0
def now(config=None):
    return get_rt(get_cities_cases.now(), place_id="city_id")