示例#1
0
def get_next_assessment_date(client: ETLClient) -> Optional[date]:
    """Calculates the next assessment date for the given case."""

    # TODO(#5769): Eventually move this calculation to our calculate pipeline.
    # In the meantime, we're hard-coding the relation to US_ID as a quick stop gap
    if client.state_code != "US_ID":
        raise CaseTriageInvalidStateException(client.state_code)

    if client.supervision_level == StateSupervisionLevel.INTERNAL_UNKNOWN.value:
        return None

    if client.most_recent_assessment_date is None or client.assessment_score is None:
        if client.supervision_start_date is None:
            # We expect that supervision_start_date is filled in, but in instances where
            # our default calc pipeline look back period is shorter than the amount of time
            # someone has been on supervision, it will be empty.
            #
            # We log the warning, but still want to fail gracefully.
            logging.warning(
                "Supervision start date unexpectedly empty for client with id %s in state %s",
                client.person_external_id,
                client.state_code,
            )
            return None
        return client.supervision_start_date + timedelta(
            days=NEW_SUPERVISION_ASSESSMENT_DEADLINE_DAYS)
    if client.case_type == StateSupervisionCaseType.SEX_OFFENSE.value:
        if (client.gender is not None and client.assessment_score <
                SEX_OFFENSE_LSIR_MINIMUM_SCORE.get(Gender(client.gender), 0)):
            return None
    if StateSupervisionLevel(
            client.supervision_level) == StateSupervisionLevel.MINIMUM:
        return None
    return client.most_recent_assessment_date + timedelta(
        days=REASSESSMENT_DEADLINE_DAYS)
示例#2
0
    def testWrite_SingleCountWithGender(self):
        store_single_count(SingleCount(count=_COUNT, gender=Gender.FEMALE),
                           '01001001')

        query = SessionFactory.for_schema_base(JailsBase).query(
            SingleCountAggregate)
        result = one(query.all())

        self.assertEqual(result.jid, _JID)
        self.assertEqual(result.count, _COUNT)
        self.assertEqual(Gender(result.gender), Gender.FEMALE)
示例#3
0
    def testWrite_SingleCountWithGender(self):
        store_single_count(SingleCount(count=_COUNT, gender=Gender.FEMALE),
                           "01001001")

        with SessionFactory.using_database(self.database_key,
                                           autocommit=False) as session:
            query = session.query(SingleCountAggregate)
            result = one(query.all())

        self.assertEqual(result.jid, _JID)
        self.assertEqual(result.count, _COUNT)
        self.assertEqual(Gender(result.gender), Gender.FEMALE)
示例#4
0
 def _next_assessment_date(self) -> Optional[date]:
     # TODO(#5769): Eventually move this method to our calculate pipeline.
     if (self.etl_client.most_recent_assessment_date is None
             or self.etl_client.assessment_score is None):
         return self.etl_client.supervision_start_date + timedelta(
             days=NEW_SUPERVISION_ASSESSMENT_DEADLINE_DAYS)
     if self.etl_client.case_type == StateSupervisionCaseType.SEX_OFFENSE.value:
         if self.etl_client.assessment_score < SEX_OFFENSE_LSIR_MINIMUM_SCORE.get(
                 Gender(self.etl_client.gender), 0):
             return None
     if (StateSupervisionLevel(self.etl_client.supervision_level) ==
             StateSupervisionLevel.MINIMUM):
         return None
     return self.etl_client.most_recent_assessment_date + timedelta(
         days=REASSESSMENT_DEADLINE_DAYS)
 def test_parseBadGenderEnum(self):
     with pytest.raises(EnumParsingError):
         Gender.parse("ABD", EnumOverrides.empty())
 def test_parseGenderEnum(self):
     assert Gender.parse("Male", EnumOverrides.empty()) == Gender.MALE