In [1]:
from pandas import *
import os, os.path
import sys

sys.path.append('/home/will/HIVReportGen/AnalysisCode/')

In [2]:
store = HDFStore('/home/will/HIVReportGen/Data/SplitRedcap/2013-01-16/EntireCohort.hdf')

In [3]:
redcap_data = store['redcap']
seq_data = store['seq_data']
visit_data = store['visit_redcap']
pat_data = store['pat_redcap']

In [4]:
ofields = ['Latest viral load', 'Latest CD4 count (cells/uL)', 'Total Modified Hopkins Dementia Score']
wanted_fields = ['CalcAge', 'Gender', 'Drug User Classification', 'Hepatitis C status (HCV)', 'Predicted-R5']
seq_fields = ['LTR', 'Vpr', 'Tat', 'V3']

In [5]:
have_seq = seq_data[seq_fields].apply(lambda x: x.notnull()).fillna(False)
pat_fields = visit_data
all_fields = concat([pat_fields, have_seq], axis = 1)
all_fields['Predicted-R5'] = all_fields['Predicted-R5']>=0.8

In [6]:
def check_fun(df):
    wanted_drugs = ["Current ART (choice='%s')" % d for d in ['TDF', 'Truvada', 'Atripla']] 
    start_niave = df['Current ART status'][0] == 'naive'
    on_therapy = (df['Current ART status'] == 'on').any()
    
    on_wanted = df[wanted_drugs].any().any()
    return start_niave & on_therapy & on_wanted



wanted_drugs = ["Current ART (choice='%s')" % d for d in ['TDF', 'Truvada', 'Atripla']] 
tdata = all_fields[['Current ART status'] + wanted_drugs]
res = tdata.groupby(level = 0).apply(check_fun)

In [7]:
all_fields.index.names = ['Patient ID', 'Visit Number']
output = merge(all_fields[[]].reset_index(), DataFrame({'result':res}), left_on = 'Patient ID', right_index = True)
print output[['Patient ID', 'Visit Number', 'result']].head(n = 20).to_string()


   Patient ID Visit Number result
0       A0001          R00  False
1       A0001          R01  False
2       A0001          R02  False
3       A0001          R03  False
4       A0001          R04  False
5       A0001          R05  False
6       A0001          R06  False
7       A0002          R00  False
8       A0002          R01  False
9       A0002          R02  False
10      A0002          R03  False
11      A0002          R04  False
12      A0002          R05  False
13      A0002          R06  False
14      A0002          R07  False
15      A0002          R08  False
16      A0002          R09  False
17      A0002          R10  False
18      A0003          R00  False
19      A0004          R00  False

In [63]:
output.to_csv('/home/will/tmpstuf/drugged_data.csv')

In [6]:
all_fields.fillna(False).to_csv('/home/will/HIVSystemsBio/NewPatientInfo_extreme.csv')

In [29]:
ols?

In [8]:
mask = redcap_data['Patient ID'] == 'A0008'
ofields = ['Latest viral load', 'Latest CD4 count (cells/uL)', 'Total Modified Hopkins Dementia Score']
other_fields = ['Gender', 'Current ART status', 'Age', 'Hepatitis C status (HCV)', 'Hepatitis B status (HBV)', 'Years seropositive', 'HIV seropositive date']
race_fields = ["Race (choice='Asian')",
"Race (choice='American Indian/Alaska Native')",
"Race (choice='Black or African American')",
"Race (choice='Native Hawaiian or other Pacific Islander')",
"Race (choice='White')",
"Race (choice='More than one race')",
"Race (choice='Unknown')",
]

drug_fields = [
'Amphetamines',
'Barbiturates',
'Benzodiazepines',
'Cannabinoid',
'Cocaine + metabolite',
'Opiates',
'Phencyclidine']

print redcap_data[['Patient visit number', 'Date of visit']+ other_fields][mask].to_string(), '\n\n\n\n'
print redcap_data[['Patient visit number', 'Date of visit']+ ofields][mask].to_string(), '\n\n\n\n'
print redcap_data[['Patient visit number', 'Date of visit']+ race_fields][mask].T.to_string(), '\n\n\n\n'
print redcap_data[['Patient visit number', 'Date of visit']+ drug_fields][mask].to_string(), '\n\n\n\n'


   Patient visit number        Date of visit Gender Current ART status  Age Hepatitis C status (HCV) Hepatitis B status (HBV) Years seropositive HIV seropositive date
