2 //INCLUDES, DO ANY ACTIONS, THEN GET OUR DATA
3 include_once("../globals.php");
4 include_once("$srcdir/registry.inc");
5 include_once("$srcdir/sql.inc");
6 include_once("../../library/acl.inc");
7 include_once("batchcom.inc.php");
10 $thisauth = acl_check('admin', 'batchcom');
13 echo "<html>\n<body>\n";
14 echo "<p>You are not authorized for this.</p>\n";
15 echo "</body>\n</html>\n";
19 // menu arrays (done this way so it's easier to validate input on validate selections)
20 $choices=Array ('CSV File','Email','Phone call list');
21 $gender=Array ('Any','Male','Female');
22 $hipaa=Array ('NO','YES');
23 $sort_by=Array ('Zip Code'=>'patient_data.postal_code','Last Name'=>'patient_data.lname','Appointment Date'=>'last_ap' );
26 if ($_POST['form_action']=='Process') {
27 //validation uses the functions in batchcom.inc.php
29 if (!check_date_format($_POST['app_s'])) $form_err.='<br>Date format for "appointment start" is not valid';
30 if (!check_date_format($_POST['app_e'])) $form_err.='<br>Date format for "appointment end" is not valid';
31 if (!check_date_format($_POST['seen_since'])) $form_err.='<br>Date format for "seen since" is not valid';
32 if (!check_date_format($_POST['not_seen_since'])) $form_err.='<br>Date format for "not seen since" is not valid';
34 if (!check_age($_POST['age_from'])) $form_err.='<br>Age format for "age from" is not valid';
35 if (!check_age($_POST['age_upto'])) $form_err.='<br>Age format for "age up to" is not valid';
36 // validate selections
37 if (!check_select($_POST['gender'],$gender)) $form_err.='<br>Error in "Gender" selection';
38 if (!check_select($_POST['process_type'],$choices)) $form_err.='<br>Error in "Process" selection';
39 if (!check_select($_POST['hipaa_choice'],$hipaa)) $form_err.='<br>Error in "HIPAA" selection';
40 if (!check_select($_POST['sort_by'],$sort_by)) $form_err.='<br>Error in "Sort By" selection';
42 if (!check_yes_no ($_POST['and_or_gender'])) $form_err.='<br>Error in YES or NO option';
43 if (!check_yes_no ($_POST['and_or_app_within'])) $form_err.='<br>Error in YES or NO option';
44 if (!check_yes_no ($_POST['and_or_seen_since'])) $form_err.='<br>Error in YES or NO option';
45 if (!check_yes_no ($_POST['and_or_not_seen_since'])) $form_err.='<br>Error in YES or NO option';
51 SELECT DISTINCT patient_data.* , MAX( cal_events.pc_endDate ) AS last_ap, MAX( forms.date) AS last_visit, (DATEDIFF(CURDATE(),patient_data.DOB)/365.25) AS pat_age
52 FROM patient_data, forms
53 LEFT JOIN openemr_postcalendar_events AS cal_events ON patient_data.pid=cal_events.pc_pid
54 LEFT JOIN forms AS forms2 ON patient_data.pid=forms2.pid
58 if ($_POST['app_s']!=0 AND $_POST['app_s']!='') {
59 $and=where_or_and ($and);
60 $sql_where_a=" $and cal_events.pc_eventDate > '".$_POST['app_s']."'";
62 if ($_POST['app_e']!=0 AND $_POST['app_e']!='') {
63 $and=where_or_and ($and);
64 $sql_where_a.=" $and cal_events.pc_endDate < '".$_POST['app_e']."'";
69 if ($_POST['seen_since']!=0 AND $_POST['seen_since']!='') {
70 $and=where_or_and ($and);
71 $sql.=" $and forms2.date > '".$_POST['seen_since']."' " ;
73 if ($_POST['seen_upto']!=0 AND $_POST['not_seen_since']!='') {
74 $and=where_or_and ($and);
75 $sql.=" $and forms2.date > '".$_POST['seen_since']."' " ;
79 if ($_POST['age_from']!=0 AND $_POST['age_from']!='') {
80 $and=where_or_and ($and);
81 $sql.=" $and DATEDIFF( CURDATE( ), patient_data.DOB )/ 365.25 >= '".$_POST['age_from']."' ";
83 if ($_POST['age_upto']!=0 AND $_POST['age_upto']!='') {
84 $and=where_or_and ($and);
85 $sql.=" $and DATEDIFF( CURDATE( ), patient_data.DOB )/ 365.25 <= '".$_POST['age_upto']."' ";
89 if ($_POST['gender']!='Any') {
90 $and=where_or_and ($and);
91 $sql.=" $and patient_data.sex='".$_POST['gender']."' ";
95 if ($_POST['hipaa_choice']!='NO') {
96 $and=where_or_and ($and);
97 $sql.=" $and patient_data.hipaa_mail='YES' ";
100 switch ($_POST['process_type']):
101 case $choices[1]: // Email
102 $and=where_or_and ($and);
103 $sql.=" $and patient_data.email IS NOT NULL ";
107 // add to complete query sintax
108 $sql.=' GROUP BY patient_data.pid';
111 $sql.=' ORDER BY '.$_POST['sort_by'];
114 // send query for results.
115 $res = sqlStatement($sql);
118 if (mysql_num_rows($res)==0){
120 echo ("<br>No results, please tray again.");
124 switch ($_POST['process_type']):
125 case $choices[0]: // CSV File
126 require_once ('batchCSV.php');
128 case $choices[1]: // Email
129 require_once ('batchEmail.php');
131 case $choices[2]: // Phone list
132 require_once ('batchPhoneList.php');
142 //START OUT OUR PAGE....
146 <link rel
=stylesheet href
="<?echo $css_header;?>" type
="text/css">
147 <link rel
=stylesheet href
="batchcom.css" type
="text/css">
148 <script type
="text/javascript" src
="http://192.168.1.7/e/openemr/library/overlib_mini.js"></script
>
149 <script type
="text/javascript" src
="http://192.168.1.7/e/openemr/library/calendar.js"></script
>
153 <body
<?
echo $top_bg_line;?
> topmargin
=0 rightmargin
=0 leftmargin
=2 bottommargin
=0 marginwidth
=2 marginheight
=0>
154 <span
class="title">Batch Communication Tool
</span
>
157 <!-- for the popup date selector
-->
158 <div id
="overDiv" style
="position:absolute; visibility:hidden; z-index:1000;"></div
>
160 <FORM name
="select_form" METHOD
=POST ACTION
="">
163 <div
class="main_box">
166 echo ("The following errors occurred<br>$form_err<br><br>");
169 Process
:<SELECT NAME
="process_type">
171 foreach ($choices as $value) {
172 echo ("<option>$value</option>");
177 <br
>Overwrite HIPAA choice
: <SELECT NAME
="hipaa_choice">
179 foreach ($hipaa as $value) {
180 echo ("<option>$value</option>");
185 Age From
:<INPUT TYPE
="text" size
="2" NAME
="age_from"> Up to
:<INPUT TYPE
="text" size
="2" NAME
="age_upto">
186 And:<INPUT TYPE
="radio" NAME
="and_or_gender" value
="AND" checked
>, Or:<INPUT TYPE
="radio" NAME
="and_or_gender" value
="OR">
187 Gender
: <SELECT NAME
="gender">
189 foreach ($gender as $value) {
190 echo ("<option>$value</option>");
195 <br
>Insurance
: <SELECT multiple NAME
="insurance" Rows
="10" cols
="20">
199 <br
>And:<INPUT TYPE
="radio" NAME
="and_or_app_within" value
="AND" checked
>, Or:<INPUT TYPE
="radio" NAME
="and_or_app_within" value
="OR"> Appointment within
:<INPUT TYPE
='text' size
='12' NAME
='app_s'> <a href
="javascript:show_calendar('select_form.app_s')"
200 title
="Click here to choose a date"
201 ><img src
='../pic/show_calendar.gif' align
='absbottom' width
='24' height
='22' border
='0' alt
='[?]'></a
>
203 And: <INPUT TYPE
='text' size
='12' NAME
='app_e'> <a href
="javascript:show_calendar('select_form.app_e')"
204 title
="Click here to choose a date"
205 ><img src
='../pic/show_calendar.gif' align
='absbottom' width
='24' height
='22' border
='0' alt
='[?]'></a
>
207 <br
>And:<INPUT TYPE
="radio" NAME
="and_or_seen_since" value
="AND" checked
>, Or:<INPUT TYPE
="radio" NAME
="and_or_seen_since" value
="OR"> Seen since
: <INPUT TYPE
='text' size
='12' NAME
='seen_since'> <a href
="javascript:show_calendar('select_form.seen_since')"
208 title
="Click here to choose a date"
209 ><img src
='../pic/show_calendar.gif' align
='absbottom' width
='24' height
='22' border
='0' alt
='[?]'></a
>
211 <br
>And:<INPUT TYPE
="radio" NAME
="and_or_not_seen_since" value
="AND" checked
>, Or:<INPUT TYPE
="radio" NAME
="and_or_not_seen_since" value
="OR"> Not seen since
: <INPUT TYPE
='text' size
='12' NAME
='not_seen_since'> <a href
="javascript:show_calendar('select_form.not_seen_since')"
212 title
="Click here to choose a date"
213 ><img src
='../pic/show_calendar.gif' align
='absbottom' width
='24' height
='22' border
='0' alt
='[?]'></a
>
214 <br
>Sort by
: <SELECT NAME
="sort_by">
216 foreach ($sort_by as $key => $value) {
217 echo ("<option value=".$value.">$key</option>");
221 <br
>(Fill here only
if sending email notification to patients
).
222 <br
>Email Sender
: <INPUT TYPE
="text" NAME
="email_sender" value
="your@example.com">
223 <br
>Email Subject
: <INPUT TYPE
="text" NAME
="email_subject" value
="From your clinic">
224 <br
>Email Text
, Usable Tag
: ***NAME
*** , i
.e
. Dear
***NAME
***
225 <br
><TEXTAREA NAME
="email_body" ROWS
="8" COLS
="35"></TEXTAREA
>
227 <br
><INPUT TYPE
="submit" name
="form_action" value
="Process">