hippo 0.0.4
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/.gitignore +6 -0
- data/CHANGELOG +9 -0
- data/Gemfile +11 -0
- data/Guardfile +14 -0
- data/README.md +227 -0
- data/Rakefile +12 -0
- data/bin/demo_270.rb +280 -0
- data/bin/demo_276.rb +296 -0
- data/bin/demo_835.rb +170 -0
- data/hippo.gemspec +24 -0
- data/lib/hippo/exceptions.rb +8 -0
- data/lib/hippo/field.rb +6 -0
- data/lib/hippo/loop.rb +0 -0
- data/lib/hippo/parser.rb +92 -0
- data/lib/hippo/samples/835.edi +88 -0
- data/lib/hippo/samples/sample_835_with.rb +272 -0
- data/lib/hippo/samples/sample_parsed.rb +1162 -0
- data/lib/hippo/segments/AK1.rb +32 -0
- data/lib/hippo/segments/AK2.rb +31 -0
- data/lib/hippo/segments/AK9.rb +82 -0
- data/lib/hippo/segments/AMT.rb +31 -0
- data/lib/hippo/segments/BHT.rb +55 -0
- data/lib/hippo/segments/BPR.rb +175 -0
- data/lib/hippo/segments/CAS.rb +159 -0
- data/lib/hippo/segments/CL1.rb +39 -0
- data/lib/hippo/segments/CLM.rb +223 -0
- data/lib/hippo/segments/CLP.rb +119 -0
- data/lib/hippo/segments/CN1.rb +55 -0
- data/lib/hippo/segments/CR1.rb +87 -0
- data/lib/hippo/segments/CR2.rb +104 -0
- data/lib/hippo/segments/CR3.rb +47 -0
- data/lib/hippo/segments/CR4.rb +239 -0
- data/lib/hippo/segments/CR5.rb +151 -0
- data/lib/hippo/segments/CR6.rb +175 -0
- data/lib/hippo/segments/CR7.rb +33 -0
- data/lib/hippo/segments/CR8.rb +79 -0
- data/lib/hippo/segments/CRC.rb +63 -0
- data/lib/hippo/segments/CTP.rb +212 -0
- data/lib/hippo/segments/CTX.rb +105 -0
- data/lib/hippo/segments/CUR.rb +175 -0
- data/lib/hippo/segments/DMG.rb +115 -0
- data/lib/hippo/segments/DN1.rb +39 -0
- data/lib/hippo/segments/DN2.rb +55 -0
- data/lib/hippo/segments/DSB.rb +71 -0
- data/lib/hippo/segments/DTM.rb +55 -0
- data/lib/hippo/segments/DTP.rb +31 -0
- data/lib/hippo/segments/FRM.rb +47 -0
- data/lib/hippo/segments/GE.rb +19 -0
- data/lib/hippo/segments/GS.rb +52 -0
- data/lib/hippo/segments/HCP.rb +127 -0
- data/lib/hippo/segments/HI.rb +919 -0
- data/lib/hippo/segments/HL.rb +44 -0
- data/lib/hippo/segments/HSD.rb +72 -0
- data/lib/hippo/segments/IEA.rb +19 -0
- data/lib/hippo/segments/IK3.rb +40 -0
- data/lib/hippo/segments/IK4.rb +63 -0
- data/lib/hippo/segments/IK5.rb +55 -0
- data/lib/hippo/segments/IMM.rb +55 -0
- data/lib/hippo/segments/ISA.rb +95 -0
- data/lib/hippo/segments/K3.rb +147 -0
- data/lib/hippo/segments/LIN.rb +255 -0
- data/lib/hippo/segments/LQ.rb +23 -0
- data/lib/hippo/segments/LX.rb +21 -0
- data/lib/hippo/segments/MEA.rb +219 -0
- data/lib/hippo/segments/MIA.rb +199 -0
- data/lib/hippo/segments/MOA.rb +79 -0
- data/lib/hippo/segments/N1.rb +55 -0
- data/lib/hippo/segments/N2.rb +23 -0
- data/lib/hippo/segments/N3.rb +23 -0
- data/lib/hippo/segments/N4.rb +63 -0
- data/lib/hippo/segments/NM1.rb +103 -0
- data/lib/hippo/segments/NTE.rb +23 -0
- data/lib/hippo/segments/OI.rb +55 -0
- data/lib/hippo/segments/PAT.rb +79 -0
- data/lib/hippo/segments/PER.rb +79 -0
- data/lib/hippo/segments/PLB.rb +191 -0
- data/lib/hippo/segments/PRV.rb +75 -0
- data/lib/hippo/segments/PS1.rb +31 -0
- data/lib/hippo/segments/PWK.rb +116 -0
- data/lib/hippo/segments/QTY.rb +155 -0
- data/lib/hippo/segments/RDM.rb +135 -0
- data/lib/hippo/segments/REF.rb +83 -0
- data/lib/hippo/segments/SBR.rb +79 -0
- data/lib/hippo/segments/SE.rb +24 -0
- data/lib/hippo/segments/ST.rb +31 -0
- data/lib/hippo/segments/STC.rb +187 -0
- data/lib/hippo/segments/SV1.rb +267 -0
- data/lib/hippo/segments/SV2.rb +147 -0
- data/lib/hippo/segments/SV3.rb +223 -0
- data/lib/hippo/segments/SV4.rb +211 -0
- data/lib/hippo/segments/SV5.rb +123 -0
- data/lib/hippo/segments/SV6.rb +155 -0
- data/lib/hippo/segments/SV7.rb +55 -0
- data/lib/hippo/segments/SVC.rb +183 -0
- data/lib/hippo/segments/SVD.rb +116 -0
- data/lib/hippo/segments/TOO.rb +67 -0
- data/lib/hippo/segments/TRN.rb +39 -0
- data/lib/hippo/segments/TS2.rb +159 -0
- data/lib/hippo/segments/TS3.rb +199 -0
- data/lib/hippo/segments/UR.rb +23 -0
- data/lib/hippo/segments/base.rb +148 -0
- data/lib/hippo/segments.rb +85 -0
- data/lib/hippo/transaction_sets/HIPAA_276/L2000A.rb +28 -0
- data/lib/hippo/transaction_sets/HIPAA_276/L2000B.rb +28 -0
- data/lib/hippo/transaction_sets/HIPAA_276/L2000C.rb +28 -0
- data/lib/hippo/transaction_sets/HIPAA_276/L2000D.rb +45 -0
- data/lib/hippo/transaction_sets/HIPAA_276/L2000E.rb +45 -0
- data/lib/hippo/transaction_sets/HIPAA_276/L2100A.rb +20 -0
- data/lib/hippo/transaction_sets/HIPAA_276/L2100B.rb +20 -0
- data/lib/hippo/transaction_sets/HIPAA_276/L2100C.rb +19 -0
- data/lib/hippo/transaction_sets/HIPAA_276/L2100D.rb +19 -0
- data/lib/hippo/transaction_sets/HIPAA_276/L2100E.rb +20 -0
- data/lib/hippo/transaction_sets/HIPAA_276/L2200D.rb +116 -0
- data/lib/hippo/transaction_sets/HIPAA_276/L2200E.rb +116 -0
- data/lib/hippo/transaction_sets/HIPAA_276/L2210D.rb +36 -0
- data/lib/hippo/transaction_sets/HIPAA_276/L2210E.rb +36 -0
- data/lib/hippo/transaction_sets/HIPAA_276/base.rb +86 -0
- data/lib/hippo/transaction_sets/HIPAA_276.rb +21 -0
- data/lib/hippo/transaction_sets/HIPAA_277/L2000A.rb +35 -0
- data/lib/hippo/transaction_sets/HIPAA_277/L2000B.rb +35 -0
- data/lib/hippo/transaction_sets/HIPAA_277/L2000C.rb +35 -0
- data/lib/hippo/transaction_sets/HIPAA_277/L2000D.rb +35 -0
- data/lib/hippo/transaction_sets/HIPAA_277/L2000E.rb +35 -0
- data/lib/hippo/transaction_sets/HIPAA_277/L2100A.rb +19 -0
- data/lib/hippo/transaction_sets/HIPAA_277/L2100B.rb +20 -0
- data/lib/hippo/transaction_sets/HIPAA_277/L2100C.rb +19 -0
- data/lib/hippo/transaction_sets/HIPAA_277/L2100D.rb +20 -0
- data/lib/hippo/transaction_sets/HIPAA_277/L2100E.rb +20 -0
- data/lib/hippo/transaction_sets/HIPAA_277/L2200A.rb +41 -0
- data/lib/hippo/transaction_sets/HIPAA_277/L2200B.rb +66 -0
- data/lib/hippo/transaction_sets/HIPAA_277/L2200C.rb +73 -0
- data/lib/hippo/transaction_sets/HIPAA_277/L2200D.rb +73 -0
- data/lib/hippo/transaction_sets/HIPAA_277/L2200E.rb +103 -0
- data/lib/hippo/transaction_sets/HIPAA_277/L2220D.rb +56 -0
- data/lib/hippo/transaction_sets/HIPAA_277/L2220E.rb +43 -0
- data/lib/hippo/transaction_sets/HIPAA_277/base.rb +77 -0
- data/lib/hippo/transaction_sets/HIPAA_277.rb +24 -0
- data/lib/hippo/transaction_sets/HIPAA_835/L1000A.rb +71 -0
- data/lib/hippo/transaction_sets/HIPAA_835/L1000B.rb +47 -0
- data/lib/hippo/transaction_sets/HIPAA_835/L2000.rb +37 -0
- data/lib/hippo/transaction_sets/HIPAA_835/L2100.rb +182 -0
- data/lib/hippo/transaction_sets/HIPAA_835/L2110.rb +85 -0
- data/lib/hippo/transaction_sets/HIPAA_835/base.rb +112 -0
- data/lib/hippo/transaction_sets/HIPAA_835.rb +12 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L1000A.rb +30 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L1000B.rb +21 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2000A.rb +65 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2000B.rb +49 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2000C.rb +42 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2010AA.rb +57 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2010AB.rb +33 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2010AC.rb +51 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2010BA.rb +74 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2010BB.rb +48 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2010CA.rb +72 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2300.rb +510 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2310A.rb +26 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2310B.rb +37 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2310C.rb +52 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2310D.rb +27 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2310E.rb +34 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2310F.rb +34 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2320.rb +122 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2330A.rb +43 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2330B.rb +92 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2330C.rb +26 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2330D.rb +26 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2330E.rb +27 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2330F.rb +27 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2330G.rb +26 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2400.rb +475 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2410.rb +30 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2420A.rb +37 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2420B.rb +26 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2420C.rb +41 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2420D.rb +27 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2420E.rb +51 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2420F.rb +26 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2420G.rb +34 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2420H.rb +34 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2430.rb +44 -0
- data/lib/hippo/transaction_sets/HIPAA_837/L2440.rb +23 -0
- data/lib/hippo/transaction_sets/HIPAA_837/base.rb +81 -0
- data/lib/hippo/transaction_sets/HIPAA_837.rb +45 -0
- data/lib/hippo/transaction_sets/HIPAA_999/L2000 - AK2.rb +30 -0
- data/lib/hippo/transaction_sets/HIPAA_999/L2000AK2.rb +30 -0
- data/lib/hippo/transaction_sets/HIPAA_999/L2100 - AK2.rb +37 -0
- data/lib/hippo/transaction_sets/HIPAA_999/L2100AK2.rb +37 -0
- data/lib/hippo/transaction_sets/HIPAA_999/L2110 - AK2.rb +23 -0
- data/lib/hippo/transaction_sets/HIPAA_999/L2110AK2.rb +23 -0
- data/lib/hippo/transaction_sets/HIPAA_999/base.rb +46 -0
- data/lib/hippo/transaction_sets/HIPAA_999.rb +10 -0
- data/lib/hippo/transaction_sets/base.rb +136 -0
- data/lib/hippo/transaction_sets.rb +11 -0
- data/lib/hippo/version.rb +3 -0
- data/lib/hippo.rb +15 -0
- data/samples/835_4010.edi +1 -0
- data/samples/837_4010A1.edi +1 -0
- data/test/test_helper.rb +118 -0
- data/test/test_hipaa_837.rb +396 -0
- data/test/test_segments_base.rb +106 -0
- data/test/test_transaction_sets_base.rb +85 -0
- metadata +277 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
module Hippo
|
|
2
|
+
module TransactionSets
|
|
3
|
+
|
|
4
|
+
autoload :Base, 'hippo/transaction_sets/base'
|
|
5
|
+
autoload :HIPAA_276, 'hippo/transaction_sets/HIPAA_276'
|
|
6
|
+
autoload :HIPAA_277, 'hippo/transaction_sets/HIPAA_277'
|
|
7
|
+
autoload :HIPAA_835, 'hippo/transaction_sets/HIPAA_835'
|
|
8
|
+
autoload :HIPAA_837, 'hippo/transaction_sets/HIPAA_837'
|
|
9
|
+
autoload :HIPAA_999, 'hippo/transaction_sets/HIPAA_999'
|
|
10
|
+
end
|
|
11
|
+
end
|
data/lib/hippo.rb
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
libdir = File.dirname(__FILE__)
|
|
2
|
+
$LOAD_PATH.unshift(libdir) unless $LOAD_PATH.include?(libdir)
|
|
3
|
+
|
|
4
|
+
module Hippo
|
|
5
|
+
autoload :Exceptions, 'hippo/exceptions'
|
|
6
|
+
autoload :Segments, 'hippo/segments'
|
|
7
|
+
autoload :TransactionSets, 'hippo/transaction_sets'
|
|
8
|
+
autoload :Field, 'hippo/field'
|
|
9
|
+
autoload :CompositeField, 'hippo/composite_field'
|
|
10
|
+
autoload :Parser, 'hippo/parser'
|
|
11
|
+
|
|
12
|
+
FieldSeparator = '*'
|
|
13
|
+
CompositeSeparator = ':'
|
|
14
|
+
SegmentSeparator = '~'
|
|
15
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*530 *080716*1801*U*00401*198000001*0*T*:~GS*HP*EMEDNYBAT*530*20080716*18011900*198000001*X*004010X091A1~ST*835*159900001~BPR*H*0*C*NON************20080716~TRN*1*NO PAYMENT*1141797357~REF*EV*530~REF*F2*004010X091A1~DTM*405*20080716~N1*PR*NYSDOH~N3*OFFICE OF MEDICAID MANAGEMENT*CORNING TOWER, EMPIRE STATE PLAZA~N4*ALBANY*NY*122370080~N1*PE*ST ELSEWARE HSP MED CTR NY*XX*1234567890~REF*TJ*111991234~LX*1~CLP*0711000004462420*22*-123.86*-134.7**MC*0712000000015920*13*7~CAS*CR*A2*10.84*0~NM1*QC*1*PATIENT*ANNIBEL*X***MI*AA00000Z~NM1*82*1******XX*1234567890~REF*EA*607887001~REF*9A*4303~DTM*232*20070413~DTM*233*20070413~PER*CX*RETRO RATE REVERSAL~CLP*0711000004462420*1*123.86*130.7**MC*0712000000015920*13*7~CAS*CO*A2*-6.84*0~NM1*QC*1*PATIENT*ANNIBEL*X***MI*AA00000Z~NM1*82*1******XX*1234567890~REF*EA*607887001~REF*9A*4303~DTM*232*20070413~DTM*233*20070413~PER*CX*RETRO RATE CORRECTION~PLB*1234567890*20081231*FB:000000000000000000000000000000*-4~SE*32*159900001~GE*1*198000001~IEA*1*198000001~
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ISA*00* *00* *ZZ*498 *ZZ*123456789 *070814*1741*U*00401*000001234*0*P*:~GS*HC*123*123456789*20070814*1741*2353*X*004010X098A1~ST*837*0001~BHT*0019*00*1*20070814*1741*CH~REF*87*004010X098A1~NM1*41*2*John Doe Clinic*****46*498~PER*IC*John Doe Clinic*TE*1305862479~NM1*40*2*NONEBLUE CROSS OF OKLAHOMA*****00*1301112222~HL*1**20*1~NM1*85*2*John Doe Clinic*****XX*1134125735~N3*12 MAIN STREET~N4*CITY*ST*56789~REF*EI*76053151601~HL*2*1*22*1~SBR*P**702510******CI~NM1*IL*1*DOE*JOHN****ST*123456789~N3*123 DOE ST~N4*CITY*ST*12345~DMG*D8*20020202*M~NM1*PR*2*NONEBLUE CROSS OF OKLAHOMA*****PI*12345~N3*P O BOX 000000~N4*CITY*ST*77210~HL*3*2*23*0~PAT*19******01*239~NM1*QC*1*SMITH*DOE Q****MI*123456789~N3*12 MAIN STREET~N4*CITY*ST*56789~CLM*968928879*45***12::1*Y*A*Y*Y*C~REF*9F*2417401094~REF*D9*26485~HI*BK:8489~NM1*DN*1*DOE*JANE~REF*1G*F01234~LX*1~SV1*HC:E0114:NU*45.00*UN*1***1~DTP*472*RD8*20070515-20070515~NM1*DK*1*DOE*JANE~N3*1234 NOWHERE SUITE 100~N4*CITY*ST*56789~REF*1G*F12345~PER*IC*JOHN DOLITTLE*TE*1301112222~SE*40*0001~GE*1*2353~IEA*1*000001234~
|
data/test/test_helper.rb
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
gem 'minitest'
|
|
3
|
+
require 'minitest/autorun'
|
|
4
|
+
|
|
5
|
+
require_relative '../lib/hippo'
|
|
6
|
+
require 'pp'
|
|
7
|
+
|
|
8
|
+
module Hippo::Segments
|
|
9
|
+
class TestSimpleSegment < Hippo::Segments::Base
|
|
10
|
+
segment_identifier 'TSS'
|
|
11
|
+
|
|
12
|
+
field :name => 'Field1'
|
|
13
|
+
field :name => 'Field2'
|
|
14
|
+
field :name => 'Field3'
|
|
15
|
+
field :name => 'Field4'
|
|
16
|
+
field :name => 'CommonName'
|
|
17
|
+
field :name => 'CommonName'
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
class TestCompoundSegment < Hippo::Segments::Base
|
|
21
|
+
segment_identifier 'TCS'
|
|
22
|
+
|
|
23
|
+
composite_field 'CompositeField' do
|
|
24
|
+
field :name => 'Field1'
|
|
25
|
+
field :name => 'Field2'
|
|
26
|
+
field :name => 'Field3'
|
|
27
|
+
field :name => 'CompositeCommonName'
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
composite_field 'CompositeField' do
|
|
31
|
+
field :name => 'Field4'
|
|
32
|
+
field :name => 'Field5'
|
|
33
|
+
field :name => 'Field6'
|
|
34
|
+
field :name => 'CompositeCommonName'
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
field :name => 'Field7'
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
module Hippo::TransactionSets
|
|
42
|
+
module Test
|
|
43
|
+
class L0001 < Hippo::TransactionSets::Base
|
|
44
|
+
loop_name 'L0001'
|
|
45
|
+
|
|
46
|
+
segment Hippo::Segments::TestSimpleSegment,
|
|
47
|
+
:name => 'Test Simple Segment #1',
|
|
48
|
+
:minimum => 1,
|
|
49
|
+
:maximum => 1,
|
|
50
|
+
:position => 50
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
class L0002 < Hippo::TransactionSets::Base
|
|
54
|
+
loop_name 'L0002'
|
|
55
|
+
|
|
56
|
+
segment Hippo::Segments::TestCompoundSegment,
|
|
57
|
+
:name => 'Test Compound Segment #4',
|
|
58
|
+
:minimum => 1,
|
|
59
|
+
:maximum => 1,
|
|
60
|
+
:position => 100,
|
|
61
|
+
:defaults => {
|
|
62
|
+
'Field7' => 'Preset Field 7'
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
segment Hippo::Segments::TestSimpleSegment,
|
|
66
|
+
:name => 'Test Simple Segment #5',
|
|
67
|
+
:minimum => 1,
|
|
68
|
+
:maximum => 1,
|
|
69
|
+
:position => 50,
|
|
70
|
+
:defaults => {
|
|
71
|
+
'TSS01' => 'Last Segment'
|
|
72
|
+
}
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
class Base < Hippo::TransactionSets::Base
|
|
76
|
+
|
|
77
|
+
segment Hippo::Segments::TestSimpleSegment,
|
|
78
|
+
:name => 'Test Simple Segment #1',
|
|
79
|
+
:minimum => 1,
|
|
80
|
+
:maximum => 5,
|
|
81
|
+
:position => 50,
|
|
82
|
+
:defaults => {
|
|
83
|
+
'TSS01' => 'Blah'
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
segment Hippo::Segments::TestCompoundSegment,
|
|
87
|
+
:name => 'Test Compound Segment #2',
|
|
88
|
+
:minimum => 1,
|
|
89
|
+
:maximum => 1,
|
|
90
|
+
:position => 100,
|
|
91
|
+
:defaults => {
|
|
92
|
+
'Field7' => 'Preset Field 7'
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
segment Hippo::Segments::TestSimpleSegment,
|
|
96
|
+
:name => 'Test Simple Segment #3',
|
|
97
|
+
:minimum => 1,
|
|
98
|
+
:maximum => 1,
|
|
99
|
+
:position => 50,
|
|
100
|
+
:defaults => {
|
|
101
|
+
'TSS01' => 'Last Segment'
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
loop Hippo::TransactionSets::Test::L0001,
|
|
105
|
+
:name => 'Test Sub-Loop',
|
|
106
|
+
:identified_by => {
|
|
107
|
+
'TSS.TSS01' => 'Foo'
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
loop Hippo::TransactionSets::Test::L0002,
|
|
111
|
+
:name => 'Test Sub-Loop',
|
|
112
|
+
:maximum => 5,
|
|
113
|
+
:identified_by => {
|
|
114
|
+
'TCS.Field7' => 'Foo2'
|
|
115
|
+
}
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require_relative 'test_helper'
|
|
4
|
+
|
|
5
|
+
class TestHIPAA837 < MiniTest::Unit::TestCase
|
|
6
|
+
|
|
7
|
+
def test_commercial_health_insurance
|
|
8
|
+
=begin
|
|
9
|
+
This example file is based on the Commercial Health Insurance example (3.1.1) published in the 5010X222A1 TR3.
|
|
10
|
+
|
|
11
|
+
Patient is a different person than the Subscriber. Payer is commercial health insurance company.
|
|
12
|
+
|
|
13
|
+
SUBSCRIBER: Jane Smith
|
|
14
|
+
PATIENT ADDRESS:236 N. Main St., Miami, Fl, 33413
|
|
15
|
+
TELEPHONE NUMBER: 305-555-1111
|
|
16
|
+
SEX: F
|
|
17
|
+
DOB: 05/01/43
|
|
18
|
+
EMPLOYER: ACME Inc.
|
|
19
|
+
GROUP #: 2222-SJ
|
|
20
|
+
KEY INSURANCE COMPANY ID #: JS00111223333
|
|
21
|
+
|
|
22
|
+
PATIENT: Ted Smith
|
|
23
|
+
PATIENT ADDRESS:236 N. Main St., Miami, Fl, 33413
|
|
24
|
+
TELEPHONE NUMBER: 305-555-1111
|
|
25
|
+
SEX: M
|
|
26
|
+
DOB: 05/01/73
|
|
27
|
+
KEY INSURANCE COMPANY ID #: JS01111223333
|
|
28
|
+
|
|
29
|
+
DESTINATION PAYER: Key Insurance Company
|
|
30
|
+
PAYER ADDRESS: 3333 Ocean St. South Miami, FL 33000
|
|
31
|
+
PAYER ID: 999996666
|
|
32
|
+
|
|
33
|
+
SUBMITTER: Premier Billing Service
|
|
34
|
+
EDI#: TGJ23
|
|
35
|
+
CONTACT PERSON AND PHONE NUMBER: JERRY, 305-555-2222 ext. 231
|
|
36
|
+
|
|
37
|
+
RECEIVER: Key Insurance Company
|
|
38
|
+
EDI #:66783JJT
|
|
39
|
+
|
|
40
|
+
BILLING PROVIDER: Dr. Ben Kildare,
|
|
41
|
+
ADDRESS: 234 Seaway St, Miami, FL, 33111
|
|
42
|
+
NPI: 9876543210
|
|
43
|
+
TIN: 587654321
|
|
44
|
+
KEY INSURANCE COMPANY PROVIDER ID #: KA6663
|
|
45
|
+
Taxonomy Code: 203BF0100Y
|
|
46
|
+
|
|
47
|
+
PAY-TO PROVIDER: Kildare Associates,
|
|
48
|
+
PROVIDER ADDRESS: 2345 Ocean Blvd, Miami, Fl 33111
|
|
49
|
+
RENDERING PROVIDER: Dr. Ben Kildare
|
|
50
|
+
|
|
51
|
+
PATIENT ACCOUNT NUMBER: 2-646-3774
|
|
52
|
+
CASE: Patient has sore throat.
|
|
53
|
+
|
|
54
|
+
INITIAL VISIT: DOS=10/03/06. POS=Office
|
|
55
|
+
SERVICES: Office visit, intermediate service, established patient, throat culture.
|
|
56
|
+
CHARGES: Office first visit = $40.00, Lab test for strep = $15.00
|
|
57
|
+
|
|
58
|
+
FOLLOW-UP VISIT: DOS=10/10/06 POS=Office
|
|
59
|
+
Antibiotics didn’t work (pain continues).
|
|
60
|
+
SERVICES: Office visit, intermediate service, established patient, mono screening.
|
|
61
|
+
CHARGES: Follow-up visit = $35.00, lab test for mono = $10.00.
|
|
62
|
+
|
|
63
|
+
TOTAL CHARGES: $100.00.
|
|
64
|
+
ELECTRONIC ROUTE: Billing provider (sender), to VAN to Key Insurance Company (receiver).
|
|
65
|
+
VAN claim identification number = 17312345600006351.
|
|
66
|
+
|
|
67
|
+
=end
|
|
68
|
+
|
|
69
|
+
ts = Hippo::TransactionSets::HIPAA_837::Base.new
|
|
70
|
+
|
|
71
|
+
ts.ST do |st|
|
|
72
|
+
st.TransactionSetControlNumber = '0021'
|
|
73
|
+
st.ImplementationConventionReference = '005010X222A1'
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
ts.BHT do |bht|
|
|
77
|
+
bht.TransactionSetPurposeCode = '00'
|
|
78
|
+
bht.ReferenceIdentification = '244579'
|
|
79
|
+
bht.Date = '20061015'
|
|
80
|
+
bht.Time = '1023'
|
|
81
|
+
bht.TransactionTypeCode = 'CH'
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
ts.L1000A do |l1000a|
|
|
85
|
+
l1000a.NM1 do |nm1|
|
|
86
|
+
nm1.EntityTypeQualifier = '2'
|
|
87
|
+
nm1.NameLastOrOrganizationName = 'PREMIER BILLING SERVICE'
|
|
88
|
+
nm1.IdentificationCode = 'TGJ23'
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
l1000a.PER do |per|
|
|
92
|
+
per.Name = 'JERRY'
|
|
93
|
+
per.CommunicationNumberQualifier_01 = 'TE'
|
|
94
|
+
per.CommunicationNumber_01 = '3055552222'
|
|
95
|
+
per.CommunicationNumberQualifier_02 = 'EX'
|
|
96
|
+
per.CommunicationNumber_02 = '231'
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
ts.L1000B do |l1000b|
|
|
101
|
+
l1000b.NM1 do |nm1|
|
|
102
|
+
nm1.EntityTypeQualifier = '2'
|
|
103
|
+
nm1.NameLastOrOrganizationName = 'KEY INSURANCE COMPANY'
|
|
104
|
+
nm1.IdentificationCode = '66783JJT'
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
ts.L2000A do |l2000a|
|
|
109
|
+
l2000a.HL do |hl|
|
|
110
|
+
hl.HL01 = hl.class.increment_sequence_number
|
|
111
|
+
hl.HL04 = 1
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
l2000a.PRV do |prv|
|
|
115
|
+
prv.ReferenceIdentification = '203BF0100Y'
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
l2000a.L2010AA do |l2010aa|
|
|
119
|
+
|
|
120
|
+
l2010aa.NM1 do |nm1|
|
|
121
|
+
nm1.EntityTypeQualifier = '2'
|
|
122
|
+
nm1.NameLastOrOrganizationName = 'BEN KILDARE SERVICE'
|
|
123
|
+
nm1.IdentificationCodeQualifier = 'XX'
|
|
124
|
+
nm1.IdentificationCode = '9876543210'
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
l2010aa.N3 do |n3|
|
|
128
|
+
n3.AddressInformation = '234 SEAWAY ST'
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
l2010aa.N4 do |n4|
|
|
132
|
+
n4.CityName = 'MIAMI'
|
|
133
|
+
n4.StateOrProvinceCode = 'FL'
|
|
134
|
+
n4.PostalCode = '33111'
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
l2010aa.REF do |ref|
|
|
138
|
+
ref.ReferenceIdentificationQualifier = 'EI'
|
|
139
|
+
ref.ReferenceIdentification = '587654321'
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
l2000a.L2010AB do |l2010ab|
|
|
144
|
+
l2010ab.NM1 do |nm1|
|
|
145
|
+
nm1.EntityTypeQualifier = '2'
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
l2010ab.N3 do |n3|
|
|
149
|
+
n3.AddressInformation = '2345 OCEAN BLVD'
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
l2010ab.N4 do |n4|
|
|
153
|
+
n4.CityName = 'MIAMI'
|
|
154
|
+
n4.StateOrProvinceCode = 'FL'
|
|
155
|
+
n4.PostalCode = '33111'
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
ts.L2000B do |l2000b|
|
|
160
|
+
l2000b.HL do |hl|
|
|
161
|
+
hl.HL01 = hl.class.increment_sequence_number
|
|
162
|
+
hl.HL02 = l2000a.HL.HL01
|
|
163
|
+
hl.HL04 = 1
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
l2000b.SBR do |sbr|
|
|
167
|
+
sbr.PayerResponsibilitySequenceNumberCode = 'P'
|
|
168
|
+
sbr.ReferenceIdentification = '2222-SJ'
|
|
169
|
+
sbr.ClaimFilingIndicatorCode = 'CI'
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
l2000b.L2010BA do |l2010ba|
|
|
173
|
+
l2010ba.NM1 do |nm1|
|
|
174
|
+
nm1.EntityTypeQualifier = '1'
|
|
175
|
+
nm1.NameLastOrOrganizationName = 'SMITH'
|
|
176
|
+
nm1.NameFirst = 'JANE'
|
|
177
|
+
nm1.IdentificationCodeQualifier = 'MI'
|
|
178
|
+
nm1.IdentificationCode = 'JS00111223333'
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
l2010ba.DMG do |dmg|
|
|
182
|
+
dmg.DateTimePeriod = '19430501'
|
|
183
|
+
dmg.GenderCode = 'F'
|
|
184
|
+
end
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
l2000b.L2010BB do |l2010bb|
|
|
188
|
+
l2010bb.NM1 do |nm1|
|
|
189
|
+
nm1.EntityTypeQualifier = '2'
|
|
190
|
+
nm1.NameLastOrOrganizationName = 'KEY INSURANCE COMPANY'
|
|
191
|
+
nm1.IdentificationCodeQualifier = 'PI'
|
|
192
|
+
nm1.IdentificationCode = '999996666'
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
# second ref segment in L2010BB
|
|
196
|
+
l2010bb.REF_02 do |ref|
|
|
197
|
+
ref.ReferenceIdentificationQualifier = 'G2'
|
|
198
|
+
ref.ReferenceIdentification = 'KA6663'
|
|
199
|
+
end
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
ts.L2000C do |l2000c|
|
|
203
|
+
l2000c.HL do |hl|
|
|
204
|
+
hl.HL01 = hl.class.increment_sequence_number
|
|
205
|
+
hl.HL02 = l2000b.HL.HL01
|
|
206
|
+
hl.HL04 = 0
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
l2000c.PAT do |pat|
|
|
210
|
+
pat.IndividualRelationshipCode = '19'
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
l2000c.L2010CA do |l2010ca|
|
|
214
|
+
l2010ca.NM1 do |nm1|
|
|
215
|
+
nm1.NameLastOrOrganizationName = 'SMITH'
|
|
216
|
+
nm1.NameFirst = 'TED'
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
l2010ca.N3 do |n3|
|
|
220
|
+
n3.AddressInformation = '236 N MAIN ST'
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
l2010ca.N4 do |n4|
|
|
224
|
+
n4.CityName = 'MIAMI'
|
|
225
|
+
n4.StateOrProvinceCode = 'FL'
|
|
226
|
+
n4.PostalCode = '33413'
|
|
227
|
+
end
|
|
228
|
+
|
|
229
|
+
l2010ca.DMG do |dmg|
|
|
230
|
+
dmg.DateTimePeriod = '19730501'
|
|
231
|
+
dmg.GenderCode = 'M'
|
|
232
|
+
end
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
l2000c.L2300 do |l2300|
|
|
236
|
+
l2300.CLM do |clm|
|
|
237
|
+
clm.ClaimSubmitterSIdentifier = '26463774'
|
|
238
|
+
clm.MonetaryAmount = '100'
|
|
239
|
+
clm.FacilityCodeValue = '11'
|
|
240
|
+
clm.FacilityCodeQualifier = 'B'
|
|
241
|
+
clm.ClaimFrequencyTypeCode = '1'
|
|
242
|
+
clm.YesNoConditionOrResponseCode = 'Y'
|
|
243
|
+
clm.ProviderAcceptAssignmentCode = 'A'
|
|
244
|
+
clm.YesNoConditionOrResponseCode_02 = 'Y'
|
|
245
|
+
clm.ReleaseOfInformationCode = 'I'
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
l2300.REF_11 do |ref| #('Claim Identifier For Transmission Intermediaries') do |ref|
|
|
249
|
+
ref.ReferenceIdentification = '17312345600006351'
|
|
250
|
+
end
|
|
251
|
+
|
|
252
|
+
l2300.HI do |hi|
|
|
253
|
+
hi.CodeListQualifierCode_01 = 'BK'
|
|
254
|
+
hi.IndustryCode_01 = '0340'
|
|
255
|
+
|
|
256
|
+
hi.CodeListQualifierCode_02 = 'BF'
|
|
257
|
+
hi.IndustryCode_03 = 'V7389'
|
|
258
|
+
end
|
|
259
|
+
|
|
260
|
+
l2300.L2400.build do |l2400|
|
|
261
|
+
l2400.LX.LX01 = Hippo::Segments::LX.increment_sequence_number
|
|
262
|
+
|
|
263
|
+
l2400.SV1 do |sv1|
|
|
264
|
+
sv1.ProductServiceIdQualifier = 'HC'
|
|
265
|
+
sv1.ProductServiceId = '99213'
|
|
266
|
+
sv1.MonetaryAmount = '40'
|
|
267
|
+
sv1.UnitOrBasisForMeasurementCode = 'UN'
|
|
268
|
+
sv1.Quantity = '1'
|
|
269
|
+
sv1.DiagnosisCodePointer = 1
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
l2400.DTP('Date - Service Date') do |dtp|
|
|
273
|
+
dtp.DateTimePeriodFormatQualifier = 'D8'
|
|
274
|
+
dtp.DateTimePeriod = '20061003'
|
|
275
|
+
end
|
|
276
|
+
end
|
|
277
|
+
|
|
278
|
+
l2300.L2400.build do |l2400|
|
|
279
|
+
l2400.LX.LX01 = Hippo::Segments::LX.increment_sequence_number
|
|
280
|
+
|
|
281
|
+
l2400.SV1 do |sv1|
|
|
282
|
+
sv1.ProductServiceIdQualifier = 'HC'
|
|
283
|
+
sv1.ProductServiceId = '87070'
|
|
284
|
+
sv1.MonetaryAmount = '15'
|
|
285
|
+
sv1.UnitOrBasisForMeasurementCode = 'UN'
|
|
286
|
+
sv1.Quantity = '1'
|
|
287
|
+
sv1.DiagnosisCodePointer = 1
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
l2400.DTP('Date - Service Date') do |dtp|
|
|
291
|
+
dtp.DateTimePeriodFormatQualifier = 'D8'
|
|
292
|
+
dtp.DateTimePeriod = '20061003'
|
|
293
|
+
end
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
l2300.L2400.build do |l2400|
|
|
297
|
+
l2400.LX.LX01 = Hippo::Segments::LX.increment_sequence_number
|
|
298
|
+
|
|
299
|
+
l2400.SV1 do |sv1|
|
|
300
|
+
sv1.ProductServiceIdQualifier = 'HC'
|
|
301
|
+
sv1.ProductServiceId = '99214'
|
|
302
|
+
sv1.MonetaryAmount = '35'
|
|
303
|
+
sv1.UnitOrBasisForMeasurementCode = 'UN'
|
|
304
|
+
sv1.Quantity = '1'
|
|
305
|
+
sv1.DiagnosisCodePointer = 2
|
|
306
|
+
end
|
|
307
|
+
|
|
308
|
+
l2400.DTP('Date - Service Date') do |dtp|
|
|
309
|
+
dtp.DateTimePeriodFormatQualifier = 'D8'
|
|
310
|
+
dtp.DateTimePeriod = '20061010'
|
|
311
|
+
end
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
l2300.L2400.build do |l2400|
|
|
315
|
+
l2400.LX.LX01 = Hippo::Segments::LX.increment_sequence_number
|
|
316
|
+
|
|
317
|
+
l2400.SV1 do |sv1|
|
|
318
|
+
sv1.ProductServiceIdQualifier = 'HC'
|
|
319
|
+
sv1.ProductServiceId = '86663'
|
|
320
|
+
sv1.MonetaryAmount = '10'
|
|
321
|
+
sv1.UnitOrBasisForMeasurementCode = 'UN'
|
|
322
|
+
sv1.Quantity = '1'
|
|
323
|
+
sv1.DiagnosisCodePointer = 2
|
|
324
|
+
end
|
|
325
|
+
|
|
326
|
+
l2400.DTP('Date - Service Date') do |dtp|
|
|
327
|
+
dtp.DateTimePeriodFormatQualifier = 'D8'
|
|
328
|
+
dtp.DateTimePeriod = '20061010'
|
|
329
|
+
end
|
|
330
|
+
end
|
|
331
|
+
end
|
|
332
|
+
end
|
|
333
|
+
end
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
ts.SE do |se|
|
|
338
|
+
se.TransactionSetControlNumber = ts.ST.TransactionSetControlNumber
|
|
339
|
+
end
|
|
340
|
+
|
|
341
|
+
ts.SE.NumberOfIncludedSegments = ts.segment_count
|
|
342
|
+
|
|
343
|
+
published_answer = <<EOF
|
|
344
|
+
ST*837*0021*005010X222A1~
|
|
345
|
+
BHT*0019*00*244579*20061015*1023*CH~
|
|
346
|
+
NM1*41*2*PREMIER BILLING SERVICE*****46*TGJ23~
|
|
347
|
+
PER*IC*JERRY*TE*3055552222*EX*231~
|
|
348
|
+
NM1*40*2*KEY INSURANCE COMPANY*****46*66783JJT~
|
|
349
|
+
HL*1**20*1~
|
|
350
|
+
PRV*BI*PXC*203BF0100Y~
|
|
351
|
+
NM1*85*2*BEN KILDARE SERVICE*****XX*9876543210~
|
|
352
|
+
N3*234 SEAWAY ST~
|
|
353
|
+
N4*MIAMI*FL*33111~
|
|
354
|
+
REF*EI*587654321~
|
|
355
|
+
NM1*87*2~
|
|
356
|
+
N3*2345 OCEAN BLVD~
|
|
357
|
+
N4*MIAMI*FL*33111~
|
|
358
|
+
HL*2*1*22*1~
|
|
359
|
+
SBR*P**2222-SJ******CI~
|
|
360
|
+
NM1*IL*1*SMITH*JANE****MI*JS00111223333~
|
|
361
|
+
DMG*D8*19430501*F~
|
|
362
|
+
NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666~
|
|
363
|
+
REF*G2*KA6663~
|
|
364
|
+
HL*3*2*23*0~
|
|
365
|
+
PAT*19~
|
|
366
|
+
NM1*QC*1*SMITH*TED~
|
|
367
|
+
N3*236 N MAIN ST~
|
|
368
|
+
N4*MIAMI*FL*33413~
|
|
369
|
+
DMG*D8*19730501*M~
|
|
370
|
+
CLM*26463774*100***11:B:1*Y*A*Y*I~
|
|
371
|
+
REF*D9*17312345600006351~
|
|
372
|
+
HI*BK:0340*BF:V7389~
|
|
373
|
+
LX*1~
|
|
374
|
+
SV1*HC:99213*40*UN*1***1~
|
|
375
|
+
DTP*472*D8*20061003~
|
|
376
|
+
LX*2~
|
|
377
|
+
SV1*HC:87070*15*UN*1***1~
|
|
378
|
+
DTP*472*D8*20061003~
|
|
379
|
+
LX*3~
|
|
380
|
+
SV1*HC:99214*35*UN*1***2~
|
|
381
|
+
DTP*472*D8*20061010~
|
|
382
|
+
LX*4~
|
|
383
|
+
SV1*HC:86663*10*UN*1***2~
|
|
384
|
+
DTP*472*D8*20061010~
|
|
385
|
+
SE*42*0021~
|
|
386
|
+
EOF
|
|
387
|
+
|
|
388
|
+
assert_equal published_answer, ts.to_s.split('~').join("~\n") + "~\n"
|
|
389
|
+
|
|
390
|
+
#* not printing LX segments for each service line
|
|
391
|
+
#* HL parent/child references wrong
|
|
392
|
+
#* HL total segments counts should only be counting direct children
|
|
393
|
+
|
|
394
|
+
end
|
|
395
|
+
|
|
396
|
+
end
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
require_relative './test_helper'
|
|
2
|
+
|
|
3
|
+
class TestSegmentsBase < MiniTest::Unit::TestCase
|
|
4
|
+
def setup; end;
|
|
5
|
+
def teardown; end;
|
|
6
|
+
|
|
7
|
+
def test_empty_segment
|
|
8
|
+
seg = Hippo::Segments::TestSimpleSegment.new
|
|
9
|
+
|
|
10
|
+
assert_equal 'TSS~', seg.to_s
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def test_basic_populated_segment
|
|
14
|
+
seg = Hippo::Segments::TestSimpleSegment.new
|
|
15
|
+
|
|
16
|
+
seg.Field1 = 'TestField1'
|
|
17
|
+
seg.Field2 = 'TestField2'
|
|
18
|
+
seg.Field3 = 'TestField3'
|
|
19
|
+
seg.Field4 = 'TestField4'
|
|
20
|
+
|
|
21
|
+
assert_equal 'TSS*TestField1*TestField2*TestField3*TestField4~', seg.to_s
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_empty_field_in_segment
|
|
25
|
+
seg = Hippo::Segments::TestSimpleSegment.new
|
|
26
|
+
|
|
27
|
+
seg.Field2 = 'TestField2'
|
|
28
|
+
seg.Field3 = 'TestField3'
|
|
29
|
+
seg.Field4 = 'TestField4'
|
|
30
|
+
|
|
31
|
+
assert_equal 'TSS**TestField2*TestField3*TestField4~', seg.to_s
|
|
32
|
+
|
|
33
|
+
seg = Hippo::Segments::TestSimpleSegment.new
|
|
34
|
+
|
|
35
|
+
seg.Field2 = 'TestField2'
|
|
36
|
+
|
|
37
|
+
assert_equal 'TSS**TestField2~', seg.to_s
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_segment_orders_properly
|
|
41
|
+
seg = Hippo::Segments::TestSimpleSegment.new
|
|
42
|
+
|
|
43
|
+
seg.Field3 = 'TestField3'
|
|
44
|
+
seg.Field2 = 'TestField2'
|
|
45
|
+
seg.Field1 = 'TestField1'
|
|
46
|
+
seg.Field4 = 'TestField4'
|
|
47
|
+
|
|
48
|
+
assert_equal 'TSS*TestField1*TestField2*TestField3*TestField4~', seg.to_s
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def test_assign_values_with_same_field_names
|
|
52
|
+
seg = Hippo::Segments::TestSimpleSegment.new
|
|
53
|
+
seg.CommonName = 'Value1'
|
|
54
|
+
seg.CommonName_02 = 'Value2'
|
|
55
|
+
|
|
56
|
+
assert_equal 'TSS*****Value1*Value2~', seg.to_s
|
|
57
|
+
|
|
58
|
+
seg.CommonName_01 = 'Value3'
|
|
59
|
+
seg.CommonName_02 = 'Value4'
|
|
60
|
+
|
|
61
|
+
assert_equal 'TSS*****Value3*Value4~', seg.to_s
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def test_compound_segment
|
|
65
|
+
seg = Hippo::Segments::TestCompoundSegment.new
|
|
66
|
+
|
|
67
|
+
seg.Field1 = 'Comp1Field1'
|
|
68
|
+
seg.Field2 = 'Comp1Field2'
|
|
69
|
+
|
|
70
|
+
assert_equal 'TCS*Comp1Field1:Comp1Field2~', seg.to_s
|
|
71
|
+
|
|
72
|
+
seg.Field7 = 'Field7'
|
|
73
|
+
|
|
74
|
+
assert_equal 'TCS*Comp1Field1:Comp1Field2**Field7~', seg.to_s
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def test_compound_segment_with_empty_initial_fields
|
|
78
|
+
seg = Hippo::Segments::TestCompoundSegment.new
|
|
79
|
+
|
|
80
|
+
seg.Field2 = 'Comp1Field2'
|
|
81
|
+
|
|
82
|
+
assert_equal 'TCS*:Comp1Field2~', seg.to_s
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def test_compound_segment_assign_values_with_same_field_names
|
|
86
|
+
|
|
87
|
+
seg = Hippo::Segments::TestCompoundSegment.new
|
|
88
|
+
|
|
89
|
+
seg.CompositeCommonName = 'CompVal1'
|
|
90
|
+
seg.CompositeCommonName_02 = 'CompVal2'
|
|
91
|
+
|
|
92
|
+
assert_equal 'TCS*:::CompVal1*:::CompVal2~', seg.to_s
|
|
93
|
+
|
|
94
|
+
seg.CompositeCommonName_1 = 'CompVal3'
|
|
95
|
+
seg.CompositeCommonName_2 = 'CompVal4'
|
|
96
|
+
|
|
97
|
+
assert_equal 'TCS*:::CompVal3*:::CompVal4~', seg.to_s
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def test_assign_invalid_field_throws_error
|
|
101
|
+
assert_raises(Hippo::Exceptions::InvalidField) do
|
|
102
|
+
seg = Hippo::Segments::NM1.new
|
|
103
|
+
seg.InvalidField = 'Error should be raised.'
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|