roqua-rom-api 0.1.8 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ce8decd48dd3da616e6eb16c463ecc8f8603f104
4
- data.tar.gz: 2bde7738950a4b361b882a06c50a4752475f6960
3
+ metadata.gz: 4bac266254c426f6b3dbc4f723bd32ffa354c30e
4
+ data.tar.gz: 0369fa376ee5388965c5398b1240832a35e5c86f
5
5
  SHA512:
6
- metadata.gz: c5e0f2e97f3f2f7d17f06b7a45bf4a4d437cb258f17620ce6590effa94ae12e153d06e822c93117a3b08ff55adaa81944bf34535d33842ae8f5cd4c47ac6a8c6
7
- data.tar.gz: 1ffdcdf567b1372c7e42f6f1fbc86ddcf232e258feb0ee19a7ce92ea6cf63f344efc6f3d0569e9c34d5fd8b5661d538a9d6f4567f0ed85350ac4fe469af3d9ab
6
+ metadata.gz: 01acfc52290ea193019465edda26b7a45fd3f864b88b0e8bceea5dd36234b7fcf443b5d8ca9e0675b731a533b82c1adf5393e8b7f8ca7c14d60fc44ccba6ca3f
7
+ data.tar.gz: c677875fc78ebfd6c9162682970d6d164ae95c92a4438dc01ffcaf8ecb058fbd339ec782e6936eaf648db4016accddc729de6debd20d2f7de9163a1daf1f61fa
data/ChangeLog.md CHANGED
@@ -1,3 +1,7 @@
1
+ ### 0.1.9 / 2014-10-07
2
+
3
+ * Add API endpoint for updating responses
4
+
1
5
  ### 0.1.8 / 2014-09-22
2
6
 
3
7
  * Add API endpoint for creating responses
data/Gemfile CHANGED
@@ -5,6 +5,7 @@ gem 'httparty', '= 0.12.0'
5
5
  gem 'active_interaction', '= 1.1.0'
6
6
 
7
7
  group :test do
8
- gem 'guard-rspec', '~> 4.2'
9
- gem 'fuubar', '~> 1.3'
8
+ gem 'guard-rspec', '~> 4.3'
9
+ gem 'rb-readline', '~> 0.5.1'
10
+ gem 'fuubar', '~> 2.0.0'
10
11
  end
data/README.md CHANGED
@@ -142,7 +142,14 @@ To retrieve filled out, pending or scheduled questionnaires run:
142
142
 
143
143
  #### Parameters
144
144
 
145
- * `dossier_id:` [Required] - Unique dossier identifier for the patient you want the responses for.
145
+ * `dossier_id:` [Required] - Unique dossier identifier for the patient you want the responses for.
146
+ * `questionnaire_keys` Only return responses on questionnaires whose key is listed
147
+ * `completed_before` Only return responses filled out before the specified time
148
+ * `completed_after` Only return responses filled out after the specified time
149
+ * `respondent_type` Only return responses whose `completer_type` equals the given value
150
+ * `status` ['completed', 'aborted', 'open', 'scheduled'] Only return responses whose `status` equals the given value
151
+ * `protocol_subscription_id` Only return responses associated to the protocol subscription with the given id
152
+
146
153
 
147
154
  When the request succeeds, an array of responses is returned:
148
155
 
@@ -168,7 +175,7 @@ To store an externally filled out questionnaire run:
168
175
  * `questionnaire_key:` [Required] - Key uniquely identifying the questionnaire in RoQua
169
176
  * `dossier_id:` [Required] - Unique dossier identifier for the patient you want to store the questionnaire for
170
177
  * `answer_data:` [Required] - Hash storing the answered option key for every question key
171
- * `filled_out_at:` Timestamp indicating the time the questionnaire was filled out
178
+ * `filled_out_at:` Timestamp indicating the time the questionnaire was filled out (greater or equal to 31 december 1999)
172
179
  * `respondent:` ['patient'(default)|'parent'|'second_parent'|'teacher'|'caregiver']
173
180
  - String identifying the respondent which filled out the questionnaire
174
181
 
@@ -183,6 +190,34 @@ Else some validation errors are provided:
183
190
  log_or_display outcome.errors.full_messages
184
191
  end
185
192
 
193
+ ### Update
194
+
195
+ To store external data on an existing pending response:
196
+
197
+ outcome = Roqua::RomApi::CreateResponse.run questionnaire_key: 'questionnaire_key',
198
+ dossier_id: 'dossier_id',
199
+ id: 230, # response id,
200
+ answer_data: {some: 'aswer_data'}
201
+
202
+ #### Parameters
203
+
204
+ * `questionnaire_key:` [Required] - Key uniquely identifying the questionnaire in RoQua
205
+ * `dossier_id:` [Required] - Unique dossier identifier for the patient you want to store the questionnaire for
206
+ * `id:` [Required] - Id of the response object to update
207
+ * `answer_data:` [Required] - Hash storing the answered option key for every question key
208
+ * `filled_out_at:` Timestamp indicating the time the questionnaire was filled out (greater or equal to 31 december 1999)
209
+
210
+ When the request succeeds, the stored response is returned:
211
+
212
+ if outcome.valid?
213
+ responses = outcome.result
214
+
215
+ Else some validation errors are provided:
216
+
217
+ else
218
+ log_or_display outcome.errors.full_messages
219
+ end
220
+
186
221
  ## Contributing to roqua-rom-api
