clinical 0.2.9 → 0.2.10

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.9
1
+ 0.2.10
data/clinical.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{clinical}
8
- s.version = "0.2.9"
8
+ s.version = "0.2.10"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Dan Pickett"]
@@ -28,6 +28,7 @@ Gem::Specification.new do |s|
28
28
  "features/step_definitions/clinical_steps.rb",
29
29
  "features/support/env.rb",
30
30
  "lib/clinical.rb",
31
+ "lib/clinical/abstract_element.rb",
31
32
  "lib/clinical/address.rb",
32
33
  "lib/clinical/agency.rb",
33
34
  "lib/clinical/collaborator.rb",
@@ -38,10 +39,7 @@ Gem::Specification.new do |s|
38
39
  "lib/clinical/intervention.rb",
39
40
  "lib/clinical/lead_sponsor.rb",
40
41
  "lib/clinical/location.rb",
41
- "lib/clinical/location_contact.rb",
42
42
  "lib/clinical/outcome.rb",
43
- "lib/clinical/overall_contact.rb",
44
- "lib/clinical/overall_official.rb",
45
43
  "lib/clinical/primary_outcome.rb",
46
44
  "lib/clinical/secondary_outcome.rb",
47
45
  "lib/clinical/sponsor.rb",
@@ -36,6 +36,7 @@ Feature: As a potential participant for a clinical study
36
36
  When I attempt to retrieve trial "NCT00001372"
37
37
  Then I should get a trial
38
38
  And the trial should have an "id" of "NCT00001372"
39
+ And the trial should have an "overall_contact"
39
40
 
40
41
  Scenario: Find a specific trial with extended attributes
41
42
  When I attempt to retrieve trial "NCT00454363"
@@ -47,7 +48,6 @@ Feature: As a potential participant for a clinical study
47
48
  And the trial should have an "overall_official" like "Alexandra Phan, MD"
48
49
  And the trial should have "eligibility_criteria" like "DISEASE CHARACTERISTICS"
49
50
  And the trial should have "brief_summary" like "Pazopanib"
50
- And the trial should have an "overall_contact"
51
51
 
52
52
  Scenario: Find trials that were updated between a range of dates
53
53
  Given I am searching for trials that have been updated between "07/06/2009" and "07/07/2009"
@@ -0,0 +1,19 @@
1
+ module Clinical
2
+ module AbstractElement
3
+ def self.included(base)
4
+ base.extend(ClassMethods)
5
+ end
6
+
7
+ module ClassMethods
8
+ def abstract_element(name, type, options = {})
9
+ element(name, type, options.merge(:parser => :abstract_parse, :raw => true))
10
+ end
11
+
12
+ def abstract_parse(xml, options = {})
13
+ tag XML::Parser.string(xml).parse.root.name
14
+ parse(xml)
15
+ end
16
+ end
17
+ end
18
+ end
19
+
@@ -1,25 +1,19 @@
1
1
  module Clinical
2
- module Contact
3
- def self.included(base)
4
- base.class_eval do
5
- include HappyMapper
6
- include Clinical::Contact::InstanceMethods
2
+ class Contact
3
+ include HappyMapper
4
+ include Clinical::AbstractElement
7
5
 
8
- element :first_name, String
9
- element :middle_name, String
10
- element :last_name, String
11
- element :degrees, String
12
- element :phone, String
13
- element :phone_extension, String, :tag => "phone_ext"
14
- element :email, String
15
- end
6
+ element :first_name, String
7
+ element :middle_name, String
8
+ element :last_name, String
9
+ element :degrees, String
10
+ element :phone, String
11
+ element :phone_extension, String, :tag => "phone_ext"
12
+ element :email, String
16
13
 
17
- end
18
14
 
19
- module InstanceMethods
20
- def to_s
21
- [first_name, last_name, "(#{phone})"].join(" ")
22
- end
15
+ def to_s
16
+ [first_name, last_name, "(#{phone})"].join(" ")
23
17
  end
24
18
  end
25
19
  end
@@ -1,10 +1,11 @@
1
1
  module Clinical
2
2
  class Location
3
3
  include HappyMapper
4
+ include Clinical::AbstractElement
4
5
 
5
6
  element :facility, String
6
7
  has_one :status, Clinical::Status, :parser => :parse
