hippo 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. data/CHANGELOG +4 -5
  2. data/README.md +10 -5
  3. data/lib/hippo/parser.rb +19 -9
  4. data/lib/hippo/transaction_sets/HIPAA_276/L2000A.rb +7 -3
  5. data/lib/hippo/transaction_sets/HIPAA_276/L2000B.rb +7 -3
  6. data/lib/hippo/transaction_sets/HIPAA_276/L2000C.rb +7 -3
  7. data/lib/hippo/transaction_sets/HIPAA_276/L2000D.rb +15 -8
  8. data/lib/hippo/transaction_sets/HIPAA_276/L2000E.rb +12 -7
  9. data/lib/hippo/transaction_sets/HIPAA_276/L2100A.rb +3 -2
  10. data/lib/hippo/transaction_sets/HIPAA_276/L2100B.rb +2 -1
  11. data/lib/hippo/transaction_sets/HIPAA_276/L2100C.rb +4 -2
  12. data/lib/hippo/transaction_sets/HIPAA_276/L2100D.rb +4 -2
  13. data/lib/hippo/transaction_sets/HIPAA_276/L2100E.rb +1 -1
  14. data/lib/hippo/transaction_sets/HIPAA_276/L2200D.rb +13 -12
  15. data/lib/hippo/transaction_sets/HIPAA_276/L2200E.rb +13 -12
  16. data/lib/hippo/transaction_sets/HIPAA_276/L2210D.rb +4 -3
  17. data/lib/hippo/transaction_sets/HIPAA_276/L2210E.rb +4 -3
  18. data/lib/hippo/transaction_sets/HIPAA_276/base.rb +31 -27
  19. data/lib/hippo/transaction_sets/HIPAA_277/L2000A.rb +11 -4
  20. data/lib/hippo/transaction_sets/HIPAA_277/L2000B.rb +13 -6
  21. data/lib/hippo/transaction_sets/HIPAA_277/L2000C.rb +13 -6
  22. data/lib/hippo/transaction_sets/HIPAA_277/L2000D.rb +12 -6
  23. data/lib/hippo/transaction_sets/HIPAA_277/L2000E.rb +11 -6
  24. data/lib/hippo/transaction_sets/HIPAA_277/L2100A.rb +4 -2
  25. data/lib/hippo/transaction_sets/HIPAA_277/L2100B.rb +2 -1
  26. data/lib/hippo/transaction_sets/HIPAA_277/L2100C.rb +4 -2
  27. data/lib/hippo/transaction_sets/HIPAA_277/L2100D.rb +3 -2
  28. data/lib/hippo/transaction_sets/HIPAA_277/L2100E.rb +1 -1
  29. data/lib/hippo/transaction_sets/HIPAA_277/L2200A.rb +3 -3
  30. data/lib/hippo/transaction_sets/HIPAA_277/L2200B.rb +10 -7
  31. data/lib/hippo/transaction_sets/HIPAA_277/L2200C.rb +14 -8
  32. data/lib/hippo/transaction_sets/HIPAA_277/L2200D.rb +13 -9
  33. data/lib/hippo/transaction_sets/HIPAA_277/L2200E.rb +12 -11
  34. data/lib/hippo/transaction_sets/HIPAA_277/L2220D.rb +7 -6
  35. data/lib/hippo/transaction_sets/HIPAA_277/L2220E.rb +5 -4
  36. data/lib/hippo/transaction_sets/HIPAA_277/base.rb +23 -20
  37. data/lib/hippo/transaction_sets/HIPAA_835/L1000A.rb +9 -6
  38. data/lib/hippo/transaction_sets/HIPAA_835/L1000B.rb +12 -5
  39. data/lib/hippo/transaction_sets/HIPAA_835/L2000.rb +6 -2
  40. data/lib/hippo/transaction_sets/HIPAA_835/L2100.rb +55 -24
  41. data/lib/hippo/transaction_sets/HIPAA_835/L2110.rb +30 -9
  42. data/lib/hippo/transaction_sets/HIPAA_835/base.rb +23 -13
  43. data/lib/hippo/transaction_sets/HIPAA_837/L1000A.rb +5 -3
  44. data/lib/hippo/transaction_sets/HIPAA_837/L1000B.rb +1 -1
  45. data/lib/hippo/transaction_sets/HIPAA_837/L2000A.rb +30 -9
  46. data/lib/hippo/transaction_sets/HIPAA_837/L2000B.rb +42 -7
  47. data/lib/hippo/transaction_sets/HIPAA_837/L2000C.rb +17 -5
  48. data/lib/hippo/transaction_sets/HIPAA_837/L2010AA.rb +14 -6
  49. data/lib/hippo/transaction_sets/HIPAA_837/L2010AB.rb +3 -2
  50. data/lib/hippo/transaction_sets/HIPAA_837/L2010AC.rb +8 -4
  51. data/lib/hippo/transaction_sets/HIPAA_837/L2010BA.rb +9 -7
  52. data/lib/hippo/transaction_sets/HIPAA_837/L2010BB.rb +11 -4
  53. data/lib/hippo/transaction_sets/HIPAA_837/L2010CA.rb +10 -6
  54. data/lib/hippo/transaction_sets/HIPAA_837/L2300.rb +116 -56
  55. data/lib/hippo/transaction_sets/HIPAA_837/L2310A.rb +6 -2
  56. data/lib/hippo/transaction_sets/HIPAA_837/L2310B.rb +8 -4
  57. data/lib/hippo/transaction_sets/HIPAA_837/L2310C.rb +6 -3
  58. data/lib/hippo/transaction_sets/HIPAA_837/L2310D.rb +5 -2
  59. data/lib/hippo/transaction_sets/HIPAA_837/L2310E.rb +1 -1
  60. data/lib/hippo/transaction_sets/HIPAA_837/L2310F.rb +1 -1
  61. data/lib/hippo/transaction_sets/HIPAA_837/L2320.rb +54 -19
  62. data/lib/hippo/transaction_sets/HIPAA_837/L2330A.rb +5 -3
  63. data/lib/hippo/transaction_sets/HIPAA_837/L2330B.rb +12 -8
  64. data/lib/hippo/transaction_sets/HIPAA_837/L2330C.rb +6 -2
  65. data/lib/hippo/transaction_sets/HIPAA_837/L2330D.rb +7 -3
  66. data/lib/hippo/transaction_sets/HIPAA_837/L2330E.rb +5 -2
  67. data/lib/hippo/transaction_sets/HIPAA_837/L2330F.rb +5 -2
  68. data/lib/hippo/transaction_sets/HIPAA_837/L2330G.rb +7 -3
  69. data/lib/hippo/transaction_sets/HIPAA_837/L2400.rb +122 -60
  70. data/lib/hippo/transaction_sets/HIPAA_837/L2410.rb +8 -2
  71. data/lib/hippo/transaction_sets/HIPAA_837/L2420A.rb +8 -4
  72. data/lib/hippo/transaction_sets/HIPAA_837/L2420B.rb +7 -3
  73. data/lib/hippo/transaction_sets/HIPAA_837/L2420C.rb +5 -2
  74. data/lib/hippo/transaction_sets/HIPAA_837/L2420D.rb +5 -2
  75. data/lib/hippo/transaction_sets/HIPAA_837/L2420E.rb +8 -4
  76. data/lib/hippo/transaction_sets/HIPAA_837/L2420F.rb +6 -2
  77. data/lib/hippo/transaction_sets/HIPAA_837/L2420G.rb +1 -1
  78. data/lib/hippo/transaction_sets/HIPAA_837/L2420H.rb +1 -1
  79. data/lib/hippo/transaction_sets/HIPAA_837/L2430.rb +6 -3
  80. data/lib/hippo/transaction_sets/HIPAA_837/L2440.rb +4 -1
  81. data/lib/hippo/transaction_sets/HIPAA_837/base.rb +23 -32
  82. data/lib/hippo/transaction_sets/HIPAA_999/L2000AK2.rb +9 -3
  83. data/lib/hippo/transaction_sets/HIPAA_999/L2100AK2.rb +9 -3
  84. data/lib/hippo/transaction_sets/HIPAA_999/L2110AK2.rb +4 -1
  85. data/lib/hippo/transaction_sets/HIPAA_999/base.rb +6 -3
  86. data/lib/hippo/transaction_sets/base.rb +87 -72
  87. data/lib/hippo/transaction_sets/component.rb +80 -0
  88. data/lib/hippo/transaction_sets/repeating_component.rb +30 -0
  89. data/lib/hippo/transaction_sets.rb +8 -6
  90. data/lib/hippo/version.rb +1 -1
  91. data/samples/005010X221A1_business_scenario_1.edi +1 -0
  92. data/samples/005010X221A1_tmhp_example.edi +1 -0
  93. data/samples/005010X222A1_anesthesia.edi +1 -0
  94. data/samples/005010X222A1_commercial_health_insurance.edi +1 -0
  95. data/test/test_helper.rb +6 -6
  96. data/test/test_hipaa_835.rb +229 -0
  97. data/test/test_hipaa_837.rb +263 -63
  98. data/test/test_parser.rb +26 -0
  99. data/test/test_segments_base.rb +1 -1
  100. data/test/test_transaction_sets_base.rb +21 -1
  101. metadata +17 -16
  102. data/bin/demo_270.rb +0 -280
  103. data/bin/demo_276.rb +0 -296
  104. data/bin/demo_835.rb +0 -170
  105. data/lib/hippo/samples/835.edi +0 -88
  106. data/lib/hippo/samples/sample_835_with.rb +0 -272
  107. data/lib/hippo/samples/sample_parsed.rb +0 -1162
