doctors 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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