Skip to content

Commit 288e778

Browse files
committed
Add basic structure for Data Quality Checker
1 parent e959086 commit 288e778

File tree

10 files changed

+79
-0
lines changed

10 files changed

+79
-0
lines changed

lambdas/shared/src/common/data_quality/__init__.py

Whitespace-only changes.
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
from dataclasses import dataclass
2+
3+
from common.data_quality.completeness import DataQualityCompletenessChecker
4+
from common.data_quality.validator import DataQualityValidator
5+
from common.models.fhir_converter.converter import Converter
6+
from common.models.fhir_converter.mappings import ActionFlag
7+
8+
9+
@dataclass
10+
class DataQualityOutput:
11+
incomplete_fields: dict[str, list[str]]
12+
invalid_fields: list[str]
13+
timeliness: dict[str, int]
14+
15+
16+
class DataQualityChecker:
17+
"""Runs data quality checks against an Immunisation and creates a Data Quality Output object"""
18+
19+
def __init__(
20+
self,
21+
immunisation: dict,
22+
action_flag: ActionFlag,
23+
completeness_checker: DataQualityCompletenessChecker,
24+
data_quality_validator: DataQualityValidator,
25+
is_batch_csv: bool,
26+
):
27+
self.immunisation = immunisation
28+
self.fhir_converter = Converter(fhir_data=immunisation, action_flag=action_flag)
29+
self.completeness_checker = completeness_checker
30+
self.data_quality_validator = data_quality_validator
31+
self.is_batch_csv = is_batch_csv
32+
33+
def run_checks(self) -> DataQualityOutput:
34+
if not self.is_batch_csv:
35+
self.immunisation = self.fhir_converter.run_conversion()
36+
37+
return DataQualityOutput(
38+
incomplete_fields=self._check_completeness(),
39+
invalid_fields=self._check_validity(),
40+
timeliness=self._check_timeliness(),
41+
)
42+
43+
def _check_completeness(self) -> dict[str, list[str]]:
44+
pass
45+
46+
def _check_validity(self) -> list[str]:
47+
pass
48+
49+
def _check_timeliness(self) -> dict[str, int]:
50+
pass
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
class DataQualityCompletenessChecker:
2+
def check_completeness(self, immunisation: dict) -> dict[str, list[str]]:
3+
pass

lambdas/shared/src/common/data_quality/reporter.py

Whitespace-only changes.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
class DataQualityValidator:
2+
pass

lambdas/shared/tests/test_common/data_quality/__init__.py

Whitespace-only changes.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import unittest
2+
3+
4+
class TestDataQualityChecker(unittest.TestCase):
5+
def test_something(self):
6+
self.assertEqual(True, True) # add assertion here
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import unittest
2+
3+
4+
class TestDataQualityCompletenessChecker(unittest.TestCase):
5+
def test_something(self):
6+
self.assertEqual(True, True) # add assertion here
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import unittest
2+
3+
4+
class TestDataQualityReporter(unittest.TestCase):
5+
def test_something(self):
6+
self.assertEqual(True, True) # add assertion here
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import unittest
2+
3+
4+
class TestDataQualityValidator(unittest.TestCase):
5+
def test_something(self):
6+
self.assertEqual(True, True) # add assertion here

0 commit comments

Comments
 (0)