ruby-hl7 0.3 → 1.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.
Files changed (54) hide show
  1. data/README.rdoc +40 -0
  2. data/lib/ruby-hl7.rb +112 -69
  3. data/lib/segments/err.rb +12 -0
  4. data/lib/segments/evn.rb +1 -1
  5. data/lib/segments/msa.rb +2 -2
  6. data/lib/segments/msh.rb +4 -1
  7. data/lib/segments/nk1.rb +14 -0
  8. data/lib/segments/nte.rb +1 -1
  9. data/lib/segments/obr.rb +6 -4
  10. data/lib/segments/obx.rb +2 -1
  11. data/lib/segments/orc.rb +34 -0
  12. data/lib/segments/oru.rb +1 -1
  13. data/lib/segments/pid.rb +3 -2
  14. data/lib/segments/pv1.rb +1 -1
  15. data/lib/segments/pv2.rb +1 -1
  16. data/lib/segments/qrd.rb +1 -1
  17. data/lib/segments/qrf.rb +1 -1
  18. data/lib/segments/sft.rb +15 -0
  19. data/lib/segments/spm.rb +35 -0
  20. data/lib/string.rb +5 -0
  21. data/lib/test/hl7_messages.rb +309 -0
  22. data/test_data/cerner/cerner_bordetella.hl7 +1 -0
  23. data/test_data/cerner/cerner_en.hl7 +1 -0
  24. data/test_data/cerner/cerner_lead.hl7 +1 -0
  25. data/test_data/cerner/cerner_sequential.hl7 +1 -0
  26. data/test_data/empty-batch.hl7 +1 -0
  27. data/test_data/nist/ORU_R01_2.5.1_SampleTestCase1.er7 +1 -0
  28. data/test_data/nist/ORU_R01_2.5.1_SampleTestCase2.er7 +1 -0
  29. data/test_data/nist/ORU_R01_2.5.1_SampleTestCase3.er7 +1 -0
  30. data/test_data/nist/ORU_R01_2.5.1_SampleTestCase4.er7 +1 -0
  31. data/test_data/nist/ORU_R01_2.5.1_SampleTestCase5.er7 +1 -0
  32. data/test_data/nist/ORU_R01_2.5.1_SampleTestCase6.er7 +1 -0
  33. data/test_data/realm/realm-animal-rabies.hl7 +1 -0
  34. data/test_data/realm/realm-bad-batch.hl7 +1 -0
  35. data/test_data/realm/realm-batch.hl7 +1 -0
  36. data/test_data/realm/realm-campylobacter-jejuni.hl7 +1 -0
  37. data/test_data/realm/realm-cj-badloinc.hl7 +1 -0
  38. data/test_data/realm/realm-cj-joeslab.hl7 +1 -0
  39. data/test_data/realm/realm-cj.hl7 +1 -0
  40. data/test_data/realm/realm-err.hl7 +1 -0
  41. data/test_data/realm/realm-hepatitis-c-virus.hl7 +1 -0
  42. data/test_data/realm/realm-lead-laboratory-result.hl7 +2 -0
  43. data/test_data/realm/realm-minimal-message.hl7 +1 -0
  44. metadata +85 -39
  45. data/README +0 -24
  46. data/test/test_basic_parsing.rb +0 -337
  47. data/test/test_child_segment.rb +0 -54
  48. data/test/test_default_segment.rb +0 -31
  49. data/test/test_dynamic_segment_def.rb +0 -42
  50. data/test/test_msa_segment.rb +0 -27
  51. data/test/test_obr_segment.rb +0 -29
  52. data/test/test_obx_segment.rb +0 -27
  53. data/test/test_pid_segment.rb +0 -28
  54. data/test/test_speed_parsing.rb +0 -19
