hippo 0.5.4 → 0.5.5
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +5 -0
- data/hippo.gemspec +1 -0
- data/lib/hippo/outputters.rb +2 -1
- data/lib/hippo/outputters/pretty_string.rb +45 -0
- data/lib/hippo/segments/base.rb +1 -0
- data/lib/hippo/transaction_sets/base.rb +1 -0
- data/lib/hippo/transaction_sets/repeating_component.rb +1 -0
- data/lib/hippo/version.rb +1 -1
- data/samples/sample835.html +1 -0
- data/samples/sample835.pretty_string +28 -0
- data/samples/sample837.html +1 -0
- data/test/test_html_outputter.rb +6 -3
- data/test/test_pretty_string_outputter.rb +33 -0
- metadata +11 -4
data/CHANGELOG
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
0.5.5 - 2013/08/06
|
2
|
+
* Add license to gemspec.
|
3
|
+
* Add .to_pretty_string method to allow pretty printing.
|
4
|
+
* Setup #pretty_print method on TransactionSet and RepeatingComponent to
|
5
|
+
allow pp to work properly.
|
1
6
|
0.5.4 - 2013/08/06
|
2
7
|
* Handle whitespace prefixed segment identifiers. This allows you to parse a
|
3
8
|
file that has been output with indentation (to signify loops/segments).
|
data/hippo.gemspec
CHANGED
@@ -11,6 +11,7 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.homepage = "http://github.com/promedical/hippo"
|
12
12
|
s.summary = %q{HIPAA Transaction Set Generator/Parser}
|
13
13
|
s.description = %q{HIPAA Transaction Set Generator/Parser}
|
14
|
+
s.license = 'BSD 2-Clause'
|
14
15
|
|
15
16
|
s.rubyforge_project = "hippo"
|
16
17
|
|
data/lib/hippo/outputters.rb
CHANGED
@@ -0,0 +1,45 @@
|
|
1
|
+
module Hippo::Outputters
|
2
|
+
module PrettyString
|
3
|
+
module TransactionSet
|
4
|
+
def pretty_print(pp)
|
5
|
+
pp.text to_pretty_string
|
6
|
+
end
|
7
|
+
|
8
|
+
def to_pretty_string(indent_level = 0)
|
9
|
+
output = ''
|
10
|
+
|
11
|
+
values.sort.each do |sequence, component|
|
12
|
+
component_definition = self.class.components[sequence]
|
13
|
+
|
14
|
+
extra_indent = if component_definition.klass.ancestors.include?(Hippo::TransactionSets::Base)
|
15
|
+
2
|
16
|
+
elsif sequence == 0
|
17
|
+
0
|
18
|
+
else
|
19
|
+
2
|
20
|
+
end
|
21
|
+
|
22
|
+
output += component.to_pretty_string(indent_level + extra_indent)
|
23
|
+
end
|
24
|
+
|
25
|
+
output
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
module RepeatingComponent
|
30
|
+
def pretty_print(pp)
|
31
|
+
pp.text to_pretty_string
|
32
|
+
end
|
33
|
+
|
34
|
+
def to_pretty_string(indent_level = 0)
|
35
|
+
map{|component| component.to_pretty_string(indent_level)}.join
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
module Segment
|
40
|
+
def to_pretty_string(indent_level = 0)
|
41
|
+
' ' * indent_level + to_s + "\n"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/lib/hippo/segments/base.rb
CHANGED
@@ -4,6 +4,7 @@ module Hippo::TransactionSets
|
|
4
4
|
include Hippo::Parser::TransactionSet
|
5
5
|
include Hippo::Outputters::HTML::TransactionSet
|
6
6
|
include Hippo::Outputters::PDF::TransactionSet
|
7
|
+
include Hippo::Outputters::PrettyString::TransactionSet
|
7
8
|
|
8
9
|
class << self
|
9
10
|
attr_accessor :components, :identifier
|
@@ -2,6 +2,7 @@ module Hippo::TransactionSets
|
|
2
2
|
class RepeatingComponent < Array
|
3
3
|
include Hippo::Outputters::HTML::RepeatingComponent
|
4
4
|
include Hippo::Outputters::PDF::RepeatingComponent
|
5
|
+
include Hippo::Outputters::PrettyString::RepeatingComponent
|
5
6
|
|
6
7
|
def initialize(component_entry, parent)
|
7
8
|
@component_entry = component_entry
|
data/lib/hippo/version.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
<fieldset class="hippo-transaction-set"><legend>HIPAA_835::Base</legend><span class="hippo-segment-name">Transaction Set Header</span><span class="hippo-segment-data">ST*835*1234~</span><br/><span class="hippo-segment-name">Financial Information</span><span class="hippo-segment-data">BPR*C*150000*C*ACH*CTX*01*999999992*DA*123456*1512345678**01*999988880*DA*98765*20020913~</span><br/><span class="hippo-segment-name">Reassociation Trace Number</span><span class="hippo-segment-data">TRN*1*12345*1512345678~</span><br/><span class="hippo-segment-name">Production Date</span><span class="hippo-segment-data">DTM*405*20020916~</span><br/><fieldset class="hippo-component"><legend>HIPAA_835::L1000A - Payer Identification</legend><span class="hippo-segment-name">Payer Identification</span><span class="hippo-segment-data">N1*PR*INSURANCE COMPANY OF TIMBUCKTU~</span><br/><span class="hippo-segment-name">Payer Address</span><span class="hippo-segment-data">N3*1 MAIN STREET~</span><br/><span class="hippo-segment-name">Payer City, State, ZIP Code</span><span class="hippo-segment-data">N4*TIMBUCKTU*AK*89111~</span><br/><span class="hippo-segment-name">Additional Payer Identification</span><span class="hippo-segment-data">REF*2U*999~</span><br/></fieldset><fieldset class="hippo-component"><legend>HIPAA_835::L1000B - Payee Identification</legend><span class="hippo-segment-name">Payee Identification</span><span class="hippo-segment-data">N1*PE*REGIONAL HOPE HOSPITAL*XX*6543210903~</span><br/></fieldset><fieldset class="hippo-component"><legend>HIPAA_835::L2000 - Header Number</legend><span class="hippo-segment-name">Header Number</span><span class="hippo-segment-data">LX*110212~</span><br/><span class="hippo-segment-name">Provider Summary Information</span><span class="hippo-segment-data">TS3*6543210903*11*20021231*1*211366.97****138018.4**73348.57~</span><br/><span class="hippo-segment-name">Provider Supplemental Summary Information</span><span class="hippo-segment-data">TS2*2178.45*1919.71**56.82*197.69*4.23~</span><br/><fieldset class="hippo-component"><legend>HIPAA_835::L2100 - Claim Payment Information</legend><span class="hippo-segment-name">Claim Payment Information</span><span class="hippo-segment-data">CLP*666123*1*211366.97*138018.4**MA*1999999444444*11*1~</span><br/><span class="hippo-segment-name">Claim Adjustment</span><span class="hippo-segment-data">CAS*CO*45*73348.57~</span><br/><span class="hippo-segment-name">Patient Name</span><span class="hippo-segment-data">NM1*QC*1*JONES*SAM*O***HN*666666666A~</span><br/><span class="hippo-segment-name">Inpatient Adjudication Information</span><span class="hippo-segment-data">MIA*0***138018.4~</span><br/><span class="hippo-segment-name">Statement From or To Date</span><span class="hippo-segment-data">DTM*232*20020816~DTM*233*20020824~</span><br/><span class="hippo-segment-name">Claim Supplemental Information Quantity</span><span class="hippo-segment-data">QTY*CA*8~</span><br/></fieldset><span class="hippo-segment-name">Header Number</span><span class="hippo-segment-data">LX*130212~</span><br/><span class="hippo-segment-name">Provider Summary Information</span><span class="hippo-segment-data">TS3*6543210909*13*19961231*1*15000****11980.33**3019.67~</span><br/><fieldset class="hippo-component"><legend>HIPAA_835::L2100 - Claim Payment Information</legend><span class="hippo-segment-name">Claim Payment Information</span><span class="hippo-segment-data">CLP*777777*1*15000*11980.33**MB*1999999444445*13*1~</span><br/><span class="hippo-segment-name">Claim Adjustment</span><span class="hippo-segment-data">CAS*CO*45*3019.67~</span><br/><span class="hippo-segment-name">Patient Name</span><span class="hippo-segment-data">NM1*QC*1*BORDER*LIZ*E***HN*996669999B~</span><br/><span class="hippo-segment-name">Outpatient Adjudication Information</span><span class="hippo-segment-data">MOA***MA02~</span><br/><span class="hippo-segment-name">Statement From or To Date</span><span class="hippo-segment-data">DTM*232*20020512~</span><br/></fieldset></fieldset><span class="hippo-segment-name">Provider Adjustment</span><span class="hippo-segment-data">PLB*6543210903*20021231*CV:CP*-1.27~</span><br/><span class="hippo-segment-name">Transaction Set Trailer</span><span class="hippo-segment-data">SE*28*1234~</span><br/></fieldset>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
ST*835*1234~
|
2
|
+
BPR*C*150000*C*ACH*CTX*01*999999992*DA*123456*1512345678**01*999988880*DA*98765*20020913~
|
3
|
+
TRN*1*12345*1512345678~
|
4
|
+
DTM*405*20020916~
|
5
|
+
N1*PR*INSURANCE COMPANY OF TIMBUCKTU~
|
6
|
+
N3*1 MAIN STREET~
|
7
|
+
N4*TIMBUCKTU*AK*89111~
|
8
|
+
REF*2U*999~
|
9
|
+
N1*PE*REGIONAL HOPE HOSPITAL*XX*6543210903~
|
10
|
+
LX*110212~
|
11
|
+
TS3*6543210903*11*20021231*1*211366.97****138018.4**73348.57~
|
12
|
+
TS2*2178.45*1919.71**56.82*197.69*4.23~
|
13
|
+
CLP*666123*1*211366.97*138018.4**MA*1999999444444*11*1~
|
14
|
+
CAS*CO*45*73348.57~
|
15
|
+
NM1*QC*1*JONES*SAM*O***HN*666666666A~
|
16
|
+
MIA*0***138018.4~
|
17
|
+
DTM*232*20020816~
|
18
|
+
DTM*233*20020824~
|
19
|
+
QTY*CA*8~
|
20
|
+
LX*130212~
|
21
|
+
TS3*6543210909*13*19961231*1*15000****11980.33**3019.67~
|
22
|
+
CLP*777777*1*15000*11980.33**MB*1999999444445*13*1~
|
23
|
+
CAS*CO*45*3019.67~
|
24
|
+
NM1*QC*1*BORDER*LIZ*E***HN*996669999B~
|
25
|
+
MOA***MA02~
|
26
|
+
DTM*232*20020512~
|
27
|
+
PLB*6543210903*20021231*CV:CP*-1.27~
|
28
|
+
SE*28*1234~
|
@@ -0,0 +1 @@
|
|
1
|
+
<fieldset class="hippo-transaction-set"><legend>HIPAA_835::Base</legend><span class="hippo-segment-name">Transaction Set Header</span><span class="hippo-segment-data">ST*835*1234~</span><br/><span class="hippo-segment-name">Financial Information</span><span class="hippo-segment-data">BPR*C*150000*C*ACH*CTX*01*999999992*DA*123456*1512345678**01*999988880*DA*98765*20020913~</span><br/><span class="hippo-segment-name">Reassociation Trace Number</span><span class="hippo-segment-data">TRN*1*12345*1512345678~</span><br/><span class="hippo-segment-name">Production Date</span><span class="hippo-segment-data">DTM*405*20020916~</span><br/><fieldset class="hippo-component"><legend>HIPAA_835::L1000A - Payer Identification</legend><span class="hippo-segment-name">Payer Identification</span><span class="hippo-segment-data">N1*PR*INSURANCE COMPANY OF TIMBUCKTU~</span><br/><span class="hippo-segment-name">Payer Address</span><span class="hippo-segment-data">N3*1 MAIN STREET~</span><br/><span class="hippo-segment-name">Payer City, State, ZIP Code</span><span class="hippo-segment-data">N4*TIMBUCKTU*AK*89111~</span><br/><span class="hippo-segment-name">Additional Payer Identification</span><span class="hippo-segment-data">REF*2U*999~</span><br/></fieldset><fieldset class="hippo-component"><legend>HIPAA_835::L1000B - Payee Identification</legend><span class="hippo-segment-name">Payee Identification</span><span class="hippo-segment-data">N1*PE*REGIONAL HOPE HOSPITAL*XX*6543210903~</span><br/></fieldset><fieldset class="hippo-component"><legend>HIPAA_835::L2000 - Header Number</legend><span class="hippo-segment-name">Header Number</span><span class="hippo-segment-data">LX*110212~</span><br/><span class="hippo-segment-name">Provider Summary Information</span><span class="hippo-segment-data">TS3*6543210903*11*20021231*1*211366.97****138018.4**73348.57~</span><br/><span class="hippo-segment-name">Provider Supplemental Summary Information</span><span class="hippo-segment-data">TS2*2178.45*1919.71**56.82*197.69*4.23~</span><br/><fieldset class="hippo-component"><legend>HIPAA_835::L2100 - Claim Payment Information</legend><span class="hippo-segment-name">Claim Payment Information</span><span class="hippo-segment-data">CLP*666123*1*211366.97*138018.4**MA*1999999444444*11*1~</span><br/><span class="hippo-segment-name">Claim Adjustment</span><span class="hippo-segment-data">CAS*CO*45*73348.57~</span><br/><span class="hippo-segment-name">Patient Name</span><span class="hippo-segment-data">NM1*QC*1*JONES*SAM*O***HN*666666666A~</span><br/><span class="hippo-segment-name">Inpatient Adjudication Information</span><span class="hippo-segment-data">MIA*0***138018.4~</span><br/><span class="hippo-segment-name">Statement From or To Date</span><span class="hippo-segment-data">DTM*232*20020816~DTM*233*20020824~</span><br/><span class="hippo-segment-name">Claim Supplemental Information Quantity</span><span class="hippo-segment-data">QTY*CA*8~</span><br/></fieldset><span class="hippo-segment-name">Header Number</span><span class="hippo-segment-data">LX*130212~</span><br/><span class="hippo-segment-name">Provider Summary Information</span><span class="hippo-segment-data">TS3*6543210909*13*19961231*1*15000****11980.33**3019.67~</span><br/><fieldset class="hippo-component"><legend>HIPAA_835::L2100 - Claim Payment Information</legend><span class="hippo-segment-name">Claim Payment Information</span><span class="hippo-segment-data">CLP*777777*1*15000*11980.33**MB*1999999444445*13*1~</span><br/><span class="hippo-segment-name">Claim Adjustment</span><span class="hippo-segment-data">CAS*CO*45*3019.67~</span><br/><span class="hippo-segment-name">Patient Name</span><span class="hippo-segment-data">NM1*QC*1*BORDER*LIZ*E***HN*996669999B~</span><br/><span class="hippo-segment-name">Outpatient Adjudication Information</span><span class="hippo-segment-data">MOA***MA02~</span><br/><span class="hippo-segment-name">Statement From or To Date</span><span class="hippo-segment-data">DTM*232*20020512~</span><br/></fieldset></fieldset><span class="hippo-segment-name">Provider Adjustment</span><span class="hippo-segment-data">PLB*6543210903*20021231*CV:CP*-1.27~</span><br/><span class="hippo-segment-name">Transaction Set Trailer</span><span class="hippo-segment-data">SE*28*1234~</span><br/></fieldset>
|
data/test/test_html_outputter.rb
CHANGED
@@ -12,8 +12,11 @@ class TestHTMLOutputter < MiniTest::Unit::TestCase
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def test_transaction_to_html_returns_string
|
15
|
-
File.open('/Users/rjackson/Desktop/sample835.html', 'w') {|f| f.write(@sample_835.to_html) }
|
16
|
-
File.open('/Users/rjackson/Desktop/sample837.html', 'w') {|f| f.write(@sample_837.to_html) }
|
17
15
|
assert_kind_of String, @sample_835.to_html
|
18
16
|
end
|
19
|
-
|
17
|
+
|
18
|
+
def test_verify_output_against_known_good_html
|
19
|
+
assert_equal File.read('samples/sample835.html'), @sample_835.to_html
|
20
|
+
assert_equal File.read('samples/sample837.html'), @sample_837.to_html
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require File.expand_path('test_helper', File.dirname(__FILE__))
|
2
|
+
|
3
|
+
class TestPrettyStringOutputter < MiniTest::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@ts = Hippo::TransactionSets::Test::Base.new
|
6
|
+
@ts.parse('ST*Test~TSS*Blah*Bar*Baz~TCS*Blah*:::CNBlah*Preset Field 7~TSS*Last Standalone Segment*Boo~TSS*Foo*SubBar~TCS*:SubBarBlah**Foo2~TSS*Last Segment*SubBarRepeater~')
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_segment_to_pretty_string_returns_segment_to_s
|
10
|
+
assert_equal @ts.TSS.to_s + "\n", @ts.TSS.to_pretty_string
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_transaction_to_pretty_string_returns_proper_value
|
14
|
+
expected_output = <<-EOF
|
15
|
+
ST*Test~
|
16
|
+
TSS*Blah*Bar*Baz~
|
17
|
+
TCS*Blah*:::CNBlah*Preset Field 7~
|
18
|
+
TSS*Last Standalone Segment*Boo~
|
19
|
+
TSS*Foo*SubBar~
|
20
|
+
TCS*:SubBarBlah**Foo2~
|
21
|
+
TSS*Last Segment*SubBarRepeater~
|
22
|
+
EOF
|
23
|
+
|
24
|
+
assert_equal expected_output, @ts.to_pretty_string
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_sample835_output
|
28
|
+
sample_835 = Hippo::TransactionSets::HIPAA_835::Base.new
|
29
|
+
sample_835.parse(File.read('samples/005010X221A1_business_scenario_1.edi'))
|
30
|
+
|
31
|
+
assert_equal File.read('samples/sample835.pretty_string'), sample_835.to_pretty_string
|
32
|
+
end
|
33
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hippo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -73,6 +73,7 @@ files:
|
|
73
73
|
- lib/hippo/outputters/html.rb
|
74
74
|
- lib/hippo/outputters/paper_claim.rb
|
75
75
|
- lib/hippo/outputters/pdf.rb
|
76
|
+
- lib/hippo/outputters/pretty_string.rb
|
76
77
|
- lib/hippo/parser.rb
|
77
78
|
- lib/hippo/parser/segment.rb
|
78
79
|
- lib/hippo/parser/transaction_set.rb
|
@@ -320,15 +321,20 @@ files:
|
|
320
321
|
- samples/200823.EDI
|
321
322
|
- samples/837_L2000A_01.edi
|
322
323
|
- samples/837_L2000A_02.edi
|
324
|
+
- samples/sample835.html
|
325
|
+
- samples/sample835.pretty_string
|
326
|
+
- samples/sample837.html
|
323
327
|
- test/test_helper.rb
|
324
328
|
- test/test_hipaa_835.rb
|
325
329
|
- test/test_hipaa_837.rb
|
326
330
|
- test/test_html_outputter.rb
|
327
331
|
- test/test_parser.rb
|
332
|
+
- test/test_pretty_string_outputter.rb
|
328
333
|
- test/test_segments_base.rb
|
329
334
|
- test/test_transaction_sets_base.rb
|
330
335
|
homepage: http://github.com/promedical/hippo
|
331
|
-
licenses:
|
336
|
+
licenses:
|
337
|
+
- BSD 2-Clause
|
332
338
|
post_install_message:
|
333
339
|
rdoc_options: []
|
334
340
|
require_paths:
|
@@ -341,7 +347,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
341
347
|
version: '0'
|
342
348
|
segments:
|
343
349
|
- 0
|
344
|
-
hash: -
|
350
|
+
hash: -1385700599386532735
|
345
351
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
346
352
|
none: false
|
347
353
|
requirements:
|
@@ -350,7 +356,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
350
356
|
version: '0'
|
351
357
|
segments:
|
352
358
|
- 0
|
353
|
-
hash: -
|
359
|
+
hash: -1385700599386532735
|
354
360
|
requirements: []
|
355
361
|
rubyforge_project: hippo
|
356
362
|
rubygems_version: 1.8.25
|
@@ -363,5 +369,6 @@ test_files:
|
|
363
369
|
- test/test_hipaa_837.rb
|
364
370
|
- test/test_html_outputter.rb
|
365
371
|
- test/test_parser.rb
|
372
|
+
- test/test_pretty_string_outputter.rb
|
366
373
|
- test/test_segments_base.rb
|
367
374
|
- test/test_transaction_sets_base.rb
|