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 +4 -4
- data/CHANGELOG.md +18 -0
- data/README.md +6 -0
- data/lib/change_health/response/claim/report/report_277_claim.rb +4 -0
- data/lib/change_health/response/claim/report/report_277_data.rb +15 -1
- data/lib/change_health/response/claim/report/report_277_info_claim_status.rb +1 -0
- data/lib/change_health/response/claim/report/report_835_claim.rb +4 -0
- data/lib/change_health/response/claim/report/report_835_data.rb +50 -23
- data/lib/change_health/response/claim/report/report_835_health_care_check_remark_code.rb +11 -0
- data/lib/change_health/response/claim/report/report_835_service_line.rb +1 -0
- data/lib/change_health/response/claim/report/report_claim.rb +2 -0
- data/lib/change_health/version.rb +1 -1
- data/lib/change_health.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 222248c389fc002887ea5d18a7816f09c0f101cf8d17d08881187b865dc0eb02
|
4
|
+
data.tar.gz: 4d25ff11a0b92fce81ca5945a659ecbf3e9c36249ff4bbaae638a7ae40efe951
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
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
|
-
|
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
|
-
|
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
|
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.
|
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:
|
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
|