def _generate_actuals(actual_data: dict, intervention: Intervention) -> Actuals: """Generate actuals entry. Args: actual_data: Dictionary of data, generally derived one of the combined datasets. intervention: Current state level intervention. """ total_bed_capacity = actual_data.get(CommonFields.MAX_BED_COUNT) typical_usage_rate = actual_data.get( CommonFields.ALL_BED_TYPICAL_OCCUPANCY_RATE) capacity = None if total_bed_capacity and typical_usage_rate: # At the dawn of the API, the capacity for hospital beds actually referred to the # expected bed capacity available for covid patients. We calculated this # by multiplying remaining capacity by total beds available multiplied by a # scale factor meant to represent the ratio of beds expected to become available # as a result of less hospital utilization. capacity = (1 - typical_usage_rate) * total_bed_capacity * 2.07 return Actuals( population=actual_data.get(CommonFields.POPULATION), intervention=intervention.name, cumulativeConfirmedCases=actual_data[CommonFields.CASES], cumulativeDeaths=actual_data[CommonFields.DEATHS], cumulativePositiveTests=actual_data.get(CommonFields.POSITIVE_TESTS), cumulativeNegativeTests=actual_data.get(CommonFields.NEGATIVE_TESTS), hospitalBeds={ "capacity": capacity, "totalCapacity": total_bed_capacity, "currentUsageCovid": actual_data.get(CommonFields.CURRENT_HOSPITALIZED), "currentUsageTotal": actual_data.get(CommonFields.CURRENT_HOSPITALIZED_TOTAL), "typicalUsageRate": typical_usage_rate, }, ICUBeds={ "capacity": actual_data.get(CommonFields.ICU_BEDS), "totalCapacity": actual_data.get(CommonFields.ICU_BEDS), "currentUsageCovid": actual_data.get(CommonFields.CURRENT_ICU), "currentUsageTotal": actual_data.get(CommonFields.CURRENT_ICU_TOTAL), "typicalUsageRate": actual_data.get(CommonFields.ICU_TYPICAL_OCCUPANCY_RATE), }, contactTracers=actual_data.get(CommonFields.CONTACT_TRACERS_COUNT), )
def test_build_summary_for_fips(include_projections, nyc_model_output_path, nyc_fips): us_latest = combined_datasets.build_us_latest_with_all_fields() nyc_latest = us_latest.get_record_for_fips(nyc_fips) model_output = None expected_projections = None intervention = Intervention.OBSERVED_INTERVENTION if include_projections: model_output = CANPyseirLocationOutput.load_from_path( nyc_model_output_path) expected_projections = Projections( totalHospitalBeds=ResourceUsageProjection(peakShortfall=0, peakDate=datetime.date( 2020, 4, 15), shortageStartDate=None), ICUBeds=None, Rt=model_output.latest_rt, RtCI90=model_output.latest_rt_ci90, ) intervention = Intervention.STRONG_INTERVENTION summary = generate_api.generate_region_summary(nyc_latest, model_output) expected = RegionSummary( population=nyc_latest["population"], stateName="New York", countyName="New York County", fips="36061", lat=None, long=None, actuals=Actuals( population=nyc_latest["population"], intervention="STRONG_INTERVENTION", cumulativeConfirmedCases=nyc_latest["cases"], cumulativeDeaths=nyc_latest["deaths"], cumulativePositiveTests=nyc_latest["positive_tests"], cumulativeNegativeTests=nyc_latest["negative_tests"], hospitalBeds={ # Manually calculated from capacity calculation in generate_api.py "capacity": 12763, "totalCapacity": nyc_latest["max_bed_count"], "currentUsageCovid": 0, "currentUsageTotal": None, "typicalUsageRate": nyc_latest["all_beds_occupancy_rate"], }, ICUBeds={ "capacity": nyc_latest["icu_beds"], "totalCapacity": nyc_latest["icu_beds"], "currentUsageCovid": 0, "currentUsageTotal": 0, "typicalUsageRate": nyc_latest["icu_occupancy_rate"], }, contactTracers=nyc_latest["contact_tracers_count"], ), lastUpdatedDate=datetime.datetime.utcnow(), projections=expected_projections, ) import pprint pprint.pprint(expected.actuals.ICUBeds.dict()) pprint.pprint(summary.actuals.ICUBeds.dict()) assert expected.dict() == summary.dict()