34                  R00  2006-09-19 00:00:00   Male                 on   50                     True                      NaN                  9   1997-02-19 00:00:00
35                  R01  2007-08-08 00:00:00   Male                 on   51                     True                      NaN                 11   1996-02-19 00:00:00
36                  R02  2008-01-04 00:00:00   Male                 on   51                     True                      NaN                 12   1996-02-19 00:00:00
37                  R03  2008-12-23 00:00:00   Male                 on   52                     True                    False                 12   1996-02-19 00:00:00
38                  R04  2009-12-01 00:00:00   Male                 on   53                     True                    False                 15   1994-02-19 00:00:00
39                  R05  2010-01-06 00:00:00   Male                 on   53                     True                    False                 16   1994-02-19 00:00:00 




   Patient visit number        Date of visit  Latest viral load  Latest CD4 count (cells/uL)  Total Modified Hopkins Dementia Score
34                  R00  2006-09-19 00:00:00                 59                          412                                    NaN
35                  R01  2007-08-08 00:00:00                 50                          372                                    NaN
36                  R02  2008-01-04 00:00:00                 96                          370                                      6
37                  R03  2008-12-23 00:00:00                 50                          246                                     12
38                  R04  2009-12-01 00:00:00                 48                          595                                     12
39                  R05  2010-01-06 00:00:00                 48                          527                                     11 




                                                                            34                   35                   36                   37                   38                   39
Patient visit number                                                       R00                  R01                  R02                  R03                  R04                  R05
Date of visit                                              2006-09-19 00:00:00  2007-08-08 00:00:00  2008-01-04 00:00:00  2008-12-23 00:00:00  2009-12-01 00:00:00  2010-01-06 00:00:00
Race (choice='Asian')                                                    False                False                False                False                False                False
Race (choice='American Indian/Alaska Native')                            False                False                False                False                False                False
Race (choice='Black or African American')                                 True                 True                 True                 True                 True                 True
Race (choice='Native Hawaiian or other Pacific Islander')                False                False                False                False                False                False
Race (choice='White')                                                    False                False                False                False                False                False
Race (choice='More than one race')                                       False                False                False                False                False                False
Race (choice='Unknown')                                                  False                False                False                False                False                False 




   Patient visit number        Date of visit Amphetamines Barbiturates Benzodiazepines Cannabinoid Cocaine + metabolite Opiates Phencyclidine
34                  R00  2006-09-19 00:00:00        False        False           False       False                 True   False         False
35                  R01  2007-08-08 00:00:00        False        False           False       False                False   False         False
36                  R02  2008-01-04 00:00:00        False        False           False        True                 True   False         False
37                  R03  2008-12-23 00:00:00        False        False           False       False                False   False         False
38                  R04  2009-12-01 00:00:00          NaN          NaN             NaN         NaN                  NaN     NaN           NaN
39                  R05  2010-01-06 00:00:00          NaN          NaN             NaN         NaN                  NaN     NaN           NaN 





In [11]:
t = redcap_data['Event Name'].apply(lambda x: int(x.split(' - ')[0][1:]))
t.unique()
redcap_data['VisitNum'] = redcap_data['VisitNum'].combine_first(t)

In [15]:
t = all_fields['Event Name'].dropna().apply(lambda x: int(x.split(' - ')[0][1:]))

all_fields['VisitNum'] = all_fields['VisitNum'].combine_first(t)

In [20]:
all_fields['Drug User Classification'].unique()


Out[20]:
array([Supreme Barbiturates, Non-User but Admitted to something,
       Supreme Cocaine, Multi-User, Ever Cocaine, Non-User,
       Extreme Cannabinoid, Ever Cannabinoid, nan, Supreme Cannabinoid,
       Pure Cocaine, Extreme Cocaine, Pure Opiates, Pure Cannabinoid,
       Preferential Cocaine, Extreme Opiates, Supreme Benzodiazepines,
       Supreme Amphetamines, Supreme Opiates, Untested,
       Pure Benzodiazepines], dtype=object)

In [33]:
drug_fields = [
'Cocaine + metabolite',
'Amphetamines',
'Barbiturates',
'Benzodiazepines',
'Cannabinoid',
'Opiates',
'Phencyclidine']

drug_fields[1:]


Out[33]:
['Amphetamines',
 'Barbiturates',
 'Benzodiazepines',
 'Cannabinoid',
 'Opiates',
 'Phencyclidine']

