lifen_fhir 0.4.1 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -1
- data/Gemfile.lock +50 -1
- data/Guardfile +5 -0
- data/README.md +3 -1
- data/lib/lifen_fhir/address.rb +5 -5
- data/lib/lifen_fhir/base.rb +10 -0
- data/lib/lifen_fhir/binary.rb +2 -18
- data/lib/lifen_fhir/category.rb +6 -0
- data/lib/lifen_fhir/channel.rb +11 -3
- data/lib/lifen_fhir/communication_request.rb +14 -15
- data/lib/lifen_fhir/element.rb +37 -0
- data/lib/lifen_fhir/medium.rb +1 -3
- data/lib/lifen_fhir/patient.rb +11 -19
- data/lib/lifen_fhir/practitioner.rb +5 -36
- data/lib/lifen_fhir/telecom.rb +23 -0
- data/lib/lifen_fhir/version.rb +1 -1
- data/lib/lifen_fhir.rb +14 -1
- data/lifen_fhir.gemspec +4 -0
- data/spec/binary_spec.rb +7 -7
- data/spec/cassettes/communication_request/find_by_uuid/valid_uuid_with_no_status.yml +1 -1
- data/spec/cassettes/communication_request/send/unknown_binary.yml +62 -0
- data/spec/cassettes/communication_request/send/unknown_recipient.yml +63 -0
- data/spec/cassettes/patient/create/invalid_attributes.yml +63 -0
- data/spec/cassettes/patient/create/with_all_information.yml +1 -1
- data/spec/cassettes/patient/create/with_first_name_as_a_string.yml +65 -0
- data/spec/cassettes/practitioner/create_channel/address/invalid_attributes.yml +62 -0
- data/spec/cassettes/{practitionner → practitioner}/create_channel/address/old_valid_attributes.yml +0 -0
- data/spec/cassettes/{practitionner → practitioner}/create_channel/address/valid_attributes.yml +0 -0
- data/spec/cassettes/practitioner/create_channel/telecom/invalid_attributes.yml +62 -0
- data/spec/cassettes/{practitionner → practitioner}/create_channel/telecom/valid_attributes.yml +0 -0
- data/spec/cassettes/{practitionner → practitioner}/find_by_rpps/existing_rpps.yml +0 -0
- data/spec/cassettes/{practitionner → practitioner}/find_by_rpps/missing_line_attribute.yml +0 -0
- data/spec/cassettes/{practitionner → practitioner}/find_by_rpps/wrong_rpps.yml +0 -0
- data/spec/communication_request_spec.rb +105 -62
- data/spec/patient_spec.rb +53 -12
- data/spec/practitioner_spec.rb +105 -0
- data/spec/reference_spec.rb +29 -8
- data/spec/spec_helper.rb +10 -0
- metadata +73 -17
- data/lib/lifen_fhir/reference.rb +0 -23
- data/spec/practitionner_spec.rb +0 -76
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 444903207c6344dafb7a9fc38f6bec501fa136c4
|
4
|
+
data.tar.gz: 823d8c0d7bd31e27c15f6d39cc31ebdf8d2ecd35
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4bc7ee300eb9427f5100c08e996e406d2d14a4235b8e4340543c065c727a656dae4c610e731e174f532fe8bbbd67a9eb4f8605598ec2b3a14b4a81952f929001
|
7
|
+
data.tar.gz: c6a2b3e3baf246bc3494e1e7feff523b14563f31a325bfe8a743e6d391ea5912626c0a2a85bfcad28a90301c89efc7b844d53dfbaaaf900e65ed5636e68fa5bb
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
lifen_fhir (0.4.
|
4
|
+
lifen_fhir (0.4.2)
|
5
5
|
faraday (>= 0.9)
|
6
6
|
inflecto
|
7
7
|
virtus (>= 1.0)
|
@@ -16,6 +16,7 @@ GEM
|
|
16
16
|
descendants_tracker (~> 0.0.4)
|
17
17
|
ice_nine (~> 0.11.0)
|
18
18
|
thread_safe (~> 0.3, >= 0.3.1)
|
19
|
+
coderay (1.1.1)
|
19
20
|
coercible (1.0.0)
|
20
21
|
descendants_tracker (~> 0.0.1)
|
21
22
|
crack (0.4.3)
|
@@ -23,15 +24,51 @@ GEM
|
|
23
24
|
descendants_tracker (0.0.4)
|
24
25
|
thread_safe (~> 0.3, >= 0.3.1)
|
25
26
|
diff-lcs (1.3)
|
27
|
+
docile (1.1.5)
|
26
28
|
equalizer (0.0.11)
|
27
29
|
faraday (0.12.1)
|
28
30
|
multipart-post (>= 1.2, < 3)
|
31
|
+
ffi (1.9.18)
|
32
|
+
formatador (0.2.5)
|
33
|
+
guard (2.14.1)
|
34
|
+
formatador (>= 0.2.4)
|
35
|
+
listen (>= 2.7, < 4.0)
|
36
|
+
lumberjack (~> 1.0)
|
37
|
+
nenv (~> 0.1)
|
38
|
+
notiffany (~> 0.0)
|
39
|
+
pry (>= 0.9.12)
|
40
|
+
shellany (~> 0.0)
|
41
|
+
thor (>= 0.18.1)
|
42
|
+
guard-compat (1.2.1)
|
43
|
+
guard-rspec (4.7.3)
|
44
|
+
guard (~> 2.1)
|
45
|
+
guard-compat (~> 1.1)
|
46
|
+
rspec (>= 2.99.0, < 4.0)
|
29
47
|
hashdiff (0.3.4)
|
30
48
|
ice_nine (0.11.2)
|
31
49
|
inflecto (0.0.2)
|
50
|
+
json (2.0.3)
|
51
|
+
listen (3.1.5)
|
52
|
+
rb-fsevent (~> 0.9, >= 0.9.4)
|
53
|
+
rb-inotify (~> 0.9, >= 0.9.7)
|
54
|
+
ruby_dep (~> 1.2)
|
55
|
+
lumberjack (1.0.11)
|
56
|
+
method_source (0.8.2)
|
32
57
|
multipart-post (2.0.0)
|
58
|
+
nenv (0.3.0)
|
59
|
+
notiffany (0.1.1)
|
60
|
+
nenv (~> 0.1)
|
61
|
+
shellany (~> 0.0)
|
62
|
+
pry (0.10.4)
|
63
|
+
coderay (~> 1.1.0)
|
64
|
+
method_source (~> 0.8.1)
|
65
|
+
slop (~> 3.4)
|
33
66
|
public_suffix (2.0.5)
|
34
67
|
rake (10.5.0)
|
68
|
+
rb-fsevent (0.9.8)
|
69
|
+
rb-inotify (0.9.8)
|
70
|
+
ffi (>= 0.5.0)
|
71
|
+
rb-readline (0.5.4)
|
35
72
|
rspec (3.6.0)
|
36
73
|
rspec-core (~> 3.6.0)
|
37
74
|
rspec-expectations (~> 3.6.0)
|
@@ -45,7 +82,16 @@ GEM
|
|
45
82
|
diff-lcs (>= 1.2.0, < 2.0)
|
46
83
|
rspec-support (~> 3.6.0)
|
47
84
|
rspec-support (3.6.0)
|
85
|
+
ruby_dep (1.5.0)
|
48
86
|
safe_yaml (1.0.4)
|
87
|
+
shellany (0.0.1)
|
88
|
+
simplecov (0.14.1)
|
89
|
+
docile (~> 1.1.0)
|
90
|
+
json (>= 1.8, < 3)
|
91
|
+
simplecov-html (~> 0.10.0)
|
92
|
+
simplecov-html (0.10.0)
|
93
|
+
slop (3.6.0)
|
94
|
+
thor (0.19.4)
|
49
95
|
thread_safe (0.3.6)
|
50
96
|
vcr (3.0.3)
|
51
97
|
virtus (1.0.5)
|
@@ -64,9 +110,12 @@ PLATFORMS
|
|
64
110
|
DEPENDENCIES
|
65
111
|
awesome_print
|
66
112
|
bundler (~> 1.12)
|
113
|
+
guard-rspec
|
67
114
|
lifen_fhir!
|
68
115
|
rake (~> 10.5)
|
116
|
+
rb-readline
|
69
117
|
rspec (~> 3.5)
|
118
|
+
simplecov
|
70
119
|
vcr (~> 3.0)
|
71
120
|
webmock (~> 1.24)
|
72
121
|
|
data/Guardfile
ADDED
data/README.md
CHANGED
@@ -100,9 +100,11 @@ channel = recipient.create_telecom(type: "telecom", system: "fax", value: "+3310
|
|
100
100
|
```ruby
|
101
101
|
# To create a new patient
|
102
102
|
address = LifenFhir::Address.new(lines: ["39 rue d'Aboukir"], city: "Paris", postal_code: "75002")
|
103
|
+
|
103
104
|
patient = LifenFhir::Patient.create(first_name: ["Jean", "Charles"], last_name: "Dupond", birth_date: Date.new(1974, 12, 25), address: address)
|
105
|
+
patient = LifenFhir::Patient.create(first_name: "Jean", last_name: "Dupond", birth_date: Date.new(1974, 12, 25), address: address)
|
104
106
|
|
105
|
-
# To find a patient
|
107
|
+
# To find a patient
|
106
108
|
patient = LifenFhir::Patient.find_by_uuid("c3f96278-3bfe-4933-96e7-171ebca7489f")
|
107
109
|
|
108
110
|
# To set the patient as a recipient in a CommunicationRequest
|
data/lib/lifen_fhir/address.rb
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
module LifenFhir
|
2
|
-
class Address <
|
3
|
-
|
4
|
-
attribute :uuid, String
|
2
|
+
class Address < Element
|
5
3
|
|
6
4
|
attribute :lines, [String]
|
7
5
|
attribute :postal_code, String
|
8
6
|
attribute :city, String
|
7
|
+
attribute :country, String
|
9
8
|
|
10
9
|
def attributes_from_json(json)
|
11
10
|
self.lines = Array(json.fetch("line"))
|
@@ -17,11 +16,12 @@ module LifenFhir
|
|
17
16
|
self
|
18
17
|
end
|
19
18
|
|
20
|
-
def
|
19
|
+
def fhir_payload
|
21
20
|
{
|
22
21
|
"line": lines,
|
23
22
|
"city": city,
|
24
|
-
"postalCode": postal_code
|
23
|
+
"postalCode": postal_code,
|
24
|
+
"country": country
|
25
25
|
}
|
26
26
|
end
|
27
27
|
|
data/lib/lifen_fhir/base.rb
CHANGED
data/lib/lifen_fhir/binary.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
module LifenFhir
|
2
|
-
class Binary <
|
3
|
-
|
4
|
-
attribute :uuid, String
|
2
|
+
class Binary < Element
|
5
3
|
|
6
4
|
def fhir_payload
|
7
5
|
{
|
@@ -16,24 +14,10 @@ module LifenFhir
|
|
16
14
|
end
|
17
15
|
|
18
16
|
def attributes_from_json(json)
|
19
|
-
|
20
|
-
|
21
|
-
reference = first_binary["contentReference"]["reference"]
|
22
|
-
|
23
|
-
self.uuid = reference.gsub('Binary/', '')
|
24
|
-
|
25
|
-
self
|
17
|
+
super(json["contentReference"])
|
26
18
|
end
|
27
19
|
|
28
20
|
private
|
29
21
|
|
30
|
-
def application_client
|
31
|
-
@application_client ||= AppAuthenticatedClient.new
|
32
|
-
end
|
33
|
-
|
34
|
-
def reference
|
35
|
-
LifenFhir::Reference.new(self).to_s
|
36
|
-
end
|
37
|
-
|
38
22
|
end
|
39
23
|
end
|
data/lib/lifen_fhir/category.rb
CHANGED
data/lib/lifen_fhir/channel.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
module LifenFhir
|
2
|
-
class Channel <
|
2
|
+
class Channel < Element
|
3
3
|
|
4
|
-
attribute :uuid, String
|
5
4
|
attribute :type, String
|
6
5
|
attribute :value, String
|
7
6
|
|
7
|
+
attribute :telecom, LifenFhir::Telecom
|
8
|
+
|
8
9
|
def fhir_payload(user)
|
9
10
|
raise LifenFhir::Error, "Invalid channel: an UUID is required" if !valid?
|
10
11
|
|
@@ -24,7 +25,14 @@ module LifenFhir
|
|
24
25
|
end
|
25
26
|
|
26
27
|
def self.from_json(json, type = nil)
|
27
|
-
|
28
|
+
if type == "telecom"
|
29
|
+
telecom = Telecom.new.attributes_from_json(json)
|
30
|
+
|
31
|
+
new(uuid: telecom.uuid, type: type, value: telecom.value)
|
32
|
+
else
|
33
|
+
|
34
|
+
new(uuid: json["id"], type: type, value: "#{Array(json["line"]).join(", ")}, #{json["postalCode"]} #{json["city"]}")
|
35
|
+
end
|
28
36
|
end
|
29
37
|
|
30
38
|
end
|
@@ -1,11 +1,10 @@
|
|
1
1
|
module LifenFhir
|
2
|
-
class CommunicationRequest <
|
2
|
+
class CommunicationRequest < Element
|
3
3
|
|
4
|
-
attribute :uuid, String
|
5
4
|
attribute :number_communications, Integer
|
6
5
|
|
7
|
-
attribute :sender, LifenFhir::
|
8
|
-
attribute :recipients, [LifenFhir::
|
6
|
+
attribute :sender, LifenFhir::Sender
|
7
|
+
attribute :recipients, [LifenFhir::Recipient]
|
9
8
|
|
10
9
|
attribute :category, LifenFhir::Category, default: LifenFhir::Category.new
|
11
10
|
attribute :medium, [LifenFhir::Medium]
|
@@ -39,7 +38,15 @@ module LifenFhir
|
|
39
38
|
|
40
39
|
self.status = json.fetch("status") { "unknown" }
|
41
40
|
|
42
|
-
self.binary = Binary.new.attributes_from_json(json["payload"])
|
41
|
+
self.binary = Binary.new.attributes_from_json(Array(json["payload"]).first)
|
42
|
+
|
43
|
+
self.category = Category.new.attributes_from_json(Array(json["category"]).first)
|
44
|
+
|
45
|
+
self.sender = Practitioner.new.attributes_from_json(json["sender"])
|
46
|
+
|
47
|
+
self.recipients = Array(json["recipient"]).map do |recipient_json|
|
48
|
+
Practitioner.new.attributes_from_json(recipient_json)
|
49
|
+
end
|
43
50
|
end
|
44
51
|
|
45
52
|
private
|
@@ -48,8 +55,8 @@ module LifenFhir
|
|
48
55
|
|
49
56
|
payload = {
|
50
57
|
resourceType: "CommunicationRequest",
|
51
|
-
sender: [ sender.
|
52
|
-
recipient: recipients.map(&:
|
58
|
+
sender: [ sender.fhir_payload_as_reference ],
|
59
|
+
recipient: recipients.map(&:fhir_payload_as_reference),
|
53
60
|
contained: [],
|
54
61
|
medium: medium.map(&:fhir_payload) ,
|
55
62
|
category: [ category.fhir_payload],
|
@@ -78,13 +85,5 @@ module LifenFhir
|
|
78
85
|
end
|
79
86
|
end
|
80
87
|
|
81
|
-
def application_client
|
82
|
-
@application_client ||= AppAuthenticatedClient.new
|
83
|
-
end
|
84
|
-
|
85
|
-
def self.application_client
|
86
|
-
@application_client ||= AppAuthenticatedClient.new
|
87
|
-
end
|
88
|
-
|
89
88
|
end
|
90
89
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module LifenFhir
|
2
|
+
class Element < Base
|
3
|
+
|
4
|
+
attribute :uuid, String
|
5
|
+
|
6
|
+
def reference
|
7
|
+
"#{resource_type}/#{uuid}"
|
8
|
+
end
|
9
|
+
|
10
|
+
def attributes_from_json(json)
|
11
|
+
self.uuid = extract_uuid(json["reference"])
|
12
|
+
|
13
|
+
self
|
14
|
+
end
|
15
|
+
|
16
|
+
def fhir_payload_as_reference
|
17
|
+
{ reference: reference }
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def extract_uuid(uuid_or_reference)
|
23
|
+
if m = uuid_or_reference.match(/^#(.*)/) # "#1234-abcd-5678'
|
24
|
+
return m[1]
|
25
|
+
elsif m = uuid_or_reference.match(/(.*)\/(.*)/) # "Binary/1234-abcd-5678'
|
26
|
+
return m[2]
|
27
|
+
else
|
28
|
+
return uuid_or_reference
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def resource_type
|
33
|
+
self.class.name.gsub!('LifenFhir::', '')
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
data/lib/lifen_fhir/medium.rb
CHANGED
data/lib/lifen_fhir/patient.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
module LifenFhir
|
2
|
-
class Patient <
|
3
|
-
|
4
|
-
attribute :uuid, String
|
2
|
+
class Patient < Element
|
5
3
|
|
6
4
|
attribute :first_name, [String]
|
7
5
|
attribute :last_name, String
|
@@ -23,16 +21,16 @@ module LifenFhir
|
|
23
21
|
|
24
22
|
def self.find_by_uuid(uuid)
|
25
23
|
patient = new(uuid:uuid)
|
26
|
-
json = application_client.get("fhir/#{LifenFhir::Reference.new(patient)}")
|
27
24
|
|
28
|
-
|
25
|
+
json = application_client.get("fhir/#{patient.reference}")
|
26
|
+
|
29
27
|
patient.attributes_from_json(json)
|
30
28
|
|
31
29
|
patient
|
32
30
|
end
|
33
31
|
|
34
32
|
def fhir_payload
|
35
|
-
{
|
33
|
+
fhir_payload = {
|
36
34
|
id: "patient",
|
37
35
|
resourceType: "Patient",
|
38
36
|
name: [
|
@@ -40,9 +38,10 @@ module LifenFhir
|
|
40
38
|
family: last_name,
|
41
39
|
given: first_name
|
42
40
|
}
|
43
|
-
]
|
44
|
-
birthDate: birth_date.to_s
|
41
|
+
]
|
45
42
|
}
|
43
|
+
fhir_payload[:birthDate] = birth_date.to_s if birth_date
|
44
|
+
fhir_payload
|
46
45
|
end
|
47
46
|
|
48
47
|
def attributes_from_json(json)
|
@@ -72,23 +71,16 @@ module LifenFhir
|
|
72
71
|
|
73
72
|
if address
|
74
73
|
filtered_params["address"] = [
|
75
|
-
address.
|
74
|
+
address.fhir_payload
|
76
75
|
]
|
77
76
|
end
|
78
77
|
|
79
|
-
|
78
|
+
if birth_date
|
79
|
+
filtered_params["birthDate"] = birth_date.to_s
|
80
|
+
end
|
80
81
|
|
81
82
|
filtered_params
|
82
83
|
end
|
83
84
|
|
84
|
-
def application_client
|
85
|
-
@application_client ||= AppAuthenticatedClient.new
|
86
|
-
end
|
87
|
-
|
88
|
-
|
89
|
-
def self.application_client
|
90
|
-
@application_client ||= AppAuthenticatedClient.new
|
91
|
-
end
|
92
|
-
|
93
85
|
end
|
94
86
|
end
|
@@ -1,9 +1,8 @@
|
|
1
1
|
module LifenFhir
|
2
|
-
class Practitioner <
|
2
|
+
class Practitioner < Element
|
3
3
|
|
4
4
|
attribute :channels, [LifenFhir::Channel]
|
5
5
|
|
6
|
-
attribute :uuid, String
|
7
6
|
attribute :last_name, String
|
8
7
|
attribute :first_name, String
|
9
8
|
attribute :rpps, String
|
@@ -37,14 +36,8 @@ module LifenFhir
|
|
37
36
|
def create_address(params)
|
38
37
|
filtered_params = {"resourceType" => "Practitioner"}
|
39
38
|
|
40
|
-
address =
|
41
|
-
|
42
|
-
"city": params[:city],
|
43
|
-
"postalCode": params[:postal_code],
|
44
|
-
"country": params[:country]
|
45
|
-
}
|
46
|
-
|
47
|
-
filtered_params[params[:type]] = address
|
39
|
+
address = Address.new(params)
|
40
|
+
filtered_params[params[:type]] = address.fhir_payload
|
48
41
|
|
49
42
|
json = application_client.post("fhir/#{reference}/$add-address", filtered_params)
|
50
43
|
|
@@ -55,23 +48,11 @@ module LifenFhir
|
|
55
48
|
channel
|
56
49
|
end
|
57
50
|
|
58
|
-
def self.from_json(json)
|
59
|
-
reference = json["reference"]
|
60
|
-
|
61
|
-
uuid = reference.gsub("Practitioner/", "")
|
62
|
-
|
63
|
-
new(uuid: uuid)
|
64
|
-
end
|
65
|
-
|
66
51
|
def create_telecom(params)
|
67
52
|
filtered_params = {"resourceType" => "Practitioner"}
|
68
53
|
|
69
|
-
telecom =
|
70
|
-
|
71
|
-
"value": params[:value]
|
72
|
-
}
|
73
|
-
|
74
|
-
filtered_params[params[:type]] = telecom
|
54
|
+
telecom = Telecom.new(params)
|
55
|
+
filtered_params[params[:type]] = telecom.fhir_payload
|
75
56
|
|
76
57
|
json = application_client.post("fhir/#{reference}/$add-telecom", filtered_params)
|
77
58
|
|
@@ -83,19 +64,7 @@ module LifenFhir
|
|
83
64
|
|
84
65
|
end
|
85
66
|
|
86
|
-
def reference
|
87
|
-
LifenFhir::Reference.new(self).to_s
|
88
|
-
end
|
89
|
-
|
90
67
|
private
|
91
68
|
|
92
|
-
def application_client
|
93
|
-
@application_client ||= AppAuthenticatedClient.new
|
94
|
-
end
|
95
|
-
|
96
|
-
def self.application_client
|
97
|
-
@application_client ||= AppAuthenticatedClient.new
|
98
|
-
end
|
99
|
-
|
100
69
|
end
|
101
70
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module LifenFhir
|
2
|
+
class Telecom < Element
|
3
|
+
|
4
|
+
attribute :system, String
|
5
|
+
attribute :value, String
|
6
|
+
|
7
|
+
def attributes_from_json(json)
|
8
|
+
self.uuid = json.fetch("id")
|
9
|
+
self.system = json.fetch("system")
|
10
|
+
self.value = json.fetch("value")
|
11
|
+
|
12
|
+
self
|
13
|
+
end
|
14
|
+
|
15
|
+
def fhir_payload
|
16
|
+
{
|
17
|
+
"system": system,
|
18
|
+
"value": value
|
19
|
+
}
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
data/lib/lifen_fhir/version.rb
CHANGED
data/lib/lifen_fhir.rb
CHANGED
@@ -5,6 +5,18 @@ module LifenFhir
|
|
5
5
|
require 'inflecto'
|
6
6
|
require 'base64'
|
7
7
|
|
8
|
+
class Recipient < Virtus::Attribute
|
9
|
+
def coerce(value)
|
10
|
+
(value.is_a?(Practitioner) or value.is_a?(Patient) or value.nil?) ? value : raise(Error)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class Sender < Virtus::Attribute
|
15
|
+
def coerce(value)
|
16
|
+
(value.is_a?(Practitioner) or value.nil?) ? value : raise(Error)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
8
20
|
require "lifen_fhir/version"
|
9
21
|
|
10
22
|
require 'lifen_fhir/error'
|
@@ -13,9 +25,10 @@ module LifenFhir
|
|
13
25
|
require 'lifen_fhir/app_authenticated_client'
|
14
26
|
require 'lifen_fhir/configuration'
|
15
27
|
require 'lifen_fhir/base'
|
28
|
+
require 'lifen_fhir/element'
|
16
29
|
|
17
|
-
require 'lifen_fhir/reference'
|
18
30
|
require 'lifen_fhir/address'
|
31
|
+
require 'lifen_fhir/telecom'
|
19
32
|
require 'lifen_fhir/channel'
|
20
33
|
require 'lifen_fhir/practitioner'
|
21
34
|
require 'lifen_fhir/category'
|
data/lifen_fhir.gemspec
CHANGED
@@ -23,6 +23,10 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_development_dependency "vcr", '~> 3.0'
|
24
24
|
spec.add_development_dependency "webmock", '~> 1.24'
|
25
25
|
spec.add_development_dependency "awesome_print"
|
26
|
+
spec.add_development_dependency "simplecov"
|
27
|
+
spec.add_development_dependency "guard-rspec"
|
28
|
+
spec.add_development_dependency "rb-readline"
|
29
|
+
|
26
30
|
|
27
31
|
spec.add_runtime_dependency "virtus", '>= 1.0'
|
28
32
|
spec.add_runtime_dependency "inflecto"
|
data/spec/binary_spec.rb
CHANGED
@@ -2,28 +2,28 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe LifenFhir::Binary do
|
4
4
|
|
5
|
-
describe ':download
|
5
|
+
describe ':download' do
|
6
6
|
|
7
7
|
let(:binary) { LifenFhir::Binary.new(uuid: "valid_binary_id") }
|
8
8
|
|
9
9
|
it 'works' do
|
10
|
-
|
11
10
|
VCR.use_cassette "binary/download/valid" do
|
12
11
|
expect(Digest::MD5.hexdigest(binary.download)).to eq("2285abb032c5e9054a518690b4701ab6")
|
13
12
|
end
|
14
13
|
end
|
15
|
-
end
|
16
|
-
|
17
|
-
describe ':download with right uuid' do
|
18
14
|
|
19
|
-
|
15
|
+
context 'with invalid uuid' do
|
20
16
|
|
21
|
-
|
17
|
+
let(:binary) { LifenFhir::Binary.new(uuid: "wrong-binary-uuid") }
|
22
18
|
|
19
|
+
it 'fails nicely' do
|
23
20
|
VCR.use_cassette "binary/download/invalid" do
|
24
21
|
expect{ binary.download }.to raise_error LifenFhir::Error
|
25
22
|
end
|
26
23
|
end
|
27
24
|
|
28
25
|
end
|
26
|
+
|
29
27
|
end
|
28
|
+
|
29
|
+
end
|