era_835_parser 0.1.12 → 0.2.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1a4d95e601bfb1f71b439fe740842c2485accf92bbd7b890e922e5fa53d1b447
4
- data.tar.gz: 89f39835c344f1a9005245ac6712ec0c56dedbebe1cca0f92f608ad598b93ca8
3
+ metadata.gz: ab71e41a87a2f73200361b1bedeb9740c6edc2451cee146057682484a3d3caf7
4
+ data.tar.gz: 9ed593d781b601484ac0c99019de108f6b4d15374059c1ef46d5a707d5dbec72
5
5
  SHA512:
6
- metadata.gz: 489f980ede5fe53b11c9e83806343da7a891e333f3a4d21cdcb1e73918915938473f5cee500b9624874fd1c34e2f06c6d050b616756060dc8e4fd9f1eae21237
7
- data.tar.gz: 641a2ddd323d683091d047dd04c4b26e43bdbf4bc9151bbe28c0e8aa5bf72d958a329eeadf40cdcfe402c4bff51477d9f17f7f2ab337fc2e85986272ee4f9a3e
6
+ metadata.gz: 260a869a1d17269a37c9e06177357b4e8a3c3ac3be88bc9605b9d58459c7bb2bb19be8752109d0640c81b7c7ece04307c9a652f4450d3c94bf198b91213d593c
7
+ data.tar.gz: fd110d86ad73c4a50f2578f0b65fb5f90c174408bde64f97b03b4682eb8615f44dee6e9790f0a6ff26886c39d603f5d6891a7c6aa3f54dc395a9943e4012989e
data/README.md CHANGED
@@ -28,6 +28,9 @@ puts era[:addressed_to] # The person/name the ERA is addressed to
28
28
  if !era[:checks].nil?
29
29
  era[:checks].each do |check_number, check|
30
30
  puts check[:check_number] # Check number
31
+ puts check[:transaction_handling_code] # Transaction handling code
32
+ puts check[:credit_debit_flag] # Credit/debit flag
33
+ puts check[:payment_method_code] # Payment method code
31
34
  puts check[:amount] # Check amount
32
35
  puts check[:number_of_claims] # Number of claims this check covers (integer)
33
36
  puts check[:npi_tax_id] # NPI or Tax ID of payee
@@ -38,17 +41,26 @@ if !era[:checks].nil?
38
41
  puts check[:payer_state] # Payer state
39
42
  puts check[:payer_zip_code] # Payer zip code
40
43
  puts check[:payer_tax_id] # Payer tax id
44
+ puts check[:payer_edi_id] # Payer EDI id
41
45
  puts check[:date] # Check date (string mm/dd/yyyy)
42
46
  if !check[:eras].nil?
43
47
  check[:eras].each do |era_counter, individual_era|
44
48
  puts individual_era[:era_text] # ERA text
45
- puts individual_era[:patient_id] # Patient ID
49
+ puts individual_era[:patient_id] # Patient ID / Member number
46
50
  puts individual_era[:patient_name] # Patient name
47
- puts individual_era[:patient_last_name] # Patient last name (titlized)
48
- puts individual_era[:patient_first_name] # Patient first name (titlized)
51
+ puts individual_era[:patient_last_name] # Patient last name (titleized)
52
+ puts individual_era[:patient_first_name] # Patient first name (titleized)
53
+ puts individual_era[:patient_middle_initial] # Patient middle initial
54
+ puts individual_era[:patient_suffix] # Patient suffix
55
+ puts individual_era[:subscriber_id] # Subscriber ID / Member number
56
+ puts individual_era[:subscriber_name] # Subscriber name
57
+ puts individual_era[:subscriber_last_name] # Subscriber last name (titleized)
58
+ puts individual_era[:subscriber_first_name] # Subscriber first name (titleized)
59
+ puts individual_era[:subscriber_middle_initial] # Subscriber middle initial
60
+ puts individual_era[:subscriber_suffix] # Subscriber suffix
49
61
  puts individual_era[:rendering_provider_name] # Rendering provider name
50
- puts individual_era[:rendering_provider_last_name] # Rendering provider last name (titlized)
51
- puts individual_era[:rendering_provider_first_name] # Rendering provider first name (titlized)
62
+ puts individual_era[:rendering_provider_last_name] # Rendering provider last name (titleized)
63
+ puts individual_era[:rendering_provider_first_name] # Rendering provider first name (titleized)
52
64
  puts individual_era[:charge_amount] # Total charge amount (integer)
53
65
  puts individual_era[:payment_amount] # Total payment amount (integer)
54
66
  puts individual_era[:account_number] # Account number
@@ -121,6 +133,11 @@ era = Era835Parser::Parser.new(file: string_io).parse
121
133
  4. Push to the branch (`git push origin my-new-feature`)
122
134
  5. Create a new Pull Request
123
135
 
