diff --git a/src/BatchcodeCompletion.py b/src/BatchcodeCompletion.py new file mode 100644 index 00000000000..6027cc683cc --- /dev/null +++ b/src/BatchcodeCompletion.py @@ -0,0 +1,11 @@ +from SmartRegexpFactory import SmartRegexpFactory + +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): + smartRegexp = SmartRegexpFactory().createSmartRegexp(partialBatchcode) + filteredBbatchCodeTable = self.ADR_by_Batchcode[self.ADR_by_Batchcode.index.str.contains(smartRegexp, na=False, regex=True)] + return filteredBbatchCodeTable.index[0] if not filteredBbatchCodeTable.empty else None diff --git a/src/BatchcodeCompletionTest.py b/src/BatchcodeCompletionTest.py new file mode 100644 index 00000000000..0b5b5655ac0 --- /dev/null +++ b/src/BatchcodeCompletionTest.py @@ -0,0 +1,50 @@ +import unittest +from TestHelper import TestHelper +from BatchcodeCompletion import BatchcodeCompletion +import pandas as pd + +class BatchcodeCompletionTest(unittest.TestCase): + + def test_completeBatchcode(self): + # Given + ADR_by_Batchcode = TestHelper.createDataFrame( + columns = ['Adverse Reaction Reports'], + data = [ [1], + [200], + [149]], + index = pd.Index( + [ + 'LOT000057A', + '030L20B', + '000057A' + ], + name = 'VAX_LOT')) + batchcodeCompletion = BatchcodeCompletion(ADR_by_Batchcode) + + # When + completedBatchcode = batchcodeCompletion.completeBatchcode('000057') + + # Then + self.assertEqual(completedBatchcode, '000057A') + + def test_completeBatchcode_no_completion(self): + # Given + ADR_by_Batchcode = TestHelper.createDataFrame( + columns = ['Adverse Reaction Reports'], + data = [ [1], + [200], + [149]], + index = pd.Index( + [ + 'LOT000057A', + '030L20B', + '000057A' + ], + name = 'VAX_LOT')) + batchcodeCompletion = BatchcodeCompletion(ADR_by_Batchcode) + + # When + completedBatchcode = batchcodeCompletion.completeBatchcode('non existing batch code') + + # Then + self.assertIsNone(completedBatchcode)