allscripts_unity_client 1.0.3 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md
CHANGED
@@ -20,38 +20,46 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
### Creating clients
|
22
22
|
|
23
|
-
The Allscripts Unity API
|
24
|
-
A Unity API client can be created using the `AllscriptsUnityClient
|
23
|
+
The Allscripts Unity API supports both JSON and SOAP. Both versions are supported by this gem.
|
24
|
+
A Unity API client can be created using the `AllscriptsUnityClient.create` factory:
|
25
25
|
|
26
26
|
```ruby
|
27
|
-
unity_client = AllscriptsUnityClient.create(
|
27
|
+
unity_client = AllscriptsUnityClient.create({
|
28
|
+
:base_unity_url => "http://unity.base.url",
|
29
|
+
:appname => "appname",
|
30
|
+
:username => "username",
|
31
|
+
:password => "password"
|
32
|
+
})
|
28
33
|
```
|
29
34
|
|
30
35
|
A JSON client can also be created using the `:mode` option:
|
31
36
|
|
32
37
|
```ruby
|
33
38
|
# Mode defaults to :soap
|
34
|
-
unity_client = AllscriptsUnityClient.create(
|
39
|
+
unity_client = AllscriptsUnityClient.create({
|
40
|
+
:mode => :json,
|
41
|
+
:base_unity_url => "http://unity.base.url",
|
42
|
+
:appname => "appname",
|
43
|
+
:username => "username",
|
44
|
+
:password => "password"
|
45
|
+
})
|
35
46
|
```
|
36
47
|
|
37
48
|
### Security token management
|
38
49
|
|
39
|
-
|
50
|
+
Security tokens can be manually requested using the `get_security_token!` method:
|
40
51
|
|
41
52
|
```ruby
|
42
|
-
unity_client.security_token
|
53
|
+
unity_client.get_security_token! # Fetches a new security token and stores it in security_token
|
43
54
|
```
|
44
55
|
|
45
|
-
|
46
|
-
|
47
|
-
```ruby
|
48
|
-
unity_client.security_token?
|
49
|
-
```
|
56
|
+
After calling `get_security_token!`, each call to `magic` will automatically send `security_token` with the request. If a security token is
|
57
|
+
no longer valid, an exception will be raised by Unity.
|
50
58
|
|
51
|
-
|
59
|
+
The token can be accessed using the `security_token` accessor:
|
52
60
|
|
53
61
|
```ruby
|
54
|
-
unity_client.
|
62
|
+
unity_client.security_token
|
55
63
|
```
|
56
64
|
|
57
65
|
Security tokens can be retired using the `retire_security_token!` method:
|
@@ -60,8 +68,11 @@ Security tokens can be retired using the `retire_security_token!` method:
|
|
60
68
|
unity_client.retire_security_token! # Retires the security token with Unity and sets security_token to nil
|
61
69
|
```
|
62
70
|
|
63
|
-
|
64
|
-
|
71
|
+
Existence of a security token can also be checked:
|
72
|
+
|
73
|
+
```ruby
|
74
|
+
unity_client.security_token?
|
75
|
+
```
|
65
76
|
|
66
77
|
### Executing Magic calls
|
67
78
|
|
@@ -113,34 +124,129 @@ A number of helper methods exist that abstract away the details of the Magic ope
|
|
113
124
|
|
114
125
|
All magic helper methods not on this list currently raise `NotImplementedError`. More helper methods will be added in future releases. Pull requests welcome.
|
115
126
|
|
116
|
-
|
127
|
+
### Timezone
|
117
128
|
|
118
129
|
All times and dates coming from Unity are in local timezones. When creating the client, the `:timezone` option can be used to configure
|
119
130
|
automatic timezone conversion. If no `:timezone` is given, then it will default to `UTC`. Timezones must be given in `TZInfo` zone identifier
|
120
131
|
format. See [TZInfo](http://tzinfo.github.io/) for more information:
|
121
132
|
|
122
133
|
```ruby
|
123
|
-
unity_client = AllscriptsUnityClient.create(
|
134
|
+
unity_client = AllscriptsUnityClient.create({
|
135
|
+
:timezone => "America/New_York",
|
136
|
+
:base_unity_url => "http://unity.base.url",
|
137
|
+
:appname => "appname",
|
138
|
+
:username => "username",
|
139
|
+
:password => "password"
|
140
|
+
})
|
124
141
|
```
|
125
142
|
|
126
143
|
Any `magic` action that takes in a date needs to be given in UTC. Dates can be `Date`, `DateTime`, `Time`, or a string. Dates will be processed and formatted in the correct
|
127
144
|
[ISO8601](http://en.wikipedia.org/wiki/ISO_8601) format that Unity requires.
|
128
145
|
|
129
|
-
|
146
|
+
### Logging
|
147
|
+
|
148
|
+
By default Ruby's `Logger` is used and logs to `STDOUT` with a level of `Logger::INFO`. Custom loggers can be configured with the `:logger` option:
|
149
|
+
|
150
|
+
```ruby
|
151
|
+
unity_client = AllscriptsUnityClient.create({
|
152
|
+
:base_unity_url => "http://unity.base.url",
|
153
|
+
:appname => "appname",
|
154
|
+
:username => "username",
|
155
|
+
:password => "password",
|
156
|
+
:logger => Rails.logger
|
157
|
+
})
|
158
|
+
```
|
159
|
+
|
160
|
+
Logging can also be disabled with the `:log` option:
|
161
|
+
|
162
|
+
```ruby
|
163
|
+
unity_client = AllscriptsUnityClient.create({
|
164
|
+
:base_unity_url => "http://unity.base.url",
|
165
|
+
:appname => "appname",
|
166
|
+
:username => "username",
|
167
|
+
:password => "password",
|
168
|
+
:log => false
|
169
|
+
})
|
170
|
+
```
|
171
|
+
|
172
|
+
Responses are not logged and Magic action is the only parameter logged with requests. This is done to prevent exposing PHI.
|
130
173
|
|
131
|
-
|
174
|
+
### Proxy
|
175
|
+
|
176
|
+
An HTTP proxy can be configured using the `:proxy` option:
|
132
177
|
|
133
178
|
```ruby
|
134
|
-
unity_client = AllscriptsUnityClient.create(
|
179
|
+
unity_client = AllscriptsUnityClient.create({
|
180
|
+
:base_unity_url => "http://unity.base.url",
|
181
|
+
:appname => "appname",
|
182
|
+
:username => "username",
|
183
|
+
:password => "password",
|
184
|
+
:proxy => "http://localhost:8888"
|
185
|
+
})
|
135
186
|
```
|
136
187
|
|
137
|
-
|
188
|
+
## Examples
|
189
|
+
|
190
|
+
### GetServerInfo SOAP
|
138
191
|
|
139
192
|
```ruby
|
140
|
-
unity_client = AllscriptsUnityClient.create(
|
193
|
+
unity_client = AllscriptsUnityClient.create({
|
194
|
+
:base_unity_url => "http://unity.base.url",
|
195
|
+
:appname => "appname",
|
196
|
+
:username => "username",
|
197
|
+
:password => "password",
|
198
|
+
:timezone => "America/New_York"
|
199
|
+
})
|
200
|
+
|
201
|
+
unity_client.get_security_token!
|
202
|
+
|
203
|
+
# API call made using a helper
|
204
|
+
unity_client.get_server_info
|
141
205
|
```
|
142
206
|
|
143
|
-
|
207
|
+
The above example would output the following `Hash`:
|
208
|
+
|
209
|
+
```
|
210
|
+
{
|
211
|
+
:server_time_zone => "Eastern Standard Time",
|
212
|
+
:server_time => #<DateTime: 2013-11-01T15:49:23+00:00 ((2456598j,56963s,0n),+0s,2299161j)>,
|
213
|
+
:server_date_time_offset => #<DateTime: 2013-11-01T19:49:23+00:00 ((2456598j,71363s,0n),+0s,2299161j)>,
|
214
|
+
:system => "Enterprise EHR",
|
215
|
+
:product_version => "11.2.3.32.000",
|
216
|
+
:uaibornondate => #<Date: 2013-07-10 ((2456484j,0s,0n),+0s,2299161j)>
|
217
|
+
}
|
218
|
+
```
|
219
|
+
|
220
|
+
### GetServerInfo JSON
|
221
|
+
|
222
|
+
```ruby
|
223
|
+
unity_client = AllscriptsUnityClient.create({
|
224
|
+
:mode => :json
|
225
|
+
:base_unity_url => "http://unity.base.url",
|
226
|
+
:appname => "appname",
|
227
|
+
:username => "username",
|
228
|
+
:password => "password",
|
229
|
+
:timezone => "America/New_York"
|
230
|
+
})
|
231
|
+
|
232
|
+
unity_client.get_security_token!
|
233
|
+
|
234
|
+
# API call made using a helper
|
235
|
+
unity_client.get_server_info
|
236
|
+
```
|
237
|
+
|
238
|
+
The above example would output the following `Hash`:
|
239
|
+
|
240
|
+
```
|
241
|
+
{
|
242
|
+
:server_time_zone => "Eastern Standard Time",
|
243
|
+
:server_time => #<DateTime: 2013-11-01T15:49:23+00:00 ((2456598j,56963s,0n),+0s,2299161j)>,
|
244
|
+
:server_date_time_offset => #<DateTime: 2013-11-01T19:49:23+00:00 ((2456598j,71363s,0n),+0s,2299161j)>,
|
245
|
+
:system => "Enterprise EHR",
|
246
|
+
:product_version => "11.2.3.32.000",
|
247
|
+
:uaibornondate => #<Date: 2013-07-10 ((2456484j,0s,0n),+0s,2299161j)>
|
248
|
+
}
|
249
|
+
```
|
144
250
|
|
145
251
|
## Contributing
|
146
252
|
|
@@ -154,7 +260,7 @@ Magic action is the only parameter logged with requests and responses are not lo
|
|
154
260
|
|
155
261
|
Maintainer(s): Ash Gupta (https://github.com/incomethax), Neil Goodman (https://github.com/posco2k8)
|
156
262
|
|
157
|
-
## License
|
263
|
+
## License
|
158
264
|
|
159
265
|
Copyright (c) 2013 healthfinch, Inc
|
160
266
|
|
@@ -27,7 +27,8 @@ Gem::Specification.new do |gem|
|
|
27
27
|
gem.add_runtime_dependency "net-http-persistent", "~> 2.9.0"
|
28
28
|
gem.add_runtime_dependency "tzinfo", "~> 0.3.29"
|
29
29
|
gem.add_runtime_dependency "tzinfo-data", "~> 1.2013.7"
|
30
|
-
gem.add_runtime_dependency "nokogiri", "
|
30
|
+
gem.add_runtime_dependency "nokogiri", "< 1.6", ">= 1.4.0"
|
31
|
+
gem.add_runtime_dependency "nori", "~> 2.3.0"
|
31
32
|
|
32
33
|
gem.add_development_dependency "factory_girl", "~> 4.2.0"
|
33
34
|
gem.add_development_dependency "rake", "~> 10.1.0"
|
@@ -5,15 +5,9 @@ describe 'AllscriptsUnityClient' do
|
|
5
5
|
|
6
6
|
subject { AllscriptsUnityClient }
|
7
7
|
|
8
|
-
let(:get_security_token) { FixtureLoader.load_file("get_security_token.xml") }
|
9
|
-
|
10
|
-
before(:all) { savon.mock! }
|
11
|
-
after(:all) { savon.unmock! }
|
12
|
-
|
13
8
|
describe '.create' do
|
14
9
|
context 'when given :mode => :soap' do
|
15
10
|
it 'returns a SOAPClient' do
|
16
|
-
savon.expects("GetSecurityToken").with(:message => :any).returns(get_security_token)
|
17
11
|
parameters = FactoryGirl.build(:allscripts_unity_client_parameters, :mode => :soap)
|
18
12
|
expect(subject.create(parameters).client_type).to be(:soap)
|
19
13
|
end
|
@@ -21,7 +15,6 @@ describe 'AllscriptsUnityClient' do
|
|
21
15
|
|
22
16
|
context 'when given :mode => :json' do
|
23
17
|
it 'returns a client with client_type :json' do
|
24
|
-
stub_request(:post, "http://www.example.com/Unity/UnityService.svc/json/GetToken")
|
25
18
|
parameters = FactoryGirl.build(:allscripts_unity_client_parameters, :mode => :json)
|
26
19
|
expect(subject.create(parameters).client_type).to be(:json)
|
27
20
|
end
|
@@ -29,7 +22,6 @@ describe 'AllscriptsUnityClient' do
|
|
29
22
|
|
30
23
|
context 'when not given :mode' do
|
31
24
|
it 'returns a client with client_type :soap' do
|
32
|
-
savon.expects("GetSecurityToken").with(:message => :any).returns(get_security_token)
|
33
25
|
parameters = FactoryGirl.build(:allscripts_unity_client_parameters)
|
34
26
|
parameters[:mode] = nil
|
35
27
|
expect(subject.create(parameters).client_type).to be(:soap)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: allscripts_unity_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-
|
13
|
+
date: 2013-11-01 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: savon
|
@@ -94,12 +94,34 @@ dependencies:
|
|
94
94
|
version: 1.2013.7
|
95
95
|
- !ruby/object:Gem::Dependency
|
96
96
|
name: nokogiri
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
98
|
+
none: false
|
99
|
+
requirements:
|
100
|
+
- - <
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '1.6'
|
103
|
+
- - ! '>='
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: 1.4.0
|
106
|
+
type: :runtime
|
107
|
+
prerelease: false
|
108
|
+
version_requirements: !ruby/object:Gem::Requirement
|
109
|
+
none: false
|
110
|
+
requirements:
|
111
|
+
- - <
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: '1.6'
|
114
|
+
- - ! '>='
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: 1.4.0
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
name: nori
|
97
119
|
requirement: !ruby/object:Gem::Requirement
|
98
120
|
none: false
|
99
121
|
requirements:
|
100
122
|
- - ~>
|
101
123
|
- !ruby/object:Gem::Version
|
102
|
-
version:
|
124
|
+
version: 2.3.0
|
103
125
|
type: :runtime
|
104
126
|
prerelease: false
|
105
127
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -107,7 +129,7 @@ dependencies:
|
|
107
129
|
requirements:
|
108
130
|
- - ~>
|
109
131
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
132
|
+
version: 2.3.0
|
111
133
|
- !ruby/object:Gem::Dependency
|
112
134
|
name: factory_girl
|
113
135
|
requirement: !ruby/object:Gem::Requirement
|