/**
   * 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;
  }
  /**
   * * Obetener la información de una notificación y cargarla en pantalla para su edición
   *
   * @param idNotificacion a cargar
   * @param request con datos de autenticación
   * @return ModelAndView
   * @throws Exception
   */
  @RequestMapping("edit/{idNotificacion}")
  public ModelAndView editIrag(
      @PathVariable("idNotificacion") String idNotificacion, HttpServletRequest request)
      throws Exception {
    String urlValidacion = "";
    boolean autorizado = true;
    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()) {

      if (idNotificacion != null) {
        FichaRotavirus fichaRotavirus = rotaVirusService.getFichaById(idNotificacion);

        if (fichaRotavirus != null) {
          Initialize();

          long idUsuario = seguridadService.obtenerIdUsuario(request);
          // irag.setUsuario(usuarioService.getUsuarioById((int) idUsuario));
          if (idUsuario != 0) {
            autorizado =
                seguridadService.esUsuarioNivelCentral(idUsuario, ConstantsSecurity.SYSTEM_CODE)
                    || ((fichaRotavirus.getDaNotificacion().getCodSilaisAtencion() != null
                            && fichaRotavirus.getDaNotificacion().getCodUnidadAtencion() != null)
                        && seguridadService.esUsuarioAutorizadoEntidad(
                            (int) idUsuario,
                            ConstantsSecurity.SYSTEM_CODE,
                            fichaRotavirus.getDaNotificacion().getCodSilaisAtencion().getCodigo())
                        && seguridadService.esUsuarioAutorizadoUnidad(
                            (int) idUsuario,
                            ConstantsSecurity.SYSTEM_CODE,
                            fichaRotavirus.getDaNotificacion().getCodUnidadAtencion().getCodigo()));
          }

          entidades =
              seguridadService.obtenerEntidadesPorUsuario(
                  (int) idUsuario, ConstantsSecurity.SYSTEM_CODE);

          if (entidades.size() <= 0) {
            entidades.add(fichaRotavirus.getDaNotificacion().getCodSilaisAtencion());
          }

          Divisionpolitica municipio =
              divisionPoliticaService.getMunicipiosByUnidadSalud(
                  fichaRotavirus
                      .getDaNotificacion()
                      .getCodUnidadAtencion()
                      .getMunicipio()
                      .getCodigoNacional());
          List<Divisionpolitica> munic =
              divisionPoliticaService.getMunicipiosBySilais(
                  fichaRotavirus.getDaNotificacion().getCodSilaisAtencion().getCodigo());

          List<Unidades> uni = null;
          if (seguridadService.esUsuarioNivelCentral(idUsuario, ConstantsSecurity.SYSTEM_CODE)) {
            if (fichaRotavirus.getDaNotificacion().getCodSilaisAtencion() != null
                && fichaRotavirus.getDaNotificacion().getCodUnidadAtencion() != null) {
              uni =
                  seguridadService.obtenerUnidadesPorUsuarioEntidadMunicipio(
                      (int) idUsuario,
                      fichaRotavirus.getDaNotificacion().getCodSilaisAtencion().getCodigo(),
                      fichaRotavirus
                          .getDaNotificacion()
                          .getCodUnidadAtencion()
                          .getMunicipio()
                          .getCodigoNacional(),
                      ConstantsSecurity.SYSTEM_CODE,
                      HealthUnitType.UnidadesPrimHosp.getDiscriminator());
            }
          } else {
            if (fichaRotavirus.getDaNotificacion().getCodSilaisAtencion() != null
                && fichaRotavirus.getDaNotificacion().getCodUnidadAtencion() != null) {
              uni =
                  seguridadService.obtenerUnidadesPorUsuarioEntidadMunicipio(
                      (int) idUsuario,
                      fichaRotavirus.getDaNotificacion().getCodSilaisAtencion().getCodigo(),
                      fichaRotavirus
                          .getDaNotificacion()
                          .getCodUnidadAtencion()
                          .getMunicipio()
                          .getCodigoNacional(),
                      ConstantsSecurity.SYSTEM_CODE,
                      HealthUnitType.UnidadesPrimHosp.getDiscriminator());
              if (!uni.contains(fichaRotavirus.getDaNotificacion().getCodUnidadAtencion())) {
                uni.add(fichaRotavirus.getDaNotificacion().getCodUnidadAtencion());
              }
            }
          }

          // datos persona
          Divisionpolitica departamentoProce;
          List<Divisionpolitica> municipiosResi = null;
          List<Comunidades> comunidades = null;

          if (fichaRotavirus.getDaNotificacion().getPersona().getMunicipioResidencia() != null) {
            String municipioResidencia =
                fichaRotavirus
                    .getDaNotificacion()
                    .getPersona()
                    .getMunicipioResidencia()
                    .getCodigoNacional();
            departamentoProce =
                divisionPoliticaService.getDepartamentoByMunicipi(municipioResidencia);
            municipiosResi =
                divisionPoliticaService.getMunicipiosFromDepartamento(
                    departamentoProce.getCodigoNacional());
            String comu =
                fichaRotavirus
                    .getDaNotificacion()
                    .getPersona()
                    .getMunicipioResidencia()
                    .getCodigoNacional();
            comunidades = comunidadesService.getComunidades(comu);
          }

          mav.addObject("fichaRotavirus", fichaRotavirus);
          mav.addObject("autorizado", autorizado);
          mav.addObject("entidades", entidades);
          mav.addObject("munic", munic);
          mav.addObject("municipiosResi", municipiosResi);
          mav.addObject("comunidades", comunidades);
          mav.addObject("uni", uni);
          mav.addObject("municipio", municipio);
          mav.addAllObjects(mapModel);

          mav.setViewName("rotavirus/create");
        } else {
          mav.setViewName("404");
        }
      } else {
        mav.setViewName("404");
      }

    } else {
      mav.setViewName(urlValidacion);
    }

    return mav;
  }
