5aee716d |
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 | |
5aee716d |
7 | import java.io.PrintWriter; |
2f5d1c39 |
8 | import java.util.Date; |
f6b96b40 |
9 | import javax.persistence.EntityManager; |
5aee716d |
10 | import javax.servlet.http.HttpServletRequest; |
11 | import javax.servlet.http.HttpServletResponse; |
2f5d1c39 |
12 | import org.ufcspa.simdecs.entities.*; |
5aee716d |
13 | |
14 | /** |
15 | * |
16 | * @author maroni |
17 | */ |
cff9bc95 |
18 | public class MetodoGravaLog extends BaseComunicacao { |
2f5d1c39 |
19 | |
20 | private long getIdFromUID(String pUID, String prefixo) { |
21 | String id = pUID.replaceAll(prefixo, ""); |
22 | id = id.substring(0, id.indexOf(":")); |
23 | return Long.parseLong(id); |
24 | } |
25 | |
26 | private long getIdPacienteFromUID(String pUID) { |
27 | String id = pUID.substring(pUID.indexOf(":paciente-") + ":paciente-".length()); |
28 | return Long.parseLong(id); |
29 | } |
30 | |
31 | private void registraLog(EntityManager em, SessaoUsuario sessaoUsuario, String pUID, boolean desmarcado) { |
32 | |
33 | // Sintoma vindo de NodoPaciente |
34 | if (pUID.toLowerCase().startsWith("sintoma-np-")) { |
35 | NodoPaciente nodoPaciente = em.find(NodoPaciente.class, getIdFromUID(pUID, "sintoma-np-")); |
36 | |
37 | if (!em.getTransaction().isActive()) |
38 | em.getTransaction().begin(); |
39 | |
40 | Log log = new Log(); |
41 | log.setSessaoUsuario(sessaoUsuario); |
42 | log.setCaso(sessaoUsuario.getCaso()); |
43 | log.setData(new Date()); |
44 | log.setEtapa(Log.ETAPA_INVESTIGACAO); |
45 | log.setNodo(nodoPaciente.getNodo()); |
46 | log.setDesmarcado(desmarcado); |
47 | log.setPaciente(nodoPaciente.getPaciente()); |
48 | log.setRede(nodoPaciente.getPaciente().getRede()); |
49 | log.setTipo(em.find(TipoEventoLog.class, TipoEventoLog.PERGUNTA_SINAL_SINTOMA)); |
50 | log.setDescricao("CLICOU SOBRE SINAL/SINTOMA INDICADO PELO PROFESSOR!"); |
51 | em.persist(log); |
52 | |
53 | em.getTransaction().commit(); |
54 | } |
55 | |
56 | // Sintoma vindo de Nodo |
57 | if (pUID.toLowerCase().startsWith("sintoma-nd-")) { |
58 | Nodo nodo = em.find(Nodo.class, getIdFromUID(pUID, "sintoma-nd-")); |
59 | Paciente paciente = em.find(Paciente.class, getIdPacienteFromUID(pUID)); |
60 | |
61 | if (!em.getTransaction().isActive()) |
62 | em.getTransaction().begin(); |
63 | |
64 | Log log = new Log(); |
65 | log.setSessaoUsuario(sessaoUsuario); |
66 | log.setCaso(sessaoUsuario.getCaso()); |
67 | log.setDesmarcado(desmarcado); |
68 | log.setData(new Date()); |
69 | log.setEtapa(Log.ETAPA_INVESTIGACAO); |
70 | log.setNodo(nodo); |
71 | log.setRede(paciente.getRede()); |
72 | log.setPaciente(paciente); |
73 | log.setTipo(em.find(TipoEventoLog.class, TipoEventoLog.PERGUNTA_SINAL_SINTOMA)); |
74 | log.setDescricao("CLICOU SOBRE SINAL/SINTOMA NAO INDICADO PELO PROFESSOR!"); |
75 | em.persist(log); |
76 | |
77 | em.getTransaction().commit(); |
78 | } |
79 | |
80 | // Exame físico vindo de NodoPaciente |
81 | if (pUID.toLowerCase().startsWith("exame-fisico-np-")) { |
82 | NodoPaciente nodoPaciente = em.find(NodoPaciente.class, getIdFromUID(pUID, "exame-fisico-np-")); |
83 | |
84 | if (!em.getTransaction().isActive()) |
85 | em.getTransaction().begin(); |
86 | |
87 | Log log = new Log(); |
88 | log.setDesmarcado(desmarcado); |
89 | log.setSessaoUsuario(sessaoUsuario); |
90 | log.setCaso(sessaoUsuario.getCaso()); |
91 | log.setData(new Date()); |
92 | log.setEtapa(Log.ETAPA_INVESTIGACAO); |
93 | log.setNodo(nodoPaciente.getNodo()); |
94 | log.setPaciente(nodoPaciente.getPaciente()); |
95 | log.setRede(nodoPaciente.getPaciente().getRede()); |
96 | log.setTipo(em.find(TipoEventoLog.class, TipoEventoLog.SOLICITA_EXAME_FISICO)); |
97 | log.setDescricao("CLICOU SOBRE EXAME FISICO INDICADO PELO PROFESSOR!"); |
98 | em.persist(log); |
99 | |
100 | em.getTransaction().commit(); |
101 | |
102 | } |
103 | |
104 | // Exame complementar vindo de NodoPaciente |
105 | if (pUID.toLowerCase().startsWith("exame-complementar-np-")) { |
106 | NodoPaciente nodoPaciente = em.find(NodoPaciente.class, getIdFromUID(pUID, "exame-complementar-np-")); |
107 | |
108 | if (!em.getTransaction().isActive()) |
109 | em.getTransaction().begin(); |
110 | |
111 | Log log = new Log(); |
112 | log.setDesmarcado(desmarcado); |
113 | log.setSessaoUsuario(sessaoUsuario); |
114 | log.setCaso(sessaoUsuario.getCaso()); |
115 | log.setData(new Date()); |
116 | log.setEtapa(Log.ETAPA_INVESTIGACAO); |
117 | log.setNodo(nodoPaciente.getNodo()); |
118 | log.setPaciente(nodoPaciente.getPaciente()); |
119 | log.setRede(nodoPaciente.getPaciente().getRede()); |
120 | log.setTipo(em.find(TipoEventoLog.class, TipoEventoLog.SOLICITA_EXAME_COMPLEMENTAR)); |
121 | log.setDescricao("CLICOU SOBRE EXAME COMPLEMENTAR INDICADO PELO PROFESSOR!"); |
122 | em.persist(log); |
123 | |
124 | em.getTransaction().commit(); |
125 | } |
2f5d1c39 |
126 | // Historico médico |
127 | if (pUID.toLowerCase().startsWith("historico-medico-")) { |
128 | Paciente paciente = em.find(Paciente.class, getIdPacienteFromUID(pUID)); |
129 | |
130 | if (!em.getTransaction().isActive()) |
131 | em.getTransaction().begin(); |
132 | |
133 | Log log = new Log(); |
134 | log.setDesmarcado(desmarcado); |
135 | log.setSessaoUsuario(sessaoUsuario); |
136 | log.setCaso(sessaoUsuario.getCaso()); |
137 | log.setData(new Date()); |
138 | log.setEtapa(Log.ETAPA_INVESTIGACAO); |
139 | log.setPaciente(paciente); |
140 | log.setRede(paciente.getRede()); |
141 | log.setTipo(em.find(TipoEventoLog.class, TipoEventoLog.PERGUNTA_HISTORICO)); |
142 | log.setDescricao("CLICOU SOBRE O HISTORICO INDICADO PELO PROFESSOR!"); |
143 | em.persist(log); |
144 | |
145 | em.getTransaction().commit(); |
146 | } |
147 | |
148 | // Diagnostico |
149 | if (pUID.toLowerCase().startsWith("diagnostico-")) { |
cff9bc95 |
150 | Nodo nodo = em.find(Nodo.class, getIdFromUID(pUID, "diagnostico-")); |
151 | Paciente paciente = em.find(Paciente.class, getIdPacienteFromUID(pUID)); |
2f5d1c39 |
152 | |
153 | if (!em.getTransaction().isActive()) |
154 | em.getTransaction().begin(); |
155 | |
156 | Log log = new Log(); |
157 | log.setDesmarcado(desmarcado); |
158 | log.setSessaoUsuario(sessaoUsuario); |
159 | log.setCaso(sessaoUsuario.getCaso()); |
160 | log.setData(new Date()); |
161 | log.setEtapa(Log.ETAPA_DIAGNOSTICO); |
cff9bc95 |
162 | log.setNodo(nodo); |
163 | log.setPaciente(paciente); |
164 | log.setRede(paciente.getRede()); |
2f5d1c39 |
165 | log.setTipo(em.find(TipoEventoLog.class, TipoEventoLog.SELECIONA_DIAGNOSTICO)); |
166 | log.setDescricao("SELECIONOU O DIAGNOSTICO"); |
167 | em.persist(log); |
168 | |
169 | em.getTransaction().commit(); |
170 | } |
171 | |
172 | // Conduta |
173 | if (pUID.toLowerCase().startsWith("conduta-")) { |
cff9bc95 |
174 | Nodo nodo = em.find(Nodo.class, getIdFromUID(pUID, "conduta-")); |
175 | Paciente paciente = em.find(Paciente.class, getIdPacienteFromUID(pUID)); |
2f5d1c39 |
176 | |
177 | if (!em.getTransaction().isActive()) |
178 | em.getTransaction().begin(); |
179 | |
180 | Log log = new Log(); |
181 | log.setSessaoUsuario(sessaoUsuario); |
182 | log.setDesmarcado(desmarcado); |
183 | log.setCaso(sessaoUsuario.getCaso()); |
184 | log.setData(new Date()); |
185 | log.setEtapa(Log.ETAPA_CONDUTA); |
cff9bc95 |
186 | log.setNodo(nodo); |
187 | log.setPaciente(paciente); |
188 | log.setRede(paciente.getRede()); |
2f5d1c39 |
189 | log.setTipo(em.find(TipoEventoLog.class, TipoEventoLog.SELECIONA_CONDUTA)); |
190 | log.setDescricao("SELECIONOU A CONDUTA"); |
191 | em.persist(log); |
192 | |
193 | em.getTransaction().commit(); |
194 | } |
195 | |
196 | } |
cff9bc95 |
197 | |
198 | @Override |
199 | protected void executaServico(EntityManager em, HttpServletRequest request, HttpServletResponse response, PrintWriter out) throws Exception |
200 | { |
5aee716d |
201 | response.setContentType("text/html;charset=UTF-8"); |
cff9bc95 |
202 | response.setContentType("text/xml"); |
203 | response.setHeader("Cache-Control", "no-cache"); |
f6b96b40 |
204 | |
cff9bc95 |
205 | long pIdSessao = Long.parseLong(request.getParameter("idsessao")); |
206 | String pUID = request.getParameter("uid"); |
207 | String pDesmarcado = request.getParameter("desmarcado"); |
208 | boolean desmarcado = false; |
f6b96b40 |
209 | |
cff9bc95 |
210 | if (pDesmarcado != null && !pDesmarcado.equals("")) { |
211 | desmarcado = true; |
212 | } |
2f5d1c39 |
213 | |
cff9bc95 |
214 | SessaoUsuario sessaoUsuario = em.find(SessaoUsuario.class, pIdSessao); |
215 | if (sessaoUsuario == null) { |
216 | return; |
217 | } |
f6b96b40 |
218 | |
cff9bc95 |
219 | registraLog(em, sessaoUsuario, pUID, desmarcado); |
88cced02 |
220 | |
cff9bc95 |
221 | out.println("<xml>"); |
222 | |
223 | boolean isPar; |
224 | if (Integer.parseInt(pUID.substring(pUID.length() - 1)) % 2 == 0) { |
225 | isPar = true; |
226 | } else { |
227 | isPar = false; |
5aee716d |
228 | } |
5aee716d |
229 | |
5aee716d |
230 | |
cff9bc95 |
231 | //if (isPar) |
232 | // out.println(" <resposta_acao_mediador acao=\"sim\" problema=\"PROBLEMA ORIGINADO PELO MEDIADOR\" mensagem=\"MENSAGEM A CADA ACAO VINDA DO MEDIADOR\" />"); |
233 | //else |
234 | out.println(" <resposta_acao_mediador acao=\"sim\" problema=\"PROBLEMA: " + this.getClass() + "\" mensagem=\"MENSAGEM:" + this.getClass() + "\" />"); |
235 | // out.println(" <resposta_acao_mediador acao=\"nao\" />"); |
5aee716d |
236 | |
cff9bc95 |
237 | out.println("</xml>"); |
238 | } |
5aee716d |
239 | } |