*/
package org.ufcspa.simdecs.mb.editarcasos;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
+import org.ufcspa.simdecs.util.NodoBean;
+import java.util.*;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import org.primefaces.component.commandbutton.CommandButton;
import org.ufcspa.simdecs.entities.PerguntaNodo;
import org.ufcspa.simdecs.entities.Rede;
import org.ufcspa.simdecs.mb.DefaultManagedBean;
-import org.ufcspa.simdecs.util.NodoBean;
-import org.ufcspa.simdecs.util.UnBUtil;
+import org.ufcspa.simdecs.util.ProbabilisticBean;
+import org.ufcspa.simdecs.util.UnBBayesUtil;
+import unbbayes.prs.Node;
import unbbayes.prs.bn.ProbabilisticNode;
+import unbbayes.prs.bn.TreeVariable;
/**
*
addInfoMessage("Salvo com Sucesso!", "Caso clínico salvo com sucesso!");
}
- public void processaRede() {
+ public void processaRede() throws Exception {
idPaciente = Long.valueOf(getTextParameter("pIdPaciente"));
Paciente paciente = em.find(Paciente.class, idPaciente);
- UnBUtil unBUtil = UnBUtil.getInstance(paciente.getRede());
- unBUtil.abreRede(paciente.getRede());
+ UnBBayesUtil unBUtil = new UnBBayesUtil(paciente.getRede());
// Sinais e Sintomas
Iterator it = sinaisSintomas.getSource().iterator();
while(it.hasNext()) {
- ProbabilisticNode pn = unBUtil.getNodeByName((String) it.next());
+ ProbabilisticNode pn = (ProbabilisticNode) unBUtil.getNodeByName((String) it.next());
if (pn != null)
- unBUtil.desativarNodo(pn);
+ unBUtil.setNodeState(pn, "Yes", 0, "Not", 1);
}
it = sinaisSintomas.getTarget().iterator();
while(it.hasNext()) {
- ProbabilisticNode pn = unBUtil.getNodeByName((String) it.next());
+ ProbabilisticNode pn = (ProbabilisticNode) unBUtil.getNodeByName((String) it.next());
if (pn != null)
- unBUtil.ativarNodo(pn);
+ unBUtil.setNodeState(pn, "Yes", 1, "Not", 0);
}
// Historicos
it = historicos.getSource().iterator();
while(it.hasNext()) {
- ProbabilisticNode pn = unBUtil.getNodeByName((String) it.next());
+ ProbabilisticNode pn = (ProbabilisticNode) unBUtil.getNodeByName((String) it.next());
if (pn != null)
- unBUtil.desativarNodo(pn);
+ unBUtil.setNodeState(pn, "Yes", 0, "Not", 1);
}
it = historicos.getTarget().iterator();
while(it.hasNext()) {
- ProbabilisticNode pn = unBUtil.getNodeByName((String) it.next());
+ ProbabilisticNode pn = (ProbabilisticNode) unBUtil.getNodeByName((String) it.next());
if (pn != null)
- unBUtil.ativarNodo(pn);
+ unBUtil.setNodeState(pn, "Yes", 1, "Not", 0);
}
// Exames Físicos
it = examesFisicos.getSource().iterator();
while(it.hasNext()) {
- ProbabilisticNode pn = unBUtil.getNodeByName((String) it.next());
+ ProbabilisticNode pn = (ProbabilisticNode) unBUtil.getNodeByName((String) it.next());
if (pn != null)
- unBUtil.desativarNodo(pn);
+ unBUtil.setNodeState(pn, "Yes", 0, "Not", 1);
}
it = examesFisicos.getTarget().iterator();
while(it.hasNext()) {
- ProbabilisticNode pn = unBUtil.getNodeByName((String) it.next());
+ ProbabilisticNode pn = (ProbabilisticNode) unBUtil.getNodeByName((String) it.next());
if (pn != null)
- unBUtil.ativarNodo(pn);
+ unBUtil.setNodeState(pn, "Yes", 1, "Not", 0);
}
// Exames Complementares
it = examesComplementares.getSource().iterator();
while(it.hasNext()) {
- ProbabilisticNode pn = unBUtil.getNodeByName((String) it.next());
+ ProbabilisticNode pn = (ProbabilisticNode) unBUtil.getNodeByName((String) it.next());
if (pn != null)
- unBUtil.desativarNodo(pn);
+ unBUtil.setNodeState(pn, "Yes", 0, "Not", 1);
}
it = examesComplementares.getTarget().iterator();
while(it.hasNext()) {
- ProbabilisticNode pn = unBUtil.getNodeByName((String) it.next());
+ ProbabilisticNode pn = (ProbabilisticNode) unBUtil.getNodeByName((String) it.next());
if (pn != null)
- unBUtil.ativarNodo(pn);
+ unBUtil.setNodeState(pn, "Yes", 1, "Not", 0);
}
- diagnosticos = unBUtil.getProbabilidadeDiagnosticos();
- condutas = unBUtil.getProbabilidadeCondutas();
+ populaProbabilidadeDiagnosticos(unBUtil);
+ populaProbabilidadeCondutas(unBUtil);
+ }
+
+
+ private void populaProbabilidadeCondutas(UnBBayesUtil unBUtil) {
+ Iterator<Nodo> itConds = em.createNamedQuery("Nodo.getByTipo")
+ .setParameter("pTipo", Nodo.CONDUTA)
+ .getResultList().iterator();
+
+ condutas = new ArrayList<NodoBean>();
+
+ while(itConds.hasNext()) {
+ Nodo nodo = itConds.next();
+ NodoBean nodoBean = new NodoBean(nodo, (Float) unBUtil.getProbabilidadeByState((TreeVariable) unBUtil.getNodeByName(nodo.getNome()), "Yes"));
+ condutas.add(nodoBean);
+ }
+
+ Collections.sort(condutas, new Comparator() {
+ @Override
+ public int compare(Object o1, Object o2) {
+ NodoBean nodo1 = (NodoBean) o1;
+ NodoBean nodo2 = (NodoBean) o2;
+
+ if (nodo1.getProbabilidade() > nodo2.getProbabilidade())
+ return -1;
+ else if (nodo1.getProbabilidade() < nodo2.getProbabilidade())
+ return 1;
+ else
+ return 0;
+ }
+ });
}
+ private void populaProbabilidadeDiagnosticos(UnBBayesUtil unBUtil) {
+ Iterator<Nodo> itDiags = em.createNamedQuery("Nodo.getByTipo")
+ .setParameter("pTipo", Nodo.DIAGNOSTICO)
+ .getResultList().iterator();
+
+ diagnosticos = new ArrayList<NodoBean>();
+
+ while(itDiags.hasNext()) {
+ Nodo nodo = itDiags.next();
+ NodoBean nodoBean = new NodoBean(nodo, (Float) unBUtil.getProbabilidadeByState((TreeVariable) unBUtil.getNodeByName(nodo.getNome()), "Yes"));
+ diagnosticos.add(nodoBean);
+ }
+
+ Collections.sort(diagnosticos, new Comparator() {
+ @Override
+ public int compare(Object o1, Object o2) {
+ NodoBean nodo1 = (NodoBean) o1;
+ NodoBean nodo2 = (NodoBean) o2;
+
+ if (nodo1.getProbabilidade() > nodo2.getProbabilidade())
+ return -1;
+ else if (nodo1.getProbabilidade() < nodo2.getProbabilidade())
+ return 1;
+ else
+ return 0;
+ }
+ });
+ }
private String getPerguntaNodo(Long idNodo) {
List <PerguntaNodo> perguntas = em.createQuery("From PerguntaNodo where nodo.id=:pIdNodo")
populate();
}
- public void selecionaPaciente() {
+ public void selecionaPaciente() throws Exception {
Paciente paciente = em.find(Paciente.class, Long.valueOf(getTextParameter("pIdPaciente")));
idPaciente = paciente.getId();
examesFisicos = new DualListModel<Nodo>(origemExamesFisicos, destinoExamesFisicos);
examesComplementares = new DualListModel<Nodo>(origemExamesComplementares, destinoExamesComplementares);
- UnBUtil unBUtil = UnBUtil.getInstance(paciente.getRede());
+ // UnBBayesUtil unBUtil = new UnBBayesUtil(paciente.getRede());
- diagnosticos = unBUtil.getProbabilidadeDiagnosticos();
- condutas = unBUtil.getProbabilidadeCondutas();
+ // populaProbabilidadeDiagnosticos(unBUtil);
+ // populaProbabilidadeCondutas(unBUtil);
}
public Caso getCaso() {