-/dist/
\ No newline at end of file
+/dist/
+/build/
+/nbproject/private/
\ No newline at end of file
j2ee.compile.on.save=true
j2ee.deploy.on.save=true
j2ee.platform=1.6-web
-j2ee.platform.classpath=${j2ee.server.home}/modules/jstl-impl.jar:${j2ee.server.home}/modules/javax.resource.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jar:${j2ee.server.home}/modules/bean-validator.jar:${j2ee.server.home}/modules/javax.ejb.jar:${j2ee.server.home}/modules/jsf-impl.jar:${j2ee.server.home}/modules/webservices-osgi.jar:${j2ee.server.home}/modules/endorsed/javax.annotation.jar:${j2ee.server.home}/modules/weld-osgi-bundle.jar:${j2ee.server.home}/modules/javax.security.auth.message.jar:${j2ee.server.home}/modules/javax.mail.jar:${j2ee.server.home}/modules/jaxb-osgi.jar:${j2ee.server.home}/modules/javax.management.j2ee.jar:${j2ee.server.home}/modules/jsf-api.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/javax.enterprise.deploy.jar:${j2ee.server.middleware}/mq/lib/jaxm-api.jar:${j2ee.server.home}/modules/endorsed/jaxb-api-osgi.jar:${j2ee.server.home}/modules/javax.security.jacc.jar:${j2ee.server.home}/modules/javax.transaction.jar:${j2ee.server.home}/modules/jersey-core.jar:${j2ee.server.home}/modules/javax.servlet.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jstl.jar:${j2ee.server.home}/modules/javax.persistence.jar:${j2ee.server.home}/modules/javax.jms.jar
+j2ee.platform.classpath=${j2ee.server.home}/modules/jaxrpc-api-osgi.jar:${j2ee.server.home}/modules/javax.jms.jar:${j2ee.server.home}/modules/weld-osgi-bundle.jar:${j2ee.server.home}/modules/jsf-impl.jar:${j2ee.server.home}/modules/javax.persistence.jar:${j2ee.server.home}/modules/jaxr-api-osgi.jar:${j2ee.server.home}/modules/javax.security.jacc.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/javax.resource.jar:${j2ee.server.home}/modules/javax.enterprise.deploy.jar:${j2ee.server.home}/modules/endorsed/javax.annotation.jar:${j2ee.server.home}/modules/endorsed/jaxb-api-osgi.jar:${j2ee.server.home}/modules/javax.management.j2ee.jar:${j2ee.server.home}/modules/javax.ejb.jar:${j2ee.server.home}/modules/javax.mail.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jstl.jar:${j2ee.server.home}/modules/jsf-api.jar:${j2ee.server.home}/modules/bean-validator.jar:${j2ee.server.home}/modules/javax.servlet.jar:${j2ee.server.home}/modules/javax.security.auth.message.jar:${j2ee.server.home}/modules/javax.transaction.jar:${j2ee.server.home}/modules/jersey-core.jar:${j2ee.server.home}/modules/jstl-impl.jar
j2ee.platform.embeddableejb.classpath=${j2ee.server.home}/lib/embedded/glassfish-embedded-static-shell.jar
j2ee.platform.wscompile.classpath=${j2ee.server.home}/modules/webservices-osgi.jar
j2ee.platform.wsgen.classpath=${j2ee.server.home}/modules/webservices-osgi.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/jaxb-osgi.jar:${j2ee.server.home}/modules/endorsed/jaxb-api-osgi.jar:${j2ee.server.home}/modules/javax.ejb.jar
@Column(nullable=false, length=4000)
private String resumo;
+ @Column(nullable=false, length=20)
+ private String modelo;
+
@ManyToOne
@JoinColumn(name="usu_id", nullable=false)
private Usuario usuario;
public void setPacientes(List<Paciente> pacientes) {
this.pacientes = pacientes;
}
+
+ public String getModelo() {
+ return modelo;
+ }
+
+ public void setModelo(String modelo) {
+ this.modelo = modelo;
+ }
+
+
}
@Column(length=1, nullable=false)
private String sexo;
+
+ @Column(length=20, nullable=false)
+ private String modelo;
@OneToMany(mappedBy="paciente")
private List<NodoPaciente> nodos;
this.id = id;
}
+ public String getModelo() {
+ return modelo;
+ }
+
+ public void setModelo(String modelo) {
+ this.modelo = modelo;
+ }
+
@Override
public int hashCode() {
int hash = 0;
private Rede[] selectedItems;
public List<Rede> getItems() {
- CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
- cq.select(cq.from(Rede.class));
- Query q = em.createQuery(cq);
- return q.getResultList();
+ //CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
+ //cq.select(cq.from(Rede.class));
+ //Query q = em.createQuery(cq);
+ return em.createQuery("From Rede").getResultList();
+ //return q.getResultList();
}
public Rede getSelectedItem() {
*/
package org.ufcspa.simdecs.mb.editarcasos;
+import java.io.IOException;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
+import org.primefaces.component.commandbutton.CommandButton;
+import org.primefaces.model.DualListModel;
import org.ufcspa.simdecs.entities.Caso;
import org.ufcspa.simdecs.entities.Nodo;
+import org.ufcspa.simdecs.entities.NodoPaciente;
import org.ufcspa.simdecs.entities.Paciente;
+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 unbbayes.prs.bn.ProbabilisticNode;
/**
*
private Float pesoPaciente;
private Float alturaPaciente;
private String sexoPaciente;
+ private String modeloPaciente;
private Long redePaciente;
private Map<String, String> listaRedesPaciente;
private List<Paciente> listaPacientes;
private String relato;
- private Map<String, String> listaSinaisSintomas;
- private List<String> sinaisSintomasSelecionados;
+ private DualListModel<Nodo> sinaisSintomas;
+ private DualListModel<Nodo> historicos;
+ private DualListModel<Nodo> examesFisicos;
+ private DualListModel<Nodo> examesComplementares;
+ private String xml;
+
+
+ private List<NodoBean> diagnosticos;
+ private List<NodoBean> condutas;
private Caso caso;
Rede rede = it.next();
listaRedesPaciente.put(rede.getNome(), String.valueOf(rede.getId()));
}
-
+
// Popula Lista de Pacientes
- listaPacientes = caso.getPacientes();
+ listaPacientes = em.createQuery("From Paciente where caso.id=:pIDCaso")
+ .setParameter("pIDCaso", caso.getId())
+ .getResultList();
+
+ sinaisSintomas = new DualListModel<Nodo>();
+ historicos = new DualListModel<Nodo>();
+ examesFisicos = new DualListModel<Nodo>();
+ examesComplementares = new DualListModel<Nodo>();
}
/** Creates a new instance of EditarCasoBean */
populate();
}
+ public String voltar() {
+ return "/editarcasos/selecioneCaso.jsf?faces-redirect=true";
+ }
+
public void prepareAdicionarPaciente() {
redePaciente = idPaciente = null;
sexoPaciente = nomePaciente = "";
pesoPaciente = null;
idadePaciente= null;
+
+ CommandButton buttonCriar = (CommandButton) getComponentById("fEditarPaciente:criar");
+ CommandButton buttonEditar = (CommandButton) getComponentById("fEditarPaciente:editar");
+ CommandButton buttonExcluir = (CommandButton) getComponentById("fEditarPaciente:excluir");
+
+ buttonCriar.setRendered(true);
+ buttonEditar.setRendered(false);
+ buttonExcluir.setRendered(false);
+ }
+
+ public void prepareEditarPaciente() {
+ Paciente paciente = em.find(Paciente.class, Long.valueOf(getTextParameter("pIdPaciente")));
+ Rede rede = paciente.getRede();
+
+
+ redePaciente = rede.getId();
+ idPaciente = paciente.getId();
+ sexoPaciente = paciente.getSexo();
+ nomePaciente = paciente.getNome();
+ pesoPaciente = paciente.getPeso();
+ idadePaciente= paciente.getIdade();
+ alturaPaciente = paciente.getAltura();
+ modeloPaciente = paciente.getModelo();
+
+ CommandButton buttonCriar = (CommandButton) getComponentById("fEditarPaciente:criar");
+ CommandButton buttonEditar = (CommandButton) getComponentById("fEditarPaciente:editar");
+ CommandButton buttonExcluir = (CommandButton) getComponentById("fEditarPaciente:excluir");
+
+ buttonCriar.setRendered(false);
+ buttonEditar.setRendered(true);
+ buttonExcluir.setRendered(true);
+
+
+ }
+
+ private Nodo getNodoByNome(String nome) {
+ return (Nodo) em.createQuery("From Nodo where nome=:pNome")
+ .setParameter("pNome", nome)
+ .getSingleResult();
}
+
+ public void salvarCaso() {
+ em.getTransaction().begin();
+
+ idPaciente = Long.valueOf(getTextParameter("pIdPaciente"));
+
+ em.createQuery("Delete From NodoPaciente where paciente.id=:pIDPaciente")
+ .setParameter("pIDPaciente", idPaciente)
+ .executeUpdate();
+
+ // Sinais e Sintomas
+ for (Object nomeNodo : sinaisSintomas.getTarget()) {
+ Nodo nodo = getNodoByNome((String) nomeNodo);
+ Paciente paciente = em.find(Paciente.class, idPaciente);
+
+ NodoPaciente nodoPaciente = new NodoPaciente();
+ nodoPaciente.setPaciente(paciente);
+ nodoPaciente.setNodo(nodo);
+ em.persist(nodoPaciente);
+ }
+
+ // Historicos
+ for (Object nomeNodo : historicos.getTarget()) {
+ Nodo nodo = getNodoByNome((String) nomeNodo);
+ Paciente paciente = em.find(Paciente.class, idPaciente);
+
+ NodoPaciente nodoPaciente = new NodoPaciente();
+ nodoPaciente.setPaciente(paciente);
+ nodoPaciente.setNodo(nodo);
+ em.persist(nodoPaciente);
+ }
+ // Exames Físicos
+ for (Object nomeNodo : examesFisicos.getTarget()) {
+ Nodo nodo = getNodoByNome((String) nomeNodo);
+ Paciente paciente = em.find(Paciente.class, idPaciente);
+
+ NodoPaciente nodoPaciente = new NodoPaciente();
+ nodoPaciente.setPaciente(paciente);
+ nodoPaciente.setNodo(nodo);
+ em.persist(nodoPaciente);
+ }
+ // Exames Complementares
+ for (Object nomeNodo : examesComplementares.getTarget()) {
+ Nodo nodo = getNodoByNome((String) nomeNodo);
+ Paciente paciente = em.find(Paciente.class, idPaciente);
+
+ NodoPaciente nodoPaciente = new NodoPaciente();
+ nodoPaciente.setPaciente(paciente);
+ nodoPaciente.setNodo(nodo);
+ em.persist(nodoPaciente);
+ }
+ em.getTransaction().commit();
+ addInfoMessage("Salvo com Sucesso!", "Caso clínico salvo com sucesso!");
+ }
+
+ public void processaRede() {
+ UnBUtil unBUtil = UnBUtil.getInstance();
+ unBUtil.abreRede();
+
+ // Sinais e Sintomas
+ for (Object nodo : sinaisSintomas.getSource()) {
+ ProbabilisticNode pn = unBUtil.getNodeByName((String) nodo);
+ unBUtil.desativarNodo(pn);
+ }
+
+ for (Object nodo : sinaisSintomas.getTarget()) {
+ ProbabilisticNode pn = unBUtil.getNodeByName((String) nodo);
+ unBUtil.ativarNodo(pn);
+ }
+
+ // Historicos
+ for (Object nodo : historicos.getSource()) {
+ ProbabilisticNode pn = unBUtil.getNodeByName((String) nodo);
+ unBUtil.desativarNodo(pn);
+ }
+
+ for (Object nodo : historicos.getTarget()) {
+ ProbabilisticNode pn = unBUtil.getNodeByName((String) nodo);
+ unBUtil.ativarNodo(pn);
+ }
+
+ // Exames Físicos
+ for (Object nodo : examesFisicos.getSource()) {
+ ProbabilisticNode pn = unBUtil.getNodeByName((String) nodo);
+ unBUtil.desativarNodo(pn);
+ }
+
+ for (Object nodo : examesFisicos.getTarget()) {
+ ProbabilisticNode pn = unBUtil.getNodeByName((String) nodo);
+ unBUtil.ativarNodo(pn);
+ }
+
+ // Exames Complementares
+ for (Object nodo : examesComplementares.getSource()) {
+ ProbabilisticNode pn = unBUtil.getNodeByName((String) nodo);
+ unBUtil.desativarNodo(pn);
+ }
+
+ for (Object nodo : examesComplementares.getTarget()) {
+ ProbabilisticNode pn = unBUtil.getNodeByName((String) nodo);
+ unBUtil.ativarNodo(pn);
+ }
+
+ diagnosticos = unBUtil.getProbabilidadeDiagnosticos();
+ condutas = unBUtil.getProbabilidadeCondutas();
+ }
+
+
+ private String getPerguntaNodo(Long idNodo) {
+ List <PerguntaNodo> perguntas = em.createQuery("From PerguntaNodo where nodo.id=:pIdNodo")
+ .setParameter("pIdNodo", idNodo)
+ .getResultList();
+
+ int random = (int) (1+Math.random()*perguntas.size());
+ int i=1;
+
+ for(PerguntaNodo pergunta : perguntas) {
+ if (i++ == random)
+ return pergunta.getTexto();
+ }
+
+ return "";
+ }
+
+ public void gerarXML() throws IOException {
+
+ StringBuilder str = new StringBuilder();
+ str.append("<caso uid=\"caso-" + caso.getId() + "\" titulo=\"" + caso.getNome() + "\" modelo=\"" + caso.getModelo() + "\" descricaoAmbiente=\"" + caso.getTextoInicial() + "\">\n");
+
+ Iterator<Paciente> itPac = em.createQuery("From Paciente where caso.id=:pIdCaso")
+ .setParameter("pIdCaso", caso.getId())
+ .getResultList()
+ .iterator();
+ while(itPac.hasNext()) {
+ Paciente paciente = itPac.next();
+ str.append(" <ator uid=\"paciente-" + paciente.getId() + "\" tipo=\"paciente\" nome=\"" + paciente.getNome() + "\" modelo=\"" + paciente.getModelo() + "\" idade=\"" + paciente.getIdade() + "\" peso=\"" + paciente.getPeso() + "\" altura=\"" + paciente.getAltura() + "\" >\n");
+
+ str.append(" <etapa uid=\"etapa-1\" nome=\"Investigação\" sequencia=\"1\" tipo=\"investigacao\">\n");
+
+ // Sinais e sintomas
+ str.append(" <perguntar_sintoma uid=\"perguntar-sintoma-" + paciente.getId() + "\" descricao=\"Perguntar Sinais/Sintomas\">\n");
+ List<NodoPaciente> nodos = em.createQuery("From NodoPaciente Where paciente.id=:pIDPaciente")
+ .setParameter("pIDPaciente", paciente.getId())
+ .getResultList();
+ for(NodoPaciente nodo : nodos) {
+ if (!nodo.getNodo().getTipo().equals(Nodo.SINAL_SINTOMA))
+ continue;
+
+ str.append(" <sintoma uid=\"sintoma-" + nodo.getId() + "\" nomeCientifico=\"" + nodo.getNodo().getNome() + "\" nomePopular=\"" + nodo.getNodo().getNomeAmigavel() + "\" imagem=\"\" som=\"\" video=\"\" falaPaciente=\"" + getPerguntaNodo(nodo.getNodo().getId()) + "\">\n");
+ }
+ str.append(" </perguntar_sintoma>\n");
+
+ // Exame Físico
+ str.append(" <realiza_exame_fisico uid=\"realiza-exame-fisico-" + paciente.getId() + "\" descricao=\"Realizar Exame Físico\">\n");
+ for(NodoPaciente nodo : nodos) {
+ if (!nodo.getNodo().getTipo().equals(Nodo.EXAME_FISICO))
+ continue;
+
+ str.append(" <exame_fisico uid=\"exame-fisico-" + nodo.getId() + "\" descricao=\"" + nodo.getNodo().getNomeAmigavel() + "\" resultado=\"\" imagem=\"\" som=\"\" video=\"\">\n");
+ }
+ str.append(" </realiza_exame_fisico>\n");
+
+ // Exame Complementar
+ str.append(" <solicitar_exames_complementar uid=\"solicitar-exame-complementar-" + paciente.getId() + "\" descricao=\"Solicitar Exame Complementar\">\n");
+ for(NodoPaciente nodo : nodos) {
+ if (!nodo.getNodo().getTipo().equals(Nodo.EXAME_COMPLEMENTAR))
+ continue;
+
+ str.append(" <exame_complementar uid=\"exame-complementar-" + nodo.getId() + "\" descricao=\"" + nodo.getNodo().getNomeAmigavel() + "\" resultado=\"\" imagem=\"\" som=\"\" video=\"\">\n");
+ }
+ str.append(" </solicitar_exames_complementar>\n");
+
+ // historico
+ for(NodoPaciente nodo : nodos) {
+ if (!nodo.getNodo().getTipo().equals(Nodo.HISTORICO))
+ continue;
+
+ str.append(" <historico_medico uid=\"historico-medico-" + nodo.getId() + "\" descricao=\"Histórico Médico\" historico=\"" + nodo.getNodo().getNomeAmigavel() + "\" falaPaciente=\"" + getPerguntaNodo(nodo.getNodo().getId()) + "\" imagem=\"\" som=\"\" video=\"\">\n");
+ }
+
+
+ str.append(" </etapa>\n");
+
+ str.append(" <etapa uid=\"etapa-2\" nome=\"Diagnóstico\" sequencia=\"2\" tipo=\"diagnostico\">\n");
+ Iterator<Nodo> itDiagnosticos = em.createQuery("From Nodo where tipo=:pTipo")
+ .setParameter("pTipo", Nodo.DIAGNOSTICO)
+ .getResultList()
+ .iterator();
+ while(itDiagnosticos.hasNext()) {
+ Nodo nodo = itDiagnosticos.next();
+ str.append(" <diagnostico uid=\"diagnostico-" + nodo.getId() + "\" nome=\"" + nodo.getNomeAmigavel() + "\" />\n");
+ }
+ str.append(" </etapa>\n");
+
+ str.append(" <etapa uid=\"etapa-3\" nome=\"Conduta\" sequencia=\"3\" tipo=\"conduta\">\n");
+ Iterator<Nodo> itConduta = em.createQuery("From Nodo where tipo=:pTipo")
+ .setParameter("pTipo", Nodo.CONDUTA)
+ .getResultList()
+ .iterator();
+ while(itConduta.hasNext()) {
+ Nodo nodo = itConduta.next();
+ str.append(" <conduta uid=\"conduta-" + nodo.getId() + "\" nome=\"" + nodo.getNomeAmigavel() + "\" />\n");
+ }
+ str.append(" </etapa>\n");
+
+
+ str.append(" </ator>\n");
+
+ }
+
+
+ str.append("</caso>\n");
+ xml = str.toString();
+ addInfoMessage("Arquivo gerado!", "XML gerado com sucesso!");
+ }
+
public void adicionarPaciente() {
Rede rede = em.find(Rede.class, redePaciente);
em.getTransaction().begin();
paciente.setSexo(sexoPaciente);
paciente.setAltura(alturaPaciente);
paciente.setRede(rede);
+ paciente.setModelo(modeloPaciente);
paciente.setCaso(caso);
em.persist(paciente);
em.getTransaction().commit();
populate();
}
+ public void editarPaciente() {
+ Paciente paciente = em.find(Paciente.class, idPaciente);
+ Rede rede = em.find(Rede.class, redePaciente);
+ em.getTransaction().begin();
+ paciente.setNome(nomePaciente);
+ paciente.setIdade(idadePaciente);
+ paciente.setPeso(pesoPaciente);
+ paciente.setSexo(sexoPaciente);
+ paciente.setAltura(alturaPaciente);
+ paciente.setRede(rede);
+ paciente.setCaso(caso);
+ paciente.setModelo(modeloPaciente);
+ em.persist(paciente);
+ em.getTransaction().commit();
+ addInfoMessage("Paciente Alterado!", "Paciente alterado com sucesso!");
+ populate();
+ }
+
+ public void excluirPaciente() {
+ Paciente paciente = em.find(Paciente.class, idPaciente);
+ em.getTransaction().begin();
+
+ em.createQuery("Delete From NodoPaciente Where paciente.id=:pIDPaciente")
+ .setParameter("pIDPaciente", paciente.getId())
+ .executeUpdate();
+
+
+ em.remove(paciente);
+ em.getTransaction().commit();
+ addInfoMessage("Paciente Excluído!", "Paciente excluido com sucesso!");
+ populate();
+ }
+
public void selecionaPaciente() {
Paciente paciente = em.find(Paciente.class, Long.valueOf(getTextParameter("pIdPaciente")));
- Iterator<Nodo> it = em.createQuery("From Nodo Where rede.id=:pRedeID and tipo=:pTipo")
- .setParameter("pRedeID", paciente.getId())
- .setParameter("pTipo", Nodo.SINAL_SINTOMA)
+ idPaciente = paciente.getId();
+
+ // Lista de Nodos - Origem
+ Iterator<Nodo> itOrg = em.createQuery("From Nodo Where rede.id=:pRedeID and id not in (select nodo.id from NodoPaciente where paciente.id=:pIDPaciente)")
+ .setParameter("pRedeID", paciente.getRede().getId())
+ .setParameter("pIDPaciente", paciente.getId())
.getResultList()
.iterator();
- listaSinaisSintomas = new HashMap<String, String>();
- while(it.hasNext()) {
- Nodo nodo = it.next();
- listaSinaisSintomas.put(nodo.getNomeAmigavel(), nodo.getNome());
+
+ List<Nodo> origemSinaisSintomas = new ArrayList<Nodo>();
+ List<Nodo> destinoSinaisSintomas = new ArrayList<Nodo>();
+ List<Nodo> origemHistoricos = new ArrayList<Nodo>();
+ List<Nodo> destinoHistoricos = new ArrayList<Nodo>();
+ List<Nodo> origemExamesFisicos = new ArrayList<Nodo>();
+ List<Nodo> destinoExamesFisicos = new ArrayList<Nodo>();
+ List<Nodo> origemExamesComplementares = new ArrayList<Nodo>();
+ List<Nodo> destinoExamesComplementares = new ArrayList<Nodo>();
+
+ while(itOrg.hasNext()) {
+ Nodo nodo = itOrg.next();
+
+ if (nodo.getTipo().equals(Nodo.SINAL_SINTOMA))
+ origemSinaisSintomas.add(nodo);
+ if (nodo.getTipo().equals(Nodo.HISTORICO))
+ origemHistoricos.add(nodo);
+ if (nodo.getTipo().equals(Nodo.EXAME_FISICO))
+ origemExamesFisicos.add(nodo);
+ if (nodo.getTipo().equals(Nodo.EXAME_COMPLEMENTAR))
+ origemExamesComplementares.add(nodo);
}
+
+ // Lista de Nodos - Destino
+ Iterator<NodoPaciente> itDes = em.createQuery("From NodoPaciente Where paciente.id=:pIDPaciente")
+ .setParameter("pIDPaciente", paciente.getId())
+ .getResultList()
+ .iterator();
+ while(itDes.hasNext()) {
+ NodoPaciente nodoPaciente = itDes.next();
+ Nodo nodo = nodoPaciente.getNodo();
+ if (nodo.getTipo().equals(Nodo.SINAL_SINTOMA))
+ destinoSinaisSintomas.add(nodo);
+ if (nodo.getTipo().equals(Nodo.HISTORICO))
+ destinoHistoricos.add(nodo);
+ if (nodo.getTipo().equals(Nodo.EXAME_FISICO))
+ destinoExamesFisicos.add(nodo);
+ if (nodo.getTipo().equals(Nodo.EXAME_COMPLEMENTAR))
+ destinoExamesComplementares.add(nodo);
+ }
+
+
+ sinaisSintomas = new DualListModel<Nodo>(origemSinaisSintomas, destinoSinaisSintomas);
+ historicos = new DualListModel<Nodo>(origemHistoricos, destinoHistoricos);
+ examesFisicos = new DualListModel<Nodo>(origemExamesFisicos, destinoExamesFisicos);
+ examesComplementares = new DualListModel<Nodo>(origemExamesComplementares, destinoExamesComplementares);
+
+ UnBUtil unBUtil = UnBUtil.getInstance();
+
+ diagnosticos = unBUtil.getProbabilidadeDiagnosticos();
+ condutas = unBUtil.getProbabilidadeCondutas();
}
public Caso getCaso() {
this.listaPacientes = listaPacientes;
}
- public Map<String, String> getListaSinaisSintomas() {
- return listaSinaisSintomas;
- }
-
- public void setListaSinaisSintomas(Map<String, String> listaSinaisSintomas) {
- this.listaSinaisSintomas = listaSinaisSintomas;
- }
-
- public List<String> getSinaisSintomasSelecionados() {
- return sinaisSintomasSelecionados;
- }
-
- public void setSinaisSintomasSelecionados(List<String> sinaisSintomasSelecionados) {
- this.sinaisSintomasSelecionados = sinaisSintomasSelecionados;
- }
-
public String getRelato() {
return relato;
this.alturaPaciente = alturaPaciente;
}
-
+ public DualListModel<Nodo> getSinaisSintomas() {
+ return sinaisSintomas;
+ }
+
+ public void setSinaisSintomas(DualListModel<Nodo> sinaisSintomas) {
+ this.sinaisSintomas = sinaisSintomas;
+ }
+
+ public List<NodoBean> getDiagnosticos() {
+ return diagnosticos;
+ }
+
+ public void setDiagnosticos(List<NodoBean> diagnosticos) {
+ this.diagnosticos = diagnosticos;
+ }
+
+ public DualListModel<Nodo> getExamesComplementares() {
+ return examesComplementares;
+ }
+
+ public void setExamesComplementares(DualListModel<Nodo> examesComplementares) {
+ this.examesComplementares = examesComplementares;
+ }
+
+ public DualListModel<Nodo> getExamesFisicos() {
+ return examesFisicos;
+ }
+
+ public void setExamesFisicos(DualListModel<Nodo> examesFisicos) {
+ this.examesFisicos = examesFisicos;
+ }
+
+ public DualListModel<Nodo> getHistoricos() {
+ return historicos;
+ }
+
+ public void setHistoricos(DualListModel<Nodo> historicos) {
+ this.historicos = historicos;
+ }
+
+ public List<NodoBean> getCondutas() {
+ return condutas;
+ }
+
+ public void setCondutas(List<NodoBean> condutas) {
+ this.condutas = condutas;
+ }
+
+ public String getXml() {
+ return xml;
+ }
+
+ public void setXml(String xml) {
+ this.xml = xml;
+ }
+
+ public String getModeloPaciente() {
+ return modeloPaciente;
+ }
+
+ public void setModeloPaciente(String modeloPaciente) {
+ this.modeloPaciente = modeloPaciente;
+ }
+
}
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
-import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.servlet.http.HttpSession;
import org.ufcspa.simdecs.entities.Usuario;
import org.ufcspa.simdecs.mb.DefaultManagedBean;
-import org.ufcspa.simdecs.util.DbUtil;
/**
*
HttpSession session = getSession();
session.setAttribute("usuario", usuario);
session.setMaxInactiveInterval(-1);
+ /*
+ UnBUtil unBUtil = UnBUtil.getInstance();
+
+ ProbabilisticNode pn = unBUtil.getNodeByDescription("Photophobia");
+ unBUtil.ativarNodo(pn);
+
+ ProbabilisticNode pn2 = unBUtil.getNodeByDescription("Hemicranial Pain");
+ unBUtil.ativarNodo(pn2);
+
+ Rede rede = em.find(Rede.class, 1L);
+ for (int j = 0; j < unBUtil.getRede().getNodeCount(); j++) {
+ ProbabilisticNode nodoAtual = (ProbabilisticNode) unBUtil.getRede().getNodeAt(j);
+
+ em.getTransaction().begin();
+ Nodo nodo = new Nodo();
+ nodo.setBogus("N");
+ nodo.setRede(rede);
+ nodo.setCusto(0f);
+ nodo.setNome(nodoAtual.getDescription());
+ nodo.setNomeAmigavel(nodoAtual.getDescription());
+ nodo.setTempo(0);
+ nodo.setTipo("nao classificado");
+ em.persist(nodo);
+ em.getTransaction().commit();
+
+
+ System.out.println(nodoAtual.getDescription());
+ }
+ */
+
return "editarcasos/selecioneCaso.jsf?faces-redirect=true";
} catch (NoResultException e) {
addInfoMessage("Usuário/Senha Inválidos", "Usuário/Senha Inválidos");
private String nomeCaso;
private String textoInicial;
private String resumo;
+ private String modelo;
private List<Caso> listaCasos;
public String getNomeUsuario() {
caso.setResumo(resumo);
caso.setTextoInicial(textoInicial);
caso.setUsuario(usuario);
+ caso.setModelo(modelo);
em.persist(caso);
em.getTransaction().commit();
caso.setNome(nomeCaso);
caso.setResumo(resumo);
caso.setTextoInicial(textoInicial);
+ caso.setModelo(modelo);
em.persist(caso);
em.getTransaction().commit();
nomeCaso = caso.getNome();
textoInicial = caso.getTextoInicial();
resumo = caso.getResumo();
+ modelo = caso.getModelo();
CommandButton buttonCriar = (CommandButton) getComponentById("fEditarCaso:criar");
CommandButton buttonEditar = (CommandButton) getComponentById("fEditarCaso:editar");
public void excluirCasoClinico() {
Long id = Long.valueOf(getTextParameter("pIDCaso"));
- Caso caso = (Caso) em.createQuery("From Caso Where id=:pIDCaso")
- .setParameter("pIDCaso", id)
- .getSingleResult();
em.getTransaction().begin();
- em.remove(caso);
+
+ em.createQuery("Delete From NodoPaciente Where paciente.id in (Select id from Paciente where caso.id=:pIDCaso)")
+ .setParameter("pIDCaso", id)
+ .executeUpdate();
+
+ em.createQuery("Delete From Paciente Where caso.id=:pIDCaso")
+ .setParameter("pIDCaso", id)
+ .executeUpdate();
+
+ em.createQuery("Delete From Caso Where id=:pIDCaso")
+ .setParameter("pIDCaso", id)
+ .executeUpdate();
+
em.getTransaction().commit();
populateCasosClinicos();
addInfoMessage("Excluido!", "Caso clínico excluido com sucesso!");
this.idCaso = idCaso;
}
+ public String getModelo() {
+ return modelo;
+ }
+
+ public void setModelo(String modelo) {
+ this.modelo = modelo;
+ }
+
}
package org.ufcspa.simdecs.test;
import java.io.File;
-import unbbayes.io.xmlbif.version4.XMLBIFIO;
+import unbbayes.io.xmlbif.version6.XMLBIFIO;
+import unbbayes.prs.Node;
import unbbayes.prs.bn.ProbabilisticNetwork;
import unbbayes.prs.bn.ProbabilisticNode;
*/
public class Teste {
- /**
- * @param args
- */
public static void main(String[] args) {
- /*
- * Carregando uma rede espec’fica
- */
- ProbabilisticNetwork rede = new ProbabilisticNetwork(null);
- try {
- XMLBIFIO.loadXML(new File("/Users/maroni/teste.xml"), rede);
-
- } catch (Exception e) {
- e.printStackTrace();
- System.exit(1);
- }
-
- /*
- * Lendo um nodo espec’fico
- * Pegando um nodo. Para trabalhar com a tabela de probabilidades,
- * preciso que este nodo seja um ProbabilisticNode. Repare no typecasting
- */
-
- ProbabilisticNode nodo = (ProbabilisticNode) rede.getNode("seizure");
+ int i = (int) (1+Math.random()*10);
+ System.out.println("i: " + i);
}
}
--- /dev/null
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.ufcspa.simdecs.util;
+
+import org.ufcspa.simdecs.entities.Nodo;
+import unbbayes.prs.bn.ProbabilisticNode;
+
+/**
+ *
+ * @author maroni
+ */
+public class NodoBean {
+
+ private Nodo nodo;
+ private ProbabilisticNode probabilisticNode;
+
+ public NodoBean(Nodo nodo, ProbabilisticNode probabilisticNode) {
+ this.nodo = nodo;
+ this.probabilisticNode = probabilisticNode;
+ }
+
+ public Nodo getNodo() {
+ return nodo;
+ }
+
+ public void setNodo(Nodo nodo) {
+ this.nodo = nodo;
+ }
+
+ public ProbabilisticNode getProbabilisticNode() {
+ return probabilisticNode;
+ }
+
+ public void setProbabilisticNode(ProbabilisticNode probabilisticNode) {
+ this.probabilisticNode = probabilisticNode;
+ }
+
+ public float getProbabilidade() {
+ for (int pb = 0; pb < probabilisticNode.getStatesSize(); pb++) {
+ if (probabilisticNode.getStateAt(pb).toLowerCase().equals("yes"))
+ return probabilisticNode.getMarginalAt(pb);
+ }
+ return 0;
+ }
+
+ public float getPercentualProbabilidade() {
+ return Math.round(getProbabilidade() * 100);
+ }
+}
--- /dev/null
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.ufcspa.simdecs.util;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+import javax.persistence.EntityManager;
+import org.ufcspa.simdecs.entities.Nodo;
+import unbbayes.io.xmlbif.version6.XMLBIFIO;
+import unbbayes.prs.Node;
+import unbbayes.prs.bn.JunctionTreeAlgorithm;
+import unbbayes.prs.bn.ProbabilisticNetwork;
+import unbbayes.prs.bn.ProbabilisticNode;
+
+/**
+ *
+ * @author maroni
+ */
+public class UnBUtil {
+
+
+ private static UnBUtil unBUtil;
+ private ProbabilisticNetwork rede;
+
+ private UnBUtil() {
+ abreRede();
+ }
+
+ public final void abreRede() {
+ try {
+ // required to run unbbayes gui classes on server
+ System.setProperty("java.awt.headless", "false");
+
+ rede = new ProbabilisticNetwork(null);
+ XMLBIFIO.loadXML(new File("/Users/maroni/NetBeansProjects/SimDeCS/samples/headache.xml"), rede);
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ System.exit(1);
+ }
+
+ compilar();
+ }
+
+ public static UnBUtil getInstance() {
+ if (unBUtil == null)
+ unBUtil = new UnBUtil();
+
+ return unBUtil;
+ }
+
+ public ProbabilisticNode getNodeByName(String name) {
+ for(Node node : rede.getNodes()) {
+ if (node.getName().equals(name))
+ return (ProbabilisticNode) node;
+ }
+
+ return null;
+ }
+
+ public ProbabilisticNetwork getRede() {
+ return rede;
+ }
+
+ public void compilar() {
+ JunctionTreeAlgorithm jt = new JunctionTreeAlgorithm();
+ jt.setNet(rede);
+ jt.run();
+ }
+
+ public void setProbablidadeNodo(ProbabilisticNode pn, float sim, float nao) {
+ float likelihood[] = new float[pn.getStatesSize()]; //nr. de estados do nodo
+ likelihood[0] = sim;
+ likelihood[1] = nao;
+
+ pn.addLikeliHood(likelihood);
+ try {
+ unBUtil.getRede().updateEvidences();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void ativarNodo(ProbabilisticNode pn) {
+ setProbablidadeNodo(pn, 1f, 0.0f);
+ }
+
+ public void desativarNodo(ProbabilisticNode pn) {
+ setProbablidadeNodo(pn, 0.0f, 1f);
+ }
+
+
+ public List<NodoBean> getProbabilidadeNodos(String tipo) {
+ EntityManager em = DbUtil.getInstance().getEntityManager();
+ List<NodoBean> nodos = new ArrayList<NodoBean>();
+
+ for (int j = 0; j < rede.getNodeCount(); j++) {
+ ProbabilisticNode nodoAtual = (ProbabilisticNode) rede.getNodeAt(j);
+
+
+ Nodo nodo = (Nodo) em.createQuery("From Nodo where nome=:pNome")
+ .setParameter("pNome", nodoAtual.getName())
+ .getSingleResult();
+
+
+ if (!nodo.getTipo().equals(tipo))
+ continue;
+
+ nodos.add(new NodoBean(nodo, nodoAtual));
+ }
+
+ 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 List<NodoBean> getProbabilidadeDiagnosticos() {
+ return getProbabilidadeNodos(Nodo.DIAGNOSTICO);
+ }
+
+ public List<NodoBean> getProbabilidadeCondutas() {
+ return getProbabilidadeNodos(Nodo.CONDUTA);
+ }
+
+ public void print() {
+ for (int j = 0; j < rede.getNodeCount(); j++) {
+ ProbabilisticNode nodoAtual = (ProbabilisticNode) rede.getNodeAt(j);
+ System.out.println(nodoAtual.getName());
+
+ // Verificando a tabela de probabilidades do nodo
+ for (int pb = 0; pb < nodoAtual.getStatesSize(); pb++) {
+ System.out.println(nodoAtual.getStateAt(pb)+":"+nodoAtual.getMarginalAt(pb));
+ }
+ System.out.println("");
+ }
+ }
+}
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
- xmlns:p="http://primefaces.prime.com.tr/ui"
+ xmlns:p="http://primefaces.org/ui"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
- xmlns:ui="http://java.sun.com/jsf/facelets"
- xmlns:c="http://java.sun.com/jsp/jstl/core">
+ xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<title>SimDeCS - Selecione o Caso</title>
<link type="text/css" rel="stylesheet" href="../style.css" />
<p:panel id="pSelecionarPaciente" header="Seleção de Pacientes">
<h:form id="fPaciente">
+ <h:inputHidden value="#{editarCasoBean.idPaciente}" />
+
Bem vindo ao caso clínico "<h:outputText value="#{editarCasoBean.caso.nome}" />"!<br/><br/>
Selecione abaixo um dos pacientes ou clique em "Adicionar novo paciente" para montagem do caso clínico.
- <br/><br/>
- <p:commandLink value="Adicionar novo paciente" oncomplete="pEditarPaciente.show()" actionListener="#{editarCasoBean.prepareAdicionarPaciente()}" />
+ <br/>
- <ui:repeat id="listaPacientes" value="#{editarCasoBean.listaPacientes}" var="paciente">
- <table border="0">
- <tr>
+ <table border="0">
+ <tr>
+ <ui:repeat id="listaPacientes" value="#{editarCasoBean.listaPacientes}" var="paciente">
<td align="center">
<p:commandLink update="fMontarCaso" oncomplete="pMontarCaso.show();" actionListener="#{editarCasoBean.selecionaPaciente()}">
<f:param name="pIdPaciente" value="#{paciente.id}" />
<p:commandLink update="fMontarCaso" value="#{paciente.nome}" oncomplete="pMontarCaso.show();" actionListener="#{editarCasoBean.selecionaPaciente()}">
<f:param name="pIdPaciente" value="#{paciente.id}" />
</p:commandLink>
+ <br/>
+ <p:commandLink update="pEditarPaciente" value="(editar)" oncomplete="pEditarPaciente.show();" actionListener="#{editarCasoBean.prepareEditarPaciente()}">
+ <f:param name="pIdPaciente" value="#{paciente.id}" />
+ </p:commandLink>
</td>
- </tr>
- </table>
- </ui:repeat>
+ </ui:repeat>
+ <td align="center">
+ <p:commandLink oncomplete="pEditarPaciente.show()" update="pEditarPaciente" actionListener="#{editarCasoBean.prepareAdicionarPaciente()}">
+ <img src="../img/patientNew.png" border="0"/>
+ </p:commandLink>
+ <br/>
+ <p:commandLink value="Adicionar novo paciente" oncomplete="pEditarPaciente.show()" actionListener="#{editarCasoBean.prepareAdicionarPaciente()}" />
+ </td>
+ </tr>
+ </table>
+ <br/><br/>
+ <p:inputTextarea id="xmlText" value="#{editarCasoBean.xml}" rows="18" autoResize="false" cols="200"/>
+ <br/>
+ <p:commandButton id="gerarXML" update="xmlText, messageGrow" action="#{editarCasoBean.gerarXML()}" value="Gerar XML" />
+
+ <p:commandButton id="voltar" value="Voltar" immediate="true" action="#{editarCasoBean.voltar()}" />
+ <br/>
</h:form>
</p:panel>
<br/>
- <p:dialog id="pMontarCaso" modal="true" width="800" height="500" header="Montagem do Caso" widgetVar="pMontarCaso">
+ <p:dialog id="pMontarCaso" modal="true" width="950" height="630" header="Montagem do Caso" widgetVar="pMontarCaso">
<h:form id="fMontarCaso">
- <table border="0" width="100%">
- <tr>
- <th>Relato Inicial do Paciente</th>
- </tr>
- <tr>
- <td width="100%">
- <p:inputTextarea value="#{editarCasoBean.relato}" rows="4" style="width:100%;"/>
- </td>
- </tr>
- <tr>
- <th>Sinais e Sintomas apresentados</th>
- </tr>
- <tr>
- <td width="100%">
- <h:selectManyCheckbox value="#{editarCasoBean.sinaisSintomasSelecionados}" >
- <f:selectItems value="#{editarCasoBean.listaSinaisSintomas}" />
- </h:selectManyCheckbox>
- </td>
- </tr>
- </table>
+ <p:panel id="pMontaInvestigacao" widgetVar="pMontaInvestigacao">
+ <table border="0" width="95%">
+ <tr>
+ <th colspan="2">Relato Inicial do Paciente</th>
+ </tr>
+ <tr>
+ <td width="100%" colspan="2">
+ <p:inputTextarea value="#{editarCasoBean.relato}" rows="4" style="width:891px; height: 40px;"/>
+ </td>
+ </tr>
+ <tr>
+ <th align="left">Sinais e Sintomas apresentados</th>
+ <th align="left">Históricos</th>
+ </tr>
+ <tr>
+ <td width="100%">
+ <p:pickList id="selectSinalSintoma" value="#{editarCasoBean.sinaisSintomas}"
+ var="sinalSintoma"
+ itemValue="#{sinalSintoma.nome}"
+ itemLabel="#{sinalSintoma.nomeAmigavel}"
+ onTransfer="document.getElementById('fMontarCaso:atualizarRede').click();"
+ />
+ </td>
+ <td width="100%">
+ <p:pickList id="selectHistorico" value="#{editarCasoBean.historicos}"
+ var="historico"
+ itemValue="#{historico.nome}"
+ itemLabel="#{historico.nomeAmigavel}"
+ onTransfer="document.getElementById('fMontarCaso:atualizarRede').click();"
+ />
+ </td>
+ </tr>
+ <tr>
+ </tr>
+ <tr>
+ <th align="left">Exames Físicos</th>
+ <th align="left">Exames Complementares</th>
+ </tr>
+ <tr>
+ <td width="100%">
+ <p:pickList id="selectExameFisico" value="#{editarCasoBean.examesFisicos}"
+ var="exameFisico"
+ itemValue="#{exameFisico.nome}"
+ itemLabel="#{exameFisico.nomeAmigavel}"
+ onTransfer="document.getElementById('fMontarCaso:atualizarRede').click();"
+ />
+ </td>
+ <td width="100%">
+ <p:pickList id="selectExameComplementar" value="#{editarCasoBean.examesComplementares}"
+ var="exameComplementar"
+ itemValue="#{exameComplementar.nome}"
+ itemLabel="#{exameComplementar.nomeAmigavel}"
+ onTransfer="document.getElementById('fMontarCaso:atualizarRede').click();"
+ />
+ </td>
+ </tr>
+ </table>
+ </p:panel>
+ <br/>
+
+ <p:panel id="pResultadoRede" widgetVar="pResultadoRede">
+ <table width="100%">
+ <tr>
+ <th align="left"><h:outputText rendered="#{editarCasoBean.diagnosticos.size()>0}" value="Diagnósticos" /></th>
+ <th align="left"><h:outputText rendered="#{editarCasoBean.diagnosticos.size()>0}" value="Condutas" /></th>
+ </tr>
+ <tr>
+ <td width="50%">
+ <table>
+ <ui:repeat value="#{editarCasoBean.diagnosticos}" var="diagnostico" >
+ <tr>
+ <td><h:outputText value="#{diagnostico.nodo.nomeAmigavel}"/></td>
+ <td><h:outputText value="#{diagnostico.percentualProbabilidade}" />%</td>
+ </tr>
+ </ui:repeat>
+ </table>
+ </td>
+ <td width="50%">
+ <table>
+ <ui:repeat value="#{editarCasoBean.condutas}" var="conduta">
+ <tr>
+ <td><h:outputText value="#{conduta.nodo.nomeAmigavel}"/></td>
+ <td><h:outputText value="#{conduta.percentualProbabilidade}" />%</td>
+ </tr>
+ </ui:repeat>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </p:panel>
+ <center>
+ <p:commandButton id="salvarCaso" update="messageGrow" oncomplete="pMontarCaso.hide();" action="#{editarCasoBean.salvarCaso()}" value="Salvar">
+ <f:param name="pIdPaciente" value="#{editarCasoBean.idPaciente}" />
+ </p:commandButton>
+
+ <p:commandButton onclick="pMontarCaso.hide();" value="Cancelar" type="button" />
+ </center>
+
+ <p:commandButton id="atualizarRede" style="visibility: hidden;" update="pResultadoRede, messageGrow" action="#{editarCasoBean.processaRede()}" value="Atualizar" />
</h:form>
</p:dialog>
-
+
<p:dialog id="pEditarPaciente" widgetVar="pEditarPaciente" header="Paciente" modal="true" width="500" height="400">
<h:form id="fEditarPaciente">
+ <h:inputHidden value="#{editarCasoBean.idPaciente}" />
<table border="0" width="100%">
<tr>
<th align="left">Nome:</th>
</tr>
<tr>
- <td><h:inputText value="#{editarCasoBean.nomePaciente}" style="width:100%" /></td>
+ <td>
+ <h:inputText value="#{editarCasoBean.nomePaciente}" style="width:100%" required="true" />
+ </td>
</tr>
<tr>
<th align="left">Idade</th>
</tr>
<tr>
- <td><h:inputText value="#{editarCasoBean.idadePaciente}" style="width:20%" /></td>
+ <td>
+ <h:inputText value="#{editarCasoBean.idadePaciente}" style="width:20%" required="true" />
+ </td>
</tr>
<tr>
<th align="left">Peso</th>
</tr>
<tr>
- <td><h:inputText value="#{editarCasoBean.pesoPaciente}" style="width:20%" /></td>
+ <td><h:inputText value="#{editarCasoBean.pesoPaciente}" style="width:20%" required="true" /></td>
</tr>
<tr>
<th align="left">Altura</th>
</tr>
<tr>
- <td><h:inputText value="#{editarCasoBean.alturaPaciente}" style="width:20%" /></td>
+ <td><h:inputText value="#{editarCasoBean.alturaPaciente}" style="width:20%" required="true" /></td>
</tr>
<tr>
<th align="left">Assunto Clínico</th>
</h:selectOneMenu>
</td>
</tr>
+ <tr>
+ <th align="left">Modelo</th>
+ </tr>
+ <tr>
+ <td>
+ <h:selectOneMenu value="#{editarCasoBean.modeloPaciente}" required="true">
+ <f:selectItem itemValue="homem2030" itemLabel="Homem" />
+ <f:selectItem itemValue="mulher4050" itemLabel="Mulher" />
+ <f:selectItem itemValue="crianca510" itemLabel="Criança" />
+ </h:selectOneMenu>
+ </td>
+ </tr>
</table>
<p:commandButton id="criar" update="pSelecionarPaciente, listaPacientes, messageGrow" oncomplete="pEditarPaciente.hide();" action="#{editarCasoBean.adicionarPaciente()}" value="Criar o novo paciente" />
+ <p:commandButton id="editar" update="pSelecionarPaciente, listaPacientes, messageGrow" oncomplete="pEditarPaciente.hide();" action="#{editarCasoBean.editarPaciente()}" value="Salvar" />
+
+ <p:commandButton id="excluir" update="pSelecionarPaciente, listaPacientes, messageGrow" oncomplete="pEditarPaciente.hide();" action="#{editarCasoBean.excluirPaciente()}" value="Excluir" />
+
<p:commandButton onclick="pEditarPaciente.hide();" value="Cancelar" type="button" />
</h:form>
<ul>
<ui:repeat id="listaCasos" var="caso" value="#{selecioneCasoBean.listaCasos}">
<li>
- <p:commandLink update=":fEditarCaso" oncomplete="dialogEditarCaso.show()" actionListener="#{selecioneCasoBean.prepararEditarCasoClinico()}" value="#{caso.nome}" title="Editar Caso Clínico">
+ <p:commandLink update="fEditarCaso" oncomplete="dialogEditarCaso.show()" actionListener="#{selecioneCasoBean.prepararEditarCasoClinico()}" value="#{caso.nome}" title="Editar Caso Clínico">
<f:param name="pIDCaso" value="#{caso.id}" />
</p:commandLink>
</li>
</ui:repeat>
<li>
- <p:commandLink oncomplete="dialogEditarCaso.show();" actionListener="#{selecioneCasoBean.preparaNovoCaso()}" update=":fEditarCaso" >
+ <p:commandLink oncomplete="dialogEditarCaso.show();" actionListener="#{selecioneCasoBean.preparaNovoCaso()}" update="fEditarCaso" >
Criar um novo caso clínico
</p:commandLink>
</li>
<table border="0" width="100%">
<tr>
<th align="left">Nome do Caso</th>
+ <th align="left">Cenário</th>
</tr>
<tr>
- <td><h:inputText value="#{selecioneCasoBean.nomeCaso}" style="width:100%" /></td>
+ <td><h:inputText value="#{selecioneCasoBean.nomeCaso}" style="width:98%" /></td>
+ <td>
+ <p:selectOneMenu value="#{selecioneCasoBean.modelo}" style="width:100%" >
+ <f:selectItem itemValue="cenario_casa" itemLabel="Casa" />
+ <f:selectItem itemValue="cenario_consultorio" itemLabel="Consultório" />
+ </p:selectOneMenu>
+ </td>
</tr>
<tr>
- <th align="left">Resumo</th>
+ <th align="left" colspan="2">Resumo</th>
</tr>
<tr>
- <td><h:inputTextarea value="#{selecioneCasoBean.resumo}" rows="5" style="width:100%" /></td>
- </tr>
+ <td colspan="2"><h:inputTextarea value="#{selecioneCasoBean.resumo}" rows="5" style="width:100%" /></td>
+ </tr>
<tr>
- <th align="left">Texto Inicial</th>
+ <th align="left" colspan="2">Texto Inicial</th>
</tr>
<tr>
- <td><h:inputTextarea value="#{selecioneCasoBean.textoInicial}" rows="5" style="width:100%" /></td>
+ <td colspan="2"><h:inputTextarea value="#{selecioneCasoBean.textoInicial}" rows="5" style="width:100%" /></td>
</tr>
</table>
<center>
- <p:commandButton id="criar" action="#{selecioneCasoBean.criarNovoCaso()}" value="Criar o novo caso" />
+ <p:commandButton id="criar" action="#{selecioneCasoBean.criarNovoCaso()}" oncomplete="dialogEditarCaso.hide();" value="Criar o novo caso" />
- <p:commandButton id="editar" action="#{selecioneCasoBean.editarCaso()}" value="Editar o Caso" ajax="false" />
+ <p:commandButton id="editar" action="#{selecioneCasoBean.editarCaso()}" oncomplete="dialogEditarCaso.hide();" value="Editar o Caso" ajax="false" />
<p:commandButton onclick="dialogEditarCaso.hide();" value="Cancelar" type="button" />
- <p:commandButton id="excluir" update=":fSelecionaCaso:listaCasos" actionListener="#{selecioneCasoBean.excluirCasoClinico()}" value="Excluir" title="Excluir Caso Clínico" ajax="false">
+ <p:commandButton id="excluir" update="listaCasos" oncomplete="dialogEditarCaso.hide();" actionListener="#{selecioneCasoBean.excluirCasoClinico()}" value="Excluir" title="Excluir Caso Clínico" ajax="false">
<f:param name="pIDCaso" value="#{selecioneCasoBean.idCaso}" />
</p:commandButton>
</center>
.site-title{
font-size: 40px;
color: gray;
-}
\ No newline at end of file
+}
+
+.ui-picklist .ui-picklist-list {
+ list-style-type: none;
+ margin: 0;
+ padding: 0;
+ overflow:auto;
+ height:125px;
+ width:200px;
+}
+
+.ui-picklist .ui-picklist-list li {
+ margin: 1px;
+ padding: 2px;
+}
+
+.ui-picklist .ui-picklist-button {
+ display:block;
+ margin-bottom:0.3em;
+}
+
+.ui-picklist .ui-picklist-button.ui-button-text-icon-primary {
+ width:100%;
+}
+
+.ui-picklist .ui-picklist-item {
+ cursor:pointer;
+}