def _extract_input(req: RunCheckRequest) -> Tuple[List[Error], Optional[IndividualData]]:
    errors = []

    # Extract address
    # TODO: Validate required address fields
    current_address = req.check_input.get_current_address()
    if current_address is None and req.provider_config.require_address:
        errors.append(Error.missing_required_field(Field.ADDRESS_HISTORY))

    # Extract DOB
    dob = req.check_input.get_dob()
    if dob is None and req.provider_config.require_dob:
        errors.append(Error.missing_required_field(Field.DOB))

    # Extract given names
    given_names = req.check_input.get_given_names()
    if given_names is None:
        errors.append(Error.missing_required_field(Field.GIVEN_NAMES))

    # Extract family name
    family_name = req.check_input.get_family_name()
    if family_name is None:
        errors.append(Error.missing_required_field(Field.FAMILY_NAME))

    # Extract documents
    documents = req.check_input.get_documents()
    if not documents:
        errors.append(Error.missing_documents())

    if errors:
        return errors, None
    else:
        return [], req.check_input
def _extract_input(req: RunCheckRequest) -> Tuple[List[Error], str]:
    errors = []

    external_ref = req.check_input.get_external_ref()
    if external_ref is None:
        errors.append(Error.missing_required_field(Field.EXTERNAL_REFERENCE))

    if errors:
        return errors, None
    else:
        return [], external_ref
def _extract_search_input(req: RunCheckRequest) -> Tuple[List[Error], Optional[SearchInput]]:
    errors = []

    # Extract country of incorporation
    country_of_incorporation = req.search_input.country_of_incorporation
    if country_of_incorporation is None:
        errors.append(Error.missing_required_field(Field.COUNTRY_OF_INCORPORATION))

    if errors:
        return errors, None
    else:
        return [], SearchInput(
            country_of_incorporation=country_of_incorporation
        )
def _extract_check_input(req: RunCheckRequest) -> Tuple[List[Error], Optional[CheckInput]]:
    errors = []

    # Extract country of incorporation
    country_of_incorporation = req.check_input.get_country_of_incorporation()
    if country_of_incorporation is None:
        errors.append(Error.missing_required_field(Field.COUNTRY_OF_INCORPORATION))

    name = req.check_input.get_company_name()
    number = req.check_input.get_company_number()

    if errors:
        return errors, None
    else:
        return [], CheckInput(
            name=name,
            number=number,
            country_of_incorporation=country_of_incorporation,
        )