import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import javax.xml.crypto.Data;
import org.ufcspa.simdecs.entities.*;
import org.ufcspa.simdecs.util.DbUtil;
+import org.ufcspa.simdecs.util.NodoBean;
+import org.ufcspa.simdecs.util.UnBUtil;
+import unbbayes.prs.bn.ProbabilisticNode;
/**
*
return "";
}
+
- private String getRespostaNodo(Long idNodo) {
+ private String getRespostaNodo(NodoPaciente nodoPaciente) {
EntityManager em = DbUtil.getInstance().getEntityManager();
+
+ UnBUtil unBUtil = UnBUtil.getInstance(nodoPaciente.getPaciente().getRede());
+ unBUtil.abreRede(nodoPaciente.getPaciente().getRede());
+
+ Iterator<NodoPaciente> it = em.createQuery("From NodoPaciente Where paciente.id=:pIdPaciente")
+ .setParameter("pIdPaciente", nodoPaciente.getPaciente().getId())
+ .getResultList()
+ .iterator();
+
+ while(it.hasNext()) {
+ NodoPaciente nodoPac = it.next();
+
+ ProbabilisticNode pn = unBUtil.getNodeByName(nodoPac.getNodo().getNome());
+ unBUtil.ativarNodo(pn);
+ }
+
+ NodoBean nodoBean = unBUtil.getNodoBeanByNodo(nodoPaciente.getNodo());
+ nodoBean.getPercentualProbabilidade();
+
List <RespostaNodo> respostas = em.createQuery("From RespostaNodo where nodo.id=:pIdNodo")
- .setParameter("pIdNodo", idNodo)
+ .setParameter("pIdNodo", nodoPaciente.getNodo().getId())
.getResultList();
int random = (int) (1+Math.random()*respostas.size());
int i=1;
for(RespostaNodo resposta : respostas) {
- if (i++ == random)
- return resposta.getTexto();
+ if (i++ == random) {
+
+ List<IntervaloTabelaRespota> listaInt = em.createQuery("From IntervaloTabelaResposta Where tabelaResposta.id=:pIdTabela and :pProbabilidade between pesoInicial and pesoFinal")
+ .setParameter("pIdTabela", resposta.getTabelaResposta().getId())
+ .setParameter("pProbabilidade", nodoBean.getPercentualProbabilidade())
+ .getResultList();
+
+ int randomInt = (int) (1+Math.random()*listaInt.size());
+ int x=1;
+ for(IntervaloTabelaRespota intervalo : listaInt) {
+ if (x++ == random)
+ return resposta.getTexto().replaceAll("&&tabela", intervalo.getTexto());
+ }
+ }
}
return "";
if (!nodo.getNodo().getTipo().equals(Nodo.SINAL_SINTOMA))
continue;
- out.println(" <sintoma uid=\"sintoma-" + nodo.getId() + "\" nomeCientifico=\"" + nodo.getNodo().getNome() + "\" nomePopular=\"" + getPerguntaNodo(nodo.getNodo().getId()) + "\" imagem=\"\" som=\"\" video=\"\" dependencia=\"" + getDependencia(nodo.getNodo().getId()) + "\" falaPaciente=\"" + getRespostaNodo(nodo.getNodo().getId()) + "\" />");
+ out.println(" <sintoma uid=\"sintoma-" + nodo.getId() + "\" nomeCientifico=\"" + nodo.getNodo().getNome() + "\" nomePopular=\"" + getPerguntaNodo(nodo.getNodo().getId()) + "\" imagem=\"\" som=\"\" video=\"\" dependencia=\"" + getDependencia(nodo.getNodo().getId()) + "\" falaPaciente=\"" + getRespostaNodo(nodo) + "\" />");
}
out.println(" </perguntar_sintoma>");
return null;
}
+
+ public NodoBean getNodoBeanByNodo(Nodo nodo) {
+ for(Node node : rede.getNodes()) {
+ if (node.getName().equals(nodo.getNome()))
+ return new NodoBean(nodo, (ProbabilisticNode) node);
+ }
+
+ return null;
+ }
public ProbabilisticNetwork getRede() {
return rede;
setProbablidadeNodo(pn, 0.0f, 1f);
}
-
public List<NodoBean> getProbabilidadeNodos(String tipo) {
EntityManager em = DbUtil.getInstance().getEntityManager();
List<NodoBean> nodos = new ArrayList<NodoBean>();