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 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).
@@ -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
 
@@ -1,3 +1,4 @@
1
1
  require_relative 'outputters/html'
2
2
  require_relative 'outputters/pdf'
3
- require_relative 'outputters/paper_claim'
3
+ require_relative 'outputters/paper_claim'
4
+ require_relative 'outputters/pretty_string'
@@ -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
@@ -4,6 +4,7 @@ module Hippo::Segments
4
4
  include Hippo::Parser::Segment
5
5
  include Hippo::Outputters::HTML::Segment
6
6
  include Hippo::Outputters::PDF::Segment
7
+ include Hippo::Outputters::PrettyString::Segment
7
8
 
8
9
  class << self
9
10
  attr_accessor :fields, :identifier, :fixed_width
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Hippo
2
- VERSION = "0.5.4" unless defined?(Hippo::VERSION)
2
+ VERSION = "0.5.5" unless defined?(Hippo::VERSION)
3
3
  end
@@ -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>
@@ -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
- end
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
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: -489077228287388914
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: -489077228287388914
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