updated procedure order ui
[openemr.git] / interface / forms / procedure_order / new.php
blob90348f57e225da66261429248fe6ff0e38080b3e
1 <?php
2 /**
3 * Encounter form for entering procedure orders.
5 * Copyright (C) 2010-2017 Rod Roark <rod@sunsetsystems.com>
6 * Copyright (C) 2017 Brady Miller <brady.g.miller@gmail.com>
8 * LICENSE: This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://opensource.org/licenses/gpl-license.php>.
19 * @package OpenEMR
20 * @author Rod Roark <rod@sunsetsystems.com>
21 * @author Brady Miller <brady.g.miller@gmail.com>
22 * @author Sherwin Gaddis <sherwingaddis@gmail.com>
25 require_once("../../globals.php");
26 require_once("$srcdir/api.inc");
27 require_once("$srcdir/forms.inc");
28 require_once("$srcdir/options.inc.php");
29 require_once("../../orders/qoe.inc.php");
30 require_once("../../orders/gen_hl7_order.inc.php");
31 require_once("../../../custom/code_types.inc.php");
33 // Defaults for new orders.
34 $row = array(
35 'provider_id' => $_SESSION['authUserID'],
36 'date_ordered' => date('Y-m-d'),
37 'date_collected' => date('Y-m-d H:i'),
40 if (! $encounter) { // comes from globals.php
41 die("Internal error: we do not seem to be in an encounter!");
44 function cbvalue($cbname) {
45 return $_POST[$cbname] ? '1' : '0';
48 function cbinput($name, $colname) {
49 global $row;
50 $ret = "<input type='checkbox' name='$name' value='1'";
51 if ($row[$colname]) $ret .= " checked";
52 $ret .= " />";
53 return $ret;
56 function cbcell($name, $desc, $colname) {
57 return "<td width='25%' nowrap>" . cbinput($name, $colname) . "$desc</td>\n";
60 function QuotedOrNull($fld) {
61 if (empty($fld)) return "NULL";
62 return "'$fld'";
65 function getListOptions($list_id , $fieldnames=array('option_id', 'title', 'seq'))
67 $output = array();
68 $query = sqlStatement("SELECT ".implode(',',$fieldnames)." FROM list_options where list_id = ? AND activity = 1 order by seq", array($list_id));
69 while($ll = sqlFetchArray($query)) {
70 foreach($fieldnames as $val)
71 $output[$ll['option_id']][$val] = $ll[$val];
73 return $output;
75 $formid = formData('id', 'G') + 0;
77 // If Save or Transmit was clicked, save the info.
79 if ($_POST['bn_save'] || $_POST['bn_xmit']) {
80 $ppid = formData('form_lab_id') + 0;
82 $sets =
83 "date_ordered = " . QuotedOrNull(formData('form_date_ordered')) . ", " .
84 "provider_id = " . (formData('form_provider_id') + 0) . ", " .
85 "lab_id = " . $ppid . ", " .
86 "date_collected = " . QuotedOrNull(formData('form_date_collected')) . ", " .
87 "order_priority = '" . formData('form_order_priority') . "', " .
88 "order_status = '" . formData('form_order_status') . "', " .
89 "clinical_hx = '" . formData('form_clinical_hx') . "', " .
90 "patient_instructions = '" . formData('form_patient_instructions') . "', " .
91 "patient_id = '" . $pid . "', " .
92 "encounter_id = '" . $encounter . "', " .
93 "history_order= '". formData('form_history_order'). "'";
95 // If updating an existing form...
97 if ($formid) {
98 $query = "UPDATE procedure_order SET $sets " .
99 "WHERE procedure_order_id = '$formid'";
100 sqlStatement($query);
103 // If adding a new form...
105 else {
106 $query = "INSERT INTO procedure_order SET $sets";
107 $formid = sqlInsert($query);
108 addForm($encounter, "Procedure Order", $formid, "procedure_order", $pid, $userauthorized);
111 // Remove any existing procedures and their answers for this order and
112 // replace them from the form.
114 sqlStatement("DELETE FROM procedure_answers WHERE procedure_order_id = ?",
115 array($formid));
116 sqlStatement("DELETE FROM procedure_order_code WHERE procedure_order_id = ?",
117 array($formid));
119 for ($i = 0; isset($_POST['form_proc_type'][$i]); ++$i) {
120 $ptid = $_POST['form_proc_type'][$i] + 0;
121 if ($ptid <= 0) continue;
123 $prefix = "ans$i" . "_";
125 sqlBeginTrans();
126 $procedure_order_seq = sqlQuery( "SELECT IFNULL(MAX(procedure_order_seq),0) + 1 AS increment FROM procedure_order_code WHERE procedure_order_id = ? ", array($formid));
127 $poseq = sqlInsert("INSERT INTO procedure_order_code SET ".
128 "procedure_order_id = ?, " .
129 "diagnoses = ?, " .
130 "procedure_order_title = ?, " .
131 "procedure_code = (SELECT procedure_code FROM procedure_type WHERE procedure_type_id = ?), " .
132 "procedure_name = (SELECT name FROM procedure_type WHERE procedure_type_id = ?)," .
133 "procedure_order_seq = ? ",
134 array($formid, strip_escape_custom($_POST['form_proc_type_diag'][$i]), strip_escape_custom($_POST['form_proc_order_title'][$i]), $ptid, $ptid, $procedure_order_seq['increment']));
135 sqlCommitTrans();
137 $qres = sqlStatement("SELECT " .
138 "q.procedure_code, q.question_code, q.options, q.fldtype " .
139 "FROM procedure_type AS t " .
140 "JOIN procedure_questions AS q ON q.lab_id = t.lab_id " .
141 "AND q.procedure_code = t.procedure_code AND q.activity = 1 " .
142 "WHERE t.procedure_type_id = ? " .
143 "ORDER BY q.seq, q.question_text", array($ptid));
145 while ($qrow = sqlFetchArray($qres)) {
146 $options = trim($qrow['options']);
147 $qcode = trim($qrow['question_code']);
148 $fldtype = $qrow['fldtype'];
149 $data = '';
150 if ($fldtype == 'G') {
151 if ($_POST["G1_$prefix$qcode"]) {
152 $data = $_POST["G1_$prefix$qcode"] * 7 + $_POST["G2_$prefix$qcode"];
155 else {
156 $data = $_POST["$prefix$qcode"];
158 if (!isset($data) || $data === '') continue;
159 if (!is_array($data)) $data = array($data);
160 foreach ($data as $datum) {
161 // Note this will auto-assign the seq value.
162 sqlBeginTrans();
163 $answer_seq = sqlQuery( "SELECT IFNULL(MAX(answer_seq),0) + 1 AS increment FROM procedure_answers WHERE procedure_order_id = ? AND procedure_order_seq = ? AND question_code = ? ", array($formid, $poseq, $qcode));
164 sqlStatement("INSERT INTO procedure_answers SET ".
165 "procedure_order_id = ?, " .
166 "procedure_order_seq = ?, " .
167 "question_code = ?, " .
168 "answer_seq = ?, " .
169 "answer = ?",
170 array($formid, $poseq, $qcode, $answer_seq['increment'], strip_escape_custom($datum)));
171 sqlCommitTrans();
176 $alertmsg = '';
177 if ($_POST['bn_xmit']) {
178 $hl7 = '';
179 $alertmsg = gen_hl7_order($formid, $hl7);
180 if (empty($alertmsg)) {
181 $alertmsg = send_hl7_order($ppid, $hl7);
183 if (empty($alertmsg)) {
184 sqlStatement("UPDATE procedure_order SET date_transmitted = NOW() WHERE " .
185 "procedure_order_id = ?", array($formid));
189 formHeader("Redirecting....");
190 if ($alertmsg) {
191 echo "\n<script language='Javascript'>alert('";
192 echo addslashes(xl('Transmit failed') . ': ' . $alertmsg);
193 echo "')</script>\n";
195 formJump();
196 formFooter();
197 exit;
200 if ($formid) {
201 $row = sqlQuery ("SELECT * FROM procedure_order WHERE " .
202 "procedure_order_id = ?",
203 array($formid)) ;
206 $enrow = sqlQuery("SELECT p.fname, p.mname, p.lname, fe.date FROM " .
207 "form_encounter AS fe, forms AS f, patient_data AS p WHERE " .
208 "p.pid = ? AND f.pid = p.pid AND f.encounter = ? AND " .
209 "f.formdir = 'newpatient' AND f.deleted = 0 AND " .
210 "fe.id = f.form_id LIMIT 1",
211 array($pid, $encounter));
213 <html>
214 <head>
215 <?php html_header_show(); ?>
216 <script src="<?php echo $GLOBALS['assets_static_relative'] ?>/jquery-min-1-9-1/index.js"></script>
217 <script src="<?php echo $GLOBALS['assets_static_relative'] ?>/bootstrap-3-3-4/dist/js/bootstrap.min.js"></script>
220 <link rel="stylesheet" href="<?php echo $css_header;?>" type="text/css" />
221 <link rel="stylesheet" href="<?php echo $GLOBALS['assets_static_relative']; ?>/jquery-datetimepicker-2-5-4/build/jquery.datetimepicker.min.css">
223 <style>
225 td {
226 font-size:10pt;
229 .inputtext {
230 padding-left:2px;
231 padding-right:2px;
234 .form-inline
236 width: 60%;
237 margin: 0 auto;
239 .table
241 border: #ddd solid 1px ;
244 </style>
246 <script type="text/javascript" src="<?php echo $GLOBALS['assets_static_relative']; ?>/jquery-min-3-1-1/index.js"></script>
247 <script type="text/javascript" src="../../../library/dialog.js?v=<?php echo $v_js_includes; ?>"></script>
248 <script type="text/javascript" src="<?php echo $GLOBALS['webroot'] ?>/library/textformat.js?v=<?php echo $v_js_includes; ?>"></script>
249 <script type="text/javascript" src="<?php echo $GLOBALS['assets_static_relative']; ?>/jquery-datetimepicker-2-5-4/build/jquery.datetimepicker.full.min.js"></script>
251 <link rel="stylesheet" href="<?php echo $GLOBALS['assets_static_relative'] ?>/bootstrap-3-3-4/dist/css/bootstrap.min.css">
252 <?php if($_SESSION['language_direction'] == 'rtl'): ?>
253 <link rel="stylesheet" href="<?php echo $GLOBALS['assets_static_relative'];?>/bootstrap-rtl-3-3-4/dist/css/bootstrap-rtl.min.css" type="text/css">
254 <?php endif; ?>
255 <script language='JavaScript'>
257 // This invokes the find-procedure-type popup.
258 // formseq = 0-relative index in the form.
259 var gbl_formseq;
260 function sel_proc_type(formseq) {
261 var f = document.forms[0];
262 // if (!f.form_lab_id.value) {
263 // alert('<?php echo xls('Please select a procedure provider'); ?>');
264 // return;
265 // }
266 gbl_formseq = formseq;
267 var ptvarname = 'form_proc_type[' + formseq + ']';
268 /********************************************************************
269 dlgopen('../../orders/types.php?popup=1' +
270 '&labid=' + f.form_lab_id.value +
271 '&order=' + f[ptvarname].value +
272 '&formid=<?php echo $formid; ?>' +
273 '&formseq=' + formseq,
274 '_blank', 800, 500);
275 ********************************************************************/
276 // This replaces the above for an easier/faster order picker tool.
277 dlgopen('../../orders/find_order_popup.php' +
278 '?labid=' + f.form_lab_id.value +
279 '&order=' + f[ptvarname].value +
280 '&formid=<?php echo $formid; ?>' +
281 '&formseq=' + formseq,
282 '_blank', 800, 500);
285 // This is for callback by the find-procedure-type popup.
286 // Sets both the selected type ID and its descriptive name.
287 function set_proc_type(typeid, typename) {
288 var f = document.forms[0];
289 var ptvarname = 'form_proc_type[' + gbl_formseq + ']';
290 var ptdescname = 'form_proc_type_desc[' + gbl_formseq + ']';
291 f[ptvarname].value = typeid;
292 f[ptdescname].value = typename;
295 // This is also for callback by the find-procedure-type popup.
296 // Sets the contents of the table containing the form fields for questions.
297 function set_proc_html(s, js) {
298 document.getElementById('qoetable[' + gbl_formseq + ']').innerHTML = s;
299 eval(js);
302 // New lab selected so clear all procedures and questions from the form.
303 function lab_id_changed() {
304 var f = document.forms[0];
305 for (var i = 0; true; ++i) {
306 var ix = '[' + i + ']';
307 if (!f['form_proc_type' + ix]) break;
308 f['form_proc_type' + ix].value = '-1';
309 f['form_proc_type_desc' + ix].value = '';
310 document.getElementById('qoetable' + ix).innerHTML = '';
314 // Add a line for entry of another procedure.
315 function addProcLine() {
316 var f = document.forms[0];
317 var table = document.getElementById('proctable');
318 var e = document.getElementById("procedure_type_names");
319 var prc_name = e.options[e.selectedIndex].value;
320 // Compute i = next procedure index.
321 var i = 0;
322 for (; f['form_proc_type[' + i + ']']; ++i);
323 var row = table.insertRow(table.rows.length);
324 var cell = row.insertCell(0);
325 cell.vAlign = 'top';
326 //cell.innerHTML = "<b><?php echo xl('Procedure'); ?> " + (i + 1) + ":</b>";
327 cell.innerHTML = "<b>"+prc_name+"<input type='hidden' name='form_proc_order_title[" + i + "]' value='"+ prc_name +"'></b>";
328 var cell = row.insertCell(1);
329 cell.vAlign = 'top';
330 cell.innerHTML =
331 "<input type='text' size='50' name='form_proc_type_desc[" + i + "]'" +
332 " onclick='sel_proc_type(" + i + ")'" +
333 " onfocus='this.blur()'" +
334 " title='<?php echo xla('Click to select the desired procedure'); ?>'" +
335 " style='width:100%;cursor:pointer;cursor:hand' readonly />" +
336 " <input type='hidden' name='form_proc_type[" + i + "]' value='-1' />" +
337 "<br /><?php echo xla('Diagnosis Codes'); ?>: " +
338 "<input type='text' size='50' name='form_proc_type_diag[" + i + "]'" +
339 " onclick='sel_related(this.name)'" +
340 " title='<?php echo xla('Click to add a diagnosis'); ?>'" +
341 " onfocus='this.blur()'" +
342 " style='cursor:pointer;cursor:hand' readonly />" +
343 " <div style='width:95%;' id='qoetable[" + i + "]'></div>";
344 sel_proc_type(i);
345 return false;
348 // The name of the form field for find-code popup results.
349 var rcvarname;
351 // This is for callback by the find-code popup.
352 // Appends to or erases the current list of related codes.
353 function set_related(codetype, code, selector, codedesc) {
354 var f = document.forms[0];
355 var s = f[rcvarname].value;
356 if (code) {
357 if (s.length > 0) s += ';';
358 s += codetype + ':' + code;
359 } else {
360 s = '';
362 f[rcvarname].value = s;
365 // This invokes the find-code popup.
366 function sel_related(varname) {
367 rcvarname = varname;
368 // codetype is just to make things easier and avoid mistakes.
369 // Might be nice to have a lab parameter for acceptable code types.
370 // Also note the controlling script here runs from interface/patient_file/encounter/.
371 dlgopen('find_code_popup.php?codetype=<?php echo attr(collect_codetypes("diagnosis","csv")) ?>', '_blank', 500, 400);
374 var transmitting = false;
376 // Issue a Cancel/OK warning if a previously transmitted order is being transmitted again.
377 function validate(f) {
378 <?php if (!empty($row['date_transmitted'])) { ?>
379 if (transmitting) {
380 if (!confirm('<?php echo xls('This order was already transmitted on') . ' ' .
381 addslashes($row['date_transmitted']) . '. ' .
382 xls('Are you sure you want to transmit it again?'); ?>')) {
383 return false;
386 <?php } ?>
387 top.restoreSession();
388 return true;
391 $(document).ready(function() {
392 $('.datepicker').datetimepicker({
393 <?php $datetimepicker_timepicker = false; ?>
394 <?php $datetimepicker_showseconds = false; ?>
395 <?php $datetimepicker_formatInput = false; ?>
396 <?php require($GLOBALS['srcdir'] . '/js/xl/jquery-datetimepicker-2-5-4.js.php'); ?>
397 <?php // can add any additional javascript settings to datetimepicker here; need to prepend first setting with a comma ?>
399 $('.datetimepicker').datetimepicker({
400 <?php $datetimepicker_timepicker = true; ?>
401 <?php $datetimepicker_showseconds = false; ?>
402 <?php $datetimepicker_formatInput = false; ?>
403 <?php require($GLOBALS['srcdir'] . '/js/xl/jquery-datetimepicker-2-5-4.js.php'); ?>
404 <?php // can add any additional javascript settings to datetimepicker here; need to prepend first setting with a comma ?>
408 </script>
410 </head>
412 <body class="body_top">
414 <div class="span9 centered">
415 <form method="post" action="<?php echo $rootdir ?>/forms/procedure_order/new.php?id=<?php echo $formid ?>"
416 onsubmit="return validate(this)" class="form-inline">
418 <p class='title' style='margin-top:8px;margin-bottom:8px;text-align:center'>
419 <?php
420 echo xl('Procedure Order for') . ' ';
421 echo $enrow['fname'] . ' ' . $enrow['mname'] . ' ' . $enrow['lname'];
422 echo ' ' . xl('on') . ' ' . oeFormatShortDate(substr($enrow['date'], 0, 10));
424 </p>
429 <table width='100%' id='proctable' class="table">
431 <tr>
432 <td valign='top' align='right' nowrap><b><?php xl('Ordering Provider','e'); ?>:</b></td>
433 <td valign='top'>
434 <?php
435 generate_form_field(array('data_type'=>10,'field_id'=>'provider_id'),
436 $row['provider_id']);
438 </td>
439 </tr>
441 <tr>
442 <td width='1%' valign='top' align='right' nowrap><b><?php xl('Sending To','e'); ?>:</b></td>
443 <td valign='top'>
444 <select name='form_lab_id' onchange='lab_id_changed()' class='form-control'>
445 <?php
446 $ppres = sqlStatement("SELECT ppid, name FROM procedure_providers " .
447 "ORDER BY name, ppid");
448 while ($pprow = sqlFetchArray($ppres)) {
449 echo "<option value='" . attr($pprow['ppid']) . "'";
450 if ($pprow['ppid'] == $row['lab_id']) echo " selected";
451 echo ">" . text($pprow['name']) . "</option>";
454 </select>
455 </td>
456 </tr>
458 <tr>
459 <td width='1%' valign='top' align='right' nowrap><b><?php xl('Order Date','e'); ?>:</b></td>
460 <td valign='top'>
461 <?php
462 echo "<input type='text' size='10' class='datepicker form-control' name='form_date_ordered' id='form_date_ordered'" .
463 " value='" . $row['date_ordered'] . "'" .
464 " title='" . xl('Date of this order') . "'" .
465 " />";
467 </td>
468 </tr>
470 <tr>
471 <td width='1%' valign='top' align='right' nowrap><b><?php xl('Internal Time Collected','e'); ?>:</b></td>
472 <td valign='top'>
473 <?php
474 echo "<input class='datetimepicker form-control' type='text' size='16' name='form_date_collected' id='form_date_collected'" .
475 " value='" . substr($row['date_collected'], 0, 16) . "'" .
476 " title='" . xl('Date and time that the sample was collected') . "'" .
477 " />";
479 </td>
480 </tr>
482 <tr>
483 <td width='1%' valign='top' align='right' nowrap><b><?php xl('Priority','e'); ?>:</b></td>
484 <td valign='top'>
485 <?php
486 generate_form_field(array('data_type'=>1,'field_id'=>'order_priority',
487 'list_id'=>'ord_priority'), $row['order_priority']);
489 </td>
490 </tr>
492 <tr>
493 <td width='1%' valign='top' align='right' nowrap><b><?php xl('Status','e'); ?>:</b></td>
494 <td valign='top'>
495 <?php
496 generate_form_field(array('data_type'=>1,'field_id'=>'order_status',
497 'list_id'=>'ord_status'), $row['order_status']);
499 </td>
500 </tr>
501 <tr>
502 <td width='1%' valign='top' align='right' nowrap><b><?php xl('History order','e'); ?>:</b>
503 <td valign='top'>
504 <?php generate_form_field(array('data_type'=>1,'field_id'=>'history_order','list_id'=>'boolean'),$row['history_order']); ?>
505 </td>
506 </tr>
507 <tr>
508 <td width='1%' valign='top' align='right' nowrap><b><?php xl('Clinical History','e'); ?>:</b></td>
509 <td valign='top'>
510 <input type='text' maxlength='255' name='form_clinical_hx' style='width:100%'
511 class='form-control inputtext' value='<?php echo attr($row['clinical_hx']); ?>' />
512 </td>
513 </tr>
515 <!-- Will enable this later, nothing uses it yet. -->
516 <tr style='display:none'>
517 <td width='1%' valign='top' align='right' nowrap><b><?php xl('Patient Instructions','e'); ?>:</b></td>
518 <td valign='top'>
519 <textarea rows='3' cols='40' name='form_patient_instructions' style='width:100%'
520 wrap='virtual' class='form-control inputtext' /><?php echo $row['patient_instructions'] ?></textarea>
521 </td>
522 </tr>
524 <?php
526 // This section merits some explanation. :)
528 // If any procedures have already been saved for this form, then a top-level table row is
529 // created for each of them, and includes the relevant questions and any existing answers.
530 // Otherwise a single empty table row is created for entering the first or only procedure.
532 // If a new procedure is selected or changed, the questions for it are (re)generated from
533 // the dialog window from which the procedure is selected, via JavaScript. The sel_proc_type
534 // function and the types.php script that it invokes collaborate to support this feature.
536 // The generate_qoe_html function in qoe.inc.php contains logic to generate the HTML for
537 // the questions, and can be invoked either from this script or from types.php.
539 // The $i counter that you see below is to resolve the need for unique names for form fields
540 // that may occur for each of the multiple procedure requests within the same order.
541 // procedure_order_seq serves a similar need for uniqueness at the database level.
543 $oparr = array();
544 if ($formid) {
545 $opres = sqlStatement("SELECT " .
546 "pc.procedure_order_seq, pc.procedure_code, pc.procedure_name, " .
547 "pc.diagnoses, pc.procedure_order_title, " .
548 // In case of duplicate procedure codes this gets just one.
549 "(SELECT pt.procedure_type_id FROM procedure_type AS pt WHERE " .
550 "pt.procedure_type LIKE 'ord%' AND pt.lab_id = ? AND " .
551 "pt.procedure_code = pc.procedure_code ORDER BY " .
552 "pt.activity DESC, pt.procedure_type_id LIMIT 1) AS procedure_type_id " .
553 "FROM procedure_order_code AS pc " .
554 "WHERE pc.procedure_order_id = ? " .
555 "ORDER BY pc.procedure_order_seq",
556 array($row['lab_id'], $formid));
557 while ($oprow = sqlFetchArray($opres)) {
558 $oparr[] = $oprow;
561 if (empty($oparr)) $oparr[] = array('procedure_name' => '');
563 $i = 0;
564 foreach ($oparr as $oprow) {
565 $ptid = -1; // -1 means no procedure is selected yet
566 if (!empty($oprow['procedure_type_id'])) {
567 $ptid = $oprow['procedure_type_id'];
570 <tr>
571 <!--<td width='1%' valign='top'><b><?php echo xl('Procedure') . ' ' . ($i + 1); ?>:</b></td>-->
572 <?php if(empty($formid) || empty($oprow['procedure_order_title'])) {?>
573 <td width='1%' valign='top' align="right"><input type='hidden' name='form_proc_order_title[<?php echo $i; ?>]' value='Procedure'><b><?php echo xlt('Procedure:');?></b></td>
574 <?php } else {?>
575 <td width='1%' valign='top'>
576 <input type='hidden' name='form_proc_order_title[<?php echo $i; ?>]' value='<?php echo attr($oprow['procedure_order_title']) ?>'><b><?php echo text($oprow['procedure_order_title']) ?></b>
577 </td>
578 <?php } ?>
579 <td valign='top'>
580 <input type='text' size='50' name='form_proc_type_desc[<?php echo $i; ?>]'
581 value='<?php echo attr($oprow['procedure_name']) ?>'
582 onclick="sel_proc_type(<?php echo $i; ?>)"
583 onfocus='this.blur()'
584 title='<?php xla('Click to select the desired procedure','e'); ?>'
585 style='width:100%;cursor:pointer;cursor:hand' class='form-control' readonly />
586 <input type='hidden' name='form_proc_type[<?php echo $i; ?>]' value='<?php echo $ptid ?>' />
587 <br /><?php echo xlt('Diagnosis Codes'); ?>:
588 <input class='form-control' type='text' size='50' name='form_proc_type_diag[<?php echo $i; ?>]'
589 value='<?php echo attr($oprow['diagnoses']) ?>' onclick='sel_related(this.name)'
590 title='<?php echo xla('Click to add a diagnosis'); ?>'
591 onfocus='this.blur()'
592 style='cursor:pointer;cursor:hand' readonly />
593 <!-- MSIE innerHTML property for a TABLE element is read-only, so using a DIV here. -->
594 <div style='width:95%;' id='qoetable[<?php echo $i; ?>]'>
595 <?php
596 $qoe_init_javascript = '';
597 echo generate_qoe_html($ptid, $formid, $oprow['procedure_order_seq'], $i);
598 if ($qoe_init_javascript)
599 echo "<script language='JavaScript'>$qoe_init_javascript</script>";
601 </div>
602 </td>
603 </tr>
604 <?php
605 ++$i;
609 </table>
610 <div style="text-align: left">
611 <div style="display:inline-block">
612 <?php $procedure_order_type = getListOptions('order_type' , array('option_id', 'title')); ?>
613 <select name="procedure_type_names" id="procedure_type_names" class='form-control'>
614 <?php foreach($procedure_order_type as $ordered_types){?>
615 <option value="<?php echo attr($ordered_types['option_id']); ?>" ><?php echo text(xl_list_label($ordered_types['title'])) ; ?></option>
616 <?php } ?>
617 </select>
618 </div>
619 <div style="display:inline-block">
620 <input type='button' value='<?php echo xla('Add Procedure'); ?>' onclick="addProcLine()" />
621 &nbsp;
622 <input type='submit' name='bn_save' value='<?php echo xla('Save'); ?>' onclick='transmitting = false;' />
623 &nbsp;
624 <input type='submit' name='bn_xmit' value='<?php echo xla('Save and Transmit'); ?>' onclick='transmitting = true;' />
625 &nbsp;
626 <input type='button' value='<?php echo xla('Cancel'); ?>' onclick="top.restoreSession();location='<?php echo $GLOBALS['form_exit_url']; ?>'" />
627 </div>
628 </div>
629 </p>
634 </form>
635 </div><!--end of div wrapper -->
636 </body>
637 </html>