In [39]:
drug_fields = [
'Cocaine + metabolite',
'Amphetamines',
'Barbiturates',
'Benzodiazepines',
'Cannabinoid',
'Opiates',
'Phencyclidine']

admit_fields = [
"Drugs used (choice='Marijuana')",
"Drugs used (choice='Cocaine (crack, nasal, smoke, inject)')",
"Drugs used (choice='Heroin (nasal, inject)')",
"Drugs used (choice='Methamphetamine (smoke, nasal, inject)')",
"Drugs used (choice='Benzodiazapine (i.e. valium, ativan, xanax, klonipin, etc)')",
"Drugs used (choice='Narcotics')",
"Drugs used (choice='Ecstasy')",
"Drugs used (choice='PCP')",
"Drugs used (choice='Ritalin')",
"Drugs used (choice='Other')"]

tmp = all_fields[drug_fields + admit_fields +['LTR']].reset_index()

def check_PN(df):
    any_pos = df[drug_fields].any().any()
    any_admit = df[admit_fields].any().any()
    return (any_admit | any_pos)

def check_PC(df):
    pos_coc = df[drug_fields[0]].any()
    pos_other = df[drug_fields[1:]].any().any()
    return pos_coc and ~pos_other

def check_mdu(df):
    num_pos = df[drug_fields].any().sum()
    return num_pos > 1
    
def check_ltr(df):
    return df['LTR'].values[-1]

#print tmp
checks = {'LTR': check_ltr,
          'PN': check_PN,  
           'PC': check_PC,         
           'MDU': check_mdu,}
nchecks = list(checks.items())
res = []
valid_visits = tmp['Visit Number']=='A'
for visit in range(10):
    visit_str = 'R%02i' % visit
    visit_mask = tmp['Visit Number'] == visit_str
    valid_visits |= visit_mask
    res.append(('#Patients', visit_str, visit_mask.sum()))
    
    ntmp = tmp.ix[valid_visits]
    pats = ntmp.groupby('Patient ID')
    for pat, ndf in pats:
        for name, func in checks.items():
            nres = func(ndf)
            print nres
            raise KeyError
    
#df = DataFrame(res, columns = ['Header', 'VisitNum', 'Value'])
#res = pivot_table(df, rows = ['VisitNum'], cols='Header', values= 'Value')
#print res


---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-39-65f7c10153e2> in <module>()
     59             nres = func(ndf)
     60             print nres
---> 61             raise KeyError
     62 
     63 #df = DataFrame(res, columns = ['Header', 'VisitNum', 'Value'])

KeyError: 
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1430 entries, 0 to 1429
Data columns:
Patient ID                                                                          1430  non-null values
Visit Number                                                                        1430  non-null values
Cocaine + metabolite                                                                761  non-null values
Amphetamines                                                                        761  non-null values
Barbiturates                                                                        761  non-null values
Benzodiazepines                                                                     761  non-null values
Cannabinoid                                                                         761  non-null values
Opiates                                                                             761  non-null values
Phencyclidine                                                                       761  non-null values
Drugs used (choice='Marijuana')                                                     1399  non-null values
Drugs used (choice='Cocaine (crack, nasal, smoke, inject)')                         1399  non-null values
Drugs used (choice='Heroin (nasal, inject)')                                        1399  non-null values
Drugs used (choice='Methamphetamine (smoke, nasal, inject)')                        1399  non-null values
Drugs used (choice='Benzodiazapine (i.e. valium, ativan, xanax, klonipin, etc)')    1399  non-null values
Drugs used (choice='Narcotics')                                                     1399  non-null values
Drugs used (choice='Ecstasy')                                                       1399  non-null values
Drugs used (choice='PCP')                                                           1399  non-null values
Drugs used (choice='Ritalin')                                                       1399  non-null values
Drugs used (choice='Other')                                                         1399  non-null values
LTR                                                                                 1048  non-null values
dtypes: object(20)
False

In [44]:
tmp = read_csv('/home/will/HIVSystemsBio/NewCytokineAnalysis/CytoPatData.csv', sep = '\t')
wanted_pats = tmp['Patient ID']

wanted_data = {}
wanted_visits = dict([(p, v) for p,v in zip(tmp['Patient ID'].values, tmp['VisitNum'].values)])
for key, group in redcap_data.groupby('Patient ID'):
    if key in wanted_visits:
        vname = wanted_visits[key]
        wnum = int(vname[1:])
        wdata = group['VisitNum']<= wnum
        res = group[drug_fields].ix[wdata].mean(axis = 0)
        wanted_data[key] = res

