Exemple #1
0
/**
 * Function to send reminders.
 *
 * Function that sends reminders and returns an array with a specific data structure.
 * <pre>The data structure of the return array includes the following elements
 *   'total_pre_unsent_reminders'  - Number of reminders before processing.
 *   'total_post_unsent_reminders' - Number of reminders after processing.
 *   'number_success_emails'       - Number of successfully sent email reminders.
 *   'number_failed_emails'        - Number of failed sent email reminders.
 *   'number_success_calls'        - Number of successfully call reminders.
 *   'number_failed_calls'         - Number of failed call reminders.
 * </pre>
 *
 * @return array                 see above for data structure of returned array
 */
function send_reminders()
{
    $logging = array();
    // Collect active reminders that have not yet been sent.
    $active_unsent_reminders = fetch_reminders('', 'unsent');
    $logging['total_pre_unsent_reminders'] = count($active_unsent_reminders);
    // Send the unsent reminders
    $logging['number_success_emails'] = 0;
    $logging['number_failed_emails'] = 0;
    $logging['number_success_calls'] = 0;
    $logging['number_failed_calls'] = 0;
    foreach ($active_unsent_reminders as $reminder) {
        // Collect patient information that reminder is going to.
        $sql = "SELECT `fname`, `lname`, `email`, `phone_home`, `hipaa_voice`, `hipaa_allowemail` from `patient_data` where `pid`=?";
        $result = sqlQueryCdrEngine($sql, array($reminder['pid']));
        $patientfname = $result['fname'];
        $patientlname = $result['lname'];
        $patientemail = $result['email'];
        $patientphone = $result['phone_home'];
        $hipaa_voice = $result['hipaa_voice'];
        $hipaa_allowemail = $result['hipaa_allowemail'];
        // Email to patient if Allow Email and set reminder sent flag.
        if ($hipaa_allowemail == "YES") {
            $mail = new MyMailer();
            $sender_name = $GLOBALS['patient_reminder_sender_name'];
            $email_address = $GLOBALS['patient_reminder_sender_email'];
            $mail->FromName = $sender_name;
            // required
            $mail->Sender = $email_address;
            // required
            $mail->From = $email_address;
            // required
            $mail->AddAddress($patientemail, $patientfname . ", " . $patientlname);
            // required
            $mail->AddReplyTo($email_address, $sender_name);
            // required
            $category_title = generate_display_field(array('data_type' => '1', 'list_id' => 'rule_action_category'), $reminder['category']);
            $item_title = generate_display_field(array('data_type' => '1', 'list_id' => 'rule_action'), $reminder['item']);
            $mail->Body = "Dear " . $patientfname . ", This is a message from your clinic to remind you of your " . $category_title . ": " . $item_title;
            $mail->Subject = "Clinic Reminder";
            if ($mail->Send()) {
                // deal with and keep track of this successful email
                sqlStatementCdrEngine("UPDATE `patient_reminders` SET `email_status`='1', `date_sent`=NOW() WHERE id=?", array($reminder['id']));
                $logging['number_success_emails']++;
            } else {
                // deal with and keep track of this unsuccesful email
                $logging['number_failed_emails']++;
            }
        }
        // Call to patient if Allow Voice Message and set reminder sent flag.
        if ($hipaa_voice == "YES") {
            /******************************************************************************
            *     // Maviq does not work, is not currently supported, and seems to break on windows servers, so this
            *     //  feature has been commented out for now.
            *     // Automated VOIP service provided by Maviq. Please visit http://signup.maviq.com for more information.
            *      $siteId = $GLOBALS['phone_gateway_username'];
            *      $token = $GLOBALS['phone_gateway_password'];
            *      $endpoint = $GLOBALS['phone_gateway_url'];
            *      $client = new MaviqClient($siteId, $token, $endpoint);
            *      //Set up params.
            *      $data = array(
            *        "firstName" => $patientfname,
            *        "lastName" => $patientlname,
            *        "phone" => $patientphone,
            *        //"apptDate" => "$scheduled_date[1]/$scheduled_date[2]/$scheduled_date[0]",
            *        "timeRange" => "10-18",
            *        "type" => "reminder",
            *        "timeZone" => date('P'),
            *        "greeting" => str_replace("[[sender]]", $sender_name, str_replace("[[patient_name]]", $patientfname, $myrow['reminder_content']))
            *      );
            *
            *      // Make the call.
            *      $response = $client->sendRequest("appointment", "POST", $data);
            *
            *      if ($response->IsError) {
            *        // deal with and keep track of this unsuccessful call
            *        $logging['number_failed_calls']++;
            *      }
            *      else {
            *        // deal with and keep track of this succesful call
            *        sqlStatementCdrEngine("UPDATE `patient_reminders` SET `voice_status`='1', `date_sent`=NOW() WHERE id=?", array($reminder['id']) );
            *        $logging['number_success_calls']++;
            *      }
            *******************************************************************************/
        }
    }
    // For logging purposes only:
    //  Collect active reminders that have not yet been sent.
    $logging['total_post_unsent_reminders'] = count(fetch_reminders('', 'unsent'));
    return $logging;
}
		<td class="detail">&nbsp;
			<?php 
        //Appointment Status
        if ($pc_apptstatus != "") {
            $frow['data_type'] = 1;
            $frow['list_id'] = 'apptstat';
            generate_print_field($frow, $pc_apptstatus);
        }
        ?>
		</td>
	</tr>

    <?php 
        if ($patient_id && $incl_reminders) {
            // collect reminders first, so can skip it if empty
            $rems = fetch_reminders($patient_id, $appointment['pc_eventDate']);
        }
        ?>
    <?php 
        if ($patient_id && (!empty($rems) || !empty($appointment['pc_hometext']))) {
            // Not display of available slot or not showing reminders and comments empty
            ?>
	<tr valign='top' id='p2.<?php 
            echo attr($patient_id);
            ?>
' >
	   <td colspan=<?php 
            echo $showDate ? '"3"' : '"2"';
            ?>
 class="detail" />
	   <td colspan=<?php