class ConfigurarListaPacientesON extends BaseBusiness {

	@SuppressWarnings("unchecked")
	
	public void salvarListaAtendimentos(
			List<AghAtendimentos> listaAtendimentos, RapServidores servidor)
			throws ApplicationBusinessException {
		if (servidor == null || servidor.getId() == null) {
			throw new ApplicationBusinessException(
					ConfigurarListaPacientesONExceptionCode.MENSAGEM_SERVIDOR_INVALIDO);
		}
		MpmPacAtendProfissional associacao = null;
		MpmPacAtendProfissionalId idAssociacao = null;
		// Lista com os itens que vieram da tela
		List<MpmPacAtendProfissional> listaServidorAtendimentos = new ArrayList<MpmPacAtendProfissional>();
		for (AghAtendimentos atendimento : listaAtendimentos) {
			idAssociacao = new MpmPacAtendProfissionalId(atendimento.getSeq(),
					servidor.getId().getMatricula(), servidor.getId()
							.getVinCodigo());
			associacao = new MpmPacAtendProfissional(idAssociacao);
			associacao.setAtendimento(atendimento);
			associacao.setServidor(servidor);
			listaServidorAtendimentos.add(associacao);
		}
		// carrega os dados atuais do banco
		MpmPacAtendProfissionalDAO dao = getMpmPacAtendProfissionaisDAO();
		List<MpmPacAtendProfissional> listaServidorAtendimentosFromDB = dao
				.pesquisarAssociacoesPorServidor(servidor);
		// lista das associações para incluir no banco
		List<MpmPacAtendProfissional> paraIncluir = ListUtils.subtract(
				listaServidorAtendimentos, listaServidorAtendimentosFromDB);
		// chamada de inserção para cada uma
		for (MpmPacAtendProfissional mpmPacAtendProfissional : paraIncluir) {
			mpmPacAtendProfissional.setCriadoEm(new Date());
			dao.persistir(mpmPacAtendProfissional);
			dao.flush();
		}
		// lista das associações para excluir do banco
		List<MpmPacAtendProfissional> paraExcluir = ListUtils.subtract(
				listaServidorAtendimentosFromDB, listaServidorAtendimentos);
		for (MpmPacAtendProfissional mpmPacAtendProfissional : paraExcluir) {
			dao.remover(mpmPacAtendProfissional);
			dao.flush();
		}
	}

}