@@ -0,0 +1 @@
1
+ MSH|^~\&|HealthSentry^HealthSentry^L|Baseline West MC^33D1234567^L|VISN_OUT^VISN_OUT^L|VISN_OUT^VISN_OUT^L|201011041640||ORU^R01^ORU_R01|201010010913000771|P|2.5.1|||||||||PHLabReport-NoAck^^2.16.840.1.114222.4.10.3^ISO
@@ -0,0 +1 @@
1
+ MSH|^~\&|HealthSentry^HealthSentry^L|Baseline West MC^33D1234567^L|VISN_OUT^VISN_OUT^L|VISN_OUT^VISN_OUT^L|201011041640||ORU^R01^ORU_R01|201010010913000771|P|2.5.1|||||||||PHLabReport-NoAck^^2.16.840.1.114222.4.10.3^ISO
@@ -0,0 +1 @@
1
+ MSH|^~\&|HealthSentry^HealthSentry^L|Baseline West MC^33D1234567^L|VISN_OUT^VISN_OUT^L|VISN_OUT^VISN_OUT^L|201010010913||ORU^R01^ORU_R01|201010010913000772|P|2.5.1|||||||||PHLabReport-NoAck^^2.16.840.1.114222.4.10.3^ISO
@@ -0,0 +1 @@
1
+ MSH|^~\&|HealthSentry^HealthSentry^L|Baseline West MC^33D1234567^L|VISN_OUT^VISN_OUT^L|VISN_OUT^VISN_OUT^L|201011041640||ORU^R01^ORU_R01|201010010913000771|P|2.5.1|||||||||PHLabReport-NoAck^^2.16.840.1.114222.4.10.3^ISO
@@ -0,0 +1 @@
1
+ FHS|^~\&||Lab1^2.16.840.1.113883.19.3.1^ISO||SPH^2.16.840.1.113883.19.3.2^ISO|20080723123558-0400
@@ -0,0 +1 @@
1
+ MSH|^~\&|EHR Application^2.16.840.1.113883.3.72.7.1^HL7|EHR Facility^2.16.840.1.113883.3.72.7.2^HL7|PH Application^2.16.840.1.113883.3.72.7.3^HL7|PH Facility^2.16.840.1.113883.3.72.7.4^HL7|20100929110702||ORU^R01^ORU_R01|NIST-100929110701660|P|2.5.1|||||||||PHLabReport-NoAck^^2.16.840.1.114222.4.10.3^ISO
@@ -0,0 +1 @@
1
+ MSH|^~\&|EHR Application^2.16.840.1.113883.3.72.7.1^HL7|EHR Facility^2.16.840.1.113883.3.72.7.2^HL7|PH Application^2.16.840.1.113883.3.72.7.3^HL7|PH Facility^2.16.840.1.113883.3.72.7.4^HL7|20100929110745||ORU^R01^ORU_R01|NIST-100929110745131|P|2.5.1|||||||||PHLabReport-Ack^^2.16.840.1.114222.4.10.3^ISO
@@ -0,0 +1 @@
1
+ MSH|^~\&|EHR Application^2.16.840.1.113883.3.72.7.1^HL7|EHR Facility^2.16.840.1.113883.3.72.7.2^HL7|PH Application^2.16.840.1.113883.3.72.7.3^HL7|PH Facility^2.16.840.1.113883.3.72.7.4^HL7|20100929110828||ORU^R01^ORU_R01|NIST-100929110828087|P|2.5.1|||||||||PHLabReport-Ack^^2.16.840.1.114222.4.10.3^ISO
@@ -0,0 +1 @@
1
+ MSH|^~\&|EHR Application^2.16.840.1.113883.3.72.7.1^HL7|EHR Facility^2.16.840.1.113883.3.72.7.2^HL7|PH Application^2.16.840.1.113883.3.72.7.3^HL7|PH Facility^2.16.840.1.113883.3.72.7.4^HL7|20100929110904||ORU^R01^ORU_R01|NIST-100929110904401|P|2.5.1|||||||||PHLabReport-Ack^^2.16.840.1.114222.4.10.3^ISO
@@ -0,0 +1 @@
1
+ MSH|^~\&|EHR Application^2.16.840.1.113883.3.72.7.1^HL7|EHR Facility^2.16.840.1.113883.3.72.7.2^HL7|PH Application^2.16.840.1.113883.3.72.7.3^HL7|PH Facility^2.16.840.1.113883.3.72.7.4^HL7|20100929110939||ORU^R01^ORU_R01|NIST-100929110939497|P|2.5.1|||||||||PHLabReport-NoAck^^2.16.840.1.114222.4.10.3^ISO
@@ -0,0 +1 @@
1
+ MSH|^~\&|EHR Application^2.16.840.1.113883.3.72.7.1^HL7|EHR Facility^2.16.840.1.113883.3.72.7.2^HL7|PH Application^2.16.840.1.113883.3.72.7.3^HL7|PH Facility^2.16.840.1.113883.3.72.7.4^HL7|20100929111016||ORU^R01^ORU_R01|NIST-100929111015653|P|2.5.1|||||||||PHLabReport-Ack^^2.16.840.1.114222.4.10.3^ISO
@@ -0,0 +1 @@
1
+ MSH|^~&|Lab1^1234^CLIA|^1234^CLIA|ELR^2.16.840.1.113883.19.3.2^ISO|SPH^2.16.840.1.113883.19.3.2^ISO|20080818183002.1-0700||ORU^R01^ORU_R01|1234567890|P^T|2.5.1|||NE|NE|USA||||USELR1.0^^2.16.840.1.114222.4.10.3^ISO
@@ -0,0 +1 @@
1
+ FHS|^~\&||Lab1^2.16.840.1.113883.19.3.1^ISO||SPH^2.16.840.1.113883.19.3.2^ISO|20080723123558-0400
@@ -0,0 +1 @@
1
+ FHS|^~\&||Lab1^2.16.840.1.113883.19.3.1^ISO||SPH^2.16.840.1.113883.19.3.2^ISO|20080723123558-0400
@@ -0,0 +1 @@
1
+ MSH|^~&|Lab1^1234^CLIA|^1234^CLIA|ELR^2.16.840.1.113883.19.3.2^ISO|SPH^2.16.840.1.113883.19.3.2^ISO|20080818183002.1-0700||ORU^R01^ORU_R01|1234567890|P^T|2.5.1|||NE|NE|USA||||USELR1.0^^2.16.840.1.114222.4.10.3^ISO
@@ -0,0 +1 @@
1
+ MSH|^~\&|Lab1^1234^CLIA|^1234^CLIA|ELR^2.16.840.1.113883.19.3.2^ISO|SPH^2.16.840.1.113883.19.3.2^ISO|20080818183002.1-0700||ORU^R01^ORU_R01|1234567890|P^T|2.5.1|||NE|NE|USA||||USELR1.0^^2.16.840.1.114222.4.10.3^ISO
@@ -0,0 +1 @@
1
+ MSH|^~\&|Lab1^1234^CLIA|Joe's Lab^1234^CLIA|ELR^2.16.840.1.113883.19.3.2^ISO|SPH^2.16.840.1.113883.19.3.2^ISO|20080818183002.1-0700||ORU^R01^ORU_R01|1234567890|P^T|2.5.1|||NE|NE|USA||||USELR1.0^^2.16.840.1.114222.4.10.3^ISO
@@ -0,0 +1 @@
1
+ MSH|^~\&|Lab1^1234^CLIA|Joe's Lab^1234^CLIA|ELR^2.16.840.1.113883.19.3.2^ISO|SPH^2.16.840.1.113883.19.3.2^ISO|20080818183002.1-0700||ORU^R01^ORU_R01|1234567890|P^T|2.5.1|||NE|NE|USA||||USELR1.0^^2.16.840.1.114222.4.10.3^ISO
@@ -0,0 +1 @@
1
+ MSH|^~\&|Lab1^1234^CLIA|^1234^CLIA|ELR^2.16.840.1.113883.19.3.2^ISO|SPH^2.16.840.1.113883.19.3.2^ISO|20080818183002.1-0700||ORU^R01^ORU_R01|1234567890|P^T|2.5.1|||NE|NE|USA||||USELR1.0^^2.16.840.1.114222.4.10.3^ISO
@@ -0,0 +1 @@
1
+ MSH|^~&|Lab1^1234^CLIA|^1234^CLIA|ELR^2.16.840.1.113883.19.3.2^ISO|SPH^2.16.840.1.113883.19.3.2^ISO|20080818183002.1-0700||ORU^R01^ORU_R01|1234567890|P^T|2.5.1|||NE|NE|USA||||USELR1.0^^2.16.840.1.114222.4.10.3^ISO
@@ -0,0 +1,2 @@
1
+ MSH|^~&|Lab1^1234^CLIA|^1234^CLIA|ELR^2.16.840.1.113883.19.3.2^ISO|SPH^2.16.840.1.113883.19.3.2^ISO|20080818183002.1-0700||ORU^R01^ORU_R01|1234567890|P^T|2.5.1|||NE|NE|USA||||USELR1.0^^2.16.840.1.114222.4.10.3^ISO
2
+ 5.1||||||N^Not Hispanic or Latino^HL70189^^^^2.5.1||||||||N|||200808151000-0700|Reliable^2.16.840.1.113883.19.3.1^ISO
@@ -0,0 +1 @@
1
+ MSH|^~&|Lab1^1234^CLIA|^1234^CLIA|ELR^2.16.840.1.113883.19.3.2^ISO|SPH^2.16.840.1.113883.19.3.2^ISO|20080818183002.1-0700||ORU^R01^ORU_R01|1234567890|P^T|2.5.1|||NE|NE|USA||||USELR1.0^^2.16.840.1.114222.4.10.3^ISO
metadata CHANGED
@@ -1,37 +1,54 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-hl7
3
3
  version: !ruby/object:Gem::Version
