dpickett-clinical 0.1.5 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +1 -0
- data/VERSION +1 -1
- data/clinical.gemspec +6 -2
- data/features/finding_clinical_trials.feature +1 -0
- data/features/getting_keywords_and_categories.feature +9 -0
- data/features/step_definitions/clinical_steps.rb +5 -0
- data/lib/clinical.rb +1 -0
- data/lib/clinical/trial.rb +29 -0
- metadata +15 -3
data/Rakefile
CHANGED
@@ -14,6 +14,7 @@ begin
|
|
14
14
|
gem.add_dependency("jnunemaker-httparty", ">= 0.4.3")
|
15
15
|
gem.add_dependency("jnunemaker-happymapper", ">= 0.2.5")
|
16
16
|
gem.add_dependency("mislav-will_paginate", ">= 2.3.11")
|
17
|
+
gem.add_dependency("tenderlove-nokogiri", "> 1.3.3")
|
17
18
|
|
18
19
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
19
20
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
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.
|
5
|
+
s.version = "0.2.0"
|
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-07-28}
|
10
10
|
s.email = %q{dpickett@enlightsolutions.com}
|
11
11
|
s.extra_rdoc_files = [
|
12
12
|
"LICENSE",
|
@@ -21,6 +21,7 @@ Gem::Specification.new do |s|
|
|
21
21
|
"VERSION",
|
22
22
|
"clinical.gemspec",
|
23
23
|
"features/finding_clinical_trials.feature",
|
24
|
+
"features/getting_keywords_and_categories.feature",
|
24
25
|
"features/step_definitions/clinical_steps.rb",
|
25
26
|
"features/support/env.rb",
|
26
27
|
"lib/clinical.rb",
|
@@ -64,14 +65,17 @@ Gem::Specification.new do |s|
|
|
64
65
|
s.add_runtime_dependency(%q<jnunemaker-httparty>, [">= 0.4.3"])
|
65
66
|
s.add_runtime_dependency(%q<jnunemaker-happymapper>, [">= 0.2.5"])
|
66
67
|
s.add_runtime_dependency(%q<mislav-will_paginate>, [">= 2.3.11"])
|
68
|
+
s.add_runtime_dependency(%q<tenderlove-nokogiri>, ["> 1.3.3"])
|
67
69
|
else
|
68
70
|
s.add_dependency(%q<jnunemaker-httparty>, [">= 0.4.3"])
|
69
71
|
s.add_dependency(%q<jnunemaker-happymapper>, [">= 0.2.5"])
|
70
72
|
s.add_dependency(%q<mislav-will_paginate>, [">= 2.3.11"])
|
73
|
+
s.add_dependency(%q<tenderlove-nokogiri>, ["> 1.3.3"])
|
71
74
|
end
|
72
75
|
else
|
73
76
|
s.add_dependency(%q<jnunemaker-httparty>, [">= 0.4.3"])
|
74
77
|
s.add_dependency(%q<jnunemaker-happymapper>, [">= 0.2.5"])
|
75
78
|
s.add_dependency(%q<mislav-will_paginate>, [">= 2.3.11"])
|
79
|
+
s.add_dependency(%q<tenderlove-nokogiri>, ["> 1.3.3"])
|
76
80
|
end
|
77
81
|
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
Feature: As a user of the clinical library
|
2
|
+
I want to retrieve keywords, categories, and terms from ClinicalTrials.gov
|
3
|
+
So that I can associate related trials
|
4
|
+
|
5
|
+
Scenario: Get keywords, categories, and terms
|
6
|
+
When I attempt to retrieve keywords for trial "NCT00001372"
|
7
|
+
Then the trial should have "keywords" like "Autoimmunity"
|
8
|
+
And the trial should have "categories" like "Urologic Diseases"
|
9
|
+
And the trial should have "terms" like "Connective Tissue Diseases"
|
@@ -22,6 +22,11 @@ When /^I attempt to retrieve trial "([^\"]*)"$/ do |id|
|
|
22
22
|
@trial = Clinical::Trial.find_by_id(id)
|
23
23
|
end
|
24
24
|
|
25
|
+
When /^I attempt to retrieve keywords for trial "([^\"]*)"$/ do |id|
|
26
|
+
@trial = Clinical::Trial.find_by_id(id)
|
27
|
+
@trial.get_metadata
|
28
|
+
end
|
29
|
+
|
25
30
|
Then /^I should get trials that are (not )?"([^\"]*)"$/ do |not_included, field|
|
26
31
|
if not_included
|
27
32
|
result = false
|
data/lib/clinical.rb
CHANGED
data/lib/clinical/trial.rb
CHANGED
@@ -47,6 +47,10 @@ module Clinical
|
|
47
47
|
element :brief_summary, String, :tag => "brief_summary/textblock"
|
48
48
|
element :detailed_description, String, :tag => "brief_summary/textblock"
|
49
49
|
|
50
|
+
attr_reader :keywords
|
51
|
+
attr_reader :categories
|
52
|
+
attr_reader :terms
|
53
|
+
|
50
54
|
def id
|
51
55
|
self.nct_id
|
52
56
|
end
|
@@ -79,6 +83,31 @@ module Clinical
|
|
79
83
|
self.text_phase.gsub(/phase /i, "").to_i
|
80
84
|
end
|
81
85
|
|
86
|
+
#this metadata is not accessible in the feed so crawl the html page
|
87
|
+
#to get keywords, categories, and terms
|
88
|
+
def get_metadata
|
89
|
+
response = self.class.get("/show/#{id}", :query => {:displayxml => false})
|
90
|
+
html = Nokogiri::HTML(response.body)
|
91
|
+
|
92
|
+
metadata = {}
|
93
|
+
|
94
|
+
{
|
95
|
+
:terms => 0,
|
96
|
+
:categories => 1,
|
97
|
+
:keywords => 2
|
98
|
+
}.each do |key, value|
|
99
|
+
|
100
|
+
metadata[key] = []
|
101
|
+
html.search("div.indent3:nth-last-child(#{value}) td").each do |td|
|
102
|
+
metadata[key] += td.inner_html.split(/\<br\>/).collect{|i| i.strip}
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
106
|
+
|
107
|
+
@terms, @categories, @keywords = metadata[:terms], metadata[:categories], metadata[:keywords]
|
108
|
+
metadata
|
109
|
+
end
|
110
|
+
|
82
111
|
class << self
|
83
112
|
def find_by_id(id)
|
84
113
|
response = get("/show/#{id}")
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dpickett-clinical
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
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-07-28 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -42,6 +42,16 @@ dependencies:
|
|
42
42
|
- !ruby/object:Gem::Version
|
43
43
|
version: 2.3.11
|
44
44
|
version:
|
45
|
+
- !ruby/object:Gem::Dependency
|
46
|
+
name: tenderlove-nokogiri
|
47
|
+
type: :runtime
|
48
|
+
version_requirement:
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 1.3.3
|
54
|
+
version:
|
45
55
|
description:
|
46
56
|
email: dpickett@enlightsolutions.com
|
47
57
|
executables: []
|
@@ -60,6 +70,7 @@ files:
|
|
60
70
|
- VERSION
|
61
71
|
- clinical.gemspec
|
62
72
|
- features/finding_clinical_trials.feature
|
73
|
+
- features/getting_keywords_and_categories.feature
|
63
74
|
- features/step_definitions/clinical_steps.rb
|
64
75
|
- features/support/env.rb
|
65
76
|
- lib/clinical.rb
|
@@ -85,6 +96,7 @@ files:
|
|
85
96
|
- test/test_helper.rb
|
86
97
|
has_rdoc: true
|
87
98
|
homepage: http://github.com/dpickett/clinical
|
99
|
+
licenses:
|
88
100
|
post_install_message:
|
89
101
|
rdoc_options:
|
90
102
|
- --charset=UTF-8
|
@@ -105,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
105
117
|
requirements: []
|
106
118
|
|
107
119
|
rubyforge_project:
|
108
|
-
rubygems_version: 1.
|
120
|
+
rubygems_version: 1.3.5
|
109
121
|
signing_key:
|
110
122
|
specification_version: 3
|
111
123
|
summary: a library for accessing data from ClinicalTrials.gov
|