change_health 3.5.4 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8952c67e30c7585a6b8f4183e444f1a67ea6d81a89e52c2a6748c2362f5c1eae
4
- data.tar.gz: ac88b77be6c178e77cb7ea341fa0cd9a3796aa6012712142e4bb71953f3cb220
3
+ metadata.gz: 61fbaa1ebca6d1f3f6a8a2674d07e11b2f96a3eccc7e6176aa25284d541134cb
4
+ data.tar.gz: 1a6abf496339d316071c33e36f8c64b2cb8c995849b8d263146c67230f4d3943
5
5
  SHA512:
6
- metadata.gz: dee82a6f161a6b74c6eba6ba352ed1daa64cb7b9cbd5ba51992aba3928d2957f401e6cadf86295667dbcaf62d82f36d1190e6aef3559304f2904b34f5bf869e0
7
- data.tar.gz: 862e3585d1c3f077dfe1a1a8341c55afb574c4ed05d16c50d347a446b26c667a26452585d034c47b36682c95ee914eace40ba418ec426ec87ac8b6c0f8b456f5
6
+ metadata.gz: 8683182931c2dbe546f5230335b5349e4362d96b01ea50d0d6811ecda55a6ce703a8404e5e6aaaed33ea4d4181af159bfc0c7293001361765e758e831097e13f
7
+ data.tar.gz: a166e936b7d07d346e30434ca52417966bf6764d4af5216b262256e9d106974c3ef0f6cd38ad8dd0516aa9091b786adccfc6cddf0ea2bb257d66cb349de1b9e0
data/CHANGELOG.md CHANGED
@@ -5,6 +5,17 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
6
6
  and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
7
7
 
8
+ # [4.0.0] - 2022-05-26
9
+
10
+ ### Changed
11
+ The assumption that only one payment would be in a report835 was wrong. Corrected that by adding in a model to hold the payment information - Report835Payment. Removed payment related info from Report835Data and Report835Claim. See README for usage
12
+ * check_issue_or_eft_effective_date
13
+ * check_or_eft_trace_number
14
+ * payer_identifier
15
+ * payment_method_code
16
+ * report_creation_date
17
+ * total_actual_provider_payment_amount
18
+
8
19
  # [3.5.4] - 2022-05-18
9
20
 
10
21
  * Used dig on `service_provider_npi` variable assigning because it produces way fewer bugs
@@ -357,6 +368,7 @@ Added the ability to hit professional claim submission API. For more details, se
357
368
  * Authentication
358
369
  * Configuration
359
370
 
371
+ [4.0.0]: https://github.com/WeInfuse/change_health/compare/v3.5.4...v4.0.0
360
372
  [3.5.4]: https://github.com/WeInfuse/change_health/compare/v3.5.3...v3.5.4
361
373
  [3.5.3]: https://github.com/WeInfuse/change_health/compare/v3.5.2...v3.5.3
362
374
  [3.5.2]: https://github.com/WeInfuse/change_health/compare/v3.5.1...v3.5.2
data/README.md CHANGED
@@ -243,66 +243,68 @@ From a report, you can get an array of claims
243
243
  #### Report 277
244
244
 
245
245
  ```ruby
246
- report_277_data = ChangeHealth::Request::Claim::Report.get_report("X3000000.AB", as_json_report: true)
246
+ report277_data = ChangeHealth::Request::Claim::Report.get_report("X3000000.AB", as_json_report: true)
247
247
 
248
- report_277_data.payer_name
248
+ report277_data.payer_name
249
249
  # "PREMERA"
250
250
 
251
- report_277_data.report_creation_date
251
+ report277_data.report_creation_date
252
252
  # Tue, 01 Dec 2020
253
253
 
254
- claim_277 = report_277_data.claims.first
255
- claim_277.payer_name
254
+ claim277 = report277_data.claims.first
255
+ claim277.payer_name
256
256
  # "PREMERA"
257
257
 
258
- claim_277.report_name
258
+ claim277.report_name
259
259
  # "X3000000.AB"
260
260
 
261
- claim_277.patient_first_name
261
+ claim277.patient_first_name
262
262
  # "JOHNONE"
263
263
 
264
- claim_277.report_creation_date
264
+ claim277.report_creation_date
265
265
  # Tue, 01 Dec 2020
266
266
 
267
267
  # Report 277 specific below
268
- claim_277.latest_status_category_codes
268
+ claim277.latest_status_category_codes
269
269
  # ["F1"]
270
270
 
271
- claim_277.total_charge_amount
271
+ claim277.total_charge_amount
272
272
  # "100"
273
273
 
274
- claim_277.procedure_codes
274
+ claim277.procedure_codes
275
275
  # ["97161"]
276
276
  ```
277
277
 
278
278
  #### Report 835
279
279
 
