class ManterSintaxeSumarioRN extends BaseBusiness {

	public Integer montaSintaxeSumarioItemConsultoria(Integer seqAtendimento,
			Integer seqAtendimentoPaciente, Integer seqSolicitacaoConsultoria)
			throws ApplicationBusinessException {
		MpmSolicitacaoConsultoriaDAO mpmSolicitacaoConsultoriaDAO = getMpmSolicitacaoConsultoriaDAO();
		MpmItemPrescricaoSumarioDAO mpmItemPrescricaoSumarioDAO = getMpmItemPrescricaoSumarioDAO();
		MpmItemConsultoriaSumarioDAO mpmItemConsultoriaSumarioDAO = getMpmItemConsultoriaSumarioDAO();
		
		StringBuilder sintaxeCons = new StringBuilder("");
		Integer ituSeq = 0;
		String sintaxeConsAux = "";
		MpmSolicitacaoConsultoriaId solConsId = new MpmSolicitacaoConsultoriaId();
		solConsId.setAtdSeq(seqAtendimento);
		solConsId.setSeq(seqSolicitacaoConsultoria);
		MpmSolicitacaoConsultoria solConsul = mpmSolicitacaoConsultoriaDAO.obterPorChavePrimaria(solConsId);
		
		if(solConsul != null){
			if(DominioTipoSolicitacaoConsultoria.C.equals(solConsul.getTipo())){
				sintaxeCons.append("Consultoria ");
			}else{
				sintaxeCons.append("Avaliação pré-cirúrgica ");
			}
			if(DominioSimNao.S.equals(solConsul.getIndUrgencia())){
				sintaxeCons.append("URGENTE em ");
			}else{
				sintaxeCons.append("em ");
			}
			sintaxeCons.append(StringUtils.capitalize(StringUtils.lowerCase(solConsul.getEspecialidade().getNomeEspecialidade())));//Especialidade e NomeEspecialidade, conforme mapeamento, sao notNull
			sintaxeConsAux = StringUtils.stripEnd(sintaxeCons.toString(), " ");//Retira os espacos em branco somente ao final da string.
		}
		
		List<MpmItemPrescricaoSumario> listaIps = mpmItemPrescricaoSumarioDAO.listarItensPrescricaoSumario(seqAtendimento, seqAtendimentoPaciente, sintaxeConsAux, DominioTipoItemPrescricaoSumario.POSITIVO_10);
		MpmItemPrescricaoSumario itemPrescSum = new MpmItemPrescricaoSumario();
		Boolean incluiuItu = false;
		if((listaIps == null || listaIps.isEmpty())){
			incluiuItu = true;
			itemPrescSum.setDescricao(sintaxeConsAux);
			itemPrescSum.setTipo(DominioTipoItemPrescricaoSumario.POSITIVO_10);
			itemPrescSum.setOrigemPrescricao(DominioOrigemPrescricao.I);
			
			AghAtendimentoPacientesId atendimentoPacienteId = new AghAtendimentoPacientesId();
			atendimentoPacienteId.setAtdSeq(seqAtendimento);
			atendimentoPacienteId.setSeq(seqAtendimentoPaciente);
			
			AghAtendimentoPacientes atendimentoPaciente = getAghuFacade().obterAghAtendimentoPacientesPorChavePrimaria(atendimentoPacienteId);
			
			itemPrescSum.setAtendimentoPaciente(atendimentoPaciente);
			mpmItemPrescricaoSumarioDAO.persistir(itemPrescSum);
			mpmItemPrescricaoSumarioDAO.flush();

			ituSeq = itemPrescSum.getSeq(); 
		} else {
			ituSeq = listaIps.get(0).getSeq();
		}
		
		if(incluiuItu && solConsul != null){
			MpmItemConsultoriaSumario ics = new MpmItemConsultoriaSumario();

			MpmItemConsultoriaSumarioId id = new MpmItemConsultoriaSumarioId();
			id.setItuSeq(ituSeq);
			id.setSeqp(1);//Como nao esta em um loop, o seq sera sempre 1, conforme a procedure.
			ics.setId(id);
			
			ics.setItemPrescricaoSumario(itemPrescSum);
			
			if(DominioTipoSolicitacaoConsultoria.C.equals(solConsul.getTipo())){//Tipo, nos dois pojos, conforme o mapeamento, é notNull
				ics.setTipo(DominioItemContaHospitalar.C);
			}else{
				ics.setTipo(DominioItemContaHospitalar.A);
			}
			
			ics.setEspecialidade(solConsul.getEspecialidade());
			
			if(DominioSimNao.S.equals(solConsul.getIndUrgencia())){//IndUrgencia, conforme mapeamento, eh notNull
				ics.setIndUrgencia(true);
			}else{
				ics.setIndUrgencia(false);
			}
			mpmItemConsultoriaSumarioDAO.persistir(ics);
			mpmItemConsultoriaSumarioDAO.flush();
		}
		
		return ituSeq;

	}

}