clinic_finder 0.0.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1395796307b7e4dc1c69d210f37f0c976f666d02
4
+ data.tar.gz: d12d1d938849d0414c1e80dab9c85d5de849fd7a
5
+ SHA512:
6
+ metadata.gz: aacbea8da4beb63753b31d20ec350e3ba2b051d7b414ed574225c24459b0f3b1e0a1db0fea9d28849f4ac6ea3479c4abede1c38f7245a38b4f45ca0cb6ba43fa
7
+ data.tar.gz: 4b7f6ac8c24a445a93430b33eb40ff90d0783528201902bb0d86916f85f350f791efdcff0fa0fd25903bde4e414e9412da204ad35011ebc9db0ad07d839fb443
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ *.gem
2
+ .DS_Store
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ bundler_args: --without development
3
+ rvm:
4
+ - 2.3.3
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
3
+
4
+ gem 'geokit'
5
+ gem 'rake', '>= 0.9.2'
6
+ gem 'minitest'
data/Gemfile.lock ADDED
@@ -0,0 +1,23 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ clinic_finder (0.0.0)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ geokit (1.10.0)
10
+ minitest (5.10.1)
11
+ rake (12.0.0)
12
+
13
+ PLATFORMS
14
+ ruby
15
+
16
+ DEPENDENCIES
17
+ clinic_finder!
18
+ geokit
19
+ minitest
20
+ rake (>= 0.9.2)
21
+
22
+ BUNDLED WITH
23
+ 1.14.4
data/README.md ADDED
@@ -0,0 +1,110 @@
1
+ # clinic_finder
2
+ # ABORTRON
3
+
4
+ * CI: https://travis-ci.org/colinxfleming/clinic_finder
5
+ * build script: build.sh
6
+ * run tests: rake test
7
+
8
+ ## Problem Description
9
+
10
+ Our case management team is helping patients navigate a variety of logistical challenges to securing an abortion, such as figuring out the closest clinic to them, or the cheapest clinic in their state, or a clinic that will still see them (since many clinics have a gestational age cutoff after which they won't do abortions anymore). The DC area is fortunate enough to have a variety of providers, and we'd like to have a tool that helps us filter down our set of clinics and help our case managers recommend an optimal few clinics, given a patient's particular needs.
11
+
12
+ ## How we'd like to use it
13
+
14
+ We'd prefer this as a ruby library so that we can plug it into our existing case management system easily. If that's not an option, we can adapt the logic from it.
15
+
16
+ ## How we'd like it to work
17
+
18
+ As a case manager, given that I have:
19
+ * A patient with limited resources, a gestational age, and a zip code
20
+ * A set of clinics with certain attributes, including an address and a set schedule of costs and whether or not they accept National Abortion Federation (NAF) funding, and certain other factors that might make them a better fit for a patient
21
+
22
+ I would like to be able to filter and sort down to a subset of available clinics.
23
+
24
+ Relevant parts of our clinic objects that we'd like to filter on:
25
+ * zip: five digit zip code
26
+ * cost: cost in dollars for an abortion procedure
27
+ * gestation_limit: limit in days, at which point a clinic won't perform abortions. e.g. no abortions after 147 days (21 weeks).
28
+ * naf_clinic: boolean value for whether or not a clinic accepts NAF funding (e.g. whether or not we can count on a grant)
29
+
30
+ Information from a patient that we'd like to plug into the tool:
31
+ * zip code of patient
32
+ * patient's gestational age
33
+
34
+ ## Setup
35
+
36
+ [PLACEHOLDER FOR INSTALL INSTRUCTIONS]
37
+
38
+ This gem currently requires data to be in the form of a .yml file, which is passed in to the library instance at the point of initialization as such:
39
+
40
+ `Abortron::ClinicFinder.new(yaml_file)`
41
+
42
+ The gem expects yml data to be in the following format:
43
+
44
+ ```
45
+ planned_parenthood_oakland:
46
+ street_address: 1001 Broadway
47
+ city: Oakland
48
+ state: CA
49
+ zip: 94607
50
+ accepts_naf: false
51
+ gestational_limit: 139
52
+ costs_9wks: 425
53
+ costs_12wks: 475
54
+ costs_18wks: 975
55
+ costs_24wks: null
56
+ costs_30wks: null
57
+ ```
58
+ Hot tip: Before using your yml file, please be sure to feed it through a YAML linter like [YAML Lint](http://www.yamllint.com/) to remove any syntax errors.
59
+
60
+ Long term goal here is to make this usable with ActiveRecord models directly.
61
+
62
+ ## Methods
63
+
64
+ First, you will need to instantiate a library instance.
65
+
66
+ `@abortron = Abortron::ClinicFinder.new(your_yaml_file)`
67
+
68
+ To find the cheapest clinic within your dataset that will serve the patient based on their LMP, call:
69
+
70
+ `@abortron.locate_cheapest_clinic(patient_zip: 94114, gestational_age: 60)`
71
+
72
+ This will return an array of hashes that look like so:
73
+
74
+ ```
75
+ => [{'planned_parenthood_oakland' => {'street_address' => '1001 Broadway',
76
+ 'city' => 'Oakland', 'state' => 'CA',
77
+ 'zip' => 94607,
78
+ 'accepts_naf' => false,
79
+ 'gestational_limit' => 139,
80
+ 'costs_9wks' => 425,
81
+ 'costs_12wks' => 475,
82
+ 'costs_18wks' => 975,
83
+ 'costs_24wks' => nil,
84
+ 'costs_30wks' => nil}},
85
+ {'castro_family_planning' => {'street_address' => '5464 Folsom',
86
+ 'city' => 'San Francisco',
87
+ 'state' => 'CA',
88
+ 'zip' => 94607,
89
+ 'accepts_naf' => false,
90
+ 'gestational_limit' => 139,
91
+ 'costs_9wks' => 425,
92
+ 'costs_12wks' => 475,
93
+ 'costs_18wks' => 975,
94
+ 'costs_24wks' => nil,
95
+ 'costs_30wks' => nil}}]
96
+ ```
97
+
98
+
99
+ ## Further goals
100
+ * Make gem usable with ActiveRecord models directly, instead of via a yml file that requires maintenance
101
+ * Incorporate check for NAF only (the infrastructure is currently present as a default-false argument, but is not being used)
102
+ * Create method for cheapest **and** closest, defined as the cheapest clinic of your three closest clinics
103
+ * Create a method for easiest/fastest access via public transportation (this may require patient to provide full address, not just zip)
104
+
105
+ ## Measuring success
106
+
107
+ We'd like to walk away with:
108
+
109
+ * A ruby gem that we can install in a separate app
110
+ * A standalone sinatra app that we can demo to case managers
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ require 'rake/testtask'
2
+
3
+ Rake::TestTask.new do |t|
4
+ t.libs << 'test'
5
+ end
6
+
7
+ desc 'Run tests'
8
+ task default: :test
data/build.sh ADDED
@@ -0,0 +1,3 @@
1
+ gem uninstall clinic_finder
2
+ gem build clinic_finder.gemspec
3
+ gem install clinic_finder-*.gem
@@ -0,0 +1,21 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'clinic_finder'
3
+ s.version = '0.0.0'
4
+ s.date = '2017-02-23'
5
+ s.summary = 'Finding abortion clinics based on zip and LMP'
6
+ s.description = 'Help abortion fund case managers match ' \
7
+ 'patients to optimal clinics.'
8
+ s.authors = ['Team Code for DCAF', 'Colin Fleming', 'Lisa Waldschmitt']
9
+ s.email = 'info@dcabortionfund.org'
10
+ s.files = ['lib/clinic_finder.rb', 'lib/clinic_finder/gestation_helper.rb']
11
+ s.homepage = 'http://www.dcabortionfund.org'
12
+ s.license = 'MIT'
13
+
14
+ s.rubyforge_project = "clinic_finder"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- test/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ end
@@ -0,0 +1,144 @@
1
+ # A set of fake clinics with cost, geo, and naf data to use as stubs
2
+ planned_parenthood_oakland:
3
+ street_address: 1001 Broadway
4
+ city: Oakland
5
+ state: CA
6
+ zip: 94607
7
+ accepts_naf: false
8
+ gestational_limit: 139
9
+ costs_9wks: 425
10
+ costs_12wks: 475
11
+ costs_18wks: 975
12
+ costs_24wks: null
13
+ costs_30wks: null
14
+
15
+ planned_parenthood_san_fran:
16
+ street_address: 2430 Folsom
17
+ city: San Francisco
18
+ state: CA
19
+ zip: 94110
20
+ accepts_naf: false
21
+ gestational_limit: 111
22
+ costs_9wks: 300
23
+ costs_12wks: 325
24
+ costs_18wks: null
25
+ costs_18wks: null
26
+ costs_24wks: null
27
+ costs_30wks: null
28
+
29
+ castro_family_planning:
30
+ street_address: 517 Castro
31
+ city: San Francisco
32
+ state: CA
33
+ zip: 94114
34
+ accepts_naf: true
35
+ gestational_limit: 126
36
+ costs_9wks: 295
37
+ costs_12wks: 425
38
+ costs_18wks: 1500
39
+ costs_24wks: null
40
+ costs_30wks: null
41
+
42
+ silcon_valley_womens_clinic:
43
+ street_address: 110 S Market
44
+ city: San Jose
45
+ state: CA
46
+ zip: 95110
47
+ accepts_naf: true
48
+ gestational_limit: 98
49
+ costs_9wks: 375
50
+ costs_12wks: 400
51
+ costs_18wks: null
52
+ costs_24wks: null
53
+ costs_30wks: null
54
+
55
+ discreet_treatment_centers_of_ca:
56
+ street_address: 570 Pacific
57
+ city: Monterey
58
+ state: CA
59
+ zip: 93940
60
+ accepts_naf: false
61
+ gestational_limit: 154
62
+ costs_9wks: 400
63
+ costs_12wks: 400
64
+ costs_18wks: 1150
65
+ costs_24wks: null
66
+ costs_30wks: null
67
+
68
+ albuquerque_medical_center:
69
+ street_address: 1801 Mountain NW
70
+ city: Albuquerque
71
+ state: NM
72
+ zip: 87104
73
+ accepts_naf: true
74
+ gestational_limit: 210
75
+ costs_9wks: 300
76
+ costs_12wks: 325
77
+ costs_18wks: 1100
78
+ costs_24wks: 4000
79
+ costs_30wks: 9500
80
+
81
+ butte_health_clinic:
82
+ street_address: 7473 Humboldt
83
+ city: Butte Meadows
84
+ state: CA
85
+ zip: 95942
86
+ accepts_naf: true
87
+ gestational_limit: 111
88
+ costs_9wks: 350
89
+ costs_12wks: 400
90
+ costs_18wks: null
91
+ costs_24wks: null
92
+ costs_30wks: null
93
+
94
+ planned_parenthood_fresno:
95
+ street_address: 2220 Tulare
96
+ city: Fresno
97
+ state: CA
98
+ zip: 93721
99
+ accepts_naf: false
100
+ gestational_limit: 97
101
+ costs_9wks: 425
102
+ costs_12wks: 475
103
+ costs_18wks: null
104
+ costs_24wks: null
105
+ costs_30wks: null
106
+
107
+ womens_health_of_venice_beach:
108
+ street_address: 2025 Pacific
109
+ city: Los Angeles
110
+ state: CA
111
+ zip: 90291
112
+ accepts_naf: true
113
+ gestational_limit: 119
114
+ costs_9wks: 350
115
+ costs_12wks: 350
116
+ costs_18wks: null
117
+ costs_24wks: null
118
+ costs_30wks: null
119
+
120
+ planned_parenthood_la:
121
+ street_address: 3900 W Manchester
122
+ city: Los Angeles
123
+ state: CA
124
+ zip: 90305
125
+ accepts_naf: false
126
+ gestational_limit: 146
127
+ costs_9wks: 415
128
+ costs_12wks: 460
129
+ costs_18wks: 1450
130
+ costs_24wks: null
131
+ costs_30wks: null
132
+
133
+ la_medical_center:
134
+ street_address: 5905 Wilshire
135
+ city: Los Angeles
136
+ state: CA
137
+ zip: 90036
138
+ accepts_naf: true
139
+ gestational_limit: 168
140
+ costs_9wks: 400
141
+ costs_12wks: 400
142
+ costs_18wks: 1600
143
+ costs_24wks: 3000
144
+ costs_30wks: null
@@ -0,0 +1,84 @@
1
+ require 'yaml'
2
+ require 'geokit'
3
+ require_relative './clinic_finder/gestation_helper'
4
+
5
+ # Core class
6
+ module Abortron
7
+ class ClinicFinder
8
+ attr_reader :clinics
9
+
10
+ def initialize(yml_file)
11
+ @clinics = ::YAML.load_file(yml_file)
12
+ end
13
+
14
+ def create_full_address(gestational_age) # need to test filtering gestational limit
15
+ @clinic_addresses = []
16
+ filtered_clinics = @clinics.keep_if { |name, info| gestational_age < info['gestational_limit']}
17
+ filtered_clinics.each do |clinic, info|
18
+ @clinic_addresses << {name: clinic, address: "#{info['street_address']}, #{info['city']}, #{info['state']}"}
19
+ end
20
+ @clinic_addresses
21
+ end
22
+
23
+ def clinics_coordinates_conversion
24
+ @coordinates_hash = {}
25
+ @clinic_addresses.map! do |address| # {name: 'Oakland Clinic', address: '101 Main St, Oakland, CA'}
26
+ location = ::Geokit::Geocoders::GoogleGeocoder.geocode(address[:address])
27
+ float_coordinates = location.ll.split(',').map(&:to_f)
28
+ @coordinates_hash[address[:name]] = float_coordinates
29
+ sleep(0.5)
30
+ end
31
+ @coordinates_hash
32
+ end
33
+
34
+ def patient_coordinates_conversion(patient_zipcode)
35
+ @patient_location = ::Geokit::Geocoders::GoogleGeocoder.geocode(patient_zipcode)
36
+ @patient_float_coordinates = @patient_location.ll
37
+ end
38
+
39
+ def calculate_distance
40
+ distances = []
41
+ @coordinates_hash.each do |name, coordinates|
42
+ ll = Geokit::LatLng.new(coordinates[0], coordinates[1])
43
+ distances << {name: name, distance: ll.distance_to(@patient_float_coordinates)}
44
+ # distances = [ {name: "Oakland", distance: 2}, {name: "San Francisco", distance: 1} ]
45
+ end
46
+ @distances = distances.sort_by {|distance| distance[:distance]}
47
+ end
48
+
49
+
50
+ def find_closest_clinics
51
+ @distances[0..2]
52
+ end
53
+
54
+ # need to write test to make sure everything gets called
55
+ def locate_nearest_clinic(patient_zipcode:, gestational_age:)
56
+ patient_coordinates_conversion(patient_zipcode)
57
+ create_full_address(gestational_age)
58
+ clinics_coordinates_conversion
59
+ calculate_distance
60
+ find_closest_clinics
61
+ end
62
+
63
+ def locate_cheapest_clinic(gestational_age:, naf_clinics_only: false)
64
+ @helper = ::ClinicFinder::GestationHelper.new(gestational_age)
65
+ @gestational_tier = @helper.gestational_tier
66
+ decorate_data(available_clinics)
67
+ end
68
+
69
+ # This method makes the sorted clinic data more easily traversible by converting the data into a hash of names (keys) and informational attributes (values) rather than leaving them as separate values in a nested array.
70
+ private def decorate_data(data)
71
+ sorted_clinics = []
72
+ three_cheapest(data).map { |clinic_array| sorted_clinics << { clinic_array.first => clinic_array.last } }
73
+ sorted_clinics
74
+ end
75
+
76
+ private def three_cheapest(data)
77
+ data.sort_by { |name, information| information[@gestational_tier] }.first(3)
78
+ end
79
+
80
+ private def available_clinics
81
+ @clinics.keep_if { |name, information| information[@gestational_tier] && @helper.within_gestational_limit?(information['gestational_limit']) }
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,32 @@
1
+ class ClinicFinder
2
+ class GestationHelper
3
+ attr_reader :gestational_age, :gestational_weeks
4
+
5
+ def initialize(gestational_age)
6
+ @gestational_age = gestational_age
7
+ # BUSINESS LOGIC HERE - CHANGE AS NEEDED
8
+ # We round up under the assumption that as soon as you pass the threshhold
9
+ # of a pricing tier - say, 9 weeks and 1 day - you will be priced into the
10
+ # more expensive tier (12 weeks). Change logic if this is not the case.
11
+ @gestational_weeks = (@gestational_age/7.0).ceil
12
+ end
13
+
14
+ def gestational_tier
15
+ if @gestational_weeks < 10
16
+ 'costs_9wks'
17
+ elsif @gestational_weeks < 13
18
+ 'costs_12wks'
19
+ elsif @gestational_weeks < 19
20
+ 'costs_18wks'
21
+ elsif @gestational_weeks < 25
22
+ 'costs_24wks'
23
+ else
24
+ 'costs_30wks'
25
+ end
26
+ end
27
+
28
+ def within_gestational_limit?(gestational_limit)
29
+ @gestational_age < gestational_limit
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,78 @@
1
+ require 'test_helper'
2
+ require_relative '../lib/clinic_finder'
3
+
4
+ class TestClinicFinder < TestClass
5
+
6
+ def setup
7
+ file = File.join(File.dirname(__FILE__), '../fixtures/clinics.yml')
8
+ @abortron = Abortron::ClinicFinder.new(file)
9
+ end
10
+
11
+ def test_that_initialize_sets_clinic_variable
12
+ assert_kind_of Hash, @abortron.clinics
13
+ end
14
+
15
+ def test_that_full_addresses_created
16
+ assert_kind_of Array, @abortron.create_full_address(100)
17
+ end
18
+
19
+ def test_that_full_address_has_needed_fields
20
+ assert_equal [{:name=>"planned_parenthood_oakland", :address=>"1001 Broadway, Oakland, CA"}, {:name=>"planned_parenthood_san_fran", :address=>"2430 Folsom, San Francisco, CA"}, {:name=>"castro_family_planning", :address=>"517 Castro, San Francisco, CA"}, {:name=>"discreet_treatment_centers_of_ca", :address=>"570 Pacific, Monterey, CA"}, {:name=>"albuquerque_medical_center", :address=>"1801 Mountain NW, Albuquerque, NM"}, {:name=>"butte_health_clinic", :address=>"7473 Humboldt, Butte Meadows, CA"}, {:name=>"womens_health_of_venice_beach", :address=>"2025 Pacific, Los Angeles, CA"}, {:name=>"planned_parenthood_la", :address=>"3900 W Manchester, Los Angeles, CA"}, {:name=>"la_medical_center", :address=>"5905 Wilshire, Los Angeles, CA"}], @abortron.create_full_address(100)
21
+ end
22
+
23
+ def test_that_clinic_coordinates_are_hashes
24
+ addresses = @abortron.create_full_address(100)
25
+ assert_kind_of Hash, @abortron.clinics_coordinates_conversion
26
+ end
27
+
28
+ def test_that_clinic_coordinates_are_found
29
+ @abortron.create_full_address(100)
30
+ information = @abortron.clinics_coordinates_conversion
31
+ assert_equal [37.8021736,-122.2729171], information["planned_parenthood_oakland"]
32
+ end
33
+
34
+ def test_that_patient_coordinates_are_found
35
+ pt_address = "88 Colin P Kelly Jr St, San Francisco, CA"
36
+ pt_mock = MiniTest::Mock.new
37
+ pt_mock.expect(:ll, [37.78226710000001, -122.3912479])
38
+ Geokit::Geocoders::GoogleGeocoder.stub(:geocode, pt_mock) do
39
+ @abortron.patient_coordinates_conversion(pt_address)
40
+ end
41
+ end
42
+
43
+ def test_that_distances_calculated_between_clinics_and_patient
44
+ @abortron.create_full_address(100)
45
+ @abortron.clinics_coordinates_conversion
46
+ @abortron.patient_coordinates_conversion("94117")
47
+ first_clinic = {name: "castro_family_planning", distance: 0.92356303468274}
48
+ assert_equal first_clinic, @abortron.calculate_distance.first
49
+ end
50
+
51
+ def test_that_returns_top_3_closest_clinics
52
+ @abortron.create_full_address(100)
53
+ @abortron.clinics_coordinates_conversion
54
+ @abortron.patient_coordinates_conversion("94117")
55
+ @abortron.calculate_distance
56
+ assert_equal [{:name=>"castro_family_planning", :distance=>0.92356303468274}, {:name=>"planned_parenthood_san_fran", :distance=>1.8319683663768311}, {:name=>"planned_parenthood_oakland", :distance=>9.580895789655901}], @abortron.find_closest_clinics
57
+ end
58
+
59
+ def test_locate_cheapest_clinic_locates
60
+ clinic = {
61
+ 'planned_parenthood_oakland' =>
62
+ {
63
+ 'street_address' => '1001 Broadway',
64
+ 'city' => 'Oakland',
65
+ 'state' => 'CA',
66
+ 'zip' => 94607,
67
+ 'accepts_naf' => false,
68
+ 'gestational_limit' => 139,
69
+ 'costs_9wks' => 425,
70
+ 'costs_12wks' => 475,
71
+ 'costs_18wks' => 975,
72
+ 'costs_24wks' => nil,
73
+ 'costs_30wks' => nil
74
+ }
75
+ }
76
+ assert_equal clinic, @abortron.locate_cheapest_clinic(gestational_age: 100)[0]
77
+ end
78
+ end
@@ -0,0 +1,55 @@
1
+ require 'test_helper'
2
+ require_relative '../lib/clinic_finder/gestation_helper'
3
+
4
+ class TestGestationHelper < TestClass
5
+ def setup
6
+ @helper = ClinicFinder::GestationHelper.new(10)
7
+ @clinic = {
8
+ 'street_address': '2025 Pacific',
9
+ 'city': 'Los Angeles',
10
+ 'state': 'CA',
11
+ 'zip': 90291,
12
+ 'accepts_naf': true,
13
+ 'gestational_limit': 119,
14
+ 'costs_9wks': 350,
15
+ 'costs_12wks': 350,
16
+ 'costs_18wks': nil,
17
+ 'costs_24wks': nil,
18
+ 'costs_30wks': nil
19
+ }
20
+ end
21
+
22
+ def test_that_initialize_sets_gestational_age_variable
23
+ assert_equal 10, @helper.gestational_age
24
+ end
25
+
26
+ def test_that_initialize_sets_gestational_weeks_variable
27
+ assert_equal 2, @helper.gestational_weeks
28
+ end
29
+
30
+ def test_that_gestational_limit_greater_than_ga_is_true
31
+ assert_equal true, @helper.within_gestational_limit?(30)
32
+ end
33
+
34
+ def test_that_gestational_limit_less_than_ga_is_false
35
+ assert_equal false, @helper.within_gestational_limit?(5)
36
+ end
37
+
38
+ def test_that_gestational_limit_equal_to_ga_is_false
39
+ assert_equal false, @helper.within_gestational_limit?(10)
40
+ end
41
+
42
+ def test_gestational_tier_under_lower_bound
43
+ assert_equal 'costs_9wks', @helper.gestational_tier
44
+ end
45
+
46
+ def test_gestational_tier_within_bound
47
+ @helper = ClinicFinder::GestationHelper.new(100)
48
+ assert_equal 'costs_18wks', @helper.gestational_tier
49
+ end
50
+
51
+ def test_gestational_tier_above_upper_bound
52
+ @helper = ClinicFinder::GestationHelper.new(400)
53
+ assert_equal 'costs_30wks', @helper.gestational_tier
54
+ end
55
+ end
@@ -0,0 +1,5 @@
1
+ require 'minitest/autorun'
2
+ require 'clinic_finder'
3
+
4
+ class TestClass < MiniTest::Test
5
+ end
metadata ADDED
@@ -0,0 +1,62 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: clinic_finder
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Team Code for DCAF
8
+ - Colin Fleming
9
+ - Lisa Waldschmitt
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2017-02-23 00:00:00.000000000 Z
14
+ dependencies: []
15
+ description: Help abortion fund case managers match patients to optimal clinics.
16
+ email: info@dcabortionfund.org
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - ".gitignore"
22
+ - ".travis.yml"
23
+ - Gemfile
24
+ - Gemfile.lock
25
+ - README.md
26
+ - Rakefile
27
+ - build.sh
28
+ - clinic_finder.gemspec
29
+ - fixtures/clinics.yml
30
+ - lib/clinic_finder.rb
31
+ - lib/clinic_finder/gestation_helper.rb
32
+ - test/test_clinic_finder.rb
33
+ - test/test_gestation_helper.rb
34
+ - test/test_helper.rb
35
+ homepage: http://www.dcabortionfund.org
36
+ licenses:
37
+ - MIT
38
+ metadata: {}
39
+ post_install_message:
40
+ rdoc_options: []
41
+ require_paths:
42
+ - lib
43
+ required_ruby_version: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ required_rubygems_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ requirements: []
54
+ rubyforge_project: clinic_finder
55
+ rubygems_version: 2.6.8
56
+ signing_key:
57
+ specification_version: 4
58
+ summary: Finding abortion clinics based on zip and LMP
59
+ test_files:
60
+ - test/test_clinic_finder.rb
61
+ - test/test_gestation_helper.rb
62
+ - test/test_helper.rb