private void cargarHistorialResultadosParaclinicos(
      Row fila, Presultados_paraclinicos presultados_paraclinicos) {
    if (presultados_paraclinicos == null) {
      fila.appendChild(Utilidades.obtenerCell("", Label.class, true, true));
      fila.appendChild(Utilidades.obtenerCell("", Label.class, true, true));
    } else {
      Pexamenes_paraclinicos pexamenes_paraclinicos = new Pexamenes_paraclinicos();
      pexamenes_paraclinicos.setCodigo_empresa(presultados_paraclinicos.getCodigo_empresa());
      pexamenes_paraclinicos.setCodigo_sucursal(presultados_paraclinicos.getCodigo_sucursal());
      pexamenes_paraclinicos.setCodigo(presultados_paraclinicos.getCodigo_examen());

      pexamenes_paraclinicos =
          zkWindow
              .getServiceLocator()
              .getPexamenes_paraclinicosService()
              .consultar(pexamenes_paraclinicos);

      fila.appendChild(
          Utilidades.obtenerCell(presultados_paraclinicos.getFecha(), Datebox.class, true, false));
      Cell celda =
          Utilidades.obtenerCell(
              presultados_paraclinicos.getResultado(), Textbox.class, true, false);
      Textbox textbox_resultado = (Textbox) celda.getFirstChild();

      textbox_resultado.setAttribute(
          "VALOR_NORMAL_ANORMAL", presultados_paraclinicos.getNormal_anormal());
      textbox_resultado.setAttribute(
          "VALOR_DESCRIPCION_NA", presultados_paraclinicos.getDescripcion_na());

      textbox_resultado.setPopup(
          generarPopupResultados(textbox_resultado, false, pexamenes_paraclinicos));
      fila.appendChild(celda);
    }
  }
  public void cargarHistorial_resultados() {
    // log.info("ejecutando metodo @cargarHistorial_resultados() ===> "
    // + nro_documento);
    int mayor = 0;
    Map<String, List<Presultados_paraclinicos>> mapa_resultados =
        new HashMap<String, List<Presultados_paraclinicos>>();
    for (Component row_fila : rowsResultado.getChildren()) {
      Phistorias_paraclinicos phistorias_paraclinicos =
          (Phistorias_paraclinicos) ((Row) row_fila).getValue();
      Map<String, Object> parameters = new HashMap<String, Object>();
      parameters.put("codigo_empresa", zkWindow.codigo_empresa);
      parameters.put("codigo_sucursal", zkWindow.codigo_sucursal);
      parameters.put("nro_documento", nro_documento);
      parameters.put("codigo_examen", phistorias_paraclinicos.getCodigo_examen());

      List<Presultados_paraclinicos> lista_resultados =
          zkWindow.getServiceLocator().getPresultados_paraclinicosService().listar(parameters);

      if (lista_resultados.size() > mayor) {
        mayor = lista_resultados.size();
      }

      mapa_resultados.put(phistorias_paraclinicos.getCodigo_examen(), lista_resultados);
    }

    // Generar columnas froze
    Column columna;
    Auxheader auxheader;
    for (int i = mayor; i != 0; i--) {
      columna = new Column("Fecha");
      columna.setWidth("110px");
      columnsResultados.appendChild(columna);

      columna = new Column("Resultado");
      columna.setWidth("150px");
      columnsResultados.appendChild(columna);

      auxheader = new Auxheader();
      auxheader.setLabel("Examen " + i);
      auxheader.setColspan(2);
      auxheader.setAlign("center");
      auxheader.setStyle("font-weight:bold");
      auxheadResultados.appendChild(auxheader);
    }

    for (Component row_fila : rowsResultado.getChildren()) {
      Phistorias_paraclinicos phistorias_paraclinicos =
          (Phistorias_paraclinicos) ((Row) row_fila).getValue();
      List<Presultados_paraclinicos> lista_resultados =
          mapa_resultados.get(phistorias_paraclinicos.getCodigo_examen());
      int vacias = mayor - lista_resultados.size();
      for (int i = 0; i < vacias; i++) {
        cargarHistorialResultadosParaclinicos(((Row) row_fila), null);
      }
      for (Presultados_paraclinicos presultados_paraclinicos : lista_resultados) {
        cargarHistorialResultadosParaclinicos(((Row) row_fila), presultados_paraclinicos);
      }
    }
  }
  private void inicializar() {
    contenedor.getChildren().clear();
    gridResultados = new Grid();
    gridResultados.setMold("paging");
    gridResultados.setPageSize(20);
    auxheadResultados = new Auxhead();
    columnsResultados = new Columns();

    Auxheader auxheader = new Auxheader();
    auxheader.setAlign("center");
    if (tipo_examen.equals(TIPO_PARACLINICO)) {
      auxheader.setLabel("REGISTROS DE RESULTADOS PARACLINICOS");
    } else if (tipo_examen.equals(TIPO_VALORACION_OBSTETRICA)) {
      auxheader.setLabel("REGISTROS DE VALORACION OBSTETRICA");
    }
    auxheader.setColspan(3);
    auxheadResultados.appendChild(auxheader);

    gridResultados.appendChild(auxheadResultados);

    Column column = new Column("");
    if (tipo_examen.equals(TIPO_PARACLINICO)) {
      column.setLabel("Paraclinico");
    } else if (tipo_examen.equals(TIPO_VALORACION_OBSTETRICA)) {
      column.setLabel("V. obstetrica");
    }
    column.setWidth("170px");
    columnsResultados.appendChild(column);

    column = new Column("Fecha");
    column.setWidth("120px");
    columnsResultados.appendChild(column);

    column = new Column("Resultado");
    column.setWidth("120px");
    columnsResultados.appendChild(column);

    gridResultados.appendChild(columnsResultados);

    Frozen frozen = new Frozen();
    frozen.appendChild(new Div());
    frozen.setColumns(3);

    gridResultados.appendChild(frozen);

    rowsResultado = new Rows();

    Map<String, Object> parametros = new HashMap<String, Object>();
    parametros.put("codigo_empresa", zkWindow.codigo_empresa);
    parametros.put("codigo_sucursal", zkWindow.codigo_sucursal);
    parametros.put("codigo_historia", pcodigo_historia);
    parametros.put("tipo_examen", tipo_examen);

    List<Phistorias_paraclinicos> listado =
        zkWindow.getServiceLocator().getPhistorias_paraclinicosService().listar(parametros);

    for (Phistorias_paraclinicos phistorias_paraclinicos : listado) {
      Row row_fila = new Row();
      Cell celda =
          Utilidades.obtenerCell(
              phistorias_paraclinicos.getPexamenes_paraclinicos().getNombre(),
              Textbox.class,
              true,
              true);
      row_fila.appendChild(celda);

      celda = Utilidades.obtenerCell(null, Datebox.class, false, false);
      Datebox datebox_fecha = (Datebox) celda.getFirstChild();
      datebox_fecha.setId(
          "datebox_fecha_"
              + tipo_examen
              + "_"
              + pcodigo_historia
              + "_"
              + phistorias_paraclinicos.getCodigo_examen());
      row_fila.appendChild(celda);

      celda = Utilidades.obtenerCell("", Textbox.class, true, false);
      Textbox textbox_resultado = (Textbox) celda.getFirstChild();
      textbox_resultado.setId(
          "textbox_resultado_"
              + tipo_examen
              + "_"
              + pcodigo_historia
              + "_"
              + phistorias_paraclinicos.getCodigo_examen());
      final Popup popupResultados =
          generarPopupResultados(
              textbox_resultado, false, phistorias_paraclinicos.getPexamenes_paraclinicos());
      textbox_resultado.setPopup(popupResultados);
      row_fila.appendChild(celda);

      row_fila.setValue(phistorias_paraclinicos);
      rowsResultado.appendChild(row_fila);
    }

    gridResultados.appendChild(rowsResultado);

    contenedor.appendChild(gridResultados);
  }