Adverse Event Detection
Adverse Drug Reaction Detection
Disproportionality Analysis
class AdverseEventDetector:
def __init__(self, case_reports, population):
self.cases = case_reports
self.pop = population
def compute_prr(self, drug, event):
a = self.cases[(self.cases['drug'] == drug) & (self.cases['event'] == event)].shape[0]
b = self.cases[self.cases['drug'] == drug].shape[0] - a
c = self.cases[self.cases['event'] == event].shape[0] - a
d = self.cases.shape[0] - a - b - c
if b == 0 or c == 0: return 1
return (a / (a + b)) / (c / (c + d))
Signal Detection from EHR
ML-Based Detection
class EHRSignalDetector:
def detect_signals(self, medication_events):
signals = {}
for drug in medication_events['drug'].unique():
for event in medication_events['event'].unique():
prr = self.compute_prr(drug, event)
if prr >= 2:
signals[(drug, event)] = {'prr': prr, 'confidence': self._bootstrap_ci(drug, event)}
return signals