doctors 0.0.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 06b4ce0e73fe0a163e91fdf929d633fb4ade9bbf
4
+ data.tar.gz: 39aa98f26d5c4f57809b2f8c8640e95b7076d760
5
+ SHA512:
6
+ metadata.gz: 67582911c5f39d03bb491e021ef261c7be4d60e02030b6d38344dcceb977367f815166a8dd620fc8462050a60fbf86878f9aa959653488adad02c327af903977
7
+ data.tar.gz: bf82e90618da22f2d0683eabcb6b60ac0e94c778344d9a85ca9ac6822bdc36cdd41ca64c2a628c3e1437c689db623e67a4d40a0c0d9a5fedf739ba7cf99a6e13
@@ -0,0 +1,6 @@
1
+ /.bundle
2
+ /log/*.log
3
+ /tmp
4
+ /tags
5
+ /coverage
6
+ *.gem
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ -I .
2
+ -I lib
@@ -0,0 +1,26 @@
1
+ AllCops:
2
+ Includes:
3
+ - Rakefile
4
+ - geo_api.rb
5
+ Excludes:
6
+ - data/**
7
+ - config/**
8
+ - features/**
9
+ - spec/**
10
+ - reports/**
11
+ - vendor/**
12
+ StringLiterals:
13
+ Enabled: false
14
+ Documentation:
15
+ Enabled: false
16
+ Encoding:
17
+ Enabled: false
18
+ ReduceArguments:
19
+ Enabled: false
20
+ AndOr:
21
+ Enabled: false
22
+ LineLength:
23
+ Enabled: true
24
+ Max: 80
25
+ ModuleFunction:
26
+ Enabled: false
@@ -0,0 +1 @@
1
+ 2.0.0-p247
@@ -0,0 +1,3 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
@@ -0,0 +1,87 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ doctors (0.0.1)
5
+ faraday
6
+ id
7
+ yajl-ruby
8
+
9
+ GEM
10
+ remote: https://rubygems.org/
11
+ specs:
12
+ activemodel (4.0.0)
13
+ activesupport (= 4.0.0)
14
+ builder (~> 3.1.0)
15
+ activesupport (4.0.0)
16
+ i18n (~> 0.6, >= 0.6.4)
17
+ minitest (~> 4.2)
18
+ multi_json (~> 1.3)
19
+ thread_safe (~> 0.1)
20
+ tzinfo (~> 0.3.37)
21
+ addressable (2.3.5)
22
+ atomic (1.1.14)
23
+ builder (3.1.4)
24
+ coveralls (0.7.0)
25
+ multi_json (~> 1.3)
26
+ rest-client
27
+ simplecov (>= 0.7)
28
+ term-ansicolor
29
+ thor
30
+ crack (0.4.1)
31
+ safe_yaml (~> 0.9.0)
32
+ diff-lcs (1.2.4)
33
+ faraday (0.8.8)
34
+ multipart-post (~> 1.2.0)
35
+ i18n (0.6.5)
36
+ id (0.0.12)
37
+ activemodel
38
+ activesupport
39
+ money
40
+ optional
41
+ metaclass (0.0.1)
42
+ mime-types (1.25)
43
+ minitest (4.7.5)
44
+ mocha (0.14.0)
45
+ metaclass (~> 0.0.1)
46
+ money (5.1.1)
47
+ i18n (~> 0.6.0)
48
+ multi_json (1.8.0)
49
+ multipart-post (1.2.0)
50
+ optional (0.0.7)
51
+ rest-client (1.6.7)
52
+ mime-types (>= 1.16)
53
+ rspec (2.14.1)
54
+ rspec-core (~> 2.14.0)
55
+ rspec-expectations (~> 2.14.0)
56
+ rspec-mocks (~> 2.14.0)
57
+ rspec-core (2.14.5)
58
+ rspec-expectations (2.14.3)
59
+ diff-lcs (>= 1.1.3, < 2.0)
60
+ rspec-mocks (2.14.3)
61
+ safe_yaml (0.9.7)
62
+ simplecov (0.7.1)
63
+ multi_json (~> 1.0)
64
+ simplecov-html (~> 0.7.1)
65
+ simplecov-html (0.7.1)
66
+ term-ansicolor (1.2.2)
67
+ tins (~> 0.8)
68
+ thor (0.18.1)
69
+ thread_safe (0.1.3)
70
+ atomic
71
+ tins (0.11.0)
72
+ tzinfo (0.3.37)
73
+ webmock (1.13.0)
74
+ addressable (>= 2.2.7)
75
+ crack (>= 0.3.2)
76
+ yajl-ruby (1.1.0)
77
+
78
+ PLATFORMS
79
+ ruby
80
+
81
+ DEPENDENCIES
82
+ coveralls
83
+ doctors!
84
+ mocha
85
+ rspec
86
+ simplecov
87
+ webmock
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 On The Beach Ltd
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
File without changes
@@ -0,0 +1,24 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'doctors'
3
+ s.version = '0.0.1'
4
+ s.date = '2013-09-30'
5
+ s.summary = "Find GPs using the NHS.uk organisation API"
6
+ s.description = "Client Gem for the NHS.uk organisation API tailored around searching for GP practices."
7
+ s.authors = ["Russell Dunphy"]
8
+ s.email = ['russell.dunphy@nhs.net']
9
+ s.files = `git ls-files`.split($\)
10
+ s.test_files = s.files.grep(%r{^(test|spec|features)/})
11
+ s.require_paths = ["lib"]
12
+ s.homepage = 'http://github.com/nhschoices/doctors'
13
+
14
+ s.add_dependency "id"
15
+ s.add_dependency "yajl-ruby"
16
+ s.add_dependency "faraday"
17
+
18
+ s.add_development_dependency "rspec"
19
+ s.add_development_dependency "mocha"
20
+ s.add_development_dependency "webmock"
21
+ s.add_development_dependency "coveralls"
22
+ s.add_development_dependency "simplecov"
23
+
24
+ end
@@ -0,0 +1,16 @@
1
+ require 'id'
2
+ require 'id/form'
3
+
4
+ require 'yajl'
5
+ require 'faraday'
6
+
7
+ require 'doctors/api/request'
8
+ require 'doctors/api/error'
9
+ require 'doctors/api'
10
+
11
+ require 'doctors/validations'
12
+
13
+ require 'doctors/address'
14
+ require 'doctors/service'
15
+ require 'doctors/practice'
16
+ require 'doctors/search'
@@ -0,0 +1,26 @@
1
+ module Doctors
2
+ class Address
3
+ include Id::Model
4
+ include Enumerable
5
+
6
+ field :line_one, key: 'addressLine1'
7
+ field :line_two, key: 'addressLine2'
8
+ field :line_three, key: 'addressLine3'
9
+ field :city
10
+ field :county
11
+ field :postcode, key: 'postCode'
12
+
13
+ def each(&block)
14
+ lines.each(&block)
15
+ end
16
+
17
+ def lines
18
+ [line_one, line_two, line_three, city, county, postcode].reject(&:blank?)
19
+ end
20
+
21
+ def formatted
22
+ lines.join(', ')
23
+ end
24
+
25
+ end
26
+ end
@@ -0,0 +1,20 @@
1
+ module Doctors
2
+ module API
3
+ extend self
4
+
5
+ def search(criteria)
6
+ Request.new(url, criteria).response.fetch('data')
7
+ end
8
+
9
+ def find(id)
10
+ Request.new("#{url}/#{id}").response.fetch('data')
11
+ end
12
+
13
+ private
14
+
15
+ def url
16
+ 'http://nhs-api.cloudapp.net/api/Organisations'
17
+ end
18
+
19
+ end
20
+ end
@@ -0,0 +1,14 @@
1
+ module Doctors
2
+ module API
3
+ class Error < StandardError
4
+
5
+ def initialize(status, message)
6
+ @status = status
7
+ @message = message
8
+ super "API Error: #{status} - #{message}"
9
+ end
10
+
11
+ attr_reader :status, :message
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,39 @@
1
+ module Doctors
2
+ module API
3
+ class Request
4
+
5
+ def initialize(url, params = {})
6
+ @url = url
7
+ @params = params
8
+ end
9
+
10
+ def response
11
+ status == 200 ? body : error
12
+ end
13
+
14
+ private
15
+
16
+ def status
17
+ request.env[:status]
18
+ end
19
+
20
+ def error
21
+ raise Error.new(status, message)
22
+ end
23
+
24
+ def message
25
+ body.fetch('message')
26
+ end
27
+
28
+ def body
29
+ @body ||= Yajl::Parser.parse(request.env[:body])
30
+ end
31
+
32
+ def request
33
+ @request ||= Faraday.get(url, params)
34
+ end
35
+
36
+ attr_reader :url, :params
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,43 @@
1
+ module Doctors
2
+ class Practice
3
+ include Id::Model
4
+ include Id::Form
5
+
6
+ field :id
7
+ field :code
8
+ field :name
9
+ field :latitude
10
+ field :longitude
11
+ field :distance
12
+ field :gender, default: []
13
+ field :phone, key: 'telephoneNumber'
14
+ field :email, key: 'emailAddress'
15
+ field :patient_count, key: 'numberOfPatients'
16
+ field :accepting_new_patients, key: 'acceptingNewPatients'
17
+ field :online_prescriptions, key: 'onlinePrescriptionOrdering'
18
+ field :pims_url, key: 'pimsUrl'
19
+ field :opens_early, key: 'opensEarly'
20
+ field :opens_weekends, key: 'opensWeekends'
21
+ field :opens_late, key: 'opensLate'
22
+
23
+ has_one :address, type: Address
24
+ has_many :services, type: Service
25
+
26
+ def self.find(id)
27
+ new API.find(id)
28
+ end
29
+
30
+ def to_param
31
+ id
32
+ end
33
+
34
+ def has_female_gps?
35
+ gender.include? 'female'
36
+ end
37
+
38
+ def has_male_gps?
39
+ gender.include? 'male'
40
+ end
41
+
42
+ end
43
+ end
@@ -0,0 +1,22 @@
1
+ module Doctors
2
+ class Search
3
+ include Id::Model
4
+ include Id::Form
5
+ extend Doctors::Validations
6
+
7
+ field :location
8
+ field :offset, default: 0
9
+ field :limit, default: 10
10
+
11
+ validates_presence_of :location
12
+
13
+ def results
14
+ @results ||= API.search(criteria).map(&Practice)
15
+ end
16
+
17
+ def criteria
18
+ { organisationtype: 'GPB', offset: offset, limit: limit }
19
+ end
20
+
21
+ end
22
+ end
@@ -0,0 +1,8 @@
1
+ module Doctors
2
+ class Service
3
+ include Id::Model
4
+
5
+ field :id, key: 'serviceID'
6
+ field :name, key: 'serviceName'
7
+ end
8
+ end
@@ -0,0 +1,14 @@
1
+ require 'delegate'
2
+
3
+ module Doctors
4
+ module Validations
5
+
6
+ delegate :validate, to: :form_object
7
+ delegate :validates, to: :form_object
8
+ delegate :validates!, to: :form_object
9
+ delegate :validates_each, to: :form_object
10
+ delegate :validates_with, to: :form_object
11
+ delegate :validates_presence_of, to: :form_object
12
+ end
13
+ end
14
+
@@ -0,0 +1,14 @@
1
+ HTTP/1.0 404 Not Found
2
+ Cache-Control: max-age=1
3
+ Content-Type: application/json; charset=utf-8
4
+ Expires: Mon, 30 Sep 2013 15:34:45 GMT
5
+ X-Last-Modified: 9/30/2013
6
+ Access-Control-Allow-Origin: *
7
+ Date: Mon, 30 Sep 2013 15:34:44 GMT
8
+ Content-Length: 112
9
+ X-Cache: MISS from localhost
10
+ X-Cache-Lookup: MISS from localhost:3128
11
+ Via: 1.0 localhost (squid/3.1.20)
12
+ Connection: keep-alive
13
+
14
+ {"message":"Resource could not be found","status":404,"uri":"http://nhs-api.cloudapp.net/api/Organisations/zzz"}
@@ -0,0 +1,13 @@
1
+ HTTP/1.0 200 OK
2
+ Cache-Control: max-age=1
3
+ Content-Type: application/json; charset=utf-8
4
+ Expires: Thu, 26 Sep 2013 08:26:39 GMT
5
+ X-Last-Modified: 9/26/2013
6
+ Date: Thu, 26 Sep 2013 08:26:38 GMT
7
+ Content-Length: 676
8
+ X-Cache: MISS from localhost
9
+ X-Cache-Lookup: MISS from localhost:3128
10
+ Via: 1.0 localhost (squid/3.1.20)
11
+ Connection: keep-alive
12
+
13
+ {"data":{"id":12266,"code":null,"name":"Lloydspharmacy","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"Alfreton Primary Care Dev","addressLine2":"Church Street","addressLine3":"","addressLine4":"","city":"Alfreton","county":"","postCode":"DE55 7DW"},"latitude":53.097835540771484,"longitude":-1.3891339302062988,"distance":0.0,"telephoneNumber":"01773 836328","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"numberOfPatients":12345,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"gender":[]},"metadata":{"webTrends":"","logo":""}}
@@ -0,0 +1,14 @@
1
+ HTTP/1.0 200 OK
2
+ Cache-Control: max-age=1
3
+ Content-Type: application/json; charset=utf-8
4
+ Expires: Mon, 30 Sep 2013 15:31:54 GMT
5
+ X-Last-Modified: 9/30/2013
6
+ Access-Control-Allow-Origin: *
7
+ Date: Mon, 30 Sep 2013 15:31:53 GMT
8
+ Content-Length: 33371
9
+ X-Cache: MISS from localhost
10
+ X-Cache-Lookup: MISS from localhost:3128
11
+ Via: 1.0 localhost (squid/3.1.20)
12
+ Connection: keep-alive
13
+
14
+ {"data":[{"id":415,"code":null,"name":"Kingston Hospital NHS Foundation Trust","organisationType":"TRU","organisationSubType":"ACU","address":{"addressLine1":"Galsworthy Road","addressLine2":"","addressLine3":"","addressLine4":"","city":"Kingston Upon Thames","county":"Surrey","postCode":"KT2 7QB"},"latitude":51.41375732421875,"longitude":-0.28446152806282043,"distance":0.0,"telephoneNumber":null,"emailAddress":null,"pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":false,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":12552,"code":null,"name":"118 Pharmacy Ltd","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"9 High Street","addressLine2":"Walsall Wood","addressLine3":"Walsall","addressLine4":"","city":"West Midlands","county":"","postCode":"WS9 9LR"},"latitude":52.625644683837891,"longitude":-1.9334641695022583,"distance":0.0,"telephoneNumber":null,"emailAddress":null,"pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":false,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":7934,"code":null,"name":"1st Pharmacy","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"Fountain Hall","addressLine2":"Fountain Street","addressLine3":"","addressLine4":"","city":"Bradford","county":"","postCode":"BD1 3RA"},"latitude":53.796669006347656,"longitude":-1.7585651874542236,"distance":0.0,"telephoneNumber":"01274 323877","emailAddress":"thepharmacist@1stpharmacy-online.co.uk","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":false,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":7631,"code":null,"name":"212 Pharmacy","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"212 Canterbury Street","addressLine2":"Gillingham","addressLine3":"Kent","addressLine4":"","city":"","county":"","postCode":"ME7 5XL"},"latitude":51.379730224609375,"longitude":0.54775983095169067,"distance":0.0,"telephoneNumber":null,"emailAddress":null,"pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":false,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":560,"code":null,"name":"2gether NHS Foundation Trust","organisationType":"TRU","organisationSubType":"MENH","address":{"addressLine1":"Rikenel","addressLine2":"Montpellier","addressLine3":"","addressLine4":"","city":"Gloucester","county":"Gloucestershire","postCode":"GL1 1LY"},"latitude":51.860332489013672,"longitude":-2.2453432083129883,"distance":0.0,"telephoneNumber":"01452 894000","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":false,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":736,"code":null,"name":"3 Spires Msk Service","organisationType":"TRU","organisationSubType":"IND","address":{"addressLine1":"The Three Spires Medical Practice","addressLine2":"Truro Health Park","addressLine3":"Infirmary Hill","addressLine4":"","city":"Truro","county":"Cornwall","postCode":"TR1 2JA"},"latitude":50.25933837890625,"longitude":-5.0570311546325684,"distance":0.0,"telephoneNumber":null,"emailAddress":null,"pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":false,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":4055,"code":null,"name":"3q Pharmacy","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"3 Queen Street","addressLine2":"Wellingborough","addressLine3":"","addressLine4":"","city":"Northamptonshire","county":"","postCode":"NN8 4RW"},"latitude":52.302921295166016,"longitude":-0.69616812467575073,"distance":0.0,"telephoneNumber":"01933 273373","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":8602,"code":null,"name":"4Court Pharmacy","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"4Court Pharmacy","addressLine2":"Blackburn Service Station","addressLine3":"Whalley Banks","addressLine4":"","city":"Blackburn","county":"","postCode":"BB2 1NT"},"latitude":53.742866516113281,"longitude":-2.4927115440368652,"distance":0.0,"telephoneNumber":"01254 677447","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":10696,"code":null,"name":"4court Pharmacy","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"Heybrook Service Station","addressLine2":"Halifax Road","addressLine3":"","addressLine4":"","city":"Rochdale","county":"","postCode":"OL16 2NT"},"latitude":53.628753662109375,"longitude":-2.1390602588653564,"distance":0.0,"telephoneNumber":"01706 646262","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":562,"code":null,"name":"5 Boroughs Partnership NHS Foundation Trust","organisationType":"TRU","organisationSubType":"MENH","address":{"addressLine1":"Hollins Park Hospital","addressLine2":"Hollins Lane","addressLine3":"Winwick","addressLine4":"","city":"Warrington","county":"Cheshire","postCode":"WA2 8WA"},"latitude":53.427738189697266,"longitude":-2.6094560623168945,"distance":0.0,"telephoneNumber":"01925 664000","emailAddress":"communications@5bp.nhs.uk","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":false,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":7839,"code":null,"name":"7 - 11 Pharmacy","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"84b Berners Street","addressLine2":"Leicester","addressLine3":"","addressLine4":"","city":"","county":"","postCode":"LE2 0FS"},"latitude":52.634033203125,"longitude":-1.1133878231048584,"distance":0.0,"telephoneNumber":"0116 2511333","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":7694,"code":null,"name":"8 Pm Chemist Ltd","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"61 Wolverhampton Street","addressLine2":"Willenhall","addressLine3":"","addressLine4":"","city":"West Midlands","county":"","postCode":"WV13 2NF"},"latitude":52.583396911621094,"longitude":-2.0575013160705566,"distance":0.0,"telephoneNumber":"01902 633310","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":false,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":1635,"code":null,"name":"A Akhtar","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"68 The Strand","addressLine2":"Longton","addressLine3":"Stoke On Trent","addressLine4":"","city":"Staffordshire","county":"","postCode":"ST3 2NR"},"latitude":52.986961364746094,"longitude":-2.1369864940643311,"distance":0.0,"telephoneNumber":"01782 342955","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":9621,"code":null,"name":"A and A Pharmacy Ltd","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"58 Wilmslow Road","addressLine2":"Rusholme","addressLine3":"","addressLine4":"","city":"Manchester","county":"","postCode":"M14 5AL"},"latitude":53.454246520996094,"longitude":-2.2258303165435791,"distance":0.0,"telephoneNumber":"0161 224 8501","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":6859,"code":null,"name":"A G Pharmacy","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"Trinovantion Way","addressLine2":"Braintree","addressLine3":"","addressLine4":"","city":"Essex","county":"","postCode":"CM7 3JN"},"latitude":51.876796722412109,"longitude":0.55978906154632568,"distance":0.0,"telephoneNumber":"01376 345910","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":5457,"code":null,"name":"A Karim's Chuckery Pharmacy","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"7-9 Kinnerley Street","addressLine2":"The Chuckery","addressLine3":"Walsall","addressLine4":"","city":"","county":"","postCode":"WS1 2LD"},"latitude":52.579811096191406,"longitude":-1.97042715549469,"distance":0.0,"telephoneNumber":null,"emailAddress":null,"pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":6917,"code":null,"name":"A Kassam Pharmacy","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"Gales Drive","addressLine2":"Three Bridges","addressLine3":"","addressLine4":"","city":"Crawley","county":"","postCode":"RH10 1QA"},"latitude":51.117099761962891,"longitude":-0.17259332537651062,"distance":0.0,"telephoneNumber":"01293 522919","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":10109,"code":null,"name":"A Moore & Co","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"25E Lowndes Street","addressLine2":"London","addressLine3":"","addressLine4":"","city":"","county":"","postCode":"SW1X 9JF"},"latitude":51.4981803894043,"longitude":-0.15883296728134155,"distance":0.0,"telephoneNumber":"020 7235 5887","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":5789,"code":null,"name":"A R Chemist","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"176-178 Old Kent Road","addressLine2":"","addressLine3":"London","addressLine4":"","city":"","county":"","postCode":"SE1 5TY"},"latitude":51.489742279052734,"longitude":-0.081387676298618317,"distance":0.0,"telephoneNumber":"020 77034097","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":689,"code":null,"name":"A&Z Wounds Limited","organisationType":"TRU","organisationSubType":"IND","address":{"addressLine1":"145-157 St. John Street","addressLine2":"","addressLine3":"","addressLine4":"","city":"London","county":"Greater London","postCode":"EC1V 4PW"},"latitude":51.522468566894531,"longitude":-0.10307652503252029,"distance":0.0,"telephoneNumber":null,"emailAddress":null,"pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":false,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":2159,"code":null,"name":"A.C.Curd","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"55 South Street","addressLine2":"Isleworth","addressLine3":"","addressLine4":"","city":"Middlesex","county":"","postCode":"TW7 7AA"},"latitude":51.468345642089844,"longitude":-0.3284870982170105,"distance":0.0,"telephoneNumber":"020 8560 1770","emailAddress":"r.curd@btconnect.com","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":11660,"code":null,"name":"A.C.Curd","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"570 London Road","addressLine2":"Isleworth","addressLine3":"","addressLine4":"","city":"Middlesex","county":"","postCode":"TW7 4EP"},"latitude":51.473983764648438,"longitude":-0.345560222864151,"distance":0.0,"telephoneNumber":"020 8560 1444","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":7109,"code":null,"name":"A1 Pharmacy","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"491 Radcliffe Road","addressLine2":"Darcy Lever","addressLine3":"Bolton","addressLine4":"","city":"","county":"","postCode":"BL3 1SX"},"latitude":53.570655822753906,"longitude":-2.3955740928649902,"distance":0.0,"telephoneNumber":"01204 363400","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":8849,"code":null,"name":"Aa Beggs","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"Beggs Pharmacy","addressLine2":"32 Pencester Road","addressLine3":"","addressLine4":"","city":"Dover","county":"Kent","postCode":"CT16 1BW"},"latitude":51.126747131347656,"longitude":1.3113867044448853,"distance":0.0,"telephoneNumber":"01304 205406","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":4445,"code":null,"name":"Aa Pharmacy","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"98 Whitmore Way","addressLine2":"Basildon","addressLine3":"","addressLine4":"","city":"Essex","county":"","postCode":"SS14 3JT"},"latitude":51.581619262695313,"longitude":0.48542085289955139,"distance":0.0,"telephoneNumber":"01268 520387","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":false,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":12524,"code":null,"name":"Aah Pharmaceutical","organisationType":"PHA","organisationSubType":"APPPH","address":{"addressLine1":"Unit 9, Glaisdale Parkway","addressLine2":"Bilborough","addressLine3":"Nottingham","addressLine4":"","city":"","county":"","postCode":"NG8 4GA"},"latitude":52.958461761474609,"longitude":-1.2273486852645874,"distance":0.0,"telephoneNumber":"0115 9799147","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":699,"code":null,"name":"Abacus Physiotherapy Ltd","organisationType":"TRU","organisationSubType":"IND","address":{"addressLine1":"Freshney Green Primary Care Centre","addressLine2":"Sorrel Road","addressLine3":"","addressLine4":"","city":"Grimsby","county":"South Humberside","postCode":"DN34 4GB"},"latitude":53.563632965087891,"longitude":-0.11413983255624771,"distance":0.0,"telephoneNumber":null,"emailAddress":null,"pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":false,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":362,"code":null,"name":"Abbey Hospitals","organisationType":"TRU","organisationSubType":"IND","address":{"addressLine1":"22 Wimpole Street","addressLine2":"","addressLine3":"","addressLine4":"","city":"London","county":"Greater London","postCode":"W1G 8LD"},"latitude":51.517814636230469,"longitude":-0.14939318597316742,"distance":0.0,"telephoneNumber":null,"emailAddress":null,"pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":false,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":3404,"code":null,"name":"Abbey Pharmacy","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"","addressLine2":"22 Abbeygate Street","addressLine3":"","addressLine4":"","city":"Bury St Edmunds","county":"","postCode":"IP33 1UN"},"latitude":52.244747161865234,"longitude":0.71423614025115967,"distance":0.0,"telephoneNumber":"01284 754164","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":false,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":7607,"code":null,"name":"Abbey Pharmacy","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"63 Central Avenue","addressLine2":"Beeston","addressLine3":"Nottingham","addressLine4":"","city":"","county":"","postCode":"NG9 2QP"},"latitude":52.932346343994141,"longitude":-1.2203749418258667,"distance":0.0,"telephoneNumber":"0115 9254522","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":7763,"code":null,"name":"Abbey Pharmacy","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"313 Stockbrook Street","addressLine2":"Derby","addressLine3":"","addressLine4":"","city":"","county":"","postCode":"DE22 3WH"},"latitude":52.915847778320313,"longitude":-1.4943113327026367,"distance":0.0,"telephoneNumber":"01332 291353","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":false,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":12207,"code":null,"name":"Abbey Pharmacy","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"45 High Street","addressLine2":"Abbots Langley","addressLine3":"","addressLine4":"","city":"Hertfordshire","county":"","postCode":"WD5 0AA"},"latitude":51.706962585449219,"longitude":-0.41667693853378296,"distance":0.0,"telephoneNumber":"01923 262151","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":11290,"code":null,"name":"Abbey Pharmacy","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"12a Abbey Parade","addressLine2":"Merton High Street","addressLine3":"","addressLine4":"","city":"","county":"","postCode":"SW19 1DG"},"latitude":51.4158821105957,"longitude":-0.18658983707427979,"distance":0.0,"telephoneNumber":"020 85423713","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":310,"code":null,"name":"Abbey Sefton Hospital (University Hospital Aintree)","organisationType":"TRU","organisationSubType":"IND","address":{"addressLine1":"Fazakerley Hospital","addressLine2":"Lower Lane","addressLine3":"","addressLine4":"","city":"Liverpool","county":"Merseyside","postCode":"L9 7AL"},"latitude":53.467876434326172,"longitude":-2.9354164600372314,"distance":0.0,"telephoneNumber":null,"emailAddress":null,"pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":false,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":11816,"code":null,"name":"Abbeydale Pharmacy","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"","addressLine2":"715-717 Abbeydale Road","addressLine3":"","addressLine4":"","city":"SHEFFIELD","county":"","postCode":"S7 2BE"},"latitude":53.3544807434082,"longitude":-1.4861325025558472,"distance":0.0,"telephoneNumber":"0114 255 5242","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":3157,"code":null,"name":"Abbotswood Pharmacy","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"38 Abbotswood","addressLine2":"Yate","addressLine3":"Bristol","addressLine4":"","city":"","county":"","postCode":"BS37 4NG"},"latitude":51.5289421081543,"longitude":-2.4251892566680908,"distance":0.0,"telephoneNumber":"01454 313193","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":false,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":1371,"code":null,"name":"Abbott Pharmacy","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"101 Colney Hatch Lane","addressLine2":"Muswell Hill","addressLine3":"London","addressLine4":"","city":"","county":"","postCode":"N10 1LR"},"latitude":51.598739624023438,"longitude":-0.14899307489395142,"distance":0.0,"telephoneNumber":"020 8883 3960","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":7522,"code":null,"name":"Abbott's Pharmacy","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"","addressLine2":"83 High Street","addressLine3":"","addressLine4":"","city":"Lindfield","county":"","postCode":"RH16 2HN"},"latitude":51.013137817382813,"longitude":-0.082590825855731964,"distance":0.0,"telephoneNumber":"01444 483130","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":2242,"code":null,"name":"Abc Drug Stores Limited","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"75-77","addressLine2":"Stoke Newington Road","addressLine3":"City & Hackney","addressLine4":"","city":"London","county":"","postCode":"N16 8AD"},"latitude":51.553501129150391,"longitude":-0.075821131467819214,"distance":0.0,"telephoneNumber":"020 72410486","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":7366,"code":null,"name":"Abc Drugstore","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"299-303 Battersea Park Rd","addressLine2":"Battersea","addressLine3":"London","addressLine4":"","city":".","county":"","postCode":"SW11 4LX"},"latitude":51.473823547363281,"longitude":-0.15405391156673431,"distance":0.0,"telephoneNumber":"020 7720 4951","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":10032,"code":null,"name":"Abc Drugstore Ltd","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"170-172","addressLine2":"Stamford Hill","addressLine3":"City and Hackney","addressLine4":"","city":"London","county":"","postCode":"N16 6RA"},"latitude":51.572345733642578,"longitude":-0.0735822319984436,"distance":0.0,"telephoneNumber":"020 8800 6166","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":1241,"code":null,"name":"Abc Drugstores","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"216 Belsize Road","addressLine2":"London","addressLine3":"","addressLine4":"","city":"","county":"","postCode":"NW6 4DJ"},"latitude":51.539112091064453,"longitude":-0.18890576064586639,"distance":0.0,"telephoneNumber":"020 73281030","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":2016,"code":null,"name":"ABC Pharmacy","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"117-121 Wandsworth","addressLine2":"Bridge Road","addressLine3":"","addressLine4":"","city":"London","county":"","postCode":"SW6 2TP"},"latitude":51.472610473632813,"longitude":-0.19154074788093567,"distance":0.0,"telephoneNumber":"020 7736 2962","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":2367,"code":null,"name":"Abc Pharmacy","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"520 Roman Road","addressLine2":"Tower Hamlets","addressLine3":"","addressLine4":"","city":"London","county":"","postCode":"E3 5LX"},"latitude":51.532138824462891,"longitude":-0.03490934893488884,"distance":0.0,"telephoneNumber":"020 8980 1473","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":2453,"code":null,"name":"Abc Pharmacy","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"Vancouver Road","addressLine2":"Canada Fields","addressLine3":"","addressLine4":"","city":"Cheshunt","county":"","postCode":"EN10 6FD"},"latitude":51.722713470458984,"longitude":-0.031000234186649323,"distance":0.0,"telephoneNumber":null,"emailAddress":null,"pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":7775,"code":null,"name":"Abc Pharmacy","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"42a Foxley Square","addressLine2":"London","addressLine3":"","addressLine4":"","city":"","county":"","postCode":"SW9 7RY"},"latitude":51.475761413574219,"longitude":-0.10645488649606705,"distance":0.0,"telephoneNumber":"020 75824553","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":8702,"code":null,"name":"Abc Pharmacy","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"13 Camberwell Church St","addressLine2":"London","addressLine3":"","addressLine4":"","city":"","county":"","postCode":"SE5 8TR"},"latitude":51.473709106445313,"longitude":-0.090700335800647736,"distance":0.0,"telephoneNumber":"020 7703 2489","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":8947,"code":null,"name":"Abc Pharmacy","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"151 Peckham High Street","addressLine2":"Peckham","addressLine3":"London","addressLine4":"","city":"","county":"","postCode":"SE15 5SL"},"latitude":51.473331451416016,"longitude":-0.067676790058612823,"distance":0.0,"telephoneNumber":"020 76397166","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":8603,"code":null,"name":"Abc Pharmacy","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"136-138 Stockwell Road","addressLine2":"London","addressLine3":"","addressLine4":"","city":"","county":"","postCode":"SW9 9AR"},"latitude":51.468021392822266,"longitude":-0.12837211787700653,"distance":0.0,"telephoneNumber":"020 77370846","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0},{"id":5267,"code":null,"name":"Abc Pharmacy","organisationType":"PHA","organisationSubType":"COMPH","address":{"addressLine1":"127 Bellenden Road","addressLine2":"Peckham","addressLine3":"London","addressLine4":"","city":"","county":"","postCode":"SE15 4QY"},"latitude":51.467136383056641,"longitude":-0.073697611689567566,"distance":0.0,"telephoneNumber":"020 76396401","emailAddress":"","pimsUrl":"http://www.google.com","openingTimes":[],"languages":[],"numberOfPatients":0,"acceptingNewPatients":true,"onlinePrescriptionOrdering":true,"services":[],"opensEarly":false,"opensWeekends":false,"opensLate":false,"numberOfFemaleGPs":0,"numberOfMaleGPs":0}],"metadata":{"webTrends":"","logo":"","offset":"0","limit":"50","totalCount":"13192","next":"http://nhs-api.cloudapp.net/api/organisations?limit=50&offset=50"}}
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ module Doctors
4
+ describe Address do
5
+
6
+ let (:address) {
7
+ Address.new(
8
+ addressLine1: 'Vantage House',
9
+ addressLine2: '',
10
+ addressLine3: '',
11
+ city: 'Leeds',
12
+ county: 'West Yorkshire',
13
+ postCode: '')
14
+ }
15
+
16
+ it 'can return its non-empty lines' do
17
+ expect(address.lines).to eq ['Vantage House', 'Leeds', "West Yorkshire"]
18
+ end
19
+
20
+ it 'is enumerable over its non-empty lines' do
21
+ expect(address.map(&:upcase)).to eq ['VANTAGE HOUSE', 'LEEDS', 'WEST YORKSHIRE']
22
+ end
23
+
24
+ it 'can format itself with commas' do
25
+ expect(address.formatted).to eq 'Vantage House, Leeds, West Yorkshire'
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ module Doctors
4
+ describe Practice do
5
+
6
+ it "can convert itself to a param (for Rails)" do
7
+ expect(Practice.new(id: 123).to_param).to eq 123
8
+ end
9
+
10
+ it "knows if it has female GPs" do
11
+ expect(Practice.new(gender:['female'])).to have_female_gps
12
+ end
13
+
14
+ it "knows if it doesn't have female GPs" do
15
+ expect(Practice.new(gender:[])).not_to have_female_gps
16
+ end
17
+
18
+ it "knows if it has male GPs" do
19
+ expect(Practice.new(gender:['male'])).to have_male_gps
20
+ end
21
+
22
+ it "knows if it doesn't have male GPs" do
23
+ expect(Practice.new(gender:[])).not_to have_male_gps
24
+ end
25
+
26
+ describe ".find" do
27
+ it 'retrieves a specific practice by id' do
28
+ stub_request(:get, "http://nhs-api.cloudapp.net/api/Organisations/415").to_return(Fixtures.practice)
29
+ expect(Practice.find(415)).to be_a Practice
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ module Doctors
4
+ describe Search do
5
+
6
+ let (:search) { Search.new(location: 'NR1') }
7
+
8
+ it 'performs a practice search' do
9
+ stub_request(:get, "http://nhs-api.cloudapp.net/api/Organisations?limit=10&offset=0&organisationtype=GPB").to_return(Fixtures.practices)
10
+ expect(search.results).to have_at_least(1).item
11
+ search.results.each { |result| expect(result).to be_a Practice }
12
+ end
13
+
14
+ it 'raises an API::Error on a non-200 response' do
15
+ stub_request(:get, "http://nhs-api.cloudapp.net/api/Organisations?limit=10&offset=0&organisationtype=GPB").to_return(Fixtures.not_found)
16
+ expect { search.results }.to raise_error API::Error
17
+ end
18
+
19
+ end
20
+ end
@@ -0,0 +1,19 @@
1
+ require 'rspec'
2
+ require 'simplecov'
3
+ require 'coveralls'
4
+
5
+ SimpleCov.start do
6
+ add_filter 'spec'
7
+ end
8
+
9
+ require 'doctors'
10
+
11
+ RSpec.configure do |c|
12
+ c.order = :rand
13
+ c.mock_with :mocha
14
+ end
15
+
16
+ require 'spec/support/fixtures'
17
+
18
+ require 'webmock/rspec'
19
+ WebMock.disable_net_connect!(allow_localhost: true)
@@ -0,0 +1,8 @@
1
+ module Fixtures
2
+ extend self
3
+
4
+ def method_missing(name, *args, &block)
5
+ File.read "spec/fixtures/#{name}.json"
6
+ end
7
+
8
+ end
metadata ADDED
@@ -0,0 +1,191 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: doctors
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Russell Dunphy
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-09-30 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: id
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: yajl-ruby
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: faraday
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: mocha
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: webmock
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: coveralls
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: simplecov
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ description: Client Gem for the NHS.uk organisation API tailored around searching
126
+ for GP practices.
127
+ email:
128
+ - russell.dunphy@nhs.net
129
+ executables: []
130
+ extensions: []
131
+ extra_rdoc_files: []
132
+ files:
133
+ - .gitignore
134
+ - .rspec
135
+ - .rubocop.yml
136
+ - .ruby-version
137
+ - .travis.yml
138
+ - Gemfile
139
+ - Gemfile.lock
140
+ - LICENSE.md
141
+ - README.md
142
+ - doctors.gemspec
143
+ - lib/doctors.rb
144
+ - lib/doctors/address.rb
145
+ - lib/doctors/api.rb
146
+ - lib/doctors/api/error.rb
147
+ - lib/doctors/api/request.rb
148
+ - lib/doctors/practice.rb
149
+ - lib/doctors/search.rb
150
+ - lib/doctors/service.rb
151
+ - lib/doctors/validations.rb
152
+ - spec/fixtures/not_found.json
153
+ - spec/fixtures/practice.json
154
+ - spec/fixtures/practices.json
155
+ - spec/lib/doctors/address_spec.rb
156
+ - spec/lib/doctors/practice_spec.rb
157
+ - spec/lib/doctors/search_spec.rb
158
+ - spec/spec_helper.rb
159
+ - spec/support/fixtures.rb
160
+ homepage: http://github.com/nhschoices/doctors
161
+ licenses: []
162
+ metadata: {}
163
+ post_install_message:
164
+ rdoc_options: []
165
+ require_paths:
166
+ - lib
167
+ required_ruby_version: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - '>='
170
+ - !ruby/object:Gem::Version
171
+ version: '0'
172
+ required_rubygems_version: !ruby/object:Gem::Requirement
173
+ requirements:
174
+ - - '>='
175
+ - !ruby/object:Gem::Version
176
+ version: '0'
177
+ requirements: []
178
+ rubyforge_project:
179
+ rubygems_version: 2.0.3
180
+ signing_key:
181
+ specification_version: 4
182
+ summary: Find GPs using the NHS.uk organisation API
183
+ test_files:
184
+ - spec/fixtures/not_found.json
185
+ - spec/fixtures/practice.json
186
+ - spec/fixtures/practices.json
187
+ - spec/lib/doctors/address_spec.rb
188
+ - spec/lib/doctors/practice_spec.rb
189
+ - spec/lib/doctors/search_spec.rb
190
+ - spec/spec_helper.rb
191
+ - spec/support/fixtures.rb