Criar quantidade de exibições de acordo com a quantidade de elementos

Pessoal,

Estou com o seguinte problema: tenho uma lista de nomes de hospitais.
Essa lista deve ser apresentada em um telão. Esse telão pode apresentar no máximo 13 nomes de hospitais.
É exibida um lista com nomes de hospitais para cada especialidade cadastrada.
Por exemplo: Oftamologia => e uma lista dos hospitais que possuem essa especialidade.
Neurologia => e uma lista dos hospitais que possuem essa especialidade.
No caso de haver por exemplo 20 hospitais cadastrados para oftamologia, a exibição deve ser da seguinte forma:
Oftamologia => e uma lista dos hospitais que possuem essa especialidade (13 hospitais).
Oftamologia => e uma lista com 7 hospitais.
Neurologia => e uma lista dos hospitais que possuem essa especialidade.

Para a exibição estou usando o componente caroussel do primeface.

O código da minha tela:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui"> 

<h:head></h:head> 
<body> 
<ui:composition template="_templateSemMenu.xhtml">
<ui:define name="corpo">

<style type="text/css">
	.ui-datatable .ui-datatable-data .vermelho td{
		background-color:#FF0000;
	}
	
	*{
		font-weight: bold; 
	}
	
	.especialidade{
		font-size: 28px;
	}
	
	.titulo{
		font-size: 30px;
	}
	.dados{
		font-size: 25px;
	}
</style>


<h:form id="formularioExibicao" >
	<br></br>
	<br></br>
	<p:growl id="growl" showDetail="true" sticky="true"></p:growl>
	<div align="center" >
	<p:outputPanel id="painel" >
	<p:carousel id="smallCarousel" value="#{exibicaoBean.listaExibicao}" var="quantitativoExibicao"   
        itemStyleClass="especialidade" rows="1" effect="easeInStrong" circular="true" pageLinks="4" autoPlayInterval="10000" style="width:1000px; height:100%;">
       
       <p:panel id="panelEspecialidade">
       		<h:outputText value="#{quantitativoExibicao.especialidade.nome}" style="especialidade" />
       </p:panel>   
          
	   <p:dataTable id="tabelaQuantitativo" value="#{quantitativoExibicao.quantitativo}" var="quantitativo" rowStyleClass="#{quantitativo.quantidade le 0 ? 'vermelho' : null}" style="width:1000px; height:1000px;">
	   		
	   		<p:column id="hospital" >
	   			<f:facet name="header">  
                	Hospital  
           		</f:facet>
	   			<h:outputText value="#{quantitativo.especialidadeREGMED.hospital.nome}" />
	   		</p:column>
	   		
	   		<p:column id="quantidade">
	   			<f:facet name="header">  
                	Esp 
           		</f:facet>
	   			<h:outputText value="#{quantitativo.quantidade}" />
	   		</p:column>
	   		
	   		<p:column id="encaminhamento" >
	   			<f:facet name="header">  
                	Enc
           		</f:facet>
	   			<h:outputText value="#{quantitativo.encaminhamentos}" />
	   		</p:column>
	   		
	   </p:dataTable>
	</p:carousel>
	</p:outputPanel>
	</div> 
</h:form>


</ui:define>
</ui:composition>
</body> 
</html>

E o meu bean:


package br.pe.gov.ses.pme.mb;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject;

import br.pe.gov.ses.pme.dao.DAO;
import br.pe.gov.ses.pme.dao.EspecialidadeREGMEDDAO;
import br.pe.gov.ses.pme.dao.QuantitativoDAO;
import br.pe.gov.ses.pme.dao.QuantitativoExibicaoDAO;
import br.pe.gov.ses.pme.modelo.Especialidade;
import br.pe.gov.ses.pme.modelo.Quantitativo;
import br.pe.gov.ses.pme.modelo.QuantitativoExibicao;

@ManagedBean
@ViewScoped
public class QuantitativoExibicaoBean implements Serializable{
	
	private QuantitativoExibicao quantitativoExibicao = new QuantitativoExibicao();
	
	private DAO<QuantitativoExibicao> dao = new DAO<QuantitativoExibicao>(QuantitativoExibicao.class);
	
	private DAO<Especialidade> daoEspecialidade = new DAO<Especialidade>(Especialidade.class);
	
	private List<QuantitativoExibicao> listaExibicao;
	
	private List<QuantitativoExibicao> listaExibicaoPaginado;
	
	private List<Especialidade> listaEspecialidade;
	
	private Date data;
	
	private int turno;
	
	private int show;
	
	private int paginacao;
	
	@Inject
	private QuantitativoDAO quantitativoDAO;
	
	@Inject
	private QuantitativoExibicaoDAO quantExibicaoDAO;
	
	@Inject
	private EspecialidadeREGMEDDAO especialidadeREGMEDDAO;
	
	public QuantitativoExibicaoBean(){
		
	}
	
	@PostConstruct
	public void init(){
		
		this.listaExibicao = new ArrayList();
		
		this.setListaEspecialidade(this.daoEspecialidade.listarTodos());
		
		this.show = 0;
		
		this.paginacao = 0;
		
	}
	
