/** @throws SystemException */
  public void imprimirListaGeralPorSituacao() throws SystemException {

    String pathRelatorio = REL_SITUACAO_DOS_DOCUMENTOS_POR_SITUACAO;

    List<SituacaoDosDocumentosTO> listaSituacaoDosDocumentosTO =
        new ArrayList<SituacaoDosDocumentosTO>();

    List<Situacao> listaSituacoes = (List<Situacao>) situacaoService.listar();

    for (Situacao s : listaSituacoes) {

      SituacaoDosDocumentosTO situacaoDosDocumentosTO = new SituacaoDosDocumentosTO();

      List<IndicadorProcesso> listaIndicadorProcessoTmp = new ArrayList<IndicadorProcesso>();
      listaIndicadorProcessoTmp.addAll(carregarListaIndicadorSubProcPorSituacao(s.getId()));

      List<Risco> listaRiscoSubProcTmp = new ArrayList<Risco>();
      listaRiscoSubProcTmp.addAll(carregarListaRiscoSubProcPorSituacao(s.getId()));

      List<InteracaoProcesso> listaInteracaoProcessoTmp = new ArrayList<InteracaoProcesso>();
      listaInteracaoProcessoTmp.addAll(carregarListaInteracaoProcessoPorSituacao(s.getId()));

      List<Procedimento> listaProcedimentoSubProcTmp = new ArrayList<Procedimento>();
      listaProcedimentoSubProcTmp.addAll(carregarListaProcedimentoSubProcSituacao(s.getId()));

      List<ProtocoloClinico> listaProtocoloClinicoSubProcTmp = new ArrayList<ProtocoloClinico>();
      listaProtocoloClinicoSubProcTmp.addAll(
          carregarListaProtocoloClinicoSubProcSituacao(s.getId()));

      List<DocumentoFisico> listaDocumentoFisicoTmp = new ArrayList<DocumentoFisico>();
      listaDocumentoFisicoTmp.addAll(carregarListaDocFisicoPorSituacao(s.getId()));

      List<Reuniao> listaReuniaoTmp = new ArrayList<Reuniao>();
      listaReuniaoTmp.addAll(carregarListaReuniaoPorSituacao(s.getId()));

      situacaoDosDocumentosTO.getListaIndicadorProcesso().addAll(listaIndicadorProcessoTmp);

      situacaoDosDocumentosTO.getListaRiscoSubProc().addAll(listaRiscoSubProcTmp);
      situacaoDosDocumentosTO.getListaInteracaoProcesso().addAll(listaInteracaoProcessoTmp);
      situacaoDosDocumentosTO.getListaProcedimentoSubProc().addAll(listaProcedimentoSubProcTmp);
      situacaoDosDocumentosTO
          .getListaProtocoloClinicoSubProc()
          .addAll(listaProtocoloClinicoSubProcTmp);
      situacaoDosDocumentosTO.getListaDocumentoFisico().addAll(listaDocumentoFisicoTmp);
      situacaoDosDocumentosTO.getListaReuniao().addAll(listaReuniaoTmp);

      situacaoDosDocumentosTO.setSituacao(s);
      listaSituacaoDosDocumentosTO.add(situacaoDosDocumentosTO);
    }

    Map<String, Object> parametros = new HashMap<String, Object>();
    parametros.putAll(carregarParametrosSituacao("Situação dos Documentos"));

    JasperReportUtil.gerarPDF(
        pathRelatorio,
        parametros,
        listaSituacaoDosDocumentosTO,
        "SituacaoDosDocumentosPorSituacao");
  }
  /** @return */
  private String carregarSituacao() {
    Situacao situacao = new Situacao();
    try {
      situacao = situacaoService.consultar(codigoSituacaoSelecionado);
    } catch (Exception e) {
      // TODO: handle exception
      e.printStackTrace();
    }

    return situacao.getNome();
  }
  /**
   * @return
   * @throws Exception
   */
  private List<SelectItem> carregarListaSituacao() throws Exception {

    if (listaSituacao == null) {
      listaSituacao = new ArrayList<SelectItem>();
    } else {
      listaSituacao.clear();
    }

    listaSituacao.add(new SelectItem(0, "Selecione"));

    List<Situacao> listaTodos = (List<Situacao>) situacaoService.listar();

    for (Situacao s : listaTodos) {
      listaSituacao.add(new SelectItem(s.getId(), s.getNome()));
    }

    return listaSituacao;
  }