187
222
 
188
223
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
data/lib/roqua/rom_api.rb CHANGED
@@ -6,6 +6,7 @@ require 'roqua/rom_api/endpoint'
6
6
  require 'roqua/rom_api/list_protocol_subscriptions'
7
7
  require 'roqua/rom_api/list_responses'
8
8
  require 'roqua/rom_api/create_response'
9
+ require 'roqua/rom_api/update_response'
9
10
  require 'roqua/rom_api/start_fill_out_session'
10
11
  require 'roqua/rom_api/create_fill_out_request'
11
12
  require 'roqua/rom_api/start_protocol_subscription'
@@ -2,18 +2,18 @@ module Roqua
2
2
  module RomApi
3
3
  # @api private
4
4
  class CreateResponse < Endpoint
5
- string :questionnaire_key
6
- string :dossier_id
7
- hash :answer_data, strip: false
8
- time :filled_out_at, default: nil
9
- string :respondent, default: nil
5
+ string :questionnaire_key
6
+ string :dossier_id
7
+ hash :answer_data, strip: false
8
+ time :filled_out_at, default: nil
9
+ string :respondent, default: nil
10
10
 
11
11
  def execute
12
12
  validate_response_for do
13
13
  RomApi.basic_auth_session.post "/dossiers/#{dossier_id}/responses",
14
14
  questionnaire_key: questionnaire_key,
15
15
  answer_data: answer_data,
16
- filled_out_at: filled_out_at.to_i,
16
+ filled_out_at: (filled_out_at.to_i if filled_out_at),
17
17
  respondent: respondent
18
18
  end
19
19
  end
@@ -3,10 +3,22 @@ module Roqua
3
3
  # @api private
4
4
  class ListResponses < Endpoint
5
5
  string :dossier_id
6
+ array :questionnaire_keys, default: [] { string }
7
+ time :completed_before, default: nil
8
+ time :completed_after, default: nil
9
+ string :respondent_type, default: nil
10
+ symbol :status, default: nil
11
+ string :protocol_subscription_id, default: nil
6
12
 
7
13
  def execute
8
14
  validate_response_for do
9
- RomApi.basic_auth_session.get "/dossiers/#{dossier_id}/responses"
15
+ RomApi.basic_auth_session.get "/dossiers/#{dossier_id}/responses",
16
+ respondent_type: respondent_type,
17
+ status: status,
18
+ questionnaire_keys: questionnaire_keys,
19
+ completed_after: completed_after,
20
+ completed_before: completed_before,
21
+ protocol_subscription_id: protocol_subscription_id
10
22
  end
11
23
  end
12
24
 
@@ -0,0 +1,25 @@
1
+ module Roqua
2
+ module RomApi
3
+ # @api private
4
+ class UpdateResponse < Endpoint
5
+ string :questionnaire_key
6
+ string :dossier_id
7
+ integer :id
8
+ hash :answer_data, strip: false
9
+ time :filled_out_at, default: nil
10
+
11
+ def execute
12
+ validate_response_for do
13
+ RomApi.basic_auth_session.patch "/dossiers/#{dossier_id}/responses/#{id}",
14
+ questionnaire_key: questionnaire_key,
15
+ answer_data: answer_data,
16
+ filled_out_at: (filled_out_at.to_i if filled_out_at)
17
+ end
18
+ end
19
+
20
+ def response_to_result(response)
21
+ Models::Response.new(response)
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,5 +1,5 @@
1
1
  module Roqua
2
2
  module RomApi
3
- VERSION = '0.1.8'
3
+ VERSION = '0.1.9'
4
4
  end
5
5
  end
@@ -20,9 +20,9 @@ Gem::Specification.new do |gem|
20
20
  gem.add_dependency 'active_interaction', '~> 1.1'
21
21
  gem.add_dependency 'virtus', '~> 1.0'
22
22
 
23
- gem.add_development_dependency 'bundler', '~> 1.0'
24
- gem.add_development_dependency 'rake', '~> 10.1'
23
+ gem.add_development_dependency 'bundler', '~> 1.6'
24
+ gem.add_development_dependency 'rake', '~> 10.2'
25
25
  gem.add_development_dependency 'yard', '~> 0.8'
26
- gem.add_development_dependency 'rspec', '~> 2.14'
26
+ gem.add_development_dependency 'rspec', '~> 3.0.0'
27
27
  gem.add_development_dependency 'fabrication', '~> 2.9'
28
28
  end
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe Endpoint do
4
4
  class TestEndpoint < Endpoint
5
- model :response, class: RSpec::Mocks::Mock
5
+ model :response, class: RSpec::Mocks::Double
6
6
 
7
7
  def execute
8
8
  validate_response_for do
@@ -7,8 +7,33 @@ describe ListResponses do
7
7
  let(:session) { Fabricate :basic_auth_session }
