public boolean dataIsValid() {

        _errors = new Vector();

        if (!(dataIsComplete())) {
            _errors.addElement("Tous les champs ne sont pas remplis");
        }

        // various tests checking whether provided number are legit.
        int new_and_old_clients = new_clients + previous_clients;
        int under_and_over_25 = under25_visits + over25_visits;
        if (new_and_old_clients != under_and_over_25) {
            _errors.addElement("Nb nouveaux+anciens clients ("+ new_and_old_clients +") différent de -25ans et +25ans ("+ under_and_over_25 +").");
        }

        int all_services = tubal_ligations + short_term_method_visits +
                           long_term_method_visits + implant_removal + iud_removal;
        if (new_and_old_clients != all_services) {
            _errors.addElement("Nb nouveaux+anciens clients ("+ new_and_old_clients +") différent de somme des services ("+ all_services +").");
        }

        if (very_first_visits > new_clients) {
            _errors.addElement("Nb 1ere visites ("+ very_first_visits +") supérieur aux nouveaux clients ("+ new_clients +").");
        }

        int iud_implants = intrauterine_devices + implants;
        if (iud_implants != long_term_method_visits) {
            _errors.addElement("Nb visites pour meth. longue durée ("+ long_term_method_visits +") différent de DIU+Implants ("+ iud_implants +").");
        }

        if (_errors.size() == 0) {
            return true;
        }
        return false;
    }