class RelatorioEscalaDeSalasON extends BaseBusiness {

	public List<RelatorioEscalaDeSalasVO> listarEquipeSalas(Short seqUnidade) {
		AghUnidadesFuncionais unidade = getAghuFacade().obterAghUnidadesFuncionaisPorChavePrimaria(seqUnidade); //c1
		List<MbcCaracteristicaSalaCirg> listSalas = getMbcCaracteristicaSalaCirgDAO().listarCaracteristicaSalaCirgPorUnidade(seqUnidade, DominioSituacao.A); //c2
		List<RelatorioEscalaDeSalasVO> listaVo = new ArrayList<RelatorioEscalaDeSalasVO>();
		
		RelatorioEscalaDeSalasRN escalaDeSalaRn = getRelatorioEscalaDeSalasRN();
		List<RelatorioEscalaDeSalasLinhaVO> listLinha = new ArrayList<RelatorioEscalaDeSalasLinhaVO>();//Lista de linhas de uma sala
		for (MbcCaracteristicaSalaCirg sala : listSalas){
			if(listaVo.isEmpty()){ //Primeira vez
				RelatorioEscalaDeSalasVO vo = new RelatorioEscalaDeSalasVO();
				
				vo.setNomeHospital(getAghuFacade().getRazaoSocial());
				vo.setDataAtual(new Date());
				vo.setDescricaoUnidade(unidade.getDescricao());
				vo.setSala(processarSala(sala.getMbcSalaCirurgica().getId().getSeqp()));			
				listaVo.add(vo);
			}else{
				if(!processarSala(sala.getMbcSalaCirurgica().getId().getSeqp()).equals(listaVo.get(listaVo.size()-1).getSala())){
					listaVo.get(listaVo.size()-1).setLinha(listLinha);
					listLinha = new ArrayList<RelatorioEscalaDeSalasLinhaVO>();

					RelatorioEscalaDeSalasVO vo = new RelatorioEscalaDeSalasVO();
					
					vo.setNomeHospital(getAghuFacade().getRazaoSocial());
					vo.setDataAtual(new Date());
					vo.setDescricaoUnidade(unidade.getDescricao());
					vo.setSala(processarSala(sala.getMbcSalaCirurgica().getId().getSeqp()));			
					listaVo.add(vo);
				}
			}
			RelatorioEscalaDeSalasLinhaVO linha = processarLinha(seqUnidade, escalaDeSalaRn, sala);
			if(!listLinha.contains(linha)){// distinct
				listLinha.add(linha);
			}			
		}
		listaVo.get(listaVo.size()-1).setLinha(listLinha);//add a ultima lista na ultima linha
		
		return listaVo;
	}

}