class PesquisarPacientesParaDispensacaoRN extends BaseBusiness implements Serializable {

	@SuppressWarnings("PMD.NPathComplexity")
	public DominioCoresPacientesTriagem afacOrdenaDisp(VAfaPrcrDispMdtos paciente){
		AghAtendimentos atendimento = getAghuFacade().obterAtendimento(paciente.getId().getAtdSeq(), DominioPacAtendimento.N, Arrays.asList(DominioOrigemAtendimento.I)); 
		if(atendimento!= null && atendimento.getProntuario() > 0) {
			return DominioCoresPacientesTriagem.VERMELHO;
		} else{
			if(paciente.getApaAtdSeq() != null && paciente.getApaSeq() != null && paciente.getSumSeqp() != null) {
				return DominioCoresPacientesTriagem.VERMELHO;
			}
		}
		
		Integer vSolic	= paciente.getCountSolic() != null ? paciente.getCountSolic() : 0;
		Integer vDisp = paciente.getCountDisp() != null ? paciente.getCountDisp() : 0;
		Integer vConf = paciente.getCountConf() != null ? paciente.getCountConf() : 0;
		Integer vEnv = paciente.getCountEnv() != null ? paciente.getCountEnv() : 0;
		Integer vTriado = paciente.getCountTriado() != null ? paciente.getCountTriado() : 0;
		Integer vOcorr = paciente.getCountOcorr() != null ? paciente.getCountOcorr() : 0;

		if (vSolic == 0 && vTriado == 0 && vOcorr == 0) {
			return DominioCoresPacientesTriagem.AZUL;
		}
		
		if(vSolic >0) {
			if(vDisp >0 || vConf > 0 || vEnv >0 || vOcorr > 0 ) {
				return DominioCoresPacientesTriagem.AMARELO;
			}
		}
		
		if(vTriado >0 && vDisp==0) {
			return DominioCoresPacientesTriagem.ROXO;
		}
		
		if(vTriado==0 && vOcorr > 0 && vSolic == 0) {
			return DominioCoresPacientesTriagem.MARROM;
		}
		
		if(vTriado > 0 && vDisp >0) {
			return DominioCoresPacientesTriagem.BRANCO;
		}
		
		return DominioCoresPacientesTriagem.CINZA;
	}

}