Пример #1
0
    def testParseStateIncarcerationPeriod_temporaryCustody_overwriteAdmission(
            self):
        # Arrange
        ingest_incarceration = ingest_info_pb2.StateIncarcerationPeriod(
            status='NOT_IN_CUSTODY',
            incarceration_type='STATE_PRISON',
            admission_reason='PAROLE_REVOCATION',
            release_reason='RELEASED_FROM_TEMPORARY_CUSTODY',
            admission_date='1/2/2111',
            release_date='2/2/2112',
            state_code='us_nd')

        # Act
        incarceration_builder = entities.StateIncarcerationPeriod.builder()
        state_incarceration_period.copy_fields_to_builder(
            incarceration_builder, ingest_incarceration, _EMPTY_METADATA)
        result = incarceration_builder.build()

        # Assert
        expected_result = entities.StateIncarcerationPeriod.new_with_defaults(
            status=StateIncarcerationPeriodStatus.NOT_IN_CUSTODY,
            status_raw_text='NOT_IN_CUSTODY',
            incarceration_type=StateIncarcerationType.STATE_PRISON,
            incarceration_type_raw_text='STATE_PRISON',
            admission_reason=StateIncarcerationPeriodAdmissionReason.
            TEMPORARY_CUSTODY,
            admission_reason_raw_text='PAROLE_REVOCATION',
            release_reason=StateIncarcerationPeriodReleaseReason.
            RELEASED_FROM_TEMPORARY_CUSTODY,
            release_reason_raw_text='RELEASED_FROM_TEMPORARY_CUSTODY',
            admission_date=date(year=2111, month=1, day=2),
            release_date=date(year=2112, month=2, day=2),
            state_code='US_ND')

        self.assertEqual(result, expected_result)
Пример #2
0
    def testParseStateIncarcerationPeriod(self):
        # Arrange
        ingest_incarceration = ingest_info_pb2.StateIncarcerationPeriod(
            status="NOT_IN_CUSTODY",
            incarceration_type="STATE_PRISON",
            facility_security_level="MEDIUM",
            admission_reason="PAROLE_REVOCATION",
            projected_release_reason="CONDITIONAL_RELEASE",
            release_reason="SERVED",
            state_incarceration_period_id="INCARCERATION_ID",
            specialized_purpose_for_incarceration="SHOCK INCARCERATION",
            admission_date="1/2/2111",
            release_date="2/2/2112",
            state_code="us_nd",
            county_code="bis",
            facility="The Prison",
            housing_unit="CB4",
            custodial_authority="STATE_PRISON",
        )

        # Act
        incarceration_builder = entities.StateIncarcerationPeriod.builder()
        state_incarceration_period.copy_fields_to_builder(
            incarceration_builder, ingest_incarceration, _EMPTY_METADATA)
        result = incarceration_builder.build()

        # Assert
        expected_result = entities.StateIncarcerationPeriod(
            status=StateIncarcerationPeriodStatus.NOT_IN_CUSTODY,
            status_raw_text="NOT_IN_CUSTODY",
            incarceration_type=StateIncarcerationType.STATE_PRISON,
            incarceration_type_raw_text="STATE_PRISON",
            facility_security_level=StateIncarcerationFacilitySecurityLevel.
            MEDIUM,
            facility_security_level_raw_text="MEDIUM",
            admission_reason=StateIncarcerationPeriodAdmissionReason.
            PAROLE_REVOCATION,
            admission_reason_raw_text="PAROLE_REVOCATION",
            projected_release_reason=StateIncarcerationPeriodReleaseReason.
            CONDITIONAL_RELEASE,
            projected_release_reason_raw_text="CONDITIONAL_RELEASE",
            release_reason=StateIncarcerationPeriodReleaseReason.
            SENTENCE_SERVED,
            release_reason_raw_text="SERVED",
            specialized_purpose_for_incarceration=
            StateSpecializedPurposeForIncarceration.SHOCK_INCARCERATION,
            specialized_purpose_for_incarceration_raw_text=
            "SHOCK INCARCERATION",
            external_id="INCARCERATION_ID",
            admission_date=date(year=2111, month=1, day=2),
            release_date=date(year=2112, month=2, day=2),
            state_code="US_ND",
            county_code="BIS",
            facility="THE PRISON",
            housing_unit="CB4",
            custodial_authority=StateCustodialAuthority.STATE_PRISON,
            custodial_authority_raw_text="STATE_PRISON",
        )

        self.assertEqual(result, expected_result)
