Focus the search term on load
[openemr.git] / interface / orders / types_edit.php
blob7d1208b8533885fffe727340826ab813cf222ba5
1 <?php
2 // Copyright (C) 2010 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 require_once("../globals.php");
10 require_once("$srcdir/acl.inc");
11 require_once("$srcdir/options.inc.php");
12 require_once("$srcdir/formdata.inc.php");
14 $typeid = formData('typeid', 'R') + 0;
15 $parent = formData('parent', 'R') + 0;
17 $info_msg = "";
19 function QuotedOrNull($fld) {
20 $fld = formDataCore($fld,true);
21 if ($fld) return "'$fld'";
22 return "NULL";
25 function invalue($name) {
26 $fld = formData($name,"P",true);
27 return "'$fld'";
30 function rbinput($name, $value, $desc, $colname) {
31 global $row;
32 $ret = "<input type='radio' name='$name' value='$value'";
33 if ($row[$colname] == $value) $ret .= " checked";
34 $ret .= " />$desc";
35 return $ret;
38 function rbvalue($rbname) {
39 $tmp = $_POST[$rbname];
40 if (! $tmp) $tmp = '0';
41 return "'$tmp'";
44 function cbvalue($cbname) {
45 return empty($_POST[$cbname]) ? 0 : 1;
48 function recursiveDelete($typeid) {
49 $res = sqlStatement("SELECT procedure_type_id FROM " .
50 "procedure_type WHERE parent = '$typeid'");
51 while ($row = sqlFetchArray($res)) {
52 recursiveDelete($row['procedure_type_id']);
54 sqlStatement("DELETE FROM procedure_type WHERE " .
55 "procedure_type_id = '$typeid'");
59 <html>
60 <head>
61 <title><?php echo $typeid ? xl('Edit') : xl('Add New') ?> <?php xl('Order/Result Type','e'); ?></title>
62 <link rel="stylesheet" href='<?php echo $css_header ?>' type='text/css'>
64 <style>
65 td { font-size:10pt; }
67 .inputtext {
68 padding-left:2px;
69 padding-right:2px;
72 .button {
73 font-family:sans-serif;
74 font-size:9pt;
75 font-weight:bold;
78 .ordonly { }
79 .resonly { }
81 </style>
83 <script type="text/javascript" src="../../library/topdialog.js"></script>
84 <script type="text/javascript" src="../../library/dialog.js"></script>
85 <script type="text/javascript" src="../../library/js/jquery-1.2.2.min.js"></script>
87 <script language="JavaScript">
89 <?php require($GLOBALS['srcdir'] . "/restoreSession.php"); ?>
91 // The name of the form field for find-code popup results.
92 var rcvarname;
94 // This is for callback by the find-code popup.
95 // Appends to or erases the current list of related codes.
96 function set_related(codetype, code, selector, codedesc) {
97 var f = document.forms[0];
98 var s = f[rcvarname].value;
99 if (code) {
100 if (s.length > 0) s += ';';
101 s += codetype + ':' + code;
102 } else {
103 s = '';
105 f[rcvarname].value = s;
108 // This invokes the find-code popup.
109 function sel_related(varname) {
110 if (typeof varname == 'undefined') varname = 'form_related_code';
111 rcvarname = varname;
112 dlgopen('../patient_file/encounter/find_code_popup.php', '_blank', 500, 400);
115 // Show or hide sections depending on procedure type.
116 function proc_type_changed() {
117 var f = document.forms[0];
118 var pt = f.form_procedure_type;
119 var ix = pt.selectedIndex;
120 if (ix < 0) ix = 0;
121 var ptval = pt.options[ix].value;
122 var ptpfx = ptval.substring(0, 3);
123 if (ptpfx == 'ord') $('.ordonly').show(); else $('.ordonly').hide();
124 if (ptpfx == 'res'|| ptpfx == 'rec') $('.resonly').show(); else $('.resonly').hide();
127 $(document).ready(function() {
128 proc_type_changed();
131 </script>
133 </head>
135 <body class="body_top">
136 <?php
137 // If we are saving, then save and close the window.
139 if ($_POST['form_save']) {
141 $sets =
142 "name = " . invalue('form_name') . ", " .
143 "lab_id = " . invalue('form_lab_id') . ", " .
144 "procedure_code = " . invalue('form_procedure_code') . ", " .
145 "procedure_type = " . invalue('form_procedure_type') . ", " .
146 "body_site = " . invalue('form_body_site') . ", " .
147 "specimen = " . invalue('form_specimen') . ", " .
148 "route_admin = " . invalue('form_route_admin') . ", " .
149 "laterality = " . invalue('form_laterality') . ", " .
150 "description = " . invalue('form_description') . ", " .
151 "units = " . invalue('form_units') . ", " .
152 "`range` = " . invalue('form_range') . ", " .
153 "standard_code = " . invalue('form_standard_code') . ", " .
154 "related_code = " . invalue('form_related_code') . ", " .
155 "seq = " . invalue('form_seq');
157 if ($typeid) {
158 sqlStatement("UPDATE procedure_type SET $sets WHERE procedure_type_id = '$typeid'");
159 // Get parent ID so we can refresh the tree view.
160 $row = sqlQuery("SELECT parent FROM procedure_type WHERE " .
161 "procedure_type_id = '$typeid'");
162 $parent = $row['parent'];
163 } else {
164 $newid = sqlInsert("INSERT INTO procedure_type SET parent = '$parent', $sets");
165 // $newid is not really used in this script
169 else if ($_POST['form_delete']) {
171 if ($typeid) {
172 // Get parent ID so we can refresh the tree view after deleting.
173 $row = sqlQuery("SELECT parent FROM procedure_type WHERE " .
174 "procedure_type_id = '$typeid'");
175 $parent = $row['parent'];
176 recursiveDelete($typeid);
181 if ($_POST['form_save'] || $_POST['form_delete']) {
182 // Find out if this parent still has any children.
183 $trow = sqlQuery("SELECT procedure_type_id FROM procedure_type WHERE parent = '$parent' LIMIT 1");
184 $haskids = empty($trow['procedure_type_id']) ? 'false' : 'true';
185 // Close this window and redisplay the updated list.
186 echo "<script language='JavaScript'>\n";
187 if ($info_msg) echo " alert('$info_msg');\n";
188 echo " window.close();\n";
189 echo " if (opener.refreshFamily) opener.refreshFamily($parent,$haskids);\n";
190 echo "</script></body></html>\n";
191 exit();
194 if ($typeid) {
195 $row = sqlQuery("SELECT * FROM procedure_type WHERE procedure_type_id = '$typeid'");
198 <form method='post' name='theform'
199 action='types_edit.php?typeid=<?php echo $typeid ?>&parent=<?php echo $parent ?>'>
200 <!-- no restoreSession() on submit because session data are not relevant -->
202 <center>
204 <table border='0' width='100%'>
206 <tr>
207 <td width='1%' nowrap><b><?php xl('Procedure Type','e'); ?>:</b></td>
208 <td>
209 <?php
210 echo generate_select_list('form_procedure_type', 'proc_type', $row['procedure_type'],
211 xl('The type of this entity'), ' ', '', 'proc_type_changed()');
213 </td>
214 </tr>
216 <tr>
217 <td nowrap><b><?php xl('Name','e'); ?>:</b></td>
218 <td>
219 <input type='text' size='40' name='form_name' maxlength='63'
220 value='<?php echo htmlspecialchars($row['name'], ENT_QUOTES); ?>'
221 title='<?php xl('Your name for this category, procedure or result','e'); ?>'
222 style='width:100%' class='inputtext' />
223 </td>
224 </tr>
226 <tr>
227 <td nowrap><b><?php xl('Description','e'); ?>:</b></td>
228 <td>
229 <input type='text' size='40' name='form_description' maxlength='255'
230 value='<?php echo htmlspecialchars($row['description'], ENT_QUOTES); ?>'
231 title='<?php xl('Description of this procedure or result code','e'); ?>'
232 style='width:100%' class='inputtext' />
233 </td>
234 </tr>
236 <tr>
237 <td nowrap><b><?php xl('Sequence','e'); ?>:</b></td>
238 <td>
239 <input type='text' size='4' name='form_seq' maxlength='11'
240 value='<?php echo $row['seq'] + 0; ?>'
241 title='<?php xl('Relative ordering of this entity','e'); ?>'
242 class='inputtext' />
243 </td>
244 </tr>
246 <tr class='ordonly'>
247 <td width='1%' nowrap><b><?php xl('Order From','e'); ?>:</b></td>
248 <td>
249 <?php
250 // Address book entries for procedure ordering.
251 generate_form_field(array('data_type' => 14, 'field_id' => 'lab_id',
252 'list_id' => '', 'edit_options' => 'O',
253 'description' => xl('Address book entry for the company performing this procedure')),
254 $row['lab_id']);
256 </td>
257 </tr>
259 <tr class='ordonly'>
260 <td nowrap><b><?php xl('Procedure Code','e'); ?>:</b></td>
261 <td>
262 <input type='text' size='40' name='form_procedure_code' maxlength='31'
263 value='<?php echo htmlspecialchars($row['procedure_code'], ENT_QUOTES); ?>'
264 title='<?php xl('The vendor-specific code identifying this procedure or result','e'); ?>'
265 style='width:100%' class='inputtext' />
266 </td>
267 </tr>
269 <tr class='ordonly'>
270 <td nowrap><b><?php xl('Standard Code','e'); ?>:</b></td>
271 <td>
272 <input type='text' size='50' name='form_standard_code'
273 value='<?php echo $row['standard_code'] ?>' onclick='sel_related("form_standard_code")'
274 title='<?php xl('Click to select an industry-standard code for this procedure','e'); ?>'
275 style='width:100%' readonly />
276 </td>
277 </tr>
279 <tr class='ordonly'>
280 <td width='1%' nowrap><b><?php xl('Body Site','e'); ?>:</b></td>
281 <td>
282 <?php
283 generate_form_field(array('data_type' => 1, 'field_id' => 'body_site',
284 'list_id' => 'proc_body_site',
285 'description' => xl('Body site, if applicable')), $row['body_site']);
287 </td>
288 </tr>
290 <tr class='ordonly'>
291 <td width='1%' nowrap><b><?php xl('Specimen Type','e'); ?>:</b></td>
292 <td>
293 <?php
294 generate_form_field(array('data_type' => 1, 'field_id' => 'specimen',
295 'list_id' => 'proc_specimen',
296 'description' => xl('Specimen Type')),
297 $row['specimen']);
299 </td>
300 </tr>
302 <tr class='ordonly'>
303 <td width='1%' nowrap><b><?php xl('Administer Via','e'); ?>:</b></td>
304 <td>
305 <?php
306 generate_form_field(array('data_type' => 1, 'field_id' => 'route_admin',
307 'list_id' => 'proc_route',
308 'description' => xl('Route of administration, if applicable')),
309 $row['route_admin']);
311 </td>
312 </tr>
314 <tr class='ordonly'>
315 <td width='1%' nowrap><b><?php xl('Laterality','e'); ?>:</b></td>
316 <td>
317 <?php
318 generate_form_field(array('data_type' => 1, 'field_id' => 'laterality',
319 'list_id' => 'proc_lat',
320 'description' => xl('Laterality of this procedure, if applicable')),
321 $row['laterality']);
323 </td>
324 </tr>
326 <tr class='resonly'>
327 <td width='1%' nowrap><b><?php xl('Default Units','e'); ?>:</b></td>
328 <td>
329 <?php
330 generate_form_field(array('data_type' => 1, 'field_id' => 'units',
331 'list_id' => 'proc_unit',
332 'description' => xl('Optional default units for manual entry of results')),
333 $row['units']);
335 </td>
336 </tr>
338 <tr class='resonly'>
339 <td nowrap><b><?php xl('Default Range','e'); ?>:</b></td>
340 <td>
341 <input type='text' size='40' name='form_range' maxlength='255'
342 value='<?php echo htmlspecialchars($row['range'], ENT_QUOTES); ?>'
343 title='<?php xl('Optional default range for manual entry of results','e'); ?>'
344 style='width:100%' class='inputtext' />
345 </td>
346 </tr>
348 <tr class='resonly'>
349 <td nowrap><b><?php xl('Followup Services','e'); ?>:</b></td>
350 <td>
351 <input type='text' size='50' name='form_related_code'
352 value='<?php echo $row['related_code'] ?>' onclick='sel_related("form_related_code")'
353 title='<?php xl('Click to select services to perform if this result is abnormal','e'); ?>'
354 style='width:100%' readonly />
355 </td>
356 </tr>
358 </table>
360 <br />
362 <input type='submit' name='form_save' value=<?php xl('Save','e','\'','\''); ?> />
364 <?php if ($typeid) { ?>
365 &nbsp;
366 <input type='submit' name='form_delete' value=<?php xl('Delete','e','\'','\''); ?> style='color:red' />
367 <?php } ?>
369 &nbsp;
370 <input type='button' value=<?php xl('Cancel','e','\'','\''); ?> onclick='window.close()' />
371 </p>
373 </center>
374 </form>
375 </body>
376 </html>