public function obtenerUsuarios($datos = '')
 {
     $usuarios = [];
     $datos = str_replace(' ', '', $datos);
     try {
         $usuarioBD = DB::table('usuario')->join('usuario_tipo', 'usuario.idUsuarioTipo', '=', 'usuario_tipo.idUsuarioTipo')->join('especialidad', 'usuario.idEspecialidad', '=', 'especialidad.idEspecialidad')->where('Username', 'LIKE', "%{$datos}%")->orWhere(DB::raw("REPLACE(CONCAT(Nombre, Paterno, Materno), ' ', '')"), 'LIKE', "%{$datos}%")->orWhere(DB::raw("REPLACE(CONCAT(Paterno, Materno, Nombre), ' ', '')"), 'LIKE', "%{$datos}%")->orderBy('usuario.Nombre')->orderBy('usuario.Paterno')->get();
         if (count($usuarioBD) === 0) {
             return null;
         }
         foreach ($usuarioBD as $usuarioBD) {
             if ($usuarioBD->idEspecialidad === 1) {
                 $usuario = new Usuario($usuarioBD->Username);
             } else {
                 $usuario = new Medico($usuarioBD->Username);
                 $usuario->setEspecialidad(new Especialidad($usuarioBD->idEspecialidad, $usuarioBD->Especialidad));
             }
             // construir objetos
             $usuarioTipo = new UsuarioTipo($usuarioBD->idUsuarioTipo, $usuarioBD->UsuarioTipo);
             $usuario->setPasswd($usuarioBD->Passwd);
             $usuario->setActivo($usuarioBD->Activo);
             $usuario->setNombre($usuarioBD->Nombre);
             $usuario->setPaterno($usuarioBD->Paterno);
             $usuario->setMaterno($usuarioBD->Materno);
             $usuario->setRegistrado(true);
             $usuario->setFechaCreacion($usuarioBD->FechaCreacion);
             $usuario->setUsuarioTipo($usuarioTipo);
             $usuarios[] = $usuario;
         }
         return $usuarios;
     } catch (Exception $e) {
         echo $e->getMessage();
         return null;
     }
 }