136
+ ## Publishing
137
+
138
+ 1. gem build era_835_parser.gemspec
139
+ 2. gem push era_835_parser-x.x.x.gem
140
+
124
141
  ## License
125
142
 
126
143
  The MIT License (MIT)
@@ -143,4 +160,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
143
160
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
144
161
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
145
162
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
146
- THE SOFTWARE.
163
+ THE SOFTWARE.
@@ -57,10 +57,14 @@ module Era835Parser
57
57
  header_number_loop = false
58
58
  claim_payment_information_loop = false
59
59
  patient_loop = false
60
+ subscriber_loop = false
60
61
  rendering_provider_loop = false
61
62
  service_payment_information_loop = false
62
63
  bpr_amount = ''
63
64
  bpr_date = ''
65
+ transaction_handling_code = ''
66
+ credit_debit_flag = ''
67
+ payment_method_code = ''
64
68
  receive_date = false
65
69
  claim_date_start = false
66
70
  claim_date_end = false
@@ -360,6 +364,7 @@ module Era835Parser
360
364
  when 1
361
365
  # Transaction Handling Code
362
366
  # puts "Transaction Handling Code: #{element}"
367
+ transaction_handling_code = element.strip
363
368
  when 2
364
369
  # Monetary Amount
365
370
  # puts "Monetary Amount: #{element}"
@@ -367,9 +372,11 @@ module Era835Parser
367
372
  when 3
368
373
  # Credit/Debit Flag
369
374
  # puts "Credit/Debit Flag: #{element}"
375
+ credit_debit_flag = element.strip
370
376
  when 4
371
377
  # PAYMENT METHOD CODE
372
378
  # puts "PAYMENT METHOD CODE: #{element}"
379
+ payment_method_code = element.strip
373
380
  when 5
374
381
  # PAYMENT FORMAT CODE
375
382
  # puts "PAYMENT FORMAT CODE: #{element}"
@@ -443,13 +450,20 @@ module Era835Parser
443
450
  when 2
444
451
  # REFERENCE IDENTIFICATION
445
452
  # puts "REFERENCE IDENTIFICATION: #{element}"
446
- check = Hash.new
447
- check[:check_number] = element.strip
448
- check[:amount] = (bpr_amount.to_f * 100).round().to_i
453
+ check = {
454
+ check_number: element.strip,
455
+ amount: (bpr_amount.to_f * 100).round().to_i,
456
+ date: bpr_date,
457
+ transaction_handling_code: transaction_handling_code,
458
+ credit_debit_flag: credit_debit_flag,
459
+ payment_method_code: payment_method_code,
460
+ }
461
+ checks[check[:check_number]] = check
449
462
  bpr_amount = ''
450
- check[:date] = bpr_date
451
463
  bpr_date = ''
452
- checks[check[:check_number]] = check
464
+ transaction_handling_code = ''
465
+ credit_debit_flag = ''
466
+ payment_method_code = ''
453
467
  when 3
454
468
  # ORIGINATING COMPANY IDENTIFIER
455
469
  # puts "ORIGINATING COMPANY IDENTIFIER: #{element}"
@@ -844,56 +858,84 @@ module Era835Parser
844
858
  when 1
845
859
  # Patient Identifier Code
846
860
  # puts "Patient Identifier Code: #{element}"
847
- if element == "QC"
848
- patient_loop = true
849
- else
850
- patient_loop = false
851
- end
852
- if element == "82"
853
- rendering_provider_loop = true
854
- else
855
- rendering_provider_loop = false
856
- end
861
+ patient_loop = element == "QC"
862
+ subscriber_loop = element == 'IL'
863
+ rendering_provider_loop = element == "82"
857
864
  when 2
858
865
  # Entity Type Qualifier
859
866
  # puts "Entity Type Qualifier: #{element}"
860
867
  when 3
861
868
  # Patient Last Name
862
869
  # puts "Patient Last Name: #{element}"
863
- if claim_payment_information_loop && patient_loop
864
- individual_era[:patient_last_name] = element.strip.downcase.split(" ").map { |word| word.capitalize }.join(" ")
865
- end
866
- if claim_payment_information_loop && rendering_provider_loop
867
- individual_era[:rendering_provider_last_name] = element.strip.downcase.split(" ").map { |word| word.capitalize }.join(" ")
870
+ if claim_payment_information_loop
871
+ if patient_loop
872
+ individual_era[:patient_last_name] = element.strip.downcase.split(" ").map { |word| word.capitalize }.join(" ")
873
+ end
874
+ if subscriber_loop
875
+ individual_era[:subscriber_last_name] = element.strip.downcase.split(" ").map { |word| word.capitalize }.join(" ")
876
+ end
877
+ if rendering_provider_loop
878
+ individual_era[:rendering_provider_last_name] = element.strip.downcase.split(" ").map { |word| word.capitalize }.join(" ")
879
+ end
868
880
  end
869
881
  when 4
870
882
  # Patient First Name
