clinical 0.2.4 → 0.2.5
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.
- data/Rakefile +0 -12
- data/VERSION +1 -1
- data/clinical.gemspec +3 -4
- data/features/finding_clinical_trials.feature +11 -0
- data/features/step_definitions/clinical_steps.rb +37 -0
- data/lib/clinical/trial.rb +13 -1
- metadata +3 -3
data/Rakefile
CHANGED
@@ -45,18 +45,6 @@ namespace :rcov do
|
|
45
45
|
t.rcov_opts = %w{--aggregate coverage.data --exclude osx\/objc,gems\/,features\/,spec\/ -o "features_rcov"}
|
46
46
|
end
|
47
47
|
end
|
48
|
-
begin
|
49
|
-
desc "Run both specs and features to generate aggregated coverage"
|
50
|
-
task :rcov do |t|
|
51
|
-
rm "coverage.data" if File.exist?("coverage.data")
|
52
|
-
Rake::Task["rcov:cucumber"].invoke
|
53
|
-
Rake::Task["rcov:tests"].invoke
|
54
|
-
end
|
55
|
-
rescue LoadError
|
56
|
-
task :rcov do
|
57
|
-
abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
|
58
|
-
end
|
59
|
-
end
|
60
48
|
|
61
49
|
begin
|
62
50
|
require 'cucumber/rake/task'
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.5
|
data/clinical.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{clinical}
|
5
|
-
s.version = "0.2.
|
5
|
+
s.version = "0.2.5"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Dan Pickett"]
|
9
|
-
s.date = %q{2009-07
|
9
|
+
s.date = %q{2009-08-07}
|
10
10
|
s.email = %q{dpickett@enlightsolutions.com}
|
11
11
|
s.extra_rdoc_files = [
|
12
12
|
"LICENSE",
|
@@ -48,11 +48,10 @@ Gem::Specification.new do |s|
|
|
48
48
|
"test/fixtures/open_set.xml",
|
49
49
|
"test/test_helper.rb"
|
50
50
|
]
|
51
|
-
s.has_rdoc = true
|
52
51
|
s.homepage = %q{http://github.com/dpickett/clinical}
|
53
52
|
s.rdoc_options = ["--charset=UTF-8"]
|
54
53
|
s.require_paths = ["lib"]
|
55
|
-
s.rubygems_version = %q{1.3.
|
54
|
+
s.rubygems_version = %q{1.3.5}
|
56
55
|
s.summary = %q{a library for accessing data from ClinicalTrials.gov}
|
57
56
|
s.test_files = [
|
58
57
|
"test/clinical/trial_test.rb",
|
@@ -46,6 +46,17 @@ Feature: As a potential participant for a clinical study
|
|
46
46
|
And the trial should have "sponsors" like "M.D. Anderson"
|
47
47
|
And the trial should have an "overall_official" like "Alexandra Phan, MD"
|
48
48
|
|
49
|
+
Scenario: Find trials that were updated between a range of dates
|
50
|
+
Given I am searching for trials that have been updated between "07/06/2009" and "07/07/2009"
|
51
|
+
When I perform the extended search
|
52
|
+
Then I should get trials where "updated_at" is greater than or equal to "07/06/2009"
|
53
|
+
And I should get trials where "updated_at" is less than or equal to "07/07/2009"
|
54
|
+
|
55
|
+
Scenario: Find trials that were updated beyond a single date
|
56
|
+
Given I am searching for trials that have been updated after "07/06/2009"
|
57
|
+
When I perform the extended search
|
58
|
+
Then I should get trials where "updated_at" is greater than or equal to "07/06/2009"
|
59
|
+
|
49
60
|
Scenario: Find a non-existant trial
|
50
61
|
When I attempt to retrieve trial "4325785"
|
51
62
|
Then I should not get a trial
|
@@ -10,6 +10,21 @@ Given /^I am searching for trials where "([^\"]*)" is "([^\"]*)"$/ do |field, va
|
|
10
10
|
@params[field.to_sym] = value
|
11
11
|
end
|
12
12
|
|
13
|
+
Given /^I am searching for trials that have been updated between "([^\"]*)" and "([^\"]*)"$/ do |start_date, end_date|
|
14
|
+
dates = [Date.parse(start_date)]
|
15
|
+
dates << Date.parse(end_date)
|
16
|
+
|
17
|
+
@params ||= {}
|
18
|
+
@params[:updated_at] = dates
|
19
|
+
end
|
20
|
+
|
21
|
+
Given /^I am searching for trials that have been updated after "([^\"]*)"$/ do |date|
|
22
|
+
dates = [Date.parse(date)]
|
23
|
+
|
24
|
+
@params ||= {}
|
25
|
+
@params[:updated_at] = dates
|
26
|
+
end
|
27
|
+
|
13
28
|
When /^I perform the search$/ do
|
14
29
|
@trials = Clinical::Trial.find(:conditions => @params)
|
15
30
|
end
|
@@ -67,8 +82,30 @@ Then /^the trial should have (an\s)?"([^\"]*)" like "([^\"]*)"$/ do |an, field,
|
|
67
82
|
@trial.send(field).to_s.should =~ /#{Regexp.escape(value)}/
|
68
83
|
end
|
69
84
|
|
85
|
+
Then /^I should get trials where "([^\"]*)" is greater than "([^\"]*)"$/ do |arg1, arg2|
|
86
|
+
pending
|
87
|
+
end
|
88
|
+
|
89
|
+
Then /^I should get trials where "([^\"]*)" is greater than or equal to "([^\"]*)"$/ do |attr, date|
|
90
|
+
@trials.each do |t|
|
91
|
+
assert t.send(attr) >= Date.parse(date),
|
92
|
+
"#{t.send(attr)} is not >= #{Date.parse(date)}"
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
Then /^I should get trials where "([^\"]*)" is less than or equal to "([^\"]*)"$/ do |attr, date|
|
97
|
+
@trials.each do |t|
|
98
|
+
assert t.send(attr) <= Date.parse(date),
|
99
|
+
"#{t.send(attr)} is not <= #{Date.parse(date)}"
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
70
103
|
|
71
104
|
Then /^I should not get a trial$/ do
|
72
105
|
@trial.should be_nil
|
73
106
|
end
|
74
107
|
|
108
|
+
|
109
|
+
Then /^I should get trials where "([^\"]*)" is between "([^\"]*)" and "([^\"]*)"$/ do |attr, start_date, end_date|
|
110
|
+
end
|
111
|
+
|
data/lib/clinical/trial.rb
CHANGED
@@ -34,7 +34,8 @@ module Clinical
|
|
34
34
|
element :start_date, Date
|
35
35
|
element :end_date, Date
|
36
36
|
|
37
|
-
element :
|
37
|
+
element :first_received_at, Date, :tag => "firstreceived_date"
|
38
|
+
element :updated_at, Date, :tag => "lastchanged_date"
|
38
39
|
|
39
40
|
element :minimum_age, String, :tag => "eligibility/minimum_age"
|
40
41
|
element :maximum_age, String, :tag => "eligibility/maximum_age"
|
@@ -164,6 +165,17 @@ module Clinical
|
|
164
165
|
query[value] = conditions[key] unless conditions[key].nil?
|
165
166
|
end
|
166
167
|
|
168
|
+
unless conditions[:updated_at].nil?
|
169
|
+
unless conditions[:updated_at].is_a?(Array)
|
170
|
+
conditions[:updated_at] = [conditions[:updated_at]]
|
171
|
+
end
|
172
|
+
|
173
|
+
query["lup_s"] = conditions[:updated_at][0].strftime("%m/%d/%Y")
|
174
|
+
if conditions[:updated_at].size == 2
|
175
|
+
query["lup_e"] = conditions[:updated_at][1].strftime("%m/%d/%Y")
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
167
179
|
query
|
168
180
|
end
|
169
181
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: clinical
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan Pickett
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-07
|
12
|
+
date: 2009-08-07 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -120,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
120
120
|
requirements: []
|
121
121
|
|
122
122
|
rubyforge_project:
|
123
|
-
rubygems_version: 1.3.
|
123
|
+
rubygems_version: 1.3.5
|
124
124
|
signing_key:
|
125
125
|
specification_version: 3
|
126
126
|
summary: a library for accessing data from ClinicalTrials.gov
|