change_health 3.1.0 → 3.4.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: eef3b2530820969a781c893ec5079573073cf31124243bf781d3415186a45cb1
4
- data.tar.gz: a48072bc0dd1437314eef45596569b6be7e56200c578164b4d8ff0cd98646df8
3
+ metadata.gz: 222248c389fc002887ea5d18a7816f09c0f101cf8d17d08881187b865dc0eb02
4
+ data.tar.gz: 4d25ff11a0b92fce81ca5945a659ecbf3e9c36249ff4bbaae638a7ae40efe951
5
5
  SHA512:
6
- metadata.gz: 2f67e82f2eb5660f767a297aa000cd4028606aab717b0db035b85b3933ad033276cb34bcb5373a5b716cd1bf611fd3b72d26fb3baae80a9d2783b2190a386179
7
- data.tar.gz: f8e33bf4dece3c99287b0474bdaadf9d3b8ac1d39dccbfb35fc43c979cbb706973c93ae07adaa9202be5e20adb2ba74766b78fa615191fa29caf548526692597
6
+ metadata.gz: 0f2f0cb83a1d1145bad8ced944e9d460c78956ef46a8559bf7aedad70861a469a9f18671b6f9ca497ea9ad8ef64e82e13ac6d341fa0e34a5f86ee195de52e006
7
+ data.tar.gz: dac851fb3820730a9856fe714e6ab0f923db17a00cc76f4886053fc5c50492fae0cc54d4cd38d4cefed0add480dfd3af70abc0e4d7c2006d36147c92fd03dd4b
data/CHANGELOG.md CHANGED
@@ -4,6 +4,21 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
5
5
  and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
6
 
7
+ # [3.4.0] - 2022-03-23
8
+ ### Added
9
+ * Report835Claim - check_or_eft_trace_number & check_issue_or_eft_effective_date
10
+
11
+ # [3.3.0] - 2022-02-11
12
+ ### Added
13
+ * Report277Claim - 'message' from informationClaimStatuses, clearinghouse_trace_number, patient_account_number, referenced_transaction_trace_number, trading_partner_claim_number
14
+ * Report835Claim - patient_control_number
15
+ * ReportClaim - report_name, patient_member_id
16
+
17
+ ## [3.2.0] - 2021-12-23
18
+ ### Added
19
+ * Report835HealthCareCheckRemarkCode
20
+ * Report835Claim - added claim_payment_remark_codes
21
+
7
22
  ## [3.1.0] - 2021-12-21
8
23
  ### Added
9
24
  #### Claim Submission
@@ -225,6 +240,9 @@ Added the ability to hit professional claim submission API. For more details, se
225
240
  - Authentication
226
241
  - Configuration
227
242
 
243
+ [3.4.0]: https://github.com/WeInfuse/change_health/compare/v3.3.0...v3.4.0
244
+ [3.3.0]: https://github.com/WeInfuse/change_health/compare/v3.2.0...v3.3.0
245
+ [3.2.0]: https://github.com/WeInfuse/change_health/compare/v3.1.0...v3.2.0
228
246
  [3.1.0]: https://github.com/WeInfuse/change_health/compare/v3.0.0...v3.1.0
229
247
  [3.0.0]: https://github.com/WeInfuse/change_health/compare/v2.3.0...v3.0.0
230
248
  [2.3.0]: https://github.com/WeInfuse/change_health/compare/v2.2.1...v2.3.0
data/README.md CHANGED
@@ -255,6 +255,9 @@ claim_277 = report_277_data.claims.first
255
255
  claim_277.payer_name
256
256
  # "PREMERA"
257
257
 
258
+ claim_277.report_name
259
+ # "X3000000.AB"
260
+
258
261
  claim_277.patient_first_name
259
262
  # "JOHNONE"
260
263
 
@@ -290,6 +293,9 @@ claim_835.payer_name
290
293
  claim_835.patient_first_name
291
294
  # "JANE"
292
295
 
296
+ claim_835.patient_member_id
297
+ # "7SL5RA7XR19"
298
+
293
299
  claim_835.report_creation_date
294
300
  # Wed, 22 Apr 2020
295
301
 
@@ -2,8 +2,12 @@ module ChangeHealth
2
2
  module Response
3
3
  module Claim
4
4
  class Report277Claim < ReportClaim
5
+ property :clearinghouse_trace_number, required: false
5
6
  property :info_claim_statuses, required: false
7
+ property :patient_account_number, required: false
6
8
  property :procedure_codes, required: false
