2 include_once("../../globals.php");
3 include_once("../../../library/api.inc");
4 include_once("../../../library/sql.inc");
5 formHeader("Form: CAMOS");
6 $returnurl = $GLOBALS['concurrent_layout'] ?
'encounter_top.php' : 'patient_encounter.php';
16 $previous_encounter_data = '<hr><p>'. xl('Previous Encounter CAMOS entries') .'</p><hr>';
17 //get data from previous encounter to show at bottom of form for reference
18 $query = "SELECT t1.category, t1.subcategory, t1.item, t1.content FROM form_CAMOS as t1 JOIN forms as t2 on (t1.id = t2.form_id) where t2.encounter=(select max(encounter) from forms where form_name like 'CAMOS%' and encounter < ".$_SESSION['encounter']." and pid=".$_SESSION['pid'].") and t1.pid=".$_SESSION['pid'];
19 $statement = sqlStatement($query);
20 while ($result = sqlFetchArray($statement)) {
21 $previous_encounter_data .= $result['category']." | ".$result['subcategory']." | ".$result['item']."<p><pre>".$result['content']."</pre></p><hr>";
24 //end of get data from previous encounter
25 //variables for preselect section below (after handle database changes):
26 $preselect_category = '';
27 $preselect_subcategory = '';
29 $preselect_category_override = '';
30 $preselect_subcategory_override = '';
31 $preselect_item_override = '';
32 if ($_POST['hidden_category']) {$preselect_category = $_POST['hidden_category'];}
33 if ($_POST['hidden_subcategory']) {$preselect_subcategory = $_POST['hidden_subcategory'];}
34 if ($_POST['hidden_item']) {$preselect_item = $_POST['hidden_item'];}
35 //handle changes to database
36 if ($_POST['hidden_mode'] == 'add') {
37 if ($_POST['hidden_selection'] == 'change_category') {
38 $preselect_category_override = $_POST['change_category'];
39 $query = "INSERT INTO form_CAMOS_category (category) values ('";
40 $query .= $_POST['change_category']."')";
43 else if ($_POST['hidden_selection'] == 'change_subcategory') {
44 $preselect_subcategory_override = $_POST['change_subcategory'];
45 $category_id = $_POST['hidden_category'];
46 if ($category_id >= 0 ) {
47 $query = "INSERT INTO form_CAMOS_subcategory (subcategory, category_id) values ('";
48 $query .= $_POST['change_subcategory']."', '".$category_id."')";
52 else if ($_POST['hidden_selection'] == 'change_item') {
53 $preselect_item_override = $_POST['change_item'];
54 $category_id = $_POST['hidden_category'];
55 $subcategory_id = $_POST['hidden_subcategory'];
56 if (($category_id >= 0 ) && ($subcategory_id >=0)) {
57 $query = "INSERT INTO form_CAMOS_item (item, content, subcategory_id) values ('";
58 $query .= $_POST['change_item']."', '".$_POST['textarea_content']."', '".$subcategory_id."')";
63 else if ($_POST['hidden_selection'] == 'change_content') {
64 $item_id = $_POST['hidden_item'];
65 $content = $_POST['textarea_content'];
67 $query = "UPDATE form_CAMOS_item set content = '".$content."' where id = ".$item_id;
72 else if ($_POST['hidden_mode'] == 'delete') {
73 if ($_POST['hidden_selection'] == 'change_category') {
74 $to_delete_id = $_POST['hidden_category'];
75 $to_delete_from_table = 'form_CAMOS_category';
76 $to_delete_from_subtable = 'form_CAMOS_subcategory';
77 $tablename = 'category';
78 $subtablename = 'subcategory';
80 else if ($_POST['hidden_selection'] == 'change_subcategory') {
81 $to_delete_id = $_POST['hidden_subcategory'];
82 $to_delete_from_table = 'form_CAMOS_subcategory';
83 $to_delete_from_subtable = 'form_CAMOS_item';
84 $tablename = 'subcategory';
85 $subtablename = 'item';
87 else if ($_POST['hidden_selection'] == 'change_item') {
88 $to_delete_id = $_POST['hidden_item'];
89 $to_delete_from_table = 'form_CAMOS_item';
90 $to_delete_from_subtable = '';
95 if ($subtablename == '') {
96 $query = "DELETE FROM ".$to_delete_from_table." WHERE id like '".$to_delete_id."'";
100 $query = "SELECT count(id) FROM ".$to_delete_from_subtable." WHERE ".$tablename."_id like '".$to_delete_id."'";
101 $statement = sqlStatement($query);
102 if ($result = sqlFetchArray($statement)) {
103 if ($result['count(id)'] == 0) {
104 $query = "DELETE FROM ".$to_delete_from_table." WHERE id like '".$to_delete_id."'";
108 $error = $subtablename." not empty!";
113 else if ($_POST['hidden_mode'] == 'alter') {
114 $newval = $_POST[$_POST['hidden_selection']];
115 if ($_POST['hidden_selection'] == 'change_category') {
116 $to_alter_id = $_POST['hidden_category'];
117 $to_alter_table = 'form_CAMOS_category';
118 $to_alter_column = 'category';
120 else if ($_POST['hidden_selection'] == 'change_subcategory') {
121 $to_alter_id = $_POST['hidden_subcategory'];
122 $to_alter_table = 'form_CAMOS_subcategory';
123 $to_alter_column = 'subcategory';
125 else if ($_POST['hidden_selection'] == 'change_item') {
126 $to_alter_id = $_POST['hidden_item'];
127 $to_alter_table = 'form_CAMOS_item';
128 $to_alter_column = 'item';
130 $query = "UPDATE ".$to_alter_table." set ".$to_alter_column." = '".$newval."' where id = ".$to_alter_id;
133 // end handle changes to database
135 //preselect column items
136 //either a database change has been made, so the user should be made to feel that they never left the same CAMOS screen
137 //or, CAMOS has been started freshly, therefore the last entry of the current patient should be selected.
138 $preselect_mode = '';
139 if ($preselect_category == '') {
140 $preselect_mode = 'by name';
141 //at this point, if this variable has not been set, CAMOS must have been start over
142 //so let's get the most recent values from form_CAMOS for this patient's pid
143 $query = "SELECT category, subcategory, item FROM form_CAMOS WHERE id =(SELECT max(id) from form_CAMOS WHERE pid=".$_SESSION['pid'].")";
144 $statement = sqlStatement($query);
145 if ($result = sqlFetchArray($statement)) {
146 $preselect_category = $result['category'];
147 $preselect_subcategory = $result['subcategory'];
148 $preselect_item = $result['item'];
150 else {$preselect_mode = '';}
153 $preselect_mode = 'by number';
156 //end preselect column items
160 <link rel
=stylesheet href
="<?echo $css_header;?>" type
="text/css">
162 <script language
="javascript" type
="text/javascript">
164 var array1
= new Array();
165 var array2
= new Array();
166 var array3
= new Array();
168 var preselect_off
= false;
169 var content_change_flag
= false;
170 var lock_override_flag
= false;
172 //deal with locking of content = prevent accidental overwrite
174 function trimString (str
) {
175 str
= this
!= window? this
: str
;
176 return str
.replace(/^\s+
/g
, '').replace(/\s+$
/g
, '');
178 function isLocked() {
180 if (lock_override_flag
) {
181 lock_override_flag
= false;
184 return /\
/\
*\s
*lock\s
*\
:\
:\s
*\
*\
//.test(f2.textarea_content.value);
186 function lock_content() {
188 if ((trimString(f2
.textarea_content
.value
) != "") && (!isLocked())) {
189 f2
.textarea_content
.value
= f2
.textarea_content
.value +
"\n\n" +
"/*lock::*/";
190 lock_override_flag
= true;
191 js_button('add','change_content');
194 function allSelected() {
195 var f2
= document
.CAMOS
;
196 if ( (f2
.select_category
.selectedIndex
< 0) ||
(f2
.select_subcategory
.selectedIndex
< 0) ||
(f2
.select_item
.selectedIndex
< 0) ) {
197 return false; //one of the columns is not selected
200 return true; //all columns have a selection
204 function content_focus() {
205 if (content_change_flag
== false) {
206 if (!allSelected()) {
207 alert("If you add text to the 'content' box without a selection in each column (category, subcategory, item), you will likely lose your work.")
211 content_change_flag
= true;
213 function content_blur() {
214 if (content_change_flag
== true) {
215 content_change_flag
= false;
221 $query = "SELECT code_text, code FROM billing WHERE encounter=".$_SESSION['encounter'].
222 " AND pid=".$_SESSION['pid']." AND code_type like 'ICD9'";
223 $statement = sqlStatement($query);
224 if ($result = sqlFetchArray($statement)) {
226 echo "icd9_list = \"\\n\\n\\\n";
227 echo $result['code']." ".$result['code_text']."\\n\\\n";
229 while ($result = sqlFetchArray($statement)) {
230 echo $result['code']." ".$result['code_text']."\\n\\\n";
232 if ($icd9_flag) {echo "\";\n";}
234 $query = "SELECT id, category FROM form_CAMOS_category ORDER BY category";
235 $statement = sqlStatement($query);
237 while ($result = sqlFetchArray($statement)) {
238 echo "array1[".$i."] = new Array('".$result['category']."','".$result['id']."', new Array());\n";
242 $query = "SELECT id, subcategory, category_id FROM form_CAMOS_subcategory ORDER BY subcategory";
243 $statement = sqlStatement($query);
244 while ($result = sqlFetchArray($statement)) {
245 echo "array2[".$i."] = new Array('".$result['subcategory']."', '".$result['category_id']."', '".$result['id']."', new Array());\n";
249 $query = "SELECT id, item, content, subcategory_id FROM form_CAMOS_item ORDER BY item";
250 $statement = sqlStatement($query);
251 while ($result = sqlFetchArray($statement)) {
252 echo "array3[".$i."] = new Array('".$result['item']."', '".str_replace(array("\r","\n","'","\""),array("\\r","\\n","\\'","\\\""),strip_tags($result['content'],"<b>,<i>"))."', '".$result['subcategory_id'].
253 "','".$result['id']."');\n";
258 function append_icd9() {
259 var f2
= document
.CAMOS
;
260 f2
.textarea_content
.value
= f2
.textarea_content
.value + icd9_list
;
263 function select_word(mode
, mystring
, myselect
) { //take a string and select it in a select box if present
264 if (preselect_off
) return 0;
265 for (var i
=0;i
<myselect
.length
;i++
) {
267 if (mode
== 'by name') {
268 match
= myselect
.options
[i
].text
;
270 else if (mode
== 'by number') {
271 match
= myselect
.options
[i
].value
;
274 if (match
== mystring
) {
275 myselect
.selectedIndex
= i
;
282 var f2
= document
.CAMOS
;
283 for (i1
=0;i1
<array1
.length
;i1++
) {
284 f2
.select_category
.options
[f2
.select_category
.length
] = new Option(array1
[i1
][0], array1
[i1
][1]);
287 $temp_preselect_mode = $preselect_mode;
288 if ($preselect_category_override != '') {
289 $temp_preselect_mode = "by name";
290 $preselect_category = $preselect_category_override;
293 if (select_word('<? echo $temp_preselect_mode."', '".$preselect_category; ?>' ,f2
.select_category
)) {
298 function click_category() {
299 var f2
= document
.CAMOS
;
300 var category_index
= f2
.select_category
.selectedIndex
;
301 if ((category_index
< 0) ||
(category_index
> f2
.select_category
.length
-1)) {return 0;}
302 var sel
= f2
.select_category
.options
[f2
.select_category
.selectedIndex
].value
;
303 for (var i1
=0;i1
<array1
.length
;i1++
) {
304 if (array1
[i1
][1] == sel
) {
305 f2
.select_subcategory
.length
= 0;
306 f2
.select_item
.length
= 0;
307 f2
.textarea_content
.value
= '';
308 for (var i2
=0;i2
<array2
.length
;i2++
) {
309 if (array1
[i1
][1] == array2
[i2
][1]) {
310 f2
.select_subcategory
.options
[f2
.select_subcategory
.length
] = new Option(array2
[i2
][0], array2
[i2
][2]);
316 $temp_preselect_mode = $preselect_mode;
317 if ($preselect_subcategory_override != '') {
318 $temp_preselect_mode = "by name";
319 $preselect_subcategory = $preselect_subcategory_override;
322 if (select_word('<? echo $temp_preselect_mode."', '".$preselect_subcategory; ?>' ,f2
.select_subcategory
)) {
326 function click_subcategory() {
327 var f2
= document
.CAMOS
;
328 var subcategory_index
= f2
.select_subcategory
.selectedIndex
;
329 if ((subcategory_index
< 0) ||
(subcategory_index
> f2
.select_subcategory
.length
-1)) {return 0;}
330 var sel
= f2
.select_subcategory
.options
[f2
.select_subcategory
.selectedIndex
].value
;
331 for (var i1
=0;i1
<array2
.length
;i1++
) {
332 if (array2
[i1
][2] == sel
) {
333 f2
.select_item
.length
= 0;
334 f2
.textarea_content
.value
= '';
335 for (var i2
=0;i2
<array3
.length
;i2++
) {
336 if (array2
[i1
][2] == array3
[i2
][2]) {
337 f2
.select_item
.options
[f2
.select_item
.length
] = new Option(array3
[i2
][0], array3
[i2
][3]);
343 $temp_preselect_mode = $preselect_mode;
344 if ($preselect_item_override != '') {
345 $temp_preselect_mode = "by name";
346 $preselect_item = $preselect_item_override;
349 if (select_word('<? echo $temp_preselect_mode."', '".$preselect_item; ?>' ,f2
.select_item
)) {
351 preselect_off
= true;
354 function click_item() {
355 var f2
= document
.CAMOS
;
356 var item_index
= f2
.select_item
.selectedIndex
;
357 if ((item_index
< 0) ||
(item_index
> f2
.select_item
.length
-1)) {return 0;}
358 var sel
= f2
.select_item
.options
[item_index
].value
;
359 for (var i1
=0;i1
<array3
.length
;i1++
) {
360 if (array3
[i1
][3] == sel
) {
361 f2
.textarea_content
.value
= array3
[i1
][1];
366 function selectContains(myselect
, str
) {
367 for (var i
=0;i
<myselect
.length
;i++
) {
368 if (myselect
.options
[i
].text
== trimString(str
)) {return true;}
372 function js_button(mode
,selection
) {
373 var f2
= document
.CAMOS
;
375 if ( (mode
== 'add') && (selection
== 'change_content') && (isLocked()) ) {
376 alert("You have attempted to alter content which is locked.\nRemove the lock if you want to do this.\nTo unlock, remove the line, '/*lock::*/'");
381 //check for blank or duplicate submissions
382 if ( (mode
== 'add') ||
(mode
== 'alter') ) {
383 if (selection
== 'change_category') {
384 if (trimString(f2
.change_category
.value
) == "") {
385 alert("You cannot add a blank value for a category!");
388 if (selectContains(f2
.select_category
, trimString(f2
.change_category
.value
))) {
389 alert("There is already a category named "+f2
.change_category
.value+
".");
393 if (selection
== 'change_subcategory') {
394 if (trimString(f2
.change_subcategory
.value
) == "") {
395 alert("You cannot add a blank value for a subcategory!");
398 if (selectContains(f2
.select_subcategory
, trimString(f2
.change_subcategory
.value
))) {
399 alert("There is already a subcategory named "+f2
.change_subcategory
.value+
".");
403 if (selection
== 'change_item') {
404 if (trimString(f2
.change_item
.value
) == "") {
405 alert("You cannot add a blank value for an item!");
408 if (selectContains(f2
.select_item
, trimString(f2
.change_item
.value
))) {
409 alert("There is already an item named "+f2
.change_item
.value+
".");
414 //end of check for blank or duplicate submissions
416 if (mode
== 'delete') {
417 if (!confirm("Are you sure you want to delete this item from the database?")) {
421 var f2
= document
.CAMOS
;
422 var category_index
= f2
.select_category
.selectedIndex
;
424 if (category_index
< 0) {
425 if ((selection
== 'change_subcategory') ||
(selection
== 'change_item') ||
426 (selection
== 'change_content')) {
427 alert ('You have not selected a category!');
433 category
= f2
.select_category
.options
[category_index
].value
;
435 var subcategory_index
= f2
.select_subcategory
.selectedIndex
;
437 if (subcategory_index
< 0) {
438 if ((selection
== 'change_item') ||
(selection
== 'change_content')) {
439 alert ('You have not selected a subcategory!');
445 subcategory
= f2
.select_subcategory
.options
[subcategory_index
].value
;
447 var item_index
= f2
.select_item
.selectedIndex
;
449 if (item_index
< 0) {
450 if (selection
== 'change_content') {
451 alert ('You have not selected an item!');
457 item
= f2
.select_item
.options
[item_index
].value
;
459 if (mode
== 'submit') {
460 f2
.category
.value
= f2
.select_category
.options
[f2
.select_category
.selectedIndex
].text
;
461 f2
.subcategory
.value
= f2
.select_subcategory
.options
[f2
.select_subcategory
.selectedIndex
].text
;
462 f2
.item
.value
= f2
.select_item
.options
[f2
.select_item
.selectedIndex
].text
;
463 if (selection
== 'submit_selection') {
464 f2
.content
.value
= (f2
.textarea_content
.value
).substring(f2
.textarea_content
.selectionStart
, f2
.textarea_content
.selectionEnd
);
466 else {f2
.content
.value
= f2
.textarea_content
.value
;}
467 f2
.action
= '<?echo $rootdir;?>/forms/CAMOS/save.php?mode=new';
471 f2
.hidden_mode
.value
= mode
;
472 f2
.hidden_selection
.value
= selection
;
473 f2
.hidden_category
.value
= category
;
474 f2
.hidden_subcategory
.value
= subcategory
;
475 f2
.hidden_item
.value
= item
;
476 f2
.action
= '<? print $GLOBALS['webroot
'] ?>/interface/patient_file/encounter/load_form.php?formname=CAMOS';
477 <?php
if (!$GLOBALS['concurrent_layout']) { ?
>
484 function selectItem () {
486 f2
.item
.value
=f2
.select_item
.options
[f2
.select_item
.selectedIndex
].text
;
487 f2
.content
.value
= f2
.textarea_content
.value
;
492 <body
<?
echo $top_bg_line;?
> topmargin
=0 rightmargin
=0 leftmargin
=2 bottommargin
=0 marginwidth
=2 marginheight
=0 onload
="init()">
493 <form method
=post action
="<?echo $rootdir;?>/forms/CAMOS/save.php?mode=new" name
="CAMOS">
497 echo "<h1> error: ".$error."</h1>\n";
503 <?php
xl('Category','e');?
>
506 <?php
xl('Subcategory','e');?
>
509 <?php
xl('Item','e');?
>
512 <?php
xl('Content','e');?
>
518 <select name
=select_category size
=<?
echo $select_size ?
> onchange
="click_category()"></select
><br
>
519 <input type
=text name
=change_category
><br
>
520 <input type
=button name
=add1 value
=add onClick
="js_button('add','change_category')">
521 <input type
=button name
=alter1 value
=alter onClick
="js_button('alter','change_category')">
522 <input type
=button name
=del1 value
=del onClick
="js_button('delete','change_category')"><br
>
525 <select name
=select_subcategory size
=<?
echo $select_size ?
> onchange
="click_subcategory()"></select
><br
>
526 <input type
=text name
=change_subcategory
><br
>
527 <input type
=button name
=add2 value
=add onClick
="js_button('add','change_subcategory')">
528 <input type
=button name
=alter1 value
=alter onClick
="js_button('alter','change_subcategory')">
529 <input type
=button name
=del2 value
=del onClick
="js_button('delete','change_subcategory')"><br
>
532 <select name
=select_item size
=<?
echo $select_size ?
> onchange
="click_item()"></select
><br
>
533 <input type
=text name
=change_item
><br
>
534 <input type
=button name
=add3 value
=add onClick
="js_button('add','change_item')">
535 <input type
=button name
=alter1 value
=alter onClick
="js_button('alter','change_item')">
536 <input type
=button name
=del3 value
=del onClick
="js_button('delete','change_item')"><br
>
539 <textarea name
=textarea_content cols
=<?
echo $textarea_cols ?
> rows
=<?
echo $textarea_rows ?
> onFocus
="content_focus()" onBlur
="content_blur()"></textarea
><br
>
540 <input type
=button name
=add4 value
=add onClick
="js_button('add','change_content')">
541 <input type
=button name
=icd9 value
=icd9 onClick
="append_icd9()">
542 <input type
=button name
=lock value
=lock onClick
="lock_content()">
547 <input type
=hidden name
=hidden_mode
>
548 <input type
=hidden name
=hidden_selection
>
549 <input type
=hidden name
=hidden_category
>
550 <input type
=hidden name
=hidden_subcategory
>
551 <input type
=hidden name
=hidden_item
>
553 <input type
=hidden name
=category
>
554 <input type
=hidden name
=subcategory
>
555 <input type
=hidden name
=item
>
556 <input type
=hidden name
=content
>
557 <input type
=button name
='submit form' value
='submit all content' onClick
="js_button('submit','submit')">
558 <input type
=button name
='submit form' value
='submit selected content' onClick
="js_button('submit','submit_selection')">
560 echo "<a href='".$GLOBALS['webroot'] . "/interface/patient_file/encounter/$returnurl'>[" .xl('do not save'). "]</a>";
561 echo "<a href='".$GLOBALS['webroot'] . "/interface/forms/CAMOS/help.html' target='new'> | [" .xl ('help'). "]</a>";
562 echo $previous_encounter_data;