Esempio n. 1
0
    def __init__(self,
                 ingest_directory_path: Optional[str] = None,
                 storage_directory_path: Optional[str] = None,
                 max_delay_sec_between_files: Optional[int] = None):
        super(UsPaController, self).__init__(
            'us_pa',
            SystemLevel.STATE,
            ingest_directory_path,
            storage_directory_path,
            max_delay_sec_between_files=max_delay_sec_between_files)
        self.enum_overrides = self.generate_enum_overrides()

        self.row_post_processors_by_file: Dict[str, List[Callable]] = {
            'dbo_IcsDoc': [
                gen_label_single_external_id_hook(US_PA_SID),
                self.gen_hydrate_alternate_external_ids({
                    'Cont_Num': US_PA_CONTROL,
                    'PBPP_Num': US_PA_PBPP,
                }),
                copy_name_to_alias,
                gen_rationalize_race_and_ethnicity(self.ENUM_OVERRIDES),
                self._compose_current_address,
            ],
            'dbo_tblInmTestScore': [
                self.gen_hydrate_alternate_external_ids({
                    'Control_Number':
                    US_PA_CONTROL,
                }),
                self._generate_doc_assessment_external_id,
                self._enrich_doc_assessments,
            ],
            'dbo_Senrec': [
                self._set_incarceration_sentence_id,
                self._enrich_incarceration_sentence,
                self._strip_id_whitespace,
                gen_set_agent_type(StateAgentType.JUDGE),
            ],
            'dbo_Offender': [
                gen_label_single_external_id_hook(US_PA_PBPP),
                self.gen_hydrate_alternate_external_ids({
                    'OffSID': US_PA_SID,
                }),
                gen_rationalize_race_and_ethnicity(self.ENUM_OVERRIDES),
            ],
            'dbo_LSIR': [
                gen_label_single_external_id_hook(US_PA_PBPP),
                self._generate_pbpp_assessment_external_id,
                self._enrich_pbpp_assessments,
            ]
        }

        self.file_post_processors_by_file: Dict[str, List[Callable]] = {
            'dbo_IcsDoc': [],
            'dbo_tblInmTestScore': [],
            'dbo_Senrec': [],
            'dbo_Offender': [],
            'dbo_LSIR': [],
        }
    def __init__(self,
                 ingest_directory_path: Optional[str] = None,
                 storage_directory_path: Optional[str] = None,
                 max_delay_sec_between_files: Optional[int] = None):
        super(UsPaController, self).__init__(
            'us_pa',
            SystemLevel.STATE,
            ingest_directory_path,
            storage_directory_path,
            max_delay_sec_between_files=max_delay_sec_between_files)
        self.enum_overrides = self.generate_enum_overrides()

        self.row_post_processors_by_file: Dict[str, List[Callable]] = {
            'dbo_IcsDoc': [
                gen_label_single_external_id_hook(US_PA_DOC),
                self.gen_hydrate_alternate_external_ids({
                    'Cont_Num': US_PA_CONT,
                    'Inmate_Num': US_PA_INMATE,
                    'PBPP_Num': US_PA_PBPP,
                    'SID_Num': US_PA_SID,
                }),
                copy_name_to_alias,
                gen_rationalize_race_and_ethnicity(self.ENUM_OVERRIDES),
                self._compose_current_address,
            ],
            'dbo_Offender': [
                gen_label_single_external_id_hook(US_PA_PBPP),
                self.gen_hydrate_alternate_external_ids({
                    'OffSID': US_PA_SID,
                }),
                gen_rationalize_race_and_ethnicity(self.ENUM_OVERRIDES),
            ],
        }

        self.file_post_processors_by_file: Dict[str, List[Callable]] = {
            'dbo_IcsDoc': [],
            'dbo_Offender': [],
        }
