private void finalizarDispensacao() {
    PadraoFluxoTemp.limparFluxo();
    try {
      TipoMovimento tipoMovimentoDS = Parametro.tipoMovimentoDispensacaoSimples();
      Date date = new Date();
      for (ItemDispensacao item : getItensDispensacao()) {
        item.getItem().setDataLiberacao(date);
        item.getItem().setProfissionalLiberacao(Autenticador.getProfissionalLogado());
        if (!item.getItem().getStatusItem().equals(TipoStatusSolicitacaoItemEnum.R)) {
          for (EstoqueDispensacao ed : item.getEstoques()) {
            MovimentoLivro ml = new MovimentoLivro();
            ml.setEstoque(ed.getEstoque());
            ml.setTipoMovimento(tipoMovimentoDS);
            ml.setQuantidadeMovimentacao(ed.getQuantidadeDispensada());
            ml.setJustificativa("RM: " + getInstancia().getIdSolicitacaoMedicamentoUnidade());
            new ControleEstoque().liberarAjuste(date, ml);

            PadraoFluxoTemp.getObjetoSalvar().put("MovimentoLivro" + ml.hashCode(), ml);

            DispensacaoSimples ds = new DispensacaoSimples();
            ds.setSolicitacaoMedicamentoUnidadeItem(item.getItem());
            ds.setMovimentoLivro(ml);
            ds.setUnidadeDispensada(
                item.getItem().getSolicitacaoMedicamentoUnidade().getUnidadeDestino());
            PadraoFluxoTemp.getObjetoSalvar().put("DispensacaoSimples" + ds.hashCode(), ds);
          }
        }
        PadraoFluxoTemp.getObjetoAtualizar()
            .put("ItemDispensacao" + item.hashCode(), item.getItem());
      }
      getInstancia().setDataDispensacao(date);
      getInstancia().setProfissionalDispensacao(Autenticador.getProfissionalLogado());
      getInstancia().setStatusDispensacao(TipoStatusDispensacaoEnum.D);
      PadraoFluxoTemp.getObjetoAtualizar()
          .put("Dispensacao" + getInstancia().hashCode(), getInstancia());
      PadraoFluxoTemp.finalizarFluxo();
      setExibirDialogProfissionalReceptor(false);
      setExibirDialogDispensacao(true);
      SolicitacaoMedicamentoUnidadeConsultaRaiz.getInstanciaAtual()
          .consultarSolicitacoesPendentes();
    } catch (Exception e) {
      e.printStackTrace();
      getInstancia().setStatusDispensacao(TipoStatusDispensacaoEnum.P);
    } finally {
      PadraoFluxoTemp.limparFluxo();
      unlockEstoques();
      setInstancia(
          new SolicitacaoMedicamentoUnidadeConsultaRaiz()
              .solicitacaoId(getInstancia().getIdSolicitacaoMedicamentoUnidade()));
    }
  }
 @Override
 public boolean enviar() {
   try {
     boolean liberadoGeral = Parametro.getLiberadoSolicitacaoMedicamentoForaHU();
     if (!liberadoGeral) new RestringirAcessoRedeHU().validarAcessoRedeHU();
     getInstancia().setDataInsercao(new Date());
     getInstancia().setProfissionalInsercao(Autenticador.getProfissionalLogado());
     getInstancia().setStatusDispensacao(TipoStatusDispensacaoEnum.A);
     return super.enviar();
   } catch (ExcecaoProfissionalLogado e) {
     e.printStackTrace();
   } catch (ExcecaoForaRedeHU e) {
     e.printStackTrace();
   }
   return false;
 }