Nova versao do simulador e tratamento de erros das chamadas.
[simdecs2.git] / src / java / org / ufcspa / simdecs / comunicacao / MetodoRegistraAcao.java
1 /*
2  * To change this template, choose Tools | Templates
3  * and open the template in the editor.
4  */
5 package org.ufcspa.simdecs.comunicacao;
6
7 import java.io.PrintWriter;
8 import java.util.Date;
9 import javax.persistence.EntityManager;
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletResponse;
12 import org.ufcspa.simdecs.entities.Log;
13 import org.ufcspa.simdecs.entities.Paciente;
14 import org.ufcspa.simdecs.entities.SessaoUsuario;
15 import org.ufcspa.simdecs.entities.TipoEventoLog;
16 import org.ufcspa.simdecs.mediador.NegociacaoPedagogica;
17
18 /**
19  *
20  * @author maroni
21  */
22 public class MetodoRegistraAcao extends BaseComunicacao {
23
24     @Override
25     protected void executaServico(EntityManager em, HttpServletRequest request, HttpServletResponse response, PrintWriter out) throws Exception
26     {
27         response.setContentType("text/html;charset=UTF-8");
28         response.setContentType("text/xml");
29         response.setHeader("Cache-Control", "no-cache");
30
31         long pIdSessao = Long.parseLong(request.getParameter("idsessao"));
32         long pIdPaciente = Long.parseLong(request.getParameter("idpaciente"));
33         String pAcao = request.getParameter("acao"); //Acoes: abre_investigacao, fecha_investigacao, abre_diagnostico, fecha_diagnostico, abre_conduta, fecha_conduta            
34         String acao;
35         String etapa;
36
37         if (pAcao.toLowerCase().equals("abre_investigacao")) {
38             acao = Log.ACAO_ABERTURA;
39             etapa = Log.ETAPA_INVESTIGACAO;
40         } else if (pAcao.toLowerCase().equals("fecha_investigacao")) {
41             acao = Log.ACAO_FECHAMENTO;
42             etapa = Log.ETAPA_INVESTIGACAO;
43         } else if (pAcao.toLowerCase().equals("abre_diagnostico")) {
44             acao = Log.ACAO_ABERTURA;
45             etapa = Log.ETAPA_DIAGNOSTICO;
46         } else if (pAcao.toLowerCase().equals("fecha_diagnostico")) {
47             acao = Log.ACAO_FECHAMENTO;
48             etapa = Log.ETAPA_DIAGNOSTICO;
49         } else if (pAcao.toLowerCase().equals("abre_conduta")) {
50             acao = Log.ACAO_ABERTURA;
51             etapa = Log.ETAPA_CONDUTA;
52         } else if (pAcao.toLowerCase().equals("fecha_conduta")) {
53             acao = Log.ACAO_FECHAMENTO;
54             etapa = Log.ETAPA_CONDUTA;
55         } else {
56             return;
57         }
58
59
60         // Registra Log
61         SessaoUsuario sessaoUsuario = em.find(SessaoUsuario.class, pIdSessao);
62         if (sessaoUsuario == null) {
63             return;
64         }
65
66         Paciente paciente = em.find(Paciente.class, pIdPaciente);
67         if (paciente == null) {
68             return;
69         }
70
71         if (!em.getTransaction().isActive()) {
72             em.getTransaction().begin();
73         }
74
75         Log log = new Log();
76         log.setTipo(em.find(TipoEventoLog.class, TipoEventoLog.REGISTRO_ACAO));
77         log.setAcao(acao);
78         log.setEtapa(etapa);
79         log.setPaciente(paciente);
80         log.setRede(paciente.getRede());
81         log.setCaso(sessaoUsuario.getCaso());
82         log.setData(new Date());
83         log.setSessaoUsuario(sessaoUsuario);
84
85         em.persist(log);
86         em.getTransaction().commit();
87
88
89         NegociacaoPedagogica negociacaoPedagogica = new NegociacaoPedagogica(pIdSessao, paciente);
90         out.println("<xml>");
91             out.println(negociacaoPedagogica.getIntervencao(etapa));
92         out.println("</xml>");
93     }
94
95 }