@Override
 protected Predicate getFilter(Root<Patient> root, CriteriaBuilder builder) {
   ImogActor actor = ImogActorUtils.getCurrentActor();
   if (actor == null) {
     actor = HttpSessionUtil.getCurrentUser();
   }
   if (actor instanceof Personnel) {
     Personnel personnel = (Personnel) actor;
     String niveau = personnel.getNiveau();
     if ("1".equals(niveau)) {
       Path<?> join = DaoUtil.getCascadeRoot(root.join("centres", JoinType.LEFT), "region.id");
       return builder.equal(join, personnel.getRegion().getId());
     } else if ("2".equals(niveau)) {
       Path<?> join =
           DaoUtil.getCascadeRoot(root.join("centres", JoinType.LEFT), "districtSante.id");
       return builder.equal(join, personnel.getDistrictSante().getId());
     } else if ("3".equals(niveau)) {
       Path<?> join = root.join("centres", JoinType.LEFT).get("id");
       return builder.equal(join, personnel.getCDT().getId());
     }
   }
   return null;
 }