9
+ property :referenced_transaction_trace_number, required: false
10
+ property :trading_partner_claim_number, required: false
7
11
 
8
12
  def add_info_claim_status(info_claim_status)
9
13
  self[:info_claim_statuses] ||= []
@@ -30,6 +30,7 @@ module ChangeHealth
30
30
  claim_status_detail['patientClaimStatusDetails']&.each do |patient_claim_status_detail|
31
31
  patient_first_name = patient_claim_status_detail.dig('subscriber', 'firstName')
32
32
  patient_last_name = patient_claim_status_detail.dig('subscriber', 'lastName')
33
+ patient_member_id = patient_claim_status_detail.dig('subscriber', 'memberId')
33
34
  patient_claim_status_detail['claims']&.each do |claim|
34
35
  procedure_codes = []
35
36
  claim['serviceLines']&.each do |service_line|
@@ -38,11 +39,17 @@ module ChangeHealth
38
39
  claim_status = claim['claimStatus']
39
40
  next if claim_status.nil?
40
41
 
42
+ clearinghouse_trace_number = claim_status['clearinghouseTraceNumber']
43
+ patient_account_number = claim_status['patientAccountNumber']
44
+ referenced_transaction_trace_number = claim_status['referencedTransactionTraceNumber']
45
+ trading_partner_claim_number = claim_status['tradingPartnerClaimNumber']
46
+
41
47
  service_date_begin = ChangeHealth::Models::PARSE_DATE.call(claim_status['claimServiceBeginDate'] || claim_status['claimServiceDate'])
42
48
  service_date_end = ChangeHealth::Models::PARSE_DATE.call(claim_status['claimServiceEndDate'] || claim_status['claimServiceDate'])
43
49
 
44
50
  info_claim_statuses = []
45
51
  claim_status['informationClaimStatuses']&.each do |info_claim_status|
52
+ message = info_claim_status['message']
46
53
  status_information_effective_date = ChangeHealth::Models::PARSE_DATE.call(info_claim_status['statusInformationEffectiveDate'])
47
54
  total_charge_amount = info_claim_status['totalClaimChargeAmount']
48
55
 
@@ -52,22 +59,29 @@ module ChangeHealth
52
59
  end
53
60
 
54
61
  info_claim_statuses << Report277InfoClaimStatus.new(
62
+ message: message,
55
63
  status_category_codes: status_category_codes,
56
64
  total_charge_amount: total_charge_amount,
57
65
  status_information_effective_date: status_information_effective_date
58
66
  )
59
67
  end
60
68
  report_claims << Report277Claim.new(
69
+ clearinghouse_trace_number: clearinghouse_trace_number,
61
70
  info_claim_statuses: info_claim_statuses,
71
+ patient_account_number: patient_account_number,
62
72
  patient_first_name: patient_first_name,
63
73
  patient_last_name: patient_last_name,
74
+ patient_member_id: patient_member_id,
64
75
  payer_identification: payer_identification,
65
76
  payer_name: payer_name,
66
77
  procedure_codes: procedure_codes,
78
+ referenced_transaction_trace_number: referenced_transaction_trace_number,
67
79
  report_creation_date: report_creation_date,
80
+ report_name: report_name,
68
81
  service_date_begin: service_date_begin,
69
82
  service_date_end: service_date_end,
70
- service_provider_npi: service_provider_npi
83
+ service_provider_npi: service_provider_npi,
84
+ trading_partner_claim_number: trading_partner_claim_number
71
85
  )
72
86
  end
73
87
  end
@@ -2,6 +2,7 @@ module ChangeHealth
2
2
  module Response
3
3
  module Claim
4
4
  class Report277InfoClaimStatus < Hashie::Trash
5
+ property :message, required: false
5
6
  property :status_category_codes, required: false
6
7
  property :total_charge_amount, required: false
7
8
  property :status_information_effective_date, required: false
@@ -2,6 +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
+ property :claim_payment_remark_codes, required: false
8
+ property :patient_control_number, required: false
5
9
  property :payer_claim_control_number, required: false
6
10
  property :payment_method_code, required: false
7
11
  property :service_lines, required: false
@@ -7,6 +7,18 @@ 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
+ def payer_identification
19
+ transactions&.first&.dig('payer', 'payerIdentificationNumber')
20
+ end
21
+
10
22
  # Only one payer per report
11
23
  def payer_name
12
24
  transactions&.first&.dig('payer')&.dig('name')
@@ -28,32 +40,33 @@ module ChangeHealth
28
40
  report_claims = []
29
41
 
30
42
  transactions&.each do |transaction|
