Initial import.
[siap.git] / _config / classes / Diagnostico.php
CommitLineData
696f20d5
MS
1<?\r
2class 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:&nbsp;&nbsp;';\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 .= '&nbsp;&nbsp;';\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:&nbsp;&nbsp;';\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 .= '&nbsp;&nbsp;';\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?>