roqua-healthy 1.1.9 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ChangeLog.md +4 -0
- data/lib/roqua/healthy/a19/correct_patient_check.rb +2 -2
- data/lib/roqua/healthy/a19/transformer.rb +23 -3
- data/lib/roqua/healthy/version.rb +1 -1
- data/lib/roqua-healthy.rb +1 -1
- data/roqua-healthy.gemspec +2 -2
- data/spec/fixtures/{medo_patient.xml → medoq_patient.xml} +4 -7
- data/spec/integration/medo_spec.rb +6 -4
- metadata +6 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 535dbe075acc71ad6cfb216f74c0459d30076680
|
|
4
|
+
data.tar.gz: d0ca4037f6610614aa35350fc9f7e3ac80f83c4e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 768b8effbda52101455902040e0ba9357778ab73070bf36626ce6f2addf1311dba1c5cf175c104bd894d09fb13cad530fff4602aca8f0b31d4c7e7b37f7295a4
|
|
7
|
+
data.tar.gz: 7559755407e7e2ba44079dd4e89e2b0f8bc2243fcf6d5b7eee88ca5cb9b4297728f8cc0cbe87957c63d7ed631a9862b6b8475e5663c80eb49918935802e6af19
|
data/ChangeLog.md
CHANGED
|
@@ -2,6 +2,7 @@ require 'roqua/healthy/a19/name_parser'
|
|
|
2
2
|
require 'roqua/healthy/a19/cdis_name_parser'
|
|
3
3
|
require 'roqua/healthy/a19/impulse_name_parser'
|
|
4
4
|
require 'roqua/healthy/a19/address_parser'
|
|
5
|
+
require 'active_support/core_ext/hash'
|
|
5
6
|
|
|
6
7
|
module Roqua
|
|
7
8
|
module Healthy
|
|
@@ -35,7 +36,8 @@ module Roqua
|
|
|
35
36
|
country: address.country,
|
|
36
37
|
birthdate: birthdate,
|
|
37
38
|
gender: gender,
|
|
38
|
-
phone_cell: phone_cell
|
|
39
|
+
phone_cell: phone_cell,
|
|
40
|
+
medoq_data: medoq_data
|
|
39
41
|
}
|
|
40
42
|
end
|
|
41
43
|
|
|
@@ -48,12 +50,30 @@ module Roqua
|
|
|
48
50
|
end
|
|
49
51
|
|
|
50
52
|
def identities
|
|
51
|
-
message.fetch('PID').fetch('PID.3').map do |identity|
|
|
53
|
+
@identities ||= message.fetch('PID').fetch('PID.3').map do |identity|
|
|
52
54
|
next if identity.fetch('PID.3.1').blank?
|
|
53
|
-
|
|
55
|
+
authority = identity.fetch('PID.3.5')
|
|
56
|
+
# medoq sends all its (possibly identifying) metadata in 1 json encoded identity
|
|
57
|
+
# non medoq hl7 clients could fake being medoq, so do not add any trusted behavior
|
|
58
|
+
# to medoq identities beyond what a regular hl7 field would enable
|
|
59
|
+
if authority == 'MEDOQ'
|
|
60
|
+
parsed_medoq_data = JSON.parse(identity.fetch('PID.3.1')).with_indifferent_access
|
|
61
|
+
{ident: parsed_medoq_data[:epd_id],
|
|
62
|
+
research_number: parsed_medoq_data[:research_number],
|
|
63
|
+
metadata: parsed_medoq_data[:metadata],
|
|
64
|
+
authority: authority}
|
|
65
|
+
else
|
|
66
|
+
{ident: identity.fetch('PID.3.1'), authority: authority}
|
|
67
|
+
end
|
|
54
68
|
end.compact
|
|
55
69
|
end
|
|
56
70
|
|
|
71
|
+
def medoq_data
|
|
72
|
+
identities.find do |identity|
|
|
73
|
+
identity[:authority] == 'MEDOQ'
|
|
74
|
+
end || {}
|
|
75
|
+
end
|
|
76
|
+
|
|
57
77
|
def birthdate
|
|
58
78
|
birthdate_details = message.fetch('PID').fetch('PID.7')
|
|
59
79
|
birthdate_details.fetch('PID.7.1') if birthdate_details
|
data/lib/roqua-healthy.rb
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require 'roqua/healthy'
|
|
1
|
+
require 'roqua/healthy'
|
data/roqua-healthy.gemspec
CHANGED
|
@@ -8,8 +8,8 @@ Gem::Specification.new do |gem|
|
|
|
8
8
|
gem.summary = %q{Arranges communication between Mirth and RoQua}
|
|
9
9
|
gem.description = %q{Receives queries from RoQua, sends them to Mirth, and translates Mirth's responses back into Rubyland.}
|
|
10
10
|
gem.license = "MIT"
|
|
11
|
-
gem.authors = ["Marten Veldthuis"]
|
|
12
|
-
gem.email = "
|
|
11
|
+
gem.authors = ["Marten Veldthuis", "Jorn van de Beek"]
|
|
12
|
+
gem.email = "support@roqua.nl"
|
|
13
13
|
gem.homepage = "https://github.com/roqua/healthy"
|
|
14
14
|
|
|
15
15
|
gem.files = `git ls-files`.split($/)
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<MSH.1>|</MSH.1>
|
|
5
5
|
<MSH.2>^~\&</MSH.2>
|
|
6
6
|
<MSH.3>
|
|
7
|
-
<MSH.3.1>
|
|
7
|
+
<MSH.3.1>MEDOQ</MSH.3.1>
|
|
8
8
|
</MSH.3>
|
|
9
9
|
<MSH.4>
|
|
10
10
|
<MSH.4.1>RGOC</MSH.4.1>
|
|
@@ -46,12 +46,9 @@
|
|
|
46
46
|
</PID.1>
|
|
47
47
|
<PID.3 type="array">
|
|
48
48
|
<PID.3>
|
|
49
|
-
<PID.3.1>
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
<PID.3>
|
|
53
|
-
<PID.3.1>research-id-123</PID.3.1>
|
|
54
|
-
<PID.3.5>medo-research-number</PID.3.5>
|
|
49
|
+
<PID.3.1>{"research_number":"research-id-123",
|
|
50
|
+
"epd_id":"md-cdae5d100d8e0131d2623c075478eb56", "metadata":{"test":"12"}}</PID.3.1>
|
|
51
|
+
<PID.3.5>MEDOQ</PID.3.5>
|
|
55
52
|
</PID.3>
|
|
56
53
|
</PID.3>
|
|
57
54
|
<PID.5 type="array">
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
# rubocop:disable Blocks,BlockAlignment
|
|
4
|
-
describe 'Fetching A19 from
|
|
4
|
+
describe 'Fetching A19 from Medoq' do
|
|
5
5
|
describe 'a patient' do
|
|
6
|
-
before { load_fixture '
|
|
6
|
+
before { load_fixture 'medoq_patient', 'md-cdae5d100d8e0131d2623c075478eb56' }
|
|
7
7
|
subject { Roqua::Healthy::A19.fetch("md-cdae5d100d8e0131d2623c075478eb56") }
|
|
8
8
|
|
|
9
9
|
it { expect(subject[:status]).to eq('SUCCESS') }
|
|
10
10
|
it { expect(subject[:error]).to be_nil }
|
|
11
11
|
it { expect(subject[:source]).to eq('RGOC') }
|
|
12
|
-
it { expect(subject[:identities]).to eq([{ident:
|
|
13
|
-
|
|
12
|
+
it { expect(subject[:identities]).to eq([{ident: "md-cdae5d100d8e0131d2623c075478eb56",
|
|
13
|
+
research_number: "research-id-123",
|
|
14
|
+
metadata: {"test" => "12"},
|
|
15
|
+
authority: 'MEDOQ'}]) }
|
|
14
16
|
it { expect(subject[:firstname]).to eq('Jan') }
|
|
15
17
|
it { expect(subject[:initials]).to eq('J.') }
|
|
16
18
|
it { expect(subject[:lastname]).to eq('Fictief') }
|
metadata
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: roqua-healthy
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Marten Veldthuis
|
|
8
|
+
- Jorn van de Beek
|
|
8
9
|
autorequire:
|
|
9
10
|
bindir: bin
|
|
10
11
|
cert_chain: []
|
|
11
|
-
date:
|
|
12
|
+
date: 2016-03-22 00:00:00.000000000 Z
|
|
12
13
|
dependencies:
|
|
13
14
|
- !ruby/object:Gem::Dependency
|
|
14
15
|
name: activesupport
|
|
@@ -228,7 +229,7 @@ dependencies:
|
|
|
228
229
|
version: '1.2'
|
|
229
230
|
description: Receives queries from RoQua, sends them to Mirth, and translates Mirth's
|
|
230
231
|
responses back into Rubyland.
|
|
231
|
-
email:
|
|
232
|
+
email: support@roqua.nl
|
|
232
233
|
executables: []
|
|
233
234
|
extensions: []
|
|
234
235
|
extra_rdoc_files: []
|
|
@@ -270,7 +271,7 @@ files:
|
|
|
270
271
|
- spec/fixtures/cdis_missing_address.xml
|
|
271
272
|
- spec/fixtures/cdis_piet_fictief.xml
|
|
272
273
|
- spec/fixtures/comez_patient.xml
|
|
273
|
-
- spec/fixtures/
|
|
274
|
+
- spec/fixtures/medoq_patient.xml
|
|
274
275
|
- spec/fixtures/oru-requests/spsy1218j.hl7
|
|
275
276
|
- spec/fixtures/oru-requests/spsy1218o.hl7
|
|
276
277
|
- spec/fixtures/oru-requests/spsy1218o2.hl7
|
|
@@ -334,7 +335,7 @@ test_files:
|
|
|
334
335
|
- spec/fixtures/cdis_missing_address.xml
|
|
335
336
|
- spec/fixtures/cdis_piet_fictief.xml
|
|
336
337
|
- spec/fixtures/comez_patient.xml
|
|
337
|
-
- spec/fixtures/
|
|
338
|
+
- spec/fixtures/medoq_patient.xml
|
|
338
339
|
- spec/fixtures/oru-requests/spsy1218j.hl7
|
|
339
340
|
- spec/fixtures/oru-requests/spsy1218o.hl7
|
|
340
341
|
- spec/fixtures/oru-requests/spsy1218o2.hl7
|