Merge branch 'fmc-custom' of github.com:tmccormi/openemr
[openemr.git] / interface / reports / clinical_reports.php
blobf58cb94eaa070bb4a1b66d8293803b3510546b8d
1 <?php
2 // Copyright (C) 2010 OpenEMR Support LLC
3 //
4 // This program is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU General Public License
6 // as published by the Free Software Foundation; either version 2
7 // of the License, or (at your option) any later version.
9 // This report lists prescriptions and their dispensations according
10 // to various input selection criteria.
12 // Prescription report written by Rod Roark, 2010
13 // Fixed drug name search to work in a broader sense - tony@mi-squared.com, 2010
14 // Added five new reports as per EHR certification requirements for Patient Lists - OpenEMR Support LLC, 2010
16 //SANITIZE ALL ESCAPES
17 $sanitize_all_escapes=true;
20 //STOP FAKE REGISTER GLOBALS
21 $fake_register_globals=false;
24 require_once("../globals.php");
25 require_once("$srcdir/patient.inc");
26 require_once("$srcdir/options.inc.php");
27 require_once("../drugs/drugs.inc.php");
28 require_once("$srcdir/formatting.inc.php");
30 function add_date($givendate,$day=0,$mth=0,$yr=0)
32 $cd = strtotime($givendate);
33 $newdate = date('Y-m-d', mktime(date('h',$cd),
34 date('i',$cd), date('s',$cd), date('m',$cd)+$mth,
35 date('d',$cd)+$day, date('Y',$cd)+$yr));
36 return $newdate;
39 $type = htmlspecialchars($_POST["type"], ENT_QUOTES);
40 $facility = htmlspecialchars(isset($_POST['facility']) ? $_POST['facility'] : '', ENT_QUOTES);
41 $sql_date_from = htmlspecialchars(fixDate($_POST['date_from'], date('Y-01-01')), ENT_QUOTES);
42 $sql_date_to = htmlspecialchars(fixDate($_POST['date_to'] , add_date(date('Y-m-d'), -1)), ENT_QUOTES);
43 $patient_id = htmlspecialchars(trim($_POST["patient_id"]), ENT_QUOTES);
44 $age_from = htmlspecialchars($_POST["age_from"], ENT_QUOTES);
45 $age_to = htmlspecialchars($_POST["age_to"], ENT_QUOTES);
46 $sql_gender = htmlspecialchars($_POST["gender"], ENT_QUOTES);
47 $sql_ethnicity = htmlspecialchars($_POST["ethnicity"], ENT_QUOTES);
48 $form_lot_number = htmlspecialchars(trim($_POST['form_lot_number']), ENT_QUOTES);
49 $form_drug_name = htmlspecialchars(trim($_POST["form_drug_name"]), ENT_QUOTES);
51 <html>
52 <head>
53 <?php html_header_show();?>
54 <title>
55 <?php echo htmlspecialchars(xl('Clinical Reports'),ENT_NOQUOTES); ?>
56 </title>
57 <script type="text/javascript" src="../../library/overlib_mini.js"></script>
58 <script type="text/javascript" src="../../library/textformat.js"></script>
59 <script type="text/javascript" src="../../library/dialog.js"></script>
60 <script type="text/javascript" src="../../library/js/jquery.1.3.2.js"></script>
61 <script language="JavaScript">
63 var mypcc = '<?php echo $GLOBALS['phone_country_code'] ?>';
65 // The OnClick handler for receipt display.
66 function show_receipt(payid) {
67 // dlgopen('../patient_file/front_payment.php?receipt=1&payid=' + payid, '_blank', 550, 400);
68 return false;
71 </script>
72 <link rel='stylesheet' href='<?php echo $css_header ?>' type='text/css'>
73 <style type="text/css">
74 /* specifically include & exclude from printing */
75 @media print {
76 #report_parameters {
77 visibility: hidden;
78 display: none;
80 #report_parameters_daterange {
81 visibility: visible;
82 display: inline;
84 #report_results table {
85 margin-top: 0px;
89 /* specifically exclude some from the screen */
90 @media screen {
91 #report_parameters_daterange {
92 visibility: hidden;
93 display: none;
97 .optional_area {
98 <?php
99 if($type != 'Prescription' || $type == '')
102 display: none;
103 <?php
107 </style>
108 <script language="javascript" type="text/javascript">
109 function checkType()
111 if($('#type').val() == 'Prescription')
113 $('.optional_area').css("display", "inline");
115 else
117 $('.optional_area').css("display", "none");
121 function submitForm()
123 var d_from = new String($('#date_from').val());
124 var d_to = new String($('#date_to').val());
126 var d_from_arr = d_from.split('-');
127 var d_to_arr = d_to.split('-');
129 var dt_from = new Date(d_from_arr[0], d_from_arr[1], d_from_arr[2]);
130 var dt_to = new Date(d_to_arr[0], d_to_arr[1], d_to_arr[2]);
132 var mili_from = dt_from.getTime();
133 var mili_to = dt_to.getTime();
134 var diff = mili_to - mili_from;
136 $('#date_error').css("display", "none");
138 if(diff < 0) //negative
140 $('#date_error').css("display", "inline");
142 else
144 $("#form_refresh").attr("value","true");
145 $("#theform").submit();
149 $(document).ready(function() {
150 $(".numeric_only").keydown(function(event) {
151 //alert(event.keyCode);
152 // Allow only backspace and delete
153 if ( event.keyCode == 46 || event.keyCode == 8 ) {
154 // let it happen, don't do anything
156 else {
157 if(!((event.keyCode >= 96 && event.keyCode <= 105) || (event.keyCode >= 48 && event.keyCode <= 57)))
159 event.preventDefault();
164 </script>
165 </head>
167 <body class="body_top">
169 <!-- Required for the popup date selectors -->
170 <div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div>
171 <span class='title'>
172 <?php echo htmlspecialchars(xl('Report - Clinical'),ENT_NOQUOTES); ?>
173 </span>
174 <!-- Search can be done using age range, gender, and ethnicity filters.
175 Search options include diagnosis, procedure, prescription, medical history, and lab results.
177 <div id="report_parameters_daterange"> <?php echo htmlspecialchars(date("d F Y", strtotime($sql_date_from)),ENT_NOQUOTES) .
178 " &nbsp; to &nbsp; ". htmlspecialchars(date("d F Y", strtotime($sql_date_to)),ENT_NOQUOTES); ?> </div>
179 <form name='theform' id='theform' method='post' action='clinical_reports.php'>
180 <div id="report_parameters">
181 <input type='hidden' name='form_refresh' id='form_refresh' value=''/>
182 <table>
183 <tr>
184 <td width='740px'><div style='float:left'>
185 <table class='text'>
186 <tr>
187 <td class='label'><?php echo htmlspecialchars(xl('Facility'),ENT_NOQUOTES); ?>
188 : </td>
189 <td>
190 <?php dropdown_facility($facility,'facility',false); ?>
191 </td>
192 <td class='label'><?php echo htmlspecialchars(xl('From'),ENT_NOQUOTES); ?>
193 : </td>
194 <td><input type='text' name='date_from' id="date_from" size='10' value='<?php echo htmlspecialchars($sql_date_from,ENT_QUOTES) ?>'
195 onkeyup='datekeyup(this,mypcc)' onblur='dateblur(this,mypcc)' title='yyyy-mm-dd'>
196 <img src='../pic/show_calendar.gif' align='absbottom' width='24' height='22'
197 id='img_from_date' border='0' alt='[?]' style='cursor:pointer'
198 title='<?php echo htmlspecialchars(xl('Click here to choose a date'),ENT_QUOTES); ?>'></td>
199 <td><span id="date_error" style="color: #F00; font-size: 11px; display: none;"><?php echo htmlspecialchars(xl('From date cannot be greater than To date'),ENT_NOQUOTES); ?></span>&nbsp;</td>
200 </tr>
201 <tr>
202 <td class='label'><?php echo htmlspecialchars(xl('Patient ID'),ENT_NOQUOTES); ?>:</td>
203 <td><input name='patient_id' class="numeric_only" type='text' id="patient_id"
204 title='<?php echo htmlspecialchars(xl('Optional numeric patient ID'),ENT_QUOTES); ?>'
205 value='<?php echo htmlspecialchars($patient_id,ENT_QUOTES); ?>' size='10' maxlength='20' /></td>
206 <td class='label'><?php echo htmlspecialchars(xl('To'),ENT_NOQUOTES); ?>: </td>
207 <td><input type='text' name='date_to' id="date_to" size='10' value='<?php echo htmlspecialchars($sql_date_to,ENT_QUOTES); ?>'
208 onKeyUp='datekeyup(this,mypcc)' onBlur='dateblur(this,mypcc)' title='yyyy-mm-dd'>
209 <img src='../pic/show_calendar.gif' align='absbottom' width='24' height='22'
210 id='img_to_date' border='0' alt='[?]' style='cursor:pointer'
211 title='<?php echo htmlspecialchars(xl('Click here to choose a date'),ENT_QUOTES); ?>'></td>
212 <td>&nbsp;</td>
213 </tr>
214 <tr>
215 <td class='label'><?php echo htmlspecialchars(xl('Age Range'),ENT_NOQUOTES); ?>
216 :</td>
217 <td><? echo htmlspecialchars(xl('From'),ENT_NOQUOTES); ?>
218 <input name='age_from' class="numeric_only" type='text' id="age_from" value="<?php echo htmlspecialchars($age_from,ENT_QUOTES); ?>" size='3' maxlength='3' /><? echo htmlspecialchars(xl('To'),ENT_NOQUOTES); ?>
219 <input name='age_to' class="numeric_only" type='text' id="age_to" value="<?php echo htmlspecialchars($age_to,ENT_QUOTES); ?>" size='3' maxlength='3' /></td>
220 <td class='label'><?php echo htmlspecialchars(xl('Option'),ENT_QUOTES); ?>:</td>
221 <td><select name="type" id="type" onChange="checkType();">
222 <option value="Diagnosis" <?php if($type == 'Diagnosis') { echo "selected"; } ?>><?php echo htmlspecialchars(xl('Diagnosis'),ENT_NOQUOTES); ?></option>
223 <option value="Procedure" <?php if($type == 'Procedure') { echo "selected"; } ?>><?php echo htmlspecialchars(xl('Procedure'),ENT_NOQUOTES); ?></option>
224 <?php
225 if(!$GLOBALS['disable_prescriptions'])
228 <option value="Prescription" <?php if($type == 'Prescription') { echo "selected"; } ?>><?php echo htmlspecialchars(xl('Prescription'),ENT_NOQUOTES); ?></option>
229 <?php
232 <option value="Medical History" <?php if($type == 'Medical History') { echo "selected"; } ?>><?php echo htmlspecialchars(xl('Medical History'),ENT_NOQUOTES); ?></option>
233 <option value="Lab Results" <?php if($type == 'Lab Results') { echo "selected"; } ?>><?php echo htmlspecialchars(xl('Lab Results'),ENT_NOQUOTES); ?></option>
234 <option value="Service Codes" <?php if($type == 'Service Codes') { echo "selected"; } ?>><?php echo htmlspecialchars(xl('Service Codes'),ENT_NOQUOTES); ?></option>
235 </select></td>
236 <td>&nbsp;</td>
237 </tr>
238 <tr>
239 <td class='label'><?php echo htmlspecialchars(xl('Gender'),ENT_NOQUOTES); ?>
240 :</td>
241 <td><?php echo generate_select_list('gender', 'sex', $gender, 'Select Gender', 'Unassigned', '', ''); ?></td>
242 <td class='label'><span class="optional_area"><?php echo htmlspecialchars(xl('Drug'),ENT_NOQUOTES); ?>:</span>&nbsp;</td>
243 <td><span class="optional_area"><input type='text' name='form_drug_name' size='10' maxlength='250' value='<?php echo htmlspecialchars($form_drug_name,ENT_QUOTES); ?>'
244 title='<?php echo htmlspecialchars(xl('Optional drug name, use % as a wildcard'),ENT_QUOTES); ?>' /></span>&nbsp;</td>
245 <td>&nbsp;</td>
246 </tr>
247 <tr>
248 <td class='label'><?php echo htmlspecialchars(xl('Race/Ethnicity'),ENT_NOQUOTES); ?>:</td>
249 <td><?php echo generate_select_list('ethnicity', 'ethrace', $ethnicity, 'Select Ethnicity', 'Unassigned', '', ''); ?></td>
250 <td class='label'><span class="optional_area">
251 <?php echo htmlspecialchars(xl('Lot'),ENT_NOQUOTES); ?>
252 :</span>&nbsp;</td>
253 <td><span class="optional_area">
254 <input type='text' name='form_lot_number' size='10' maxlength='20' value='<?php echo htmlspecialchars($form_lot_number,ENT_QUOTES); ?>'
255 title='<?php echo htmlspecialchars(xl('Optional lot number, use % as a wildcard'),ENT_QUOTES); ?>' />
256 </span>&nbsp;</td>
257 <td>&nbsp;</td>
258 </tr>
259 </table>
260 </div></td>
261 <td height="100%" align='left' valign='middle'><table style='border-left:1px solid; width:100%; height:100%' >
262 <tr>
263 <td><div style='margin-left:15px'> <a href='#' class='css_button' onclick='submitForm();'> <span>
264 <?php echo htmlspecialchars(xl('Submit'),ENT_NOQUOTES); ?>
265 </span> </a>
266 <?php if ($_POST['form_refresh']) { ?>
267 <a href='#' class='css_button' onclick='window.print()'> <span>
268 <?php echo htmlspecialchars(xl('Print'),ENT_NOQUOTES); ?>
269 </span> </a>
270 <?php } ?>
271 </div></td>
272 </tr>
273 </table></td>
274 </tr>
275 </table>
276 </div>
277 <!-- end of parameters -->
279 <?php
281 // SQL scripts for the various searches
282 $sqlBindArray = array();
283 if ($_POST['form_refresh'])
285 if($type == 'Prescription')
287 $sqlstmt = "
288 SELECT
289 r.id, r.patient_id, r.date_modified AS prescriptions_date_modified, r.dosage, r.route, r.interval, r.refills, r.drug,
290 d.name, d.ndc_number, d.form, d.size, d.unit, d.reactions,
291 s.sale_id, s.sale_date, s.quantity,
292 i.manufacturer, i.lot_number, i.expiration,
293 p.pubpid, p.fname, p.lname, p.mname,
294 concat(p.fname, ' ', p.lname) AS patient_name, p.id AS patient_id, DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(),p.dob)), '%Y')+0 AS patient_age, p.sex AS patient_sex, p.ethnoracial AS patient_ethnic,
295 u.facility_id, concat(u.fname, ' ', u.lname) AS users_provider
296 FROM prescriptions AS r
297 LEFT OUTER JOIN drugs AS d ON d.drug_id = r.drug_id
298 LEFT OUTER JOIN drug_sales AS s ON s.prescription_id = r.id
299 LEFT OUTER JOIN drug_inventory AS i ON i.inventory_id = s.inventory_id
300 LEFT OUTER JOIN patient_data AS p ON p.pid = r.patient_id
301 LEFT OUTER JOIN users AS u ON u.id = r.provider_id ";
303 $where_str =
305 WHERE r.date_modified >= ?
306 AND r.date_modified < DATE_ADD(?, INTERVAL 1 DAY) AND r.date_modified < ?";
308 array_push($sqlBindArray, $sql_date_from, $sql_date_to, date("Y-m-d"));
310 if(strlen($sql_gender) > 0)
312 $where_str .= "AND p.sex = ? ";
313 array_push($sqlBindArray, $sql_gender);
316 if(strlen($sql_ethnicity) > 0)
318 $where_str .= "AND p.ethnoracial = ? ";
319 array_push($sqlBindArray, $sql_ethnicity);
322 if(strlen($age_from) > 0)
324 $where_str .= "AND DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(),p.dob)), '%Y')+0 >= ? ";
325 array_push($sqlBindArray, $age_from);
328 if(strlen($age_to) > 0)
330 $where_str .= "AND DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(),p.dob)), '%Y')+0 <= ? ";
331 array_push($sqlBindArray, $age_to);
334 if(strlen($patient_id) > 0)
336 $where_str .= "AND p.id = ? ";
337 array_push($sqlBindArray, $patient_id);
340 if(strlen($form_drug_name) > 0)
342 $where_str .= "AND (
343 d.name LIKE ?
344 OR r.drug LIKE ?
345 ) ";
346 array_push($sqlBindArray, $form_drug_name, $form_drug_name);
349 if(strlen($form_lot_number) > 0)
351 $where_str .= "AND i.lot_number LIKE ? ";
352 array_push($sqlBindArray, $form_lot_number);
355 if($facility != '')
357 $where_str = $where_str." and u.facility_id = ? ";
358 array_push($sqlBindArray, $facility);
361 $sqlstmt .= $where_str . "ORDER BY p.lname, p.fname, p.pubpid, r.id, s.sale_id";
363 else
365 $sqlstmt = "select
366 concat(pd.fname, ' ', pd.lname) AS patient_name,
367 pd.id AS patient_id,
368 DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(),pd.dob)), '%Y')+0 AS patient_age,
369 pd.sex AS patient_sex,
370 pd.ethnoracial AS patient_ethnic,
371 concat(u.fname, ' ', u.lname) AS users_provider, ";
373 if ( $type == 'Diagnosis' )
376 $sqlstmt = $sqlstmt."li.date AS lists_date,
377 li.diagnosis AS lists_diagnosis,
378 li.title AS lists_title ";
381 if ( $type == 'Procedure')
383 $sqlstmt = $sqlstmt."po.date_ordered AS procedure_order_date_ordered,
384 pt.standard_code AS procedure_type_standard_code,
385 pt.name as procedure_name,
386 po.order_priority AS procedure_order_order_priority,
387 po.order_status AS procedure_order_order_status,
388 po.encounter_id AS procedure_order_encounter,
389 po.patient_instructions AS procedure_order_patient_instructions,
390 po.activity AS procedure_order_activity,
391 po.control_id AS procedure_order_control_id ";
394 if ( $type == 'Medical History')
396 $sqlstmt = $sqlstmt."hd.date AS history_data_date,
397 hd.tobacco AS history_data_tobacco,
398 hd.alcohol AS history_data_alcohol,
399 hd.recreational_drugs AS history_data_recreational_drugs ";
402 if ( $type == 'Lab Results')
404 $sqlstmt = $sqlstmt."pr.date AS procedure_result_date,
405 pr.facility AS procedure_result_facility,
406 pr.units AS procedure_result_units,
407 pr.result AS procedure_result_result,
408 pr.range AS procedure_result_range,
409 pr.abnormal AS procedure_result_abnormal,
410 pr.comments AS procedure_result_comments,
411 pr.document_id AS procedure_result_document_id ";
414 if($type == 'Service Codes')
416 $sqlstmt .= "pd.dob AS date_of_birth, c.code,
417 c.code_text,
418 fe.encounter,
419 b.date,
420 concat(u.fname, ' ', u.lname) AS provider_name ";
423 // from
424 $sqlstmt = $sqlstmt."from patient_data as pd ";
426 // where
427 $sqlstmt = $sqlstmt."left outer join users as u on u.id = pd.providerid
428 left outer join facility as f on f.id = u.facility_id ";
430 if($type == 'Diagnosis')
432 $sqlstmt = $sqlstmt." left outer join lists as li on li.pid = pd.id ";
435 if ( $type == 'Procedure' || $type == 'Lab Results' )
437 $sqlstmt = $sqlstmt."left outer join procedure_order as po on po.patient_id = pd.pid
438 left outer join procedure_report as pp on pp.procedure_order_id = po.procedure_order_id
439 left outer join procedure_type as pt on pt.procedure_type_id = po.procedure_type_id ";
443 if ( $type == 'Lab Results' )
445 $sqlstmt = $sqlstmt."left outer join procedure_result as pr on pr.procedure_report_id = pp.procedure_report_id
446 and pr.procedure_type_id = po.procedure_type_id ";
449 if ( $type == 'Medical History')
451 $sqlstmt = $sqlstmt."left outer join history_data as hd on hd.pid = pd.id
452 and (isnull(hd.tobacco) = 0
453 or isnull(hd.alcohol) = 0
454 or isnull(hd.recreational_drugs) = 0) ";
457 if($type == 'Service Codes')
459 $sqlstmt = $sqlstmt."left outer join billing as b on b.pid = pd.id
460 left outer join form_encounter as fe on fe.encounter = b.encounter and b.code_type = 'CPT4'
461 left outer join codes as c on c.code = b.code ";
464 if ( $type == 'Diagnosis')
465 { $dt_field = 'li.date'; }
466 if ( $type == 'Medical History')
467 { $dt_field = 'hd.date'; }
468 if ( $type == 'Lab Results')
469 { $dt_field = 'pr.date'; }
470 if ( $type == 'Procedure')
471 { $dt_field = 'po.date_ordered'; }
472 if($type == 'Service Codes')
473 { $dt_field = 'b.date'; }
475 $sqlstmt = $sqlstmt." where $dt_field >= ? AND $dt_field < DATE_ADD(?, INTERVAL 1 DAY) AND $dt_field < ?";
476 array_push($sqlBindArray, $sql_date_from, $sql_date_to, date("Y-m-d"));
478 if ( strlen($patient_id) != 0)
480 $sqlstmt = $sqlstmt." and pd.id = ?";
481 array_push($sqlBindArray, $patient_id);
484 if ( strlen($age_from) != 0)
486 $sqlstmt = $sqlstmt." and DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(),pd.dob)), '%Y')+0 >= ?";
487 array_push($sqlBindArray, $age_from);
489 if ( strlen($age_to) != 0)
491 $sqlstmt = $sqlstmt." and DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(),pd.dob)), '%Y')+0 <= ?";
492 array_push($sqlBindArray, $age_to);
495 if ( strlen($sql_gender) != 0)
497 $sqlstmt = $sqlstmt." and pd.sex = ?";
498 array_push($sqlBindArray, $sql_gender);
500 if ( strlen($sql_ethnicity) != 0)
502 $sqlstmt = $sqlstmt." and pd.ethnoracial = ?";
503 array_push($sqlBindArray, $sql_ethnicity);
506 if($facility != '')
508 $sqlstmt = $sqlstmt." and f.id = ? ";
509 array_push($sqlBindArray, $facility);
512 if($type == 'Diagnosis')
514 $sqlstmt = $sqlstmt." union
515 select concat(pd.fname, ' ', pd.lname),
516 pd.id,
517 DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(),pd.dob)), '%Y')+0,
518 pd.sex,
519 pd.ethnoracial,
520 concat(u.fname, ' ', u.lname),
521 fe.date,
523 fe.reason
524 from patient_data as pd
525 left outer join users as u on u.id = pd.providerid
526 left outer join facility as f on f.id = u.facility_id
527 left outer join form_encounter as fe on fe.pid = pd.id
528 and fe.date >= ? AND fe.date <= ? ";
529 array_push($sqlBindArray, $sql_date_from, $sql_date_to);
530 if ( strlen($patient_id) != 0)
532 $sqlstmt = $sqlstmt." where pd.id = ?";
533 array_push($sqlBindArray, $patient_id);
535 if ( strlen($age_from) != 0)
537 $sqlstmt = $sqlstmt." and DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(),pd.dob)), '%Y')+0 >= ?";
538 array_push($sqlBindArray, $age_from);
540 if ( strlen($age_to) != 0)
542 $sqlstmt = $sqlstmt." and DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(),pd.dob)), '%Y')+0 <= ?";
543 array_push($sqlBindArray, $age_to);
545 if ( strlen($sql_gender) != 0)
547 $sqlstmt = $sqlstmt." and pd.sex = ?";
548 array_push($sqlBindArray, $sql_gender);
550 if ( strlen($sql_ethnicity) != 0)
552 $sqlstmt = $sqlstmt." and pd.ethnoracial = ?";
553 array_push($sqlBindArray, $sql_ethnicity);
556 if($facility != '')
558 $sqlstmt = $sqlstmt." and f.id = ? ";
559 array_push($sqlBindArray, $facility);
565 //echo $sqlstmt;
567 $result = sqlStatement($sqlstmt,$sqlBindArray);
569 if(sqlNumRows($result) > 0)
572 <div id="report_results">
573 <table>
574 <thead>
575 <?php
576 if($type == 'Service Codes')
579 <th><?php echo htmlspecialchars(xl('Code'),ENT_NOQUOTES); ?></th>
580 <th> <?php echo htmlspecialchars(xl('CPT4 Description'),ENT_NOQUOTES); ?></th>
581 <th> <?php echo htmlspecialchars(xl('Patient Name'),ENT_NOQUOTES); ?></th>
582 <th> <?php echo htmlspecialchars(xl('Date of Birth'),ENT_NOQUOTES); ?></th>
583 <th> <?php echo htmlspecialchars(xl('Patient ID'),ENT_NOQUOTES); ?></th>
584 <th> <?php echo htmlspecialchars(xl('Encounter ID'),ENT_NOQUOTES); ?></th>
585 <th> <?php echo htmlspecialchars(xl('Date of Visit'),ENT_NOQUOTES); ?></th>
586 <th> <?php echo htmlspecialchars(xl('Provider'),ENT_NOQUOTES); ?></th>
587 <?php
589 else
592 <th><?php echo htmlspecialchars(xl('Patient'),ENT_NOQUOTES); ?></th>
593 <th> <?php echo htmlspecialchars(xl('ID'),ENT_NOQUOTES); ?></th>
594 <th> <?php echo htmlspecialchars(xl('Age'),ENT_NOQUOTES); ?></th>
595 <th> <?php echo htmlspecialchars(xl('Gender'),ENT_NOQUOTES); ?></th>
596 <th> <?php echo htmlspecialchars(xl('Race'),ENT_NOQUOTES); ?></th>
597 <th> <?php echo htmlspecialchars(xl('Provider'),ENT_NOQUOTES); ?></th>
598 <?php
602 <?php
603 if($type == 'Prescription')
606 <th> <?php echo htmlspecialchars(xl('Date'),ENT_NOQUOTES); ?> </th>
607 <th> <?php echo htmlspecialchars(xl('RX'),ENT_NOQUOTES); ?> </th>
608 <th> <?php echo htmlspecialchars(xl('Drug Name'),ENT_NOQUOTES); ?> </th>
609 <th> <?php echo htmlspecialchars(xl('NDC'),ENT_NOQUOTES); ?> </th>
610 <th> <?php echo htmlspecialchars(xl('Units'),ENT_NOQUOTES); ?> </th>
611 <th> <?php echo htmlspecialchars(xl('Refills'),ENT_NOQUOTES); ?> </th>
612 <th> <?php echo htmlspecialchars(xl('Instructed'),ENT_NOQUOTES); ?> </th>
613 <th> <?php echo htmlspecialchars(xl('Reactions'),ENT_NOQUOTES); ?> </th>
614 <th> <?php echo htmlspecialchars(xl('Dispensed'),ENT_NOQUOTES); ?> </th>
615 <th> <?php echo htmlspecialchars(xl('Qty'),ENT_NOQUOTES); ?> </th>
616 <th> <?php echo htmlspecialchars(xl('Manufacturer'),ENT_NOQUOTES); ?> </th>
617 <th> <?php echo htmlspecialchars(xl('Lot'),ENT_NOQUOTES); ?> </th>
618 <?php
622 <?php
623 if($type == 'Diagnosis')
626 <!-- Diagnosis -->
627 <th> <?php echo htmlspecialchars(xl('Date'),ENT_NOQUOTES); ?></th>
628 <th> <?php echo htmlspecialchars(xl('DX'),ENT_NOQUOTES); ?></th>
629 <th> <?php echo htmlspecialchars(xl('Diagnosis Name'),ENT_NOQUOTES); ?></th>
630 <?php
634 <?php
635 if($type == 'Procedure')
639 <!-- Procedure -->
640 <th> <?php echo htmlspecialchars(xl('Date'),ENT_NOQUOTES); ?></th>
641 <th> <?php echo htmlspecialchars(xl('CPT'),ENT_NOQUOTES); ?></th>
642 <th> <?php echo htmlspecialchars(xl('Service Code'),ENT_NOQUOTES); ?></th>
643 <th> <?php echo htmlspecialchars(xl('Encounter'),ENT_NOQUOTES); ?></th>
644 <th> <?php echo htmlspecialchars(xl('Priority'),ENT_NOQUOTES); ?></th>
645 <th> <?php echo htmlspecialchars(xl('Status'),ENT_NOQUOTES); ?></th>
646 <th> <?php echo htmlspecialchars(xl('Patient Instructions'),ENT_NOQUOTES); ?></th>
647 <th> <?php echo htmlspecialchars(xl('Activity'),ENT_NOQUOTES); ?></th>
648 <th> <?php echo htmlspecialchars(xl('Control ID'),ENT_NOQUOTES); ?></th>
649 <?php
653 <?php
654 if($type == 'Medical History')
657 <!-- Medical History -->
658 <th> <?php echo htmlspecialchars(xl('Date'),ENT_NOQUOTES); ?></th>
659 <th> <?php echo htmlspecialchars(xl('Smoking'),ENT_NOQUOTES); ?></th>
660 <th> <?php echo htmlspecialchars(xl('Alcohol'),ENT_NOQUOTES); ?></th>
661 <th> <?php echo htmlspecialchars(xl('Rec. Drugs'),ENT_NOQUOTES); ?></th>
662 <?php
666 <?php
667 if($type == 'Lab Results')
670 <!-- Lab Results -->
671 <th> <?php echo htmlspecialchars(xl('Date'),ENT_NOQUOTES); ?></th>
672 <th> <?php echo htmlspecialchars(xl('Facility'),ENT_NOQUOTES); ?></th>
673 <th> <?php echo htmlspecialchars(xl('Units'),ENT_NOQUOTES); ?></th>
674 <th> <?php echo htmlspecialchars(xl('Result'),ENT_NOQUOTES); ?></th>
675 <th> <?php echo htmlspecialchars(xl('Range'),ENT_NOQUOTES); ?></th>
676 <th> <?php echo htmlspecialchars(xl('Abnormal'),ENT_NOQUOTES); ?></th>
677 <th> <?php echo htmlspecialchars(xl('Comments'),ENT_NOQUOTES); ?></th>
678 <th> <?php echo htmlspecialchars(xl('Document ID'),ENT_NOQUOTES); ?></th>
679 <?php
682 </thead>
683 <tbody>
685 <?php
686 if($type == 'Prescription')
688 $last_patient_id = 0;
689 $last_prescription_id = 0;
690 while ($row = sqlFetchArray($result))
692 $prescription_id = $row['id'];
693 $drug_name = empty($row['name']) ? $row['drug'] : $row['name'];
694 $ndc_number = $row['ndc_number'];
695 $drug_units = $row['size'] . ' ' .
696 generate_display_field(array('data_type'=>'1','list_id'=>'drug_units'), $row['unit']);
697 $refills = $row['refills'];
698 $reactions = $row['reactions'];
699 $instructed = $row['dosage'] . ' ' .
701 generate_display_field(array('data_type'=>'1','list_id'=>'drug_form'), $row['form']) . ' ' .
702 generate_display_field(array('data_type'=>'1','list_id'=>'drug_interval'), $row['interval']);
704 //if ($row['patient_id'] == $last_patient_id) {
705 if (strcmp($row['pubpid'], $last_patient_id) == 0)
707 $patient_name = '&nbsp;';
708 $patient_id = '&nbsp;';
710 if ($row['id'] == $last_prescription_id)
712 $prescription_id = '&nbsp;';
713 $drug_name = '&nbsp;';
714 $ndc_number = '&nbsp;';
715 $drug_units = '&nbsp;';
716 $refills = '&nbsp;';
717 $reactions = '&nbsp;';
718 $instructed = '&nbsp;';
722 <tr>
723 <td> <a target="RBot" href="../patient_file/summary/demographics.php?pid=<?php echo htmlspecialchars($row['patient_id'],ENT_QUOTES);?>"><?php echo htmlspecialchars($row['patient_name'],ENT_NOQUOTES); ?></a>&nbsp;</td>
724 <td> <?php echo htmlspecialchars($row['patient_id'],ENT_NOQUOTES); ?>&nbsp;</td>
725 <td> <?php echo htmlspecialchars($row['patient_age'],ENT_NOQUOTES); ?>&nbsp;</td>
726 <td> <?php echo htmlspecialchars(generate_display_field(array('data_type'=>'1','list_id'=>'sex'), $row['patient_sex']),ENT_NOQUOTES); ?>&nbsp;</td>
727 <td> <?php echo htmlspecialchars(generate_display_field(array('data_type'=>'1','list_id'=>'ethrace'), $row['patient_ethnic']),ENT_NOQUOTES); ?>&nbsp;</td>
728 <td> <?php echo htmlspecialchars($row['users_provider'],ENT_NOQUOTES); ?>&nbsp;</td>
729 <td> <?php echo htmlspecialchars(oeFormatShortDate($row['prescriptions_date_modified']),ENT_NOQUOTES); ?>&nbsp;</td>
730 <td><?php echo htmlspecialchars($prescription_id,ENT_NOQUOTES); ?></td>
731 <td><?php echo htmlspecialchars($drug_name,ENT_NOQUOTES); ?></td>
732 <td><?php echo htmlspecialchars($ndc_number,ENT_NOQUOTES); ?></td>
733 <td><?php echo htmlspecialchars($drug_units,ENT_NOQUOTES); ?></td>
734 <td><?php echo htmlspecialchars($refills,ENT_NOQUOTES); ?></td>
735 <td><?php echo htmlspecialchars($instructed,ENT_NOQUOTES); ?></td>
736 <td><?php echo htmlspecialchars($reactions,ENT_NOQUOTES); ?></td>
737 <td><a href='../drugs/dispense_drug.php?sale_id=<?php echo htmlspecialchars($row['sale_id'],ENT_QUOTES); ?>'
738 style='color:#0000ff' target='_blank'>
739 <?php echo htmlspecialchars(oeFormatShortDate($row['sale_date']),ENT_NOQUOTES); ?>
740 </a>
741 </td>
742 <td><?php echo htmlspecialchars($row['quantity'],ENT_NOQUOTES); ?></td>
743 <td><?php echo htmlspecialchars($row['manufacturer'],ENT_NOQUOTES); ?></td>
744 <td><?php echo htmlspecialchars($row['lot_number'],ENT_NOQUOTES); ?></td>
745 </tr>
746 <?php
747 $last_prescription_id = $row['id'];
748 $last_patient_id = $row['pubpid'];
751 else
753 while($row = sqlFetchArray($result))
756 <tr>
757 <?php
758 if($type == 'Service Codes')
761 <td><?php echo htmlspecialchars($row['code'],ENT_NOQUOTES); ?>&nbsp;</td>
762 <td><?php echo htmlspecialchars($row['code_text'],ENT_NOQUOTES); ?>&nbsp;</td>
763 <td><a target="RBot" href="../patient_file/summary/demographics.php?pid=<?php echo htmlspecialchars($row['patient_id'],ENT_QUOTES);?>"><?php echo htmlspecialchars($row['patient_name'],ENT_NOQUOTES); ?></a>&nbsp;</td>
764 <td><?php echo htmlspecialchars(oeFormatShortDate($row['date_of_birth']),ENT_NOQUOTES); ?>&nbsp;</td>
765 <td><?php echo htmlspecialchars($row['patient_id'],ENT_NOQUOTES); ?>&nbsp;</td>
766 <td><a target="RBot" href="../patient_file/encounter/encounter_top.php?set_encounter=<?php echo htmlspecialchars($row['encounter'],ENT_QUOTES);?>&pid=<?php echo htmlspecialchars($row['patient_id'],ENT_QUOTES);?>"><?php echo htmlspecialchars($row['encounter'],ENT_NOQUOTES); ?></a>&nbsp;</td>
767 <td><?php echo htmlspecialchars(oeFormatShortDate($row['date']),ENT_NOQUOTES); ?>&nbsp;</td>
768 <td><?php echo htmlspecialchars($row['provider_name'],ENT_NOQUOTES); ?>&nbsp;</td>
769 <?php
771 else
774 <td> <a target="RBot" href="../patient_file/summary/demographics.php?pid=<?php echo htmlspecialchars($row['patient_id'],ENT_QUOTES);?>"><?php echo htmlspecialchars($row['patient_name'],ENT_NOQUOTES); ?></a>&nbsp;</td>
775 <td> <?php echo htmlspecialchars($row['patient_id'],ENT_NOQUOTES); ?>&nbsp;</td>
776 <td> <?php echo htmlspecialchars($row['patient_age'],ENT_NOQUOTES); ?>&nbsp;</td>
777 <td> <?php echo htmlspecialchars(generate_display_field(array('data_type'=>'1','list_id'=>'sex'), $row['patient_sex']),ENT_NOQUOTES); ?>&nbsp;</td>
778 <td> <?php echo htmlspecialchars(generate_display_field(array('data_type'=>'1','list_id'=>'ethrace'), $row['patient_ethnic']),ENT_NOQUOTES); ?>&nbsp;</td>
779 <td> <?php echo htmlspecialchars($row['users_provider'],ENT_NOQUOTES); ?>&nbsp;</td>
780 <?php
784 <?php
785 if($type == 'Diagnosis')
788 <!-- Diagnosis -->
789 <td> <?php echo htmlspecialchars(oeFormatShortDate($row['lists_date']),ENT_NOQUOTES); ?>&nbsp;</td>
790 <td> <?php echo htmlspecialchars($row['lists_diagnosis'],ENT_NOQUOTES); ?>&nbsp;</td>
791 <td> <?php echo htmlspecialchars($row['lists_title'],ENT_NOQUOTES); ?>&nbsp;</td>
792 <?php
796 <?php
797 if($type == 'Procedure')
799 $procedure_type_standard_code_arr = explode(':', $row['procedure_type_standard_code']);
800 $procedure_type_standard_code = $procedure_type_standard_code_arr[1];
802 <!-- Procedure -->
803 <td> <?php echo htmlspecialchars(oeFormatShortDate($row['procedure_order_date_ordered']),ENT_NOQUOTES); ?>&nbsp;</td>
804 <td> <?php echo htmlspecialchars($procedure_type_standard_code,ENT_NOQUOTES); ?>&nbsp;</td>
805 <td> <?php echo htmlspecialchars($row['procedure_name'],ENT_NOQUOTES); ?>&nbsp;</td>
806 <td> <a target="RBot" href="../patient_file/encounter/encounter_top.php?set_encounter=<?php echo htmlspecialchars($row['procedure_order_encounter'],ENT_QUOTES);?>&pid=<?php echo htmlspecialchars($row['patient_id'],ENT_QUOTES);?>"><?php echo htmlspecialchars($row['procedure_order_encounter'],ENT_NOQUOTES); ?></a>&nbsp;</td>
807 <td> <?php echo htmlspecialchars(generate_display_field(array('data_type'=>'1','list_id'=>'ord_priority'),$row['procedure_order_order_priority']),ENT_NOQUOTES); ?>&nbsp;</td>
808 <td> <?php echo htmlspecialchars(generate_display_field(array('data_type'=>'1','list_id'=>'ord_status'),$row['procedure_order_order_status']),ENT_NOQUOTES); ?>&nbsp;</td>
809 <td> <?php echo htmlspecialchars($row['procedure_order_patient_instructions'],ENT_NOQUOTES); ?>&nbsp;</td>
810 <td> <?php echo htmlspecialchars($row['procedure_order_activity'],ENT_NOQUOTES); ?>&nbsp;</td>
811 <td> <?php echo htmlspecialchars($row['procedure_order_control_id'],ENT_NOQUOTES); ?>&nbsp;</td>
812 <?php
816 <?php
817 if($type == 'Medical History')
820 <!-- Medical History -->
821 <td> <?php echo htmlspecialchars(oeFormatShortDate($row['history_data_date']),ENT_NOQUOTES); ?>&nbsp;</td>
822 <td> <?php echo htmlspecialchars($row['history_data_tobacco'],ENT_NOQUOTES); ?>&nbsp;</td>
823 <td> <?php echo htmlspecialchars($row['history_data_alcohol'],ENT_NOQUOTES); ?>&nbsp;</td>
824 <td> <?php echo htmlspecialchars($row['history_data_recreational_drugs'],ENT_NOQUOTES); ?>&nbsp;</td>
825 <?php
829 <?php
830 if($type == 'Lab Results')
833 <!-- Lab Results -->
834 <td> <?php echo htmlspecialchars(oeFormatShortDate($row['procedure_result_date']),ENT_NOQUOTES); ?>&nbsp;</td>
835 <td> <?php echo htmlspecialchars($row['procedure_result_facility'],ENT_NOQUOTES); ?>&nbsp;</td>
836 <td> <?php echo htmlspecialchars(generate_display_field(array('data_type'=>'1','list_id'=>'proc_unit'),$row['procedure_result_units']),ENT_NOQUOTES); ?>&nbsp;</td>
837 <td> <?php echo htmlspecialchars($row['procedure_result_result'],ENT_NOQUOTES); ?>&nbsp;</td>
838 <td> <?php echo htmlspecialchars($row['procedure_result_range'],ENT_NOQUOTES); ?>&nbsp;</td>
839 <td> <?php echo htmlspecialchars($row['procedure_result_abnormal'],ENT_NOQUOTES); ?>&nbsp;</td>
840 <td> <?php echo htmlspecialchars($row['procedure_result_comments'],ENT_NOQUOTES); ?>&nbsp;</td>
841 <td> <?php echo htmlspecialchars($row['procedure_result_document_id'],ENT_NOQUOTES); ?>&nbsp;</td>
842 <?php
845 </tr>
846 <?php
850 </tbody>
851 </table>
852 </div>
853 <!-- end of results -->
854 <?php
857 <?php
859 else
861 ?><div class='text'> <?php echo htmlspecialchars(xl('Please input search criteria above, and click Submit to view results.'),ENT_NOQUOTES); ?> </div><?php
864 </form>
865 </body>
867 <!-- stuff for the popup calendar -->
868 <style type="text/css">
869 @import url(../../library/dynarch_calendar.css);
870 </style>
871 <script type="text/javascript" src="../../library/dynarch_calendar.js"></script>
872 <?php include_once("{$GLOBALS['srcdir']}/dynarch_calendar_en.inc.php"); ?>
873 <script type="text/javascript" src="../../library/dynarch_calendar_setup.js"></script>
874 <script language="Javascript">
875 Calendar.setup({inputField:"date_from", ifFormat:"%Y-%m-%d", button:"img_from_date"});
876 Calendar.setup({inputField:"date_to", ifFormat:"%Y-%m-%d", button:"img_to_date"});
877 </script>
878 </html>