<class>org.ufcspa.simdecs.entities.Usuario</class>
<class>org.ufcspa.simdecs.entities.TaticaPedagogica</class>
<class>org.ufcspa.simdecs.entities.IntervencaoPedagogica</class>
+ <class>org.ufcspa.simdecs.entities.LogPerguntas</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<shared-cache-mode>NONE</shared-cache-mode>
<properties>
import java.io.PrintWriter;
import java.util.Date;
+import java.util.List;
import javax.persistence.EntityManager;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.ufcspa.simdecs.entities.Log;
+import org.ufcspa.simdecs.entities.Paciente;
import org.ufcspa.simdecs.entities.SessaoUsuario;
import org.ufcspa.simdecs.entities.TipoEventoLog;
+import org.ufcspa.simdecs.mediador.NegociacaoPedagogica;
/**
*
out.println("<xml>");
- out.println(" <resposta_final_mediador mensagem=\"" + this.getClass() + "\" />");
+ List<Paciente> pacientes = em.createQuery("From Paciente where caso.id=:pIdCaso")
+ .setParameter("pIdCaso", sessaoUsuario.getCaso().getId())
+ .getResultList();
+
+ out.print(" <resposta_final_mediador mensagem=\"");
+ // Busca os pacientes
+ for(Paciente paciente : pacientes) {
+ NegociacaoPedagogica negociacao = new NegociacaoPedagogica(pIdSessao, paciente);
+ out.println(negociacao.getMensagemFinal());
+ }
+ out.print("\" />");
+
out.println(" <execucao sucesso=\"sim\" />" );
out.println("</xml>");
}
import org.ufcspa.simdecs.entities.Paciente;
import org.ufcspa.simdecs.entities.SessaoUsuario;
import org.ufcspa.simdecs.entities.TipoEventoLog;
+import org.ufcspa.simdecs.mediador.NegociacaoPedagogica;
/**
*
// out.println(" <grava_historico registrado=\"sim\" />");
// out.println(" <resposta_acao_mediador acao=\"sim\" problema=\"PROBLEMA: " + this.getClass() + "\" mensagem=\"MENSAGEM:" + this.getClass() + "\" />");
out.println(" <execucao sucesso=\"sim\" />" );
- out.println(" <resposta_acao_mediador acao=\"nao\" />");
+ NegociacaoPedagogica negociacaoPedagogica = new NegociacaoPedagogica(pIdSessao, paciente);
+ out.println("<xml>");
+ out.println(negociacaoPedagogica.getIntervencao(Log.ETAPA_INVESTIGACAO));
+ out.println("</xml>");
out.println("</xml>");
}
return "";
}
+
+ private void registraPerguntaLog(EntityManager em, SessaoUsuario sessaoUsuario, Paciente paciente, Nodo nodo, boolean ativo, String tipoNodo, String pergunta, String nomeAmigavel, String resposta) {
+ if (!em.getTransaction().isActive())
+ em.getTransaction().begin();
+
+ LogPerguntas logPerguntas = new LogPerguntas();
+ logPerguntas.setNodo(nodo);
+ logPerguntas.setAtivo(ativo);
+ logPerguntas.setPaciente(paciente);
+ logPerguntas.setPergunta(pergunta);
+ logPerguntas.setSessaoUsuario(sessaoUsuario);
+ logPerguntas.setTipoNodo(tipoNodo);
+ logPerguntas.setNomeAmigavel(nomeAmigavel);
+ logPerguntas.setResposta(resposta);
+
+ em.persist(logPerguntas);
+ em.getTransaction().commit();
+
+ }
+
+
@Override
protected void executaServico(EntityManager em, HttpServletRequest request, HttpServletResponse response, PrintWriter out) throws Exception
{
em.getTransaction().commit();
- out.println("<xml>");
+ // out.println("<xml>");
out.println(" <caso uid=\"caso-" + caso.getId() + "\" sessao=\"" + sessaoUsuario.getId() + "\" titulo=\"" + caso.getNome() + "\" modelo=\"" + caso.getModelo() + "\" descricaoAmbiente=\"" + caso.getTextoInicial() + "\">");
Iterator<Paciente> itPac = em.createQuery("From Paciente where caso.id=:pIdCaso").setParameter("pIdCaso", caso.getId()).getResultList().iterator();
continue;
}
- out.println(" <sintoma uid=\"sintoma-np-" + nodo.getId() + ":paciente-" + paciente.getId() + "\" nomeCientifico=\"" + nodo.getNodo().getNome() + "\" nomePopular=\"" + getPerguntaNodo(nodo.getNodo().getId()) + "\" imagem=\"\" som=\"\" video=\"\" dependencia=\"" + getDependencia(nodo.getNodo().getId()) + "\" falaPaciente=\"" + getRespostaNodo(nodo.getNodo(), paciente) + "\" />");
+ {
+ String pergunta = getPerguntaNodo(nodo.getNodo().getId());
+ String resposta = getRespostaNodo(nodo.getNodo(), paciente);
+ registraPerguntaLog(em, sessaoUsuario, paciente, nodo.getNodo(), true, Nodo.SINAL_SINTOMA, pergunta, nodo.getNodo().getNomeAmigavel(), resposta);
+ out.println(" <sintoma uid=\"sintoma-np-" + nodo.getId() + ":paciente-" + paciente.getId() + "\" nomeCientifico=\"" + nodo.getNodo().getNome() + "\" nomePopular=\"" + pergunta + "\" imagem=\"\" som=\"\" video=\"\" dependencia=\"" + getDependencia(nodo.getNodo().getId()) + "\" falaPaciente=\"" + resposta + "\" />");
+ }
}
// Sinais e sintomas inativos
continue;
}
- out.println(" <sintoma uid=\"sintoma-nd-" + nodo.getId() + ":paciente-" + paciente.getId() + "\" nomeCientifico=\"" + nodo.getNome() + "\" nomePopular=\"" + getPerguntaNodo(nodo.getId()) + "\" imagem=\"\" som=\"\" video=\"\" dependencia=\"" + getDependencia(nodo.getId()) + "\" falaPaciente=\"" + getRespostaNodo(nodo, paciente) + "\" />");
+ {
+ String pergunta = getPerguntaNodo(nodo.getId());
+ String resposta = getRespostaNodo(nodo, paciente);
+ registraPerguntaLog(em, sessaoUsuario, paciente, nodo, false, Nodo.SINAL_SINTOMA, pergunta, nodo.getNomeAmigavel(), resposta);
+ out.println(" <sintoma uid=\"sintoma-nd-" + nodo.getId() + ":paciente-" + paciente.getId() + "\" nomeCientifico=\"" + nodo.getNome() + "\" nomePopular=\"" + pergunta + "\" imagem=\"\" som=\"\" video=\"\" dependencia=\"" + getDependencia(nodo.getId()) + "\" falaPaciente=\"" + resposta + "\" />");
+ }
}
out.println(" </perguntar_sintoma>");
continue;
}
- out.println(" <exame_fisico uid=\"exame-fisico-np-" + nodo.getId() + ":paciente-" + paciente.getId() + "\" dependencia=\"" + getDependencia(nodo.getNodo().getId()) + "\" descricao=\"" + nodo.getNodo().getNomeAmigavel() + "\" resultado=\"\" imagem=\"\" som=\"\" video=\"\" />");
+ {
+ registraPerguntaLog(em, sessaoUsuario, paciente, nodo.getNodo(), false, Nodo.EXAME_FISICO, null, nodo.getNodo().getNomeAmigavel(), null);
+ out.println(" <exame_fisico uid=\"exame-fisico-np-" + nodo.getId() + ":paciente-" + paciente.getId() + "\" dependencia=\"" + getDependencia(nodo.getNodo().getId()) + "\" descricao=\"" + nodo.getNodo().getNomeAmigavel() + "\" resultado=\"\" imagem=\"\" som=\"\" video=\"\" />");
+ }
}
out.println(" </realiza_exame_fisico>");
continue;
}
- out.println(" <exame_complementar uid=\"exame-complementar-np-" + nodo.getId() + ":paciente-" + paciente.getId() + "\" dependencia=\"" + getDependencia(nodo.getNodo().getId()) + "\" descricao=\"" + nodo.getNodo().getNomeAmigavel() + "\" resultado=\"\" imagem=\"\" som=\"\" video=\"\" />");
+ {
+ registraPerguntaLog(em, sessaoUsuario, paciente, nodo.getNodo(), false, Nodo.EXAME_COMPLEMENTAR, null, nodo.getNodo().getNomeAmigavel(), null);
+ out.println(" <exame_complementar uid=\"exame-complementar-np-" + nodo.getId() + ":paciente-" + paciente.getId() + "\" dependencia=\"" + getDependencia(nodo.getNodo().getId()) + "\" descricao=\"" + nodo.getNodo().getNomeAmigavel() + "\" resultado=\"\" imagem=\"\" som=\"\" video=\"\" />");
+ }
}
out.println(" </solicitar_exames_complementar>");
/*
Iterator<Nodo> itDiagnosticos = em.createQuery("From Nodo where tipo=:pTipo").setParameter("pTipo", Nodo.DIAGNOSTICO).getResultList().iterator();
while (itDiagnosticos.hasNext()) {
Nodo nodo = itDiagnosticos.next();
- out.println(" <diagnostico uid=\"diagnostico-" + nodo.getId() + ":paciente-" + paciente.getId() + "\" nome=\"" + nodo.getNomeAmigavel() + "\" falaMedico=\"" + getPerguntaNodo(nodo.getId()) + "\" />");
+ {
+ String resposta = getPerguntaNodo(nodo.getId());
+ registraPerguntaLog(em, sessaoUsuario, paciente, nodo, false, Nodo.DIAGNOSTICO, null, nodo.getNomeAmigavel(), resposta);
+ out.println(" <diagnostico uid=\"diagnostico-" + nodo.getId() + ":paciente-" + paciente.getId() + "\" nome=\"" + nodo.getNomeAmigavel() + "\" falaMedico=\"" + resposta + "\" />");
+ }
}
out.println(" </etapa>");
Iterator<Nodo> itConduta = em.createQuery("From Nodo where tipo=:pTipo").setParameter("pTipo", Nodo.CONDUTA).getResultList().iterator();
while (itConduta.hasNext()) {
Nodo nodo = itConduta.next();
- out.println(" <conduta uid=\"conduta-" + nodo.getId() + ":paciente-" + paciente.getId() + "\" nome=\"" + nodo.getNomeAmigavel() + "\" falaMedico=\"" + getPerguntaNodo(nodo.getId()) + "\" />");
+ {
+ String resposta = getPerguntaNodo(nodo.getId());
+ registraPerguntaLog(em, sessaoUsuario, paciente, nodo, false, Nodo.CONDUTA, null, nodo.getNomeAmigavel(), resposta);
+ out.println(" <conduta uid=\"conduta-" + nodo.getId() + ":paciente-" + paciente.getId() + "\" nome=\"" + nodo.getNomeAmigavel() + "\" falaMedico=\"" + resposta + "\" />");
+ }
}
out.println(" </etapa>");
out.println(" </ator>");
out.println(" </caso>");
- out.println(" <execucao sucesso=\"sim\" />" );
- out.println("</xml>");
+ // out.println(" <execucao sucesso=\"sim\" />" );
+ // out.println("</xml>");
}
}
NegociacaoPedagogica negociacaoPedagogica = new NegociacaoPedagogica(pIdSessao, paciente);
-
out.println("<xml>");
-// out.println(" <resposta_acao_mediador acao=\"sim\" problema=\"PROBLEMA: " + this.getClass() + "\" mensagem=\"MENSAGEM:" + this.getClass() + "\" />");
- out.println(" <resposta_acao_mediador acao=\"nao\" />");
-
- out.println(" <execucao sucesso=\"sim\" />" );
+ out.println(negociacaoPedagogica.getIntervencao(etapa));
out.println("</xml>");
}
@JoinColumn(name="sessao_id", nullable=false)
private SessaoUsuario sessaoUsuario;
- @Column(length=30, nullable=false)
+ @Column(length=100, nullable=false)
private String estrategia;
- @Column(length=30, nullable=false)
+ @Column(length=100, nullable=false)
private String resultado;
@ManyToOne
--- /dev/null
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.ufcspa.simdecs.entities;
+
+import java.io.Serializable;
+import javax.persistence.*;
+
+/**
+ *
+ * @author maroni
+ */
+@Entity
+@Table(name="LOG_PERGUNTAS")
+public class LogPerguntas implements Serializable {
+ private static final long serialVersionUID = 1L;
+ @Id
+ @SequenceGenerator(name="SeqLogPerguntas", sequenceName="SQ_LOG_PERGUNTAS")
+ @GeneratedValue(strategy = GenerationType.AUTO, generator="SeqLogPerguntas")
+ private Long id;
+
+ @Column(nullable=false)
+ private boolean ativo;
+
+ @ManyToOne
+ @JoinColumn(name="sessao_id", nullable=false)
+ private SessaoUsuario sessaoUsuario;
+
+ @ManyToOne
+ @JoinColumn(name="paciente_id", nullable=false)
+ private Paciente paciente;
+
+ @ManyToOne
+ @JoinColumn(name="nodo_id", nullable=false)
+ private Nodo nodo;
+
+
+ @Column(name="tipo_nodo", length=100, nullable=false)
+ private String tipoNodo;
+
+ @Column(name="pergunta", length=2000, nullable=true)
+ private String pergunta;
+
+ @Column(name="resposta", length=2000, nullable=true)
+ private String resposta;
+
+ @Column(name="nome_amigavel", length=100, nullable=false)
+ private String nomeAmigavel;
+
+ public Nodo getNodo() {
+ return nodo;
+ }
+
+ public void setNodo(Nodo nodo) {
+ this.nodo = nodo;
+ }
+
+ public Paciente getPaciente() {
+ return paciente;
+ }
+
+ public void setPaciente(Paciente paciente) {
+ this.paciente = paciente;
+ }
+
+ public String getPergunta() {
+ return pergunta;
+ }
+
+ public void setPergunta(String pergunta) {
+ this.pergunta = pergunta;
+ }
+
+ public SessaoUsuario getSessaoUsuario() {
+ return sessaoUsuario;
+ }
+
+ public void setSessaoUsuario(SessaoUsuario sessaoUsuario) {
+ this.sessaoUsuario = sessaoUsuario;
+ }
+
+ public String getResposta() {
+ return resposta;
+ }
+
+ public void setResposta(String resposta) {
+ this.resposta = resposta;
+ }
+
+ public String getTipoNodo() {
+ return tipoNodo;
+ }
+
+ public void setTipoNodo(String tipoNodo) {
+ this.tipoNodo = tipoNodo;
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getNomeAmigavel() {
+ return nomeAmigavel;
+ }
+
+ public void setNomeAmigavel(String nomeAmigavel) {
+ this.nomeAmigavel = nomeAmigavel;
+ }
+
+ public boolean isAtivo() {
+ return ativo;
+ }
+
+ public void setAtivo(boolean ativo) {
+ this.ativo = ativo;
+ }
+
+
+ @Override
+ public int hashCode() {
+ int hash = 0;
+ hash += (id != null ? id.hashCode() : 0);
+ return hash;
+ }
+
+ @Override
+ public boolean equals(Object object) {
+ // TODO: Warning - this method won't work in the case the id fields are not set
+ if (!(object instanceof LogPerguntas)) {
+ return false;
+ }
+ LogPerguntas other = (LogPerguntas) object;
+ if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ return "org.ufcspa.simdecs.entities.LogPerguntas[ id=" + id + " ]";
+ }
+
+}
this.id = id;
}
- @Column(length=30, nullable=false)
+ @Column(length=100, nullable=false)
private String resultado;
- @Column(length=30, nullable=false)
+ @Column(length=100, nullable=false)
private String estrategia;
@Column(length=200, nullable=false)
import java.util.List;
import java.util.Map;
import javax.persistence.EntityManager;
-import org.ufcspa.simdecs.entities.Log;
-import org.ufcspa.simdecs.entities.Nodo;
-import org.ufcspa.simdecs.entities.TipoEventoLog;
+import org.ufcspa.simdecs.entities.*;
import org.ufcspa.simdecs.util.DbUtil;
+import org.ufcspa.simdecs.util.UnBBayesUtil;
+import unbbayes.prs.bn.ProbabilisticNode;
/**
*
private Map<Long, Nodo> condutas;
private List<Nodo> nodosInvestigacao;
+ private Nodo primeiroDiagnosticoCaso;
+ private Nodo segundoDiagnosticoCaso;
+ private List<Nodo> condutasIdeaisDiagnostico;
+
private EntityManager em;
- public final void refresh(long idSessao, long idCaso, long idRede) {
+ public final void refresh(SessaoUsuario sessaoUsuario, Paciente paciente) throws Exception {
// Inicializa Valores
perguntasRealizadas = perguntasDisponiveis = perguntasProfessor = perguntasBogusRealizadas =
em = DbUtil.getInstance().getEntityManager();
Iterator<Log> itLog = em.createQuery("From Log where sessaoUsuario.id=:pIDSessao order by data")
- .setParameter("pIDSessao", idSessao)
+ .setParameter("pIDSessao", sessaoUsuario.getId())
.getResultList()
.iterator();
}
- Iterator<Nodo> itNodoProf = em.createQuery("Select np.nodo From NodoPaciente as np where np.paciente.id in (select p.id from Paciente as p where p.caso.id=:pIDCaso)")
- .setParameter("pIDCaso", idCaso)
+ Iterator<Nodo> itNodoProf = em.createQuery("Select np.nodo From NodoPaciente as np where np.paciente.id=:pIDPaciente")
+ .setParameter("pIDPaciente", paciente.getId())
.getResultList()
.iterator();
while(itNodoProf.hasNext()) {
}
Iterator<Nodo> itNodoDisp = em.createQuery("From Nodo where rede.id=:pIDRede")
- .setParameter("pIDRede", idRede)
+ .setParameter("pIDRede", paciente.getRede().getId())
.getResultList()
.iterator();
while(itNodoDisp.hasNext()) {
examesFisicosTempoTotal+=nodo.getTempo();
}
}
+
+
+ if (isConcluiuDiagnostico()) {
+ UnBBayesUtil redePaciente = UnBBayesUtil.getRedePaciente(em, paciente);
+ primeiroDiagnosticoCaso=redePaciente.getPrimeiroDiagnostico(em);
+ segundoDiagnosticoCaso=redePaciente.getSegundoDiagnostico(em);
+
+ if (isConcluiuConduta()) {
+ redePaciente.setNodeState((ProbabilisticNode)redePaciente.getNodeByName(diagnostico.getNome()), "Yes", 1, "Not", 0);
+ condutasIdeaisDiagnostico = redePaciente.getCondutas(em);
+ }
+ }
}
- public LogExecucao(long idSessao, long idCaso, long idRede) {
- refresh(idSessao, idCaso, idRede);
+ public LogExecucao(SessaoUsuario sessaoUsuario, Paciente paciente) throws Exception {
+ refresh(sessaoUsuario, paciente);
}
public boolean isAbriuFichaPaciente() {
return perguntasRealizadas;
}
+ public List<Nodo> getCondutasIdeaisDiagnostico() {
+ return condutasIdeaisDiagnostico;
+ }
+
+ public void setCondutasIdeaisDiagnostico(List<Nodo> condutasIdeaisDiagnostico) {
+ this.condutasIdeaisDiagnostico = condutasIdeaisDiagnostico;
+ }
+
+ public Nodo getPrimeiroDiagnosticoCaso() {
+ return primeiroDiagnosticoCaso;
+ }
+
+ public void setPrimeiroDiagnosticoCaso(Nodo primeiroDiagnosticoCaso) {
+ this.primeiroDiagnosticoCaso = primeiroDiagnosticoCaso;
+ }
+
+ public Nodo getSegundoDiagnosticoCaso() {
+ return segundoDiagnosticoCaso;
+ }
+
+ public void setSegundoDiagnosticoCaso(Nodo segundoDiagnosticoCaso) {
+ this.segundoDiagnosticoCaso = segundoDiagnosticoCaso;
+ }
+
@Override
import java.util.*;
import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
import org.ufcspa.simdecs.entities.*;
import org.ufcspa.simdecs.util.DbUtil;
import org.ufcspa.simdecs.util.NodoBean;
private boolean exameComplementarExcessivo = false;
private boolean perguntouBogus = false;
+ private Paciente paciente;
+ private SessaoUsuario sessaoUsuario;
+
private void populaEstrategia() throws Exception {
// Carrega o endereço do diagrama de influencia do banco e abre a rede no disco
exameComplementarExcessivo = false;
perguntouBogus = false;
-
- // Define a probabilidade do nodo Anamnese
- {
- if (logExecucao.getPerguntasDisponiveis() > 0) {
- ProbabilisticNode nodoAnamnese = (ProbabilisticNode) diagramaInfluencia.getNodeByName("Anamnese");
- float pcPerguntasAnamnese = logExecucao.getPerguntasRealizadas() / logExecucao.getPerguntasDisponiveis() * 100;
-System.out.println("PERCENTUAL ANAMNESE: " + pcPerguntasAnamnese);
- if (pcPerguntasAnamnese <= 20) {
- diagramaInfluencia.setNodeState(nodoAnamnese, "Insuficiente", 1, "Suficiente", 0, "Excessiva", 0);
- anamneseInsuficiente = true;
- }
- else if (pcPerguntasAnamnese > 20 && pcPerguntasAnamnese <= 80)
- diagramaInfluencia.setNodeState(nodoAnamnese, "Insuficiente", 0, "Suficiente", 1, "Excessiva", 0);
- else {
- diagramaInfluencia.setNodeState(nodoAnamnese, "Insuficiente", 0, "Suficiente", 0, "Excessiva", 1);
- anamneseExcessiva = true;
+ if (logExecucao.isConcluiuInvestigacao()) {
+ // Define a probabilidade do nodo Anamnese
+ {
+ if (logExecucao.getPerguntasDisponiveis() > 0) {
+ ProbabilisticNode nodoAnamnese = (ProbabilisticNode) diagramaInfluencia.getNodeByName("Anamnese");
+ float pcPerguntasAnamnese = logExecucao.getPerguntasRealizadas() / logExecucao.getPerguntasDisponiveis() * 100;
+ //System.out.println("PERCENTUAL ANAMNESE: " + pcPerguntasAnamnese);
+ if (pcPerguntasAnamnese <= 25) {
+ diagramaInfluencia.setNodeState(nodoAnamnese, "Insuficiente", 1, "Suficiente", 0, "Excessiva", 0);
+ anamneseInsuficiente = true;
+ }
+ else if (pcPerguntasAnamnese > 25 && pcPerguntasAnamnese <= 75)
+ diagramaInfluencia.setNodeState(nodoAnamnese, "Insuficiente", 0, "Suficiente", 1, "Excessiva", 0);
+ else {
+ diagramaInfluencia.setNodeState(nodoAnamnese, "Insuficiente", 0, "Suficiente", 0, "Excessiva", 1);
+ anamneseExcessiva = true;
+ }
}
}
- }
-
- // Define a probabilidade do nodo Exame Fisico
- {
- if (logExecucao.getExamesFisicosDisponiveis() > 0) {
- ProbabilisticNode nodoExameFisico = (ProbabilisticNode) diagramaInfluencia.getNodeByName("ExameFisico");
- float pcExameFisico = logExecucao.getExamesFisicosRealizados() / logExecucao.getExamesFisicosDisponiveis() * 100;
-System.out.println("PERCENTUAL EXAME FISICO: " + pcExameFisico);
-
- if (pcExameFisico <= 20) {
- diagramaInfluencia.setNodeState(nodoExameFisico, "Insuficiente", 1, "Suficiente", 0, "Excessiva", 0);
- exameFisicoInsuficiente = true;
- }
- else if (pcExameFisico > 20 && pcExameFisico <= 80)
- diagramaInfluencia.setNodeState(nodoExameFisico, "Insuficiente", 0, "Suficiente", 1, "Excessiva", 0);
- else {
- diagramaInfluencia.setNodeState(nodoExameFisico, "Insuficiente", 0, "Suficiente", 0, "Excessiva", 1);
- exameFisicoExcessivo = true;
+
+ // Define a probabilidade do nodo Exame Fisico
+ {
+ if (logExecucao.getExamesFisicosDisponiveis() > 0) {
+ ProbabilisticNode nodoExameFisico = (ProbabilisticNode) diagramaInfluencia.getNodeByName("ExameFisico");
+ float pcExameFisico = logExecucao.getExamesFisicosRealizados() / logExecucao.getExamesFisicosDisponiveis() * 100;
+ //System.out.println("PERCENTUAL EXAME FISICO: " + pcExameFisico);
+
+ if (pcExameFisico <= 25) {
+ diagramaInfluencia.setNodeState(nodoExameFisico, "Insuficiente", 1, "Suficiente", 0, "Excessiva", 0);
+ exameFisicoInsuficiente = true;
+ }
+ else if (pcExameFisico > 25 && pcExameFisico <= 75)
+ diagramaInfluencia.setNodeState(nodoExameFisico, "Insuficiente", 0, "Suficiente", 1, "Excessiva", 0);
+ else {
+ diagramaInfluencia.setNodeState(nodoExameFisico, "Insuficiente", 0, "Suficiente", 0, "Excessiva", 1);
+ exameFisicoExcessivo = true;
+ }
}
}
- }
-
- // Define a probabilidade do nodo Exame Complementar
- {
- if (logExecucao.getExamesComplementaresProfessor() > 0) {
- ProbabilisticNode nodoExameComplementar = (ProbabilisticNode) diagramaInfluencia.getNodeByName("ExameComplementar");
- float pcExameComplementar = logExecucao.getExamesComplementaresRealizados() / logExecucao.getExamesComplementaresProfessor() * 100;
-System.out.println("PERCENTUAL EXAME COMPLEMENTAR: " + pcExameComplementar);
-
- if (pcExameComplementar <= 20) {
- diagramaInfluencia.setNodeState(nodoExameComplementar, "Insuficiente", 1, "Suficiente", 0, "Excessiva", 0);
- exameComplementarInsuficiente = true;
- }
- else if (pcExameComplementar > 20 && pcExameComplementar <= 80)
- diagramaInfluencia.setNodeState(nodoExameComplementar, "Insuficiente", 0, "Suficiente", 1, "Excessiva", 0);
- else {
- diagramaInfluencia.setNodeState(nodoExameComplementar, "Insuficiente", 0, "Suficiente", 0, "Excessiva", 1);
- exameFisicoExcessivo = true;
+
+ // Define a probabilidade do nodo Exame Complementar
+ {
+ if (logExecucao.getExamesComplementaresProfessor() > 0) {
+ ProbabilisticNode nodoExameComplementar = (ProbabilisticNode) diagramaInfluencia.getNodeByName("ExameComplementar");
+ float pcExameComplementar = logExecucao.getExamesComplementaresRealizados() / logExecucao.getExamesComplementaresProfessor() * 100;
+ // System.out.println("PERCENTUAL EXAME COMPLEMENTAR: " + pcExameComplementar);
+
+ if (pcExameComplementar <= 25) {
+ diagramaInfluencia.setNodeState(nodoExameComplementar, "Insuficiente", 1, "Suficiente", 0, "Excessiva", 0);
+ exameComplementarInsuficiente = true;
+ }
+ else if (pcExameComplementar > 25 && pcExameComplementar <= 7)
+ diagramaInfluencia.setNodeState(nodoExameComplementar, "Insuficiente", 0, "Suficiente", 1, "Excessiva", 0);
+ else {
+ diagramaInfluencia.setNodeState(nodoExameComplementar, "Insuficiente", 0, "Suficiente", 0, "Excessiva", 1);
+ exameFisicoExcessivo = true;
+ }
}
}
- }
-
- // Define a probabilidade do nodo abriu ficha do paciente
- {
- ProbabilisticNode nodoAbriuFichaPaciente = (ProbabilisticNode) diagramaInfluencia.getNodeByName("AbriuFichaPaciente");
- if (logExecucao.isAbriuFichaPaciente())
- diagramaInfluencia.setNodeState(nodoAbriuFichaPaciente, "Sim", 1, "Nao", 0);
- else
- diagramaInfluencia.setNodeState(nodoAbriuFichaPaciente, "Sim", 0, "Nao", 1);
- }
-
- // Define a probabilidade do nodo Bogus
- {
- if (logExecucao.getPerguntasDisponiveis() > 0) {
- ProbabilisticNode nodoBogus = (ProbabilisticNode) diagramaInfluencia.getNodeByName("Bogus");
- float pcNodoBogus = logExecucao.getPerguntasBogusRealizadas() / logExecucao.getPerguntasDisponiveis() * 100;
-System.out.println("PERCENTUAL BOGUS: " + pcNodoBogus);
-
- if (pcNodoBogus <= 10)
- diagramaInfluencia.setNodeState(nodoBogus, "Presente", 0, "Ausente", 1);
- else if (pcNodoBogus > 10 && pcNodoBogus <= 30) {
- diagramaInfluencia.setNodeState(nodoBogus, "Presente", 0.4f, "Ausente", 0.6f);
- perguntouBogus = true;
- }
- else {
- diagramaInfluencia.setNodeState(nodoBogus, "Presente", 1, "Ausente", 0);
- perguntouBogus = true;
+ // Define a probabilidade do nodo abriu ficha do paciente
+ {
+ ProbabilisticNode nodoAbriuFichaPaciente = (ProbabilisticNode) diagramaInfluencia.getNodeByName("AbriuFichaPaciente");
+
+ if (logExecucao.isAbriuFichaPaciente())
+ diagramaInfluencia.setNodeState(nodoAbriuFichaPaciente, "Sim", 1, "Nao", 0);
+ else
+ diagramaInfluencia.setNodeState(nodoAbriuFichaPaciente, "Sim", 0, "Nao", 1);
+ }
+
+ // Define a probabilidade do nodo Bogus
+ {
+ if (logExecucao.getPerguntasDisponiveis() > 0) {
+ ProbabilisticNode nodoBogus = (ProbabilisticNode) diagramaInfluencia.getNodeByName("Bogus");
+ float pcNodoBogus = logExecucao.getPerguntasBogusRealizadas() / logExecucao.getPerguntasDisponiveis() * 100;
+// System.out.println("PERCENTUAL BOGUS: " + pcNodoBogus);
+
+ if (pcNodoBogus <= 10)
+ diagramaInfluencia.setNodeState(nodoBogus, "Presente", 0, "Ausente", 1);
+ else if (pcNodoBogus > 10 && pcNodoBogus <= 30) {
+ diagramaInfluencia.setNodeState(nodoBogus, "Presente", 0.4f, "Ausente", 0.6f);
+ perguntouBogus = true;
+ }
+ else {
+ diagramaInfluencia.setNodeState(nodoBogus, "Presente", 1, "Ausente", 0);
+ perguntouBogus = true;
+ }
}
}
}
- // Define a probabilidade de hesitação diagnostica
- {
- ProbabilisticNode nodoHestiacaoDiagnostico = (ProbabilisticNode) diagramaInfluencia.getNodeByName("HesitacaoDiagnostico");
-
- if (logExecucao.getDesmarcacoesDiagnostico() == 0)
- diagramaInfluencia.setNodeState(nodoHestiacaoDiagnostico, "Presente", 0, "Ausente", 1);
- else if (logExecucao.getDesmarcacoesDiagnostico() == 1)
- diagramaInfluencia.setNodeState(nodoHestiacaoDiagnostico, "Presente", 0.6f, "Ausente", 0.4f);
- else
- diagramaInfluencia.setNodeState(nodoHestiacaoDiagnostico, "Presente", 1, "Ausente", 0);
+
+ if (logExecucao.isConcluiuDiagnostico()) {
+ // Define a probabilidade de hesitação diagnostica
+ {
+ ProbabilisticNode nodoHestiacaoDiagnostico = (ProbabilisticNode) diagramaInfluencia.getNodeByName("HesitacaoDiagnostico");
+
+ if (logExecucao.getDesmarcacoesDiagnostico() == 0)
+ diagramaInfluencia.setNodeState(nodoHestiacaoDiagnostico, "Presente", 0, "Ausente", 1);
+ else if (logExecucao.getDesmarcacoesDiagnostico() == 1)
+ diagramaInfluencia.setNodeState(nodoHestiacaoDiagnostico, "Presente", 0.6f, "Ausente", 0.4f);
+ else
+ diagramaInfluencia.setNodeState(nodoHestiacaoDiagnostico, "Presente", 1, "Ausente", 0);
+ }
}
- // Define a probabilidade de hesitação na conduta
- {
- ProbabilisticNode nodoHestiacaoConduta = (ProbabilisticNode) diagramaInfluencia.getNodeByName("HesitacaoConduta");
-
- if (logExecucao.getDesmarcacoesConduta() == 0)
- diagramaInfluencia.setNodeState(nodoHestiacaoConduta, "Presente", 0, "Ausente", 1);
- else if (logExecucao.getDesmarcacoesConduta() == 1)
- diagramaInfluencia.setNodeState(nodoHestiacaoConduta, "Presente", 0.6f, "Ausente", 0.4f);
- else
- diagramaInfluencia.setNodeState(nodoHestiacaoConduta, "Presente", 1, "Ausente", 0);
+ if (logExecucao.isConcluiuConduta()) {
+ // Define a probabilidade de hesitação na conduta
+ {
+ ProbabilisticNode nodoHestiacaoConduta = (ProbabilisticNode) diagramaInfluencia.getNodeByName("HesitacaoConduta");
+
+ if (logExecucao.getDesmarcacoesConduta() == 0)
+ diagramaInfluencia.setNodeState(nodoHestiacaoConduta, "Presente", 0, "Ausente", 1);
+ else if (logExecucao.getDesmarcacoesConduta() == 1)
+ diagramaInfluencia.setNodeState(nodoHestiacaoConduta, "Presente", 0.6f, "Ausente", 0.4f);
+ else
+ diagramaInfluencia.setNodeState(nodoHestiacaoConduta, "Presente", 1, "Ausente", 0);
+ }
}
- // Define a probabilidade de hesitação na conduta
+ // Define o nodo confianca
{
ProbabilisticNode nodoConfianca = (ProbabilisticNode) diagramaInfluencia.getNodeByName("Confianca");
else if (logExecucao.getConfiancaAtual().equals(Log.CONFIANCA_ALTA))
diagramaInfluencia.setNodeState(nodoConfianca, "Baixa", 0, "Media", 0, "Alta", 1);
}
-
+/*
+// Debug das probabilidades do DI:
+{
+ List<ProbabilisticBean> pd = diagramaInfluencia.getProbabilidadesDescOrder((TreeVariable) diagramaInfluencia.getNodeByName("ExameComplementar"));
+ System.out.println("NODO: EXAME COMPLEMENTAR");
+ for (ProbabilisticBean p : pd) {
+ System.out.println(p.getState() + ": " + p.getProbability());
+ }
+}
+
+// Debug das probabilidades do DI:
+{
+ List<ProbabilisticBean> pd = diagramaInfluencia.getProbabilidadesDescOrder((TreeVariable) diagramaInfluencia.getNodeByName("ExameFisico"));
+ System.out.println("NODO: EXAME FISICO");
+ for (ProbabilisticBean p : pd) {
+ System.out.println(p.getState() + ": " + p.getProbability());
+ }
+}
+
+// Debug das probabilidades do DI:
+{
+ List<ProbabilisticBean> pd = diagramaInfluencia.getProbabilidadesDescOrder((TreeVariable) diagramaInfluencia.getNodeByName("Anamnese"));
+ System.out.println("NODO: ANAMNESE");
+ for (ProbabilisticBean p : pd) {
+ System.out.println(p.getState() + ": " + p.getProbability());
+ }
+}
+
+// Debug das probabilidades do DI:
+{
+ List<ProbabilisticBean> pd = diagramaInfluencia.getProbabilidadesDescOrder((TreeVariable) diagramaInfluencia.getNodeByName("Investigacao"));
+ System.out.println("NODO: INVESTIGACAO");
+ for (ProbabilisticBean p : pd) {
+ System.out.println(p.getState() + ": " + p.getProbability());
+ }
+}
+
+// Debug das probabilidades do DI:
+{
+ List<ProbabilisticBean> pd = diagramaInfluencia.getProbabilidadesDescOrder((TreeVariable) diagramaInfluencia.getNodeByName("AbriuFichaPaciente"));
+ System.out.println("NODO: ABRIU FICHA PACIENTE");
+ for (ProbabilisticBean p : pd) {
+ System.out.println(p.getState() + ": " + p.getProbability());
+ }
+}
+
+// Debug das probabilidades do DI:
+{
+ List<ProbabilisticBean> pd = diagramaInfluencia.getProbabilidadesDescOrder((TreeVariable) diagramaInfluencia.getNodeByName("Bogus"));
+ System.out.println("NODO: Bogus");
+ for (ProbabilisticBean p : pd) {
+ System.out.println(p.getState() + ": " + p.getProbability());
+ }
+}
+
+// Debug das probabilidades do DI:
+{
+ List<ProbabilisticBean> pd = diagramaInfluencia.getProbabilidadesDescOrder((TreeVariable) diagramaInfluencia.getNodeByName("ResultadoInvestigacao"));
+ System.out.println("NODO: RESULTADO INVESTIGACAO");
+ for (ProbabilisticBean p : pd) {
+ System.out.println(p.getState() + ": " + p.getProbability());
+ }
+}
+
+// Debug das probabilidades do DI:
+{
+ List<ProbabilisticBean> pd = diagramaInfluencia.getProbabilidadesDescOrder((TreeVariable) diagramaInfluencia.getNodeByName("Credibilidade"));
+ System.out.println("NODO: CREDIBILIDADE");
+ for (ProbabilisticBean p : pd) {
+ System.out.println(p.getState() + ": " + p.getProbability());
+ }
+}
+
+// Debug das probabilidades do DI:
+{
+ List<ProbabilisticBean> pd = diagramaInfluencia.getProbabilidadesDescOrder((TreeVariable) diagramaInfluencia.getNodeByName("HesitacaoDiagnostico"));
+ System.out.println("NODO: HESITACAO DIAGNOSTICO");
+ for (ProbabilisticBean p : pd) {
+ System.out.println(p.getState() + ": " + p.getProbability());
+ }
+}
+
+// Debug das probabilidades do DI:
+{
+ List<ProbabilisticBean> pd = diagramaInfluencia.getProbabilidadesDescOrder((TreeVariable) diagramaInfluencia.getNodeByName("HesitacaoConduta"));
+ System.out.println("NODO: HESITACAO CONDUTA");
+ for (ProbabilisticBean p : pd) {
+ System.out.println(p.getState() + ": " + p.getProbability());
+ }
+}
+
+// Debug das probabilidades do DI:
+{
+ List<ProbabilisticBean> pd = diagramaInfluencia.getProbabilidadesDescOrder((TreeVariable) diagramaInfluencia.getNodeByName("Confianca"));
+ System.out.println("NODO: CONFIANCA");
+ for (ProbabilisticBean p : pd) {
+ System.out.println(p.getState() + ": " + p.getProbability());
+ }
+}
+
+// Debug das probabilidades do DI:
+{
+ List<ProbabilisticBean> pd = diagramaInfluencia.getProbabilidadesDescOrder((TreeVariable) diagramaInfluencia.getNodeByName("Estrategia"));
+ System.out.println("NODO: ESTRATEGIA");
+ for (ProbabilisticBean p : pd) {
+ System.out.println(p.getState() + ": " + p.getProbability());
+ }
+}
+*/
// Mostra o resultado do diagrama de influencia
- DecisionNode nodoTatica = (DecisionNode) diagramaInfluencia.getNodeByName("Tatica");
+ DecisionNode nodoTatica = (DecisionNode) diagramaInfluencia.getNodeByName("Estrategia");
List<ProbabilisticBean> probs = diagramaInfluencia.getProbabilidadesDescOrder(nodoTatica);
for (ProbabilisticBean prob : probs) {
}
}
- public UnBBayesUtil processaRedeAluno(Paciente paciente) throws Exception {
+ private String getResultadoDiagnostico() throws Exception {
+ // Nao selecionou o primeiro diagnostico
+ if (logExecucao.getPrimeiroDiagnosticoCaso() != null && !logExecucao.getDiagnostico().equals(logExecucao.getPrimeiroDiagnosticoCaso()))
+ if (logExecucao.getSegundoDiagnosticoCaso() != null && logExecucao.getDiagnostico().equals(logExecucao.getSegundoDiagnosticoCaso()))
+ return DIAGNOSTICO_INCORRETO_PLAUSIVEL;
+ else
+ return DIAGNOSTICO_INCORRETO_IMPLAUSIVEL;
- UnBBayesUtil unBUtil = new UnBBayesUtil(paciente.getRede());
+ return DIAGNOSTICO_ADEQUADO;
+ }
- List<NodoPaciente> nodosPaciente = em.createQuery("From NodoPaciente np Where np.paciente.id=:pPaciente")
- .setParameter("pPaciente", paciente.getId())
- .getResultList();
-
- for(NodoPaciente nodo : nodosPaciente) {
- ProbabilisticNode pn = (ProbabilisticNode) unBUtil.getNodeByName(nodo.getNodo().getNome());
- if (pn != null)
- unBUtil.setNodeState(pn, "Yes", 1, "Not", 0);
+ private String getResultadoConduta() throws Exception {
+
+ // Caso o diagnóstico esteja adequado verifica se a conduta foi excessiva, insuficiente ou adequada!
+ if (getResultadoDiagnostico().equals(DIAGNOSTICO_ADEQUADO)) {
+
+ // Verifica se a conduta está certa ou errada!
+ boolean diferente=false;
+ for(Nodo conduta : logExecucao.getCondutas().values()) {
+ if (!logExecucao.getCondutasIdeaisDiagnostico().contains(conduta)) {
+ diferente=true;
+ break;
+ }
+ }
+
+ // Esta errada
+ if (diferente)
+ return CONDUTA_INCORRETA_INCOERENTE;
+
+ // Esta certa, agora verifica se é excessiva ou adequada!
+ if (logExecucao.getCondutas().size() > logExecucao.getCondutasIdeaisDiagnostico().size())
+ return CONDUTA_EXCESSIVA;
+ else if (logExecucao.getCondutas().size() < logExecucao.getCondutasIdeaisDiagnostico().size())
+ return CONDUTA_INSUFICIENTE;
+ else
+ return CONDUTA_ADEQUADA;
+ }
+ // Caso o diagnóstico esteja errado
+ else {
+ // Verifica se a conduta está certa ou errada (avalia somente a primeira)
+ for(Nodo conduta : logExecucao.getCondutas().values()) {
+ if (logExecucao.getCondutasIdeaisDiagnostico().contains(conduta))
+ return CONDUTA_INCORRETA_COERENTE;
+ else
+ return CONDUTA_INCORRETA_INCOERENTE;
+ }
}
- return unBUtil;
+ return null;
+ }
+
+ private String getResultadoCustoConduta() {
+ float custoRealizado=0;
+ float custoPrevisto=0;
+
+ for(Nodo conduta : logExecucao.getCondutas().values())
+ custoRealizado+=conduta.getCusto();
+
+ for(Nodo conduta : logExecucao.getCondutasIdeaisDiagnostico())
+ custoPrevisto+=conduta.getCusto();
+ if (custoPrevisto > 0) {
+ float pcCusto = custoRealizado / custoPrevisto * 100;
+
+ if (pcCusto >= 150)
+ return CONDUTA_DISPENDIOSA;
+ }
+
+ return null;
}
- private List<NodoBean> getProbabilidades(UnBBayesUtil unBUtil, String tipoNodo) {
- Iterator<Nodo> itNodos = em.createNamedQuery("Nodo.getByTipo")
- .setParameter("pTipo", tipoNodo)
- .getResultList().iterator();
+ private String getResultadoTempoConduta() {
+ float tempoRealizado=0;
+ float tempoPrevisto=0;
- ArrayList nodos = new ArrayList<NodoBean>();
+ for(Nodo conduta : logExecucao.getCondutas().values())
+ tempoRealizado+=conduta.getTempo();
- while(itNodos.hasNext()) {
- Nodo nodo = itNodos.next();
- NodoBean nodoBean = new NodoBean(nodo, (Float) unBUtil.getProbabilidadeByState((TreeVariable) unBUtil.getNodeByName(nodo.getNome()), "Yes"));
- nodos.add(nodoBean);
- }
+ for(Nodo conduta : logExecucao.getCondutasIdeaisDiagnostico())
+ tempoPrevisto+=conduta.getTempo();
- Collections.sort(nodos, 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;
- }
- });
+ if (tempoPrevisto > 0) {
+ float pcTempo = tempoRealizado / tempoPrevisto * 100;
+
+ if (pcTempo >= 150)
+ return CONDUTA_DEMORADA;
+ }
+
+ return null;
+ }
+
+ private String getResultadoCustoInvestigacao() {
+ // Verifica se a anamnese teve alto custo!
+ if (logExecucao.getExamesComplementaresCustoProfessor() > 0) {
+ float pcCusto = logExecucao.getExamesComplementaresCustoRealizado() / logExecucao.getExamesComplementaresCustoProfessor() * 100;
+ if (pcCusto > 150)
+ return INVESTIGACAO_DISPENDIOSA;
+ }
- return nodos;
+ return null;
}
+ private String getResultadoTempoInvestigacao() {
+ if (logExecucao.getExamesComplementaresTempoProfessor() > 0 || logExecucao.getExamesFisicosTempoProfessor() > 0) {
+ float pcTempo = (logExecucao.getExamesComplementaresTempoRealizado() + logExecucao.getExamesFisicosTempoRealizado()) /
+ (logExecucao.getExamesComplementaresTempoProfessor() + logExecucao.getExamesFisicosTempoProfessor()) * 100;
+
+ if (pcTempo > 150)
+ return INVESTIGACAO_DEMORADA;
+ }
+
+ return null;
+ }
- private void populaResultadoSimulacao(Paciente paciente) throws Exception {
+ private void populaResultadoSimulacao() throws Exception {
+
+ populaEstrategia();
+
resultadosSimulacao = new ArrayList<String>();
if (logExecucao.isConcluiuInvestigacao()) {
resultadosSimulacao.add(INVESTIGACAO_BOGUS);
// Verifica se a anamnese teve alto custo!
- if (logExecucao.getExamesComplementaresCustoProfessor() > 0) {
- float pcCusto = logExecucao.getExamesComplementaresCustoRealizado() / logExecucao.getExamesComplementaresCustoProfessor() * 100;
- if (pcCusto > 150)
- resultadosSimulacao.add(INVESTIGACAO_DISPENDIOSA);
- }
-
- // Verifica se a anamnese foi demorada!
- if (logExecucao.getExamesComplementaresTempoProfessor() > 0 || logExecucao.getExamesFisicosTempoProfessor() > 0) {
- float pcTempo = (logExecucao.getExamesComplementaresTempoRealizado() + logExecucao.getExamesFisicosTempoRealizado()) /
- (logExecucao.getExamesComplementaresTempoProfessor() + logExecucao.getExamesFisicosTempoProfessor()) * 100;
+ String resultadoCustoInvestigacao = getResultadoCustoInvestigacao();
+ if (resultadoCustoInvestigacao != null)
+ resultadosSimulacao.add(resultadoCustoInvestigacao);
- if (pcTempo > 150)
- resultadosSimulacao.add(INVESTIGACAO_DEMORADA);
- }
+ String resultadoTempoInvestigacao = getResultadoTempoInvestigacao();
+ if (resultadoTempoInvestigacao != null)
+ resultadosSimulacao.add(resultadoTempoInvestigacao);
}
- boolean diagnosticoCorreto = false;
-
-
// Verifica se o diagnóstico foi adequado
if (logExecucao.isConcluiuDiagnostico()) {
- UnBBayesUtil redeAluno = processaRedeAluno(paciente);
- List<NodoBean> diagnosticos = getProbabilidades(redeAluno, Nodo.DIAGNOSTICO);
- Nodo primeiroDiagnostico=null;
- Nodo segundoDiagnostico=null;
- int i=0;
- for(NodoBean nodo : diagnosticos) {
- if (i == 0)
- primeiroDiagnostico = nodo.getNodo();
- else if (i == 1)
- segundoDiagnostico = nodo.getNodo();
-
- if (++i == 2)
- break;
- }
-
-System.out.println("PRIMEIRO: " + primeiroDiagnostico);
-System.out.println("LOG: " + logExecucao.getDiagnostico());
- // Nao selecionou o primeiro diagnostico
- if (primeiroDiagnostico != null && !logExecucao.getDiagnostico().equals(primeiroDiagnostico))
- if (segundoDiagnostico != null && logExecucao.getDiagnostico().equals(segundoDiagnostico))
- resultadosSimulacao.add(DIAGNOSTICO_INCORRETO_PLAUSIVEL);
- else
- resultadosSimulacao.add(DIAGNOSTICO_INCORRETO_IMPLAUSIVEL);
-
- // Registra se o diagnóstico está correto
- if (primeiroDiagnostico.equals(logExecucao.getDiagnostico()))
- diagnosticoCorreto = true;
+ String resultadoDiagnostico = getResultadoDiagnostico();
+ resultadosSimulacao.add(resultadoDiagnostico);
}
- // Ativa condutas do diagnostico proposto
+ // Verifica as condutas
if (logExecucao.isConcluiuConduta()) {
- UnBBayesUtil unBUtil = new UnBBayesUtil(paciente.getRede());
- unBUtil.setNodeState((ProbabilisticNode)unBUtil.getNodeByName(logExecucao.getDiagnostico().getNome()), "Yes", 1, "Not", 0);
- List<NodoBean> condutas = getProbabilidades(unBUtil, Nodo.CONDUTA);
-
-
- // Se o diagnóstico for incorreto verifica o tipo da conduta
- if (!diagnosticoCorreto) {
-
- // Neste caso (diagnóstico incorreto) avalia somente a primeira conduta.
- for(NodoBean nodo : condutas) {
- if (logExecucao.getCondutas().containsValue(nodo.getNodo())) {
- resultadosSimulacao.add(CONDUTA_INCORRETA_COERENTE);
- return;
- }
- else {
- resultadosSimulacao.add(CONDUTA_INCORRETA_INCOERENTE);
- return;
- }
- }
- } else {
- // Caso o diagnostico esteja incorreto verifica se a conduta foi suficiente ou insuficiente
- int i=1;
- int condutasAdotadas=0;
- int condutasPossiveis=0;
- for(NodoBean nodo : condutas) {
- condutasPossiveis++;
-
- if (!logExecucao.getCondutas().containsValue(nodo.getNodo())) {
- if (i == 1) {
- resultadosSimulacao.add(CONDUTA_INCORRETA_INCOERENTE);
- return;
- }
- } else
- condutasAdotadas++;
-
- if (i++ == 2)
- break;
- }
-
- if (condutasAdotadas < condutasPossiveis)
- resultadosSimulacao.add(CONDUTA_INSUFICIENTE);
- else if (condutasAdotadas > condutasPossiveis)
- resultadosSimulacao.add(CONDUTA_EXCESSIVA);
- }
+ // Verifica a adequacao da conduta
+ String resultadoConduta = getResultadoConduta();
+ resultadosSimulacao.add(resultadoConduta);
- // AVALIAR O TEMPO E CUSTO DA CONDUTA
- int c=1;
- float custoTotalCondutas=0;
- int tempoTotalConudtas=0;
- for(NodoBean nodo : condutas) {
- custoTotalCondutas+=nodo.getNodo().getCusto();
- tempoTotalConudtas+=nodo.getNodo().getTempo();
- if (c++ == 2)
- break;
- }
-
- float custoRealizadoCondutas=0;
- int tempoRealizadoCondutas=0;
- for(Nodo nodoConduta : logExecucao.getCondutas().values()) {
- custoRealizadoCondutas+=nodoConduta.getCusto();
- tempoRealizadoCondutas+=nodoConduta.getTempo();
- }
-
- if (custoTotalCondutas > 0) {
- float pcCustoConduta = custoRealizadoCondutas / custoTotalCondutas * 100;
- if (pcCustoConduta >= 150)
- resultadosSimulacao.add(CONDUTA_DISPENDIOSA);
- }
-
+ // Verifica o custo
+ String resultadoCondutaCusto = getResultadoCustoConduta();
+ if (resultadoCondutaCusto != null)
+ resultadosSimulacao.add(resultadoCondutaCusto);
+
+ // Verifica o tempo
+ String resultadoCondutaTempo = getResultadoTempoConduta();
+ if (resultadoCondutaTempo != null)
+ resultadosSimulacao.add(resultadoCondutaTempo);
+ }
- if (tempoRealizadoCondutas > 0) {
- float pcTempoConduta = tempoRealizadoCondutas / tempoTotalConudtas * 100;
- if (pcTempoConduta >= 150)
- resultadosSimulacao.add(CONDUTA_DEMORADA);
+ // Após a execução da procura das falhas. Caso não haja problema da a simulação como correta
+ if (logExecucao.isConcluiuInvestigacao()) {
+ if (!resultadosSimulacao.contains(INVESTIGACAO_BOGUS) && !resultadosSimulacao.contains(INVESTIGACAO_DEMORADA) &&
+ !resultadosSimulacao.contains(INVESTIGACAO_DISPENDIOSA) && !resultadosSimulacao.contains(INVESTIGACAO_EXCESSIVA) &&
+ !resultadosSimulacao.contains(INVESTIGACAO_INSUFICIENTE) ) {
+
+ resultadosSimulacao.add(INVESTIGACAO_ADEQUADA);
}
-
}
}
+
+ public NegociacaoPedagogica(long idSessao, Paciente paciente) throws Exception {
+ em = DbUtil.getInstance().getEntityManager();
+ SessaoUsuario sessaoUsuario = em.find(SessaoUsuario.class, idSessao);
+ this.sessaoUsuario = sessaoUsuario;
+ this.paciente = paciente;
- public NegociacaoPedagogica(long idSessao, Paciente paciente) throws Exception {
- em = DbUtil.getInstance().getEntityManager();
-
// Busca o log de execução
- logExecucao = new LogExecucao(idSessao, paciente.getCaso().getId(), paciente.getRede().getId());
+ logExecucao = new LogExecucao(sessaoUsuario, paciente);
+ }
+
+ public String getIntervencao(String etapa) throws Exception {
System.out.println(logExecucao);
- populaEstrategia();
- populaResultadoSimulacao(paciente);
-
+ populaResultadoSimulacao();
+
System.out.println("ESTRATÉGIA: " + estrategia);
System.out.println("RESULTADOS:");
for(String resultado : resultadosSimulacao) {
- System.out.println(resultado);
-/*
- IntervencaoPedagogica intervencao = new IntervencaoPedagogica();
+ System.out.println(resultado + " - " + etapa);
+
+ // Registra somente resultados referentes a posicao atual do simulador
+ if (etapa.equals(Log.ETAPA_INVESTIGACAO) && !resultado.startsWith("INVESTIGACAO") && !resultado.equals(NAO_ABRIU_FICHA_PACIENTE))
+ continue;
+ // Registra somente resultados referentes a posicao atual do simulador
+ if (etapa.equals(Log.ETAPA_DIAGNOSTICO) && !resultado.startsWith("DIAGNOSTICO"))
+ continue;
+
+ // Registra somente resultados referentes a posicao atual do simulador
+ if (etapa.equals(Log.ETAPA_CONDUTA) && !resultado.startsWith("CONDUTA"))
+ continue;
+
+
+
+ try {
+ IntervencaoPedagogica testarExistencia = (IntervencaoPedagogica) em.createQuery("From IntervencaoPedagogica where sessaoUsuario.id=:pSessao and estrategia=:pEstrategia and resultado=:pResultado")
+ .setParameter("pSessao", sessaoUsuario.getId())
+ .setParameter("pEstrategia", estrategia)
+ .setParameter("pResultado", resultado)
+ .getSingleResult();
+ continue;
+ } catch(NoResultException e) { }
+
if (!em.getTransaction().isActive())
em.getTransaction().begin();
+ IntervencaoPedagogica intervencao = new IntervencaoPedagogica();
intervencao.setAplicada(false);
intervencao.setDataGeracao(new Date());
intervencao.setEstrategia(estrategia);
intervencao.setResultado(resultado);
- intervencao.setSessaoUsuario(em.find(SessaoUsuario.class, idSessao));
+ intervencao.setSessaoUsuario(sessaoUsuario);
TaticaPedagogica tatica = (TaticaPedagogica) em.createQuery("From TaticaPedagogica where resultado=:pResultado and estrategia=:pEstrategia")
.setParameter("pResultado", resultado)
intervencao.setTatica(tatica);
em.persist(intervencao);
+
em.getTransaction().commit();
+ }
+
+ // Busca as intervencoes a serem mostradas agora!
+ {
+ StringBuilder retorno = new StringBuilder();
+
+ Iterator<IntervencaoPedagogica> itIntervencoes = em.createQuery("From IntervencaoPedagogica where sessaoUsuario.id=:pSessao and aplicada=false order by dataGeracao desc")
+ .setParameter("pSessao", sessaoUsuario.getId())
+ .getResultList()
+ .iterator();
+
+ if (!itIntervencoes.hasNext())
+ return " <resposta_acao_mediador acao=\"nao\" />";
+
+ retorno.append(" <resposta_acao_mediador acao=\"sim\" mensagem=\"Atenção\" problema=\"");
-*/
+ while(itIntervencoes.hasNext()) {
+ IntervencaoPedagogica intervencao = itIntervencoes.next();
+ retorno.append(intervencao.getTatica().getMensagem());
+ retorno.append("\n\n");
+
+ if (!em.getTransaction().isActive())
+ em.getTransaction().begin();
+
+
+ intervencao.setAplicada(true);
+ em.merge(intervencao);
+
+ em.getTransaction().commit();
+
+ }
+
+ retorno.append("\" />");
+ return retorno.toString();
}
+ }
+
+ public String getMensagemFinal() throws Exception {
+ StringBuilder retorno = new StringBuilder();
+
+ retorno.append("PACIENTE: " + paciente.getNome() + "\n\n");
+
+ retorno.append("RESUMO:\n");
+
+
+ // Diagnostico
+ String resultadoDiagnostico = getResultadoDiagnostico();
+ if (resultadoDiagnostico.equals(DIAGNOSTICO_ADEQUADO))
+ retorno.append("-Você chegou ao diagnóstico previsto para esta simulação!\n");
+ else if (resultadoDiagnostico.equals(DIAGNOSTICO_INCORRETO_PLAUSIVEL))
+ retorno.append("-Você não chegou ao diagnóstico previsto para esta simulação! Porém, seu diagnóstico é plausÃvel!\n");
+ else
+ retorno.append("-Você não chegou ao diagnóstico previsto para esta simulação! Seu diagnóstico não é plausÃvel!\n");
+
+ // Conduta
+ String resultadoConduta = getResultadoConduta();
+ if (resultadoConduta.equals(CONDUTA_ADEQUADA))
+ retorno.append("-A conduta selecionada esta adequada ao previsto pela simulação!\n");
+ else if (resultadoConduta.equals(CONDUTA_EXCESSIVA))
+ retorno.append("-A conduta selecionada esta adequada ao previsto pela simulação, porém existem procedimentos em excesso!\n");
+ else if (resultadoConduta.equals(CONDUTA_INSUFICIENTE))
+ retorno.append("-A conduta selecionada esta adequada ao previsto pela simulação, porém a quantidade de procedimentos é insuficiente em relação ao previsto!\n");
+ else if (resultadoConduta.equals(CONDUTA_INCORRETA_COERENTE))
+ retorno.append("-A conduta selecionada esta inadequada ao previsto pela simulação, porém é coerente com o diagnóstico selecionado!\n");
+ else if (resultadoConduta.equals(CONDUTA_INCORRETA_INCOERENTE))
+ retorno.append("-A conduta selecionada esta inadequada e incoerente com o diagnóstico selecionado!\n");
+
+ String resultadoTempoConduta = getResultadoTempoConduta();
+ String resultadoTempoInvestigacao = getResultadoTempoInvestigacao();
+ if (resultadoTempoConduta != null || resultadoTempoInvestigacao != null) {
+ retorno.append("-Quanto a utilização do tempo ");
+ if (resultadoTempoInvestigacao != null && resultadoTempoConduta != null)
+ retorno.append("sua investigação e conduta foram demoradas");
+ else if (resultadoTempoInvestigacao != null)
+ retorno.append("sua investigação foi demorada");
+ else if (resultadoTempoConduta != null)
+ retorno.append("sua conduta foi demorada");
+ retorno.append("!\n");
+ }
+
+ String resultadoCustoConduta = getResultadoCustoConduta();
+ String resultadoCustoInvestigacao = getResultadoCustoInvestigacao();
+ if (resultadoCustoConduta != null || resultadoCustoInvestigacao != null) {
+ retorno.append("-Quanto a utilização de recursos ");
+ if (resultadoCustoInvestigacao != null && resultadoCustoConduta != null)
+ retorno.append("sua investigação e conduta foram dispendiosas");
+ else if (resultadoCustoInvestigacao != null)
+ retorno.append("sua investigação foi dispendiosa");
+ else if (resultadoCustoConduta != null)
+ retorno.append("sua conduta foi dispendiosa");
+ retorno.append("!\n");
+ }
+
+ // Log de execução
+ List<LogPerguntas> logPerguntas = em.createQuery("From LogPerguntas where sessaoUsuario.id=:pIdSessao and paciente.id=:pIdPaciente")
+ .setParameter("pIdSessao", sessaoUsuario.getId())
+ .setParameter("pIdPaciente", paciente.getId())
+ .getResultList();
+
+ // Mostra os sintomas esperados:
+ retorno.append("\n\nSINAIS / SINTOMAS:\nAS PERGUNTAS QUE PODERIAM FORTALECER O DIAGNÓSTICO SÃO:\n");
+ for(LogPerguntas logPergunta : logPerguntas) {
+ if (logPergunta.getTipoNodo().equals(Nodo.SINAL_SINTOMA) && logPergunta.isAtivo())
+ retorno.append(logPergunta.getPergunta() + "\n");
+ }
+
+ // Mostra os sintomas selecionados:
+ retorno.append("\n\nAS PERGUNTAS SELECIONADAS NO DECORRER DA SUA SIMULAÇÃO FORAM:\n");
+ List<Nodo> nodosInvestigacao = logExecucao.getNodosInvestigacao();
+ for(Nodo nodoInvestigacao : nodosInvestigacao) {
+ if (nodoInvestigacao.getTipo().equals(Nodo.SINAL_SINTOMA)) {
+ for(LogPerguntas logPergunta : logPerguntas) {
+ if (logPergunta.getNodo().getId() == nodoInvestigacao.getId()) {
+ retorno.append(logPergunta.getPergunta() + "\n");
+ break;
+ }
+ }
+ }
+ }
+
+ return retorno.toString();
}
}
import java.io.File;
import java.security.InvalidParameterException;
import java.util.*;
+import javax.persistence.EntityManager;
+import org.ufcspa.simdecs.entities.Nodo;
+import org.ufcspa.simdecs.entities.NodoPaciente;
+import org.ufcspa.simdecs.entities.Paciente;
import org.ufcspa.simdecs.entities.Rede;
import org.ufcspa.simdecs.exceptions.InvalidNodeState;
import unbbayes.io.xmlbif.version6.XMLBIFIO;
return listProbs;
}
+ public static UnBBayesUtil getRedePaciente(EntityManager em, Paciente paciente) throws Exception {
+
+ UnBBayesUtil unBUtil = new UnBBayesUtil(paciente.getRede());
+
+ List<NodoPaciente> nodosPaciente = em.createQuery("From NodoPaciente np Where np.paciente.id=:pPaciente")
+ .setParameter("pPaciente", paciente.getId())
+ .getResultList();
+
+ for(NodoPaciente nodo : nodosPaciente) {
+ ProbabilisticNode pn = (ProbabilisticNode) unBUtil.getNodeByName(nodo.getNodo().getNome());
+ if (pn != null)
+ unBUtil.setNodeState(pn, "Yes", 1, "Not", 0);
+ }
+
+ return unBUtil;
+ }
+ public List<NodoBean> getProbabilidades(EntityManager em, String tipoNodo) {
+ Iterator<Nodo> itNodos = em.createNamedQuery("Nodo.getByTipo")
+ .setParameter("pTipo", tipoNodo)
+ .getResultList().iterator();
+
+ ArrayList nodos = new ArrayList<NodoBean>();
+
+ while(itNodos.hasNext()) {
+ Nodo nodo = itNodos.next();
+ NodoBean nodoBean = new NodoBean(nodo, (Float) getProbabilidadeByState((TreeVariable) getNodeByName(nodo.getNome()), "Yes"));
+ nodos.add(nodoBean);
+ }
+
+ Collections.sort(nodos, 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;
+ }
+ });
+
+ return nodos;
+ }
+
+ public Nodo getPrimeiroDiagnostico(EntityManager em) {
+ List<NodoBean> diagnosticos = getProbabilidades(em, Nodo.DIAGNOSTICO);
+ for(NodoBean nodoBean : diagnosticos) {
+ return nodoBean.getNodo();
+ }
+
+ return null;
+ }
+
+ public Nodo getSegundoDiagnostico(EntityManager em) {
+ List<NodoBean> diagnosticos = getProbabilidades(em, Nodo.DIAGNOSTICO);
+
+ int d=1;
+ float probabilidadeDiag1=0;
+ float probabilidadeDiag2=0;
+ Nodo segundoDiagnostico=null;
+ for(NodoBean nodoBean : diagnosticos) {
+ if (d == 1)
+ probabilidadeDiag1 = nodoBean.getPercentualProbabilidade();
+ if (d == 2) {
+ probabilidadeDiag2 = nodoBean.getPercentualProbabilidade();
+ segundoDiagnostico = nodoBean.getNodo();
+ }
+
+ if (d++ == 2)
+ break;
+ }
+
+ float diferenca = probabilidadeDiag1 - probabilidadeDiag2;
+ if (diferenca <= 25)
+ return segundoDiagnostico;
+ else
+ return null;
+ }
+
+ public List<Nodo> getCondutas(EntityManager em) {
+ List<NodoBean> condutas = getProbabilidades(em, Nodo.CONDUTA);
+ List<Nodo> condutasRetornar = new ArrayList<Nodo>();
+ for(NodoBean conduta : condutas) {
+ if (conduta.getPercentualProbabilidade() < 50)
+ continue;
+
+ condutasRetornar.add(conduta.getNodo());
+//System.out.println("CONDUTA*: " + conduta.getNodo().getNomeAmigavel());
+ }
+
+ return condutasRetornar;
+
+ }
}
--- /dev/null
+<?xml version='1.0' encoding='US-ASCII'?>
+<xbifns:XMLBIF version="0.6" xmlns:xbifns="http://unbbayes.sourceforge.net/xml/XMLBIF_0_6.xsd">
+ <xbifns:header>
+ <xbifns:version>1.0</xbifns:version>
+ <xbifns:name>direvisado</xbifns:name>
+ <xbifns:creator>UnBBayes</xbifns:creator>
+ </xbifns:header>
+ <xbifns:staticProperty>
+ <xbifns:nodeSize>40</xbifns:nodeSize>
+ <xbifns:nodeFontSize>0</xbifns:nodeFontSize>
+ <xbifns:colorUtilityNode>0</xbifns:colorUtilityNode>
+ <xbifns:colorDecisionNode>0</xbifns:colorDecisionNode>
+ <xbifns:colorDiscreteProbabilisticNode>0</xbifns:colorDiscreteProbabilisticNode>
+ <xbifns:colorContinuousProbilisticNode>0</xbifns:colorContinuousProbilisticNode>
+ <xbifns:colorExplanationNode>0</xbifns:colorExplanationNode>
+ </xbifns:staticProperty>
+ <xbifns:hierarchy>
+ <xbifns:root name="root">
+ <xbifns:level name=""/>
+ <xbifns:level name="Investigacao"/>
+ </xbifns:root>
+ </xbifns:hierarchy>
+ <xbifns:network>
+ <xbifns:variables>
+ <xbifns:variable perguntas="" tipo="E" tempoEtapa="0.0" custoEtapa="0.0" rgbColor="-256" height="60.0" width="80.0" yPos="130" xPos="670" type="DiscreteProbabilistic" name="ExameComplementar">
+ <xbifns:description/>
+ <xbifns:state name="Insuficiente"/>
+ <xbifns:state name="Suficiente"/>
+ <xbifns:state name="Excessiva"/>
+ </xbifns:variable>
+ <xbifns:variable perguntas="" tipo="E" tempoEtapa="0.0" custoEtapa="0.0" rgbColor="-256" height="60.0" width="80.0" yPos="200" xPos="740" type="DiscreteProbabilistic" name="ExameFisico">
+ <xbifns:description/>
+ <xbifns:state name="Insuficiente"/>
+ <xbifns:state name="Suficiente"/>
+ <xbifns:state name="Excessiva"/>
+ </xbifns:variable>
+ <xbifns:variable perguntas="" tipo="E" tempoEtapa="0.0" custoEtapa="0.0" rgbColor="-256" height="60.0" width="80.0" yPos="270" xPos="690" type="DiscreteProbabilistic" name="Anamnese">
+ <xbifns:description/>
+ <xbifns:state name="Insuficiente"/>
+ <xbifns:state name="Suficiente"/>
+ <xbifns:state name="Excessiva"/>
+ </xbifns:variable>
+ <xbifns:variable perguntas="" tipo="E" tempoEtapa="0.0" custoEtapa="0.0" rgbColor="-256" height="60.0" width="80.0" yPos="90" xPos="80" type="DiscreteProbabilistic" name="Confianca">
+ <xbifns:description/>
+ <xbifns:state name="Baixa"/>
+ <xbifns:state name="Media"/>
+ <xbifns:state name="Alta"/>
+ </xbifns:variable>
+ <xbifns:variable perguntas="" tipo="E" tempoEtapa="0.0" custoEtapa="0.0" rgbColor="-14336" height="60.0" width="80.0" yPos="0" xPos="199" type="Decision" name="Estrategia">
+ <xbifns:description/>
+ <xbifns:state name="Orientacao"/>
+ <xbifns:state name="Ampliacao"/>
+ <xbifns:state name="Apoio"/>
+ <xbifns:state name="Contestacao"/>
+ <xbifns:state name="Comprovacao"/>
+ </xbifns:variable>
+ <xbifns:variable perguntas="" tipo="E" tempoEtapa="0.0" custoEtapa="0.0" rgbColor="-16711681" height="60.0" width="80.0" yPos="90" xPos="150" type="Utility" name="Utility">
+ <xbifns:description/>
+ <xbifns:state name="Utilidade"/>
+ </xbifns:variable>
+ <xbifns:variable perguntas="" tipo="E" tempoEtapa="0.0" custoEtapa="0.0" rgbColor="-256" height="60.0" width="80.0" yPos="200" xPos="420" type="DiscreteProbabilistic" name="ResultadoInvestigacao">
+ <xbifns:description/>
+ <xbifns:state name="Correta"/>
+ <xbifns:state name="Incorreta"/>
+ </xbifns:variable>
+ <xbifns:variable perguntas="" tipo="E" tempoEtapa="0.0" custoEtapa="0.0" rgbColor="-256" height="60.0" width="80.0" yPos="280" xPos="70" type="DiscreteProbabilistic" name="HesitacaoDiagnostico">
+ <xbifns:description/>
+ <xbifns:state name="Presente"/>
+ <xbifns:state name="Ausente"/>
+ </xbifns:variable>
+ <xbifns:variable perguntas="" tipo="E" tempoEtapa="0.0" custoEtapa="0.0" rgbColor="-256" height="60.0" width="80.0" yPos="290" xPos="180" type="DiscreteProbabilistic" name="HesitacaoConduta">
+ <xbifns:description/>
+ <xbifns:state name="Presente"/>
+ <xbifns:state name="Ausente"/>
+ </xbifns:variable>
+ <xbifns:variable perguntas="" tipo="E" tempoEtapa="0.0" custoEtapa="0.0" rgbColor="-256" height="60.0" width="80.0" yPos="110" xPos="420" type="DiscreteProbabilistic" name="Bogus">
+ <xbifns:description/>
+ <xbifns:state name="Presente"/>
+ <xbifns:state name="Ausente"/>
+ </xbifns:variable>
+ <xbifns:variable perguntas="" tipo="E" tempoEtapa="0.0" custoEtapa="0.0" rgbColor="-256" height="60.0" width="80.0" yPos="200" xPos="570" type="DiscreteProbabilistic" name="Investigacao">
+ <xbifns:description>Investigacao</xbifns:description>
+ <xbifns:state name="Insuficiente"/>
+ <xbifns:state name="Suficiente"/>
+ <xbifns:state name="Excessiva"/>
+ </xbifns:variable>
+ <xbifns:variable perguntas="" tipo="E" tempoEtapa="0.0" custoEtapa="0.0" rgbColor="-256" height="60.0" width="80.0" yPos="300" xPos="420" type="DiscreteProbabilistic" name="AbriuFichaPaciente">
+ <xbifns:description/>
+ <xbifns:state name="Nao"/>
+ <xbifns:state name="Sim"/>
+ </xbifns:variable>
+ <xbifns:variable perguntas="" tipo="E" tempoEtapa="0.0" custoEtapa="0.0" rgbColor="-256" height="60.0" width="80.0" yPos="200" xPos="150" type="DiscreteProbabilistic" name="Credibilidade">
+ <xbifns:description/>
+ <xbifns:state name="Alta"/>
+ <xbifns:state name="Média"/>
+ <xbifns:state name="Baixa"/>
+ </xbifns:variable>
+ </xbifns:variables>
+ <xbifns:structure>
+ <xbifns:edge child="Utility" parent="Credibilidade"/>
+ <xbifns:edge child="Utility" parent="Confianca"/>
+ <xbifns:edge child="Utility" parent="Estrategia"/>
+ <xbifns:edge child="ResultadoInvestigacao" parent="Bogus"/>
+ <xbifns:edge child="ResultadoInvestigacao" parent="AbriuFichaPaciente"/>
+ <xbifns:edge child="ResultadoInvestigacao" parent="Investigacao"/>
+ <xbifns:edge child="Investigacao" parent="ExameFisico"/>
+ <xbifns:edge child="Investigacao" parent="Anamnese"/>
+ <xbifns:edge child="Investigacao" parent="ExameComplementar"/>
+ <xbifns:edge child="Credibilidade" parent="ResultadoInvestigacao"/>
+ <xbifns:edge child="Credibilidade" parent="HesitacaoDiagnostico"/>
+ <xbifns:edge child="Credibilidade" parent="HesitacaoConduta"/>
+ </xbifns:structure>
+ <xbifns:conditionalDistributionSet>
+ <xbifns:conditionalDistribution type="Discrete">
+ <xbifns:owner name="ExameComplementar"/>
+ <xbifns:CPT>
+ <xbifns:dependentParentIndex index="0">0.33333298563957214</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="1">0.33333298563957214</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="2">0.33333298563957214</xbifns:dependentParentIndex>
+ </xbifns:CPT>
+ </xbifns:conditionalDistribution>
+ <xbifns:conditionalDistribution type="Discrete">
+ <xbifns:owner name="ExameFisico"/>
+ <xbifns:CPT>
+ <xbifns:dependentParentIndex index="0">0.33333298563957214</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="1">0.33333298563957214</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="2">0.33333298563957214</xbifns:dependentParentIndex>
+ </xbifns:CPT>
+ </xbifns:conditionalDistribution>
+ <xbifns:conditionalDistribution type="Discrete">
+ <xbifns:owner name="Anamnese"/>
+ <xbifns:CPT>
+ <xbifns:dependentParentIndex index="0">0.33333298563957214</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="1">0.33333298563957214</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="2">0.33333298563957214</xbifns:dependentParentIndex>
+ </xbifns:CPT>
+ </xbifns:conditionalDistribution>
+ <xbifns:conditionalDistribution type="Discrete">
+ <xbifns:owner name="Confianca"/>
+ <xbifns:CPT>
+ <xbifns:dependentParentIndex index="0">0.33333298563957214</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="1">0.33333298563957214</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="2">0.33333298563957214</xbifns:dependentParentIndex>
+ </xbifns:CPT>
+ </xbifns:conditionalDistribution>
+ <xbifns:conditionalDistribution type="Discrete">
+ <xbifns:owner name="Utility"/>
+ <xbifns:parents>
+ <xbifns:parent index="0" name="Estrategia"/>
+ <xbifns:parent index="1" name="Confianca"/>
+ <xbifns:parent index="2" name="Credibilidade"/>
+ </xbifns:parents>
+ <xbifns:CPT>
+ <xbifns:dependentParentIndex index="0">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="1">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="2">1.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="3">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="4">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="5">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="6">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="7">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="8">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="9">1.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="10">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="11">1.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="12">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="13">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="14">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="15">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="16">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="17">1.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="18">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="19">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="20">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="21">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="22">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="23">1.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="24">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="25">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="26">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="27">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="28">1.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="29">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="30">1.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="31">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="32">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="33">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="34">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="35">1.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="36">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="37">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="38">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="39">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="40">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="41">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="42">0.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="43">1.0</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="44">0.0</xbifns:dependentParentIndex>
+ </xbifns:CPT>
+ </xbifns:conditionalDistribution>
+ <xbifns:conditionalDistribution type="Discrete">
+ <xbifns:owner name="ResultadoInvestigacao"/>
+ <xbifns:parents>
+ <xbifns:parent index="0" name="Investigacao"/>
+ <xbifns:parent index="1" name="AbriuFichaPaciente"/>
+ <xbifns:parent index="2" name="Bogus"/>
+ </xbifns:parents>
+ <xbifns:CPT>
+ <xbifns:dependentParentIndex index="0">0.05000000074505806</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="1">0.949999988079071</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="2">0.699999988079071</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="3">0.30000001192092896</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="4">0.30000001192092896</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="5">0.699999988079071</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="6">0.10000000149011612</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="7">0.8999999761581421</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="8">0.75</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="9">0.25</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="10">0.3499999940395355</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="11">0.6499999761581421</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="12">0.6000000238418579</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="13">0.4000000059604645</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="14">0.8500000238418579</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="15">0.15000000596046448</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="16">0.699999988079071</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="17">0.30000001192092896</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="18">0.699999988079071</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="19">0.30000001192092896</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="20">0.949999988079071</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="21">0.05000000074505806</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="22">0.800000011920929</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="23">0.20000000298023224</xbifns:dependentParentIndex>
+ </xbifns:CPT>
+ </xbifns:conditionalDistribution>
+ <xbifns:conditionalDistribution type="Discrete">
+ <xbifns:owner name="HesitacaoDiagnostico"/>
+ <xbifns:CPT>
+ <xbifns:dependentParentIndex index="0">0.5</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="1">0.5</xbifns:dependentParentIndex>
+ </xbifns:CPT>
+ </xbifns:conditionalDistribution>
+ <xbifns:conditionalDistribution type="Discrete">
+ <xbifns:owner name="HesitacaoConduta"/>
+ <xbifns:CPT>
+ <xbifns:dependentParentIndex index="0">0.5</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="1">0.5</xbifns:dependentParentIndex>
+ </xbifns:CPT>
+ </xbifns:conditionalDistribution>
+ <xbifns:conditionalDistribution type="Discrete">
+ <xbifns:owner name="Bogus"/>
+ <xbifns:CPT>
+ <xbifns:dependentParentIndex index="0">0.5</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="1">0.5</xbifns:dependentParentIndex>
+ </xbifns:CPT>
+ </xbifns:conditionalDistribution>
+ <xbifns:conditionalDistribution type="Discrete">
+ <xbifns:owner name="Investigacao"/>
+ <xbifns:parents>
+ <xbifns:parent index="0" name="ExameComplementar"/>
+ <xbifns:parent index="1" name="Anamnese"/>
+ <xbifns:parent index="2" name="ExameFisico"/>
+ </xbifns:parents>
+ <xbifns:CPT>
+ <xbifns:dependentParentIndex index="0">0.949999988079071</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="1">0.02500000037252903</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="2">0.02500000037252903</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="3">0.800000011920929</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="4">0.15000000596046448</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="5">0.05000000074505806</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="6">0.3499999940395355</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="7">0.05000000074505806</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="8">0.6000000238418579</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="9">0.25</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="10">0.25</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="11">0.5</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="12">0.4000000059604645</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="13">0.550000011920929</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="14">0.05000000074505806</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="15">0.3499999940395355</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="16">0.15000000596046448</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="17">0.5</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="18">0.800000011920929</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="19">0.05000000074505806</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="20">0.15000000596046448</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="21">0.6000000238418579</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="22">0.05000000074505806</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="23">0.3499999940395355</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="24">0.15000000596046448</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="25">0.05000000074505806</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="26">0.800000011920929</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="27">0.800000011920929</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="28">0.10000000149011612</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="29">0.10000000149011612</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="30">0.6000000238418579</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="31">0.3499999940395355</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="32">0.05000000074505806</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="33">0.3499999940395355</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="34">0.05000000074505806</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="35">0.6000000238418579</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="36">0.5</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="37">0.44999998807907104</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="38">0.05000000074505806</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="39">0.33333298563957214</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="40">0.33333298563957214</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="41">0.33333298563957214</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="42">0.20000000298023224</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="43">0.20000000298023224</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="44">0.6000000238418579</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="45">0.5</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="46">0.10000000149011612</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="47">0.4000000059604645</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="48">0.30000001192092896</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="49">0.30000001192092896</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="50">0.4000000059604645</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="51">0.10000000149011612</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="52">0.10000000149011612</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="53">0.800000011920929</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="54">0.699999988079071</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="55">0.15000000596046448</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="56">0.15000000596046448</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="57">0.4000000059604645</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="58">0.20000000298023224</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="59">0.4000000059604645</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="60">0.15000000596046448</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="61">0.15000000596046448</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="62">0.699999988079071</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="63">0.4000000059604645</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="64">0.20000000298023224</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="65">0.4000000059604645</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="66">0.30000001192092896</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="67">0.30000001192092896</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="68">0.4000000059604645</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="69">0.05000000074505806</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="70">0.20000000298023224</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="71">0.75</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="72">0.3499999940395355</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="73">0.05000000074505806</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="74">0.6000000238418579</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="75">0.10000000149011612</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="76">0.4000000059604645</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="77">0.5</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="78">0.2547770142555237</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="79">0.019108299165964127</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="80">0.7261149883270264</xbifns:dependentParentIndex>
+ </xbifns:CPT>
+ </xbifns:conditionalDistribution>
+ <xbifns:conditionalDistribution type="Discrete">
+ <xbifns:owner name="AbriuFichaPaciente"/>
+ <xbifns:CPT>
+ <xbifns:dependentParentIndex index="0">0.5</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="1">0.5</xbifns:dependentParentIndex>
+ </xbifns:CPT>
+ </xbifns:conditionalDistribution>
+ <xbifns:conditionalDistribution type="Discrete">
+ <xbifns:owner name="Credibilidade"/>
+ <xbifns:parents>
+ <xbifns:parent index="0" name="HesitacaoConduta"/>
+ <xbifns:parent index="1" name="HesitacaoDiagnostico"/>
+ <xbifns:parent index="2" name="ResultadoInvestigacao"/>
+ </xbifns:parents>
+ <xbifns:CPT>
+ <xbifns:dependentParentIndex index="0">0.15000000596046448</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="1">0.15000000596046448</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="2">0.699999988079071</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="3">0.20000000298023224</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="4">0.20000000298023224</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="5">0.6000000238418579</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="6">0.20000000298023224</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="7">0.6000000238418579</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="8">0.20000000298023224</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="9">0.8999999761581421</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="10">0.05000000074505806</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="11">0.05000000074505806</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="12">0.05000000074505806</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="13">0.05000000074505806</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="14">0.8999999761581421</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="15">0.05000000074505806</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="16">0.05000000074505806</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="17">0.8999999761581421</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="18">0.10000000149011612</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="19">0.10000000149011612</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="20">0.800000011920929</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="21">0.02500000037252903</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="22">0.02500000037252903</xbifns:dependentParentIndex>
+ <xbifns:dependentParentIndex index="23">0.949999988079071</xbifns:dependentParentIndex>
+ </xbifns:CPT>
+ </xbifns:conditionalDistribution>
+ </xbifns:conditionalDistributionSet>
+ </xbifns:network>
+</xbifns:XMLBIF>
\ No newline at end of file