Ejemplo n.º 3
0
  private String tomaMxToJson(List<DaTomaMx> tomaMxList) {
    String jsonResponse = "";
    Map<Integer, Object> mapResponse = new HashMap<Integer, Object>();
    Integer indice = 0;
    for (DaTomaMx tomaMx : tomaMxList) {
      Map<String, String> map = new HashMap<String, String>();
      map.put("idTomaMx", tomaMx.getIdTomaMx());
      // map.put("fechaHoraOrden",DateToString(orden.getFechaHSolicitud(),"dd/MM/yyyy hh:mm:ss a"));
      map.put(
          "fechaTomaMx", DateUtil.DateToString(tomaMx.getFechaHTomaMx(), "dd/MM/yyyy hh:mm:ss a"));
      map.put("estadoMx", tomaMx.getEstadoMx().getValor());
      map.put("codSilais", tomaMx.getIdNotificacion().getCodSilaisAtencion().getNombre());
      map.put("codUnidadSalud", tomaMx.getIdNotificacion().getCodUnidadAtencion().getNombre());
      map.put(
          "separadaMx",
          (tomaMx.getMxSeparada() != null ? (tomaMx.getMxSeparada() ? "Si" : "No") : ""));
      map.put("tipoMuestra", tomaMx.getCodTipoMx().getNombre());

      if (tomaMx.getIdNotificacion().getUrgente() != null) {
        map.put("urgente", tomaMx.getIdNotificacion().getUrgente().getValor());
      } else {
        map.put("urgente", "--");
      }

      // map.put("tipoExamen",orden.getCodDx().getNombre());
      // Si hay fecha de inicio de sintomas se muestra
      Date fechaInicioSintomas =
          tomaMx
              .getIdNotificacion()
              .getFechaInicioSintomas(); // envioMxService.getFechaInicioSintomas(tomaMx.getIdNotificacion().getIdNotificacion());
      if (fechaInicioSintomas != null)
        map.put("fechaInicioSintomas", DateUtil.DateToString(fechaInicioSintomas, "dd/MM/yyyy"));
      else map.put("fechaInicioSintomas", " ");

      // hospitalizado
      String[] arrayHosp = {"13", "17", "11", "16", "10", "12"};
      boolean hosp = false;

      if (tomaMx.getCodUnidadAtencion() != null) {
        int h =
            Arrays.binarySearch(
                arrayHosp, String.valueOf(tomaMx.getCodUnidadAtencion().getTipoUnidad()));
        hosp = h > 0;
      }

      if (hosp) {
        map.put("hospitalizado", messageSource.getMessage("lbl.yes", null, null));
      } else {
        map.put("hospitalizado", messageSource.getMessage("lbl.no", null, null));
      }

      // Si hay persona
      if (tomaMx.getIdNotificacion().getPersona() != null) {
        /// se obtiene el nombre de la persona asociada a la ficha
        String nombreCompleto = "";
        nombreCompleto = tomaMx.getIdNotificacion().getPersona().getPrimerNombre();
        if (tomaMx.getIdNotificacion().getPersona().getSegundoNombre() != null)
          nombreCompleto =
              nombreCompleto + " " + tomaMx.getIdNotificacion().getPersona().getSegundoNombre();
        nombreCompleto =
            nombreCompleto + " " + tomaMx.getIdNotificacion().getPersona().getPrimerApellido();
        if (tomaMx.getIdNotificacion().getPersona().getSegundoApellido() != null)
          nombreCompleto =
              nombreCompleto + " " + tomaMx.getIdNotificacion().getPersona().getSegundoApellido();
        map.put("persona", nombreCompleto);
        // Se calcula la edad
        int edad = calcularEdadAnios(tomaMx.getIdNotificacion().getPersona().getFechaNacimiento());
        map.put("edad", String.valueOf(edad));
        // se obtiene el sexo
        map.put("sexo", tomaMx.getIdNotificacion().getPersona().getSexo().getValor());
        if (edad > 12 && tomaMx.getIdNotificacion().getPersona().isSexoFemenino()) {
          map.put(
              "embarazada",
              envioMxService.estaEmbarazada(tomaMx.getIdNotificacion().getIdNotificacion()));
        } else map.put("embarazada", "--");
      } else {
        map.put("persona", " ");
        map.put("edad", " ");
        map.put("sexo", " ");
        map.put("embarazada", "--");
      }
      // se arma estructura de diagnósticos o estudios
      List<DaSolicitudDx> solicitudDxList =
          envioMxService.getSolicitudesDxByIdTomaMx(tomaMx.getIdTomaMx());
      Map<Integer, Object> mapSolicitudesList = new HashMap<Integer, Object>();
      Map<String, String> mapSolicitud = new HashMap<String, String>();
      if (solicitudDxList.size() > 0) {
        int subIndice = 0;
        for (DaSolicitudDx solicitudDx : solicitudDxList) {
          mapSolicitud.put("nombre", solicitudDx.getCodDx().getNombre());
          mapSolicitud.put("tipo", "Rutina");
          mapSolicitud.put(
              "fechaSolicitud",
              DateUtil.DateToString(solicitudDx.getFechaHSolicitud(), "dd/MM/yyyy hh:mm:ss a"));
          subIndice++;
          mapSolicitudesList.put(subIndice, mapSolicitud);
          mapSolicitud = new HashMap<String, String>();
        }
        map.put("solicitudes", new Gson().toJson(mapSolicitudesList));
      } else {
        List<DaSolicitudEstudio> solicitudEstudios =
            envioMxService.getSolicitudesEstudioByIdTomaMx(tomaMx.getIdTomaMx());
        int subIndice = 0;
        for (DaSolicitudEstudio solicitudEstudio : solicitudEstudios) {
          mapSolicitud.put("nombre", solicitudEstudio.getTipoEstudio().getNombre());
          mapSolicitud.put("tipo", "Estudio");
          mapSolicitud.put(
              "fechaSolicitud",
              DateUtil.DateToString(
                  solicitudEstudio.getFechaHSolicitud(), "dd/MM/yyyy hh:mm:ss a"));
          subIndice++;
          mapSolicitudesList.put(subIndice, mapSolicitud);
          mapSolicitud = new HashMap<String, String>();
        }
        map.put("solicitudes", new Gson().toJson(mapSolicitudesList));
      }

      mapResponse.put(indice, map);
      indice++;
    }
    jsonResponse = new Gson().toJson(mapResponse);
    UnicodeEscaper escaper = UnicodeEscaper.above(127);
    return escaper.translate(jsonResponse);
  }