def meets_criteria_none(self) -> Optional[bool]: h = self.meets_criteria_hypomania() m = self.meets_criteria_mania_ignoring_psychosis() if h or m: return False if is_false(h) and is_false(m): return True return None
def meets_criteria(self) -> Optional[bool]: if (self.mixture_or_rapid_alternation and self.duration_at_least_2_weeks): return True if is_false(self.mixture_or_rapid_alternation): return False if is_false(self.duration_at_least_2_weeks): return False return None
def meets_criteria_hypomania(self) -> Optional[bool]: # When can we say "definitely not"? if self.meets_criteria_mania_ignoring_psychosis(): return False # silly to call it hypomania if it's mania if is_false(self.mood_elevated) and is_false(self.mood_irritable): return False if is_false(self.sustained4days): return False t = self.count_booleans(self.HYPOMANIA_MANIA_NAMES) u = self.n_fields_none(self.HYPOMANIA_MANIA_NAMES) if t + u < 3: # Need at least 3 symptoms return False if is_false(self.some_interference_functioning): return False # OK. When can we say "yes"? if ((self.mood_elevated or self.mood_irritable) and self.sustained4days and t >= 3 and self.some_interference_functioning): return True return None
def meets_criteria_mania_ignoring_psychosis(self) -> Optional[bool]: # When can we say "definitely not"? if is_false(self.mood_elevated) and is_false(self.mood_irritable): return False if is_false(self.sustained7days) and is_false(self.admission_required): return False t = self.count_booleans( self.HYPOMANIA_MANIA_NAMES) + self.count_booleans(self.MANIA_NAMES) u = self.n_fields_none( self.HYPOMANIA_MANIA_NAMES) + self.n_fields_none(self.MANIA_NAMES) if self.mood_elevated and (t + u < 3): # With elevated mood, need at least 3 symptoms return False if is_false(self.mood_elevated) and (t + u < 4): # With only irritable mood, need at least 4 symptoms return False if is_false(self.severe_interference_functioning): return False # OK. When can we say "yes"? if ((self.mood_elevated or self.mood_irritable) and (self.sustained7days or self.admission_required) and ((self.mood_elevated and t >= 3) or (self.mood_irritable and t >= 4)) and self.severe_interference_functioning): return True return None
def meets_general_criteria(self) -> Optional[bool]: t_a = self.count_booleans(Icd10Schizophrenia.A_NAMES) u_a = self.n_incomplete(Icd10Schizophrenia.A_NAMES) t_b = self.count_booleans(Icd10Schizophrenia.B_NAMES) + \ self.count_booleans(Icd10Schizophrenia.C_NAMES) u_b = self.n_incomplete(Icd10Schizophrenia.B_NAMES) + \ self.n_incomplete(Icd10Schizophrenia.C_NAMES) if t_a + u_a < 1 and t_b + u_b < 2: return False if self.present_one_month is not None and not self.present_one_month: return False if ((self.also_manic or self.also_depressive) and is_false(self.if_mood_psychosis_first)): return False if is_false(self.not_organic_or_substance): return False if ((t_a >= 1 or t_b >= 2) and self.present_one_month and ((is_false(self.also_manic) and is_false(self.also_depressive)) or self.if_mood_psychosis_first) and self.not_organic_or_substance): return True return None
def is_pd_excluded(self) -> bool: return ( is_false(self.g1) or is_false(self.g2) or is_false(self.g3) or is_false(self.g4) or is_false(self.g5) or is_false(self.g6) or ( self.all_fields_not_none(self.GENERAL_1_FIELDS) and self.count_booleans(self.GENERAL_1_FIELDS) <= 1 ) )