def test_HB_notrump(self): cols = [ 'patient_id', 'encounter_id', 'inpatient', 'admission', 'time', 'creatinine' ] row0 = [ 1234, 12345, False, pd.Timestamp('2020-05-24 12:00:02'), pd.Timestamp('2020-05-22 12:00:01'), 2.0 ] row1 = [ 1234, 12345, True, pd.Timestamp('2020-05-24 12:00:02'), pd.Timestamp('2020-05-24 12:00:02'), 1.0 ] row2 = [ 1234, 12345, True, pd.Timestamp('2020-05-24 12:00:02'), pd.Timestamp('2020-05-24 12:00:03'), 1.3 ] df = pd.DataFrame([row0, row1, row2], columns=cols) flagger = AKIFlagger( HB_trumping=True, add_baseline_creat=True ) #HB_trumping is set to True but there is no baseline value... so it should switch to RM then # Ensure proper output out = flagger.returnAKIpatients(df) self.assertTrue(np.all(out.baseline_creat.isnull())) self.assertEqual(out.aki.iloc[0], 0) self.assertEqual(out.aki.iloc[1], 0) self.assertEqual(out.aki.iloc[2], 1)
def test_PatientD_HB(self): cols = [ 'patient_id', 'encounter_id', 'inpatient', 'admission', 'time', 'creatinine' ] row0 = [ 1234, 12345, False, pd.Timestamp('2020-05-24 12:00:02'), pd.Timestamp('2020-01-01 12:00:01'), 2.0 ] # Patient X has a baseline creatinine of 2 row1 = [ 1234, 12345, True, pd.Timestamp('2020-05-24 12:00:02'), pd.Timestamp('2020-05-24 12:00:02'), 1 ] # Admission creatinine row2 = [ 1234, 12345, True, pd.Timestamp('2020-05-24 12:00:02'), pd.Timestamp('2020-05-26 12:00:02'), 1.3 ] row3 = [ 1234, 12345, True, pd.Timestamp('2020-05-24 12:00:02'), pd.Timestamp('2020-05-28 12:00:02'), 1.6 ] df = pd.DataFrame([row0, row1, row2, row3], columns=cols) flagger = AKIFlagger(HB_trumping=True) # Ensure proper output out = flagger.returnAKIpatients(df) self.assertFalse(out.aki.iloc[0]) self.assertFalse(out.aki.iloc[1]) self.assertFalse(out.aki.iloc[2]) self.assertTrue(out.aki.iloc[3])
def test_AssertionErrors(self): print('Testing Assertion Error checks...') # Set-up: dataframe + flagger cols = [ 'patient_id', 'encounter_id', 'inpatient', 'admission', 'time', 'creatinine' ] row = [ 1234, 12345, False, pd.Timestamp('2020-02-27 12:00:01'), pd.Timestamp('2020-02-27 12:00:02'), 1.3 ] df = pd.DataFrame([row], columns=cols) flagger = AKIFlagger() # Now drop the necessary columns and ensure it throws an error with self.assertRaises(AssertionError): flagger.returnAKIpatients( df.drop(['patient_id', 'encounter_id'], axis=1)) with self.assertRaises(AssertionError): flagger.returnAKIpatients(df.drop('inpatient', axis=1)) with self.assertRaises(AssertionError): flagger.returnAKIpatients(df.drop('time', axis=1)) with self.assertRaises(AssertionError): flagger.returnAKIpatients(df.drop('creatinine', axis=1)) print('Success!\n')
def test_patientA_HB(self): cols = [ 'patient_id', 'encounter_id', 'inpatient', 'admission', 'time', 'creatinine' ] row0 = [ 1234, 12345, False, pd.Timestamp('2020-05-24 12:00:02'), pd.Timestamp('2020-01-01 12:00:01'), 1.0 ] # Baseline creatinine row1 = [ 1234, 12345, True, pd.Timestamp('2020-05-24 12:00:02'), pd.Timestamp('2020-05-24 12:00:02'), 1.0 ] # Admission creatinine row2 = [ 1234, 12345, True, pd.Timestamp('2020-05-24 12:00:02'), pd.Timestamp('2020-05-25 12:00:01'), 1.29 ] row3 = [ 1234, 12345, True, pd.Timestamp('2020-05-24 12:00:02'), pd.Timestamp('2020-05-25 12:00:02'), 1.3 ] row4 = [ 1234, 12345, True, pd.Timestamp('2020-05-24 12:00:02'), pd.Timestamp('2020-05-28 12:00:02'), 2 ] row5 = [ 1234, 12345, True, pd.Timestamp('2020-05-24 12:00:02'), pd.Timestamp('2020-05-30 12:00:02'), 3 ] df = pd.DataFrame([row0, row1, row2, row3, row4, row5], columns=cols) flagger = AKIFlagger(HB_trumping=True) # Ensure proper output out = flagger.returnAKIpatients(df) self.assertFalse(out.aki.iloc[0]) # 1.0 self.assertFalse(out.aki.iloc[1]) # 1.0 self.assertFalse(out.aki.iloc[2]) # 1.29 self.assertEqual( out.aki.iloc[3], 1 ) # 1.3 --> UPDATED Version 0.3.5+: 0.3 condition is counted in HB_trumping now. self.assertEqual(out.aki.iloc[4], 2) # 2 self.assertEqual(out.aki.iloc[5], 3) # 3 print('Sucess!\n')
def test_patientC_HB( self): # Patient C doesn't meet the rolling minimum criterion cols = [ 'patient_id', 'encounter_id', 'inpatient', 'admission', 'time', 'creatinine' ] row0 = [ 1234, 12345, False, pd.Timestamp('2020-05-24 12:00:02'), pd.Timestamp('2020-01-01 12:00:01'), 1.0 ] # Baseline creatinine row1 = [ 1234, 12345, True, pd.Timestamp('2020-05-24 12:00:02'), pd.Timestamp('2020-05-24 12:00:02'), 1.1 ] # Admission creatinine row2 = [ 1234, 12345, True, pd.Timestamp('2020-05-24 12:00:02'), pd.Timestamp('2020-05-25 12:00:01'), 1.1 ] row3 = [ 1234, 12345, True, pd.Timestamp('2020-05-24 12:00:02'), pd.Timestamp('2020-05-26 12:00:04'), 1.3 ] row4 = [ 1234, 12345, True, pd.Timestamp('2020-05-24 12:00:02'), pd.Timestamp('2020-05-28 12:00:02'), 1.5 ] df = pd.DataFrame([row0, row1, row2, row3, row4], columns=cols) flagger = AKIFlagger(HB_trumping=True) # Ensure proper output out = flagger.returnAKIpatients(df) self.assertFalse(out.aki.iloc[0]) self.assertFalse(out.aki.iloc[1]) self.assertFalse(out.aki.iloc[2]) self.assertTrue(out.aki.iloc[3]) self.assertTrue( out.aki.iloc[4]) # But on the last one, RM should trigger
def test_patientB_RM( self ): # Identical to patientA, except their baseline is now 1.1 instead of 1.0 cols = [ 'patient_id', 'encounter_id', 'inpatient', 'admission', 'time', 'creatinine' ] row0 = [ 1234, 12345, False, pd.Timestamp('2020-05-24 12:00:02'), pd.Timestamp('2020-01-01 12:00:01'), 1.1 ] # Baseline creatinine row1 = [ 1234, 12345, True, pd.Timestamp('2020-05-24 12:00:02'), pd.Timestamp('2020-05-24 12:00:02'), 1.0 ] # Admission creatinine row2 = [ 1234, 12345, True, pd.Timestamp('2020-05-24 12:00:02'), pd.Timestamp('2020-05-25 12:00:01'), 1.29 ] row3 = [ 1234, 12345, True, pd.Timestamp('2020-05-24 12:00:02'), pd.Timestamp('2020-05-25 12:00:02'), 1.3 ] row4 = [ 1234, 12345, True, pd.Timestamp('2020-05-24 12:00:02'), pd.Timestamp('2020-05-28 12:00:02'), 2 ] row5 = [ 1234, 12345, True, pd.Timestamp('2020-05-24 12:00:02'), pd.Timestamp('2020-05-29 12:00:02'), 2.2 ] row6 = [ 1234, 12345, True, pd.Timestamp('2020-05-24 12:00:02'), pd.Timestamp('2020-05-30 12:00:02'), 3 ] row7 = [ 1234, 12345, True, pd.Timestamp('2020-05-24 12:00:02'), pd.Timestamp('2020-05-30 12:00:03'), 3.3 ] df = pd.DataFrame([row0, row1, row2, row3, row4, row5, row6, row7], columns=cols) flagger = AKIFlagger(HB_trumping=False) #Ensure proper output out = flagger.returnAKIpatients(df) self.assertFalse(out.aki.iloc[0]) # 1.1 self.assertFalse(out.aki.iloc[1]) # 1.0 self.assertFalse(out.aki.iloc[2]) # 1.29 self.assertTrue( out.aki.iloc[3] ) # 1.3 ---> This is the criterion that meets RM but not HB self.assertEqual(out.aki.iloc[4], 2) # 2 self.assertEqual(out.aki.iloc[5], 2) # 2.2 self.assertEqual(out.aki.iloc[6], 3) # 3 self.assertEqual(out.aki.iloc[7], 3) # 3.3