7
- has_one :contact, Clinical::LocationContact
8
+ abstract_element :contact, Clinical::Contact
8
9
  has_one :address, Clinical::Address
9
10
  end
10
11
  end
@@ -2,6 +2,7 @@ module Clinical
2
2
  class Trial
3
3
  include HappyMapper
4
4
  include HTTParty
5
+ include Clinical::AbstractElement
5
6
 
6
7
  base_uri "http://clinicaltrials.gov"
7
8
  default_params :displayxml => true
@@ -24,8 +25,8 @@ module Clinical
24
25
  has_many :collaborators, Clinical::Collaborator
25
26
  has_many :agencies, Clinical::Agency
26
27
 
27
- has_one :overall_official, Clinical::OverallOfficial, :tag => "overall_official"
28
- has_one :overall_contact, Clinical::OverallContact, :tag => "overall_contact"
28
+ abstract_element :overall_official, Clinical::Contact, :tag => "overall_official"
29
+ abstract_element :overall_contact, Clinical::Contact, :tag => "overall_contact"
29
30
 
30
31
  has_many :interventions, Intervention, :tag => "intervention"
31
32
  has_many :primary_outcomes, PrimaryOutcome
@@ -98,7 +99,7 @@ module Clinical
98
99
  #this metadata is not accessible in the feed so crawl the html page
99
100
  #to get keywords, categories, and terms
100
101
  def get_metadata
101
- response = self.class.get("/show/#{id}", :query => {:displayxml => false})
102
+ response = self.class.get("/ct2/show/#{id}", :query => {:displayxml => false})
102
103
  html = Nokogiri::HTML(response.body)
103
104
 
104
105
  metadata = {}
@@ -124,7 +125,7 @@ module Clinical
124
125
 
125
126
  class << self
126
127
  def find_by_id(id)
127
- response = get("/show/#{id}")
128
+ response = get("/ct2/show/#{id}")
128
129
  if response.code == 400
129
130
  nil
130
131
  else
data/lib/clinical.rb CHANGED
@@ -6,6 +6,7 @@ require "happymapper"
6
6
  require "nokogiri"
7
7
 
8
8
  require "clinical/extensions"
9
+ require "clinical/abstract_element"
9
10
 
10
11
  require "clinical/status"
11
12
  require "clinical/intervention"
@@ -21,9 +22,6 @@ require "clinical/agency"
21
22
  require "clinical/collaborator"
22
23
 
23
24
  require "clinical/contact"
24
- require "clinical/overall_official"
25
- require "clinical/location_contact"
26
- require "clinical/overall_contact"
27
25
 
28
26
  require "clinical/address"
29
27
  require "clinical/location"
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.9
4
+ version: 0.2.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Pickett
@@ -74,6 +74,7 @@ files:
74
74
  - features/step_definitions/clinical_steps.rb
75
75
  - features/support/env.rb
76
76
  - lib/clinical.rb
77
+ - lib/clinical/abstract_element.rb
77
78
  - lib/clinical/address.rb
78
79
  - lib/clinical/agency.rb
79
80
  - lib/clinical/collaborator.rb
@@ -84,10 +85,7 @@ files:
84
85
  - lib/clinical/intervention.rb
85
86
  - lib/clinical/lead_sponsor.rb
86
87
  - lib/clinical/location.rb
87
- - lib/clinical/location_contact.rb
88
88
  - lib/clinical/outcome.rb
89
- - lib/clinical/overall_contact.rb
90
- - lib/clinical/overall_official.rb
91
89
  - lib/clinical/primary_outcome.rb
92
90
  - lib/clinical/secondary_outcome.rb
93
91
  - lib/clinical/sponsor.rb
@@ -1,7 +0,0 @@
1
- module Clinical
2
- class LocationContact
3
- include Clinical::Contact
4
- tag "contact"
5
- end
6
- end
7
-
@@ -1,7 +0,0 @@
1
- module Clinical
2
- class OverallContact
3
- include Clinical::Contact
4
-
5
- tag "overall_official"
6
- end
7
- end
@@ -1,6 +0,0 @@
1
- module Clinical
2
- class OverallOfficial
3
- include Clinical::Contact
4
- tag "overall_official"
5
- end
6
- end