	public QuantitativoExibicaoBean(QuantitativoExibicaoDAO exibDAO){
		this.quantExibicaoDAO = exibDAO;
	}
	
	/*
	 * Método que monta as informações para exibição 
	 */
	public String criarExibicao(){
		int contador = 0;
		String url = "";
		
		boolean existePlantao = this.quantitativoDAO.existePlantao(this.data, this.turno);
		if(existePlantao){
			
			for(int i = 0; i < this.listaEspecialidade.size(); i++){
				contador++;
		
					Especialidade tempEspecialidade = this.listaEspecialidade.get(i);
					List<Quantitativo> tempListaQuantitativo = this.setarListaExibicao(tempEspecialidade, this.data, this.turno);
					System.out.println("tam do tempListaQuantitativo "+tempListaQuantitativo.size() );
					QuantitativoExibicao tempExibicao = new QuantitativoExibicao();
					tempExibicao.setEspecialidade(tempEspecialidade);
					tempExibicao.setQuantitativo(tempListaQuantitativo);
					
					this.listaExibicao.add(tempExibicao);
				
			}
			this.show = 1;
			url = "ExibicaoQuantitativo.jsf?faces-redirect=true";
			
			FacesContext.getCurrentInstance().getExternalContext().getFlash().put("lista", this.listaExibicao);
			
		}else{
			
			FacesContext facesContext = FacesContext.getCurrentInstance();                 
            facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Não há exibição para esse plantão", ""));
            facesContext.getExternalContext().getFlash().setKeepMessages(true);
			
			url = "EscolhaExibicao.jsf?faces-redirect=true";
		}
		return url;
	}
		
		
	
	public List<Quantitativo> setarListaExibicao(Especialidade especialidade, Date data, int turno){
			System.out.println("nome da especialidade: "+especialidade.getNome());
			List<Quantitativo> resultante = new ArrayList();
			List<Quantitativo> filtrado = this.quantitativoDAO.procurarQuantitativo(data, turno, especialidade);
			List<Quantitativo> restante = this.quantitativoDAO.setarHospitaisQuantitativo(especialidade);
			int tamanho = filtrado.size() + restante.size();
			System.out.println("tamanho: "+tamanho);
			int indice = 0;
			resultante = filtrado;
			for(int i = filtrado.size(); i< tamanho; i++){
				resultante.add(i, restante.get(indice));
				indice++;
			}
			
		return resultante;
	}
	
	
	
	
	
	public QuantitativoExibicao getExibicaoQuantitativo() {
		return quantitativoExibicao;
	}

	public void setExibicaoQuantitativo(QuantitativoExibicao exibicaoQuantitativo) {
		this.quantitativoExibicao = exibicaoQuantitativo;
	}

	public List<QuantitativoExibicao> getListaExibicao() {
		return listaExibicao;
	}

	public void setListaExibicao(List<QuantitativoExibicao> lista) {
		this.listaExibicao = lista;
	}

	public DAO<QuantitativoExibicao> getDao() {
		return dao;
	}

	public void setDao(DAO<QuantitativoExibicao> dao) {
		this.dao = dao;
	}

	public QuantitativoExibicaoDAO getQuantExibicaoDAO() {
		return quantExibicaoDAO;
	}

	public void setQuantExibicaoDAO(QuantitativoExibicaoDAO quantExibicaoDAO) {
		this.quantExibicaoDAO = quantExibicaoDAO;
	}

	public List<Especialidade> getListaEspecialidade() {
		return listaEspecialidade;
	}

	public void setListaEspecialidade(List<Especialidade> listaEspecialidade) {
		this.listaEspecialidade = listaEspecialidade;
	}

	public DAO<Especialidade> getDaoEspecialidade() {
		return daoEspecialidade;
	}

	public void setDaoEspecialidade(DAO<Especialidade> daoEspecialidade) {
		this.daoEspecialidade = daoEspecialidade;
	}

	public QuantitativoDAO getQuantitativoDAO() {
		return quantitativoDAO;
	}

	public void setQuantitativoDAO(QuantitativoDAO quantitativoDAO) {
		this.quantitativoDAO = quantitativoDAO;
	}

	public Date getData() {
		return data;
	}

	public void setData(Date data) {
		this.data = data;
	}

	public int getTurno() {
		return turno;
	}

	public void setTurno(int turno) {
		this.turno = turno;
	}

	public int getShow() {
		return show;
	}

	public void setShow(int show) {
		this.show = show;
	}

	public EspecialidadeREGMEDDAO getEspecialidadeREGMEDDAO() {
		return especialidadeREGMEDDAO;
	}

	public void setEspecialidadeREGMEDDAO(EspecialidadeREGMEDDAO especialidadeREGMEDDAO) {
		this.especialidadeREGMEDDAO = especialidadeREGMEDDAO;
	}

	public int getPaginacao() {
		return paginacao;
	}

	public void setPaginacao(int paginacao) {
		this.paginacao = paginacao;
	}

	public List<QuantitativoExibicao> getListaExibicaoPaginado() {
		return listaExibicaoPaginado;
	}

	public void setListaExibicaoPaginado(List<QuantitativoExibicao> listaExibicaoPaginado) {
		this.listaExibicaoPaginado = listaExibicaoPaginado;
	}


	
}