Class: REDCap::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/red_cap/client.rb

Defined Under Namespace

Classes: Error, File

Instance Method Summary collapse

Constructor Details

#initialize(url: REDCap.url, token: REDCap.token, per_page: REDCap.per_page) ⇒ Client

Returns a new instance of Client.


7
8
9
10
11
# File 'lib/red_cap/client.rb', line 7

def initialize url: REDCap.url, token: REDCap.token, per_page: REDCap.per_page
  @url = url
  @token = token
  @per_page = per_page
end

Instance Method Details

#delete_records(study_ids) ⇒ Object


36
37
38
# File 'lib/red_cap/client.rb', line 36

def delete_records study_ids
  json_api_request(content: "record", action: "delete", records: study_ids)
end

#file(record_id, file_id, event: nil) ⇒ Object


44
45
46
47
48
49
50
51
52
53
54
# File 'lib/red_cap/client.rb', line 44

def file record_id, file_id, event: nil
  response = base_request({
    content: "file",
    action: "export",
    record: record_id,
    field: file_id,
    event: event,
  })
  _, type, filename = *response.headers["content-type"].match(/\A(.+); name=\"(.+)\"/)
  File.new(response.body, type, filename)
end

#find_record(study_id) ⇒ Object


28
29
30
# File 'lib/red_cap/client.rb', line 28

def find_record study_id
  json_api_request(content: "record", records: study_id).first
end

#metadataObject


40
41
42
# File 'lib/red_cap/client.rb', line 40

def 
  json_api_request(content: "metadata")
end

#records(filter = nil) ⇒ Object


13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/red_cap/client.rb', line 13

def records filter=nil
  enumerator = fetch_study_ids(filter).in_groups_of(@per_page, false)
  if block_given?
    enumerator.each do |study_ids|
      json_api_request(content: "record", records: study_ids.join(",")).each do |record|
        yield record
      end
    end
  else
    enumerator.flat_map do |study_ids|
      json_api_request(content: "record", records: study_ids.join(","))
    end
  end
end

#save_records(records) ⇒ Object


32
33
34
# File 'lib/red_cap/client.rb', line 32

def save_records records
  json_api_request(content: "record", data: records.to_json, overwriteBehavior: "overwrite")
end