health_seven 0.0.2 → 0.0.3
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/health_seven.gemspec +1 -4
- data/lib/health_seven/message.rb +36 -5
- data/spec/admit_message_spec.rb +7 -1
- data/spec/diagnoses_message_spec.rb +0 -1
- data/spec/messages/disordered_admit.hl7 +12 -0
- data/spec/oru_message_spec.rb +0 -1
- metadata +3 -2
data/health_seven.gemspec
CHANGED
@@ -1,9 +1,6 @@
|
|
1
|
-
# Version numbering: http://wiki.github.com/sandal/prawn/development-roadmap
|
2
|
-
HEALTH_SEVEN_VERSION = "0.0.2"
|
3
|
-
|
4
1
|
Gem::Specification.new do |spec|
|
5
2
|
spec.name = "health_seven"
|
6
|
-
spec.version =
|
3
|
+
spec.version = "0.0.3"
|
7
4
|
spec.platform = Gem::Platform::RUBY
|
8
5
|
spec.summary = "Ruby library for hl7 2.x"
|
9
6
|
spec.files = Dir.glob("{lib,spec}/**/**/*") +
|
data/lib/health_seven/message.rb
CHANGED
@@ -48,7 +48,7 @@ module HealthSeven
|
|
48
48
|
gramar.push <<-RULE
|
49
49
|
|
50
50
|
rule #{self.rule_name}
|
51
|
-
|
51
|
+
#{seg_name} payload delim #{_children_enum.join(" ")} <HealthSeven::SegmentLiteral>
|
52
52
|
end
|
53
53
|
RULE
|
54
54
|
|
@@ -75,24 +75,52 @@ module HealthSeven
|
|
75
75
|
end
|
76
76
|
end
|
77
77
|
end
|
78
|
+
|
78
79
|
class MessageDef < SegmentDef
|
80
|
+
def _children_enum
|
81
|
+
@segments.map do |s|
|
82
|
+
s.dsl_off!
|
83
|
+
s.rule_name
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def optional
|
88
|
+
@optional ||= @segments.map do |s|
|
89
|
+
s.rule_name if s.optional?
|
90
|
+
end.compact
|
91
|
+
end
|
92
|
+
|
93
|
+
def required
|
94
|
+
@reqired ||= @segments.map do |s|
|
95
|
+
s.rule_name unless s.optional?
|
96
|
+
end.compact
|
97
|
+
end
|
98
|
+
|
79
99
|
def to_gramar(gramar)
|
80
100
|
gramar.push <<-RULE
|
81
101
|
|
82
102
|
rule message
|
83
|
-
|
103
|
+
msh segment* "\\n" <HealthSeven::SegmentLiteral>
|
104
|
+
end
|
105
|
+
|
106
|
+
rule segment
|
107
|
+
#{_children_enum.join(" / ")}
|
84
108
|
end
|
85
109
|
|
86
110
|
rule delim
|
87
|
-
"#{13.chr}"
|
111
|
+
"#{13.chr}"
|
88
112
|
end
|
89
113
|
|
90
114
|
rule not_delim
|
91
|
-
|
115
|
+
[^#{13.chr}]
|
92
116
|
end
|
93
117
|
|
94
118
|
rule payload
|
95
|
-
|
119
|
+
not_delim+ <HealthSeven::FieldsLiteral>
|
120
|
+
end
|
121
|
+
|
122
|
+
rule msh
|
123
|
+
'MSH' payload delim <HealthSeven::SegmentLiteral>
|
96
124
|
end
|
97
125
|
RULE
|
98
126
|
|
@@ -181,7 +209,9 @@ module HealthSeven
|
|
181
209
|
raise HealthSeven::BadGrammarException, message
|
182
210
|
end
|
183
211
|
msg = Message.new
|
212
|
+
@required_segments = Object.const_get("#{self.name}").message_def.required
|
184
213
|
self.clean_tree(ast_tree, msg)
|
214
|
+
raise "No required segment(s) found: #{@required_segments.join(', ')}" unless @required_segments.empty?
|
185
215
|
|
186
216
|
msg
|
187
217
|
end
|
@@ -193,6 +223,7 @@ module HealthSeven
|
|
193
223
|
|
194
224
|
segment.name = node.name
|
195
225
|
segment.fields = node.fields
|
226
|
+
@required_segments.delete(node.name.downcase)
|
196
227
|
|
197
228
|
return true unless node.elements
|
198
229
|
node.elements.each do |e|
|
data/spec/admit_message_spec.rb
CHANGED
@@ -3,7 +3,6 @@ require 'spec_helper'
|
|
3
3
|
describe HealthSeven::Message do
|
4
4
|
class AdmitMessage < HealthSeven::Message
|
5
5
|
define_message do
|
6
|
-
msh
|
7
6
|
evn
|
8
7
|
pid
|
9
8
|
nk1
|
@@ -38,4 +37,11 @@ describe HealthSeven::Message do
|
|
38
37
|
error.message.should =~ 'IN2'
|
39
38
|
end
|
40
39
|
end
|
40
|
+
|
41
|
+
it 'should not raise an exception in case of incorrect order of top level segments' do
|
42
|
+
-> {
|
43
|
+
msg = AdmitMessage.parse(load_message('disordered_admit'))
|
44
|
+
}.should_not raise_error
|
45
|
+
|
46
|
+
end
|
41
47
|
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
MSH|^~\&|MS4ADT|001|UST|001|20090123204848||ADT^A04|00000000008186657|P|2.3
|
2
|
+
PID|1|111111122^^^MS4^PN^|11-22-33^^^MS4^MR^001|11-22-33^^^MS4^MR^001|SMITH^LIDA^^^||19670101|F||P|9166 NEW-YORK CANYON^(OAKVIEW CONV)^NEW-YORK^CA^91042^^^||(111)111-2222|| 31|W|OTH|00016604787^^^MS4001^AN^001|000-00-0000
|
3
|
+
EVN|A04|20090123204846|||NURSE
|
4
|
+
NK1|1|IVANOV^JOHN^^^|J|7903 HELLSTREET^^NEW-YORK^CA^91040^^|(222)222-3333||S||||||UNKNOWN|S|F||||||||||NON||||||||202244189^^^MS4^PN^||C|| 1
|
5
|
+
PV1||I|ICU5^T589^ A^001^OCCPD|1|||20131^PARTAMIAN^LEON^N^^^MD^^^^^^^|||MED||||7||||I||0401|3||||||||||||||||||001|OCCPD||||200901192300||46141.20|46141.20
|
6
|
+
AL1|1|FA|NONE^NONE^^^^|||
|
7
|
+
GT1|1|111111122^^^MS4^PN^|SMITH^LIDA^^^|IVANOV^JOHN^^^|9166 NEW-YORK CANYON^(OAKVIEW CONV)^NEW-YORK^CA^91042^^|(111)111-2222||19670101|F||A|000-00-0000||||RETIRED|^^^^00000||||||||||||07496|W||||||||Y|||OTH||||||||RETIRED||||||P
|
8
|
+
IN1|1||0401|MEDICARE I/P|^^^^ |||||||19990201|||MCR|SMITH^LIDA^^^|A|19670101|9166 NEW-YORK CANYON^(OAKVIEW CONV)^NEW-YORK^CA^91042^^^^|||1||||||||||||||000000008M|||||||F|^^^^00000|Y||||111111122
|
9
|
+
IN2||000000008|07496^RETIRED|||000000008M||||||||||||||||||||||||||||||Y|||OTH||||W|||RETIRED|||||||||||||||||(111)111-2222||||||||P
|
10
|
+
IN1|2||0304|MEDI-CAL SECONDARY|P.O. BOX 15600^^NEW-YORK^CA^95891-1600|||||||19940501|||MCD|SMITH^LIDA^^^|A|19670101|9166 NEW-YORK CANYON^(OAKVIEW CONV)^NEW-YORK^CA^91042^^^^|||2||||||||||||||00000000000000|||||||F|^^^^00000|N||||111111122
|
11
|
+
IN2||000000000|07496^RETIRED|||||00000000000000||||||||||||||||||||||||||||Y|||OTH||||W|||RETIRED|||||||||||||||||(111)111-2222||||||||P
|
12
|
+
ZBC|16000087|TELPC01 |TELLABEL
|
data/spec/oru_message_spec.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: health_seven
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.3
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Nikolay Ryzhikov
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-01-
|
13
|
+
date: 2013-01-21 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
type: :runtime
|
@@ -40,6 +40,7 @@ files:
|
|
40
40
|
- lib/health_seven.rb
|
41
41
|
- spec/messages/corrupt_admit.hl7
|
42
42
|
- spec/messages/admit.hl7
|
43
|
+
- spec/messages/disordered_admit.hl7
|
43
44
|
- spec/messages/diagnoses.hl7
|
44
45
|
- spec/messages/oru_r01.hl7
|
45
46
|
- spec/diagnoses_message_spec.rb
|