Esempio n. 3
0
 def __init__(self,
              ingest_directory_path: Optional[str] = None,
              storage_directory_path: Optional[str] = None,
              max_delay_sec_between_files: Optional[int] = None):
     super(UsIdController, self).__init__(
         'us_id',
         SystemLevel.STATE,
         ingest_directory_path,
         storage_directory_path,
         max_delay_sec_between_files=max_delay_sec_between_files)
     self.enum_overrides = self.generate_enum_overrides()
     self.row_post_processors_by_file: Dict[str, List[Callable]] = {
         'offender_ofndr_dob_address': [
             copy_name_to_alias,
             # When first parsed, the info object just has a single external id - the DOC id.
             gen_label_single_external_id_hook(US_ID_DOC),
             gen_rationalize_race_and_ethnicity(self.ENUM_OVERRIDES),
         ],
         'ofndr_tst_ofndr_tst_cert': [
             self._add_lsir_to_assessments,
             gen_label_single_external_id_hook(US_ID_DOC),
         ],
         'mittimus_judge_sentence_offense_sentprob_incarceration_sentences':
         [
             gen_label_single_external_id_hook(US_ID_DOC),
             self._add_statute_to_charge,
             self._add_judge_to_court_cases,
             self._set_extra_sentence_fields,
             self._set_generated_ids,
         ],
         'mittimus_judge_sentence_offense_sentprob_supervision_sentences': [
             gen_label_single_external_id_hook(US_ID_DOC),
             self._add_statute_to_charge,
             self._add_judge_to_court_cases,
             self._set_extra_sentence_fields,
             self._set_generated_ids,
         ],
         'early_discharge_incarceration_sentence': [
             gen_label_single_external_id_hook(US_ID_DOC),
             self._set_generated_ids,
         ],
         'early_discharge_supervision_sentence': [
             gen_label_single_external_id_hook(US_ID_DOC),
             self._set_generated_ids,
         ],
         'movement_facility_location_offstat_incarceration_periods': [
             gen_label_single_external_id_hook(US_ID_DOC),
             self._override_facilities,
             self._set_generated_ids,
             self._clear_max_dates,
             self._add_incarceration_type,
             self._add_default_admission_reason,
         ],
         'movement_facility_location_offstat_supervision_periods': [
             gen_label_single_external_id_hook(US_ID_DOC),
             self._set_generated_ids,
             self._clear_max_dates,
             self._supervision_period_admission_and_termination_overrides,
             self._add_default_admission_reason,
             self._override_supervision_fields_from_location_info,
             self._set_case_type_from_supervision_level,
             self._add_supervising_officer,
         ],
         'ofndr_tst_tst_qstn_rspns_violation_reports': [
             gen_label_single_external_id_hook(US_ID_DOC),
             self._set_generated_ids,
             self._set_violation_violent_sex_offense,
             self._hydrate_violation_types,
             self._hydrate_violation_report_fields,
         ],
         'ofndr_tst_tst_qstn_rspns_violation_reports_old': [
             gen_label_single_external_id_hook(US_ID_DOC),
             self._set_generated_ids,
             self._set_violation_violent_sex_offense,
             self._hydrate_violation_types,
             self._hydrate_violation_report_fields,
         ],
         'sprvsn_cntc': [
             gen_label_single_external_id_hook(US_ID_DOC),
             self._add_supervision_contact_fields,
         ],
     }
     self.file_post_processors_by_file: Dict[str, List[Callable]] = {
         'offender_ofndr_dob_address': [],
         'ofndr_tst_ofndr_tst_cert': [],
         'mittimus_judge_sentence_offense_sentprob_incarceration_sentences':
         [],
         'mittimus_judge_sentence_offense_sentprob_supervision_sentences':
         [],
         'early_discharge_incarceration_sentence': [],
         'early_discharge_supervision_sentence': [],
         'movement_facility_location_offstat_incarceration_periods': [],
         'movement_facility_location_offstat_supervision_periods': [],
         'ofndr_tst_tst_qstn_rspns_violation_reports': [],
         'ofndr_tst_tst_qstn_rspns_violation_reports_old': [],
         'sprvsn_cntc': [],
     }