print wanted_data.keys()[:5]
drug_mean = DataFrame(wanted_data).T.rename(columns = dict([(col, 'TOSample-'+col) for col in drug_fields]))

drug_mean.ix[wanted_pats].to_csv('/home/will/HIVSystemsBio/NewCytokineAnalysis/ToSampledrug.csv')


['A0238', 'A0406', 'A0002', 'A0168', 'A0294']

In [248]:
from itertools import groupby
import csv


def missing_test(visit_nums, visit_dates, check_ser):
    
    for v, date, val in zip(visit_nums, visit_dates, check_ser):
        if val != val:
            yield v, date, 'Missing Value', 1
    
def consistency_test(visit_nums, visit_dates, check_ser):
    
    #print t
    if len(check_ser.dropna().unique())>1:
        for v, date, val in zip(visit_nums, visit_dates, check_ser):
            yield v, date, 'Inconsitent Value', 1

def diagnose_test(visit_nums, visit_dates, check_ser, debug = False):
    
    tmp = DataFrame({'Visit':visit_nums, 'Date':visit_dates, 'Check':check_ser}).dropna()
    #print tmp
    tmp.sort(columns = 'Date')
    
    is_sick = False
    for _, row in tmp.iterrows():
        if (row['Check'] == False) and (is_sick == True):
            yield row['Visit'], row['Date'], 'Inconsistent Diagnosis', 1
        is_sick |= row['Check']==1
    
    

def nearby_date(check_dates, visit_dates):
    
    (check_dates - visit_dates).weeks


with open('/home/will/tmpstuf/test_smells.csv') as handle:
    junk = handle.next()
    check_rules = [row for row in csv.reader(handle, delimiter = '\t') if row[3].strip()]
    
messages = []
for patid, df in redcap_data.groupby('Patient ID'):
    for col, report_col, _, testfun in check_rules:
        
        if (testfun == 'consistency_test') or (testfun == 'date_consistency'):
            msgs = list(consistency_test(df['Patient visit number'], df['Date of visit'], df[col]))
        elif testfun == 'diagnose_test':
            #if col == 'Hepatitis C status (HCV)':
                #print col, df[col]
                #print len(list(diagnose_test(df['Patient visit number'], df['Date of visit'], df[col], debug = True)))
                #raise KeyError
            msgs = list(diagnose_test(df['Patient visit number'], df['Date of visit'], df[col]))
            
        else:
            msgs = list(missing_test(df['Patient visit number'], df['Date of visit'], df[col]))
            
        for v, date, msg, score in msgs:
            messages.append((col, report_col, patid, v, date, msg, score))

In [258]:
tmp = DataFrame(messages, columns = ['Colname', 'Grouping', 'Patient ID', 'Visit', 'VisitDate', 'Message', 'Wrongness'])

print tmp.head(n= 100).to_string()


                                              Colname            Grouping Patient ID Visit            VisitDate                 Message  Wrongness
