Implementação dos registros de Log de eventos!
[simdecs2.git] / src / java / org / ufcspa / simdecs / comunicacao / MetodoIniciaCaso.java
index 98c204d..d72b4da 100644 (file)
@@ -4,14 +4,11 @@
  */
 package org.ufcspa.simdecs.comunicacao;
 
-import java.io.IOException;
 import java.io.PrintWriter;
 import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 import javax.persistence.EntityManager;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import org.ufcspa.simdecs.entities.*;
@@ -24,7 +21,7 @@ import unbbayes.prs.bn.ProbabilisticNode;
  *
  * @author maroni
  */
-public class MetodoIniciaCaso extends HttpServlet {
+public class MetodoIniciaCaso extends BaseComunicacao {
 
     private String getPerguntaNodo(Long idNodo) {
         EntityManager em = DbUtil.getInstance().getEntityManager();
@@ -118,179 +115,127 @@ public class MetodoIniciaCaso extends HttpServlet {
         return "";
     }
 
-    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
-            throws ServletException, IOException {
+    @Override
+    protected void executaServico(EntityManager em, HttpServletRequest request, HttpServletResponse response, PrintWriter out) throws Exception
+    {
         response.setContentType("text/html;charset=UTF-8");
-        PrintWriter out = response.getWriter();
-        try {
-            EntityManager em = DbUtil.getInstance().getEntityManager();
-            Caso caso = em.find(Caso.class, Long.parseLong(request.getParameter("idcaso")));
+        Caso caso = em.find(Caso.class, Long.parseLong(request.getParameter("idcaso")));
 
-            
-            if (!em.getTransaction().isActive())
-                em.getTransaction().begin();
-            
-            // Cria sessao
-            SessaoUsuario sessaoUsuario = new SessaoUsuario();
-            sessaoUsuario.setData(new Date());            
-            sessaoUsuario.setCaso(caso);
-            em.persist(sessaoUsuario);
-            em.flush();
-            
-            // Logo inicio do caso.
-            Log log = new Log();
-            log.setTipo(em.find(TipoEventoLog.class, TipoEventoLog.INICIO_CASO));
-            log.setCaso(caso);
-            log.setData(new Date());
-            log.setSessaoUsuario(sessaoUsuario);
-            
-            
-            em.persist(log);
-                    
-            
-            em.getTransaction().commit();
-            
-            
-            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();
-            while(itPac.hasNext()) {
-                Paciente paciente = itPac.next();
-                out.println("    <ator uid=\"paciente-" + paciente.getId() + "\" tipo=\"paciente\" nome=\"" + paciente.getNome() + "\" modelo=\"" + paciente.getModelo() + "\" idade=\"" + paciente.getIdade() + "\" peso=\"" + paciente.getPeso() + "\" altura=\"" + paciente.getAltura() + "\" >");
-
-                out.println("        <etapa uid=\"etapa-1\" nome=\"Investigação\" sequencia=\"1\" tipo=\"investigacao\">");
-
-                // Sinais e sintomas
-                out.println("            <perguntar_sintoma uid=\"perguntar-sintoma-" + paciente.getId() + "\" descricao=\"Perguntar Sinais/Sintomas\">");                     
-                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) && !nodo.getNodo().getTipo().equals(Nodo.HISTORICO))
-                        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)  + "\" />");
-                }
 
-                // Sinais e sintomas inativos
-                List<Nodo> nodosNaoSelecionados = em.createQuery("From Nodo Where rede.id=:pIDRede and id not in (Select nodo.id from NodoPaciente Where paciente.id=:pIDPaciente)")
-                                             .setParameter("pIDRede", paciente.getRede().getId())                
-                                             .setParameter("pIDPaciente", paciente.getId())                
-                                             .getResultList();
-                for(Nodo nodo : nodosNaoSelecionados) {
-                    if (!nodo.getTipo().equals(Nodo.SINAL_SINTOMA) && !nodo.getTipo().equals(Nodo.HISTORICO))
-                        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)  + "\" />");
-                }
-                
-                out.println("            </perguntar_sintoma>");
+        if (!em.getTransaction().isActive()) {
+            em.getTransaction().begin();
+        }
 