Esempio n. 4
0
    def __init__(self,
                 ingest_directory_path: Optional[str] = None,
                 storage_directory_path: Optional[str] = None,
                 max_delay_sec_between_files: Optional[int] = None):
        super(UsPaController, self).__init__(
            'us_pa',
            SystemLevel.STATE,
            ingest_directory_path,
            storage_directory_path,
            max_delay_sec_between_files=max_delay_sec_between_files)
        self.enum_overrides = self.generate_enum_overrides()

        self.row_post_processors_by_file: Dict[str, List[Callable]] = {
            'person_external_ids': [self._hydrate_person_external_ids],
            'doc_person_info': [
                gen_label_single_external_id_hook(US_PA_CONTROL),
                self.gen_hydrate_alternate_external_ids({
                    'SID_Num': US_PA_SID,
                    'PBPP_Num': US_PA_PBPP,
                }), copy_name_to_alias,
                gen_rationalize_race_and_ethnicity(self.ENUM_OVERRIDES),
                self._compose_current_address, self._hydrate_sentence_group_ids
            ],
            'dbo_tblInmTestScore': [
                gen_label_single_external_id_hook(US_PA_CONTROL),
                self._generate_doc_assessment_external_id,
                self._enrich_doc_assessments,
            ],
            'dbo_Senrec': [
                self._set_incarceration_sentence_id,
                self._enrich_incarceration_sentence,
                self._strip_id_whitespace,
                gen_set_agent_type(StateAgentType.JUDGE),
            ],
            'incarceration_period': [
                gen_label_single_external_id_hook(US_PA_CONTROL),
                self._concatenate_admission_reason_codes,
                self._concatenate_release_reason_codes,
                self._concatenate_incarceration_purpose_codes,
                self._add_incarceration_type,
            ],
            'dbo_Miscon': [
                gen_label_single_external_id_hook(US_PA_CONTROL),
                self._specify_incident_location,
                self._specify_incident_type,
                self._specify_incident_details,
                self._specify_incident_outcome,
            ],
            'dbo_Offender': [
                gen_label_single_external_id_hook(US_PA_PBPP),
                self._hydrate_races,
                gen_rationalize_race_and_ethnicity(self.ENUM_OVERRIDES),
            ],
            'dbo_LSIR': [
                gen_label_single_external_id_hook(US_PA_PBPP),
                self._generate_pbpp_assessment_external_id,
                self._enrich_pbpp_assessments,
            ],
            'supervision_sentence': [
                self._enrich_supervision_sentence,
                self._set_default_supervision_sentence_type,
                self._append_additional_charges_to_supervision_sentence,
            ],
        }

        self.file_post_processors_by_file: Dict[str, List[Callable]] = {
            'person_external_ids': [],
            'doc_person_info': [],
            'dbo_tblInmTestScore': [],
            'dbo_Senrec': [
                gen_convert_person_ids_to_external_id_objects(
                    self._get_id_type),
            ],
            'incarceration_period': [
                gen_convert_person_ids_to_external_id_objects(
                    self._get_id_type),
            ],
            'dbo_Miscon': [
                gen_convert_person_ids_to_external_id_objects(
                    self._get_id_type),
            ],
            'dbo_Offender': [],
            'dbo_LSIR': [],
            'supervision_sentence': [
                gen_convert_person_ids_to_external_id_objects(
                    self._get_id_type),
            ],
        }

        self.primary_key_override_hook_by_file: Dict[str, Callable] = {
            'incarceration_period': _generate_incarceration_period_primary_key,
            'supervision_sentence': _generate_supervision_sentence_primary_key,
        }

        self.ancestor_chain_overrides_callback_by_file: Dict[str, Callable] = {
            'incarceration_period':
            _state_incarceration_period_ancestor_chain_overrides,
            'supervision_sentence':
            _state_supervision_sentence_ancestor_chain_overrides,
        }
