$REDCAP_TOKEN,'content' => 'record','format' => 'json', 'type' => 'flat','records' => $RECORD,'events'=>array($EVENT)); # - - - - - - - - - - - - - - - - - - # # Curl Commands $exp = curl_init(); curl_setopt($exp, CURLOPT_URL, $API_URL); curl_setopt($exp, CURLOPT_POSTFIELDS, http_build_query($DATA, '', '&')); curl_setopt($exp, CURLOPT_RETURNTRANSFER, true); curl_setopt($exp, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($exp, CURLOPT_VERBOSE, 0); curl_setopt($exp, CURLOPT_FOLLOWLOCATION, true); curl_setopt($exp, CURLOPT_AUTOREFERER, true); curl_setopt($exp, CURLOPT_MAXREDIRS, 10); curl_setopt($exp, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($exp, CURLOPT_FRESH_CONNECT, 1); $output = curl_exec($exp); $list=json_decode($output, true); curl_close($exp); $record_id=$list[0]['record_id']; # - - - - - - - - - - - - - - - - - - - - - - - - - # # B. Only Process SBIRT Survey Responses if it's Complete # "Submitted": # - - - - - - - - - - - - - - - - - - # $sbirt_complete=$list[0]['sbirt_integrated_screening_tool_complete']; if($sbirt_complete=='2') { $sbirt_q1=$list[0]['sbirt_q1']; $sbirt_q2=$list[0]['sbirt_q2']; $sbirt_q3=$list[0]['sbirt_q3']; $sbirt_q4=$list[0]['sbirt_q4']; $sbirt_q5=$list[0]['sbirt_q5']; $sbirt_q6=$list[0]['sbirt_q6']; $sbirt_q7=$list[0]['sbirt_q7']; $sbirt_q8=$list[0]['sbirt_q8']; $sbirt_q9=$list[0]['sbirt_q9']; # - - - - - - - - - - - - - - - - - - # # Patient Information: $pat_first_name=$list[0]['first_name']; $pat_last_name=$list[0]['last_name']; $race=$list[0]['race']; if($race=='1'){$race='White';} if($race=='2'){$race='Black or African American';} if($race=='3'){$race='American Indian/Alaska Native';} if($race=='4'){$race='Asian';} if($race=='5'){$race='Native Hawaiian or Other Pacific Islander';} if($race=='7'){$race='Unable to Determine';} if($race==''){$race='';} $pat_phone=$list[0]['telephone']; $pat_address=$list[0]['street'].", ".$list[0]['city'].", ".$list[0]['state'].", ".$list[0]['zip']; $ethnicity=$list[0]['ethnicity']; $exp_due_date=$list[0]['delivery_date']; # $pat_member_id= $lang=$list[0]['language']; # - - - - - - - - - - - - - - - - - - # # Provider Information: $practice_name=$list[0]['practice_name']; $Screen_providers_name=$list[0]['screen_provider_name']; $group_npi=$list[0]['group_npi']; $provider_phone=$list[0]['provider_phone_number']; $individual_npi=$list[0]['individual_npi']; # - - - - - - - - - - - - - - - - - - # # Insurance Healthcare Checkbox: $insurance_name=$list[0]['insurance_name']; if($insurance_name==''){$abt=''; $advicare=''; $bc_hp_medicaid=''; $first_choice=''; $molina=''; $scdhhs=''; $wellcare=''; $bc_bssc_bchp=''; } else { $abt=($insurance_name==0)? 'Yes' : ''; $advicare=($insurance_name==1)? 'Yes' : ''; $bc_hp_medicaid=($insurance_name==2)? 'Yes' : ''; $first_choice = ($insurance_name==3)? 'Yes' : ''; $molina = ($insurance_name==4)? 'Yes' : ''; $scdhhs = ($insurance_name==5)? 'Yes' : ''; $wellcare = ($insurance_name==6)? 'Yes' : ''; $bc_bssc_bchp = ($insurance_name==7)? 'Yes' : ''; } # - - - - - - - - - - - - - - - - - - - - - - - - - # # C. Evaluate the Text Responses and Assign Coded Value: # - - - - - - - - - - - - - - - - - - - - - - - - - # # SBIRT Q1: $sbirt_q1=strtolower(trim($sbirt_q1)); # if(in_array($sbirt_q1, $yes_array)){ $sbirt_q1_ans='1'; $parents_y='Yes';} # else {$parents_y='';} if(in_array($sbirt_q1, $no_array)){ $sbirt_q1_ans='0'; $parents_n='Yes';} else {$parents_n='';} if(in_array($sbirt_q1, $yes_array)){ $sbirt_q1_ans='1'; $parents_y='Yes';} else {$parents_y='';} # SBIRT Q2: $sbirt_q2=strtolower(trim($sbirt_q2)); if(in_array($sbirt_q2, $yes_array)){ $sbirt_q2_ans='1'; $peers_y='Yes';} else {$peers_y='';} if(in_array($sbirt_q2, $no_array)){ $sbirt_q2_ans='0'; $peers_n='Yes';} else {$peers_n='';} # SBIRT Q3: $sbirt_q3=strtolower(trim($sbirt_q3)); if(in_array($sbirt_q3, $yes_array)){ $sbirt_q3_ans='1'; $partner_y='Yes';} else {$partner_y='';} if(in_array($sbirt_q3, $no_array)){ $sbirt_q3_ans='0'; $partner_n='Yes';} else {$partner_n='';} # SBIRT Q4: $sbirt_q4=strtolower(trim($sbirt_q4)); if(in_array($sbirt_q4, $yes_array)){ $sbirt_q4_ans='1'; $violence_y='Yes';} else {$violence_y='';} if(in_array($sbirt_q4, $no_array)){ $sbirt_q4_ans='0'; $violence_n='Yes';} else {$violence_n='';} # SBIRT Q5: $sbirt_q5=strtolower(trim($sbirt_q5)); if(in_array($sbirt_q5, $yes_array)){ $sbirt_q5_ans='1'; } if(in_array($sbirt_q5, $no_array)){ $sbirt_q5_ans='0'; } # SBIRT Q6: $sbirt_q6=strtolower(trim($sbirt_q6)); if(in_array($sbirt_q6, $yes_array)){ $sbirt_q6_ans='1'; $emotion_y='Yes';} else {$emotion_y='';} if(in_array($sbirt_q6, $no_array)){ $sbirt_q6_ans='0'; $emotion_n='Yes';} else {$emotion_n='';} # SBIRT Q7: $sbirt_q7=strtolower(trim($sbirt_q7)); if(in_array($sbirt_q7, $yes_array)){ $sbirt_q7_ans='1'; $past_y='Yes';} else {$past_y='';} if(in_array($sbirt_q7, $no_array)){ $sbirt_q7_ans='0'; $past_n='Yes';} else {$past_n='';} # SBIRT Q8: $sbirt_q8=strtolower(trim($sbirt_q8)); if(in_array($sbirt_q8, $yes_array)){ $sbirt_q8_ans='1'; $present_y='Yes';} else {$present_y='';} if(in_array($sbirt_q8, $no_array)){ $sbirt_q8_ans='0'; $present_n='Yes';} else {$present_n='';} # SBIRT Q9: $sbirt_q9=strtolower(trim($sbirt_q9)); if(in_array($sbirt_q9, $yes_array)){ $sbirt_q9_ans='1'; $smoking_y='Yes';} else {$smoking_y='';} if(in_array($sbirt_q9, $no_array)){ $sbirt_q9_ans='0'; $smoking_n='Yes';} else {$smoking_n='';} # - - - - - - - - - - - - - - - - - - - - - - - - - # # D. Determine Risk Category and Send Text w/ Twilio API: $client = new Client($sid, $token); # - - - - - - - - - - - - - - - - - - - - - # # Low Risk Text Messages if($sbirt_q1_ans=='0' && $sbirt_q2_ans=='0' && $sbirt_q3_ans=='0' && $sbirt_q4_ans=='0' && $sbirt_q5_ans=='0' && $sbirt_q6_ans=='0' && $sbirt_q7_ans=='0' && $sbirt_q8_ans=='0' && $sbirt_q9_ans=='0'){ $risk_category='0'; $clinic_risk_cat___0='1'; $clinic_risk_cat___1='0'; $clinic_risk_cat___2='0'; $clinic_risk_cat___3='0'; $clinic_risk_cat___4='0'; # Build & send Twilio text message: $client->messages->create($cell_num, array("body"=>$TXT_GLOBAL['low_txt_1'],"from"=>$twilio_num)); sleep(1); $client->messages->create($cell_num, array("body"=>$TXT_GLOBAL['low_txt_2'],"from"=>$twilio_num)); sleep(1); $client->messages->create($cell_num, array("body"=>$TXT_GLOBAL['low_contact_txt'],"from"=>$twilio_num)); sleep(2); $client->messages->create($cell_num, array("body"=>$TXT_GLOBAL['safety_txt'],"from"=>$twilio_num)); # SBIRT PDF Form Details: $bf_1_na='Yes'; $bf_2_na='Yes'; $bf_3_na='Yes'; $bf_4_na='Yes'; $ref_not_warrant='Yes'; } # Not Low Risk: else { # SBIRT PDF Form Details: $bf_1_na=''; $bf_2_na=''; $bf_3_na=''; $bf_4_na=''; $ref_not_warrant=''; # - - - - - - - - - - - - - - - - - - - - - # # Positive Depression Risk: if($sbirt_q6_ans=='1'){ $risk_category='1'; $clinic_risk_cat___0='0'; } # Not positive depression, low risk: else { # - - - - - - - - - - - - - - - - - - - - - # # Prevention Risk: if ($sbirt_q5_ans=='1' && $sbirt_q6_ans=='0'){ $risk_category='2'; $clinic_risk_cat___0='0'; } # Not Prevention, positive depression, low risk else { # - - - - - - - - - - - - - - - - - - - - - # # Substance and Domestic Abuse Risk: if ($sbirt_q1_ans='1' || $sbirt_q2_ans=='1' || $sbirt_q3_ans=='1' || $sbirt_q4_ans=='1' || $sbirt_q7_ans=='1' || $sbirt_q8_ans=='1' || $sbirt_q9_ans=='1'){ if ($sbirt_q4_ans=='1') { $risk_category='4'; $clinic_risk_cat___0='0'; } else { $risk_category='3'; $clinic_risk_cat___0='0'; } } } # Not Prevention, positive depression, low risk } # else not low risk && not positive depression # Clinician Risk Categories: if($sbirt_q6_ans=='1'){ #Pos. Depression $clinic_risk_cat___1='1'; #Pos. Depression $clinic_risk_cat___2='0'; # Prevention if($sbirt_q4_ans=='1'){ $clinic_risk_cat___4='1'; } #Dom. Abuse else { $clinic_risk_cat___4='0'; } #Dom. Abuse if($sbirt_q1_ans=='1' || $sbirt_q2_ans=='1' || $sbirt_q3_ans=='1' || $sbirt_q7_ans=='1' || $sbirt_q8_ans=='1' || $sbirt_q9_ans=='1'){ $clinic_risk_cat___3='1'; #Sub. Abuse } else { $clinic_risk_cat___3='0'; } #Sub. Abuse } else { $clinic_risk_cat___1='0'; #Pos. Depression if($sbirt_q5_ans=='1'){ $clinic_risk_cat___2='1'; #Prevention if($sbirt_q4_ans=='1'){ $clinic_risk_cat___4='1'; } #Dom. Abuse else { $clinic_risk_cat___4='0'; } if($sbirt_q1_ans=='1' || $sbirt_q2_ans=='1' || $sbirt_q3_ans=='1' || $sbirt_q7_ans=='1' || $sbirt_q8_ans=='1' || $sbirt_q9_ans=='1'){ $clinic_risk_cat___3='1'; #Sub. Abuse } else { $clinic_risk_cat___3='0'; } #Sub. Abuse } else { if($sbirt_q4_ans=='1'){ $clinic_risk_cat___4='1'; } #Dom. Abuse else { $clinic_risk_cat___4='0'; } if($sbirt_q1_ans=='1' || $sbirt_q2_ans=='1' || $sbirt_q3_ans=='1' || $sbirt_q7_ans=='1' || $sbirt_q8_ans=='1' || $sbirt_q9_ans=='1'){ $clinic_risk_cat___3='1'; } else { $clinic_risk_cat___3='0'; } } } } # else not low risk # - - - - - - - - - - - - - - - - - - - - - - - - - # # E. Import Risk Category and Coded Values for # Text Messages: # - - - - - - - - - - - - - - - - - - - - - - - - - # $import_info=array('record_id'=>$record_id,'redcap_event_name'=>$EVENT,'txt_risk_cat'=>$risk_category,'sbirt_q1_ans'=>$sbirt_q1_ans,'sbirt_q2_ans'=>$sbirt_q2_ans,'sbirt_q3_ans'=>$sbirt_q3_ans,'sbirt_q4_ans'=>$sbirt_q4_ans,'sbirt_q5_ans'=>$sbirt_q5_ans,'sbirt_q6_ans'=>$sbirt_q6_ans,'sbirt_q7_ans'=>$sbirt_q7_ans,'sbirt_q8_ans'=>$sbirt_q8_ans,'sbirt_q9_ans'=>$sbirt_q9_ans,'clinic_risk_cat___0'=>$clinic_risk_cat___0,'clinic_risk_cat___1'=>$clinic_risk_cat___1,'clinic_risk_cat___2'=>$clinic_risk_cat___2,'clinic_risk_cat___3'=>$clinic_risk_cat___3,'clinic_risk_cat___4'=>$clinic_risk_cat___4); $import=json_encode(array($import_info)); $DATA_IMPORT=array('token'=>$REDCAP_TOKEN,'content'=>'record', 'format'=>'json','type'=>'flat','data'=>$import); $imp = curl_init(); curl_setopt($imp, CURLOPT_URL, $API_URL); curl_setopt($imp, CURLOPT_POSTFIELDS, http_build_query($DATA_IMPORT, '', '&')); curl_setopt($imp, CURLOPT_RETURNTRANSFER, true); curl_setopt($imp, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($imp, CURLOPT_VERBOSE, 0); curl_setopt($imp, CURLOPT_FOLLOWLOCATION, true); curl_setopt($imp, CURLOPT_AUTOREFERER, true); curl_setopt($imp, CURLOPT_MAXREDIRS, 10); curl_setopt($imp, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($imp, CURLOPT_FRESH_CONNECT, 1); curl_exec($imp); curl_close($imp); # - - - - - - - - - - - - - - - - - - - - - - - - - # # F. Build and Create FDF and Create and Import PDF: # - - - - - - - - - - - - - - - - - - - - - - - - - # # 1. Build FDF: $fdf_content = "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; $fdf_content .= "<>"; # 2. Create FDF: $content = $fdf_header ."\n". $fdf_content ."\n". $fdf_footer; $FDFfile="/var/www/html/twh.musc.edu/momStrong-pid35680/SBIRT.fdf"; file_put_contents($FDFfile, $content); # - - - - - - - - - - - - - - - - - - - - - - - - - # # 3. Fill in PDF using the FDF File: $raw_pdf="/var/www/html/twh.musc.edu/momStrong-pid35680/sbirt_raw_template.pdf"; $output_pdf=$pat_last_name."_SBIRT.pdf"; $output_file="/var/www/html/twh.musc.edu/momStrong-pid35680/".$output_pdf; exec("pdftk $raw_pdf fill_form $FDFfile output $output_pdf"); # - - - - - - - - - - - - - - - - - - - - - - - - - # # 5. Import PDF into REDCap Record: $DATA_PDF=array('token'=>$REDCAP_TOKEN,'record'=>$RECORD, 'content' => 'file', 'action'=>'import','field'=>'sbirt_form','event'=>'baseline_arm_1'); $DATA_PDF['file']=(function_exists('curl_file_create') ? curl_file_create($output_file, 'application/pdf', $output_pdf) : "@$output_file"); # - - - - - - - - - - - - - - - - - - # # Curl Commands $exp = curl_init(); curl_setopt($exp, CURLOPT_URL, $API_URL); curl_setopt($exp, CURLOPT_POSTFIELDS, $DATA_PDF); curl_setopt($exp, CURLOPT_RETURNTRANSFER, true); curl_setopt($exp, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($exp, CURLOPT_VERBOSE, 0); curl_setopt($exp, CURLOPT_FOLLOWLOCATION, true); curl_setopt($exp, CURLOPT_AUTOREFERER, true); curl_setopt($exp, CURLOPT_MAXREDIRS, 10); curl_setopt($exp, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($exp, CURLOPT_FRESH_CONNECT, 1); $output_pdf = curl_exec($exp); curl_close($exp); if (file_exists($FDFfile)){ shell_exec('rm -rf "'.$FDFfile.'"'); } if (file_exists($output_file)){ shell_exec('rm -rf "'.$output_file.'"'); } } #if sbirt_complete else { exit(); } ?>