def is_valid(self, raise_exception=True):
        result = super().is_valid(raise_exception=raise_exception)
        if result:
            if not self.phone_number or PHONE_NUMBER_REGEXP and not re.match(PHONE_NUMBER_REGEXP, self.phone_number):
                if not raise_exception:
                    return False
                raise InvalidParameter(param="phone_number")
            if not id_code_ee_is_valid(self.id_code):
                if not raise_exception:
                    return False
                raise InvalidIdCode
            if not (self.get("language") and self.language in Languages.ALL):
                self.language = settings.MOBILE_ID_DEFAULT_LANGUAGE
        return result