4
- version: "0.3"
4
+ hash: 15
5
+ prerelease: false
6
+ segments:
7
+ - 1
8
+ - 0
9
+ version: "1.0"
5
10
  platform: ruby
6
11
  authors:
7
12
  - Mark Guzman
8
- autorequire: ruby-hl7
13
+ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2009-08-20 00:00:00 -04:00
17
+ date: 2010-12-05 00:00:00 -06:00
13
18
  default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: rake
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
20
25
  requirements:
21
26
  - - ">="
22
27
  - !ruby/object:Gem::Version
28
+ hash: 49
29
+ segments:
30
+ - 0
31
+ - 8
32
+ - 7
23
33
  version: 0.8.7
24
- version:
34
+ type: :runtime
35
+ version_requirements: *id001
25
36
  - !ruby/object:Gem::Dependency
26
37
  name: rubyforge
27
- type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
38
+ prerelease: false
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
30
41
  requirements:
31
42
  - - ">="
32
43
  - !ruby/object:Gem::Version
33
- version: 1.0.4
34
- version:
44
+ hash: 7
45
+ segments:
46
+ - 2
47
+ - 0
48
+ - 4
49
+ version: 2.0.4
50
+ type: :runtime
51
+ version_requirements: *id002
35
52
  description: A simple library to parse and generate HL7 2.x messages
