/**
  * Obtiene las notificaciones de tipo Rotavirus para la persona seleccionada
  *
  * @param idPerson a consultar
  * @return List<FichaRotavirus>
  * @throws Exception
  */
 @RequestMapping(value = "getResults", method = RequestMethod.GET, produces = "application/json")
 public @ResponseBody List<FichaRotavirus> getResults(
     @RequestParam(value = "idPerson", required = true) long idPerson) throws Exception {
   logger.info("Obteniendo los resultados de la búsqueda");
   List<FichaRotavirus> results = null;
   results = rotaVirusService.getFichaByPersonaId(idPerson);
   return results;
 }
  /**
   * Custom handler for displaying persons reports or create a new one.
   *
   * @param idPerson the ID of the person
   * @return a ModelMap with the model attributes for the respective view
   */
  @RequestMapping("search/{idPerson}")
  public ModelAndView showPersonReport(
      @PathVariable("idPerson") long idPerson, HttpServletRequest request) throws Exception {
    String urlValidacion = "";
    try {
      urlValidacion = seguridadService.validarLogin(request);
      // si la url esta vacia significa que la validaci�n del login fue exitosa
      if (urlValidacion.isEmpty())
        urlValidacion =
            seguridadService.validarAutorizacionUsuario(
                request, ConstantsSecurity.SYSTEM_CODE, true);
    } catch (Exception e) {
      e.printStackTrace();
      urlValidacion = "404";
    }
    ModelAndView mav = new ModelAndView();

    if (urlValidacion.isEmpty()) {
      List<FichaRotavirus> results = rotaVirusService.getFichaByPersonaId(idPerson);

      long idUsuario = seguridadService.obtenerIdUsuario(request);

      if (results.size() == 0) {
        boolean autorizado = true;
        FichaRotavirus fichaRotavirus = new FichaRotavirus();
        DaNotificacion noti = new DaNotificacion();
        Initialize();
        SisPersona persona = personaService.getPersona(idPerson);

        // Si es usuario a nivel central se cargan todas las unidades asociados al SILAIS y
        // municipio
        if (seguridadService.esUsuarioNivelCentral(idUsuario, ConstantsSecurity.SYSTEM_CODE)) {
          entidades = entidadAdmonService.getAllEntidadesAdtvas();
        } else {
          entidades =
              seguridadService.obtenerEntidadesPorUsuario(
                  (int) idUsuario, ConstantsSecurity.SYSTEM_CODE);
        }

        if (persona != null) {
          noti.setPersona(persona);
          fichaRotavirus.setDaNotificacion(noti);
          Divisionpolitica departamentoProce = null;
          List<Divisionpolitica> municipiosResi = new ArrayList<Divisionpolitica>();
          List<Comunidades> comunidades = new ArrayList<Comunidades>();
          if (fichaRotavirus.getDaNotificacion().getPersona().getMunicipioResidencia() != null) {
            departamentoProce =
                divisionPoliticaService.getDepartamentoByMunicipi(
                    fichaRotavirus
                        .getDaNotificacion()
                        .getPersona()
                        .getMunicipioResidencia()
                        .getCodigoNacional());
            municipiosResi =
                divisionPoliticaService.getMunicipiosFromDepartamento(
                    departamentoProce.getCodigoNacional());
            comunidades =
                comunidadesService.getComunidades(
                    fichaRotavirus
                        .getDaNotificacion()
                        .getPersona()
                        .getMunicipioResidencia()
                        .getCodigoNacional());
          }

          mav.addObject("entidades", entidades);
          mav.addObject("autorizado", autorizado);
          mav.addObject("departamentoProce", departamentoProce);
          mav.addObject("municipiosResi", municipiosResi);
          mav.addObject("comunidades", comunidades);
          mav.addObject("fichaRotavirus", fichaRotavirus);
          mav.addAllObjects(mapModel);
          mav.setViewName("rotavirus/create");
        } else {
          mav.setViewName("404");
        }
      } else {
        List<String> fichaRotavirusAutorizadas = new ArrayList<String>();
        for (FichaRotavirus rt : results) {
          if (idUsuario != 0) {
            if (seguridadService.esUsuarioAutorizadoEntidad(
                    (int) idUsuario,
                    ConstantsSecurity.SYSTEM_CODE,
                    rt.getDaNotificacion().getCodSilaisAtencion().getCodigo())
                && seguridadService.esUsuarioAutorizadoUnidad(
                    (int) idUsuario,
                    ConstantsSecurity.SYSTEM_CODE,
                    rt.getDaNotificacion().getCodUnidadAtencion().getCodigo())) {
              fichaRotavirusAutorizadas.add(rt.getDaNotificacion().getIdNotificacion());
            }
          }
        }
        mav.addObject("records", results);
        mav.addObject("idPerson", idPerson);
        mav.addObject("fichasAutorizadas", fichaRotavirusAutorizadas);
        mav.setViewName("rotavirus/results");
      }
    } else {
      mav.setViewName(urlValidacion);
    }
    return mav;
  }