Esempio n. 5
0
    def __init__(self,
                 ingest_directory_path: Optional[str] = None,
                 storage_directory_path: Optional[str] = None,
                 max_delay_sec_between_files: Optional[int] = None):
        super(UsNdController, self).__init__(
            'us_nd',
            SystemLevel.STATE,
            ingest_directory_path,
            storage_directory_path,
            max_delay_sec_between_files=max_delay_sec_between_files)

        self.row_pre_processors_by_file: Dict[str, List[Callable]] = {
            'elite_offenderidentifier': [self._normalize_id_fields],
            'elite_alias': [self._normalize_id_fields],
            'elite_offendersentences': [self._normalize_id_fields],
            'elite_offendersentenceterms': [self._normalize_id_fields],
            'elite_offenderchargestable': [self._normalize_id_fields],
            'elite_orderstable': [self._normalize_id_fields],
            'elite_externalmovements': [self._normalize_id_fields],
        }
        self.row_post_processors_by_file: Dict[str, List[Callable]] = {
            'elite_offenders': [copy_name_to_alias],
            'elite_offenderidentifier': [self._normalize_external_id_type],
            'elite_offendersentenceaggs': [
                gen_set_is_life_sentence_hook('MAX_TERM', 'LIFE', StateSentenceGroup),
                self._rationalize_max_length
            ],
            'elite_offendersentences': [
                gen_set_is_life_sentence_hook('SENTENCE_CALC_TYPE', 'LIFE', StateIncarcerationSentence)
            ],
            'elite_offendersentenceterms': [self._add_sentence_children],
            'elite_offenderchargestable': [
                self._parse_elite_charge_classification,
                self._set_elite_charge_status,
                self._rationalize_controlling_charge
            ],
            'elite_orderstable': [
                self._set_judge_agent_type,
                gen_normalize_county_codes_posthook(
                    self.region.region_code, 'COUNTY_CODE', StateCourtCase, normalized_county_code),
                self._normalize_judicial_district_code
            ],
            'elite_externalmovements': [self._process_external_movement],
            'elite_offense_in_custody_and_pos_report_data': [
                self._rationalize_incident_type,
                self._rationalize_outcome_type,
                self._set_punishment_length_days,
                self._set_location_within_facility,
                self._set_incident_outcome_id
            ],
            'docstars_offenders': [
                # For a person we are seeing in Docstars with an ITAGROOT_ID referencing a corresponding record in
                # Elite, mark that external id as having type ELITE.
                gen_label_single_external_id_hook(US_ND_ELITE),
                self._enrich_addresses,
                self._enrich_sorac_assessments,
                copy_name_to_alias,
                self._add_supervising_officer,
                self._add_case_type_external_id
            ],
            'docstars_offendercasestable': [
                self._concatenate_docstars_length_periods,
                self._add_terminating_officer_to_supervision_periods,
                self._record_revocation,
                self._set_judge_agent_type,
                self._hydrate_supervision_period_sentence_shared_date_fields,
                gen_normalize_county_codes_posthook(
                    self.region.region_code, 'TB_CTY', StateSupervisionPeriod, normalized_county_code),
            ],
            'docstars_offensestable': [
                self._parse_docstars_charge_classification,
                gen_normalize_county_codes_posthook(
                    self.region.region_code, 'COUNTY', StateCharge, normalized_county_code),
            ],
            'docstars_lsi_chronology': [self._process_lsir_assessments],
            'docstars_ftr_episode': [self._process_ftr_episode],
        }

        self.primary_key_override_hook_by_file: Dict[str, Callable] = {
            'elite_offendersentences': _generate_sentence_primary_key,
            'elite_externalmovements': _generate_period_primary_key,
            'elite_offenderchargestable': _generate_charge_primary_key,
            'elite_offense_in_custody_and_pos_report_data': _generate_incident_primary_key,
        }

        self.ancestor_chain_overrides_callback_by_file: Dict[str, Callable] = {
            'elite_offenderchargestable': _state_charge_ancestor_chain_overrides
        }

        self.files_to_set_with_empty_values = [
            'elite_offendersentenceterms'
        ]
 def __init__(self,
              ingest_directory_path: Optional[str] = None,
              storage_directory_path: Optional[str] = None,
              max_delay_sec_between_files: Optional[int] = None):
     super(UsIdController, self).__init__(
         'us_id',
         SystemLevel.STATE,
         ingest_directory_path,
         storage_directory_path,
         max_delay_sec_between_files=max_delay_sec_between_files)
     self.enum_overrides = self.generate_enum_overrides()
     self.row_post_processors_by_file: Dict[str, List[Callable]] = {
         'offender_ofndr_dob': [
             copy_name_to_alias,
             # When first parsed, the info object just has a single external id - the DOC id.
             gen_label_single_external_id_hook(US_ID_DOC),
             gen_rationalize_race_and_ethnicity(self.ENUM_OVERRIDES),
         ],
         'ofndr_tst_ofndr_tst_cert': [
             self._add_lsir_to_assessments,
             gen_label_single_external_id_hook(US_ID_DOC),
         ],
         'mittimus_judge_sentence_offense_sentprob_incarceration_sentences':
         [
             gen_label_single_external_id_hook(US_ID_DOC),
             self._add_statute_to_charge,
             self._add_judge_to_court_cases,
             self._set_extra_sentence_fields,
             self._set_generated_ids,
         ],
         'mittimus_judge_sentence_offense_sentprob_supervision_sentences': [
             gen_label_single_external_id_hook(US_ID_DOC),
             self._add_statute_to_charge,
             self._add_judge_to_court_cases,
             self._set_extra_sentence_fields,
             self._set_generated_ids,
         ],
         'early_discharge_incarceration_sentence': [
             gen_label_single_external_id_hook(US_ID_DOC),
             self._set_generated_ids,
         ],
         'early_discharge_supervision_sentence': [
             gen_label_single_external_id_hook(US_ID_DOC),
             self._set_generated_ids,
         ],
         'movement_facility_location_offstat_incarceration_periods': [
             gen_label_single_external_id_hook(US_ID_DOC),
             self._override_facilities,
             self._set_generated_ids,
             self._clear_max_dates,
             self._add_incarceration_type,
             self._add_default_admission_reason,
         ],
         'movement_facility_location_offstat_supervision_periods': [
             gen_label_single_external_id_hook(US_ID_DOC),
             self._set_generated_ids, self._clear_max_dates,
             self._supervision_period_admission_and_termination_overrides,
             self._add_default_admission_reason,
             self._override_supervision_fields_from_location_info
         ],
         'ofndr_tst_tst_qstn_rspns_violation_reports': [
             gen_label_single_external_id_hook(US_ID_DOC),
             self._set_generated_ids,
             self._set_violation_violent_sex_offense,
             self._hydrate_violation_types,
             self._hydrate_violation_report_fields,
         ],
         'ofndr_tst_tst_qstn_rspns_violation_reports_old': [
             gen_label_single_external_id_hook(US_ID_DOC),
             self._set_generated_ids,
             self._set_violation_violent_sex_offense,
             self._hydrate_violation_types,
             self._hydrate_violation_report_fields,
         ],
         'ofndr_agnt_applc_usr_body_loc_cd_current_pos': [
             gen_label_single_external_id_hook(US_ID_DOC),
             self._add_supervising_officer,
         ],
     }
     self.file_post_processors_by_file: Dict[str, List[Callable]] = {
         'offender_ofndr_dob': [],
         'ofndr_tst_ofndr_tst_cert': [],
         'mittimus_judge_sentence_offense_sentprob_incarceration_sentences':
         [],
         'mittimus_judge_sentence_offense_sentprob_supervision_sentences':
         [],
         'early_discharge_incarceration_sentence': [],
         'early_discharge_supervision_sentence': [],
         'movement_facility_location_offstat_incarceration_periods': [],
         'movement_facility_location_offstat_supervision_periods': [],
         'ofndr_tst_tst_qstn_rspns_violation_reports': [],
         'ofndr_tst_tst_qstn_rspns_violation_reports_old': [],
         'ofndr_agnt_applc_usr_body_loc_cd_current_pos': [
             # TODO(1883): Would not need this file postprocessor if our data extractor would add the main entity to
             #  our 'extracted_objects' cache when a single id field is used in the following situation:
             #   - the only key in "keys"
             #   - reused as a child key
             gen_convert_person_ids_to_external_id_objects(self._get_id_type
                                                           ),
         ],
     }