- modules/fotolab updated imagej to current version & some cod fixes to make it work
[care2x.git] / Care2007 / modules / op_document / op-doku-search.php
blob69983c1c2d68f9af00b498812e77f903793c5b16
1 <?php
2 error_reporting(E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR);
3 require('./roots.php');
4 require($root_path.'include/inc_environment_global.php');
5 /**
6 * CARE2X Integrated Hospital Information System Deployment 2.1 - 2004-10-02
7 * GNU General Public License
8 * Copyright 2002,2003,2004,2005 Elpidio Latorilla
9 * elpidio@care2x.org,
11 * See the file "copy_notice.txt" for the licence notice
13 # Default value for the maximum nr of rows per block displayed, define this to the value you wish
14 # In normal cases this value is derived from the db table "care_config_global" using the "pagin_insurance_list_max_block_rows" element.
15 define('MAX_BLOCK_ROWS',30);
17 $lang_tables[]='departments.php';
18 $lang_tables[]='doctors.php';
19 $lang_tables[]='search.php';
20 $lang_tables[]='actions.php';
21 define('LANG_FILE','or.php');
22 $local_user='ck_opdoku_user';
23 require_once($root_path.'include/inc_front_chain_lang.php');
25 # Check if department nr and OR nr are available from user config
26 if(!isset($dept_nr)||!$dept_nr){
27 if(isset($cfg['thispc_dept_nr'])&&!empty($cfg['thispc_dept_nr'])){
28 $dept_nr=$cfg['thispc_dept_nr'];
29 $dept_ok=true;
30 }else{
31 header('Location:op-doku-select-dept.php'.URL_REDIRECT_APPEND.'&target=entry');
32 exit;
36 //$db->debug=1;
38 # Init as no patient found
39 $patientselected=FALSE;
40 $linecount=0;
42 /*if ((substr($matchcode,0,1)=="%")||(substr($matchcode,0,1)=="&")) {
43 $matchcode='';
44 $mode='';
45 }; */
47 /* Save dept name to session */
48 if(!session_is_registered('sess_dept_name')) session_register('sess_dept_name');
50 /* Create dept object and preload dept info */
51 require_once($root_path.'include/care_api_classes/class_department.php');
52 $dept_obj=new Department;
53 $dept_obj->preloadDept($dept_nr);
54 $buffer=$dept_obj->LDvar();
55 if(isset($$buffer)&&!empty($$buffer)) $HTTP_SESSION_VARS['sess_dept_name']=$$buffer;
56 else $HTTP_SESSION_VARS['sess_dept_name']=$dept_obj->FormalName();
58 /* Load global configs */
59 include_once($root_path.'include/care_api_classes/class_globalconfig.php');
60 $GLOBAL_CONFIG=array();
61 $glob_obj=new GlobalConfig($GLOBAL_CONFIG);
62 $glob_obj->getConfig('patient_%');
63 /* Create the encounter object */
64 include_once($root_path.'include/care_api_classes/class_encounter.php');
65 $enc_obj=new Encounter();
67 require_once($root_path.'include/inc_config_color.php'); // load color preferences
69 $thisfile=basename(__FILE__);
70 $breakfile=$root_path.'main/op-doku.php'.URL_APPEND;
71 //foreach($arg as $v) echo "$v<br>"; //init db parameters
74 # Load date formatter
75 require_once($root_path.'include/inc_date_format_functions.php');
77 if($mode=='match'||$mode=='search'||$mode=='paginate'){
79 # Initialize pageĀ“s control variables
80 if($mode=='paginate'){
81 $matchcode=$HTTP_SESSION_VARS['sess_searchkey'];
82 //$searchkey='USE_SESSION_SEARCHKEY';
83 //$mode='search';
84 }else{
85 # Reset paginator variables
86 $pgx=0;
87 $totalcount=0;
88 $odir='ASC';
89 $oitem='name_last';
90 $HTTP_SESSION_VARS['sess_searchkey']=$matchcode;
92 # Paginator object
93 require_once($root_path.'include/care_api_classes/class_paginator.php');
94 $pagen=new Paginator($pgx,$thisfile,$HTTP_SESSION_VARS['sess_searchkey'],$root_path);
96 require_once($root_path.'include/care_api_classes/class_globalconfig.php');
97 $glob_obj=new GlobalConfig($GLOBAL_CONFIG);
99 # Get the max nr of rows from global config
100 $glob_obj->getConfig('pagin_patient_search_max_block_rows');
101 if(empty($GLOBAL_CONFIG['pagin_patient_search_max_block_rows'])) $pagen->setMaxCount(MAX_BLOCK_ROWS); # Last resort, use the default defined at the start of this page
102 else $pagen->setMaxCount($GLOBAL_CONFIG['pagin_patient_search_max_block_rows']);
104 # Resolve the table prefix acc: to order item passed via http
105 if($oitem=='encounter_nr') $prefx='e';
106 elseif($oitem=='LD_var')
107 $prefx='d';
108 elseif($oitem=='op_date'||$oitem=='nr')
109 $prefx='o';
110 else
111 $prefx='p';
113 $dbtable='care_op_med_doc';
115 if(is_numeric($matchcode)&&$matchcode)
117 $matchcode=(int)$matchcode;
118 }else{
119 $matchcode=addslashes($matchcode);
122 $select_sql="SELECT o.*, e.encounter_class_nr, p.name_last, p.name_first, p.date_birth,p.sex,d.name_formal,d.LD_var AS \"LD_var\"";
124 $from_sql=" FROM $dbtable AS o,
125 care_encounter AS e,
126 care_person AS p,
127 care_department AS d ";
129 $and_sql=' AND o.encounter_nr=e.encounter_nr
130 AND e.pid=p.pid
131 AND o.dept_nr=d.nr';
133 if(!isset($all_depts)||$all_depts=='false') $and_sql.=' AND o.dept_nr='.$dept_nr;
135 $sql2= "$from_sql WHERE o.encounter_nr $sql_LIKE '$matchcode%' $and_sql";
137 $sql=$select_sql.$sql2." ORDER BY $prefx.$oitem $odir";
139 //if(!isset($all_depts)||$all_depts=='false') $sql.=' AND o.dept_nr='.$dept_nr;
141 if($ergebnis=$db->SelectLimit($sql,$pagen->MaxCount(),$pgx))
143 if(!$rows=$ergebnis->RecordCount())
145 // if not found find similar
146 $sql2 = " $from_sql WHERE ( ";
147 # Try if numeric
148 if(is_numeric($matchcode)){
149 $sql2.=" o.nr $sql_LIKE '".trim($matchcode)."%'
150 OR o.encounter_nr $sql_LIKE '".trim($matchcode)."%'
151 OR ";
153 $sql2.="p.name_last $sql_LIKE '".trim($matchcode)."%'
154 OR p.name_first $sql_LIKE '".trim($matchcode)."%'";
155 # Try DOB
156 $DOB = formatDate2STD($matchcode,$date_format);
157 if(!empty($DOB)){
159 $sql2.=" OR p.date_birth = '$DOB'";
162 $sql2.= ") $and_sql";
163 //if(!isset($all_depts)||$all_depts=='false') $sql.=' AND o.dept_nr='.$dept_nr;
164 //echo $all_depts;
165 $sql2.=" ORDER BY $prefx.$oitem $odir";
166 $sql=$select_sql.$sql2;
167 //echo $sql;
168 if($ergebnis=$db->SelectLimit($sql,$pagen->MaxCount(),$pgx))
170 $rows=$ergebnis->RecordCount();
174 }else echo "$LDDbNoRead<p> $sql <p>";
176 //echo $sql;
177 //$linecount=$address_obj->LastRecordCount();
178 $pagen->setTotalBlockCount($rows);
179 # Count total available data
180 if(isset($totalcount)&&$totalcount){
181 $pagen->setTotalDataCount($totalcount);
182 }else{
183 $sql="SELECT o.nr ".$sql2;
184 if($cresult=$db->Execute($sql)) {
185 $totalcount=$cresult->RecordCount();
187 $pagen->setTotalDataCount($totalcount);
189 $pagen->setSortItem($oitem);
190 $pagen->setSortDirection($odir);
192 }elseif($mode=='select'){
194 $dbtable='care_op_med_doc';
196 $sql="SELECT * FROM $dbtable WHERE nr='$nr'";
198 if($ergebnis=$db->Execute($sql)) {
199 if($rows=$ergebnis->RecordCount()){
200 //echo $sql;
201 $row=$ergebnis->FetchRow();
202 $enc_obj->loadEncounterData($row['encounter_nr']);
203 $patientselected=TRUE;
205 }else{
206 echo "$LDDbNoRead<p> $sql <p>";
208 }else{
209 if($HTTP_COOKIE_VARS['ck_login_logged'.$sid]) $mode='dummy';
213 # Start the smarty templating
215 * LOAD Smarty
217 # Note: it is advisable to load this after the inc_front_chain_lang.php so
218 # that the smarty script can use the user configured template theme
220 require_once($root_path.'gui/smarty_template/smarty_care.class.php');
221 $smarty = new smarty_care('nursing');
223 # Added for the common header top block
225 $smarty->assign('sToolbarTitle',"$LDOrDocument :: $LDSearch (".$HTTP_SESSION_VARS['sess_dept_name'].")");
227 $smarty->assign('pbHelp',"javascript:gethelp('opdoc.php','search','$mode','$rows')");
229 # hide return button
230 $smarty->assign('pbBack',FALSE);
232 # href for close button
233 $smarty->assign('breakfile',$breakfile);
235 # Window bar title
236 $smarty->assign('sWindowTitle',"$LDOrDocument :: $LDSearch (".$HTTP_SESSION_VARS['sess_dept_name'].")");
238 $smarty->assign('sOnLoadJs','onLoad="if(window.focus) window.focus();document.matchform.matchcode.focus();"');
241 * collect JavaScript for Smarty
243 ob_start();
246 <script language="javascript">
247 <!--
249 function lookmatch(d)
251 m=d.matchcode.value;
252 a=d.all_depts.checked;
253 if(m=="") return false;
254 /* if((m.substr(0,1)=="%")||(m.substr(0,1)=="&"))
256 d.matchcode.value="";
257 d.matchcode.focus();
258 return false;
260 */ window.location.replace("op-doku-search.php?sid=<?php echo "$sid&lang=$lang&target=$target&dept_nr=$dept_nr" ?>&mode=match&matchcode="+m+"&all_depts="+a);
261 return false;
263 // -->
264 </script>
266 <?php
268 $sTemp = ob_get_contents();
269 ob_end_clean();
271 $smarty->append('JavaScript',$sTemp);
273 # Buffer page output
275 ob_start();
279 <table width=100% border=0 cellspacing=0 cellpadding=0>
281 <?php require('./gui_tabs_op_doku.php'); ?>
283 <tr>
284 <td colspan=2><p><br>
286 <ul>
287 <form method="post" name="matchform" onSubmit="return lookmatch(this)">
288 <?php echo $LDSearchKeyword ?>: <input name="matchcode" type="text" size="20">&nbsp;<br>
289 <input type="checkbox" name="all_depts" <?php if ($all_depts=='true') echo 'checked' ?>> <?php echo $LDSearchInAllDepts ?><br>
290 <input type="image" <?php echo createLDImgSrc($root_path,'searchlamp.gif','0','absmiddle') ?> alt="<?php echo $LDSearch ?>">
291 <input type="hidden" name="sid" value="<?php echo $sid ?>">
292 <input type="hidden" name="lang" value="<?php echo $lang ?>">
293 <input type="hidden" name="dept_nr" value="<?php echo $dept_nr ?>">
294 </form>
295 <?php
297 if($rows&&!$patientselected){
300 <table border=0>
301 <tr>
302 <td><img <?php echo createMascot($root_path,'mascot1_r.gif','0','bottom') ?> align="absmiddle"></td>
303 <td><FONT class="prompt">
304 <b><?php
305 if (($mode=='match'||$mode=='paginate')){
306 if($rows) echo str_replace("~nr~",$totalcount,$LDSearchFound).' '.$LDShowing.' '.$pagen->BlockStartNr().' '.$LDTo.' '.$pagen->BlockEndNr().'.';
307 else echo str_replace('~nr~','0',$LDSearchFound);
309 $append="&dept_nr=$dept_nr&target=search&all_depts=$all_depts";
310 # Preload common icon images
311 $img_male=createComIcon($root_path,'spm.gif','0','',TRUE);
312 $img_female=createComIcon($root_path,'spf.gif','0','',TRUE);
313 $bgimg='tableHeaderbg3.gif';
314 $tbg= 'background="'.$root_path.'gui/img/common/'.$theme_com_icon.'/'.$bgimg.'"';
316 ?></b></font></td>
317 </tr>
318 </table>
320 <table border=0 cellpadding=0 cellspacing=0>
321 <tr class="wardlisttitlerow">
322 <td><b>
323 <?php echo $pagen->makeSortLink($LDSex,'sex',$oitem,$odir,$append); ?></b></td>
324 <td><b>
325 <?php echo $pagen->makeSortLink($LDLastName,'name_last',$oitem,$odir,$append); ?></b></td>
326 <td><b>
327 <?php echo $pagen->makeSortLink($LDName,'name_first',$oitem,$odir,$append); ?></b></td>
328 <td><b>
329 <?php echo $pagen->makeSortLink($LDBday,'date_birth',$oitem,$odir,$append); ?></b></td>
330 <td><b>
331 <?php echo $pagen->makeSortLink($LDPatientNr,'encounter_nr',$oitem,$odir,$append); ?></b></td>
332 <td><b>
333 <?php echo $pagen->makeSortLink($LDSrcListElements[5],'op_date',$oitem,$odir,$append); ?></b></td>
334 <td><b>
335 <?php echo $pagen->makeSortLink($LDDepartment,'LD_var',$oitem,$odir,$append); ?></b></td>
336 <td><b>
337 <?php echo $pagen->makeSortLink($LDOpNr,'nr',$oitem,$odir,$append); ?></b></td>
338 </tr>
339 <?php
340 $toggle=0;
341 while($row=$ergebnis->FetchRow())
343 echo'
344 <tr ';
345 if($toggle){ echo 'class="wardlistrow2"'; } else { echo 'class="wardlistrow1"'; }
346 $toggle=!$toggle;
347 # Prepare the url get values
348 $buf="op-doku-search.php".URL_APPEND."&dept_nr=".$row['dept_nr']."&target=search&mode=select&nr=".$row['nr']."&all_depts=".$all_depts;
350 echo '><td>';
351 switch($row['sex']){
352 case 'f': echo '<img '.$img_female.'>'; break;
353 case 'm': echo '<img '.$img_male.'>'; break;
354 default: echo '&nbsp;'; break;
357 echo '
358 </td>
359 <td>&nbsp; <a href="'.$buf.'" title="'.$LDClk2Show.'">'.$row['name_last'].'</a></td>
360 <td>&nbsp; &nbsp;'.$row['name_first'].'</td>
361 <td>&nbsp; &nbsp;'.formatDate2Local($row['date_birth'],$date_format).'</td>
362 <td>&nbsp; &nbsp;';
364 echo $row['encounter_nr'].'</td>
365 <td>&nbsp; &nbsp;<a href="'.$buf.'" title="'.$LDClk2Show.'">'.formatDate2Local($row['op_date'],$date_format).'</a></td>
366 <td>&nbsp; &nbsp;';
368 $buffer=$row['LD_var'];
369 if(isset($$buffer)&&!empty($$buffer)) echo $$buffer;
370 else echo $row['name_formal'];
372 echo '</td>
373 <td align=right>&nbsp; &nbsp;<a href="'.$buf.'" title="'.$LDClk2Show.'">'.$row['nr'].'</a>&nbsp; &nbsp;</td>
374 </tr>
375 <tr class="thinrow_vspacer">
376 <td colspan=8 height=1><img src="'.$root_path.'gui/img/common/default/pixel.gif" border=0 width=1 height=1 align="absmiddle"></td>
377 </tr>';
379 echo '
380 <tr><td colspan=7><font face=arial size=2>'.$pagen->makePrevLink($LDPrevious,$append).'</td>
381 <td align=right><font face=arial size=2>'.$pagen->makeNextLink($LDNext,$append).'</td>
382 </tr>';
386 </table>
389 <?php
391 }elseif($rows&&$patientselected){
395 <table border="0">
397 <form method="post" action="op-doku-start.php" name="opdoc">
398 <tr bgcolor="#ffffff">
399 <td><?php echo $LDSrcListElements[7] ?>:<br>
400 </td>
401 <td>
402 <?php echo '<font color="#800000">'.$row['nr'];
404 </td>
405 </tr>
406 <tr bgcolor="#ffffff">
407 <td><?php echo $LDSrcListElements[6] ?>:<br>
408 </td>
409 <td>
410 <?php echo '<font color="#800000">'.$HTTP_SESSION_VARS['sess_dept_name'];
412 </td>
413 </tr>
414 <tr bgcolor="#ffffff">
415 <td><?php echo $LDOpDate ?>:<br>
416 </td>
417 <td>
418 <?php echo '<font color="#800000">'.formatDate2Local($row['op_date'],$date_format);
420 <font color=#0>&nbsp; &nbsp;<?php echo $LDOperator ?>:
421 <?php echo '<font color="#800000">'.$row['operator'];
423 </td>
424 </tr>
425 <tr bgcolor="#ffffff">
426 <td>
428 <?php echo $LDPatientNr ?>:
429 </td>
430 <td><FONT color="#000099"><?php echo $row['encounter_nr']; ?>
431 </td>
432 </tr>
434 <tr>
435 <td>
436 &nbsp;<!-- Spacer row -->
437 </td>
439 <td>
440 &nbsp;
441 </tr>
442 <tr bgcolor="#ffffff">
443 <td><?php echo $LDLastName ?>:
444 </td>
445 <td>
446 <?php echo '<font color="#000099"><b>'.$enc_obj->LastName().'</b>';
448 </td>
449 </tr>
450 <tr bgcolor="#ffffff">
451 <td><?php echo $LDName ?>:
452 </td>
453 <td>
454 <?php echo '<font color="#000099"><b>'.$enc_obj->FirstName().'</b>';
456 </td>
457 </tr>
458 <tr bgcolor="#ffffff">
459 <td><?php echo $LDBday ?>:
460 </td>
461 <td>
462 <?php echo '<font color="#000099">'.formatDate2Local($enc_obj->BirthDate(),$date_format);
464 </td>
465 </tr>
466 <tr bgcolor="#ffffff">
467 <td>
468 </td>
469 <td>
470 <font color=#000099>
471 <?php switch($row['status'])
473 case "stat": echo $LDStationary;break;
474 case "amb": echo $LDAmbulant; break;
476 echo "<br>";
477 echo ucfirst($row['kasse']);
479 </td>
480 </tr>
481 <tr bgcolor="#ffffff">
482 <td><?php echo $LDDiagnosis ?>:
483 </td>
484 <td>
485 <?php echo '<font color="#800000">'.$row['diagnosis'];
487 </td>
488 </tr>
489 <tr bgcolor="#ffffff">
490 <td><?php echo $LDLocalization ?>:
491 </td>
492 <td>
493 <?php echo '<font color="#800000">'.$row['localize'];
495 </td>
496 </tr>
497 <tr bgcolor="#ffffff">
498 <td><?php echo $LDTherapy ?>:
499 </td>
500 <td>
502 <?php echo '<font color="#800000">'.$row['therapy'];
504 </td>
505 </tr >
506 <tr bgcolor="#ffffff">
507 <td><?php echo $LDSpecials ?>:
508 </td>
509 <td>
510 <?php echo '<font color="#800000">'.$row['special'];
512 </td>
513 </tr>
514 <tr bgcolor="#ffffff">
515 <td><?php echo $LDClassification ?>:
516 </td>
517 <td>
518 <font color="#800000">
519 <?php
520 if($row['class_s']) echo $row['class_s']." $LDMinor &nbsp; ";
521 if($row['class_m']) echo $row['class_m']." $LDMiddle &nbsp; ";
522 if($row['class_l']) echo $row['class_l']." $LDMajor";
523 echo " $LDOperation";
525 </td>
526 </tr>
527 </table>
530 <?php echo $LDOpStart ?>:<font color="#0">
531 <?php echo '<font color="#800000">'.convertTimeToLocal($row['op_start']).' &nbsp;';
534 <font color="#0"><?php echo $LDOpEnd ?>:
535 <?php echo '<font color="#800000">'.convertTimeToLocal($row['op_end']).' &nbsp;';
538 <font color="#0"><?php echo $LDScrubNurse ?>:
539 <?php echo '<font color="#800000">'.$row['scrub_nurse'].' &nbsp;';
542 <font color="#0"><?php echo $LDOpRoom ?>: <font color="#0">
543 <?php echo '<font color="#800000">'.$row['op_room'];
545 <?php
546 $buf="op-doku-start.php?sid=$sid&lang=$lang&mode=update&update=1&nr=".$row['nr']."&pn=".$row['encounter_nr'];
548 <!-- <p><input type="button" value="<?php echo $LDUpdateData ?>" onClick="window.location.href='<?php echo $buf ?>'"> &nbsp;
550 <p><input type="image" <?php echo createLDImgSrc($root_path,'update_data.gif') ?>>
551 <input type="hidden" name="sid" value="<?php echo $sid ?>">
552 <input type="hidden" name="lang" value="<?php echo $lang ?>">
553 <input type="hidden" name="nr" value="<?php echo $row['nr'] ?>">
554 <input type="hidden" name="pn" value="<?php echo $row['encounter_nr'] ?>">
555 <input type="hidden" name="dept_nr" value="<?php echo $dept_nr ?>">
556 <input type="hidden" name="all_depts" value="<?php echo $all_depts ?>">
557 <input type="hidden" name="target" value="entry">
558 <input type="hidden" name="mode" value="update">
559 <input type="hidden" name="update" value="1">
560 </form>
561 <?php
563 }elseif($mode=='match'){
565 <table border=0>
566 <tr>
567 <td><img <?php echo createMascot($root_path,'mascot2_r.gif','0','bottom') ?> align="absmiddle"></td>
568 <td class="warnprompt">
569 <?php echo $LDSorryNotFound; ?>
570 </td>
571 </tr>
572 </table>
574 <?php
580 </ul>
582 </FONT>
584 </td>
585 </tr>
586 </table>
587 <hr>
588 <ul>
589 <FONT SIZE=2 FACE="Arial">
590 <img <?php echo createComIcon($root_path,'varrow.gif','0') ?>> <a href="op-doku-start.php<?php echo URL_APPEND."&target=entry&dept_nr=$dept_nr" ?>&mode=dummy"><?php echo $LDStartNewDocu ?></a><br>
591 <img <?php echo createComIcon($root_path,'varrow.gif','0') ?>> <a href="op-doku-archiv.php<?php echo URL_APPEND."&target=archiv&dept_nr=$dept_nr" ?>&mode=dummy"><?php echo $LDResearchArchive ?></a><br>
592 <img <?php echo createComIcon($root_path,'varrow.gif','0') ?>> <a href="op-doku-select-dept.php<?php echo URL_APPEND."&target=$target&dept_nr=$dept_nr"; ?>&mode=dummy"><?php echo $LDChangeOnlyDept ?></a><br>
595 <a href="<?php echo $breakfile ?>"><img <?php echo createLDImgSrc($root_path,'close2.gif','0') ?> alt="<?php echo $LDClose ?>"></a>
596 </ul><p>
598 <?php
600 $sTemp = ob_get_contents();
601 ob_end_clean();
603 # Assign the page output to main frame template
605 $smarty->assign('sMainFrameBlockData',$sTemp);
608 * show Template
610 $smarty->display('common/mainframe.tpl');