private void CalculaFormulaResultado(
      List<ExameConfiguracao> listExameConfiguracao,
      XmlLoteResultadoInterface loteResultadoInterface) {

    for (ExameConfiguracao exameConfiguracao : listExameConfiguracao) {

      LabDetalheRequisicao labDetalheRequisicao =
          OracleHelper.getLabDetalherequisicaoByReqExameSeq(
              loteResultadoInterface.getReqStCodigo(),
              exameConfiguracao.getExaStCodigo(),
              exameConfiguracao.getSeqStCodigo(),
              loteResultadoInterface.getStrDbName());

      if (exameConfiguracao.getCinStTipoResultado().equals("003")) {

        String resultadoFormula = null;
        String resultadoCkFormula = null;
        String vars = null;
        BigDecimal res = new BigDecimal(0);
        DecimalFormat nroFormatado = null;

        String code = exameConfiguracao.getExaStCodigo();

        if (mapResultadoFormula.containsKey(code)) {
          vars = mapResultadoFormula.get(code);
        }

        LabResultados labResultado =
            new LabResultados(
                exameConfiguracao.getReqStCodigo(),
                exameConfiguracao.getExaStCodigo(),
                exameConfiguracao.getLabResultado().getSeqStCodigo(),
                exameConfiguracao.getMetStCodigo(),
                exameConfiguracao.getEmvDtValidade(),
                exameConfiguracao.getCinStCodigo(),
                dtBanco,
                null,
                null,
                exameConfiguracao.getLabResultado().getResStComentario(),
                null,
                exameConfiguracao.getLabResultado().getResChHidden(),
                exameConfiguracao.getLabResultado().getResInSequencia(),
                exameConfiguracao.getCinStTipoResultado(),
                exameConfiguracao.getDerInCodigo(),
                exameConfiguracao.getLabResultado().getDerInValidadeRes(),
                exameConfiguracao.getLabResultado().getResClResultados(),
                exameConfiguracao.getLabResultado().getEquStCodigo(),
                exameConfiguracao.getDerChParcial(),
                exameConfiguracao.getLabResultado().getDerChNaoNecessario(),
                exameConfiguracao.getLabResultado().getDerInRepeticao());

        System.out.println(
            "exameConfiguracao.getCinStCodigo() : " + exameConfiguracao.getCinStCodigo());

        ByteArrayInputStream bais =
            new ByteArrayInputStream((vars + exameConfiguracao.getCinClFormula()).getBytes());

        if (vars != null && exameConfiguracao.getCinClFormula() != null) {
          resultadoFormula = resultFormulaAndCheck(vars, bais);

          if (exameConfiguracao.getCinInDecimais() != null) {
            nroFormatado =
                new DecimalFormat(
                    PartnerDecimal.PartnerDecimal(exameConfiguracao.getCinInDecimais()));
          } else {
            nroFormatado = new DecimalFormat(PartnerDecimal.PartnerDecimal(0));
          }

          System.out.println("resultado formula : " + resultadoFormula);

          if (resultadoFormula != null && resultadoFormula.trim().length() > 0) {
            try {
              res = new BigDecimal(resultadoFormula.replaceAll(",", "."));
              labResultado.setResStIngresso(nroFormatado.format(res));
              labResultado.setResStResultado(nroFormatado.format(res));
            } catch (NumberFormatException xcp) {
              System.out.println("do something else....................");
              labResultado.setResStIngresso(resultadoFormula);
              labResultado.setResStResultado(resultadoFormula);
            }

          } else {
            labResultado.setResStIngresso(resultadoFormula);
            labResultado.setResStResultado(resultadoFormula);
          }
        }

        if (vars != null && exameConfiguracao.getCinClCheckFormula() != null) {
          resultadoCkFormula = resultFormulaAndCheck(vars, bais);
          labResultado.setResStFlag(resultadoCkFormula);
        }

        String resultado = mapResultadoFormula.get(code);
        mapResultadoFormula.remove(code);

        if (resultadoFormula != null) {
          mapResultadoFormula.put(
              code,
              resultado
                  + exameConfiguracao.getCinStCodigo()
                  + ":=\""
                  + resultadoFormula.replace(",", ".")
                  + "\";");
        }
        OracleHelper.saveOrUpdateObject(labResultado, loteResultadoInterface.getStrDbName());
      }
    }
  }
  private LabResultados inclusaoResultados(
      ExameConfiguracao exameConfiguracao, String strDbName, Integer seqRes) {

    DecimalFormat nroFormatado = null;

    LabResultados labResultado =
        new LabResultados(
            exameConfiguracao.getReqStCodigo(),
            exameConfiguracao.getExaStCodigo(),
            exameConfiguracao.getLabResultado().getSeqStCodigo(),
            exameConfiguracao.getLabResultado().getMetStCodigo(),
            exameConfiguracao.getEmvDtValidade(),
            exameConfiguracao.getCinStCodigo(),
            dtBanco,
            exameConfiguracao.getLabResultado().getResStFlag(),
            exameConfiguracao.getLabResultado().getResStIngresso(),
            exameConfiguracao.getLabResultado().getResStComentario(),
            exameConfiguracao.getLabResultado().getResStResultado(),
            'N',
            seqRes,
            exameConfiguracao.getCinStTipoResultado(),
            exameConfiguracao.getDerInCodigo(),
            exameConfiguracao.getLabResultado().getDerInValidadeRes(),
            null,
            null,
            null,
            null,
            exameConfiguracao.getLabResultado().getDerInRepeticao());

    if (exameConfiguracao.getCinStSugere() != null
        && exameConfiguracao.getCinStSugere().equalsIgnoreCase("TEMPO")) {
      labResultado.setResStIngresso(exameConfiguracao.getDerInTempo().toString());
      labResultado.setResStResultado(exameConfiguracao.getDerInTempo().toString());
    }

    if (exameConfiguracao.getCinStSugere() != null
        && exameConfiguracao.getCinStSugere().equalsIgnoreCase("VOLUME")) {
      labResultado.setResStIngresso(exameConfiguracao.getDerStVolume());
      labResultado.setResStResultado(exameConfiguracao.getDerStVolume());
    }

    if (exameConfiguracao.getCinStSugere() != null
        && exameConfiguracao.getCinStSugere().equalsIgnoreCase("PESO")) {
      labResultado.setResStIngresso(exameConfiguracao.getReqStPeso());
      labResultado.setResStResultado(exameConfiguracao.getReqStPeso());
    }

    if (exameConfiguracao.getCinStSugere() != null
        && exameConfiguracao.getCinStSugere().equalsIgnoreCase("ALTURA")) {
      labResultado.setResStIngresso(exameConfiguracao.getReqStAltura());
      labResultado.setResStResultado(exameConfiguracao.getReqStAltura());
    }

    if (exameConfiguracao.getCinStTipoResultado() != null) {

      switch (new Integer(exameConfiguracao.getCinStTipoResultado())) {
        case 1:
          if (exameConfiguracao.getLabResultado().getResStResultado() != null
              && !exameConfiguracao.getLabResultado().getResStResultado().equals("")) {

            if (exameConfiguracao.getCinInDecimais() != null) {
              nroFormatado =
                  new DecimalFormat(
                      PartnerDecimal.PartnerDecimal(exameConfiguracao.getCinInDecimais()));
            } else {
              nroFormatado = new DecimalFormat(PartnerDecimal.PartnerDecimal(0));
            }

            BigDecimal resultado =
                new BigDecimal(
                    exameConfiguracao.getLabResultado().getResStResultado().replaceAll(",", "."));

            labResultado.setResStResultado(nroFormatado.format(resultado));
            labResultado.setResStIngresso(nroFormatado.format(resultado));
          }
          break;
        case 4:
          labResultado.setResStIngresso(exameConfiguracao.getLabResultado().getResStResultado());

          if (exameConfiguracao.getLabResultado().getSeqStCodigo().equals("045")) {
            labResultado.setResStResultado(
                resultadoFrases(exameConfiguracao.getLabResultado().getResStIngresso(), strDbName));
          } else {
            labResultado.setResStResultado(
                resultadoFrases(exameConfiguracao.getLabResultado().getResStIngresso(), strDbName)
                    .toUpperCase());
          }
          break;
        case 9:
          labResultado.setResStIngresso(exameConfiguracao.getLabResultado().getResStResultado());

          if (exameConfiguracao.getLabResultado().getSeqStCodigo().equals("045")) {
            labResultado.setResStResultado(
                resultadoTsa(exameConfiguracao.getLabResultado().getResStIngresso(), strDbName));
          } else {
            labResultado.setResStResultado(
                resultadoTsa(exameConfiguracao.getLabResultado().getResStIngresso(), strDbName)
                    .toUpperCase());
          }
          break;
        case 10:
          if (exameConfiguracao.getLabResultado().getSeqStCodigo().equals("045")) {
            labResultado.setResStIngresso(
                resultadoBacteria(
                    exameConfiguracao.getLabResultado().getResStIngresso(), strDbName));
            labResultado.setResStResultado(
                resultadoBacteria(
                    exameConfiguracao.getLabResultado().getResStIngresso(), strDbName));
          } else {
            labResultado.setResStIngresso(
                resultadoBacteria(exameConfiguracao.getLabResultado().getResStIngresso(), strDbName)
                    .toUpperCase());
            labResultado.setResStResultado(
                resultadoBacteria(
                    exameConfiguracao.getLabResultado().getResStIngresso(), strDbName));
          }
          break;
        default:
      }
    }

    return labResultado;
  }