Example #1
0
 public function testReturnsStringWithoutDoctor()
 {
     $strings = ['dr smith', 'dr. smith', 'doctor smith', ' doctor smith', 'Dr smith', 'DR smith', 'Dr. smith', 'DR. smith', 'Doctor smith', 'DOCTOR smith'];
     foreach ($strings as $string) {
         $this->assertEquals(DoctorHandler::stripDoctor($string), 'smith');
     }
 }
Example #2
0
 public function scopeName($query, $searchTerm)
 {
     if (empty($searchTerm)) {
         return $query;
     }
     $stripped = DoctorHandler::stripDoctor(urldecode($searchTerm));
     if (SearchHelper::hasTwoWords($stripped)) {
         $nameArray = SearchHelper::getAsTwoWordArray($stripped);
         // Perform a first_name, last_name search ...
         return $query->where(function ($query) use($nameArray) {
             $query->where('first_name', 'like', $nameArray[0] . '%')->Where('last_name', 'like', $nameArray[1] . '%');
         });
     } else {
         return $query->where(function ($query) use($stripped) {
             $query->where('last_name', 'like', $stripped . '%')->orWhere('first_name', 'like', $stripped . '%');
         });
     }
 }
 /**
  * Search for physicians by first name, last name or specialty
  * 
  * @param Request $request
  * @param int $distance
  * @return Array
  */
 private function searchWithQuery(Request $request, $distance)
 {
     $orderBy = $request->has('order_by') ? $request->order_by : 'distance';
     $sort = $request->has('sort') ? $request->sort : 'asc';
     $limit = $request->has('per_page') ? $request->per_page : '25';
     // Remove forms of "dr." from the beginning of the query
     $stripped = DoctorHandler::stripDoctor(urldecode($request->q));
     if (SearchHelper::hasTwoWords($stripped)) {
         // Perform a first_name, last_name search ...
         $nameArray = SearchHelper::getAsTwoWordArray($stripped);
         $physicians = Physician::withinRadius($request->lat, $request->lon, $distance)->where('first_name', 'like', $nameArray[0] . '%')->where('last_name', 'like', $nameArray[1] . '%')->orderBy($orderBy, $sort)->paginate($limit);
     } else {
         // Otherwise try to match on first_name, last_name or specialty
         $physicians = Physician::withinRadius($request->lat, $request->lon, $distance)->where('last_name', 'like', $stripped . '%')->orWhere('first_name', 'like', $stripped . '%')->orWhere('PrimaryPracticeFocusArea', 'like', $request->q . '%')->orderBy($orderBy, $sort)->paginate($limit);
     }
     return $physicians;
 }