dump db version
[openemr.git] / interface / billing / sl_receipts_report.php
blob289fd8f257309a9ed696f2c3f7a20ce3a13984c6
1 <?php
2 /**
3 * Report - Cash receipts by Provider
5 * This module was written for one of my clients to report on cash
6 * receipts by practitioner. It is not as complete as it should be
7 * but I wanted to make the code available to the project because
8 * many other practices have this same need. - rod@sunsetsystems.com
10 * @package OpenEMR
11 * @link http://www.open-emr.org
12 * @author Rod Roark <rod@sunsetsystems.com>
13 * @author Terry Hill <terry@lillysystems.com>
14 * @author Brady Miller <brady.g.miller@gmail.com>
15 * @copyright Copyright (c) 2006-2016 Rod Roark <rod@sunsetsystems.com>
16 * @copyright Copyright (c) 2016 Terry Hill <terry@lillysystems.com>
17 * @copyright Copyright (c) 2017 Brady Miller <brady.g.miller@gmail.com>
18 * @license https://github.com/openemr/openemr/blob/master/LICENSE GNU General Public License 3
22 require_once('../globals.php');
23 require_once($GLOBALS['srcdir'].'/patient.inc');
24 require_once($GLOBALS['srcdir'].'/acl.inc');
25 require_once($GLOBALS['srcdir'].'/options.inc.php');
26 require_once($GLOBALS['fileroot'].'/custom/code_types.inc.php');
27 // This determines if a particular procedure code corresponds to receipts
28 // for the "Clinic" column as opposed to receipts for the practitioner. Each
29 // practice will have its own policies in this regard, so you'll probably
30 // have to customize this function. If you use the "fee sheet" encounter
31 // form then the code below may work for you.
33 require_once('../forms/fee_sheet/codes.php');
35 use OpenEMR\Core\Header;
37 function is_clinic($code)
39 global $bcodes;
40 $i = strpos($code, ':');
41 if ($i) {
42 $code = substr($code, 0, $i);
45 return ($bcodes['CPT4'][xl('Lab')][$code] ||
46 $bcodes['CPT4'][xl('Immunizations')][$code] ||
47 $bcodes['HCPCS'][xl('Therapeutic Injections')][$code]);
50 function bucks($amount)
52 if ($amount) {
53 echo attr(oeFormatMoney($amount));
57 if (! acl_check('acct', 'rep')) {
58 die(xlt("Unauthorized access."));
62 $form_use_edate = $_POST['form_use_edate'];
64 $form_proc_codefull = trim($_POST['form_proc_codefull']);
65 // Parse the code type and the code from <code_type>:<code>
66 $tmp_code_array = explode(':', $form_proc_codefull);
67 $form_proc_codetype = $tmp_code_array[0];
68 $form_proc_code = $tmp_code_array[1];
70 $form_dx_codefull = trim($_POST['form_dx_codefull']);
71 // Parse the code type and the code from <code_type>:<code>
72 $tmp_code_array = explode(':', $form_dx_codefull);
73 $form_dx_codetype = $tmp_code_array[0];
74 $form_dx_code = $tmp_code_array[1];
76 $form_procedures = empty($_POST['form_procedures']) ? 0 : 1;
77 $form_from_date = (isset($_POST['form_from_date'])) ? DateToYYYYMMDD($_POST['form_from_date']) : date('Y-m-01');
78 $form_to_date = (isset($_POST['form_to_date'])) ? DateToYYYYMMDD($_POST['form_to_date']) : date('Y-m-d');
80 $form_facility = $_POST['form_facility'];
82 <html>
83 <head>
85 <title><?php echo xlt('Cash Receipts by Provider')?></title>
87 <?php Header::setupHeader(['datetime-picker', 'report-helper']); ?>
89 <style type="text/css">
90 /* specifically include & exclude from printing */
91 @media print {
92 #report_parameters {
93 visibility: hidden;
94 display: none;
96 #report_parameters_daterange {
97 visibility: visible;
98 display: inline;
100 #report_results {
101 margin-top: 30px;
105 /* specifically exclude some from the screen */
106 @media screen {
107 #report_parameters_daterange {
108 visibility: hidden;
109 display: none;
112 </style>
114 <script language="JavaScript">
115 $(document).ready(function() {
116 oeFixedHeaderSetup(document.getElementById('mymaintable'));
117 var win = top.printLogSetup ? top : opener.top;
118 win.printLogSetup(document.getElementById('printbutton'));
120 $('.datepicker').datetimepicker({
121 <?php $datetimepicker_timepicker = false; ?>
122 <?php $datetimepicker_showseconds = false; ?>
123 <?php $datetimepicker_formatInput = true; ?>
124 <?php require($GLOBALS['srcdir'] . '/js/xl/jquery-datetimepicker-2-5-4.js.php'); ?>
125 <?php // can add any additional javascript settings to datetimepicker here; need to prepend first setting with a comma ?>
129 // This is for callback by the find-code popup.
130 // Erases the current entry
131 // The target element is set by the find-code popup
132 // (this allows use of this in multiple form elements on the same page)
133 function set_related_target(codetype, code, selector, codedesc, target_element) {
134 var f = document.forms[0];
135 var s = f[target_element].value;
136 if (code) {
137 s = codetype + ':' + code;
138 } else {
139 s = '';
141 f[target_element].value = s;
144 // This invokes the find-code (procedure/service codes) popup.
145 function sel_procedure() {
146 dlgopen('../patient_file/encounter/find_code_popup.php?target_element=form_proc_codefull&codetype=<?php echo attr(collect_codetypes("procedure", "csv")) ?>', '_blank', 500, 400);
149 // This invokes the find-code (diagnosis codes) popup.
150 function sel_diagnosis() {
151 dlgopen('../patient_file/encounter/find_code_popup.php?target_element=form_dx_codefull&codetype=<?php echo attr(collect_codetypes("diagnosis", "csv")) ?>', '_blank', 500, 400);
154 </script>
155 </head>
157 <body class="body_top">
159 <span class='title'><?php echo xlt('Report'); ?> - <?php echo xlt('Cash Receipts by Provider'); ?></span>
161 <form method='post' action='sl_receipts_report.php' id='theform' onsubmit='return top.restoreSession()'>
162 <input type="hidden" name="csrf_token_form" value="<?php echo attr(collectCsrfToken()); ?>" />
164 <div id="report_parameters">
166 <input type='hidden' name='form_refresh' id='form_refresh' value=''/>
168 <table>
169 <tr>
170 <td width='660px'>
171 <div style='float:left'>
173 <table class='text'>
174 <tr>
175 <td class='control-label'>
176 <?php echo xlt('Facility'); ?>:
177 </td>
178 <td>
179 <?php dropdown_facility($form_facility, 'form_facility'); ?>
180 </td>
181 <td class='control-label'>
182 <?php echo xlt('Provider'); ?>:
183 </td>
184 <td>
185 <?php
186 if (acl_check('acct', 'rep_a')) {
187 // Build a drop-down list of providers.
189 $query = "select id, lname, fname from users where " .
190 "authorized = 1 order by lname, fname";
191 $res = sqlStatement($query);
192 echo " &nbsp;<select name='form_doctor' class='form-control'>\n";
193 echo " <option value=''>-- " . xlt('All Providers') . " --\n";
194 while ($row = sqlFetchArray($res)) {
195 $provid = $row['id'];
196 echo " <option value='". attr($provid) ."'";
197 if ($provid == $_POST['form_doctor']) {
198 echo " selected";
201 echo ">" . text($row['lname']) . ", " . text($row['fname']) . "\n";
204 echo " </select>\n";
205 } else {
206 echo "<input type='hidden' name='form_doctor' value='" . attr($_SESSION['authUserID']) . "'>";
209 </td>
210 <td>
211 <select name='form_use_edate' class='form-control'>
212 <option value='0'><?php echo xlt('Payment Date'); ?></option>
213 <option value='1'<?php echo ($form_use_edate) ? ' selected' : ''; ?>><?php echo xlt('Invoice Date'); ?></option>
214 </select>
215 </td>
216 </tr>
217 <tr>
218 <td class='control-label'>
219 <?php echo xlt('From'); ?>:
220 </td>
221 <td>
222 <input type='text' class='datepicker form-control' name='form_from_date' id="form_from_date" size='10' value='<?php echo attr(oeFormatShortDate($form_from_date)); ?>'
223 title='<?php echo xla('Date of appointments'); ?>' >
224 </td>
225 <td class='control-label'>
226 <?php echo xlt('To'); ?>:
227 </td>
228 <td>
229 <input type='text' class='datepicker form-control' name='form_to_date' id="form_to_date" size='10' value='<?php echo attr(oeFormatShortDate($form_to_date)); ?>'
230 title='<?php echo xla('Optional end date'); ?>' >
231 </td>
232 <td>&nbsp;</td>
233 </tr>
234 <tr>
235 <td class='control-label'>
236 <?php
237 if (!$GLOBALS['simplified_demographics']) {
238 echo '&nbsp;' . xlt('Procedure/Service') . ':';
239 } ?>
240 </td>
241 <td>
242 <input type='text' class='form-control' name='form_proc_codefull' size='11' value='<?php echo attr($form_proc_codefull); ?>' onclick='sel_procedure()'
243 title='<?php echo xla('Optional procedure/service code'); ?>'
244 <?php
245 if ($GLOBALS['simplified_demographics']) {
246 echo "style='display:none'";
247 } ?>>
248 </td>
250 <td class='control-label'>
251 <?php
252 if (!$GLOBALS['simplified_demographics']) {
253 echo '&nbsp;' . xlt('Diagnosis') . ':';
254 } ?>
255 </td>
256 <td>
257 <input type='text' class='form-control' name='form_dx_codefull' size='11' value='<?php echo attr($form_dx_codefull); ?>' onclick='sel_diagnosis()'
258 title='<?php echo xla('Enter a diagnosis code to exclude all invoices not containing it'); ?>'
259 <?php
260 if ($GLOBALS['simplified_demographics']) {
261 echo "style='display:none'";
262 } ?>>
263 </td>
265 <td>
266 <div class='checkbox'>
267 <label><input type='checkbox' name='form_details' value='1'<?php echo ($_POST['form_details']) ? " checked" : ""; ?>><?php echo xlt('Details')?></label>
268 </div>
269 <div class='checkbox'>
270 <label><input type='checkbox' name='form_procedures' value='1'<?php echo ($form_procedures) ? " checked" : ""; ?>><?php echo xlt('Procedures')?></label>
271 </div>
272 </td>
273 </tr>
275 </table>
277 </div>
279 </td>
281 <td align='left' valign='middle' height="100%">
283 <table style='border-left:1px solid; width:100%; height:100%' >
284 <tr>
285 <td>
286 <div class="text-center">
287 <div class="btn-group" role="group">
288 <a href='#' class='btn btn-default btn-save' onclick='$("#form_refresh").attr("value","true"); $("#theform").submit();'>
289 <?php echo xlt('Submit'); ?>
290 </a>
291 <?php if ($_POST['form_refresh']) { ?>
292 <a href='#' class='btn btn-default btn-print' id='printbutton'>
293 <?php echo xlt('Print'); ?>
294 </a>
295 <?php } ?>
296 </div>
297 </div>
298 </td>
299 </tr>
300 </table>
301 </td>
302 </tr>
303 </table>
304 </div>
306 <?php
307 if ($_POST['form_refresh']) {
308 if (!verifyCsrfToken($_POST["csrf_token_form"])) {
309 csrfNotVerified();
313 <div id="report_results">
314 <table border='0' cellpadding='1' cellspacing='2' width='98%' id='mymaintable'>
315 <thead>
316 <th>
317 <?php echo xlt('Practitioner') ?>
318 </th>
319 <th>
320 <?php echo xlt('Date') ?>
321 </th>
322 <?php if ($form_procedures) { ?>
323 <th>
324 <?php
325 if ($GLOBALS['cash_receipts_report_invoice'] == '0') {
326 echo xlt('Invoice');
327 } else {
328 echo xlt('Name');
330 </th>
331 <?php } ?>
332 <?php if ($form_proc_codefull) { ?>
333 <th align='right'>
334 <?php echo xlt('InvAmt') ?>
335 </th>
336 <?php } ?>
337 <?php if ($form_proc_codefull) { ?>
338 <th>
339 <?php echo xlt('Insurance') ?>
340 </th>
341 <?php } ?>
342 <?php if ($form_procedures) { ?>
343 <th>
344 <?php echo xlt('Procedure') ?>
345 </th>
346 <th align="right">
347 <?php echo xlt('Prof.') ?>
348 </th>
349 <th align="right">
350 <?php echo xlt('Clinic') ?>
351 </th>
352 <?php } else { ?>
353 <th align="right">
354 <?php echo xlt('Received') ?>
355 </th>
356 <?php } ?>
357 </thead>
358 <?php
359 if ($_POST['form_refresh']) {
360 $form_doctor = $_POST['form_doctor'];
361 $arows = array();
363 $ids_to_skip = array();
364 $irow = 0;
366 // Get copays. These will be ignored if a CPT code was specified.
368 if (!$form_proc_code || !$form_proc_codetype) {
369 /*************************************************************
370 $query = "SELECT b.fee, b.pid, b.encounter, b.code_type, b.code, b.modifier, " .
371 "fe.date, fe.id AS trans_id, u.id AS docid " .
372 "FROM billing AS b " .
373 "JOIN form_encounter AS fe ON fe.pid = b.pid AND fe.encounter = b.encounter " .
374 "JOIN forms AS f ON f.pid = b.pid AND f.encounter = b.encounter AND f.formdir = 'newpatient' " .
375 "LEFT OUTER JOIN users AS u ON u.username = f.user " .
376 "WHERE b.code_type = 'COPAY' AND b.activity = 1 AND " .
377 "fe.date >= '$form_from_date 00:00:00' AND fe.date <= '$form_to_date 23:59:59'";
378 // If a facility was specified.
379 if ($form_facility) {
380 $query .= " AND fe.facility_id = '$form_facility'";
382 // If a doctor was specified.
383 if ($form_doctor) {
384 $query .= " AND u.id = '$form_doctor'";
386 *************************************************************/
387 $sqlBindArray = array();
388 $query = "SELECT b.fee, b.pid, b.encounter, b.code_type, b.code, b.modifier, " .
389 "fe.date, fe.id AS trans_id, fe.provider_id AS docid, fe.invoice_refno " .
390 "FROM billing AS b " .
391 "JOIN form_encounter AS fe ON fe.pid = b.pid AND fe.encounter = b.encounter " .
392 "WHERE b.code_type = 'COPAY' AND b.activity = 1 AND " .
393 "fe.date >= ? AND fe.date <= ?";
394 array_push($sqlBindArray, $form_from_date . " 00:00:00", $form_to_date . " 23:59:59");
395 // If a facility was specified.
396 if ($form_facility) {
397 $query .= " AND fe.facility_id = ?";
398 array_push($sqlBindArray, $form_facility);
401 // If a doctor was specified.
402 if ($form_doctor) {
403 $query .= " AND fe.provider_id = ?";
404 array_push($sqlBindArray, $form_doctor);
407 /************************************************************/
409 $res = sqlStatement($query, $sqlBindArray);
410 while ($row = sqlFetchArray($res)) {
411 $trans_id = $row['trans_id'];
412 $thedate = substr($row['date'], 0, 10);
413 $patient_id = $row['pid'];
414 $encounter_id = $row['encounter'];
416 if (!empty($ids_to_skip[$trans_id])) {
417 continue;
421 // If a diagnosis code was given then skip any invoices without
422 // that diagnosis.
423 if ($form_dx_code && $form_dx_codetype) {
424 $tmp = sqlQuery("SELECT count(*) AS count FROM billing WHERE " .
425 "pid = ? AND encounter = ? AND " .
426 "code_type = ? AND code LIKE ? AND " .
427 "activity = 1", array($patient_id,$encounter_id,$form_dx_codetype,$form_dx_code));
428 if (empty($tmp['count'])) {
429 $ids_to_skip[$trans_id] = 1;
430 continue;
435 $key = sprintf(
436 "%08u%s%08u%08u%06u",
437 $row['docid'],
438 $thedate,
439 $patient_id,
440 $encounter_id,
441 ++$irow
443 $arows[$key] = array();
444 $arows[$key]['transdate'] = $thedate;
445 $arows[$key]['amount'] = $row['fee'];
446 $arows[$key]['docid'] = $row['docid'];
447 $arows[$key]['project_id'] = 0;
448 $arows[$key]['memo'] = '';
449 if ($GLOBALS['cash_receipts_report_invoice'] == '0') {
450 $arows[$key]['invnumber'] = "$patient_id.$encounter_id";
451 } else {
452 $arows[$key]['invnumber'] = "$patient_name";
455 $arows[$key]['irnumber'] = $row['invoice_refno'];
456 } // end while
457 } // end copays (not $form_proc_code)
459 // Get ar_activity (having payments), form_encounter, forms, users, optional ar_session
460 /***************************************************************
461 $query = "SELECT a.pid, a.encounter, a.post_time, a.code, a.modifier, a.pay_amount, " .
462 "fe.date, fe.id AS trans_id, u.id AS docid, s.deposit_date, s.payer_id " .
463 "FROM ar_activity AS a " .
464 "JOIN form_encounter AS fe ON fe.pid = a.pid AND fe.encounter = a.encounter " .
465 "JOIN forms AS f ON f.pid = a.pid AND f.encounter = a.encounter AND f.formdir = 'newpatient' " .
466 "LEFT OUTER JOIN users AS u ON u.username = f.user " .
467 "LEFT OUTER JOIN ar_session AS s ON s.session_id = a.session_id " .
468 "WHERE a.pay_amount != 0 AND ( " .
469 "a.post_time >= '$form_from_date 00:00:00' AND a.post_time <= '$form_to_date 23:59:59' " .
470 "OR fe.date >= '$form_from_date 00:00:00' AND fe.date <= '$form_to_date 23:59:59' " .
471 "OR s.deposit_date >= '$form_from_date' AND s.deposit_date <= '$form_to_date' )";
472 // If a procedure code was specified.
473 if ($form_proc_code) $query .= " AND a.code = '$form_proc_code'";
474 // If a facility was specified.
475 if ($form_facility) $query .= " AND fe.facility_id = '$form_facility'";
476 // If a doctor was specified.
477 if ($form_doctor) $query .= " AND u.id = '$form_doctor'";
478 ***************************************************************/
479 $sqlBindArray = array();
480 $query = "SELECT a.pid, a.encounter, a.post_time, a.code, a.modifier, a.pay_amount, " .
481 "fe.date, fe.id AS trans_id, fe.provider_id AS docid, fe.invoice_refno, s.deposit_date, s.payer_id, " .
482 "b.provider_id, concat(p.lname, ' ', p.fname) as 'pat_fulname' " .
483 "FROM ar_activity AS a " .
484 "JOIN form_encounter AS fe ON fe.pid = a.pid AND fe.encounter = a.encounter " .
485 "LEFT OUTER JOIN ar_session AS s ON s.session_id = a.session_id " .
486 "LEFT OUTER JOIN patient_data AS p ON p.pid = a.pid " .
487 "LEFT OUTER JOIN billing AS b ON b.pid = a.pid AND b.encounter = a.encounter AND " .
488 "b.code = a.code AND b.modifier = a.modifier AND b.activity = 1 AND " .
489 "b.code_type != 'COPAY' AND b.code_type != 'TAX' " .
490 "WHERE a.pay_amount != 0 AND ( " .
491 "a.post_time >= ? AND a.post_time <= ? " .
492 "OR fe.date >= ? AND fe.date <= ? " .
493 "OR s.deposit_date >= ? AND s.deposit_date <= ? )";
494 array_push($sqlBindArray, $form_from_date . " 00:00:00", $form_to_date . " 23:59:59", $form_from_date . " 00:00:00", $form_to_date . " 23:59:59", $form_from_date, $form_to_date);
495 // If a procedure code was specified.
496 // Support code type if it is in the ar_activity table. Note it is not always included, so
497 // also support a blank code type in ar_activity table.
498 if ($form_proc_codetype && $form_proc_code) {
499 $query .= " AND (a.code_type = ? OR a.code_type = '') AND a.code = ?";
500 array_push($sqlBindArray, $form_proc_codetype, $form_proc_code);
503 // If a facility was specified.
504 if ($form_facility) {
505 $query .= " AND fe.facility_id = ?";
506 array_push($sqlBindArray, $form_facility);
509 // If a doctor was specified.
510 if ($form_doctor) {
511 $query .= " AND ( b.provider_id = ? OR " .
512 "( ( b.provider_id IS NULL OR b.provider_id = 0 ) AND " .
513 "fe.provider_id = ? ) )";
514 array_push($sqlBindArray, $form_doctor, $form_doctor);
517 /**************************************************************/
519 $res = sqlStatement($query, $sqlBindArray);
520 while ($row = sqlFetchArray($res)) {
521 $trans_id = $row['trans_id'];
522 $patient_id = $row['pid'];
523 $encounter_id = $row['encounter'];
524 $patient_name = $row['pat_fulname'];
526 if (!empty($ids_to_skip[$trans_id])) {
527 continue;
531 if ($form_use_edate) {
532 $thedate = substr($row['date'], 0, 10);
533 } else {
534 if (!empty($row['deposit_date'])) {
535 $thedate = $row['deposit_date'];
536 } else {
537 $thedate = substr($row['post_time'], 0, 10);
541 if (strcmp($thedate, $form_from_date) < 0 || strcmp($thedate, $form_to_date) > 0) {
542 continue;
546 // If a diagnosis code was given then skip any invoices without
547 // that diagnosis.
548 if ($form_dx_code && $form_dx_codetype) {
549 $tmp = sqlQuery("SELECT count(*) AS count FROM billing WHERE " .
550 "pid = ? AND encounter = ? AND " .
551 "code_type = ? AND code LIKE ? AND " .
552 "activity = 1", array($patient_id,$encounter_id,$form_dx_codetype,$form_dx_code));
553 if (empty($tmp['count'])) {
554 $ids_to_skip[$trans_id] = 1;
555 continue;
560 $docid = empty($row['encounter_id']) ? $row['docid'] : $row['encounter_id'];
561 $key = sprintf(
562 "%08u%s%08u%08u%06u",
563 $docid,
564 $thedate,
565 $patient_id,
566 $encounter_id,
567 ++$irow
569 $arows[$key] = array();
570 $arows[$key]['transdate'] = $thedate;
571 $arows[$key]['amount'] = 0 - $row['pay_amount'];
572 $arows[$key]['docid'] = $docid;
573 $arows[$key]['project_id'] = empty($row['payer_id']) ? 0 : $row['payer_id'];
574 $arows[$key]['memo'] = $row['code'];
575 if ($GLOBALS['cash_receipts_report_invoice'] == '0') {
576 $arows[$key]['invnumber'] = "$patient_id.$encounter_id";
577 } else {
578 $arows[$key]['invnumber'] = "$patient_name";
581 $arows[$key]['irnumber'] = $row['invoice_refno'];
582 } // end while
584 ksort($arows);
585 $docid = 0;
587 foreach ($arows as $row) {
588 // Get insurance company name
589 $insconame = '';
590 if ($form_proc_codefull && $row['project_id']) {
591 $tmp = sqlQuery("SELECT name FROM insurance_companies WHERE " .
592 "id = ?", array($row['project_id']));
593 $insconame = $tmp['name'];
596 $amount1 = 0;
597 $amount2 = 0;
598 if ($form_procedures && is_clinic($row['memo'])) {
599 $amount2 -= $row['amount'];
600 } else {
601 $amount1 -= $row['amount'];
604 // if ($docid != $row['employee_id']) {
605 if ($docid != $row['docid']) {
606 if ($docid) {
607 // Print doc totals.
610 <tr bgcolor="#ddddff">
611 <td class="detail" colspan="<?php echo ($form_proc_codefull ? 4 : 2) + ($form_procedures ? 2 : 0); ?>">
612 <?php echo xlt('Totals for ') . text($docname) ?>
613 </td>
614 <td align="right">
615 <?php bucks($doctotal1) ?>
616 </td>
617 <?php if ($form_procedures) { ?>
618 <td align="right">
619 <?php bucks($doctotal2) ?>
620 </td>
621 <?php } ?>
622 </tr>
623 <?php
626 $doctotal1 = 0;
627 $doctotal2 = 0;
629 $docid = $row['docid'];
630 $tmp = sqlQuery("SELECT lname, fname FROM users WHERE id = ?", array($docid));
631 $docname = empty($tmp) ? xl('Unknown') : $tmp['fname'] . ' ' . $tmp['lname'];
633 $docnameleft = $docname;
636 if ($_POST['form_details']) {
639 <tr>
640 <td class="detail">
641 <?php echo text($docnameleft); $docnameleft = " " ?>
642 </td>
643 <td class="detail">
644 <?php echo text(oeFormatShortDate($row['transdate'])); ?>
645 </td>
646 <?php if ($form_procedures) { ?>
647 <td class="detail">
648 <?php echo empty($row['irnumber']) ? text($row['invnumber']) : text($row['irnumber']); ?>
649 </td>
650 <?php } ?>
651 <?php
652 if ($form_proc_code && $form_proc_codetype) {
653 echo " <td class='detail' align='right'>";
654 list($patient_id, $encounter_id) = explode(".", $row['invnumber']);
655 $tmp = sqlQuery("SELECT SUM(fee) AS sum FROM billing WHERE " .
656 "pid = ? AND encounter = ? AND " .
657 "code_type = ? AND code = ? AND activity = 1", array($patient_id,$encounter_id,$form_proc_codetype,$form_proc_code));
658 bucks($tmp['sum']);
659 echo " </td>\n";
662 <?php
663 if ($form_proc_codefull) { ?>
664 <td class="detail">
665 <?php echo text($insconame) ?>
666 </td>
667 <?php } ?>
668 <?php if ($form_procedures) { ?>
669 <td class="detail">
670 <?php echo text($row['memo']) ?>
671 </td>
672 <?php } ?>
673 <td class="detail" align="right">
674 <?php bucks($amount1) ?>
675 </td>
676 <?php if ($form_procedures) { ?>
677 <td class="detail" align="right">
678 <?php bucks($amount2) ?>
679 </td>
680 <?php } ?>
681 </tr>
682 <?php
683 } // end details
684 $doctotal1 += $amount1;
685 $doctotal2 += $amount2;
686 $grandtotal1 += $amount1;
687 $grandtotal2 += $amount2;
691 <tr bgcolor="#ddddff">
692 <td class="detail" colspan="<?php echo ($form_proc_codefull ? 4 : 2) + ($form_procedures ? 2 : 0); ?>">
693 <?php echo xlt('Totals for ') . text($docname) ?>
694 </td>
695 <td align="right">
696 <?php bucks($doctotal1) ?>
697 </td>
698 <?php if ($form_procedures) { ?>
699 <td align="right">
700 <?php bucks($doctotal2) ?>
701 </td>
702 <?php } ?>
703 </tr>
705 <tr bgcolor="#ffdddd">
706 <td class="detail" colspan="<?php echo ($form_proc_codefull ? 4 : 2) + ($form_procedures ? 2 : 0); ?>">
707 <?php echo xlt('Grand Totals') ?>
708 </td>
709 <td align="right">
710 <?php bucks($grandtotal1) ?>
711 </td>
712 <?php if ($form_procedures) { ?>
713 <td align="right">
714 <?php bucks($grandtotal2) ?>
715 </td>
716 <?php } ?>
717 </tr>
718 <?php $report_from_date = oeFormatShortDate($form_from_date) ;
719 $report_to_date = oeFormatShortDate($form_to_date) ;
721 <div align='right'><span class='title' ><?php echo xlt('Report Date'). ' '; ?><?php echo text($report_from_date);?> - <?php echo text($report_to_date);?></span></div>
723 <?php
727 </table>
728 </div>
729 <?php } else { ?>
730 <div class='text'>
731 <?php echo xlt('Please input search criteria above, and click Submit to view results.'); ?>
732 </div>
733 <?php } ?>
735 </form>
736 </body>
738 </html>