11# Main validation engine
2+ from typing import Any
3+
24import exception_messages
35from conversion_layout import ConversionField , ConversionLayout
46from extractor import Extractor
57from mappings import ActionFlag
68
9+ ConversionErrorRecord = dict [str , Any ]
10+ ConvertedRecord = dict [str , Any ]
11+
712
813class Converter :
9- def __init__ (self , fhir_data , action_flag = ActionFlag .UPDATE ):
10- self .converted = {}
11- self .error_records = []
14+ def __init__ (self , fhir_data : str | dict [ str , Any ], action_flag : str = ActionFlag .UPDATE ) -> None :
15+ self .converted : ConvertedRecord = {}
16+ self .error_records : list [ ConversionErrorRecord ] = []
1217 self .action_flag = action_flag
1318
1419 if not fhir_data :
@@ -17,7 +22,7 @@ def __init__(self, fhir_data, action_flag=ActionFlag.UPDATE):
1722 self .extractor = Extractor (fhir_data )
1823 self .conversion_layout = ConversionLayout (self .extractor )
1924
20- def run_conversion (self ):
25+ def run_conversion (self ) -> ConvertedRecord :
2126 for conversion in self .conversion_layout .get_conversion_layout ():
2227 self ._convert_data (conversion )
2328
@@ -27,7 +32,7 @@ def run_conversion(self):
2732 self .converted ["CONVERSION_ERRORS" ] = self .error_records
2833 return self .converted
2934
30- def _convert_data (self , conversion : ConversionField ):
35+ def _convert_data (self , conversion : ConversionField ) -> None :
3136 flat_field = conversion .field_name_flat
3237
3338 try :
@@ -45,7 +50,7 @@ def _convert_data(self, conversion: ConversionField):
4550 )
4651 self .converted [flat_field ] = ""
4752
48- def _log_error (self , field_name , e , code ) :
53+ def _log_error (self , field_name : str , e : Exception | str , code : str ) -> None :
4954 self .error_records .append (
5055 {
5156 "code" : code ,
@@ -55,5 +60,5 @@ def _log_error(self, field_name, e, code):
5560 }
5661 )
5762
58- def get_error_records (self ):
63+ def get_error_records (self ) -> list [ ConversionErrorRecord ] :
5964 return self .error_records
0 commit comments