Exemple #1
0
function send_reminders()
{
    $logging = array();
    // Collect active reminders that have not yet been sent.
    $active_unsent_reminders = fetch_reminders($patient_id, '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 = sqlQuery($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
                sqlStatement("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") {
            // 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, "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
                sqlStatement("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($patient_id, 'unsent'));
    return $logging;
}
$before_trigger_hours = $GLOBALS['phone_notification_hour'];
//set up the phone notification settings for external phone service
$phone_url = $GLOBALS['phone_gateway_url'];
$phone_id = $GLOBALS['phone_gateway_username'];
$phone_token = $GLOBALS['phone_gateway_password'];
$phone_time_range = $GLOBALS['phone_time_range'];
//get the facility_id-message map
$facilities = cron_getFacilitiesMap();
//print_r($facilities);
$fac_phone_map = $facilities['phone_map'];
$fac_msg_map = $facilities['msg_map'];
// get patient data for send alert
$db_patient = cron_getPhoneAlertpatientData($type, $before_trigger_hours);
echo "<br>" . htmlspecialchars(xl("Total Records Found") . ": " . count($db_patient), ENT_QUOTES);
//Create a new instance of the phone service client
$client = new MaviqClient($phone_id, $phone_token, $phone_url);
for ($p = 0; $p < count($db_patient); $p++) {
    $prow = $db_patient[$p];
    //Get the apptDate and apptTime
    $p_date = $prow['pc_eventDate'];
    //Need to format date to m/d/Y for Maviq API
    $pieces = explode("-", $p_date);
    $appt_date = date("m/d/Y", mktime(0, 0, 0, $pieces[1], $pieces[2], $pieces[0]));
    $appt_time = $prow['pc_startTime'];
    //get the greeting
    $greeting = $fac_msg_map[$prow['pc_facility']];
    if ($greeting == null) {
        //Use the default when the message is not found
        $greeting = $GLOBALS['phone_appt_message']['Default'];
    }
    //Set up the parameters for the call