change_health 3.5.4 → 4.0.0

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