Пример #3
0
    def testParseStateIncarcerationPeriod_inferStatus_releaseDate(self):
        # Arrange
        ingest_incarceration = ingest_info_pb2.StateIncarcerationPeriod(
            incarceration_type="STATE_PRISON",
            admission_date="1/2/2111",
            release_date="1/2/2112",
            state_code="us_nd",
        )

        # Act
        incarceration_builder = entities.StateIncarcerationPeriod.builder()
        state_incarceration_period.copy_fields_to_builder(
            incarceration_builder, ingest_incarceration, _EMPTY_METADATA)
        result = incarceration_builder.build()

        # Assert
        expected_result = entities.StateIncarcerationPeriod.new_with_defaults(
            status=StateIncarcerationPeriodStatus.NOT_IN_CUSTODY,
            incarceration_type=StateIncarcerationType.STATE_PRISON,
            incarceration_type_raw_text="STATE_PRISON",
            admission_date=date(year=2111, month=1, day=2),
            release_date=date(year=2112, month=1, day=2),
            state_code="US_ND",
        )

        self.assertEqual(result, expected_result)
Пример #4
0
    def testParseStateIncarcerationPeriod(self):
        # Arrange
        ingest_incarceration = ingest_info_pb2.StateIncarcerationPeriod(
            status='NOT_IN_CUSTODY',
            incarceration_type='STATE_PRISON',
            facility_security_level='MEDIUM',
            admission_reason='PAROLE_REVOCATION',
            projected_release_reason='CONDITIONAL_RELEASE',
            release_reason='SERVED',
            state_incarceration_period_id='INCARCERATION_ID',
            specialized_purpose_for_incarceration='SHOCK INCARCERATION',
            admission_date='1/2/2111',
            release_date='2/2/2112',
            state_code='us_nd',
            county_code='bis',
            facility='The Prison',
            housing_unit='CB4')

        # Act
        incarceration_builder = entities.StateIncarcerationPeriod.builder()
        state_incarceration_period.copy_fields_to_builder(
            incarceration_builder, ingest_incarceration, _EMPTY_METADATA)
        result = incarceration_builder.build()

        # Assert
        expected_result = entities.StateIncarcerationPeriod(
            status=StateIncarcerationPeriodStatus.NOT_IN_CUSTODY,
            status_raw_text='NOT_IN_CUSTODY',
            incarceration_type=StateIncarcerationType.STATE_PRISON,
            incarceration_type_raw_text='STATE_PRISON',
            facility_security_level=StateIncarcerationFacilitySecurityLevel.
            MEDIUM,
            facility_security_level_raw_text='MEDIUM',
            admission_reason=StateIncarcerationPeriodAdmissionReason.
            PAROLE_REVOCATION,
            admission_reason_raw_text='PAROLE_REVOCATION',
            projected_release_reason=StateIncarcerationPeriodReleaseReason.
            CONDITIONAL_RELEASE,
            projected_release_reason_raw_text='CONDITIONAL_RELEASE',
            release_reason=StateIncarcerationPeriodReleaseReason.
            SENTENCE_SERVED,
            release_reason_raw_text='SERVED',
            specialized_purpose_for_incarceration=
            StateSpecializedPurposeForIncarceration.SHOCK_INCARCERATION,
            specialized_purpose_for_incarceration_raw_text=
            'SHOCK INCARCERATION',
            external_id='INCARCERATION_ID',
            admission_date=date(year=2111, month=1, day=2),
            release_date=date(year=2112, month=2, day=2),
            state_code='US_ND',
            county_code='BIS',
            facility='THE PRISON',
            housing_unit='CB4',
        )

        self.assertEqual(result, expected_result)