8
8
  before { allow(BasicAuthSession).to receive(:new).and_return session }
9
9
 
10
+ it 'performs a GET on the responses API' do
11
+ expect(session).to receive(:get).with(api_path,
12
+ respondent_type: 'respondent_type',
13
+ status: :status,
14
+ questionnaire_keys: ['questionnaire_key'],
15
+ completed_after: Time.new(2014, 1, 1),
16
+ completed_before: Time.new(2014, 1, 31),
17
+ protocol_subscription_id: 'protocol_subscription_id')
18
+ .and_return response
19
+ ListResponses.run(dossier_id: options[:dossier_id],
20
+ respondent_type: 'respondent_type',
21
+ status: :status,
22
+ questionnaire_keys: ['questionnaire_key'],
23
+ completed_after: Time.new(2014, 1, 1),
24
+ completed_before: Time.new(2014, 1, 31),
25
+ protocol_subscription_id: 'protocol_subscription_id').result
26
+ end
27
+
10
28
  it 'returns an array of response objects' do
11
- allow(session).to receive(:get).with(api_path).and_return response
29
+ allow(session).to receive(:get).with(api_path,
30
+ respondent_type: nil,
31
+ status: nil,
32
+ questionnaire_keys: [],
33
+ completed_after: nil,
34
+ completed_before: nil,
35
+ protocol_subscription_id: nil)
36
+ .and_return response
12
37
  responses = ListResponses.run(options).result
13
38
 
14
39
  expect(responses).to be_a(Array)
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe UpdateResponse do
4
+ let(:session) { Sessions::BasicAuthSession.new }
5
+ let(:response) { httparty_response(questionnaire_name: 'Some Questionnaire') }
6
+ before do
7
+ allow(Sessions::BasicAuthSession).to receive(:new).and_return session
8
+ allow(session).to receive(:patch).and_return response
9
+ end
10
+
11
+ it 'does a post to the rom responses api' do
12
+ filled_out_at = Time.now
13
+ expect(session).to receive(:patch).with '/dossiers/some_dossier_id/responses/230',
14
+ questionnaire_key: 'some_questionnaire_key',
15
+ answer_data: {some: 'answer_data'},
16
+ filled_out_at: filled_out_at.to_i
17
+ UpdateResponse.run! dossier_id: 'some_dossier_id',
18
+ questionnaire_key: 'some_questionnaire_key',
19
+ id: 230,
20
+ answer_data: {some: 'answer_data'},
21
+ filled_out_at: filled_out_at
22
+ end
23
+
24
+ it 'returns a response object' do
25
+ response = UpdateResponse.run! dossier_id: 'some_dossier_id',
26
+ questionnaire_key: 'some_questionnaire_key',
27
+ answer_data: {some: 'answer_data'},
28
+ respondent: 'patient',
29
+ id: 230
30
+ expect(response).to be_a(Response)
31
+ expect(response.questionnaire_name).to eq('Some Questionnaire')
32
+ end
33
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roqua-rom-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Esposito
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-22 00:00:00.000000000 Z
11
+ date: 2014-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -58,28 +58,28 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.0'
61
+ version: '1.6'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '1.0'
68
+ version: '1.6'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '10.1'
75
+ version: '10.2'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '10.1'
82
+ version: '10.2'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: yard
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '2.14'
103
+ version: 3.0.0
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '2.14'
110
+ version: 3.0.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: fabrication
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -155,6 +155,7 @@ files:
155
155
  - lib/roqua/rom_api/start_fill_out_session.rb
156
156
  - lib/roqua/rom_api/start_protocol_subscription.rb
157
157
  - lib/roqua/rom_api/stop_protocol_subscription.rb
158
+ - lib/roqua/rom_api/update_response.rb
158
159
  - lib/roqua/rom_api/version.rb
159
160
  - roqua_rom_api.gemspec
160
161
  - spec/fabricators/basic_auth_session_fabricator.rb
@@ -170,6 +171,7 @@ files:
170
171
  - spec/lib/roqua/rom_api/start_fill_out_session_spec.rb
171
172
  - spec/lib/roqua/rom_api/start_protocol_subscription_spec.rb
172
173
  - spec/lib/roqua/rom_api/stop_protocol_subscription_spec.rb
174
+ - spec/lib/roqua/rom_api/update_response_spec.rb
173
175
  - spec/lib/roqua_rom_api_spec.rb
174
176
  - spec/spec_helper.rb
175
177
  - spec/support/httparty_helpers.rb
@@ -212,6 +214,7 @@ test_files:
212
214
  - spec/lib/roqua/rom_api/start_fill_out_session_spec.rb
213
215
  - spec/lib/roqua/rom_api/start_protocol_subscription_spec.rb
214
216
  - spec/lib/roqua/rom_api/stop_protocol_subscription_spec.rb
217
+ - spec/lib/roqua/rom_api/update_response_spec.rb
215
218
  - spec/lib/roqua_rom_api_spec.rb
216
219
  - spec/spec_helper.rb
217
220
  - spec/support/httparty_helpers.rb