280
280
  ```ruby
281
- report_835_data = ChangeHealth::Request::Claim::Report.get_report("R5000000.XY", as_json_report: true)
281
+ report835_data = ChangeHealth::Request::Claim::Report.get_report("R5000000.XY", as_json_report: true)
282
282
 
283
- report_835_data.payment_method_code
283
+ payment835 = report835_data.payments.first
284
+
285
+ payment835.payment_method_code
284
286
  # "ACH"
285
287
 
286
- report_835_data.total_actual_provider_payment_amount
288
+ payment835.total_actual_provider_payment_amount
287
289
  # "2563.13"
288
290
 
289
- claim_835 = report_835_data.claims.first
290
- claim_835.payer_name
291
+ claim835 = payment835.claims.first
292
+ claim835.payer_name
291
293
  # "NATIONAL GOVERNMENT SERVICES, INC."
292
294
 
293
- claim_835.patient_first_name
295
+ claim835.patient_first_name
294
296
  # "JANE"
295
297
 
296
- claim_835.patient_member_id
298
+ claim835.patient_member_id
297
299
  # "7SL5RA7XR19"
298
300
 
299
- claim_835.report_creation_date
301
+ claim835.report_creation_date
300
302
  # Wed, 22 Apr 2020
301
303
 
302
- claim_835.procedure_codes
304
+ claim835.procedure_codes
303
305
  # ["21210", "21026", "21208", "30580"]
304
306
 
305
- claim_835.service_lines.map(&:line_item_charge_amount)
307
+ claim835.service_lines.map(&:line_item_charge_amount)
306
308
  # ["3600", "1890", "1836", "1680"]
307
309
  ```
308
310
 
@@ -2,15 +2,10 @@ module ChangeHealth
2
2
  module Response
3
3
  module Claim
4
4
  class Report835Claim < ReportClaim
5
- property :check_issue_or_eft_effective_date, required: false
6
- property :check_or_eft_trace_number, required: false
7
5
  property :claim_payment_remark_codes, required: false
8
6
  property :patient_control_number, required: false
9
7
  property :payer_claim_control_number, required: false
10
- property :payer_identifier, required: false
11
- property :payment_method_code, required: false
12
8
  property :service_lines, required: false
13
- property :total_actual_provider_payment_amount, required: false
14
9
  property :total_charge_amount, required: false
15
10
 
16
11
  def procedure_codes
@@ -7,14 +7,6 @@ module ChangeHealth
7
7
  @raw['transactions']
8
8
  end
9
9
 
10
- def check_or_eft_trace_number
11
- transactions&.first&.dig('paymentAndRemitReassociationDetails', 'checkOrEFTTraceNumber')
12
- end
13
-
14
- def check_issue_or_eft_effective_date
15
- ChangeHealth::Models::PARSE_DATE.call(transactions&.first&.dig('financialInformation', 'checkIssueOrEFTEffectiveDate'))
16
- end
17
-
18
10
  def payer_identification
19
11
  transactions&.first&.dig('payer', 'payerIdentificationNumber')
20
12
  end
@@ -24,34 +16,40 @@ module ChangeHealth
24
16
  transactions&.first&.dig('payer')&.dig('name')
25
17
  end
26
18
 
27
- def payer_identifier
28
- ChangeHealth::Models::PARSE_DATE.call(transactions&.first&.dig('financialInformation', 'payerIdentifier'))
29
- end
30
-
31
- def payment_method_code
32
- transactions&.first&.dig('financialInformation', 'paymentMethodCode')
33
- end
34
-
35
19
  def report_creation_date
36
- ChangeHealth::Models::PARSE_DATE.call(transactions&.first&.dig('productionDate'))
20
+ payments.map(&:report_creation_date).min
37
21
  end
38
22
 
39
- def total_actual_provider_payment_amount
40
- transactions&.first&.dig('financialInformation', 'totalActualProviderPaymentAmount')
23
+ def claims
24
+ payments.flat_map(&:claims).compact
41
25
  end
42
26
 
43
- def claims
44
- report_claims = []
27
+ def payments
28
+ report_payments = []
45
29
 
46
30
  transactions&.each do |transaction|
47
- transaction['detailInfo']&.each do |detail_info|
48
- detail_info['paymentInfo']&.each do |payment_info|
31
+ check_or_eft_trace_number = transaction.dig('paymentAndRemitReassociationDetails', 'checkOrEFTTraceNumber')
32
+ check_issue_or_eft_effective_date =
33
+ ChangeHealth::Models::PARSE_DATE.call(
34
+ transaction.dig('financialInformation', 'checkIssueOrEFTEffectiveDate')
35
+ )
36
+ payer_identifier = transaction.dig('financialInformation', 'payerIdentifier')
37
+ payment_method_code = transaction.dig('financialInformation', 'paymentMethodCode')
38
+ report_creation_date = ChangeHealth::Models::PARSE_DATE.call(transaction.dig('productionDate'))
39
+ total_actual_provider_payment_amount =
40
+ transaction.dig('financialInformation', 'totalActualProviderPaymentAmount')
41
+ claims = transaction['detailInfo']&.flat_map do |detail_info|
42
+ detail_info['paymentInfo']&.map do |payment_info|
49
43
  patient_control_number = payment_info.dig('claimPaymentInfo', 'patientControlNumber')
50
44
  patient_first_name = payment_info.dig('patientName', 'firstName')
