20 lines
842 B
Python
20 lines
842 B
Python
from SmartRegexpFactory import SmartRegexpFactory
|
|
import pandas as pd
|
|
|
|
class BatchcodeCompletion:
|
|
|
|
def __init__(self, ADR_by_Batchcode):
|
|
self.ADR_by_Batchcode = ADR_by_Batchcode.sort_values(by = 'Adverse Reaction Reports', ascending = False)
|
|
|
|
def completeBatchcode(self, partialBatchcode):
|
|
if pd.isna(partialBatchcode):
|
|
return None
|
|
return self._getBatchcodeHavingMostADRs(self._filterBy(partialBatchcode))
|
|
|
|
def _filterBy(self, partialBatchcode):
|
|
smartRegexp = SmartRegexpFactory().createSmartRegexp(partialBatchcode)
|
|
return self.ADR_by_Batchcode[self.ADR_by_Batchcode.index.str.contains(smartRegexp, na = False, regex = True)]
|
|
|
|
def _getBatchcodeHavingMostADRs(self, ADR_by_Batchcode):
|
|
return ADR_by_Batchcode.index[0] if not ADR_by_Batchcode.empty else None
|