defcompute_completeness_predictor_per_visit(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]],care_sites_sets:Union[str,Dict[str,str]],specialties_sets:Union[str,Dict[str,str]],length_of_stays:List[float],age_ranges:List[int],gender_source_values:Union[bool,str,Dict[str,str]],condition_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_visit`` algorithm computes $c_(t)$ the availability of administrative data related to visits for each care site according to time: $$ c(t) = \frac{n_{visit}(t)}{n_{max}} $$ Where $n_{visit}(t)$ is the number of administrative stays, $t$ is the month and $n_{max} = \max_{t}(n_{visit}(t))$. """self._metrics=["c","n_visit"]check_tables(data=data,required_tables=["visit_occurrence","care_site","fact_relationship",],)care_site_relationship=prepare_care_site_relationship(data=data,)self.care_site_relationship=care_site_relationshipperson=(prepare_person(data,gender_source_values)if(age_rangesorgender_source_values)elseNone)cost=prepare_cost(data,drg_sources)ifdrg_sourceselseNonevisit_occurrence=prepare_visit_occurrence(data=data,start_date=start_date,end_date=end_date,stay_types=stay_types,length_of_stays=length_of_stays,stay_sources=stay_sources,provenance_sources=provenance_sources,cost=cost,person=person,age_ranges=age_ranges,)ifcondition_types:check_tables(data=data,required_tables=["condition_occurrence",],)conditions=prepare_condition_occurrence(data,extra_data=None,visit_occurrence=None,source_systems="ORBIS",diag_types=None,condition_types=condition_types,start_date=start_date,end_date=end_date,)[["visit_occurrence_id","condition_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_site_relationship=care_site_relationship,specialties_sets=specialties_sets,care_sites_sets=care_sites_sets,)hospital_visit=get_hospital_visit(visit_occurrence,care_site,)hospital_name=CARE_SITE_LEVEL_NAMES["Hospital"]visit_predictor_by_level={hospital_name:hospital_visit}ifnothospital_only(care_site_levels=care_site_levels):visit_detail=prepare_visit_detail(data,start_date,end_date)uf_name=CARE_SITE_LEVEL_NAMES["UF"]uf_visit=get_uf_visit(visit_occurrence,visit_detail,care_site,)visit_predictor_by_level[uf_name]=uf_visituc_name=CARE_SITE_LEVEL_NAMES["UC"]uc_visit=get_uc_visit(visit_occurrence,visit_detail,care_site,)visit_predictor_by_level[uc_name]=uc_visituh_name=CARE_SITE_LEVEL_NAMES["UH"]uh_visit=get_uh_visit(visit_occurrence,visit_detail,care_site,)visit_predictor_by_level[uh_name]=uh_visitpole_name=CARE_SITE_LEVEL_NAMES["Pole"]pole_visit=get_pole_visit(uf_visit,care_site,care_site_relationship,)visit_predictor_by_level[pole_name]=pole_visitvisit_predictor=concatenate_predictor_by_level(predictor_by_level=visit_predictor_by_level,care_site_levels=care_site_levels,)returncompute_completeness(self,visit_predictor)