A rule-based algorithm to categorize questions into six SDOH topics if re.search(r'drink|alcohol',df.iloc[i,1], re.IGNORECASE)!=None: df.iloc[i,2]='alcohol_use' elif re.search(r'drug|medication|tobacco|smok|cigaret|blackout|opioids',df.iloc[i,1], re.IGNORECASE)!=None: df.iloc[i,2]='substance_use' elif re.search(r'\bsexual partner\b|\bsexual orientation\b',df.iloc[i,1], re.IGNORECASE)!=None: df.iloc[i,2]='sexual_orientation' elif re.search(r'\bsexually active\b|\bsexual activities\b|\bsexual intercourse\b|\bsex life\b|orgasm|\bsexual drive\b|dysfunction|contracep|latex|condom',df.iloc[i,1], re.IGNORECASE)!=None: df.iloc[i,2]='sexual_activity' elif re.search(r'\bliving arrangement\b|\byou live\b',df.iloc[i,1], re.IGNORECASE)!=None: df.iloc[i,2]='housing_status' elif re.search(r'employment|\bwork status\b|employed',df.iloc[i,1], re.IGNORECASE)!=None: df.iloc[i,2]='employment_status'