def request_item_request(pickup_location, options, notes = '')
      search_type, search_value = nil, nil
      options.each_pair do |key, value|
        if @@valid_search_types.include? key.to_s.upcase
          if search_type || search_value
            raise ArgumentError.new("Only one search criteria at a time is allowed: '#{options}'")
          end

          search_type, search_value = key, value
        end
      end
      unless search_type && search_value
        raise ArgumentError.new("Missing valid search type and value: '#{options}'")
      end

      if pickup_location.kind_of?(BorrowDirect::PickupLocation)
        pickup_location = pickup_location.code
      end

      request exact_search_request_hash(pickup_location, search_type, search_value, notes), need_auth_id(self.patron_barcode, self.patron_library_symbol)
    end
def request_item_request(pickup_location, options, notes = '')
      search_type, search_value = nil, nil
      options.each_pair do |key, value|
        if @@valid_search_types.include? key.to_s.upcase
          if search_type || search_value
            raise ArgumentError.new("Only one search criteria at a time is allowed: '#{options}'")
          end

          search_type, search_value = key, value
        end
      end
      unless search_type && search_value
        raise ArgumentError.new("Missing valid search type and value: '#{options}'")
      end

      if pickup_location.kind_of?(BorrowDirect::PickupLocation)
        pickup_location = pickup_location.code
      end

      request exact_search_request_hash(pickup_location, search_type, search_value, notes), need_auth_id(self.patron_barcode, self.patron_library_symbol)
    end
need to send a key and value for a valid exact_search type
 type can be string or symbol, lowercase or uppercase.

 Also a pickup_location -- can pass in nil, and we'll send no
 PickupLocation to BD, which it seems to accept, not sure what it
 does with it.

 pickup_location can be a BorrowDirect::PickupLocation object,
 or a string. If a string, BD recommends it be a CODE returned
 from FindItem, rather than DESCRIPTION as in the past, but we
 think description still works?

 Returns the actual complete BD response hash. You may want
 #make_request instead

    finder.request_item_request(pickup_location, :isbn => "12345545456")
    finder.request_item_request(pickup_location, :lccn => "12345545456")
    finder.request_item_request(pickup_location, :oclc => "12345545456")