Correção de bug na chamada a flush em MetodoIniciaCaso
authormaroni <maroni@192.168.1.103>
Sun, 27 May 2012 22:02:51 +0000 (19:02 -0300)
committermaroni <maroni@192.168.1.103>
Sun, 27 May 2012 22:02:51 +0000 (19:02 -0300)
src/java/org/ufcspa/simdecs/comunicacao/MetodoGravaLog.java
src/java/org/ufcspa/simdecs/mediador/LogExecucao.java
web/login.xhtml

index 8fdd8ad..5dcceff 100644 (file)
@@ -6,6 +6,7 @@ package org.ufcspa.simdecs.comunicacao;
 
 import java.io.PrintWriter;
 import java.util.Date;
+import java.util.Iterator;
 import javax.persistence.EntityManager;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -28,13 +29,24 @@ public class MetodoGravaLog extends BaseComunicacao {
         return Long.parseLong(id);
     }
     
-    private String registraLog(EntityManager em, SessaoUsuario sessaoUsuario, String pUID, boolean desmarcado) {
+    
+    private void registraLog(EntityManager em, SessaoUsuario sessaoUsuario, String etapa, Nodo nodo, Paciente paciente, boolean desmarcado, String tipoEvento) {
+            
         
-        String taticaPedagogica=null;
-
-        // Sintoma vindo de NodoPaciente
-        if (pUID.toLowerCase().startsWith("sintoma-np-")) {
-            NodoPaciente nodoPaciente = em.find(NodoPaciente.class, getIdFromUID(pUID, "sintoma-np-"));
+            if (etapa.equals(Log.ETAPA_INVESTIGACAO)) { 
+                Iterator itLogs = em.createQuery("From Log where sessaoUsuario.id=:pIdSessao and paciente.id=:pIdPaciente and etapa=:pEtapa and tipo.id=:pTipo and (nodo.id=:pIdNodo or :pIdNodo is null) and desmarcado=:pDesmarcado")
+                                    .setParameter("pIdSessao", sessaoUsuario.getId())
+                                    .setParameter("pIdPaciente", paciente.getId())
+                                    .setParameter("pEtapa", etapa)
+                                    .setParameter("pIdNodo", nodo.getId())
+                                    .setParameter("pDesmarcado", desmarcado)
+                                    .setParameter("pTipo", tipoEvento)
+                                    .getResultList().iterator();
+
+                while (itLogs.hasNext()) {
+                    return;
+                }
+            }
 
             if (!em.getTransaction().isActive())
                 em.getTransaction().begin();
@@ -43,16 +55,28 @@ public class MetodoGravaLog extends BaseComunicacao {
             log.setSessaoUsuario(sessaoUsuario);
             log.setCaso(sessaoUsuario.getCaso());
             log.setData(new Date());
-            log.setEtapa(Log.ETAPA_INVESTIGACAO);
-            log.setNodo(nodoPaciente.getNodo());
+            log.setEtapa(etapa);
+            log.setNodo(nodo);
             log.setDesmarcado(desmarcado);
-            log.setPaciente(nodoPaciente.getPaciente());
-            log.setRede(nodoPaciente.getPaciente().getRede());
-            log.setTipo(em.find(TipoEventoLog.class, TipoEventoLog.PERGUNTA_SINAL_SINTOMA));
+            log.setPaciente(paciente);
+            log.setRede(paciente.getRede());
+            log.setTipo(em.find(TipoEventoLog.class, tipoEvento));
             em.persist(log);
             
             em.getTransaction().commit();
-            
+        
+    }
+    
+    private String registraLog(EntityManager em, SessaoUsuario sessaoUsuario, String pUID, boolean desmarcado) {
+        
+        String taticaPedagogica=null;
+
+        // Sintoma vindo de NodoPaciente
+        if (pUID.toLowerCase().startsWith("sintoma-np-")) {
+            NodoPaciente nodoPaciente = em.find(NodoPaciente.class, getIdFromUID(pUID, "sintoma-np-"));
+
+            registraLog(em, sessaoUsuario, Log.ETAPA_INVESTIGACAO, nodoPaciente.getNodo(), nodoPaciente.getPaciente(), desmarcado, TipoEventoLog.PERGUNTA_SINAL_SINTOMA);
+
             if (nodoPaciente.getNodo().getTaticaPedagogica() != null && nodoPaciente.getNodo().getTaticaPedagogica() != "")
                 taticaPedagogica = nodoPaciente.getNodo().getTaticaPedagogica();
         }
@@ -62,47 +86,17 @@ public class MetodoGravaLog extends BaseComunicacao {
             Nodo nodo = em.find(Nodo.class, getIdFromUID(pUID, "sintoma-nd-"));
             Paciente paciente = em.find(Paciente.class, getIdPacienteFromUID(pUID));
             
-            if (!em.getTransaction().isActive())
-                em.getTransaction().begin();
+            registraLog(em, sessaoUsuario, Log.ETAPA_INVESTIGACAO, nodo, paciente, desmarcado, TipoEventoLog.PERGUNTA_SINAL_SINTOMA);
 
-            Log log = new Log();
-            log.setSessaoUsuario(sessaoUsuario);
-            log.setCaso(sessaoUsuario.getCaso());
-            log.setDesmarcado(desmarcado);
-            log.setData(new Date());
-            log.setEtapa(Log.ETAPA_INVESTIGACAO);
-            log.setNodo(nodo);
-            log.setRede(paciente.getRede());
-            log.setPaciente(paciente);
-            log.setTipo(em.find(TipoEventoLog.class, TipoEventoLog.PERGUNTA_SINAL_SINTOMA));
-            em.persist(log);
-            
             if (nodo.getTaticaPedagogica() != null && nodo.getTaticaPedagogica() != "")
                 taticaPedagogica = nodo.getTaticaPedagogica();
-
-            em.getTransaction().commit();            
         }
 
         // Exame físico vindo de NodoPaciente
         if (pUID.toLowerCase().startsWith("exame-fisico-np-")) {
             NodoPaciente nodoPaciente = em.find(NodoPaciente.class, getIdFromUID(pUID, "exame-fisico-np-"));
 
-            if (!em.getTransaction().isActive())
-                em.getTransaction().begin();
-
-            Log log = new Log();
-            log.setDesmarcado(desmarcado);
-            log.setSessaoUsuario(sessaoUsuario);
-            log.setCaso(sessaoUsuario.getCaso());
-            log.setData(new Date());
-            log.setEtapa(Log.ETAPA_INVESTIGACAO);
-            log.setNodo(nodoPaciente.getNodo());
-            log.setPaciente(nodoPaciente.getPaciente());
-            log.setRede(nodoPaciente.getPaciente().getRede());
-            log.setTipo(em.find(TipoEventoLog.class, TipoEventoLog.SOLICITA_EXAME_FISICO));
-            em.persist(log);
-            
-            em.getTransaction().commit();
+            registraLog(em, sessaoUsuario, Log.ETAPA_INVESTIGACAO, nodoPaciente.getNodo(), nodoPaciente.getPaciente(), desmarcado, TipoEventoLog.SOLICITA_EXAME_FISICO);
 
             if (nodoPaciente.getNodo().getTaticaPedagogica() != null && nodoPaciente.getNodo().getTaticaPedagogica() != "")
                 taticaPedagogica = nodoPaciente.getNodo().getTaticaPedagogica();
@@ -113,22 +107,7 @@ public class MetodoGravaLog extends BaseComunicacao {
         if (pUID.toLowerCase().startsWith("exame-complementar-np-")) {
             NodoPaciente nodoPaciente = em.find(NodoPaciente.class, getIdFromUID(pUID, "exame-complementar-np-"));
 
-            if (!em.getTransaction().isActive())
-                em.getTransaction().begin();
-
-            Log log = new Log();
-            log.setDesmarcado(desmarcado);
-            log.setSessaoUsuario(sessaoUsuario);
-            log.setCaso(sessaoUsuario.getCaso());
-            log.setData(new Date());
-            log.setEtapa(Log.ETAPA_INVESTIGACAO);
-            log.setNodo(nodoPaciente.getNodo());
-            log.setPaciente(nodoPaciente.getPaciente());
-            log.setRede(nodoPaciente.getPaciente().getRede());
-            log.setTipo(em.find(TipoEventoLog.class, TipoEventoLog.SOLICITA_EXAME_COMPLEMENTAR));
-            em.persist(log);
-            
-            em.getTransaction().commit();
+            registraLog(em, sessaoUsuario, Log.ETAPA_INVESTIGACAO, nodoPaciente.getNodo(), nodoPaciente.getPaciente(), desmarcado, TipoEventoLog.SOLICITA_EXAME_COMPLEMENTAR);
 
             if (nodoPaciente.getNodo().getTaticaPedagogica() != null && nodoPaciente.getNodo().getTaticaPedagogica() != "")
                 taticaPedagogica = nodoPaciente.getNodo().getTaticaPedagogica();
@@ -137,21 +116,7 @@ public class MetodoGravaLog extends BaseComunicacao {
         if (pUID.toLowerCase().startsWith("historico-medico-")) {
             Paciente paciente = em.find(Paciente.class, getIdPacienteFromUID(pUID));
 
-            if (!em.getTransaction().isActive())
-                em.getTransaction().begin();
-
-            Log log = new Log();
-            log.setDesmarcado(desmarcado);
-            log.setSessaoUsuario(sessaoUsuario);
-            log.setCaso(sessaoUsuario.getCaso());
-            log.setData(new Date());
-            log.setEtapa(Log.ETAPA_INVESTIGACAO);
-            log.setPaciente(paciente);
-            log.setRede(paciente.getRede());
-            log.setTipo(em.find(TipoEventoLog.class, TipoEventoLog.PERGUNTA_HISTORICO));
-            em.persist(log);
-            
-            em.getTransaction().commit();
+            registraLog(em, sessaoUsuario, Log.ETAPA_INVESTIGACAO, null, paciente, desmarcado, TipoEventoLog.PERGUNTA_HISTORICO);
         }
 
         // Diagnostico
@@ -159,22 +124,8 @@ public class MetodoGravaLog extends BaseComunicacao {
             Nodo nodo = em.find(Nodo.class, getIdFromUID(pUID, "diagnostico-"));
             Paciente paciente = em.find(Paciente.class, getIdPacienteFromUID(pUID));
 
-            if (!em.getTransaction().isActive())
-                em.getTransaction().begin();
+            registraLog(em, sessaoUsuario, Log.ETAPA_DIAGNOSTICO, nodo, paciente, desmarcado, TipoEventoLog.SELECIONA_DIAGNOSTICO);
 
-            Log log = new Log();
-            log.setDesmarcado(desmarcado);
-            log.setSessaoUsuario(sessaoUsuario);
-            log.setCaso(sessaoUsuario.getCaso());
-            log.setData(new Date());
-            log.setEtapa(Log.ETAPA_DIAGNOSTICO);
-            log.setNodo(nodo);
-            log.setPaciente(paciente);
-            log.setRede(paciente.getRede());
-            log.setTipo(em.find(TipoEventoLog.class, TipoEventoLog.SELECIONA_DIAGNOSTICO));
-            em.persist(log);
-            
-            em.getTransaction().commit();
             if (nodo.getTaticaPedagogica() != null && nodo.getTaticaPedagogica() != "")
                 taticaPedagogica = nodo.getTaticaPedagogica();
         }
@@ -184,22 +135,8 @@ public class MetodoGravaLog extends BaseComunicacao {
             Nodo nodo = em.find(Nodo.class, getIdFromUID(pUID, "conduta-"));
             Paciente paciente = em.find(Paciente.class, getIdPacienteFromUID(pUID));
 
-            if (!em.getTransaction().isActive())
-                em.getTransaction().begin();
+            registraLog(em, sessaoUsuario, Log.ETAPA_CONDUTA, nodo, paciente, desmarcado, TipoEventoLog.SELECIONA_CONDUTA);
 
-            Log log = new Log();
-            log.setSessaoUsuario(sessaoUsuario);
-            log.setDesmarcado(desmarcado);
-            log.setCaso(sessaoUsuario.getCaso());
-            log.setData(new Date());
-            log.setEtapa(Log.ETAPA_CONDUTA);
-            log.setNodo(nodo);
-            log.setPaciente(paciente);
-            log.setRede(paciente.getRede());
-            log.setTipo(em.find(TipoEventoLog.class, TipoEventoLog.SELECIONA_CONDUTA));
-            em.persist(log);
-            
-            em.getTransaction().commit();
             if (nodo.getTaticaPedagogica() != null && nodo.getTaticaPedagogica() != "")
                 taticaPedagogica = nodo.getTaticaPedagogica();
         }
index f9462b1..1983477 100644 (file)
@@ -179,8 +179,10 @@ public class LogExecucao {
             if (log.getTipo().getId().equals(TipoEventoLog.SELECIONA_CONDUTA)) {
                 if (log.isDesmarcado())
                     condutas.remove(log.getNodo().getId());
-                else
-                    condutas.put(log.getNodo().getId(), log.getNodo());
+                else {
+                    if (!condutas.containsKey(log.getNodo().getId()))
+                        condutas.put(log.getNodo().getId(), log.getNodo());                    
+                }
             }
         }
 
index 73097c3..43814e2 100644 (file)
@@ -35,7 +35,7 @@
             <a href="simulador/index.html">Acesso ao Simulador</a>
             <br/>
             <br/>
-            <h:outputText value="Versão 4.0.5" />
+            <h:outputText value="Versão 4.0.6" />
         </center>
     </h:body>
 </html>