data/bin/demo_835.rb DELETED
@@ -1,170 +0,0 @@
1
- require './lib/hippo.rb'
2
- require 'faker'
3
-
4
- module Hippo
5
- class Demo835
6
- def self.run
7
- ts = Hippo::TransactionSets::HIPAA_835::Base.new
8
-
9
- ts.ST do |seg|
10
- seg.TransactionSetIdentifierCode = rand(10 * 100)
11
- seg.TransactionSetControlNumber = rand(10 * 100)
12
- end
13
-
14
- ts.BPR do |seg|
15
- seg.TransactionHandlingCode = 'C'
16
- seg.MonetaryAmount = rand(10 * 100).to_f
17
- seg.CreditDebitFlagCode = 'C'
18
- seg.PaymentMethodCode = 'ACH'
19
- seg.PaymentFormatCode = 'CCP'
20
- seg.DFIIdNumberQualifier1 = rand(10 * 100)
21
- seg.AccountNumberQualifier1 = rand(10 * 100)
22
- seg.Date = "19951104"
23
- seg.BusinessFunctionCode = "Col"
24
- seg.DFIIdNumberQualifier3 = "02"
25
- seg.AccountNumberQualifier3 = "3"
26
- end
27
-
28
- ts.TRN do |seg|
29
- seg.TraceTypeCode = rand(10 * 100)
30
- seg.ReferenceIdentification1 = rand(10 * 100)
31
- seg.OriginatingCompanyIdentifier = rand(10 * 100)
32
- seg.ReferenceIdentification2 = rand(10 * 100)
33
- end
34
-
35
- ts.REF do |seg|
36
- seg.ReferenceIdentificationQualifier = "00"
37
- seg.ReferenceIdentification = "R0203"
38
- seg.Description = "Description"
39
- seg.ReferenceIdentifier = "1241"
40
- end
41
-
42
- ts.REF do |seg|
43
- seg.ReferenceIdentificationQualifier = "URL"
44
- seg.ReferenceIdentification = "R0203"
45
- seg.Description = "Description"
46
- seg.ReferenceIdentifier = "1241"
47
- end
48
-
49
- ts.DTM do |seg|
50
- seg.DateTimeQualifier = "002"
51
- seg.Date = "19451104"
52
- end
53
-
54
-
55
- ts.L1000A do |loop|
56
- loop.N1 do |seg|
57
- seg.EntityIdentifierCode1 = "PR"
58
- seg.Name = Faker::Name.name
59
- end
60
- loop.N3 do |seg|
61
- seg.AddressInformation1 = Faker::Address.street_address
62
- seg.AddressInformation2 = "#{Faker::Address.city} #{Faker::Address.us_state} #{Faker::Address.zip_code}"
63
- end
64
- loop.N4 do |seg|
65
- seg.CityName = Faker::Address.city
66
- seg.StateOrProvinceCode = Faker::Address.us_state_abbr
67
- seg.PostalCode = Faker::Address.zip_code
68
- seg.CountryCode = "US"
69
- end
70
- loop.REF do |seg|
71
- seg.ReferenceIdentificationQualifier = "URL"
72
- seg.ReferenceIdentification = "R0203"
73
- seg.Description = "Description"
74
- seg.ReferenceIdentifier = "1241"
75
- end
76
- loop.PER do |seg|
77
- seg.ContactFunctionCode = "1A"
78
- seg.Name = Faker::Name.name
79
- end
80
- end
81
-
82
- ts.L1000B do |loop|
83
- loop.N1 do |seg|
84
- seg.EntityIdentifierCode1 = "PR"
85
- seg.Name = Faker::Name.name
86
- end
87
- loop.N3 do |seg|
88
- seg.AddressInformation1 = Faker::Address.street_address
89
- seg.AddressInformation2 = "#{Faker::Address.city} #{Faker::Address.us_state} #{Faker::Address.zip_code}"
90
- end
91
- loop.N4 do |seg|
92
- seg.CityName = Faker::Address.city
93
- seg.StateOrProvinceCode = Faker::Address.us_state_abbr
94
- seg.PostalCode = Faker::Address.zip_code
95
- seg.CountryCode = "US"
96
- end
97
- loop.REF do |seg|
98
- seg.ReferenceIdentificationQualifier = "URL"
99
- seg.ReferenceIdentification = "R0203"
100
- seg.Description = "Description"
101
- seg.ReferenceIdentifier = "1241"
102
- end
103
- end
104
-
105
- 5.times do |i|
106
- ts.L2000 do |loop|
107
-
108
- loop.LX do |seg|
109
- seg.AssignedNumber = i
110
- end
111
-
112
- loop.TS3 do |seg|
113
- seg.ReferenceIdentification = "Provider Identifier"
114
- seg.FacilityCodeValue = "Facility Type Code"
115
- seg.Date = "20051104"
116
- seg.Quantity1 = 5
117
- seg.MonetaryAmount1 = rand(10 * 100).to_f
118
- seg.MonetaryAmount2 = rand(10 * 100).to_f
119
- seg.MonetaryAmount3 = rand(10 * 100).to_f
120
- seg.MonetaryAmount4 = rand(10 * 100).to_f
121
- seg.MonetaryAmount5 = rand(10 * 100).to_f
122
- seg.MonetaryAmount6 = rand(10 * 100).to_f
123
- seg.MonetaryAmount7 = rand(10 * 100).to_f
124
- seg.Quantity2 = rand(10 * 100)
125
- end
126
-
127
- loop.TS2 do |seg|
128
- seg.MonetaryAmount1 = rand(10 * 100).to_f
129
- seg.MonetaryAmount2 = rand(10 * 100).to_f
130
- seg.MonetaryAmount3 = rand(10 * 100).to_f
131
- seg.MonetaryAmount4 = rand(10 * 100).to_f
132
- seg.MonetaryAmount5 = rand(10 * 100).to_f
133
- seg.MonetaryAmount6 = rand(10 * 100).to_f
134
- end
135
-
136
- 2.times do |i|
137
- loop.L2100 do |sub_loop|
138
-
139
- sub_loop.CLP do |seg|
140
- seg.ClaimSubmittersIdentifier = rand(10 * 100).to_f
141
- seg.ClaimStatusCode = "1"
142
- seg.MonetaryAmount1 = rand(10 * 100).to_f
143
- seg.ClaimFilingIndicatorCode = "01"
144
- seg.YesNoConditionOrResponseCode = "Y"
145
- end
146
-
147
- sub_loop.CAS do |seg|
148
- seg.ClaimAdjustmentGroupCode = "CO"
149
- seg.ClaimAdjustmentReasonCode1 = "139"
150
- seg.MonetaryAmount1 = rand(10 * 100).to_f
151
- end
152
-
153
- sub_loop.NM1 do |seg|
154
- seg.EntityIdentifierCode1 = "00"
155
- seg.EntityTypeQualifier = 1
156
- seg.NameLastOrOrganizationName = Faker::Name.name
157
- seg.NameFirst = Faker::Name.first_name
158
- end
159
- end
160
- end
161
- end
162
- puts ts.to_s
163
- end
164
- end
165
- end
166
- end
167
-
168
- if __FILE__ == $0
169
- Hippo::Demo835.run
170
- end
@@ -1,88 +0,0 @@
1
- ISA*00* *00* *ZZ*SENDER *ZZ*RECEIVER *080319*2327*U*00401*002721171*0*P*:~
2
- GS*HC*SENDER*RECEIVER*20080319*2327*27211711*X*004010X091A1~
3
- ST*835*1234~
4
- BPR*C*150000*C*ACH*CTX*01*999999992*DA*123456
5
- *1512345678**01*999988880*DA*98765*19960913~
6
- TRN*1*12345*1512345678~
7
- DTM*405*19960916~
8
- N1*PR*INSURANCE COMPANY OF TIMBUCKTU~
9
- N3*1 MAIN STREET~
10
- N4*TIMBUCKTU*AK*89111~
11
- REF*2U*999~
12
- N1*PE*CYBIL MENTAL HOSPITAL*XX*6543210903~
13
- PLB*130035*20070930*72>PR*-12123.66~
14
- SE*28*1234~
15
- ST*835*1234~
16
- BPR*C*150000*C*ACH*CTX*01*999999992*DA*123456
17
- *1512345678**01*999988880*DA*98765*19960913~
18
- TRN*1*12345*1512345678~
19
- DTM*405*19960916~
20
- N1*PR*INSURANCE COMPANY OF TIMBUCKTU~
21
- N3*1 MAIN STREET~
22
- N4*TIMBUCKTU*AK*89111~
23
- REF*2U*999~
24
- N1*PE*CYBIL MENTAL HOSPITAL*XX*6543210903~
25
- LX*961211~
26
- TS3*6543210903*11*19961231*1*211366.97*138018.4***
27
- 138018.4**73348.57~
28
- TS2*2178.45*1919.71**56.82*197.69*4.23~
29
- CLP*666123*1*211366.97*138018.4**MA*1999999444444*
30
- 11*1~
31
- CAS*CO*A2*73348.57~
32
- NM1*QC*1*SHEPARD*SAM*O***HN*666666666A~
33
- MIA*0***138018.4~
34
- DTM*232*19960816~
35
- DTM*233*19960824~
36
- QTY*CA*8~
37
- LX*961213~
38
- TS3*6543210909*13*19961231*1*15000*15000**
39
- *11980.33**3019.67~
40
- CLP*777777*1*15000*11980.33**MB*1999999444445*13*
41
- 1~
42
- CAS*CO*A2*3019.67~
43
- NM1*QC*1*BORDEN*LIZ*E***HN*996669999B~
44
- NM1*82*2*CYBIL MENTAL HOSPITAL*****XX*6543210903~
45
- MIA*0****MA130~
46
- REF*EA*00000000012345~
47
- DTM*050*19960128~
48
- DTM*232*19961214~
49
- DTM*233*19961216~
50
- SVC*NU:0111*2000*0****2~
51
- DTM*472*19961216~
52
- CAS*CO*22*2000*2~
53
- SVC*NU:0250*1113.08*0****217~
54
- DTM*472*19961216~
55
- CAS*CO*22*1113.08*217~
56
- SVC*NU:0270*349.4*0****8~
57
- DTM*472*19961216~
58
- CAS*CO*22*349.4*8~
59
- SVC*NU:0301*747.65*0****16~
60
- DTM*472*19961216~
61
- CAS*CO*22*747.65*16~
62
- SVC*NU:0305*187.53*0****5~
63
- DTM*472*19961216~
64
- CAS*CO*22*187.53*5~
65
- SVC*NU:0320*375.73*0****2~
66
- DTM*472*19961216~
67
- CAS*CO*22*375.73*2~
68
- SVC*NU:0324*365.87*0****2~
69
- DTM*472*19961216~
70
- CAS*CO*22*365.87*2~
71
- SVC*NU:0410*222.5*0****4~
72
- DTM*472*19961216~
73
- CAS*CO*22*222.5*4~
74
- SVC*NU:0450*715.55*0****1~
75
- DTM*472*19961216~
76
- CAS*CO*22*715.55*1~
77
- SVC*NU:0460*230*0****4~
78
- DTM*472*19961216~
79
- CAS*CO*22*230*4~
80
- SVC*NU:0730*256.86*0****2~
81
- DTM*472*19961216~
82
- CAS*CO*22*256.86*2~
83
- SVC*NU:0801*1550*0****2~
84
- DTM*472*19961216~
85
- CAS*CO*22*1550*2~
86
- SE*28*1234~
87
- GE*1*27211711~
88
- IEA*1*002721171~
@@ -1,272 +0,0 @@
1
- require 'rubygems'
2
- require 'pp'
3
- s = "ISA*00* *00* *ZZ*SENDER *ZZ*RECEIVER *080319*2327*U*00401*002721171*0*P*:~
4
- GS*HC*SENDER*RECEIVER*20080319*2327*27211711*X*004010X091A1~
5
- ST*835*1234~
6
- BPR*C*150000*C*ACH*CTX*01*999999992*DA*123456
7
- *1512345678**01*999988880*DA*98765*19960913~
8
- TRN*1*12345*1512345678~
9
- DTM*405*19960916~
10
- N1*PR*INSURANCE COMPANY OF TIMBUCKTU~
11
- N3*1 MAIN STREET~
12
- N4*TIMBUCKTU*AK*89111~
13
- REF*2U*999~
14
- N1*PE*CYBIL MENTAL HOSPITAL*XX*6543210903~
15
- LX*961211~
16
- TS3*6543210903*11*19961231*1*211366.97*138018.4***
17
- 138018.4**73348.57~
18
- TS2*2178.45*1919.71**56.82*197.69*4.23~
19
- CLP*666123*1*211366.97*138018.4**MA*1999999444444*
20
- 11*1~
21
- CAS*CO*A2*73348.57~
22
- NM1*QC*1*SHEPARD*SAM*O***HN*666666666A~
23
- MIA*0***138018.4~
24
- DTM*232*19960816~
25
- DTM*233*19960824~
26
- QTY*CA*8~
27
- LX*961213~
28
- TS3*6543210909*13*19961231*1*15000*15000**
29
- *11980.33**3019.67~
30
- CLP*777777*1*15000*11980.33**MB*1999999444445*13*
31
- 1~
32
- CAS*CO*A2*3019.67~
33
- NM1*QC*1*BORDEN*LIZ*E***HN*996669999B~
34
- NM1*82*2*CYBIL MENTAL HOSPITAL*****XX*6543210903~
35
- MIA*0****MA130~
36
- REF*EA*00000000012345~
37
- DTM*050*19960128~
38
- DTM*232*19961214~
39
- DTM*233*19961216~
40
- SVC*NU:0111*2000*0****2~
41
- DTM*472*19961216~
42
- CAS*CO*22*2000*2~
43
- SVC*NU:0250*1113.08*0****217~
44
- DTM*472*19961216~
45
- CAS*CO*22*1113.08*217~
46
- SVC*NU:0270*349.4*0****8~
47
- DTM*472*19961216~
48
- CAS*CO*22*349.4*8~
49
- SVC*NU:0301*747.65*0****16~
50
- DTM*472*19961216~
51
- CAS*CO*22*747.65*16~
52
- SVC*NU:0305*187.53*0****5~
53
- DTM*472*19961216~
54
- CAS*CO*22*187.53*5~
55
- SVC*NU:0320*375.73*0****2~
56
- DTM*472*19961216~
57
- CAS*CO*22*375.73*2~
58
- SVC*NU:0324*365.87*0****2~
59
- DTM*472*19961216~
60
- CAS*CO*22*365.87*2~
61
- SVC*NU:0410*222.5*0****4~
62
- DTM*472*19961216~
63
- CAS*CO*22*222.5*4~
64
- SVC*NU:0450*715.55*0****1~
65
- DTM*472*19961216~
66
- CAS*CO*22*715.55*1~
67
- SVC*NU:0460*230*0****4~
68
- DTM*472*19961216~
69
- CAS*CO*22*230*4~
70
- SVC*NU:0730*256.86*0****2~
71
- DTM*472*19961216~
72
- CAS*CO*22*256.86*2~
73
- SVC*NU:0801*1550*0****2~
74
- DTM*472*19961216~
75
- CAS*CO*22*1550*2~
76
- SE*28*1234~
77
- ST*835*1234~
78
- BPR*C*150000*C*ACH*CTX*01*999999992*DA*123456
79
- *1512345678**01*999988880*DA*98765*19960913~
80
- TRN*1*12345*1512345678~
81
- DTM*405*19960916~
82
- N1*PR*INSURANCE COMPANY OF TIMBUCKTU~
83
- N3*1 MAIN STREET~
84
- N4*TIMBUCKTU*AK*89111~
85
- REF*2U*999~
86
- N1*PE*CYBIL MENTAL HOSPITAL*XX*6543210903~
87
- LX*961211~
88
- TS3*6543210903*11*19961231*1*211366.97*138018.4***
89
- 138018.4**73348.57~
90
- TS2*2178.45*1919.71**56.82*197.69*4.23~
91
- CLP*666123*1*211366.97*138018.4**MA*1999999444444*
92
- 11*1~
93
- CAS*CO*A2*73348.57~
94
- NM1*QC*1*SHEPARD*SAM*O***HN*666666666A~
95
- MIA*0***138018.4~
96
- DTM*232*19960816~
97
- DTM*233*19960824~
98
- QTY*CA*8~
99
- LX*961213~
100
- TS3*6543210909*13*19961231*1*15000*15000**
101
- *11980.33**3019.67~
102
- CLP*777777*1*15000*11980.33**MB*1999999444445*13*
103
- 1~
104
- CAS*CO*A2*3019.67~
105
- NM1*QC*1*JONES*LEN*E***HN*996669999B~
106
- MOA***MA02~
107
- DTM*232*19960512~
108
- PLB*6543210903*19961231*CV:CP*-1.27~
109
- SE*28*1234~
110
- ST*835*1234~
111
- BPR*C*150000*C*ACH*CTX*01*999999992*DA*123456
112
- *1512345678**01*999988880*DA*98765*19960913~
113
- TRN*1*12345*1512345678~
114
- DTM*405*19960916~
115
- N1*PR*INSURANCE COMPANY OF TIMBUCKTU~
116
- N3*1 MAIN STREET~
117
- N4*TIMBUCKTU*AK*89111~
118
- REF*2U*999~
119
- N1*PE*CYBIL MENTAL HOSPITAL*XX*6543210903~
120
- LX*961211~
121
- TS3*6543210903*11*19961231*1*211366.97*138018.4***
122
- 138018.4**73348.57~
123
- TS2*2178.45*1919.71**56.82*197.69*4.23~
124
- CLP*666123*1*211366.97*138018.4**MA*1999999444444*
125
- 11*1~
126
- CAS*CO*A2*73348.57~
127
- NM1*QC*1*SMITH*JOE*E***HN*666666666A~
128
- MIA*0***138018.4~
129
- DTM*232*19960816~
130
- DTM*233*19960824~
131
- QTY*CA*8~
132
- LX*961213~
133
- TS3*6543210909*13*19961231*1*15000*15000**
134
- *11980.33**3019.67~
135
- CLP*777777*1*15000*11980.33**MB*1999999444445*13*
136
- 1~
137
- CAS*CO*A2*3019.67~
138
- NM1*QC*1*BORDEN*LIZ*E***HN*996669999B~
139
- NM1*82*2*CYBIL MENTAL HOSPITAL*****XX*6543210903~
140
- MIA*0****MA130~
141
- REF*EA*00000000012345~
142
- DTM*050*19960128~
143
- DTM*232*19961214~
144
- DTM*233*19961216~
145
- SVC*NU:0111*2000*0****2~
146
- DTM*472*19961216~
147
- CAS*CO*22*2000*2~
148
- SVC*NU:0250*1113.08*0****217~
149
- DTM*472*19961216~
150
- CAS*CO*22*1113.08*217~
151
- SVC*NU:0270*349.4*0****8~
152
- DTM*472*19961216~
153
- CAS*CO*22*349.4*8~
154
- SVC*NU:0301*747.65*0****16~
155
- DTM*472*19961216~
156
- CAS*CO*22*747.65*16~
157
- SVC*NU:0305*187.53*0****5~
158
- DTM*472*19961216~
159
- CAS*CO*22*187.53*5~
160
- SVC*NU:0320*375.73*0****2~
161
- DTM*472*19961216~
162
- CAS*CO*22*375.73*2~
163
- SVC*NU:0324*365.87*0****2~
164
- DTM*472*19961216~
165
- CAS*CO*22*365.87*2~
166
- SVC*NU:0410*222.5*0****4~
167
- DTM*472*19961216~
168
- CAS*CO*22*222.5*4~
169
- SVC*NU:0450*715.55*0****1~
170
- DTM*472*19961216~
171
- CAS*CO*22*715.55*1~
172
- SVC*NU:0460*230*0****4~
173
- DTM*472*19961216~
174
- CAS*CO*22*230*4~
175
- SVC*NU:0730*256.86*0****2~
176
- DTM*472*19961216~
177
- CAS*CO*22*256.86*2~
178
- SVC*NU:0801*1550*0****2~
179
- DTM*472*19961216~
180
- CAS*CO*22*1550*2~
181
- SE*28*1234~
182
- ST*835*1234~
183
- BPR*C*150000*C*ACH*CTX*01*999999992*DA*123456
184
- *1512345678**01*999988880*DA*98765*19960913~
185
- TRN*1*12345*1512345678~
186
- DTM*405*19960916~
187
- N1*PR*INSURANCE COMPANY OF TIMBUCKTU~
188
- N3*1 MAIN STREET~
189
- N4*TIMBUCKTU*AK*89111~
190
- REF*2U*999~
191
- N1*PE*CYBIL MENTAL HOSPITAL*XX*6543210903~
192
- LX*961211~
193
- TS3*6543210903*11*19961231*1*211366.97*138018.4***
194
- 138018.4**73348.57~
195
- TS2*2178.45*1919.71**56.82*197.69*4.23~
196
- CLP*666123*1*211366.97*138018.4**MA*1999999444444*
197
- 11*1~
198
- CAS*CO*A2*73348.57~
199
- NM1*QC*1*SHEPARD*SAM*O***HN*666666666A~
200
- MIA*0***138018.4~
201
- DTM*232*19960816~
202
- DTM*233*19960824~
203
- QTY*CA*8~
204
- LX*961213~
205
- TS3*6543210909*13*19961231*1*15000*15000**
206
- *11980.33**3019.67~
207
- CLP*777777*1*15000*11980.33**MB*1999999444445*13*
208
- 1~
209
- CAS*CO*A2*3019.67~
210
- NM1*QC*1*BORDEN*LIZ*E***HN*996669999B~
211
- MOA***MA02~
212
- DTM*232*19960512~
213
- PLB*6543210903*19961231*CV:CP*-1.27~
214
- SE*28*1234~
215
- GE*1*27211711~
216
- IEA*1*002721171~"
217
-
218
- @segments = []
219
- segments = s.gsub("\n", "").split(/~/)
220
- segments.each do |segment|
221
- @segment = {
222
- segment[0,3].gsub("*", "").ljust(3) => segment.gsub(" ", "").
223
- gsub(":", "").
224
- split(/\*/)
225
- }
226
- @segments << @segment
227
- end
228
-
229
-
230
- @output = ''
231
-
232
- @output += "ts = Hippo::TransactionSets::HIPAA_835::Base.new" #Transaction set start
233
-
234
- @segments.each do |segmento|
235
- segmento.each do |key, value|
236
- i = 0
237
- value.each do |x|
238
- seg = (key.to_s + "%02d" % i).gsub(" ", "")
239
- unless x == "" #start unless
240
- case #start meta case
241
- when seg =~ /LX01/
242
- @output += " seg.#{seg} = #{x} #LX - Possible Loop" + "\n"
243
- when seg =~ /#{x.to_s}/
244
- @output += " end"+ "\n\n"
245
- @output += " ts.#{key.upcase} do |seg|" + "\n" #segment loop
246
- else
247
- case #start sub-case
248
- when x.to_i == 0
249
- @output += " seg.#{seg} = '#{x}'" + "\n" #segments
250
- when x.to_i != 0
251
- @output += " seg.#{seg} = rand(10 ** #{x.length})" + "\n"
252
- end #end sub-case
253
- end #end meta-case
254
- i += 1
255
- end #end unless
256
- end
257
- end
258
- end
259
-
260
- @output += " end" + "\n" + "end" #Transaction set end
261
-
262
- File.open("./sample_parsed.rb", "w") do |line|
263
- line.write(@output)
264
- end
265
- puts @output
266
-
267
-
268
-
269
-
270
-
271
-
272
-