/** {@inheritDoc} */
  @Override
  public void transform(final Criteria criteria, final SearchCriteria searchCrit) {
    final PatientSearchCriteria crit = (PatientSearchCriteria) searchCrit;

    // Nom
    if (StringUtils.isNotEmpty(crit.getNom())) {
      CriteriaMakerUtils.addSqlCritere(criteria, "this_.nom", crit.getNom());
    }

    // Prénom
    if (StringUtils.isNotEmpty(crit.getPrenom())) {
      CriteriaMakerUtils.addSqlCritere(criteria, "this_.prenom", crit.getPrenom());
    }

    // Prénom
    if (StringUtils.isNotEmpty(crit.getInitiales())) {
      CriteriaMakerUtils.addSqlCritere(criteria, "this_.initiales", crit.getInitiales());
    }

    // Numéro IPP
    if (StringUtils.isNotEmpty(crit.getNumeroIpp())) {
      CriteriaMakerUtils.addSqlCritere(criteria, "this_.numeroIpp", crit.getNumeroIpp());
    }

    // Numéro IPP
    if (StringUtils.isNotEmpty(crit.getNumeroIppExact())) {
      CriteriaMakerUtils.addCritere(criteria, "numeroIpp", crit.getNumeroIppExact());
    }

    this.handleCriteriaEssai(criteria, crit);

    this.handleCriteriaByTypeInclusion(criteria, crit);

    this.handleCriteriaNumeroIppOrNomOrPrenom(criteria, crit);
  }
  /**
   * Méthode en charge de traiter le critère posé sur numéro IPP ou nom ou prénom.
   *
   * @param criteria Criteria Hibernate.
   * @param crit Critère de recherche Patient.
   */
  private void handleCriteriaNumeroIppOrNomOrPrenom(
      final Criteria criteria, final PatientSearchCriteria crit) {
    if (StringUtils.isNotEmpty(crit.getNumeroIppOrNomOrPrenom())) {
      final Disjunction dij = Restrictions.disjunction();
      // Numéro interne
      CriteriaMakerUtils.addSqlCritere(dij, "this_.numeroIpp", crit.getNumeroIppOrNomOrPrenom());
      // Nom
      CriteriaMakerUtils.addSqlCritere(dij, "this_.nom", crit.getNumeroIppOrNomOrPrenom());
      // Promoteur
      CriteriaMakerUtils.addSqlCritere(dij, "this_.prenom", crit.getNumeroIppOrNomOrPrenom());

      criteria.add(dij);
    }
  }