31
- payment_method_code = transaction.dig('financialInformation', 'paymentMethodCode')
32
- payer_name = transaction.dig('payer', 'name')
33
- payer_identification = transaction.dig('payer', 'payerIdentificationNumber')
34
- report_creation_date = ChangeHealth::Models::PARSE_DATE.call(transaction['productionDate'])
35
- total_actual_provider_payment_amount = transaction.dig('financialInformation',
36
- 'totalActualProviderPaymentAmount')
37
-
38
43
  transaction['detailInfo']&.each do |detail_info|
39
44
  detail_info['paymentInfo']&.each do |payment_info|
45
+ patient_control_number = payment_info.dig('claimPaymentInfo', 'patientControlNumber')
40
46
  patient_first_name = payment_info.dig('patientName', 'firstName')
41
47
  patient_last_name = payment_info.dig('patientName', 'lastName')
48
+ patient_member_id = payment_info.dig('patientName', 'memberId')
49
+ payer_claim_control_number = payment_info.dig('claimPaymentInfo', 'payerClaimControlNumber')
42
50
  service_provider_npi = payment_info.dig('renderingProvider', 'npi')
43
51
  total_charge_amount = payment_info.dig('claimPaymentInfo', 'totalClaimChargeAmount')
44
- payer_claim_control_number = payment_info.dig('claimPaymentInfo', 'payerClaimControlNumber')
52
+
53
+ claim_payment_remark_codes = []
54
+ claim_payment_remark_codes_index = 1
55
+ while payment_info.dig('outpatientAdjudication',
56
+ "claimPaymentRemarkCode#{claim_payment_remark_codes_index}")
57
+ claim_payment_remark_codes << payment_info.dig('outpatientAdjudication',
58
+ "claimPaymentRemarkCode#{claim_payment_remark_codes_index}")
59
+ claim_payment_remark_codes_index += 1
60
+ end
45
61
 
46
62
  service_date_begin = nil
47
63
  service_date_end = nil
48
- service_lines = []
49
- payment_info['serviceLines']&.each do |service_line|
64
+ service_lines = payment_info['serviceLines']&.map do |service_line|
50
65
  service_line_date = ChangeHealth::Models::PARSE_DATE.call(service_line['serviceDate'])
51
66
  if service_date_begin.nil? || service_line_date < service_date_begin
52
67
  service_date_begin = service_line_date
53
68
  end
54
- if service_date_end.nil? || service_date_end < service_line_date
55
- service_date_end = service_line_date
56
- end
69
+ service_date_end = service_line_date if service_date_end.nil? || service_date_end < service_line_date
57
70
 
58
71
  adjudicated_procedure_code = service_line.dig('servicePaymentInformation', 'adjudicatedProcedureCode')
59
72
  allowed_actual = service_line.dig('serviceSupplementalAmounts', 'allowedActual')
@@ -61,42 +74,56 @@ module ChangeHealth
61
74
  line_item_provider_payment_amount = service_line.dig('servicePaymentInformation',
62
75
  'lineItemProviderPaymentAmount')
63
76
 
64
- service_adjustments = []
65
- service_line['serviceAdjustments']&.each do |service_adjustment|
77
+ service_adjustments = service_line['serviceAdjustments']&.map do |service_adjustment|
66
78
  adjustments = {}
67
- # - 2 b/c group code & value, / 2 b/c come in pairs
68
- num_adjustments = (service_adjustment.keys.size - 2) / 2
69
- (1..num_adjustments).each do |index|
70
- adjustment_reason = service_adjustment["adjustmentReasonCode#{index}"]
71
- adjustment_amount = service_adjustment["adjustmentAmount#{index}"]
79
+ service_adjustment_index = 1
80
+ while service_adjustment["adjustmentReasonCode#{service_adjustment_index}"]
81
+ adjustment_reason = service_adjustment["adjustmentReasonCode#{service_adjustment_index}"]
82
+ adjustment_amount = service_adjustment["adjustmentAmount#{service_adjustment_index}"]
72
83
  adjustments[adjustment_reason] = adjustment_amount
84
+ service_adjustment_index += 1
73
85
  end
74
86
 
75
87
  claim_adjustment_group_code = service_adjustment['claimAdjustmentGroupCode']
76
88
 
