defcompute_completeness_predictor_per_measurement(self,data:Data,start_date:datetime,end_date:datetime,care_site_levels:Union[bool,str,List[str]],stay_types:Union[bool,str,Dict[str,str]],care_site_ids:List[int],care_site_short_names:List[str],care_site_specialties:Union[bool,List[str]],measurement_concept_codes:Union[bool,List[str]],care_sites_sets:Union[str,Dict[str,str]],specialties_sets:Union[str,Dict[str,str]],concepts_sets:Union[str,Dict[str,str]],length_of_stays:List[float],source_terminologies:Dict[str,str],mapping:List[Tuple[str,str,str]],age_ranges:List[int],gender_source_values:Union[bool,str,Dict[str,str]],condition_types:Union[bool,str,Dict[str,str]],diag_types:Union[bool,str,Dict[str,str]],provenance_sources:Union[bool,str,Dict[str,str]],stay_sources:Union[bool,str,Dict[str,str]],drg_sources:Union[bool,str,Dict[str,str]],**kwargs):r"""Script to be used by [``compute()``][edsteva.probes.base.BaseProbe.compute] The ``per_measurement`` algorithm computes $c_(t)$ the availability of biological measurements: $$ c(t) = \frac{n_{biology}(t)}{n_{max}} $$ Where $n_{biology}(t)$ is the number of biological measurements, $t$ is the month and $n_{max} = \max_{t}(n_{biology}(t))$. """self._metrics=["c","n_measurement"]check_tables(data=data,required_tables=["visit_occurrence","care_site","fact_relationship","measurement","concept","concept_relationship",],)care_site_relationship=prepare_care_site_relationship(data=data,)self.care_site_relationship=care_site_relationshipstandard_terminologies=self._standard_terminologiesbiology_relationship=prepare_biology_relationship(data=data,standard_terminologies=standard_terminologies,source_terminologies=source_terminologies,mapping=mapping,)self.biology_relationship=biology_relationshiproot_terminology=mapping[0][0]person=(prepare_person(data,gender_source_values)if(age_rangesorgender_source_values)elseNone)cost=prepare_cost(data,drg_sources)ifdrg_sourceselseNonemeasurement=prepare_measurement(data=data,biology_relationship=biology_relationship,measurement_concept_codes=measurement_concept_codes,concepts_sets=concepts_sets,start_date=start_date,end_date=end_date,root_terminology=root_terminology,standard_terminologies=standard_terminologies,per_visit=False,)visit_occurrence=prepare_visit_occurrence(data=data,start_date=None,end_date=None,stay_types=stay_types,length_of_stays=length_of_stays,provenance_sources=provenance_sources,stay_sources=stay_sources,cost=cost,person=person,age_ranges=age_ranges,).drop(columns=["visit_occurrence_source_value","date"])ifcondition_types:conditions=prepare_condition_occurrence(data,extra_data=None,visit_occurrence=None,source_systems="ORBIS",diag_types=diag_types,condition_types=condition_types,start_date=start_date,end_date=end_date,)[["visit_occurrence_id","condition_type","diag_type"]].drop_duplicates()visit_occurrence=visit_occurrence.merge(conditions,on="visit_occurrence_id")care_site=prepare_care_site(data=data,care_site_ids=care_site_ids,care_site_short_names=care_site_short_names,care_site_specialties=care_site_specialties,care_sites_sets=care_sites_sets,specialties_sets=specialties_sets,care_site_relationship=care_site_relationship,)hospital_measurement=get_hospital_measurements(measurement=measurement,visit_occurrence=visit_occurrence,care_site=care_site,)hospital_name=CARE_SITE_LEVEL_NAMES["Hospital"]biology_predictor_by_level={hospital_name:hospital_measurement}ifcare_site_levelsandnothospital_only(care_site_levels=care_site_levels):logger.info("Biological measurements are only available at hospital level for now")care_site_levels="Hospital"biology_predictor=concatenate_predictor_by_level(predictor_by_level=biology_predictor_by_level,care_site_levels=care_site_levels,)returncompute_completeness(self,biology_predictor)