set default margins to 5
[openemr.git] / interface / reports / encounters_report.php
blob8334c989aa0876684194484064838e9ae777f0cc
1 <?php
2 // Copyright (C) 2007-2009 Rod Roark <rod@sunsetsystems.com>
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 shows past encounters with filtering and sorting.
11 require_once("../globals.php");
12 require_once("$srcdir/forms.inc");
13 require_once("$srcdir/billing.inc");
14 require_once("$srcdir/patient.inc");
16 $alertmsg = ''; // not used yet but maybe later
18 // For each sorting option, specify the ORDER BY argument.
20 $ORDERHASH = array(
21 'doctor' => 'lower(u.lname), lower(u.fname), fe.date',
22 'patient' => 'lower(p.lname), lower(p.fname), fe.date',
23 'pubpid' => 'lower(p.pubpid), fe.date',
24 'time' => 'fe.date, lower(u.lname), lower(u.fname)',
27 function bucks($amount) {
28 if ($amount) printf("%.2f", $amount);
31 function show_doc_total($lastdocname, $doc_encounters) {
32 if ($lastdocname) {
33 echo " <tr>\n";
34 echo " <td class='detail'>$lastdocname</td>\n";
35 echo " <td class='detail' align='right'>$doc_encounters</td>\n";
36 echo " </tr>\n";
40 $form_from_date = fixDate($_POST['form_from_date'], date('Y-m-d'));
41 $form_to_date = fixDate($_POST['form_to_date'], date('Y-m-d'));
42 $form_provider = $_POST['form_provider'];
43 $form_facility = $_POST['form_facility'];
44 $form_details = $_POST['form_details'] ? true : false;
46 $form_orderby = $ORDERHASH[$_REQUEST['form_orderby']] ?
47 $_REQUEST['form_orderby'] : 'doctor';
48 $orderby = $ORDERHASH[$form_orderby];
50 // Get the info.
52 $query = "SELECT " .
53 "fe.encounter, fe.date, fe.reason, " .
54 "f.formdir, f.form_name, " .
55 "p.fname, p.mname, p.lname, p.pid, p.pubpid, " .
56 "u.lname AS ulname, u.fname AS ufname, u.mname AS umname " .
57 "FROM ( form_encounter AS fe, forms AS f ) " .
58 "LEFT OUTER JOIN patient_data AS p ON p.pid = fe.pid " .
59 "LEFT OUTER JOIN users AS u ON u.username = f.user " .
60 "WHERE f.encounter = fe.encounter AND f.formdir = 'newpatient' ";
61 if ($form_to_date) {
62 $query .= "AND fe.date >= '$form_from_date 00:00:00' AND fe.date <= '$form_to_date 23:59:59' ";
63 } else {
64 $query .= "AND fe.date >= '$form_from_date 00:00:00' AND fe.date <= '$form_from_date 23:59:59' ";
66 if ($form_provider) {
67 $query .= "AND f.user = '$form_provider' ";
69 if ($form_facility) {
70 $query .= "AND fe.facility_id = '$form_facility' ";
72 $query .= "ORDER BY $orderby";
74 $res = sqlStatement($query);
76 <html>
77 <head>
78 <?php html_header_show();?>
79 <title><?php xl('Encounters Report','e'); ?></title>
81 <style type="text/css">@import url(../../library/dynarch_calendar.css);</style>
83 <link rel=stylesheet href="<?php echo $css_header;?>" type="text/css">
84 <style type="text/css">
86 /* specifically include & exclude from printing */
87 @media print {
88 #encreport_parameters {
89 visibility: hidden;
90 display: none;
92 #encreport_parameters_daterange {
93 visibility: visible;
94 display: inline;
98 /* specifically exclude some from the screen */
99 @media screen {
100 #encreport_parameters_daterange {
101 visibility: hidden;
102 display: none;
106 #encreport_parameters {
107 width: 100%;
108 background-color: #ddf;
110 #encreport_parameters table {
111 border: none;
112 border-collapse: collapse;
114 #encreport_parameters table td {
115 padding: 3px;
118 #encreport_results {
119 width: 100%;
120 margin-top: 10px;
122 #encreport_results table {
123 border: 1px solid black;
124 width: 98%;
125 border-collapse: collapse;
127 #encreport_results table thead {
128 display: table-header-group;
129 background-color: #ddd;
131 #encreport_results table th {
132 border-bottom: 1px solid black;
134 #encreport_results table td {
135 padding: 1px;
136 margin: 2px;
137 border-bottom: 1px solid #eee;
139 </style>
141 <script type="text/javascript" src="../../library/textformat.js"></script>
142 <script type="text/javascript" src="../../library/dialog.js"></script>
143 <script type="text/javascript" src="../../library/dynarch_calendar.js"></script>
144 <script type="text/javascript" src="../../library/dynarch_calendar_en.js"></script>
145 <script type="text/javascript" src="../../library/dynarch_calendar_setup.js"></script>
147 <script LANGUAGE="JavaScript">
149 var mypcc = '<?php echo $GLOBALS['phone_country_code'] ?>';
151 function dosort(orderby) {
152 var f = document.forms[0];
153 f.form_orderby.value = orderby;
154 f.submit();
155 return false;
158 function refreshme() {
159 document.forms[0].submit();
162 </script>
164 </head>
166 <body class="body_top">
168 <center>
170 <h2><?php xl('Encounters Report','e'); ?></h2>
172 <div id="encreport_parameters_daterange">
173 <?php echo date("d F Y", strtotime($form_from_date)) ." &nbsp; to &nbsp; ". date("d F Y", strtotime($form_to_date)); ?>
174 </div>
176 <div id="encreport_parameters">
177 <form method='post' name='theform' action='encounters_report.php'>
178 <table>
180 <tr>
181 <td>
183 <?php xl('Facility','e'); ?>:
184 <?php
185 // Build a drop-down list of facilities.
187 $query = "SELECT id, name FROM facility ORDER BY name";
188 $fres = sqlStatement($query);
189 echo " <select name='form_facility'>\n";
190 echo " <option value=''>-- " . xl('All') . " --\n";
191 while ($frow = sqlFetchArray($fres)) {
192 $facid = $frow['id'];
193 echo " <option value='$facid'";
194 if ($facid == $_POST['form_facility']) echo " selected";
195 echo ">" . $frow['name'] . "\n";
197 echo " </select>\n";
200 <?php xl('Provider','e'); ?>:
201 <?php
202 // Build a drop-down list of providers.
204 $query = "SELECT username, lname, fname FROM users WHERE " .
205 "authorized = 1 ORDER BY lname, fname";
206 $ures = sqlStatement($query);
207 echo " <select name='form_provider'>\n";
208 echo " <option value=''>-- " . xl('All') . " --\n";
209 while ($urow = sqlFetchArray($ures)) {
210 $provid = $urow['username'];
211 echo " <option value='$provid'";
212 if ($provid == $_POST['form_provider']) echo " selected";
213 echo ">" . $urow['lname'] . ", " . $urow['fname'] . "\n";
215 echo " </select>\n";
217 &nbsp;<?php xl('From','e'); ?>:
218 <input type='text' name='form_from_date' id='form_from_date' size='10' value='<?php echo $form_from_date ?>'
219 onkeyup='datekeyup(this,mypcc)' onblur='dateblur(this,mypcc)' title='Start date yyyy-mm-dd'>
220 <img src='../pic/show_calendar.gif' align='absbottom' width='24' height='22'
221 id='img_from_date' border='0' alt='[?]' style='cursor:pointer'
222 title='<?php xl('Click here to choose a date','e'); ?>'>
224 &nbsp;<?php xl('To','e'); ?>:
225 <input type='text' name='form_to_date' id='form_to_date' size='10' value='<?php echo $form_to_date ?>'
226 onkeyup='datekeyup(this,mypcc)' onblur='dateblur(this,mypcc)' title='End date yyyy-mm-dd'>
227 <img src='../pic/show_calendar.gif' align='absbottom' width='24' height='22'
228 id='img_to_date' border='0' alt='[?]' style='cursor:pointer'
229 title='<?php xl('Click here to choose a date','e'); ?>'>
231 &nbsp;
232 <input type='checkbox' name='form_details'<?php if ($form_details) echo ' checked'; ?>>
233 <?php xl('Details','e'); ?>
235 &nbsp;
236 <input type='submit' name='form_refresh' value='<?php xl('Refresh','e'); ?>'>
237 &nbsp;
238 <input type='button' value='<?php xl('Print','e'); ?>' onclick='window.print()' />
239 </td>
240 </tr>
242 <tr>
243 <td height="1">
244 </td>
245 </tr>
247 </table>
248 </div> <!-- end encreport_parameters -->
250 <div id="encreport_results">
251 <table>
253 <thead>
254 <?php if ($form_details) { ?>
255 <th>
256 <a href="nojs.php" onclick="return dosort('doctor')"
257 <?php if ($form_orderby == "doctor") echo " style=\"color:#00cc00\"" ?>><?php xl('Provider','e'); ?> </a>
258 </th>
259 <th>
260 <a href="nojs.php" onclick="return dosort('time')"
261 <?php if ($form_orderby == "time") echo " style=\"color:#00cc00\"" ?>><?php xl('Date','e'); ?></a>
262 </th>
263 <th>
264 <a href="nojs.php" onclick="return dosort('patient')"
265 <?php if ($form_orderby == "patient") echo " style=\"color:#00cc00\"" ?>><?php xl('Patient','e'); ?></a>
266 </th>
267 <th>
268 <a href="nojs.php" onclick="return dosort('pubpid')"
269 <?php if ($form_orderby == "pubpid") echo " style=\"color:#00cc00\"" ?>><?php xl('ID','e'); ?></a>
270 </th>
271 <th>
272 <?php xl('Status','e'); ?>
273 </th>
274 <th>
275 <?php xl('Encounter','e'); ?>
276 </th>
277 <th>
278 <?php xl('Form','e'); ?>
279 </th>
280 <th>
281 <?php xl('Coding','e'); ?>
282 </th>
283 <?php } else { ?>
284 <th><?php xl('Provider','e'); ?></td>
285 <th><?php xl('Encounters','e'); ?></td>
286 <?php } ?>
287 </thead>
288 <tbody>
289 <?php
290 if ($res) {
291 $lastdocname = "";
292 $doc_encounters = 0;
293 while ($row = sqlFetchArray($res)) {
294 $patient_id = $row['pid'];
295 $docname = $row['ulname'] . ', ' . $row['ufname'] . ' ' . $row['umname'];
296 $errmsg = "";
297 if ($form_details) {
298 // Fetch all other forms for this encounter.
299 $encnames = '';
300 $encarr = getFormByEncounter($patient_id, $row['encounter'],
301 "formdir, user, form_name, form_id");
302 foreach ($encarr as $enc) {
303 if ($enc['formdir'] == 'newpatient') continue;
304 if ($encnames) $encnames .= '<br />';
305 $encnames .= $enc['form_name'];
308 // Fetch coding and compute billing status.
309 $coded = "";
310 $billed_count = 0;
311 $unbilled_count = 0;
312 if ($billres = getBillingByEncounter($row['pid'], $row['encounter'],
313 "code_type, code, code_text, billed"))
315 foreach ($billres as $billrow) {
316 $title = addslashes($billrow['code_text']);
317 $coded .= $billrow['code'] . ', ';
318 if ($billrow['code_type'] != 'COPAY' && $billrow['code_type'] != 'TAX') {
319 if ($billrow['billed']) ++$billed_count; else ++$unbilled_count;
322 $coded = substr($coded, 0, strlen($coded) - 2);
325 // Figure product sales into billing status.
326 $sres = sqlStatement("SELECT billed FROM drug_sales " .
327 "WHERE pid = '{$row['pid']}' AND encounter = '{$row['encounter']}'");
328 while ($srow = sqlFetchArray($sres)) {
329 if ($srow['billed']) ++$billed_count; else ++$unbilled_count;
332 // Compute billing status.
333 if ($billed_count && $unbilled_count) $status = xl('Mixed' );
334 else if ($billed_count ) $status = xl('Closed');
335 else if ($unbilled_count ) $status = xl('Open' );
336 else $status = xl('Empty' );
338 <tr bgcolor='<?php echo $bgcolor ?>'>
339 <td>
340 <?php echo ($docname == $lastdocname) ? "" : $docname ?>&nbsp;
341 </td>
342 <td>
343 <?php echo substr($row['date'], 0, 10) ?>&nbsp;
344 </td>
345 <td>
346 <?php echo $row['lname'] . ', ' . $row['fname'] . ' ' . $row['mname']; ?>&nbsp;
347 </td>
348 <td>
349 <?php echo $row['pubpid']; ?>&nbsp;
350 </td>
351 <td>
352 <?php echo $status; ?>&nbsp;
353 </td>
354 <td>
355 <?php echo $row['reason']; ?>&nbsp;
356 </td>
357 <td>
358 <?php echo $encnames; ?>&nbsp;
359 </td>
360 <td>
361 <?php echo $coded; ?>
362 </td>
363 </tr>
364 <?php
365 } else {
366 if ($docname != $lastdocname) {
367 show_doc_total($lastdocname, $doc_encounters);
368 $doc_encounters = 0;
370 ++$doc_encounters;
372 $lastdocname = $docname;
375 if (!$form_details) show_doc_total($lastdocname, $doc_encounters);
378 </tbody>
379 </table>
380 </div> <!-- end encresults -->
382 <input type="hidden" name="form_orderby" value="<?php echo $form_orderby ?>" />
384 </form>
385 </center>
386 </body>
388 <script language='JavaScript'>
389 Calendar.setup({inputField:"form_from_date", ifFormat:"%Y-%m-%d", button:"img_from_date"});
390 Calendar.setup({inputField:"form_to_date", ifFormat:"%Y-%m-%d", button:"img_to_date"});
392 <?php if ($alertmsg) { echo " alert('$alertmsg');\n"; } ?>
394 </script>
396 </html>