public function get_results() { $dir = '/srv/ftp/shared/import/'; $files = scandir($dir); $count = count($files); $full_count = 0; for ($i = 2; $i < $count; $i++) { $line = $files[$i]; $file = $dir . $line; $hl7 = file_get_contents($file); $hl7_lines = explode("\r", $hl7); $results = array(); $j = 0; $result_last = ''; $from = ''; foreach ($hl7_lines as $line) { $line_section = explode("|", $line); if ($line_section[0] == "MSH") { if (strpos($line_section[3], "LAB") !== FALSE) { $test_type = "Laboratory"; } else { $test_type = "Imaging"; } } if ($line_section[0] == "PID") { $name_section = explode("^", $line_section[5]); $lastname = $name_section[0]; $firstname = $name_section[1]; $year = substr($line_section[7], 0, 4); $month = substr($line_section[7], 4, 2); $day = substr($line_section[7], 6, 2); $dob = $year . "-" . $month . "-" . $day . " 00:00:00"; $sex = strtolower($line_section[8]); } if ($line_section[0] == "ORC") { $provider_section = explode("^", $line_section[12]); $provider_lastname = $provider_section[1]; $provider_firstname = $provider_section[2]; $provider_id = $provider_section[0]; $practice_section = explode("^", $line_section[17]); $practice_lab_id = $practice_section[0]; } if ($line_section[0] == "OBX") { $test_name_section = explode("^", $line_section[3]); $results[$j]['test_name'] = $test_name_section[1]; $results[$j]['test_result'] = $line_section[5]; $results[$j]['test_units'] = $line_section[6]; $results[$j]['test_reference'] = $line_section[7]; $results[$j]['test_flags'] = $line_section[8]; $year1 = substr($line_section[14], 0, 4); $month1 = substr($line_section[14], 4, 2); $day1 = substr($line_section[14], 6, 2); $hour1 = substr($line_section[14], 8, 2); $minute1 = substr($line_section[14], 10, 2); $results[$j]['test_datetime'] = $year1 . "-" . $month1 . "-" . $day1 . " " . $hour1 . ":" . $minute1 . ":00"; $j++; } if ($line_section[0] == "NTE") { if ($line_section[1] == '1') { $result_last = $j - 1; } if ($line_section[2] == "TX") { $from = $line_section[3] . ", Ordering Provider: " . $provider_firstname . ' ' . $provider_lastname; $keys = array_keys($results); foreach ($keys as $key) { $results[$key]['test_from'] = $from; } } else { $results[$result_last]['test_result'] .= "\n" . $line_section[3]; } } } $practice_id = ''; $practice_row_test = Practiceinfo::where('peacehealth_id', '=', $practice_lab_id)->first(); if (!$practice_row_test) { $patient_row = Demographics::where('lastname', '=', $lastname)->where('firstname', '=', $firstname)->where('DOB', '=', $dob)->where('sex', '=', $sex)->first(); if ($patient_row) { $pid = $patient_row->pid; $demo_relate = DB::table('demographics_relate')->where('pid', '=', $pid)->first(); if ($demo_relate) { $practice_id = $demo_relate->practice_id; } } } else { $practice_id = $practice_row_test->practice_id; } if ($practice_id != '') { $practice_row = Practiceinfo::find($practice_id); Config::set('app.timezone', $practice_row->timezone); $provider_row = DB::table('users')->join('providers', 'providers.id', '=', 'users.id')->select('users.lastname', 'users.firstname', 'users.title', 'users.id')->where('providers.peacehealth_id', '=', $provider_id)->first(); if ($provider_row) { $provider_id = $provider_row->id; } else { $provider_id = ''; } $patient_row = Demographics::where('lastname', '=', $lastname)->where('firstname', '=', $firstname)->where('DOB', '=', $dob)->where('sex', '=', $sex)->first(); if ($patient_row) { $pid = $patient_row->pid; $dob_message = date("m/d/Y", strtotime($patient_row->DOB)); $patient_name = $patient_row->lastname . ', ' . $patient_row->firstname . ' (DOB: ' . $dob_message . ') (ID: ' . $pid . ')'; $tests = 'y'; $test_desc = ""; $k = 0; foreach ($results as $results_row) { $test_data = array('pid' => $pid, 'test_name' => $results_row['test_name'], 'test_result' => $results_row['test_result'], 'test_units' => $results_row['test_units'], 'test_reference' => $results_row['test_reference'], 'test_flags' => $results_row['test_flags'], 'test_from' => $from, 'test_datetime' => $results_row['test_datetime'], 'test_type' => $test_type, 'test_provider_id' => $provider_id, 'practice_id' => $practice_id); DB::table('tests')->insert($test_data); $this->audit('Add'); if ($k == 0) { $test_desc .= $results_row['test_name']; } else { $test_desc .= ", " . $results_row['test_name']; } $k++; } $practice_row = Practiceinfo::find($practice_id); $directory = $practice_row->documents_dir . $pid; $file_path = $directory . '/tests_' . time() . '.pdf'; $html = $this->page_intro('Test Results', $practice_id); $html .= $this->page_results($pid, $results, $patient_name); $this->generate_pdf($html, $file_path); $documents_date = date("Y-m-d H:i:s", time()); $test_desc = 'Test results for ' . $patient_name; $pages_data = array('documents_url' => $file_path, 'pid' => $pid, 'documents_type' => $test_type, 'documents_desc' => $test_desc, 'documents_from' => $from, 'documents_date' => $documents_date); $documents_id = DB::table('documents')->insertGetId($pages_data); $this->audit('Add'); } else { $messages_pid = ''; $patient_name = "Unknown patient: " . $lastname . ", " . $firstname . ", DOB: " . $month . "/" . $day . "/" . $year; $tests = 'unk'; foreach ($results as $results_row) { $test_data = array('test_name' => $results_row['test_name'], 'test_result' => $results_row['test_result'], 'test_units' => $results_row['test_units'], 'test_reference' => $results_row['test_reference'], 'test_flags' => $results_row['test_flags'], 'test_unassigned' => $patient_name, 'test_from' => $from, 'test_datetime' => $results_row['test_datetime'], 'test_type' => $test_type, 'test_provider_id' => $provider_id, 'practice_id' => $practice_id); DB::table('tests')->insert($test_data); $this->audit('Add'); } $documents_id = ''; } $subject = "Test results for " . $patient_name; $body = "Test results for " . $patient_name . "\n\n"; foreach ($results as $results_row1) { $body .= $results_row1['test_name'] . ": " . $results_row1['test_result'] . ", Units: " . $results_row1['test_units'] . ", Normal reference range: " . $results_row1['test_reference'] . ", Date: " . $results_row1['test_datetime'] . "\n"; } $body .= "\n" . $from; if ($tests = "unk") { $body .= "\n" . "Patient is unknown to the system. Please reconcile this test result in your dashboard."; } if ($provider_id != '') { $provider_name = $provider_row->firstname . " " . $provider_row->lastname . ", " . $provider_row->title . " (" . $provider_id . ")"; $data_message = array('pid' => $pid, 'message_to' => $provider_name, 'message_from' => $provider_row['id'], 'subject' => $subject, 'body' => $body, 'patient_name' => $patient_name, 'status' => 'Sent', 'mailbox' => $provider_id, 'practice_id' => $practice_id, 'documents_id' => $documents_id); DB::table('messaging')->insert($data_message); $this->audit('Add'); } $file1 = str_replace('/srv/ftp/shared/import/', '', $file); rename($file, $practice_row->documents_dir . $file1); $full_count++; } else { $file1 = str_replace('/srv/ftp/shared/import/', '', $file); rename($file, $practice_row->documents_dir . $file1 . '.error'); } } return $full_count; }
Route::any('login', array('as' => 'login', 'before' => 'force.ssl', 'uses' => 'LoginController@action')); Route::any('mobile', array('as' => 'mobile', 'before' => 'force.ssl|version_check|installfix|needinstall|update|openid|auth.mobile', 'uses' => 'MobileController@dashboard')); Route::any('login_mobile', array('as' => 'login_mobile', 'before' => 'force.ssl', 'uses' => 'MobileController@action')); Route::get('start/{practicehandle}', function ($practicehandle = null) { if ($practicehandle != null) { $practice = Practiceinfo::where('practicehandle', '=', $practicehandle)->first(); if ($practice) { Session::put('practice_id', $practice->practice_id); } } return Redirect::to('/'); }); Route::any('schedule_widget', array('as' => 'schedule_widget', 'before' => 'force.ssl|schedule_check', 'uses' => 'HomeController@schedule')); Route::get('schedule_widget_start/{practicehandle}', function ($practicehandle = null) { if ($practicehandle != null) { $practice = Practiceinfo::where('practicehandle', '=', $practicehandle)->first(); if ($practice) { Session::put('practice_id', $practice->practice_id); Session::put('group_id', 'schedule'); } } return Redirect::to('schedule_widget'); }); Route::get('install', array('as' => 'install', 'before' => 'force.ssl|installfix|noinstall', 'uses' => 'InstallController@view')); Route::get('install_fix', array('as' => 'install_fix', 'uses' => 'InstallController@install_fix')); Route::get('reset_database', array('as' => 'reset_database', 'uses' => 'InstallController@reset_database')); Route::get('google_start', array('as' => 'google_start', 'uses' => 'InstallController@google_start')); Route::post('google_upload', array('as' => 'google_upload', 'uses' => 'AjaxInstallController@google_upload')); Route::get('update', array('as' => 'update', 'uses' => 'AjaxInstallController@update')); Route::get('update_system', array('as' => 'update_system', 'uses' => 'BackupController@update_system')); Route::get('set_version', array('as' => 'set_version', 'uses' => 'AjaxInstallController@set_version'));