871
883
  # puts "Patient First Name: #{element}"
872
- if claim_payment_information_loop && patient_loop
873
- individual_era[:patient_first_name] = element.strip.downcase.split(" ").map { |word| word.capitalize }.join(" ")
874
- individual_era[:patient_name] = individual_era[:patient_last_name].upcase + "," + individual_era[:patient_first_name].upcase
875
- end
876
- if claim_payment_information_loop && rendering_provider_loop
877
- individual_era[:rendering_provider_first_name] = element.strip.downcase.split(" ").map { |word| word.capitalize }.join(" ")
878
- individual_era[:rendering_provider_name] = individual_era[:rendering_provider_last_name].upcase + "," + individual_era[:rendering_provider_first_name].upcase
884
+ if claim_payment_information_loop
885
+ if patient_loop
886
+ individual_era[:patient_first_name] = element.strip.downcase.split(" ").map { |word| word.capitalize }.join(" ")
887
+ individual_era[:patient_name] = individual_era[:patient_last_name].upcase + "," + individual_era[:patient_first_name].upcase
888
+ end
889
+ if subscriber_loop
890
+ individual_era[:subscriber_first_name] = element.strip.downcase.split(" ").map { |word| word.capitalize }.join(" ")
891
+ individual_era[:subscriber_name] = individual_era[:subscriber_last_name].upcase + "," + individual_era[:subscriber_first_name].upcase
892
+ end
893
+ if rendering_provider_loop
894
+ individual_era[:rendering_provider_first_name] = element.strip.downcase.split(" ").map { |word| word.capitalize }.join(" ")
895
+ individual_era[:rendering_provider_name] = individual_era[:rendering_provider_last_name].upcase + "," + individual_era[:rendering_provider_first_name].upcase
896
+ end
879
897
  end
880
898
  when 5
881
899
  # Patient Middle Initial
882
900
  # puts "Patient Middle Initial: #{element}"
901
+ if claim_payment_information_loop
902
+ if patient_loop
903
+ individual_era[:patient_middle_initial] = element.strip
904
+ end
905
+ if subscriber_loop
906
+ individual_era[:subscriber_middle_initial] = element.strip
907
+ end
908
+ end
883
909
  when 6
884
910
  # Name Prefix
885
911
  # puts "Name Prefix: #{element}"
886
912
  when 7
887
913
  # Patient Name Suffix
888
914
  # puts "Patient Name Suffix: #{element}"
915
+ if claim_payment_information_loop
916
+ if patient_loop
917
+ individual_era[:patient_suffix] = element.strip
918
+ end
919
+ if subscriber_loop
920
+ individual_era[:subscriber_suffix] = element.strip
921
+ end
922
+ end
889
923
  when 8
890
924
  # Identification Code Qualifier
891
925
  # puts "Identification Code Qualifier: #{element}"
892
926
  when 9
893
- # Patient Member Number
927
+ # Patient Member Number or rendering provider NPI number
894
928
  # puts "Patient Member Number: #{element}"
895
- if claim_payment_information_loop && patient_loop
896
- individual_era[:patient_id] = element.strip
929
+ if claim_payment_information_loop
930
+ if patient_loop
931
+ individual_era[:patient_id] = element.strip
932
+ end
933
+ if subscriber_loop
934
+ individual_era[:subscriber_id] = element.strip
935
+ end
936
+ if rendering_provider_loop
937
+ individual_era[:rendering_provider_npi] = element.strip
938
+ end
897
939
  end
898
940
  end
899
941
  when "SVC"
@@ -1005,7 +1047,7 @@ module Era835Parser
1005
1047
  eras[era_counter] = individual_era
1006
1048
  era[:checks][check_number][:eras] = era[:checks][check_number][:eras].merge(eras)
1007
1049
  end
1008
- return era
1050
+ era
1009
1051
  else
1010
1052
  if individual_line_item != {}
1011
1053
  if line_items.nil?
@@ -1071,7 +1113,7 @@ module Era835Parser
1071
1113
  end
1072
1114
  end
1073
1115
  end
1074
- return era
1116
+ era
1075
1117
  end
1076
1118
  end
1077
1119
 
@@ -1079,15 +1121,15 @@ module Era835Parser
1079
1121
 
1080
1122
  def get_length(string)
1081
1123
  if string.nil?
1082
- return 0
1124
+ 0
1083
1125
  else
1084
- return string.length
1126
+ string.length
1085
1127
  end
1086
1128
  end
1087
1129
 
1088
1130
  def truncate(string, truncate_at)
1089
1131
  if !string.nil?
1090
- return string.to_s[0...truncate_at]
1132
+ string.to_s[0...truncate_at]
1091
1133
  end
1092
1134
  end
1093
1135
 
@@ -1,3 +1,3 @@
1
1
  module Era835Parser
2
- VERSION = "0.1.12"
2
+ VERSION = "0.2.1"
3
3
  end