77
- service_adjustments << Report835ServiceAdjustment.new(
89
+ Report835ServiceAdjustment.new(
78
90
  adjustments: adjustments,
79
91
  claim_adjustment_group_code: claim_adjustment_group_code
80
92
  )
81
93
  end
82
94
 
83
- service_lines << Report835ServiceLine.new(
95
+ health_care_check_remark_codes = service_line['healthCareCheckRemarkCodes']&.map do |health_care_check_remark_code|
96
+ Report835HealthCareCheckRemarkCode.new(
97
+ code_list_qualifier_code: health_care_check_remark_code['codeListQualifierCode'],
98
+ code_list_qualifier_code_value: health_care_check_remark_code['codeListQualifierCodeValue'],
99
+ remark_code: health_care_check_remark_code['remarkCode']
100
+ )
101
+ end
102
+
103
+ Report835ServiceLine.new(
84
104
  adjudicated_procedure_code: adjudicated_procedure_code,
85
105
  allowed_actual: allowed_actual,
86
106
  line_item_charge_amount: line_item_charge_amount,
87
107
  line_item_provider_payment_amount: line_item_provider_payment_amount,
88
- service_adjustments: service_adjustments
108
+ service_adjustments: service_adjustments,
109
+ health_care_check_remark_codes: health_care_check_remark_codes
89
110
  )
90
111
  end
91
112
 
92
113
  report_claims << Report835Claim.new(
114
+ check_issue_or_eft_effective_date: check_issue_or_eft_effective_date,
115
+ check_or_eft_trace_number: check_or_eft_trace_number,
116
+ claim_payment_remark_codes: claim_payment_remark_codes,
117
+ patient_control_number: patient_control_number,
93
118
  patient_first_name: patient_first_name,
94
119
  patient_last_name: patient_last_name,
120
+ patient_member_id: patient_member_id,
95
121
  payer_claim_control_number: payer_claim_control_number,
96
122
  payer_identification: payer_identification,
97
123
  payer_name: payer_name,
98
124
  payment_method_code: payment_method_code,
99
125
  report_creation_date: report_creation_date,
126
+ report_name: report_name,
100
127
  service_date_begin: service_date_begin,
101
128
  service_date_end: service_date_end,
102
129
  service_lines: service_lines,
@@ -0,0 +1,11 @@
1
+ module ChangeHealth
2
+ module Response
3
+ module Claim
4
+ class Report835HealthCareCheckRemarkCode < Hashie::Trash
5
+ property :code_list_qualifier_code, required: false
6
+ property :code_list_qualifier_code_value, required: false
7
+ property :remark_code, required: false
8
+ end
9
+ end
10
+ end
11
+ end
@@ -4,6 +4,7 @@ module ChangeHealth
4
4
  class Report835ServiceLine < Hashie::Trash
5
5
  property :adjudicated_procedure_code, required: false
6
6
  property :allowed_actual, required: false
7
+ property :health_care_check_remark_codes, required: false
7
8
  property :line_item_charge_amount, required: false
8
9
  property :line_item_provider_payment_amount, required: false
9
10
  property :service_adjustments, required: false
@@ -4,9 +4,11 @@ module ChangeHealth
4
4
  class ReportClaim < Hashie::Trash
5
5
  property :patient_first_name, required: false
6
6
  property :patient_last_name, required: false
7
+ property :patient_member_id, required: false
7
8
  property :payer_identification, required: false
8
9
  property :payer_name, required: false
9
10
  property :report_creation_date, required: false
11
+ property :report_name, required: false
10
12
  property :service_date_begin, required: false
11
13
  property :service_date_end, required: false
12
14
  property :service_provider_npi, required: false
@@ -1,3 +1,3 @@
1
1
  module ChangeHealth
2
- VERSION = '3.1.0'.freeze
2
+ VERSION = '3.4.0'.freeze
3
3
  end
data/lib/change_health.rb CHANGED
@@ -32,6 +32,7 @@ require 'change_health/response/claim/report/report_claim'
32
32
  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
+ require 'change_health/response/claim/report/report_835_health_care_check_remark_code'
35
36
  require 'change_health/response/claim/report/report_835_service_adjustment'
36
37
  require 'change_health/response/claim/report/report_835_service_line'
37
38
  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.1.0
4
+ version: 3.4.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: 2021-12-21 00:00:00.000000000 Z
11
+ date: 2022-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -168,6 +168,7 @@ files:
168
168
  - lib/change_health/response/claim/report/report_277_info_claim_status.rb
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
+ - lib/change_health/response/claim/report/report_835_health_care_check_remark_code.rb
171
172
  - lib/change_health/response/claim/report/report_835_service_adjustment.rb
172
173
  - lib/change_health/response/claim/report/report_835_service_line.rb
173
174
  - lib/change_health/response/claim/report/report_claim.rb