51
45
  patient_last_name = payment_info.dig('patientName', 'lastName')
52
- patient_member_id = payment_info.dig('patientName', 'memberId') || payment_info.dig('subscriber', 'memberId')
46
+ patient_member_id =
47
+ payment_info.dig('patientName', 'memberId') ||
48
+ payment_info.dig('subscriber', 'memberId')
53
49
  payer_claim_control_number = payment_info.dig('claimPaymentInfo', 'payerClaimControlNumber')
54
- service_provider_npi = payment_info.dig('renderingProvider', 'npi') || detail_info.dig('providerSummaryInformation', 'providerIdentifier')
50
+ service_provider_npi =
51
+ payment_info.dig('renderingProvider', 'npi') ||
52
+ detail_info.dig('providerSummaryInformation', 'providerIdentifier')
55
53
  total_charge_amount = payment_info.dig('claimPaymentInfo', 'totalClaimChargeAmount')
56
54
 
57
55
  claim_payment_remark_codes = []
@@ -114,9 +112,7 @@ module ChangeHealth
114
112
  )
115
113
  end
116
114
 
117
- report_claims << Report835Claim.new(
118
- check_issue_or_eft_effective_date: check_issue_or_eft_effective_date,
119
- check_or_eft_trace_number: check_or_eft_trace_number,
115
+ Report835Claim.new(
120
116
  claim_payment_remark_codes: claim_payment_remark_codes,
121
117
  patient_control_number: patient_control_number,
122
118
  patient_first_name: patient_first_name,
@@ -124,23 +120,31 @@ module ChangeHealth
124
120
  patient_member_id: patient_member_id,
125
121
  payer_claim_control_number: payer_claim_control_number,
126
122
  payer_identification: payer_identification,
127
- payer_identifier: payer_identifier,
128
123
  payer_name: payer_name,
129
- payment_method_code: payment_method_code,
130
124
  report_creation_date: report_creation_date,
131
125
  report_name: report_name,
132
126
  service_date_begin: service_date_begin,
133
127
  service_date_end: service_date_end,
134
128
  service_lines: service_lines,
135
129
  service_provider_npi: service_provider_npi,
136
- total_actual_provider_payment_amount: total_actual_provider_payment_amount,
137
130
  total_charge_amount: total_charge_amount
138
131
  )
139
132
  end
140
133
  end
134
+ report_payments << Report835Payment.new(
135
+ check_issue_or_eft_effective_date: check_issue_or_eft_effective_date,
136
+ check_or_eft_trace_number: check_or_eft_trace_number,
137
+ claims: claims,
138
+ payer_identifier: payer_identifier,
139
+ payer_name: payer_name,
140
+ payment_method_code: payment_method_code,
141
+ report_creation_date: report_creation_date,
142
+ report_name: report_name,
143
+ total_actual_provider_payment_amount: total_actual_provider_payment_amount
144
+ )
141
145
  end
142
146
 
143
- report_claims
147
+ report_payments
144
148
  end
145
149
  end
146
150
  end
@@ -0,0 +1,17 @@
1
+ module ChangeHealth
2
+ module Response
3
+ module Claim
4
+ class Report835Payment < Hashie::Trash
5
+ property :check_issue_or_eft_effective_date, required: false
6
+ property :check_or_eft_trace_number, required: false
7
+ property :claims, required: false
8
+ property :payer_identifier, required: false
9
+ property :payer_name, required: false
10
+ property :payment_method_code, required: false
11
+ property :report_creation_date, required: false
12
+ property :report_name, required: false
13
+ property :total_actual_provider_payment_amount, required: false
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,3 +1,3 @@
1
1
  module ChangeHealth
2
- VERSION = '3.5.4'.freeze
2
+ VERSION = '4.0.0'.freeze
3
3
  end
data/lib/change_health.rb CHANGED
@@ -33,6 +33,7 @@ require 'change_health/response/claim/report/report_277_claim'
33
33
  require 'change_health/response/claim/report/report_277_info_claim_status'
34
34
  require 'change_health/response/claim/report/report_835_claim'
35
35
  require 'change_health/response/claim/report/report_835_health_care_check_remark_code'
36
+ require 'change_health/response/claim/report/report_835_payment'
36
37
  require 'change_health/response/claim/report/report_835_service_adjustment'
37
38
  require 'change_health/response/claim/report/report_835_service_line'
38
39
  require 'change_health/response/eligibility/eligibility_benefit'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: change_health
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.5.4
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Crockett
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-05-18 00:00:00.000000000 Z
11
+ date: 2022-05-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -169,6 +169,7 @@ files:
169
169
  - lib/change_health/response/claim/report/report_835_claim.rb
170
170
  - lib/change_health/response/claim/report/report_835_data.rb
171
171
  - lib/change_health/response/claim/report/report_835_health_care_check_remark_code.rb
172
+ - lib/change_health/response/claim/report/report_835_payment.rb
172
173
  - lib/change_health/response/claim/report/report_835_service_adjustment.rb
173
174
  - lib/change_health/response/claim/report/report_835_service_line.rb
174
175
  - lib/change_health/response/claim/report/report_claim.rb