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 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