Пример #5
0
    def _convert_incarceration_period(
            self, ingest_incarceration_period: StateIncarcerationPeriod) \
            -> entities.StateIncarcerationPeriod:
        """Converts an ingest_info proto StateIncarcerationPeriod to a
        persistence entity."""
        incarceration_period_builder = \
            entities.StateIncarcerationPeriod.builder()

        state_incarceration_period.copy_fields_to_builder(
            incarceration_period_builder, ingest_incarceration_period,
            self.metadata)

        converted_incidents = [
            self._convert_incarceration_incident(
                self.incarceration_incidents[incident_id]) for incident_id in
            ingest_incarceration_period.state_incarceration_incident_ids
        ]
        incarceration_period_builder.incarceration_incidents = \
            converted_incidents

        converted_decisions = [
            self._convert_parole_decision(self.parole_decisions[decision_id])
            for decision_id in
            ingest_incarceration_period.state_parole_decision_ids
        ]
        incarceration_period_builder.parole_decisions = converted_decisions

        converted_assessments = [
            self._convert_assessment(self.assessments[assessment_id]) for
            assessment_id in ingest_incarceration_period.state_assessment_ids
        ]
        incarceration_period_builder.assessments = converted_assessments

        converted_program_assignments = [
            self._convert_program_assignment(
                self.program_assignments[assignment_id]) for assignment_id in
            ingest_incarceration_period.state_program_assignment_ids
        ]
        incarceration_period_builder.program_assignments = \
            converted_program_assignments

        if ingest_incarceration_period.source_supervision_violation_response_id:
            converted_source_violation_response = \
                self._convert_supervision_violation_response(
                    self.violation_responses[
                        ingest_incarceration_period.
                        source_supervision_violation_response_id])
            incarceration_period_builder.\
                source_supervision_violation_response = \
                converted_source_violation_response

        return incarceration_period_builder.build()
Пример #6
0
    def testParseStateIncarcerationPeriod_inferStatus_noDates(self):
        # Arrange
        ingest_incarceration = ingest_info_pb2.StateIncarcerationPeriod(
            incarceration_type='STATE_PRISON', state_code='us_nd')

        # Act
        incarceration_builder = entities.StateIncarcerationPeriod.builder()
        state_incarceration_period.copy_fields_to_builder(
            incarceration_builder, ingest_incarceration, _EMPTY_METADATA)
        result = incarceration_builder.build()

        # Assert
        expected_result = entities.StateIncarcerationPeriod.new_with_defaults(
            status=StateIncarcerationPeriodStatus.PRESENT_WITHOUT_INFO,
            incarceration_type=StateIncarcerationType.STATE_PRISON,
            incarceration_type_raw_text='STATE_PRISON',
            state_code='US_ND')

        self.assertEqual(result, expected_result)
Пример #7
0
    def _convert_incarceration_period(
            self, ingest_incarceration_period: StateIncarcerationPeriod) \
            -> entities.StateIncarcerationPeriod:
        """Converts an ingest_info proto StateIncarcerationPeriod to a
        persistence entity."""
        incarceration_period_builder = \
            entities.StateIncarcerationPeriod.builder()

        state_incarceration_period.copy_fields_to_builder(
            incarceration_period_builder,
            ingest_incarceration_period,
            self.metadata)

        converted_incidents = [
            self._convert_incarceration_incident(
                self.incarceration_incidents[incident_id])
            for incident_id
            in ingest_incarceration_period.state_incarceration_incident_ids
        ]
        incarceration_period_builder.incarceration_incidents = \
            converted_incidents

        converted_decisions = [
            self._convert_parole_decision(self.parole_decisions[decision_id])
            for decision_id
            in ingest_incarceration_period.state_parole_decision_ids
        ]
        incarceration_period_builder.parole_decisions = converted_decisions

        converted_assessments = [
            self._convert_assessment(self.assessments[assessment_id])
            for assessment_id
            in ingest_incarceration_period.state_assessment_ids
        ]
        incarceration_period_builder.assessments = converted_assessments

        return incarceration_period_builder.build()