/**
   * Agrega una notificación de tipo Rotavirus
   *
   * @param json con los datos de la ficha
   * @param request con datos de autenticación
   * @return DaNotificacion agregada
   * @throws Exception
   */
  public DaNotificacion guardarNotificacion(String json, HttpServletRequest request)
      throws Exception {

    logger.debug("Guardando Notificacion");
    DaNotificacion noti = new DaNotificacion();
    Integer personaId = null;
    Integer codSilaisAtencion = null;
    Integer codUnidadAtencion = null;
    String urgente = null;
    JsonObject jObjectJson = new Gson().fromJson(json, JsonObject.class);
    if (jObjectJson.get("personaId") != null
        && !jObjectJson.get("personaId").getAsString().isEmpty()) {
      personaId = jObjectJson.get("personaId").getAsInt();
    }
    if (jObjectJson.get("codSilaisAtencion") != null
        && !jObjectJson.get("codSilaisAtencion").getAsString().isEmpty()) {
      codSilaisAtencion = jObjectJson.get("codSilaisAtencion").getAsInt();
    }
    if (jObjectJson.get("codUnidadAtencion") != null
        && !jObjectJson.get("codUnidadAtencion").getAsString().isEmpty()) {
      codUnidadAtencion = jObjectJson.get("codUnidadAtencion").getAsInt();
    }
    if (jObjectJson.get("urgente") != null && !jObjectJson.get("urgente").getAsString().isEmpty()) {
      urgente = jObjectJson.get("urgente").getAsString();
    }

    if (personaId != null) {
      SisPersona persona = personaService.getPersona(personaId);
      noti.setPersona(persona);
      noti.setFechaRegistro(new Timestamp(new Date().getTime()));
      noti.setCodSilaisAtencion(entidadAdmonService.getSilaisByCodigo(codSilaisAtencion));
      noti.setCodUnidadAtencion(unidadesService.getUnidadByCodigo(codUnidadAtencion));
      long idUsuario = seguridadService.obtenerIdUsuario(request);
      noti.setUsuarioRegistro(usuarioService.getUsuarioById((int) idUsuario));
      noti.setCodTipoNotificacion(catalogoService.getTipoNotificacion("TPNOTI|RTV"));
      noti.setMunicipioResidencia(persona.getMunicipioResidencia());
      noti.setDireccionResidencia(persona.getDireccionResidencia());
      noti.setUrgente(catalogoService.getRespuesta(urgente));

      daNotificacionService.addNotification(noti);
      return noti;
    } else {
      throw new Exception();
    }
  }
 @RequestMapping(value = "create", method = RequestMethod.GET)
 public ModelAndView initCreateFormTmp(Model model, HttpServletRequest request)
     throws Exception, ParseException {
   logger.debug("Crear un envio de ordenes de examen");
   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, false);
   } catch (Exception e) {
     e.printStackTrace();
     urlValidacion = "404";
   }
   ModelAndView mav = new ModelAndView();
   if (urlValidacion.isEmpty()) {
     mav.setViewName("tomaMx/sendOrders");
     long idUsuario = seguridadService.obtenerIdUsuario(request);
     List<EntidadesAdtvas> entidadesAdtvases = entidadAdmonService.getAllEntidadesAdtvas();
     List<TipoMx> tipoMxList = catalogosService.getTipoMuestra();
     List<Laboratorio> laboratorioList;
     // Si es usuario a nivel central se cargan todas las unidades asociados al SILAIS y municipio
     if (seguridadService.esUsuarioNivelCentral(idUsuario, ConstantsSecurity.SYSTEM_CODE)) {
       laboratorioList = envioMxService.getAllLaboratorios();
     } else {
       laboratorioList =
           envioMxService.getLaboratorios((int) idUsuario, ConstantsSecurity.SYSTEM_CODE);
     }
     mav.addObject("entidades", entidadesAdtvases);
     mav.addObject("tipoMuestra", tipoMxList);
     mav.addObject("laboratorios", laboratorioList);
   } else {
     mav.setViewName(urlValidacion);
   }
   return mav;
 }
  /**
   * Custom handler to create a new one.
   *
   * @param idPerson the ID of the person
   * @return a ModelMap with the model attributes for the respective view
   */
  @RequestMapping("new/{idPerson}")
  public ModelAndView newFicha(@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()) {
      boolean autorizado = true;
      FichaRotavirus fichaRotavirus = new FichaRotavirus();
      DaNotificacion noti = new DaNotificacion();
      Initialize();
      SisPersona persona = personaService.getPersona(idPerson);

      long idUsuario = seguridadService.obtenerIdUsuario(request);
      // 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 =
            divisionPoliticaService.getDepartamentoByMunicipi(
                fichaRotavirus
                    .getDaNotificacion()
                    .getPersona()
                    .getMunicipioResidencia()
                    .getCodigoNacional());
        List<Divisionpolitica> municipiosResi =
            divisionPoliticaService.getMunicipiosFromDepartamento(
                departamentoProce.getCodigoNacional());
        List<Comunidades> 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 {
      mav.setViewName(urlValidacion);
    }

    return mav;
  }