-                // Exame Físico
-                out.println("            <realiza_exame_fisico uid=\"realiza-exame-fisico-" + paciente.getId() + "\" descricao=\"Realizar Exame Físico\">");
-                for(NodoPaciente nodo : nodos) {
-                    if (!nodo.getNodo().getTipo().equals(Nodo.EXAME_FISICO))
-                        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=\"\" />");
-                }
-                out.println("            </realiza_exame_fisico>");
+        // Cria sessao
+        SessaoUsuario sessaoUsuario = new SessaoUsuario();
+        sessaoUsuario.setData(new Date());
+        sessaoUsuario.setCaso(caso);
+        em.persist(sessaoUsuario);
+        em.flush();
 
-                // Exame Complementar
-                out.println("            <solicitar_exames_complementar uid=\"solicitar-exame-complementar-" + paciente.getId() + "\" descricao=\"Solicitar Exame Complementar\">\"");
-                for(NodoPaciente nodo : nodos) {
-                    if (!nodo.getNodo().getTipo().equals(Nodo.EXAME_COMPLEMENTAR))
-                        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=\"\" />");
+        // Logo inicio do caso.
+        Log log = new Log();
+        log.setTipo(em.find(TipoEventoLog.class, TipoEventoLog.INICIO_CASO));
+        log.setCaso(caso);
+        log.setData(new Date());
+        log.setSessaoUsuario(sessaoUsuario);
+
+
+        em.persist(log);
+
+
+        em.getTransaction().commit();
+
+
+        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();
+        while (itPac.hasNext()) {
+            Paciente paciente = itPac.next();
+            out.println("    <ator uid=\"" + paciente.getId() + "\" tipo=\"paciente\" nome=\"" + paciente.getNome() + "\" modelo=\"" + paciente.getModelo() + "\" idade=\"" + paciente.getIdade() + "\" peso=\"" + paciente.getPeso() + "\" altura=\"" + paciente.getAltura() + "\" >");
+
+            out.println("        <etapa uid=\"etapa-1\" nome=\"Investigação\" sequencia=\"1\" tipo=\"investigacao\">");
+
+            // Sinais e sintomas
+            out.println("            <perguntar_sintoma uid=\"perguntar-sintoma-" + paciente.getId() + "\" descricao=\"Perguntar Sinais/Sintomas\">");
+            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) && !nodo.getNodo().getTipo().equals(Nodo.HISTORICO)) {
+                    continue;
                 }
