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 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.5
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.1.5"
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-02}
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
@@ -49,3 +49,4 @@ Feature: As a potential participant for a clinical study
49
49
  When I attempt to retrieve trial "4325785"
50
50
  Then I should not get a trial
51
51
 
52
+
@@ -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
@@ -3,6 +3,7 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
3
  require "will_paginate"
4
4
  require "httparty"
5
5
  require "happymapper"
6
+ require "nokogiri"
6
7
 
7
8
  require "clinical/extensions"
8
9
 
@@ -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.1.5
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-02 00:00:00 -07:00
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.2.0
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