36
53
  email: segfault@hasno.info
37
54
  executables: []
@@ -39,31 +56,60 @@ executables: []
39
56
  extensions: []
40
57
 
41
58
  extra_rdoc_files:
42
- - README
59
+ - README.rdoc
43
60
  - LICENSE
44
61
  files:
45
- - lib/ruby-hl7.rb
46
- - lib/segments/evn.rb
47
- - lib/segments/msa.rb
48
62
  - lib/segments/msh.rb
49
- - lib/segments/nte.rb
50
- - lib/segments/obr.rb
63
+ - lib/segments/msa.rb
51
64
  - lib/segments/obx.rb
65
+ - lib/segments/spm.rb
66
+ - lib/segments/err.rb
67
+ - lib/segments/nte.rb
52
68
  - lib/segments/oru.rb
53
- - lib/segments/pid.rb
54
69
  - lib/segments/pv1.rb
70
+ - lib/segments/orc.rb
71
+ - lib/segments/sft.rb
72
+ - lib/segments/obr.rb
73
+ - lib/segments/qrf.rb
74
+ - lib/segments/nk1.rb
75
+ - lib/segments/pid.rb
55
76
  - lib/segments/pv2.rb
56
77
  - lib/segments/qrd.rb
57
- - lib/segments/qrf.rb
58
- - test_data/adt_a01.hl7
59
- - test_data/empty.hl7
60
- - test_data/empty_segments.hl7
78
+ - lib/segments/evn.rb
79
+ - lib/string.rb
80
+ - lib/ruby-hl7.rb
81
+ - lib/test/hl7_messages.rb
82
+ - test_data/realm/realm-cj-badloinc.hl7
83
+ - test_data/realm/realm-bad-batch.hl7
84
+ - test_data/realm/realm-hepatitis-c-virus.hl7
85
+ - test_data/realm/realm-lead-laboratory-result.hl7
86
+ - test_data/realm/realm-animal-rabies.hl7
87
+ - test_data/realm/realm-cj.hl7
88
+ - test_data/realm/realm-batch.hl7
89
+ - test_data/realm/realm-campylobacter-jejuni.hl7
90
+ - test_data/realm/realm-err.hl7
91
+ - test_data/realm/realm-minimal-message.hl7
92
+ - test_data/realm/realm-cj-joeslab.hl7
61
93
  - test_data/lotsunknowns.hl7
94
+ - test_data/test.hl7
95
+ - test_data/empty_segments.hl7
62
96
  - test_data/obxobr.hl7
63
97
  - test_data/rqi_r04.hl7
64
- - test_data/test.hl7
98
+ - test_data/cerner/cerner_lead.hl7
99
+ - test_data/cerner/cerner_bordetella.hl7
100
+ - test_data/cerner/cerner_sequential.hl7
101
+ - test_data/cerner/cerner_en.hl7
102
+ - test_data/empty.hl7
103
+ - test_data/nist/ORU_R01_2.5.1_SampleTestCase6.er7
104
+ - test_data/nist/ORU_R01_2.5.1_SampleTestCase4.er7
105
+ - test_data/nist/ORU_R01_2.5.1_SampleTestCase3.er7
106
+ - test_data/nist/ORU_R01_2.5.1_SampleTestCase5.er7
107
+ - test_data/nist/ORU_R01_2.5.1_SampleTestCase2.er7
108
+ - test_data/nist/ORU_R01_2.5.1_SampleTestCase1.er7
109
+ - test_data/empty-batch.hl7
110
+ - test_data/adt_a01.hl7
65
111
  - test_data/test2.hl7
66
- - README
112
+ - README.rdoc
67
113
  - LICENSE
68
114
  has_rdoc: true
69
115
  homepage: http://rubyforge.org/ruby-hl7
@@ -75,31 +121,31 @@ rdoc_options: []
75
121
  require_paths:
76
122
  - lib
77
123
  required_ruby_version: !ruby/object:Gem::Requirement
124
+ none: false
78
125
  requirements:
79
126
  - - ">="
80
127
  - !ruby/object:Gem::Version
81
- version: "0"
82
- version:
128
+ hash: 59
129
+ segments:
130
+ - 1
131
+ - 8
132
+ - 6
133
+ version: 1.8.6
83
134
  required_rubygems_version: !ruby/object:Gem::Requirement
135
+ none: false
84
136
  requirements:
85
137
  - - ">="
86
138
  - !ruby/object:Gem::Version
139
+ hash: 3
140
+ segments:
141
+ - 0
87
142
  version: "0"
88
- version:
89
143
  requirements: []
90
144
 
91
145
  rubyforge_project: ruby-hl7
92
- rubygems_version: 1.3.4
146
+ rubygems_version: 1.3.7
93
147
  signing_key:
94
148
  specification_version: 3
95
149
  summary: Ruby HL7 Library
96
- test_files:
97
- - test/test_basic_parsing.rb
98
- - test/test_child_segment.rb
99
- - test/test_default_segment.rb
100
- - test/test_dynamic_segment_def.rb
101
- - test/test_msa_segment.rb
102
- - test/test_obr_segment.rb
103
- - test/test_obx_segment.rb
104
- - test/test_pid_segment.rb
105
- - test/test_speed_parsing.rb
150
+ test_files: []
151
+
data/README DELETED
@@ -1,24 +0,0 @@
1
- =Ruby HL7 Library README
2
-
3
- A simple way to parse and create hl7 2.x messages with ruby.
4
- Examples can be found in HL7::Message
5
- The version id can be found in the HL7::VERSION constant.
6
-
7
- * Bug tracking: http://trac.hasno.info/ruby-hl7
8
- * Subversion: svn://hasno.info/ruby-hl7
9
- * Git: git://github.com/segfault/ruby-hl7.git
10
- * Docs: http://ruby-hl7.rubyforge.org
11
- * Rubyforge: http://rubyforge.org/projects/ruby-hl7
12
- * Lists
13
- * Developers: mailto:ruby-hl7-devel@rubyforge.org
14
- * Users: mailto:ruby-hl7-users@rubyforge.org
15
-
16
- Copyright (c) 2006-2008 Mark Guzman
17
-
18
- == Download and Installation
19
- Install the gem using the following command:
20
- gem install ruby-hl7
21
-
22
-
23
- == License
24
- see the LICENSE file
@@ -1,337 +0,0 @@
1
- # $Id$
2
- $: << '../lib'
3
- require 'test/unit'
4
- require 'ruby-hl7'
5
-
6
- class BasicParsing < Test::Unit::TestCase
7
- def setup
8
- @simple_msh_txt = open( './test_data/test.hl7' ).readlines.first
9
- @empty_txt = open( './test_data/empty.hl7' ).readlines.first
10
- @empty_segments_txt = open( './test_data/empty_segments.hl7' ).readlines.first
11
- @base_msh = "MSH|^~\\&|LAB1||DESTINATION||19910127105114||ORU^R03|LAB1003929"
12
- @base_msh_alt_delims = "MSH$@~\\&|LAB1||DESTINATION||19910127105114||ORU^R03|LAB1003929"
13
- end
14
-
15
- def test_simple_msh
16
- msg = HL7::Message.new
17
- msg.parse @simple_msh_txt
18
- assert_equal( @simple_msh_txt, msg.to_hl7 )
19
- end
20
-
21
- def test_parse_delims
22
- msg = HL7::Message.new( @base_msh )
23
- assert_equal( "|", msg.element_delim )
24
- assert_equal( "^", msg.item_delim )
25
-
26
- msg = HL7::Message.new( @base_msh_alt_delims )
27
- assert_equal( "$", msg.element_delim )
28
- assert_equal( "@", msg.item_delim )
29
- end
30
-
31
- def test_constructor_parse
32
- msg = HL7::Message.new( @simple_msh_txt )
33
- assert_equal( @simple_msh_txt, msg.to_hl7 )
34
- end
35
-
36
- def test_class_parse
37
- msg = HL7::Message.parse( @simple_msh_txt )
38
- assert_equal( @simple_msh_txt, msg.to_hl7 )
39
- end
40
-
41
- def test_not_string_or_enumerable
42
- assert_raise( HL7::ParseError ) do
43
- msg = HL7::Message.parse( :MSHthis_shouldnt_parse_at_all )
44
- end
45
- end
46
-
47
- def test_parse_empty
48
- msg = HL7::Message.new @empty_txt
49
- end
50
-
51
- def test_message_to_string
52
- msg = HL7::Message.new
53
- msg.parse @simple_msh_txt
54
- orig = @simple_msh_txt.gsub( /\r/, "\n" )
55
- assert_equal( orig, msg.to_s )
56
- end
57
-
58
- def test_to_s_vs_to_hl7
59
- msg = HL7::Message.new( @simple_msh_txt )
60
- assert_not_equal( msg.to_s, msg.to_hl7 )
61
- end
62
-
63
- def test_segment_numeric_accessor
64
- msg = HL7::Message.new
65
- msg.parse @simple_msh_txt
66
- assert_equal( @base_msh, msg[0].to_s )
67
- end
68
-
69
- def test_segment_string_accessor
70
- msg = HL7::Message.new
71
- msg.parse @simple_msh_txt
72
- assert_equal( @base_msh, msg["MSH"].to_s )
73
- end
74
-
75
- def test_segment_symbol_accessor
76
- msg = HL7::Message.new
77
- msg.parse @simple_msh_txt
78
- assert_equal( @base_msh, msg[:MSH].to_s )
79
- end
80
-
81
- def test_segment_numeric_mutator
82
- msg = HL7::Message.new
83
- msg.parse @simple_msh_txt
84
- inp = HL7::Message::Segment::Default.new
85
- msg[1] = inp
86
- assert_equal( inp, msg[1] )
87
-
88
- assert_raise( HL7::Exception ) do
89
- msg[2] = Class.new
90
- end
91
- end
92
-
93
- def test_segment_missing_accessor
94
- msg = HL7::Message.new
95
- msg.parse @simple_msh_txt
96
- assert_nothing_raised do
97
- assert_equal( nil, msg[:does_not_exist] )
98
- end
99
- end
100
-
101
- def test_segment_string_mutator
102
- msg = HL7::Message.new
103
- msg.parse @simple_msh_txt
104
- inp = HL7::Message::Segment::NTE.new
105
- msg["NTE"] = inp
106
- assert_equal( inp, msg["NTE"] )
107
-
108
- assert_raise( HL7::Exception ) do
109
- msg["NTE"] = Class.new
110
- end
111
- end
112
-
113
- def test_segment_symbol_accessor
114
- msg = HL7::Message.new
115
- msg.parse @simple_msh_txt
116
- inp = HL7::Message::Segment::NTE.new
117
- msg[:NTE] = inp
118
- assert_equal( inp, msg[:NTE] )
119
-
120
- assert_raise( HL7::Exception ) do
121
- msg[:NTE] = Class.new
122
- end
123
- end
124
-
125
- def test_element_accessor
126
- msg = HL7::Message.new
127
- msg.parse @simple_msh_txt
128
- assert_equal( "LAB1", msg[:MSH].sending_app )
129
- end
130
-
131
- def test_element_mutator
132
- msg = HL7::Message.new
133
- msg.parse @simple_msh_txt
134
- msg[:MSH].sending_app = "TEST"
135
- assert_equal( "TEST", msg[:MSH].sending_app )
136
- end
137
-
138
- def test_element_missing_accessor
139
- msg = HL7::Message.new
140
- msg.parse @simple_msh_txt
141
- assert_raise( HL7::Exception, NoMethodError ) do
142
- msg[:MSH].does_not_really_exist_here
143
- end
144
- end
145
-
146
- def test_element_missing_mutator
147
- msg = HL7::Message.new
148
- msg.parse @simple_msh_txt
149
- assert_raise( HL7::Exception, NoMethodError ) do
150
- msg[:MSH].does_not_really_exist_here = "TEST"
151
- end
152
- end
153
-
154
- def test_element_numeric_accessor
155
- msg = HL7::Message.new( @simple_msh_txt )
156
-
157
- assert_equal( "LAB1", msg[:MSH].e2 )
158
- assert_equal( "", msg[:MSH].e3 )
159
- end
160
-
161
- def test_element_numeric_mutator
162
- msg = HL7::Message.parse( @simple_msh_txt )
163
- msg[:MSH].e2 = "TESTING1234"
164
- assert_equal( "TESTING1234", msg[:MSH].e2 )
165
- end
166
-
167
- def test_segment_append
168
- msg = HL7::Message.new
169
- assert_nothing_raised do
170
- msg << HL7::Message::Segment::MSH.new
171
- msg << HL7::Message::Segment::NTE.new
172
- end
173
-
174
- assert_raises( HL7::Exception ) do
175
- msg << Class.new
176
- end
177
- end
178
-
179
-
180
- def test_segment_sort
181
- msg = HL7::Message.new
182
- pv1 = HL7::Message::Segment::PV1.new
183
- msg << pv1
184
- msh = HL7::Message::Segment::MSH.new
185
- msg << msh
186
- nte = HL7::Message::Segment::NTE.new
187
- msg << nte
188
- nte2 = HL7::Message::Segment::NTE.new
189
- msg << nte
190
- msh.sending_app = "TEST"
191
-
192
-
193
- initial = msg.to_s
194
- sorted = msg.sort
195
- final = sorted.to_s
196
- assert_not_equal( initial, final )
197
- end
198
-
199
- def test_segment_auto_set_id
200
- msg = HL7::Message.new
201
- msh = HL7::Message::Segment::MSH.new
202
- msg << msh
203
- ntea = HL7::Message::Segment::NTE.new
204
- ntea.comment = "first"
205
- msg << ntea
206
- nteb = HL7::Message::Segment::NTE.new
207
- nteb.comment = "second"
208
- msg << nteb
209
- ntec = HL7::Message::Segment::NTE.new
210
- ntec.comment = "third"
211
- msg << ntec
212
- assert_equal( "1", ntea.set_id )
213
- assert_equal( "2", nteb.set_id )
214
- assert_equal( "3", ntec.set_id )
215
- end
216
-
217
- def test_enumerable_parsing
218
- test_file = open( './test_data/test.hl7' )
219
- assert_not_nil( test_file )
220
-
221
- msg = HL7::Message.new( test_file )
222
- assert_equal( @simple_msh_txt, msg.to_hl7 )
223
- end
224
-
225
- def test_segment_to_info
226
- msg = HL7::Message.new( @simple_msh_txt )
227
- assert_not_nil( msg[1].to_info )
228
- end
229
-
230
- def test_segment_use_raw_array
231
- inp = "NTE|1|ME TOO"
232
- nte = HL7::Message::Segment::NTE.new( inp.split( '|' ) )
233
- assert_equal( inp, nte.to_s )
234
- end
235
-
236
- def test_mllp_output
237
- msg = HL7::Message.new( @simple_msh_txt )
238
- expect = "\x0b%s\x1c\r" % msg.to_hl7
239
- assert_equal( expect, msg.to_mllp )
240
- end
241
-
242
- def test_parse_mllp
243
- raw = "\x0b%s\x1c\r" % @simple_msh_txt
244
- msg = HL7::Message.parse( raw )
245
- assert_not_nil( msg )
246
- assert_equal( @simple_msh_txt, msg.to_hl7 )
247
- assert_equal( raw, msg.to_mllp )
248
- end
249
-
250
- def test_mllp_output_parse
251
- msg = HL7::Message.parse( @simple_msh_txt )
252
- assert_not_nil( msg )
253
- assert_nothing_raised do
254
- post_mllp = HL7::Message.parse( msg.to_mllp )
255
- assert_not_nil( post_mllp )
256
- assert_equal( msg.to_hl7, post_mllp.to_hl7 )
257
- end
258
- end
259
-
260
- def test_child_segment_accessor
261
- obr = HL7::Message::Segment::OBR.new
262
- assert_nothing_raised do
263
- assert_not_nil( obr.children )
264
- assert_equal( 0, obr.children.length )
265
- end
266
- end
267
-
268
- def test_child_segment_addition
269
- obr = HL7::Message::Segment::OBR.new
270
- assert_nothing_raised do
271
- assert_equal( 0, obr.children.length )
272
- (1..5).each do |x|
273
- obr.children << HL7::Message::Segment::OBX.new
274
- assert_equal( x, obr.children.length )
275
- end
276
- end
277
- end
278
-
279
- def test_child_segment_invalid_addition
280
- obr = HL7::Message::Segment::OBR.new
281
- assert_raises(HL7::Exception) do
282
- obr.children << Class.new
283
- end
284
- end
285
-
286
- def test_grouped_sequenced_segments
287
- #multible obr's with multiple obx's
288
- msg = HL7::Message.parse( @simple_msh_txt )
289
- orig_output = msg.to_hl7
290
- orig_obx_cnt = msg[:OBX].length
291
- (1..10).each do |obr_id|
292
- obr = HL7::Message::Segment::OBR.new
293
- msg << obr
294
- (1..10).each do |obx_id|
295
- obx = HL7::Message::Segment::OBX.new
296
- obr.children << obx
297
- end
298
- end
299
-
300
- assert_not_nil( msg[:OBR] )
301
- assert_equal( 11, msg[:OBR].length )
302
- assert_not_nil( msg[:OBX] )
303
- assert_equal( 102, msg[:OBX].length )
304
- assert_equal( "2", msg[:OBR][4].children[1].set_id ) # confirm the id's
305
- assert_equal( "2", msg[:OBR][5].children[1].set_id ) # confirm the id's
306
-
307
- final_output = msg.to_hl7
308
- assert_not_equal( orig_output, final_output )
309
- end
310
-
311
- def test_index_accessor
312
- msg = HL7::Message.parse( @simple_msh_txt )
313
- assert_equal( 1, msg.index( "PID" ) )
314
- assert_equal( 1, msg.index( :PID ) )
315
- assert_equal( 2, msg.index( "PV1" ) )
316
- assert_equal( 2, msg.index( :PV1 ) )
317
- assert_equal( nil, msg.index( "TACOBELL" ) )
318
- assert_equal( nil, msg.index( nil ) )
319
- assert_equal( nil, msg.index( 1 ) )
320
- end
321
-
322
- def test_segment_field_block
323
- pid = HL7::Message::Segment::PID.new
324
- assert_raises( HL7::InvalidDataError ) do
325
- pid.admin_sex = "TEST"
326
- end
327
- assert_nothing_raised do
328
- pid.admin_sex = "F"
329
- end
330
- end
331
-
332
- def test_empty_segment
333
- msg = HL7::Message.new @empty_segments_txt
334
-
335
- end
336
-
337
- end