-                out.println("            </solicitar_exames_complementar>");
-/*
-                // historico
-                for(NodoPaciente nodo : nodos) {
-                    if (!nodo.getNodo().getTipo().equals(Nodo.HISTORICO))
-                        continue;
-                
-                    out.println("        <historico_medico uid=\"historico-medico-" + nodo.getId() + "\" dependencia=\"" + getDependencia(nodo.getNodo().getId()) + "\" descricao=\"Histórico Médico\" historico=\"" + nodo.getNodo().getNomeAmigavel() + "\" imagem=\"\" som=\"\" video=\"\" />");
+
+                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) + "\" />");
+            }
+
+            // Sinais e sintomas inativos
+            List<Nodo> nodosNaoSelecionados = em.createQuery("From Nodo Where rede.id=:pIDRede and id not in (Select nodo.id from NodoPaciente Where paciente.id=:pIDPaciente)").setParameter("pIDRede", paciente.getRede().getId()).setParameter("pIDPaciente", paciente.getId()).getResultList();
+            for (Nodo nodo : nodosNaoSelecionados) {
+                if (!nodo.getTipo().equals(Nodo.SINAL_SINTOMA) && !nodo.getTipo().equals(Nodo.HISTORICO)) {
+                    continue;
                 }
-*/
-                out.println("        <historico_medico uid=\"historico-medico-1" + ":paciente-" + paciente.getId() + "\" dependencia=\"\" descricao=\"Histórico Médico\" historico=\"" + paciente.getHistorico() + "\" imagem=\"\" som=\"\" video=\"\" />");
-            
-            
-                out.println("        </etapa>");
-            
-                out.println("        <etapa uid=\"etapa-2\" nome=\"Diagnóstico\" sequencia=\"2\" tipo=\"diagnostico\">");
-                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())  + "\" />");
+
+                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) + "\" />");
+            }
+
+            out.println("            </perguntar_sintoma>");
+
+            // Exame Físico
+            out.println("            <realiza_exame_fisico uid=\"realiza-exame-fisico-" + paciente.getId() + "\" descricao=\"Realizar Exame Físico\">");
+            for (NodoPaciente nodo : nodos) {
+                if (!nodo.getNodo().getTipo().equals(Nodo.EXAME_FISICO)) {
+                    continue;
                 }
-                out.println("        </etapa>");
-            
-                out.println("        <etapa uid=\"etapa-3\" nome=\"Conduta\" sequencia=\"3\" tipo=\"conduta\">");
-                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())  + "\" />");
+
+                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>");
+
+            // Exame Complementar
+            out.println("            <solicitar_exames_complementar uid=\"solicitar-exame-complementar-" + paciente.getId() + "\" descricao=\"Solicitar Exame Complementar\">\"");
+            for (NodoPaciente nodo : nodos) {
+                if (!nodo.getNodo().getTipo().equals(Nodo.EXAME_COMPLEMENTAR)) {
+                    continue;
                 }
-                out.println("        </etapa>");
-                out.println("    </ator>");
-        }
-       
-        
-        out.println("</caso>");
-        } finally {            
-            out.close();
+
+                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>");
+            /*
+             * // historico for(NodoPaciente nodo : nodos) { if
+             * (!nodo.getNodo().getTipo().equals(Nodo.HISTORICO)) continue;
+             *
+             * out.println(" <historico_medico uid=\"historico-medico-" +
+             * nodo.getId() + "\" dependencia=\"" +
+             * getDependencia(nodo.getNodo().getId()) + "\"
+             * descricao=\"Histórico Médico\" historico=\"" +
+             * nodo.getNodo().getNomeAmigavel() + "\" imagem=\"\" som=\"\"
+             * video=\"\" />"); }
+             */
+            out.println("        <historico_medico uid=\"historico-medico-1" + ":paciente-" + paciente.getId() + "\" dependencia=\"\" descricao=\"Histórico Médico\" historico=\"" + paciente.getHistorico() + "\" imagem=\"\" som=\"\" video=\"\" />");
+
+
+            out.println("        </etapa>");
+
+            out.println("        <etapa uid=\"etapa-2\" nome=\"Diagnóstico\" sequencia=\"2\" tipo=\"diagnostico\">");
+            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()) + "\" />");
+            }
+            out.println("        </etapa>");
+
+            out.println("        <etapa uid=\"etapa-3\" nome=\"Conduta\" sequencia=\"3\" tipo=\"conduta\">");
+            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()) + "\" />");
+            }
+            out.println("        </etapa>");
+            out.println("    </ator>");
         }
-    }
 
-    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
-    /**
-     * Handles the HTTP
-     * <code>GET</code> method.
-     *
-     * @param request servlet request
-     * @param response servlet response
-     * @throws ServletException if a servlet-specific error occurs
-     * @throws IOException if an I/O error occurs
-     */
-    @Override
-    protected void doGet(HttpServletRequest request, HttpServletResponse response)
-            throws ServletException, IOException {
-        processRequest(request, response);
-    }
 
-    /**
-     * Handles the HTTP
-     * <code>POST</code> method.
-     *
-     * @param request servlet request
-     * @param response servlet response
-     * @throws ServletException if a servlet-specific error occurs
-     * @throws IOException if an I/O error occurs
-     */
-    @Override
-    protected void doPost(HttpServletRequest request, HttpServletResponse response)
-            throws ServletException, IOException {
-        processRequest(request, response);
+        out.println("</caso>");
     }
 
-    /**
-     * Returns a short description of the servlet.
-     *
-     * @return a String containing servlet description
-     */
-    @Override
-    public String getServletInfo() {
-        return "Short description";
-    }// </editor-fold>
 }