hippo 0.5.4 → 0.5.5
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/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
|