dump db version
[openemr.git] / patients / get_lab_results.php
bloba8dec52b05b7d98ffdb5cc7db9d7e692d1c214ee
1 <?php
2 // Copyright (C) 2011 Cassian LUP <cassi.lup@gmail.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 require_once("verify_session.php");
10 require_once('../library/options.inc.php');
12 $selects =
13 "po.procedure_order_id, po.date_ordered, pc.procedure_order_seq, " .
14 "pt1.procedure_type_id AS order_type_id, pc.procedure_name, " .
15 "pr.procedure_report_id, pr.date_report, pr.date_collected, pr.specimen_num, " .
16 "pr.report_status, pr.review_status";
18 $joins =
19 "JOIN procedure_order_code AS pc ON pc.procedure_order_id = po.procedure_order_id " .
20 "LEFT JOIN procedure_type AS pt1 ON pt1.lab_id = po.lab_id AND pt1.procedure_code = pc.procedure_code " .
21 "LEFT JOIN procedure_report AS pr ON pr.procedure_order_id = po.procedure_order_id AND " .
22 "pr.procedure_order_seq = pc.procedure_order_seq";
24 $orderby =
25 "po.date_ordered, po.procedure_order_id, " .
26 "pc.procedure_order_seq, pr.procedure_report_id";
28 $where = "1 = 1";
30 $res = sqlStatement("SELECT $selects " .
31 "FROM procedure_order AS po $joins " .
32 "WHERE po.patient_id = ? AND $where " .
33 "ORDER BY $orderby", array($pid));
35 if (sqlNumRows($res)>0) {
37 <table class="class1">
38 <tr class="header">
39 <th><?php echo htmlspecialchars(xl('Order Date'), ENT_NOQUOTES); ?></th>
40 <th><?php echo htmlspecialchars(xl('Order Name'), ENT_NOQUOTES); ?></th>
41 <th><?php echo htmlspecialchars(xl('Result Name'), ENT_NOQUOTES); ?></th>
42 <th><?php echo htmlspecialchars(xl('Abnormal'), ENT_NOQUOTES); ?></th>
43 <th><?php echo htmlspecialchars(xl('Value'), ENT_NOQUOTES); ?></th>
44 <th><?php echo htmlspecialchars(xl('Range'), ENT_NOQUOTES); ?></th>
45 <th><?php echo htmlspecialchars(xl('Units'), ENT_NOQUOTES); ?></th>
46 <th><?php echo htmlspecialchars(xl('Result Status'), ENT_NOQUOTES); ?></th>
47 <th><?php echo htmlspecialchars(xl('Report Status'), ENT_NOQUOTES); ?></th>
48 </tr>
49 <?php
50 $even=false;
52 while ($row = sqlFetchArray($res)) {
53 $order_type_id = empty($row['order_type_id' ]) ? 0 : ($row['order_type_id' ] + 0);
54 $report_id = empty($row['procedure_report_id']) ? 0 : ($row['procedure_report_id'] + 0);
56 $selects = "pt2.procedure_type, pt2.procedure_code, pt2.units AS pt2_units, " .
57 "pt2.range AS pt2_range, pt2.procedure_type_id AS procedure_type_id, " .
58 "pt2.name AS name, pt2.description, pt2.seq AS seq, " .
59 "ps.procedure_result_id, ps.result_code AS result_code, ps.result_text, ps.abnormal, ps.result, " .
60 "ps.range, ps.result_status, ps.facility, ps.comments, ps.units, ps.comments";
62 // procedure_type_id for order:
63 $pt2cond = "pt2.parent = $order_type_id AND " .
64 "(pt2.procedure_type LIKE 'res%' OR pt2.procedure_type LIKE 'rec%')";
66 // pr.procedure_report_id or 0 if none:
67 $pscond = "ps.procedure_report_id = $report_id";
69 $joincond = "ps.result_code = pt2.procedure_code";
71 // This union emulates a full outer join. The idea is to pick up all
72 // result types defined for this order type, as well as any actual
73 // results that do not have a matching result type.
74 $query = "(SELECT $selects FROM procedure_type AS pt2 " .
75 "LEFT JOIN procedure_result AS ps ON $pscond AND $joincond " .
76 "WHERE $pt2cond" .
77 ") UNION (" .
78 "SELECT $selects FROM procedure_result AS ps " .
79 "LEFT JOIN procedure_type AS pt2 ON $pt2cond AND $joincond " .
80 "WHERE $pscond) " .
81 "ORDER BY seq, name, procedure_type_id, result_code";
83 $rres = sqlStatement($query);
84 while ($rrow = sqlFetchArray($rres)) {
85 if ($even) {
86 $class="class1_even";
87 $even=false;
88 } else {
89 $class="class1_odd";
90 $even=true;
93 $date=explode('-', $row['date_ordered']);
94 echo "<tr class='".$class."'>";
95 echo "<td>".htmlspecialchars($date[1]."/".$date[2]."/".$date[0], ENT_NOQUOTES)."</td>";
96 echo "<td>".htmlspecialchars($row['procedure_name'], ENT_NOQUOTES)."</td>";
97 echo "<td>".htmlspecialchars($rrow['name'], ENT_NOQUOTES)."</td>";
98 echo "<td>".generate_display_field(array('data_type'=>'1','list_id'=>'proc_res_abnormal'), $rrow['abnormal'])."</td>";
99 echo "<td>".htmlspecialchars($row['result'], ENT_NOQUOTES)."</td>";
100 echo "<td>".htmlspecialchars($rrow['pt2_range'], ENT_NOQUOTES)."</td>";
101 echo "<td>".generate_display_field(array('data_type'=>'1','list_id'=>'proc_unit'), $rrow['pt2_units'])."</td>";
102 echo "<td>".generate_display_field(array('data_type'=>'1','list_id'=>'proc_res_status'), $rrow['result_status'])."</td>";
103 echo "<td>".generate_display_field(array('data_type'=>'1','list_id'=>'proc_rep_status'), $row['report_status'])."</td>";
104 echo "</tr>";
108 echo "</table>";
109 } else {
110 echo htmlspecialchars(xl("No Results"), ENT_NOQUOTES);