0           Race (choice='Black or African American')                Race      A0001   R00  2006-09-12 00:00:00       Inconsitent Value          1
1           Race (choice='Black or African American')                Race      A0001   R01  2007-08-15 00:00:00       Inconsitent Value          1
2           Race (choice='Black or African American')                Race      A0001   R02  2008-06-04 00:00:00       Inconsitent Value          1
3           Race (choice='Black or African American')                Race      A0001   R03  2008-11-11 00:00:00       Inconsitent Value          1
4           Race (choice='Black or African American')                Race      A0001   R04  2009-11-10 00:00:00       Inconsitent Value          1
5           Race (choice='Black or African American')                Race      A0001   R05  2010-05-05 00:00:00       Inconsitent Value          1
6           Race (choice='Black or African American')                Race      A0001   R06  2010-12-14 00:00:00       Inconsitent Value          1
7                                              Weight              Weight      A0001   R00  2006-09-12 00:00:00           Missing Value          1
8                                              Weight              Weight      A0001   R01  2007-08-15 00:00:00           Missing Value          1
9                                              Weight              Weight      A0001   R02  2008-06-04 00:00:00           Missing Value          1
10                                             Weight              Weight      A0001   R03  2008-11-11 00:00:00           Missing Value          1
11                                             Weight              Weight      A0001   R04  2009-11-10 00:00:00           Missing Value          1
12                                             Weight              Weight      A0001   R05  2010-05-05 00:00:00           Missing Value          1
13  Exposure Category (choice='Injection drug use ...            Exposure      A0001   R00  2006-09-12 00:00:00       Inconsitent Value          1
14  Exposure Category (choice='Injection drug use ...            Exposure      A0001   R01  2007-08-15 00:00:00       Inconsitent Value          1
15  Exposure Category (choice='Injection drug use ...            Exposure      A0001   R02  2008-06-04 00:00:00       Inconsitent Value          1
16  Exposure Category (choice='Injection drug use ...            Exposure      A0001   R03  2008-11-11 00:00:00       Inconsitent Value          1
17  Exposure Category (choice='Injection drug use ...            Exposure      A0001   R04  2009-11-10 00:00:00       Inconsitent Value          1
18  Exposure Category (choice='Injection drug use ...            Exposure      A0001   R05  2010-05-05 00:00:00       Inconsitent Value          1
19  Exposure Category (choice='Injection drug use ...            Exposure      A0001   R06  2010-12-14 00:00:00       Inconsitent Value          1
20          Exposure Category (choice='Heterosexual')            Exposure      A0001   R00  2006-09-12 00:00:00       Inconsitent Value          1
21          Exposure Category (choice='Heterosexual')            Exposure      A0001   R01  2007-08-15 00:00:00       Inconsitent Value          1
22          Exposure Category (choice='Heterosexual')            Exposure      A0001   R02  2008-06-04 00:00:00       Inconsitent Value          1
23          Exposure Category (choice='Heterosexual')            Exposure      A0001   R03  2008-11-11 00:00:00       Inconsitent Value          1
24          Exposure Category (choice='Heterosexual')            Exposure      A0001   R04  2009-11-10 00:00:00       Inconsitent Value          1
25          Exposure Category (choice='Heterosexual')            Exposure      A0001   R05  2010-05-05 00:00:00       Inconsitent Value          1
26          Exposure Category (choice='Heterosexual')            Exposure      A0001   R06  2010-12-14 00:00:00       Inconsitent Value          1
27                       Initial CD8 count (cells/uL)  Clinical Variables      A0001   R00  2006-09-12 00:00:00           Missing Value          1
28                       Initial CD8 count (cells/uL)  Clinical Variables      A0001   R01  2007-08-15 00:00:00           Missing Value          1
29                         Nadir CD8 count (cells/uL)  Clinical Variables      A0001   R00  2006-09-12 00:00:00           Missing Value          1
30                         Nadir CD8 count (cells/uL)  Clinical Variables      A0001   R01  2007-08-15 00:00:00           Missing Value          1
31                           Hepatitis B status (HBV)          HBV Status      A0001   R03  2008-11-11 00:00:00  Inconsistent Diagnosis          1
32                           Hepatitis B status (HBV)          HBV Status      A0001   R04  2009-11-10 00:00:00  Inconsistent Diagnosis          1
33                           Hepatitis B status (HBV)          HBV Status      A0001   R05  2010-05-05 00:00:00  Inconsistent Diagnosis          1
34                           Hepatitis B status (HBV)          HBV Status      A0001   R06  2010-12-14 00:00:00  Inconsistent Diagnosis          1
35                        Year diagnosed HBV positive          HBV Status      A0001   R00  2006-09-12 00:00:00       Inconsitent Value          1
36                        Year diagnosed HBV positive          HBV Status      A0001   R01  2007-08-15 00:00:00       Inconsitent Value          1
37                        Year diagnosed HBV positive          HBV Status      A0001   R02  2008-06-04 00:00:00       Inconsitent Value          1
38                        Year diagnosed HBV positive          HBV Status      A0001   R03  2008-11-11 00:00:00       Inconsitent Value          1
39                        Year diagnosed HBV positive          HBV Status      A0001   R04  2009-11-10 00:00:00       Inconsitent Value          1
40                        Year diagnosed HBV positive          HBV Status      A0001   R05  2010-05-05 00:00:00       Inconsitent Value          1
41                        Year diagnosed HBV positive          HBV Status      A0001   R06  2010-12-14 00:00:00       Inconsitent Value          1
42                           Hepatitis C status (HCV)          HCV Status      A0001   R03  2008-11-11 00:00:00  Inconsistent Diagnosis          1
43                           Hepatitis C status (HCV)          HCV Status      A0001   R04  2009-11-10 00:00:00  Inconsistent Diagnosis          1
44                        Year diagnosed HCV positive          HCV Status      A0001   R00  2006-09-12 00:00:00       Inconsitent Value          1
45                        Year diagnosed HCV positive          HCV Status      A0001   R01  2007-08-15 00:00:00       Inconsitent Value          1
46                        Year diagnosed HCV positive          HCV Status      A0001   R02  2008-06-04 00:00:00       Inconsitent Value          1
47                        Year diagnosed HCV positive          HCV Status      A0001   R03  2008-11-11 00:00:00       Inconsitent Value          1
48                        Year diagnosed HCV positive          HCV Status      A0001   R04  2009-11-10 00:00:00       Inconsitent Value          1
49                        Year diagnosed HCV positive          HCV Status      A0001   R05  2010-05-05 00:00:00       Inconsitent Value          1
50                        Year diagnosed HCV positive          HCV Status      A0001   R06  2010-12-14 00:00:00       Inconsitent Value          1
51         Mental Health Issues (choice='Depression')       Mental Health      A0001   R00  2006-09-12 00:00:00       Inconsitent Value          1
52         Mental Health Issues (choice='Depression')       Mental Health      A0001   R01  2007-08-15 00:00:00       Inconsitent Value          1
53         Mental Health Issues (choice='Depression')       Mental Health      A0001   R02  2008-06-04 00:00:00       Inconsitent Value          1
54         Mental Health Issues (choice='Depression')       Mental Health      A0001   R03  2008-11-11 00:00:00       Inconsitent Value          1
55         Mental Health Issues (choice='Depression')       Mental Health      A0001   R04  2009-11-10 00:00:00       Inconsitent Value          1
56         Mental Health Issues (choice='Depression')       Mental Health      A0001   R05  2010-05-05 00:00:00       Inconsitent Value          1
57         Mental Health Issues (choice='Depression')       Mental Health      A0001   R06  2010-12-14 00:00:00       Inconsitent Value          1
58           Mental Health Issues (choice='Dementia')       Mental Health      A0001   R00  2006-09-12 00:00:00       Inconsitent Value          1
59           Mental Health Issues (choice='Dementia')       Mental Health      A0001   R01  2007-08-15 00:00:00       Inconsitent Value          1
60           Mental Health Issues (choice='Dementia')       Mental Health      A0001   R02  2008-06-04 00:00:00       Inconsitent Value          1
61           Mental Health Issues (choice='Dementia')       Mental Health      A0001   R03  2008-11-11 00:00:00       Inconsitent Value          1
62           Mental Health Issues (choice='Dementia')       Mental Health      A0001   R04  2009-11-10 00:00:00       Inconsitent Value          1
63           Mental Health Issues (choice='Dementia')       Mental Health      A0001   R05  2010-05-05 00:00:00       Inconsitent Value          1
64           Mental Health Issues (choice='Dementia')       Mental Health      A0001   R06  2010-12-14 00:00:00       Inconsitent Value          1
65             Mental Health Issues (choice='Stroke')       Mental Health      A0001   R00  2006-09-12 00:00:00       Inconsitent Value          1
66             Mental Health Issues (choice='Stroke')       Mental Health      A0001   R01  2007-08-15 00:00:00       Inconsitent Value          1
67             Mental Health Issues (choice='Stroke')       Mental Health      A0001   R02  2008-06-04 00:00:00       Inconsitent Value          1
68             Mental Health Issues (choice='Stroke')       Mental Health      A0001   R03  2008-11-11 00:00:00       Inconsitent Value          1
69             Mental Health Issues (choice='Stroke')       Mental Health      A0001   R04  2009-11-10 00:00:00       Inconsitent Value          1
70             Mental Health Issues (choice='Stroke')       Mental Health      A0001   R05  2010-05-05 00:00:00       Inconsitent Value          1
71             Mental Health Issues (choice='Stroke')       Mental Health      A0001   R06  2010-12-14 00:00:00       Inconsitent Value          1
72  Mental Health Issues (choice='Other neurologic...       Mental Health      A0001   R00  2006-09-12 00:00:00       Inconsitent Value          1
73  Mental Health Issues (choice='Other neurologic...       Mental Health      A0001   R01  2007-08-15 00:00:00       Inconsitent Value          1
74  Mental Health Issues (choice='Other neurologic...       Mental Health      A0001   R02  2008-06-04 00:00:00       Inconsitent Value          1
75  Mental Health Issues (choice='Other neurologic...       Mental Health      A0001   R03  2008-11-11 00:00:00       Inconsitent Value          1
76  Mental Health Issues (choice='Other neurologic...       Mental Health      A0001   R04  2009-11-10 00:00:00       Inconsitent Value          1
77  Mental Health Issues (choice='Other neurologic...       Mental Health      A0001   R05  2010-05-05 00:00:00       Inconsitent Value          1
78  Mental Health Issues (choice='Other neurologic...       Mental Health      A0001   R06  2010-12-14 00:00:00       Inconsitent Value          1
79                                             Weight              Weight      A0002   R00  2006-09-12 00:00:00           Missing Value          1
80                                             Weight              Weight      A0002   R01  2007-07-11 00:00:00           Missing Value          1
81                                             Weight              Weight      A0002   R02  2008-06-17 00:00:00           Missing Value          1
82                                             Weight              Weight      A0002   R03  2008-11-12 00:00:00           Missing Value          1
83                                             Weight              Weight      A0002   R04  2009-11-03 00:00:00           Missing Value          1
84                                             Weight              Weight      A0002   R05  2010-04-10 00:00:00           Missing Value          1
85  Exposure Category (choice='Injection drug use ...            Exposure      A0002   R00  2006-09-12 00:00:00       Inconsitent Value          1
86  Exposure Category (choice='Injection drug use ...            Exposure      A0002   R01  2007-07-11 00:00:00       Inconsitent Value          1
87  Exposure Category (choice='Injection drug use ...            Exposure      A0002   R02  2008-06-17 00:00:00       Inconsitent Value          1
88  Exposure Category (choice='Injection drug use ...            Exposure      A0002   R03  2008-11-12 00:00:00       Inconsitent Value          1
89  Exposure Category (choice='Injection drug use ...            Exposure      A0002   R04  2009-11-03 00:00:00       Inconsitent Value          1
90  Exposure Category (choice='Injection drug use ...            Exposure      A0002   R05  2010-04-10 00:00:00       Inconsitent Value          1
91  Exposure Category (choice='Injection drug use ...            Exposure      A0002   R06  2010-10-12 00:00:00       Inconsitent Value          1
92  Exposure Category (choice='Injection drug use ...            Exposure      A0002   R07  2011-04-06 00:00:00       Inconsitent Value          1
93  Exposure Category (choice='Injection drug use ...            Exposure      A0002   R08  2011-10-05 00:00:00       Inconsitent Value          1
94  Exposure Category (choice='Injection drug use ...            Exposure      A0002   R09  2012-04-03 00:00:00       Inconsitent Value          1
95  Exposure Category (choice='Injection drug use ...            Exposure      A0002   R10  2012-10-09 00:00:00       Inconsitent Value          1
96                             Number of uses per day         Current Use      A0002   R01  2007-07-11 00:00:00           Missing Value          1
97                             Number of uses per day         Current Use      A0002   R03  2008-11-12 00:00:00           Missing Value          1
98                             Number of uses per day         Current Use      A0002   R04  2009-11-03 00:00:00           Missing Value          1
99                             Number of uses per day         Current Use      A0002   R05  2010-04-10 00:00:00           Missing Value          1

In [259]:
res = pivot_table(tmp, rows = 'VisitDate', cols = 'Message', values = 'Wrongness', aggfunc=np.sum)
#res['Inconsitent Value'].dropna()
plt.figure(figsize = (10,10))
rolling_mean(res, 30, min_periods=2).plot(ax = plt.gca())


Out[259]:
<matplotlib.axes.AxesSubplot at 0x8f0f910>

In [263]:
tmp.groupby(['Patient ID']).sum().min()


Out[263]:
Wrongness    1

In [201]:
redcap_data['Hepatitis C status (HCV)'].dropna()


Out[201]:
0      True
1      True
2      True
3     False
4     False
5      True
6      True
7      True
8      True
9      True
10     True
11     True
12     True
13     True
14     True
...
1403    False
1404    False
1405    False
1406    False
1407     True
1408     True
1409    False
1411     True
1412     True
1413     True
1414     True
1415    False
1416    False
1417    False
1418    False
Name: Hepatitis C status (HCV), Length: 1281

In [ ]: