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
@@ -1,54 +0,0 @@
1
- # $Id$
2
- $: << '../lib'
3
- require 'test/unit'
4
- require 'ruby-hl7'
5
-
6
- class ChildSegment < Test::Unit::TestCase
7
- def setup
8
- @base = open( './test_data/obxobr.hl7' ).readlines
9
- end
10
-
11
- def test_access_children
12
- msg = HL7::Message.new @base
13
- assert_not_nil msg
14
- assert_not_nil msg[:OBR]
15
- assert_equal( 3, msg[:OBR].length )
16
- assert_not_nil msg[:OBR].first.children
17
- assert_equal( 5, msg[:OBR].first.children.length )
18
-
19
- msg[:OBR].first.children.each do |x|
20
- assert_not_nil x
21
- end
22
- end
23
-
24
- def test_add_children
25
- msg = HL7::Message.new @base
26
- assert_not_nil msg
27
- assert_not_nil msg[:OBR]
28
- ob = HL7::Message::Segment::OBR.new
29
- assert_not_nil ob
30
-
31
- msg << ob
32
- assert_not_nil ob.children
33
- assert_not_nil ob.segment_parent
34
- assert_equal(msg, ob.segment_parent)
35
- orig_cnt = msg.length
36
-
37
- (1..4).each do |x|
38
- m = HL7::Message::Segment::OBX.new
39
- m.observation_value = "taco"
40
- assert_not_nil m
41
- assert_not_nil /taco/.match( m.to_s )
42
- ob.children << m
43
- assert_equal(x, ob.children.length)
44
- assert_not_nil m.segment_parent
45
- assert_equal(ob, m.segment_parent)
46
- end
47
-
48
- assert_not_equal( @base, msg.to_hl7 )
49
- assert_not_equal( orig_cnt, msg.length )
50
- text_ver = msg.to_hl7
51
- assert_not_nil /taco/.match( text_ver )
52
- end
53
- end
54
-
@@ -1,31 +0,0 @@
1
- # $Id$
2
- $: << '../lib'
3
- require 'test/unit'
4
- require 'ruby-hl7'
5
-
6
- class MsaSegment < Test::Unit::TestCase
7
- def setup
8
- @base_msa = "MSA|AR|ZZ9380 ERR"
9
- end
10
-
11
- def test_storing_existing_segment
12
- seg = HL7::Message::Segment::Default.new( @base_msa )
13
- assert_equal( @base_msa, seg.to_s )
14
- end
15
-
16
- def test_to_s
17
- seg = HL7::Message::Segment::Default.new( @base_msa )
18
- assert_equal( @base_msa, seg.to_s )
19
- assert_equal( seg.to_s, seg.to_hl7 )
20
- end
21
-
22
- def test_create_raw_segment
23
- seg = HL7::Message::Segment::Default.new
24
- seg.e0 = "NK1"
25
- seg.e1 = "INFO"
26
- seg.e2 = "MORE INFO"
27
- seg.e5 = "LAST INFO"
28
- assert_equal( "NK1|INFO|MORE INFO|||LAST INFO", seg.to_s )
29
- end
30
-
31
- end
@@ -1,42 +0,0 @@
1
- # $Id$
2
- $: << '../lib'
3
- require 'test/unit'
4
- require 'ruby-hl7'
5
-
6
- class DynamicSegmentDefinition < Test::Unit::TestCase
7
- def setup
8
- end
9
-
10
- def test_block_definition
11
- seg = HL7::Message::Segment.new do |s|
12
- s.e0 = "MSK"
13
- s.e1 = "1234"
14
- s.e2 = "5678"
15
- end
16
-
17
- assert_equal( "MSK|1234|5678", seg.to_s )
18
- end
19
-
20
- def test_ruby_block_initializer
21
- seg = HL7::Message::Segment.new do
22
- e0 "MSK"
23
- e1 "1234"
24
- e2 "5678"
25
- end
26
-
27
- assert_equal( "MSK|1234|5678", seg.to_s )
28
- end
29
-
30
- def test_shouldnt_pollute_caller_namespace
31
- seg = HL7::Message::Segment.new do |s|
32
- s.e0 = "MSK"
33
- s.e1 = "1234"
34
- s.e2 = "5678"
35
- end
36
-
37
- assert_raises(NoMethodError) do
38
- e3 "TEST"
39
- end
40
- assert_equal( "MSK|1234|5678", seg.to_s )
41
- end
42
- end
@@ -1,27 +0,0 @@
1
- # $Id$
2
- $: << '../lib'
3
- require 'test/unit'
4
- require 'ruby-hl7'
5
-
6
- class MsaSegment < Test::Unit::TestCase
7
- def setup
8
- @base_msa = "MSA|AR|ZZ9380 ERR"
9
- end
10
-
11
- def test_create_msa
12
- assert_nothing_raised do
13
- msa = HL7::Message::Segment::MSA.new( @base_msa )
14
- assert_not_nil( msa )
15
- assert_equal( @base_msa, msa.to_s )
16
- end
17
- end
18
-
19
- def test_access_msa
20
- assert_nothing_raised do
21
- msa = HL7::Message::Segment::MSA.new( @base_msa )
22
- assert_equal( "AR", msa.ack_code )
23
- assert_equal( "ZZ9380 ERR", msa.control_id )
24
- end
25
- end
26
-
27
- end
@@ -1,29 +0,0 @@
1
- # $Id$
2
- $: << '../lib'
3
- require 'test/unit'
4
- require 'ruby-hl7'
5
-
6
- class ObrSegment < Test::Unit::TestCase
7
- def setup
8
- @base = "OBR|2|^USSSA|0000000567^USSSA|37956^CT ABDOMEN^LN|||199405021550|||||||||||||0000763|||||P||||||R/O TUMOR|202300&BAKER&MARK&E|||01&LOCHLEAR&JUDY"
9
- end
10
-
11
- def test_read
12
- obr = HL7::Message::Segment::OBR.new @base
13
- assert_equal( @base, obr.to_s )
14
- assert_equal( "2", obr.e1 )
15
- assert_equal( "2", obr.set_id )
16
- assert_equal( "^USSSA", obr.placer_order_number )
17
- assert_equal( "0000000567^USSSA", obr.filler_order_number )
18
- assert_equal( "37956^CT ABDOMEN^LN", obr.universal_service_id )
19
- end
20
-
21
- def test_create
22
- obr = HL7::Message::Segment::OBR.new
23
- obr.set_id = 1
24
- assert_equal( "1", obr.set_id )
25
- obr.placer_order_number = "^DMCRES"
26
- assert_equal( "^DMCRES", obr.placer_order_number )
27
- end
28
-
29
- end
@@ -1,27 +0,0 @@
1
- # $Id$
2
- $: << '../lib'
3
- require 'test/unit'
4
- require 'ruby-hl7'
5
-
6
- class ObxSegment < Test::Unit::TestCase
7
- def setup
8
- @base = "OBX||TX|FIND^FINDINGS^L|1|This is a test on 05/02/94."
9
- end
10
-
11
- def test_initial_read
12
- obx = HL7::Message::Segment::OBX.new @base
13
- assert_equal( "", obx.set_id )
14
- assert_equal( "TX", obx.value_type )
15
- assert_equal( "FIND^FINDINGS^L", obx.observation_id )
16
- assert_equal( "1", obx.observation_sub_id )
17
- assert_equal( "This is a test on 05/02/94.", obx.observation_value )
18
- end
19
-
20
- def test_creation
21
- obx = HL7::Message::Segment::OBX.new
22
- obx.value_type = "TESTIES"
23
- obx.observation_id = "HR"
24
- obx.observation_sub_id = "2"
25
- obx.observation_value = "SOMETHING HAPPENned"
26
- end
27
- end
@@ -1,28 +0,0 @@
1
- # $Id$
2
- $: << '../lib'
3
- require 'test/unit'
4
- require 'ruby-hl7'
5
-
6
- class PidSegment < Test::Unit::TestCase
7
- def setup
8
- @base = "PID|||333||LastName^FirstName^MiddleInitial^SR^NickName||19760228|F||||||||||555. 55|012345678"
9
- end
10
-
11
- def test_admin_sex_limits
12
- pid = HL7::Message::Segment::PID.new
13
- assert_nothing_raised do
14
- vals = %w[F M O U A N] + [ nil ]
15
- vals.each do |x|
16
- pid.admin_sex = x
17
- end
18
- pid.admin_sex = ""
19
- end
20
-
21
- assert_raises( HL7::InvalidDataError ) do
22
- ["TEST", "A", 1, 2].each do |x|
23
- pid.admin_sex = x
24
- end
25
- end
26
-
27
- end
28
- end
@@ -1,19 +0,0 @@
1
- # $Id$
2
- $: << '../lib'
3
- require 'time'
4
- require 'test/unit'
5
- require 'ruby-hl7'
6
-
7
- class SpeedParsing < Test::Unit::TestCase
8
- def setup
9
- @msg = open( "./test_data/lotsunknowns.hl7" ).readlines
10
- end
11
-
12
- def test_large_unknown_segments
13
- start = Time.now
14
- doc = HL7::Message.new @msg
15
- assert_not_nil doc
16
- ends = Time.now
17
- assert ((ends-start) < 1)
18
- end
19
- end