33import re
44import uuid
55from enum import Enum
6+ from enum import StrEnum
67
78import common .validator .enums .exception_messages as ExceptionMessages
89from common .validator .lookup_expressions .key_data import KeyData
@@ -40,6 +41,12 @@ class ExpressionType(Enum):
4041 KEYCHECK = "KEYCHECK"
4142
4243
44+ class MessageLabel (StrEnum ):
45+ EXPECTED_LABEL = "Expected- "
46+ FOUND_LABEL = "Found- "
47+ VALUE_MISMATCH_MSG = "Value does not equal expected value, "
48+
49+
4350class ExpressionChecker :
4451 def __init__ (self , data_parser , summarise , report_unexpected_exception ):
4552 self .data_parser = data_parser # FHIR data parser for additional functions
@@ -167,7 +174,12 @@ def _validate_integer(self, expression_rule, field_name, field_value, row) -> Er
167174 raise RecordError (
168175 ExceptionMessages .RECORD_CHECK_FAILED ,
169176 "Value integer check failed" ,
170- "Value does not equal expected value, Expected- " + expression_rule + " found- " + field_value ,
177+ "Value does not equal expected value, "
178+ + MessageLabel .EXPECTED_LABEL
179+ + expression_rule
180+ + " "
181+ + MessageLabel .FOUND_LABEL
182+ + field_value ,
171183 )
172184 except RecordError as e :
173185 code = e .code if e .code is not None else ExceptionMessages .RECORD_CHECK_FAILED
@@ -259,7 +271,12 @@ def _validate_equal(self, expression_rule, field_name, field_value, row) -> Erro
259271 raise RecordError (
260272 ExceptionMessages .RECORD_CHECK_FAILED ,
261273 "Value equals check failed" ,
262- "Value does not equal expected value, Expected- " + expression_rule + " found- " + field_value ,
274+ "Value does not equal expected value, "
275+ + MessageLabel .EXPECTED_LABEL
276+ + expression_rule
277+ + " "
278+ + MessageLabel .FOUND_LABEL
279+ + field_value ,
263280 )
264281 except RecordError as e :
265282 code = e .code if e .code is not None else ExceptionMessages .RECORD_CHECK_FAILED
@@ -285,7 +302,7 @@ def _validate_not_equal(self, expression_rule, field_name, field_value, row) ->
285302 "Value not equals check failed" ,
286303 "Value equals expected value when it should not, Expected- "
287304 + expression_rule
288- + " found- "
305+ + MessageLabel . FOUND_LABEL
289306 + field_value ,
290307 )
291308 except RecordError as e :
@@ -443,7 +460,12 @@ def _validate_starts_with(self, expression_rule, field_name, field_value, row) -
443460 raise RecordError (
444461 ExceptionMessages .RECORD_CHECK_FAILED ,
445462 "Value starts with failure" ,
446- "Value does not start as expected, Expected- " + expression_rule + " found- " + field_value ,
463+ "Value does not start as expected, "
464+ + MessageLabel .EXPECTED_LABEL
465+ + expression_rule
466+ + " "
467+ + MessageLabel .FOUND_LABEL
468+ + field_value ,
447469 )
448470 except RecordError as e :
449471 code = e .code if e .code is not None else ExceptionMessages .RECORD_CHECK_FAILED
@@ -468,7 +490,12 @@ def _validate_ends_with(self, expression_rule, field_name, field_value, row) ->
468490 raise RecordError (
469491 ExceptionMessages .RECORD_CHECK_FAILED ,
470492 "Value ends with failure" ,
471- "Value does not end as expected, Expected- " + expression_rule + " found- " + field_value ,
493+ "Value does not end as expected, "
494+ + MessageLabel .EXPECTED_LABEL
495+ + expression_rule
496+ + " "
497+ + MessageLabel .FOUND_LABEL
498+ + field_value ,
472499 )
473500 except RecordError as e :
474501 code = e .code if e .code is not None else ExceptionMessages .RECORD_CHECK_FAILED
@@ -532,14 +559,14 @@ def _validate_not_empty(self, _expression_rule, field_name, field_value, row) ->
532559 return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , field_name , "" , self .summarise )
533560
534561 # Positive Validate
535- def _validate_positive (self , _expression_rule , fieldName , fieldValue , row ) -> ErrorReport :
562+ def _validate_positive (self , _expression_rule , field_name , field_value , row ) -> ErrorReport :
536563 try :
537- value = float (fieldValue )
564+ value = float (field_value )
538565 if value < 0 :
539566 raise RecordError (
540567 ExceptionMessages .RECORD_CHECK_FAILED ,
541568 "Value is not positive failure" ,
542- "Value is not positive as expected, data- " + fieldValue ,
569+ "Value is not positive as expected, data- " + field_value ,
543570 )
544571 except RecordError as e :
545572 code = e .code if e .code is not None else ExceptionMessages .RECORD_CHECK_FAILED
@@ -550,22 +577,22 @@ def _validate_positive(self, _expression_rule, fieldName, fieldValue, row) -> Er
550577 )
551578 if e .details is not None :
552579 details = e .details
553- return ErrorReport (code , message , row , fieldName , details , self .summarise )
580+ return ErrorReport (code , message , row , field_name , details , self .summarise )
554581 except Exception as e :
555582 if self .report_unexpected_exception :
556583 message = ExceptionMessages .MESSAGES [ExceptionMessages .UNEXPECTED_EXCEPTION ] % (e .__class__ .__name__ , e )
557- return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , fieldName , "" , self .summarise )
584+ return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , field_name , "" , self .summarise )
558585
559586 # NHSNumber Validate
560- def _validate_nhs_number (self , _expression_rule , fieldName , fieldValue , row ) -> ErrorReport :
587+ def _validate_nhs_number (self , _expression_rule , field_name , field_value , row ) -> ErrorReport :
561588 try :
562589 regexRule = "^6[0-9]{10}$"
563- result = re .search (regexRule , fieldValue )
590+ result = re .search (regexRule , field_value )
564591 if not result :
565592 raise RecordError (
566593 ExceptionMessages .RECORD_CHECK_FAILED ,
567594 "NHS Number check failed" ,
568- "NHS Number does not meet regex rules, data- " + fieldValue ,
595+ "NHS Number does not meet regex rules, data- " + field_value ,
569596 )
570597 except RecordError as e :
571598 code = e .code if e .code is not None else ExceptionMessages .RECORD_CHECK_FAILED
@@ -576,22 +603,22 @@ def _validate_nhs_number(self, _expression_rule, fieldName, fieldValue, row) ->
576603 )
577604 if e .details is not None :
578605 details = e .details
579- return ErrorReport (code , message , row , fieldName , details , self .summarise )
606+ return ErrorReport (code , message , row , field_name , details , self .summarise )
580607 except Exception as e :
581608 if self .report_unexpected_exception :
582609 message = ExceptionMessages .MESSAGES [ExceptionMessages .UNEXPECTED_EXCEPTION ] % (e .__class__ .__name__ , e )
583- return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , fieldName , "" , self .summarise )
610+ return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , field_name , "" , self .summarise )
584611
585612 # Gender Validate
586- def _validate_gender (self , _expression_rule , fieldName , fieldValue , row ) -> ErrorReport :
613+ def _validate_gender (self , _expression_rule , field_name , field_value , row ) -> ErrorReport :
587614 try :
588615 ruleList = ["0" , "1" , "2" , "9" ]
589616
590- if fieldValue not in ruleList :
617+ if field_value not in ruleList :
591618 raise RecordError (
592619 ExceptionMessages .RECORD_CHECK_FAILED ,
593620 "Gender check failed" ,
594- "Gender value not found in array, data- " + fieldValue ,
621+ "Gender value not found in array, data- " + field_value ,
595622 )
596623 except RecordError as e :
597624 code = e .code if e .code is not None else ExceptionMessages .RECORD_CHECK_FAILED
@@ -602,18 +629,18 @@ def _validate_gender(self, _expression_rule, fieldName, fieldValue, row) -> Erro
602629 )
603630 if e .details is not None :
604631 details = e .details
605- return ErrorReport (code , message , row , fieldName , details , self .summarise )
632+ return ErrorReport (code , message , row , field_name , details , self .summarise )
606633 except Exception as e :
607634 if self .report_unexpected_exception :
608635 message = ExceptionMessages .MESSAGES [ExceptionMessages .UNEXPECTED_EXCEPTION ] % (e .__class__ .__name__ , e )
609- return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , fieldName , "" , self .summarise )
636+ return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , field_name , "" , self .summarise )
610637
611638 # PostCode Validate
612- def _validate_post_code (self , _expression_rule , fieldName , fieldValue , row ) -> ErrorReport :
639+ def _validate_post_code (self , _expression_rule , field_name , field_value , row ) -> ErrorReport :
613640 try :
614641 # UK postcode regex (allows optional space)
615642 regexRule = r"^(GIR\s?0AA|(?:(?:[A-PR-UWYZ][0-9]{1,2})|(?:[A-PR-UWYZ][A-HK-Y][0-9]{1,2})|(?:[A-PR-UWYZ][0-9][A-HJKS-UW])|(?:[A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRV-Y]))\s?[0-9][ABD-HJLNP-UW-Z]{2})$"
616- result = re .search (regexRule , fieldValue )
643+ result = re .search (regexRule , field_value )
617644 if not result :
618645 raise RecordError (
619646 ExceptionMessages .RECORD_CHECK_FAILED , "Postcode check failed" , "Postcode does not meet regex rules"
@@ -627,16 +654,16 @@ def _validate_post_code(self, _expression_rule, fieldName, fieldValue, row) -> E
627654 )
628655 if e .details is not None :
629656 details = e .details
630- return ErrorReport (code , message , row , fieldName , details , self .summarise )
657+ return ErrorReport (code , message , row , field_name , details , self .summarise )
631658 except Exception as e :
632659 if self .report_unexpected_exception :
633660 message = ExceptionMessages .MESSAGES [ExceptionMessages .UNEXPECTED_EXCEPTION ] % (e .__class__ .__name__ , e )
634- return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , fieldName , "" , self .summarise )
661+ return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , field_name , "" , self .summarise )
635662
636663 # Max Objects Validate
637- def _validate_max_objects (self , expressionRule , fieldName , fieldValue , row ) -> ErrorReport :
664+ def _validate_max_objects (self , expressionRule , field_name , field_value , row ) -> ErrorReport :
638665 try :
639- value = len (fieldValue )
666+ value = len (field_value )
640667 if value > int (expressionRule ):
641668 raise RecordError (
642669 ExceptionMessages .RECORD_CHECK_FAILED ,
@@ -652,14 +679,14 @@ def _validate_max_objects(self, expressionRule, fieldName, fieldValue, row) -> E
652679 )
653680 if e .details is not None :
654681 details = e .details
655- return ErrorReport (code , message , row , fieldName , details , self .summarise )
682+ return ErrorReport (code , message , row , field_name , details , self .summarise )
656683 except Exception as e :
657684 if self .report_unexpected_exception :
658685 message = ExceptionMessages .MESSAGES [ExceptionMessages .UNEXPECTED_EXCEPTION ] % (e .__class__ .__name__ , e )
659- return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , fieldName , "" , self .summarise )
686+ return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , field_name , "" , self .summarise )
660687
661688 # Default to Validate
662- def _validate_only_if (self , expressionRule , fieldName , fieldValue , row ) -> ErrorReport :
689+ def _validate_only_if (self , expressionRule , field_name , field_value , row ) -> ErrorReport :
663690 try :
664691 conversionList = expressionRule .split ("|" )
665692 location = conversionList [0 ]
@@ -681,21 +708,26 @@ def _validate_only_if(self, expressionRule, fieldName, fieldValue, row) -> Error
681708 )
682709 if e .details is not None :
683710 details = e .details
684- return ErrorReport (code , message , row , fieldName , details , self .summarise )
711+ return ErrorReport (code , message , row , field_name , details , self .summarise )
685712 except Exception as e :
686713 if self .report_unexpected_exception :
687714 message = ExceptionMessages .MESSAGES [ExceptionMessages .UNEXPECTED_EXCEPTION ] % (e .__class__ .__name__ , e )
688- return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , fieldName , "" , self .summarise )
715+ return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , field_name , "" , self .summarise )
689716
690717 # Check with Lookup
691- def _validate_against_lookup (self , _expression_rule , fieldName , fieldValue , row ) -> ErrorReport :
718+ def _validate_against_lookup (self , _expression_rule , field_name , field_value , row ) -> ErrorReport :
692719 try :
693- result = self .data_look_up .find_lookup (fieldValue )
720+ result = self .data_look_up .find_lookup (field_value )
694721 if not result :
695722 raise RecordError (
696723 ExceptionMessages .RECORD_CHECK_FAILED ,
697724 "Value lookup failure" ,
698- "Value was not found in Lookup List, Expected- " + fieldValue + " found- nothing" ,
725+ "Value was not found in Lookup List, "
726+ + MessageLabel .EXPECTED_LABEL
727+ + field_value
728+ + " "
729+ + MessageLabel .FOUND_LABEL
730+ + "nothing" ,
699731 )
700732 except RecordError as e :
701733 code = e .code if e .code is not None else ExceptionMessages .RECORD_CHECK_FAILED
@@ -706,21 +738,26 @@ def _validate_against_lookup(self, _expression_rule, fieldName, fieldValue, row)
706738 )
707739 if e .details is not None :
708740 details = e .details
709- return ErrorReport (code , message , row , fieldName , details , self .summarise )
741+ return ErrorReport (code , message , row , field_name , details , self .summarise )
710742 except Exception as e :
711743 if self .report_unexpected_exception :
712744 message = ExceptionMessages .MESSAGES [ExceptionMessages .UNEXPECTED_EXCEPTION ] % (e .__class__ .__name__ , e )
713- return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , fieldName , "" , self .summarise )
745+ return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , field_name , "" , self .summarise )
714746
715747 # Check with Key Lookup
716- def _validate_against_key (self , expressionRule , fieldName , fieldValue , row ) -> ErrorReport :
748+ def _validate_against_key (self , expressionRule , field_name , field_value , row ) -> ErrorReport :
717749 try :
718- result = self .key_data .findKey (expressionRule , fieldValue )
750+ result = self .key_data .findKey (expressionRule , field_value )
719751 if not result :
720752 raise RecordError (
721753 ExceptionMessages .KEY_CHECK_FAILED ,
722754 "Key lookup failure" ,
723- "Value was not found in Key List, Expected- " + fieldValue + " found- nothing" ,
755+ "Value was not found in Key List, "
756+ + MessageLabel .EXPECTED_LABEL
757+ + field_value
758+ + " "
759+ + MessageLabel .FOUND_LABEL
760+ + "nothing" ,
724761 )
725762 except RecordError as e :
726763 code = e .code if e .code is not None else ExceptionMessages .KEY_CHECK_FAILED
@@ -729,8 +766,8 @@ def _validate_against_key(self, expressionRule, fieldName, fieldValue, row) -> E
729766 )
730767 if e .details is not None :
731768 details = e .details
732- return ErrorReport (code , message , row , fieldName , details , self .summarise )
769+ return ErrorReport (code , message , row , field_name , details , self .summarise )
733770 except Exception as e :
734771 if self .report_unexpected_exception :
735772 message = ExceptionMessages .MESSAGES [ExceptionMessages .UNEXPECTED_EXCEPTION ] % (e .__class__ .__name__ , e )
736- return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , fieldName , "" , self .summarise )
773+ return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , field_name , "" , self .summarise )
0 commit comments