- starting DictByBatchcodeTable2JsonConverterTest
- refactoring
This commit is contained in:
22
src/DictByBatchcodeTable2JsonConverter.py
Normal file
22
src/DictByBatchcodeTable2JsonConverter.py
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
class DictByBatchcodeTable2JsonConverter:
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def convertDictByBatchcodeTable2Json(jsonByBatchcodeTable, batchcode):
|
||||||
|
# res = jsonByBatchcodeTable.apply(lambda str: json.loads(str['SYMPTOM_COUNT_BY_VAX_LOT']), axis= 'columns')
|
||||||
|
return json.dumps(
|
||||||
|
{
|
||||||
|
"batchcode": batchcode,
|
||||||
|
"histograms": [
|
||||||
|
{
|
||||||
|
"batchcodes": ["1808982", "EW0175"],
|
||||||
|
"histogram": {"Blood pressure orthostatic abnormal":5,"Chest discomfort":1}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"batchcodes": ["015M20A", "1808982"],
|
||||||
|
"histogram": {"Chest discomfort":2}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
})
|
||||||
55
src/DictByBatchcodeTable2JsonConverterTest.py
Normal file
55
src/DictByBatchcodeTable2JsonConverterTest.py
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
import unittest
|
||||||
|
import json
|
||||||
|
from DictByBatchcodeTable2JsonConverter import DictByBatchcodeTable2JsonConverter
|
||||||
|
from TestHelper import TestHelper
|
||||||
|
import pandas as pd
|
||||||
|
|
||||||
|
class DictByBatchcodeTable2JsonConverterTest(unittest.TestCase):
|
||||||
|
|
||||||
|
def test_convertDictByBatchcodeTable2Json(self):
|
||||||
|
# Given
|
||||||
|
batchcode = '1808982'
|
||||||
|
dictByBatchcodeTable = TestHelper.createDataFrame(
|
||||||
|
columns = ['SYMPTOM_COUNT_BY_VAX_LOT'],
|
||||||
|
data = [ [
|
||||||
|
{
|
||||||
|
"Blood pressure orthostatic abnormal": 5,
|
||||||
|
"Chest discomfort": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"Chest discomfort": 2
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
index = pd.MultiIndex.from_tuples(
|
||||||
|
names = ['VAX_LOT1', 'VAX_LOT2'],
|
||||||
|
tuples = [[batchcode, 'EW0175'],
|
||||||
|
['015M20A', batchcode]]))
|
||||||
|
|
||||||
|
# When
|
||||||
|
jsonActual = DictByBatchcodeTable2JsonConverter.convertDictByBatchcodeTable2Json(dictByBatchcodeTable, batchcode)
|
||||||
|
|
||||||
|
# Then
|
||||||
|
self.assertEqual(
|
||||||
|
json.loads(jsonActual),
|
||||||
|
json.loads('''
|
||||||
|
{
|
||||||
|
"batchcode": "1808982",
|
||||||
|
"histograms": [
|
||||||
|
{
|
||||||
|
"batchcodes": ["1808982", "EW0175"],
|
||||||
|
"histogram": {
|
||||||
|
"Blood pressure orthostatic abnormal": 5,
|
||||||
|
"Chest discomfort": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"batchcodes": ["015M20A", "1808982"],
|
||||||
|
"histogram": {
|
||||||
|
"Chest discomfort": 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}'''))
|
||||||
@@ -1,15 +1,15 @@
|
|||||||
class HistogramTable2JsonTableConverter:
|
class HistogramTable2DictTableConverter:
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def convertHistogramTable2JsonTable(symptomHistogramByBatchcodeTable):
|
def convertHistogramTable2DictTable(symptomHistogramByBatchcodeTable):
|
||||||
vax_lot_columns = symptomHistogramByBatchcodeTable.index.names.difference(['SYMPTOM'])
|
vax_lot_columns = symptomHistogramByBatchcodeTable.index.names.difference(['SYMPTOM'])
|
||||||
return (
|
return (
|
||||||
symptomHistogramByBatchcodeTable
|
symptomHistogramByBatchcodeTable
|
||||||
.groupby(vax_lot_columns)
|
.groupby(vax_lot_columns)
|
||||||
.agg(lambda histogram_with_vax_lots: HistogramTable2JsonTableConverter._histogram_to_json(histogram_with_vax_lots, vax_lot_columns))
|
.agg(lambda histogram_with_vax_lots: HistogramTable2DictTableConverter._histogram_to_json(histogram_with_vax_lots, vax_lot_columns))
|
||||||
)
|
)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _histogram_to_json(histogram_with_vax_lots, vax_lot_columns):
|
def _histogram_to_json(histogram_with_vax_lots, vax_lot_columns):
|
||||||
histogram = histogram_with_vax_lots.reset_index(level = vax_lot_columns, drop=True)
|
histogram = histogram_with_vax_lots.reset_index(level = vax_lot_columns, drop=True)
|
||||||
return histogram.to_json()
|
return histogram.to_dict()
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
import unittest
|
import unittest
|
||||||
from pandas.testing import assert_frame_equal
|
from pandas.testing import assert_frame_equal
|
||||||
from HistogramTable2JsonTableConverter import HistogramTable2JsonTableConverter
|
from HistogramTable2DictTableConverter import HistogramTable2DictTableConverter
|
||||||
from TestHelper import TestHelper
|
from TestHelper import TestHelper
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
|
|
||||||
class HistogramTable2JsonTableConverterTest(unittest.TestCase):
|
class HistogramTable2DictTableConverterTest(unittest.TestCase):
|
||||||
|
|
||||||
def test_convertHistogramTable2JsonTable(self):
|
def test_convertHistogramTable2DictTable(self):
|
||||||
# Given
|
# Given
|
||||||
histogramTable = TestHelper.createDataFrame(
|
histogramTable = TestHelper.createDataFrame(
|
||||||
columns = ['SYMPTOM_COUNT_BY_VAX_LOT'],
|
columns = ['SYMPTOM_COUNT_BY_VAX_LOT'],
|
||||||
@@ -20,15 +20,24 @@ class HistogramTable2JsonTableConverterTest(unittest.TestCase):
|
|||||||
['EW0175', 'Chest discomfort']]))
|
['EW0175', 'Chest discomfort']]))
|
||||||
|
|
||||||
# When
|
# When
|
||||||
jsonTable = HistogramTable2JsonTableConverter.convertHistogramTable2JsonTable(histogramTable)
|
dictTable = HistogramTable2DictTableConverter.convertHistogramTable2DictTable(histogramTable)
|
||||||
|
|
||||||
# Then
|
# Then
|
||||||
assert_frame_equal(
|
assert_frame_equal(
|
||||||
jsonTable,
|
dictTable,
|
||||||
TestHelper.createDataFrame(
|
TestHelper.createDataFrame(
|
||||||
columns = ['SYMPTOM_COUNT_BY_VAX_LOT'],
|
columns = ['SYMPTOM_COUNT_BY_VAX_LOT'],
|
||||||
data = [ ['{"Blood pressure orthostatic abnormal":5,"Chest discomfort":1}'],
|
data = [ [
|
||||||
['{"Chest discomfort":2}']],
|
{
|
||||||
|
"Blood pressure orthostatic abnormal": 5,
|
||||||
|
"Chest discomfort": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"Chest discomfort": 2
|
||||||
|
}
|
||||||
|
]],
|
||||||
index = pd.Index(
|
index = pd.Index(
|
||||||
name = 'VAX_LOT1',
|
name = 'VAX_LOT1',
|
||||||
data = ['1808982',
|
data = ['1808982',
|
||||||
Reference in New Issue
Block a user