Commit | Line | Data |
---|---|---|
696f20d5 MS |
1 | <?\r |
2 | class Diagnostico{\r | |
3 | //opções de listagem\r | |
4 | var $arr_alfabeto;\r | |
5 | var $arr_resultado;\r | |
6 | var $arr_ordenar;\r | |
7 | \r | |
8 | //filtro - session\r | |
9 | var $filtro_palavra;\r | |
10 | var $filtro_procedencia;\r | |
11 | var $filtro_sistema;\r | |
12 | var $filtro_patologia;\r | |
13 | var $filtro_alfabeto;\r | |
14 | var $filtro_ordenar;\r | |
15 | var $filtro_resultado;\r | |
16 | \r | |
17 | function Diagnostico($tmp_patologia = ''){\r | |
18 | $this->arr_alfabeto = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','X','Y','Z','W');\r | |
19 | $this->arr_resultado = array('08','16','32');\r | |
20 | $this->arr_ordenar = array('Nome','Especialidade');\r | |
21 | $this->getFiltrosFromSession($tmp_patologia);\r | |
22 | }\r | |
23 | function setAlfabetoDiagnostico($tmp_patologia = '') {\r | |
24 | global $input;\r | |
25 | \r | |
26 | $session = 'session_letras_diagnostico';\r | |
27 | if($tmp_patologia != ''){\r | |
28 | $session = 'session_letras_diagnostico_necropsia';\r | |
29 | }\r | |
30 | \r | |
31 | if ($input->session($session) != '') {\r | |
32 | $this->arr_alfabeto_diagnostico = unserialize($input->session($session));\r | |
33 | if($this->arr_alfabeto_diagnostico == ''){\r | |
34 | $this->arr_alfabeto_diagnostico = array();\r | |
35 | }\r | |
36 | } else {\r | |
37 | $rowsLetra = $this->findLetraDiagnostico($tmp_patologia);\r | |
38 | $this->arr_alfabeto_diagnostico = array();\r | |
39 | while (!$rowsLetra->EOF) {\r | |
40 | $this->arr_alfabeto_diagnostico[] = strtoupper($rowsLetra->fields('letra'));\r | |
41 | $rowsLetra->moveNext();\r | |
42 | }\r | |
43 | $input->setSession($session,serialize($this->arr_alfabeto_diagnostico));\r | |
44 | }\r | |
45 | }\r | |
46 | function findLetraDiagnostico($tmp_patologia = '') {\r | |
47 | global $db;\r | |
48 | \r | |
49 | $sql = "SELECT DISTINCT(SUBSTRING(nome,1,1)) AS letra FROM sis_diagnostico WHERE visualizacao = 1 ORDER BY nome ASC"; \r | |
50 | if($tmp_patologia != ''){\r | |
51 | $sql = "SELECT DISTINCT(SUBSTRING(d.nome,1,1)) AS letra FROM sis_diagnostico d \r | |
52 | INNER JOIN sis_diagnostico_imagem di ON d.id = di.id_diagnostico \r | |
53 | INNER JOIN sis_imagem i ON di.id_imagem = i.id \r | |
54 | WHERE d.visualizacao = 1 AND i.id_patologia = ".$tmp_patologia." \r | |
55 | GROUP BY d.id\r | |
56 | ORDER BY d.nome ASC";\r | |
57 | }\r | |
58 | return $db->execute($sql);\r | |
59 | }\r | |
60 | function getFiltrosFromSession($tmp_patologia = ''){\r | |
61 | $this->setAlfabetoDiagnostico($tmp_patologia);\r | |
62 | \r | |
63 | global $input;\r | |
64 | $this->filtro_palavra = $input->session('session_diagnostico_filtro_palavra');\r | |
65 | $this->filtro_procedencia = $input->session('session_diagnostico_filtro_procedencia');\r | |
66 | $this->filtro_sistema = $input->session('session_diagnostico_filtro_sistema');\r | |
67 | $this->filtro_patologia = $input->session('session_diagnostico_filtro_patologia');\r | |
68 | \r | |
69 | $this->filtro_ordenar = $input->get('diagnostico_filtro_ordenar');\r | |
70 | if($this->filtro_ordenar == ''){\r | |
71 | $this->filtro_ordenar = $input->session('session_diagnostico_filtro_ordenar');\r | |
72 | if($this->filtro_ordenar == ''){\r | |
73 | $this->filtro_ordenar = $this->arr_ordenar[0];\r | |
74 | }\r | |
75 | } else {\r | |
76 | $input->setSession('session_diagnostico_filtro_ordenar',$this->filtro_ordenar);\r | |
77 | }\r | |
78 | \r | |
79 | $this->filtro_resultado = $input->get('diagnostico_filtro_resultado');\r | |
80 | if($this->filtro_resultado == ''){\r | |
81 | $this->filtro_resultado = $input->session('session_diagnostico_filtro_resultado');\r | |
82 | if($this->filtro_resultado == ''){\r | |
83 | $this->filtro_resultado = $this->arr_resultado[0];\r | |
84 | }\r | |
85 | } else {\r | |
86 | $input->setSession('session_diagnostico_filtro_resultado',$this->filtro_resultado);\r | |
87 | }\r | |
88 | }\r | |
89 | function getAlfabeto(){\r | |
90 | $html = '<table cellspacing="0" cellpadding="0" width="100%"><tr>';\r | |
91 | $total = sizeof($this->arr_alfabeto);\r | |
92 | for($a=0;$a<$total;$a++){\r | |
93 | if(in_array($this->arr_alfabeto[$a],$this->arr_alfabeto_diagnostico)){\r | |
94 | $html .= '<td align="center"><a href="?letra='.$this->arr_alfabeto[$a].'" class="ltra">'.$this->arr_alfabeto[$a].'</a></td>';\r | |
95 | } else {\r | |
96 | $html .= '<td align="center" class="nletra" style="padding-left:3px; padding-right:3px;">'.$this->arr_alfabeto[$a].'</td>';\r | |
97 | }\r | |
98 | }\r | |
99 | $html .= '</tr></table>';\r | |
100 | return $html;\r | |
101 | }\r | |
102 | function getResultado($tmp_baseLink = ''){\r | |
103 | $html = '<div class="resultados">Resultados por página: ';\r | |
104 | $total = sizeof($this->arr_resultado);\r | |
105 | for($r=0;$r<$total;$r++){\r | |
106 | if($this->arr_resultado[$r] == $this->filtro_resultado){\r | |
107 | $html .= '<a href="'.$tmp_baseLink.'&diagnostico_filtro_resultado='.$this->arr_resultado[$r].'" class="underlaine" style="font-weight:bold; text-decoration:none;">'.$this->arr_resultado[$r].'</a>';\r | |
108 | } else {\r | |
109 | $html .= '<a href="'.$tmp_baseLink.'&diagnostico_filtro_resultado='.$this->arr_resultado[$r].'" class="underlaine">'.$this->arr_resultado[$r].'</a>';\r | |
110 | }\r | |
111 | if(($r+1) < $total){\r | |
112 | $html .= ' ';\r | |
113 | }\r | |
114 | }\r | |
115 | $html .= '</div>';\r | |
116 | return $html;\r | |
117 | }\r | |
118 | function getOrdenar($tmp_baseLink = ''){\r | |
119 | $html = '<div class="ordenar">Ordenar por: ';\r | |
120 | $total = sizeof($this->arr_ordenar);\r | |
121 | for($x=0;$x<$total;$x++){\r | |
122 | if($this->arr_ordenar[$x] == $this->filtro_ordenar){\r | |
123 | $html .= '<a href="'.$tmp_baseLink.'&diagnostico_filtro_ordenar='.$this->arr_ordenar[$x].'" class="underlaine" style="text-decoration:none;font-weight:bold;">'.$this->arr_ordenar[$x].'</a>';\r | |
124 | } else {\r | |
125 | $html .= '<a href="'.$tmp_baseLink.'&diagnostico_filtro_ordenar='.$this->arr_ordenar[$x].'" class="underlaine">'.$this->arr_ordenar[$x].'</a>';\r | |
126 | }\r | |
127 | if(($x+1) < $total){\r | |
128 | $html .= ' ';\r | |
129 | }\r | |
130 | }\r | |
131 | $html .= '</div>';\r | |
132 | return $html;\r | |
133 | }\r | |
134 | function getImages($tmp_id){\r | |
135 | global $db;\r | |
136 | \r | |
137 | $sql = "SELECT id, nome FROM sis_imagem i \r | |
138 | INNER JOIN sis_diagnostico_imagem di ON di.id_imagem = i.id \r | |
139 | WHERE di.id_diagnostico = ".$tmp_id;\r | |
140 | return $db->execute($sql);\r | |
141 | }\r | |
142 | function searchLetter($tmp_letra,$tmp_patologia = ''){\r | |
143 | global $db;\r | |
144 | \r | |
145 | $sql = "SELECT d.id,\r | |
146 | d.id_especialidade,\r | |
147 | d.nome,\r | |
148 | d.cid10,\r | |
149 | SUBSTRING(d.texto,0,250) as texto,\r | |
150 | esp.nome as especialidade\r | |
151 | \r | |
152 | FROM sis_diagnostico d \r | |
153 | LEFT OUTER JOIN sis_especialidade esp ON d.id_especialidade = esp.id \r | |
154 | WHERE d.visualizacao = 1 AND (\r | |
155 | d.nome like '".$tmp_letra."%') GROUP BY d.id ".$this->getOrderBy();\r | |
156 | if($tmp_patologia != ''){\r | |
157 | $sql = "SELECT d.id,\r | |
158 | d.id_especialidade,\r | |
159 | d.nome,\r | |
160 | d.cid10,\r | |
161 | SUBSTRING(d.texto,0,250) as texto,\r | |
162 | esp.nome as especialidade\r | |
163 | \r | |
164 | FROM sis_diagnostico d \r | |
165 | INNER JOIN sis_diagnostico_imagem di ON d.id = di.id_diagnostico \r | |
166 | INNER JOIN sis_imagem i ON di.id_imagem = i.id \r | |
167 | LEFT OUTER JOIN sis_especialidade esp ON d.id_especialidade = esp.id \r | |
168 | WHERE d.visualizacao = 1 AND i.id_patologia = ".$tmp_patologia." AND (\r | |
169 | d.nome like '".$tmp_letra."%') GROUP BY d.id ".$this->getOrderBy();\r | |
170 | }\r | |
171 | return $db->execute($sql);\r | |
172 | }\r | |
173 | function simpleSeach($tmp_palavraChave,$tmp_especialidade = '',$tmp_procedencia = '',$tmp_sistema = '',$tmp_patologia = '',$tmp_grupoorgao = ''){\r | |
174 | global $db;\r | |
175 | global $o_helper;\r | |
176 | $o_helper->somaBusca($tmp_palavraChave);\r | |
177 | \r | |
178 | $andPalavraChave = '';\r | |
179 | if($tmp_palavraChave != ''){\r | |
180 | $andPalavraChave = " AND (\r | |
181 | d.nome like '%".$tmp_palavraChave."%' OR \r | |
182 | d.texto like '%".$tmp_palavraChave."%' OR \r | |
183 | d.palavrachave like '%".$tmp_palavraChave."%' OR \r | |
184 | i.nome like '%".$tmp_palavraChave."%' OR \r | |
185 | proc.nome like '%".$tmp_palavraChave."%' OR \r | |
186 | pat.nome like '%".$tmp_palavraChave."%' OR \r | |
187 | sis.nome like '%".$tmp_palavraChave."%' OR \r | |
188 | c.nome like '%".$tmp_palavraChave."%' OR \r | |
189 | c.palavrachave like '%".$tmp_palavraChave."%' \r | |
190 | ) ";\r | |
191 | }\r | |
192 | $andEspecialidade = '';\r | |
193 | if($tmp_especialidade != ''){\r | |
194 | $andEspecialidade = ' AND d.id_especialidade = '.$tmp_especialidade.' ';\r | |
195 | }\r | |
196 | $andProcedencia = '';\r | |
197 | if($tmp_procedencia != ''){\r | |
198 | $andProcedencia = ' AND i.id_procedencia = '.$tmp_procedencia.' ';\r | |
199 | }\r | |
200 | $andSistema = '';\r | |
201 | if($tmp_sistema != ''){\r | |
202 | $andSistema = ' AND i.id_sistema = '.$tmp_sistema.' ';\r | |
203 | }\r | |
204 | $andPatologia = '';\r | |
205 | if($tmp_patologia != ''){\r | |
206 | $andPatologia = ' AND i.id_patologia = '.$tmp_patologia.' ';\r | |
207 | }\r | |
208 | $andGrupoOrgao = '';\r | |
209 | if($tmp_grupoorgao != ''){\r | |
210 | $andGrupoOrgao = ' AND og.id_grupoorgao = '.$tmp_grupoorgao.' ';\r | |
211 | }\r | |
212 | \r | |
213 | $sql = "SELECT d.id,\r | |
214 | d.id_especialidade,\r | |
215 | d.nome,\r | |
216 | d.cid10,\r | |
217 | SUBSTRING(d.texto,1,250) as texto,\r | |
218 | esp.nome as especialidade\r | |
219 | \r | |
220 | FROM sis_diagnostico d \r | |
221 | LEFT OUTER JOIN sis_especialidade esp ON d.id_especialidade = esp.id \r | |
222 | \r | |
223 | LEFT OUTER JOIN sis_diagnostico_imagem di ON d.id = di.id_diagnostico \r | |
224 | LEFT OUTER JOIN sis_imagem i ON di.id_imagem = i.id \r | |
225 | \r | |
226 | LEFT OUTER JOIN sis_procedencia proc ON i.id_procedencia = proc.id \r | |
227 | LEFT OUTER JOIN sis_patologia pat ON i.id_patologia = pat.id \r | |
228 | LEFT OUTER JOIN sis_sistema sis ON i.id_sistema = sis.id \r | |
229 | \r | |
230 | LEFT OUTER JOIN sis_diagnostico_orgao do ON d.id = do.id_diagnostico\r | |
231 | LEFT OUTER JOIN sis_orgao o ON do.id_orgao = o.id\r | |
232 | LEFT OUTER JOIN sis_orgao_grupoorgao og ON o.id = og.id_orgao\r | |
233 | \r | |
234 | LEFT OUTER JOIN sis_casoestudo_diagnostico cd ON d.id = cd.id_diagnostico \r | |
235 | LEFT OUTER JOIN sis_casoestudo c ON cd.id_casoestudo = c.id \r | |
236 | WHERE d.visualizacao = 1 ".$andPalavraChave.$andEspecialidade.$andProcedencia.$andSistema.$andPatologia.$andGrupoOrgao." GROUP BY d.id ".$this->getOrderBy();\r | |
237 | return $db->execute($sql);\r | |
238 | }\r | |
239 | function complexSeach($arrPalavra,$tmp_especialidade = '',$tmp_procedencia = '',$tmp_sistema = '',$tmp_patologia = '',$tmp_grupoorgao = ''){\r | |
240 | global $db;\r | |
241 | global $o_helper;\r | |
242 | \r | |
243 | $andEspecialidade = '';\r | |
244 | if($tmp_especialidade != ''){\r | |
245 | $andEspecialidade = ' AND d.id_especialidade = '.$tmp_especialidade.' ';\r | |
246 | }\r | |
247 | $andProcedencia = '';\r | |
248 | if($tmp_procedencia != ''){\r | |
249 | $andProcedencia = ' AND i.id_procedencia = '.$tmp_procedencia.' ';\r | |
250 | }\r | |
251 | $andSistema = '';\r | |
252 | if($tmp_sistema != ''){\r | |
253 | $andSistema = ' AND i.id_sistema = '.$tmp_sistema.' ';\r | |
254 | }\r | |
255 | $andPatologia = '';\r | |
256 | if($tmp_patologia != ''){\r | |
257 | $andPatologia = ' AND i.id_patologia = '.$tmp_patologia.' ';\r | |
258 | }\r | |
259 | $andGrupoOrgao = '';\r | |
260 | if($tmp_grupoorgao != ''){\r | |
261 | $andGrupoOrgao = ' AND og.id_grupoorgao = '.$tmp_grupoorgao.' ';\r | |
262 | }\r | |
263 | \r | |
264 | $fixedWhere = " d.visualizacao = 1 ".$andEspecialidade.$andProcedencia.$andSistema.$andPatologia.$andGrupoOrgao;\r | |
265 | \r | |
266 | $arrWhere = array();\r | |
267 | $arrWhere[] = "d.nome like '%#PALAVRA#%'";\r | |
268 | $arrWhere[] = "d.texto like '%#PALAVRA#%'";\r | |
269 | $arrWhere[] = "d.palavrachave like '%#PALAVRA#%'";\r | |
270 | $arrWhere[] = "i.nome like '%#PALAVRA#%'";\r | |
271 | $arrWhere[] = "proc.nome like '%#PALAVRA#%'";\r | |
272 | $arrWhere[] = "pat.nome like '%#PALAVRA#%'";\r | |
273 | $arrWhere[] = "sis.nome like '%#PALAVRA#%'";\r | |
274 | $arrWhere[] = "c.nome like '%#PALAVRA#%'";\r | |
275 | $arrWhere[] = "c.palavrachave like '%#PALAVRA#%'";\r | |
276 | \r | |
277 | $baseSql = "SELECT d.id,\r | |
278 | d.id_especialidade,\r | |
279 | d.nome,\r | |
280 | d.cid10,\r | |
281 | SUBSTRING(d.texto,1,250) as texto,\r | |
282 | esp.nome as especialidade\r | |
283 | \r | |
284 | FROM sis_diagnostico d \r | |
285 | LEFT OUTER JOIN sis_especialidade esp ON d.id_especialidade = esp.id \r | |
286 | \r | |
287 | LEFT OUTER JOIN sis_diagnostico_imagem di ON d.id = di.id_diagnostico \r | |
288 | LEFT OUTER JOIN sis_imagem i ON di.id_imagem = i.id \r | |
289 | \r | |
290 | LEFT OUTER JOIN sis_procedencia proc ON i.id_procedencia = proc.id \r | |
291 | LEFT OUTER JOIN sis_patologia pat ON i.id_patologia = pat.id \r | |
292 | LEFT OUTER JOIN sis_sistema sis ON i.id_sistema = sis.id \r | |
293 | \r | |
294 | LEFT OUTER JOIN sis_diagnostico_orgao do ON d.id = do.id_diagnostico\r | |
295 | LEFT OUTER JOIN sis_orgao o ON do.id_orgao = o.id\r | |
296 | LEFT OUTER JOIN sis_orgao_grupoorgao og ON o.id = og.id_orgao\r | |
297 | \r | |
298 | LEFT OUTER JOIN sis_casoestudo_diagnostico cd ON d.id = cd.id_diagnostico \r | |
299 | LEFT OUTER JOIN sis_casoestudo c ON cd.id_casoestudo = c.id \r | |
300 | #WHERE# \r | |
301 | GROUP BY d.id \r | |
302 | ".$this->getOrderBy();\r | |
303 | \r | |
304 | return $db->execute($o_helper->makeSql($arrPalavra,$baseSql,$arrWhere,$fixedWhere));\r | |
305 | }\r | |
306 | function getImgesRelacionadas($tmp_id,$tmp_limit = ''){\r | |
307 | global $db;\r | |
308 | global $load;\r | |
309 | global $input;\r | |
310 | \r | |
311 | $load->config('classes/Imagem.php');\r | |
312 | $o_imagem = new Imagem();\r | |
313 | \r | |
314 | if($tmp_limit != ''){\r | |
315 | $tmp_limit = " LIMIT ".$tmp_limit;\r | |
316 | }\r | |
317 | \r | |
318 | $sql = "SELECT di.id_imagem,i.nome FROM sis_diagnostico_imagem di INNER JOIN \r | |
319 | sis_imagem i ON i.id = id_imagem WHERE i.visualizacao = 1 AND di.id_diagnostico = ".$tmp_id." ".$tmp_limit;\r | |
320 | $rowsImagem = $db->execute($sql);\r | |
321 | if(!$rowsImagem->EOF){\r | |
322 | $html = '';\r | |
323 | while(!$rowsImagem->EOF){\r | |
324 | $src = $o_imagem->getImage($rowsImagem->fields('id_imagem'),'pp');\r | |
325 | if($src != ''){\r | |
326 | $html .= '<div style="float:left;margin-left:5px;margin-top:5px;"><div style="width:55px; height:48px; cursor:pointer;" onclick="javascript: url(\'../imagens/view.php?id='.$input->encode($rowsImagem->fields('id_imagem')).'\');"><img src="'.$src.'" alt="'.$rowsImagem->fields('nome').'" title="'.$rowsImagem->fields('nome').'" /></div></div>';\r | |
327 | }\r | |
328 | $rowsImagem->moveNext();\r | |
329 | }\r | |
330 | return $html;\r | |
331 | } else {\r | |
332 | return '';\r | |
333 | }\r | |
334 | }\r | |
335 | function findDiagnoticoById($tmp_id){\r | |
336 | global $db;\r | |
337 | \r | |
338 | $sql = "SELECT d.id,\r | |
339 | d.id_especialidade,\r | |
340 | d.nome,\r | |
341 | d.cid10,\r | |
342 | d.texto,\r | |
343 | esp.nome as especialidade\r | |
344 | \r | |
345 | FROM sis_diagnostico d \r | |
346 | LEFT OUTER JOIN sis_especialidade esp ON d.id_especialidade = esp.id \r | |
347 | WHERE d.visualizacao = 1 AND d.id = ".$tmp_id." GROUP BY d.id ".$this->getOrderBy();\r | |
348 | return $db->execute($sql);\r | |
349 | }\r | |
350 | function orgaosrelacionados($tmp_id){\r | |
351 | global $db;\r | |
352 | global $input;\r | |
353 | \r | |
354 | $sql = "SELECT o.id, o.nome FROM sis_orgao o INNER JOIN sis_diagnostico_orgao io ON io.id_orgao = o.id WHERE io.id_diagnostico = ".$tmp_id." ORDER BY nome ASC";\r | |
355 | $rowsOrgao = $db->execute($sql);\r | |
356 | \r | |
357 | $obj = '';\r | |
358 | if(!$rowsOrgao->EOF){\r | |
359 | $obj .= 'Orgãos Relacionados:<br/>';\r | |
360 | while(!$rowsOrgao->EOF){\r | |
361 | $obj .= '<small><a href="javascript:url(\'../orgaos/view.php?id='.$input->encode($rowsOrgao->fields('id')).'\');">'.$rowsOrgao->fields('nome').'</a></small><br/>';\r | |
362 | $rowsOrgao->moveNext();\r | |
363 | }\r | |
364 | }\r | |
365 | return $obj;\r | |
366 | }\r | |
367 | function casosdeestudorelacionados($tmp_id){\r | |
368 | global $db;\r | |
369 | global $input;\r | |
370 | \r | |
371 | $sql = "SELECT c.id, c.nome FROM sis_casoestudo c INNER JOIN sis_casoestudo_diagnostico ci ON ci.id_casoestudo = c.id WHERE c.visualizacao = 1 AND ci.id_diagnostico = ".$tmp_id." ORDER BY c.nome ASC";\r | |
372 | $rowsDiagnostico = $db->execute($sql);\r | |
373 | \r | |
374 | $obj = '';\r | |
375 | if(!$rowsDiagnostico->EOF){\r | |
376 | while(!$rowsDiagnostico->EOF){\r | |
377 | $obj .= '<div class="divlist"><a href="javascript:url(\'../casosdeestudo/view.php?id='.$input->encode($rowsDiagnostico->fields('id')).'\');">'.$rowsDiagnostico->fields('nome').'</a></div>';\r | |
378 | $rowsDiagnostico->moveNext();\r | |
379 | }\r | |
380 | } else {\r | |
381 | $obj = 'Nenhum caso de estudo relacionado.';\r | |
382 | }\r | |
383 | return $obj;\r | |
384 | }\r | |
385 | function getOrderBy(){\r | |
386 | switch($this->filtro_ordenar){\r | |
387 | case 'Nome':\r | |
388 | return ' ORDER BY d.nome ASC';\r | |
389 | break;\r | |
390 | case 'Especialidade':\r | |
391 | return ' ORDER BY especialidade ASC';\r | |
392 | break;\r | |
393 | case 'Sistema':\r | |
394 | return ' ORDER BY sistema ASC';\r | |
395 | break;\r | |
396 | case 'Patologia':\r | |
397 | return ' ORDER BY patologia ASC';\r | |
398 | break;\r | |
399 | }\r | |
400 | }\r | |
401 | }\r | |
402 | ?> |