change_health 2.3.0 → 3.3.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: 1cd3562c44027bac8e01ce8e9f68b0ec67ea6052f3786181539e9d0b579d10bd
4
- data.tar.gz: 11760dc5ac46e4bde8d2a98608e83efecd5ba4fee02bfd5dfbfcca63c3902a8f
3
+ metadata.gz: 771e550998ba619e8f20ad0482df45d2414f106588d674e8764fbe9af1fbd4d7
4
+ data.tar.gz: 3c35d671b8cecbc38e9d5984756c5af8f0e4c18ed4e86ed2877f30d670ef1146
5
5
  SHA512:
6
- metadata.gz: 7ec84c09d24a87c7d38709eaf6b5fd53ada29455541563f88a760c926a3a29c30bc138e1e0c5f2287368faad53127830eb8c155291118ec9c87b239a2209a2d6
7
- data.tar.gz: 88a92b73cfb2159b6e091e9ab74b05067c461fa8be27c853a5387646e5049a8d4dc71dd178e6e20b282b50b06116c78b79468531d3340cbd15ac3458775ac5a2
6
+ metadata.gz: 3ece66009484991d0be79850df3b8327449099b5829c26100ddd0304ec6759be8a12e4bc0e348c044f5d2247cc8f4e923aa4a26dea5f59a008786d5d42f8fb6f
7
+ data.tar.gz: d598da2e9b5051bfee077aa7da86ed663befc801d68efb6a29a476a5e6655fdeb886f62be843a65316a6e03cd8ef83a2c845d8bad05a70d7cc42fb2d78727369
data/CHANGELOG.md CHANGED
@@ -4,10 +4,58 @@ 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.3.0] - 2022-02-11
8
+ ### Added
9
+ * Report277Claim - 'message' from informationClaimStatuses, clearinghouse_trace_number, patient_account_number, referenced_transaction_trace_number, trading_partner_claim_number
10
+ * Report835Claim - patient_control_number
11
+ * ReportClaim - report_name, patient_member_id
12
+
13
+ ## [3.2.0] - 2021-12-23
14
+ ### Added
15
+ * Report835HealthCareCheckRemarkCode
16
+ * Report835Claim - added claim_payment_remark_codes
17
+
18
+ ## [3.1.0] - 2021-12-21
19
+ ### Added
20
+ #### Claim Submission
21
+ * ServiceLine - drugIdentification & renderingProvider
22
+ * Subscriber - groupNumber
23
+ * Address model w/ postalCode that is formatted to remove dashes, '-'
24
+ * Note: Using a plain hash for address still works
25
+ * Auto formatting of postal code fields
26
+
27
+ ## [3.0.0] - 2021-12-08
28
+ ### Added
29
+ * Report277Claim - specific to claims from 277 reports
30
+ * Report835Claim - specific to claims from 835 reports
31
+ * Report835ServiceAdjustment & Report835ServiceLine - helper classes for readability of claims from 835 reports
32
+
33
+ ### Changed
34
+ * ReportClaim - removed 277 report unique fields
35
+
36
+ #### Namespace
37
+ | Previous | Current |
38
+ |-|-|
39
+ | ChangeHealth::Models::Error | ChangeHealth::Response::Error |
40
+ | ChangeHealth::Response::Claim::ReportInfoClaimStatus | ChangeHealth::Response::Claim::Report277InfoClaimStatus|
41
+
42
+ #### Methods
43
+ | Previous | Current |
44
+ |-|-|
45
+ | Report277Data#payer_org_name | Report277Data#payer_name |
46
+ | ReportClaim#latest_total_charge_amount | ReportClaim#total_charge_amount |
47
+ | ReportClaim#payer_org_name | ReportClaim#payer_name |
48
+ | ReportClaim#service_begin_date | ReportClaim#service_date_begin |
49
+ | ReportClaim#service_end_date | ReportClaim#service_date_end |
50
+ | ReportClaim#subscriber_first_name | ReportClaim#patient_first_name |
51
+ | ReportClaim#subscriber_last_name | ReportClaim#patient_last_name |
52
+ | ReportClaim#transaction_set_creation_date | ReportClaim#report_creation_date |
53
+
54
+
7
55
  ## [2.3.0] - 2021-11-18
8
56
  ### Added
9
- * Specific classes for 277 & 835 reports - Report277Data & Report835Data
10
- * ReportClaim & ReportInfoClaimStatus- only works for json 277 reports
57
+ * Report277Data & Report835Data - Specific classes for 277 & 835 reports
58
+ * ReportClaim & ReportInfoClaimStatus - only works for json 277 reports
11
59
 
12
60
  ### Fixed
13
61
  * Headers can now be nil for requests
@@ -188,6 +236,10 @@ Added the ability to hit professional claim submission API. For more details, se
188
236
  - Authentication
189
237
  - Configuration
190
238
 
239
+ [3.3.0]: https://github.com/WeInfuse/change_health/compare/v3.2.0...v3.3.0
240
+ [3.2.0]: https://github.com/WeInfuse/change_health/compare/v3.1.0...v3.2.0
241
+ [3.1.0]: https://github.com/WeInfuse/change_health/compare/v3.0.0...v3.1.0
242
+ [3.0.0]: https://github.com/WeInfuse/change_health/compare/v2.3.0...v3.0.0
191
243
  [2.3.0]: https://github.com/WeInfuse/change_health/compare/v2.2.1...v2.3.0
192
244
  [2.2.1]: https://github.com/WeInfuse/change_health/compare/v2.2.0...v2.2.1
193
245
  [2.2.0]: https://github.com/WeInfuse/change_health/compare/v2.1.0...v2.2.0
data/README.md CHANGED
@@ -1,9 +1,17 @@
1
1
  [![CircleCI](https://circleci.com/gh/WeInfuse/change_health.svg?style=svg)](https://circleci.com/gh/WeInfuse/change_health)
2
2
 
3
- # Change Health
3
+ ```
4
+ ____ _ _ _ _ _ _
5
+ / ___| |__ __ _ _ __ __ _ ___ | | | | ___ __ _| | |_| |__
6
+ | | | '_ \ / _` | '_ \ / _` |/ _ \ | |_| |/ _ \/ _` | | __| '_ \
7
+ | |___| | | | (_| | | | | (_| | __/ | _ | __/ (_| | | |_| | | |
8
+ \____|_| |_|\__,_|_| |_|\__, |\___| |_| |_|\___|\__,_|_|\__|_| |_|
9
+ |___/
10
+ ```
11
+
4
12
  Ruby API wrapper for [Change Health](https://developers.changehealthcare.com/api)
5
13
 
6
- ## Installation
14
+ # Installation
7
15
 
8
16
  Add this line to your application's Gemfile:
9
17
 
@@ -19,13 +27,13 @@ Or install it yourself as:
19
27
 
20
28
  $ gem install change_health
21
29
 
22
- ## Usage
30
+ # Usage
23
31
 
24
- ### Setup
32
+ ## Setup
25
33
 
26
34
  Make sure you're [configured](#configuration)!
27
35
 
28
- ### Eligibility
36
+ ## Eligibility
29
37
  [Change Healthcare Eligibility Guide](https://developers.changehealthcare.com/eligibilityandclaims/docs)
30
38
  ```ruby
31
39
  ChangeHealth::Request::Eligibility.ping # Test your connection
@@ -39,7 +47,7 @@ edata = ChangeHealth::Request::Eligibility.new(tradingPartnerServiceId: '000050'
39
47
  edata.raw # Raw Hash of JSON response
40
48
  ```
41
49
 
42
- #### Benefit(s) objects
50
+ ### Benefit(s) objects
43
51
  Benefits extends Array and provides a query-like interface.
44
52
 
45
53
  Benefit extends Hash and provides helpers for single-benefit.
@@ -58,7 +66,7 @@ edata.benefits.where(name: 'Co-Payment', code: 'B', benefitAmount: '30) # Generi
58
66
  edata.benefits.find_by(name: 'Co-Payment', code: 'B', benefitAmount: '30) # Generic 'find_by' api returns first object found
59
67
  ```
60
68
 
61
- #### Response
69
+ ### Response
62
70
 
63
71
  Response is EligibilityData object
64
72
 
@@ -76,7 +84,7 @@ edata.raw == edata.response.parsed_response
76
84
  # true
77
85
  ```
78
86
 
79
- ### Trading Partners
87
+ ## Trading Partners
80
88
  ```ruby
81
89
  # Query trading partners using a wildcard search
82
90
  # Returns Array of ChangeHealth::Models::TradingPartner Objects
@@ -89,7 +97,7 @@ trading_partners.first.service_id
89
97
  # "ABC123"
90
98
  ```
91
99
 
92
- ### Claim Submission
100
+ ## Claim Submission
93
101
  [Change Healthcare Claim Submission Guide](https://developers.changehealthcare.com/eligibilityandclaims/docs/professional-claims-v3-getting-started)
94
102
  ```ruby
95
103
  ChangeHealth::Request::Claim::Submission.ping # Test your connection
@@ -101,12 +109,13 @@ claim_submitter = ChangeHealth::Models::Claim::Submitter.new(
101
109
  )
102
110
 
103
111
  receiver = { organizationName: "EXTRA HEALTHY INSURANCE"}
104
- address = {
105
- "address1": "123 address1",
106
- "city": "city1",
107
- "state": "wa",
108
- "postalCode": "981010000"
109
- }
112
+ address = ChangeHealth::Models::Claim::Address.new(
113
+ address1: "123 address1",
114
+ city: "city1",
115
+ state: "wa",
116
+ postalCode: "98101-0000"
117
+ )
118
+
110
119
  subscriber = ChangeHealth::Models::Claim::Subscriber.new(
111
120
  member_id: "0000000001",
112
121
  payment_responsibility_level_code: "P",
@@ -118,45 +127,45 @@ subscriber = ChangeHealth::Models::Claim::Subscriber.new(
118
127
  )
119
128
  provider = ChangeHealth::Models::Claim::Provider.new(
120
129
  address: address,
121
- employer_id: "000000000",
122
- first_name: "johnone",
123
- last_name: "doetwo",
124
- npi: "1760854442",
125
- provider_type: "BillingProvider"
130
+ employer_id: "000000000",
131
+ first_name: "johnone",
132
+ last_name: "doetwo",
133
+ npi: "1760854442",
134
+ provider_type: "BillingProvider"
126
135
  )
127
136
 
128
137
  health_care_code_information1 = {
129
- "diagnosisTypeCode": "ABK",
130
- "diagnosisCode": "S93401A"
138
+ diagnosisTypeCode: "ABK",
139
+ diagnosisCode: "S93401A"
131
140
  }
132
141
  health_care_code_information2 = {
133
- "diagnosisTypeCode": "ABF",
134
- "diagnosisCode": "S72044G"
142
+ diagnosisTypeCode: "ABF",
143
+ diagnosisCode: "S72044G"
135
144
 
136
145
  }
137
146
  service_line1 = ChangeHealth::Models::Claim::ServiceLine.new(
138
147
  service_date: "2018-05-14",
139
148
  professional_service: {
140
- "procedureIdentifier": "HC",
141
- "lineItemChargeAmount": "25",
142
- "procedureCode": "E0570",
143
- "measurementUnit": "UN",
144
- "serviceUnitCount": "1",
145
- "compositeDiagnosisCodePointers": {
146
- "diagnosisCodePointers": ["1","2"]
149
+ procedureIdentifier: "HC",
150
+ lineItemChargeAmount: "25",
151
+ procedureCode: "E0570",
152
+ measurementUnit: "UN",
153
+ serviceUnitCount: "1",
154
+ compositeDiagnosisCodePointers: {
155
+ diagnosisCodePointers: ["1","2"]
147
156
  }
148
157
  }
149
158
  )
150
159
  service_line2 = ChangeHealth::Models::Claim::ServiceLine.new(
151
160
  service_date: "20180514",
152
161
  professional_service: {
153
- "procedureIdentifier": "HC",
154
- "lineItemChargeAmount": "3.75",
155
- "procedureCode": "A7003",
156
- "measurementUnit": "UN",
157
- "serviceUnitCount": "1",
158
- "compositeDiagnosisCodePointers": {
159
- "diagnosisCodePointers": ["1"]
162
+ procedureIdentifier: "HC",
163
+ lineItemChargeAmount: "3.75",
164
+ procedureCode: "A7003",
165
+ measurementUnit: "UN",
166
+ serviceUnitCount: "1",
167
+ compositeDiagnosisCodePointers: {
168
+ diagnosisCodePointers: ["1"]
160
169
  }
161
170
  }
162
171
  )
@@ -196,10 +205,10 @@ claim_submission_data = claim_submission.submission
196
205
  validation = claim_submission.validation
197
206
  ```
198
207
 
199
- ### Claim Reports
208
+ ## Claim Reports
200
209
  [Change Healthcare Claim Responses and Reports Guide](https://developers.changehealthcare.com/eligibilityandclaims/docs/claims-responses-and-reports-getting-started)
201
210
 
202
- #### Get Reports
211
+ ### Get Reports
203
212
  ```ruby
204
213
  ChangeHealth::Request::Claim::Report.ping # Test your connection
205
214
 
@@ -226,33 +235,78 @@ reports_edi = report_list.report_names.map {|report_name| ChangeHealth::Request:
226
235
  # all reports in edi format
227
236
  ```
228
237
 
229
- #### Review Individual Claims
230
- Currently only works for json 277 reports. json 835 reports coming soon!
238
+ ### Inspect Reports
239
+ Currently only works for json 277 reports and json 835 reports. Not for EDI reports
240
+
241
+ From a report, you can get an array of claims
231
242
 
232
- From a report, you can get an array of claims. For a full list of fields, see `ChangeHealth::Response::Claim::ReportClaim`
243
+ #### Report 277
233
244
 
234
245
  ```ruby
235
- report_claims = ChangeHealth::Request::Claim::Report.get_report("X3000000.AB", as_json_report: true).claims
236
- # list of claims in the report
246
+ report_277_data = ChangeHealth::Request::Claim::Report.get_report("X3000000.AB", as_json_report: true)
237
247
 
238
- claim = report_claims.first
239
- claim.payer_org_name
248
+ report_277_data.payer_name
240
249
  # "PREMERA"
241
250
 
242
- claim.subscriber_first_name
251
+ report_277_data.report_creation_date
252
+ # Tue, 01 Dec 2020
253
+
254
+ claim_277 = report_277_data.claims.first
255
+ claim_277.payer_name
256
+ # "PREMERA"
257
+
258
+ claim_277.report_name
259
+ # "X3000000.AB"
260
+
261
+ claim_277.patient_first_name
243
262
  # "JOHNONE"
244
263
 
245
- claim.transaction_set_creation_date
264
+ claim_277.report_creation_date
246
265
  # Tue, 01 Dec 2020
247
266
 
248
- claim.latest_status_category_codes
267
+ # Report 277 specific below
268
+ claim_277.latest_status_category_codes
249
269
  # ["F1"]
250
270
 
251
- claim.latest_total_charge_amount
271
+ claim_277.total_charge_amount
252
272
  # "100"
273
+
274
+ claim_277.procedure_codes
275
+ # ["97161"]
276
+ ```
277
+
278
+ #### Report 835
279
+
280
+ ```ruby
281
+ report_835_data = ChangeHealth::Request::Claim::Report.get_report("R5000000.XY", as_json_report: true)
282
+
283
+ report_835_data.payment_method_code
284
+ # "ACH"
285
+
286
+ report_835_data.total_actual_provider_payment_amount
287
+ # "2563.13"
288
+
289
+ claim_835 = report_835_data.claims.first
290
+ claim_835.payer_name
291
+ # "NATIONAL GOVERNMENT SERVICES, INC."
292
+
293
+ claim_835.patient_first_name
294
+ # "JANE"
295
+
296
+ claim_835.patient_member_id
297
+ # "7SL5RA7XR19"
298
+
299
+ claim_835.report_creation_date
300
+ # Wed, 22 Apr 2020
301
+
302
+ claim_835.procedure_codes
303
+ # ["21210", "21026", "21208", "30580"]
304
+
305
+ claim_835.service_lines.map(&:line_item_charge_amount)
306
+ # ["3600", "1890", "1836", "1680"]
253
307
  ```
254
308
 
255
- ### Configuration
309
+ ## Configuration
256
310
 
257
311
  ```ruby
258
312
  ChangeHealth.configure do |c|
@@ -263,12 +317,12 @@ ChangeHealth.configure do |c|
263
317
  end
264
318
  ```
265
319
 
266
- ## Development
320
+ # Development
267
321
 
268
322
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
269
323
 
270
324
  To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
271
325
 
272
- ## Contributing
326
+ # Contributing
273
327
 
274
328
  Bug reports and pull requests are welcome on GitHub at https://github.com/WeInfuse/change\_health.
@@ -0,0 +1,13 @@
1
+ module ChangeHealth
2
+ module Models
3
+ module Claim
4
+ class Address < Model
5
+ property :address1, required: false
6
+ property :address2, required: false
7
+ property :city, required: false
8
+ property :postalCode, from: :postal_code, required: false
9
+ property :state, required: false
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,12 @@
1
+ module ChangeHealth
2
+ module Models
3
+ module Claim
4
+ class DrugIdentification < Model
5
+ property :measurementUnitCode, from: :measurement_unit_code, required: false
6
+ property :nationalDrugCode, from: :national_drug_code, required: false
7
+ property :nationalDrugUnitCount, from: :national_drug_unit_count, required: false
8
+ property :serviceIdQualifier, from: :service_id_qualifier, required: false
9
+ end
10
+ end
11
+ end
12
+ end
@@ -2,10 +2,10 @@ module ChangeHealth
2
2
  module Models
3
3
  module Claim
4
4
  class ServiceLine < Model
5
-
5
+ property :drugIdentification, from: :drug_identification, required: false
6
6
  property :serviceDate, from: :service_date, required: false
7
7
  property :professionalService, from: :professional_service, required: false
8
-
8
+ property :renderingProvider, from: :rendering_provider, required: false
9
9
  end
10
10
  end
11
11
  end
@@ -6,6 +6,7 @@ module ChangeHealth
6
6
  property :dateOfBirth, from: :date_of_birth, required: false
7
7
  property :firstName, from: :first_name, required: false
8
8
  property :gender, required: false
9
+ property :groupNumber, from: :group_number, required: false
9
10
  property :lastName, from: :last_name, required: false
10
11
  property :memberId, from: :member_id, required: false
11
12
  property :paymentResponsibilityLevelCode, from: :payment_responsibility_level_code, required: false
@@ -1,7 +1,7 @@
1
1
  module ChangeHealth
2
2
  module Models
3
3
  DATE_FORMAT = '%Y%m%d'
4
- DATE_FORMATTER = ->(d) {
4
+ DATE_FORMATTER = lambda { |d|
5
5
  begin
6
6
  d = Date.parse(d) if d.is_a?(String)
7
7
  rescue ArgumentError
@@ -12,37 +12,65 @@ module ChangeHealth
12
12
  d
13
13
  }
14
14
 
15
- PARSE_DATE = ->(d) {
15
+ PARSE_DATE = lambda { |d|
16
16
  begin
17
17
  d = Date.strptime(d, ChangeHealth::Models::DATE_FORMAT)
18
- rescue
18
+ rescue StandardError
19
19
  end
20
20
 
21
21
  d
22
22
  }
23
23
 
24
- CONTROL_NUMBER = ->() { '%09d' % rand(1_000_000_000) }
24
+ POSTAL_CODE_FORMATTER = lambda { |postal_code|
25
+ begin
26
+ formatted_postal_code = postal_code&.to_s&.tr('-', '')
27
+ rescue StandardError
28
+ end
29
+ formatted_postal_code || postal_code
30
+ }
31
+
32
+ CONTROL_NUMBER = -> { '%09d' % rand(1_000_000_000) }
25
33
 
26
34
  class Model < Hashie::Trash
27
35
  def to_h
28
- result = super.to_h
36
+ self.class.hashify(self)
37
+ end
38
+
39
+ def self.hashify(model)
40
+ model.map do |key, value|
41
+ formatted_value = case value
42
+ when Hash
43
+ hashify(model[key])
44
+ when Array
45
+ value.map do |element|
46
+ if element.is_a?(Hash)
47
+ hashify(element)
48
+ else # if it's an array of arrays, can't handle it
49
+ format_value(key, element)
50
+ end
51
+ end
52
+ else
53
+ format_value(key, value)
54
+ end
55
+ [key, formatted_value]
56
+ end.to_h
57
+ end
58
+
59
+ def self.format_value(key, value)
60
+ return nil if value == ''
29
61
 
30
- self.each_pair do |key, value|
31
- if key.to_s.downcase.include?('date')
32
- result[key] = ChangeHealth::Models::DATE_FORMATTER.call(result[key])
33
- end
34
- result[key] = nil if value == ""
35
- end
62
+ return ChangeHealth::Models::DATE_FORMATTER.call(value) if key.to_s.downcase.include?('date')
63
+ return ChangeHealth::Models::POSTAL_CODE_FORMATTER.call(value) if key.to_s.downcase.include?('postalcode')
36
64
 
37
- result
65
+ value
38
66
  end
39
67
 
40
- def as_json(args = {})
41
- self.to_h
68
+ def as_json(_args = {})
69
+ to_h
42
70
  end
43
71
 
44
- def to_json
45
- self.to_h.to_json
72
+ def to_json(*_args)
73
+ to_h.to_json
46
74
  end
47
75
  end
48
76
  end
@@ -2,7 +2,6 @@ module ChangeHealth
2
2
  module Request
3
3
  module Claim
4
4
  class Submission < Hashie::Trash
5
-
6
5
  ENDPOINT = '/medicalnetwork/professionalclaims/v3'.freeze
7
6
  HEALTH_CHECK_ENDPOINT = ENDPOINT + '/healthcheck'.freeze
8
7
  SUBMISSION_ENDPOINT = ENDPOINT + '/submission'.freeze
@@ -25,11 +24,15 @@ module ChangeHealth
25
24
  end
26
25
 
27
26
  def submission
28
- ChangeHealth::Response::Claim::SubmissionData.new(response: ChangeHealth::Connection.new.request(endpoint: SUBMISSION_ENDPOINT, body: self.to_h, headers: professional_headers))
27
+ ChangeHealth::Response::Claim::SubmissionData.new(response: ChangeHealth::Connection.new.request(
28
+ endpoint: SUBMISSION_ENDPOINT, body: to_h, headers: professional_headers
29
+ ))
29
30
  end
30
31
 
31
32
  def validation
32
- ChangeHealth::Response::Claim::SubmissionData.new(response: ChangeHealth::Connection.new.request(endpoint: VALIDATION_ENDPOINT, body: self.to_h, headers: professional_headers))
33
+ ChangeHealth::Response::Claim::SubmissionData.new(response: ChangeHealth::Connection.new.request(
34
+ endpoint: VALIDATION_ENDPOINT, body: to_h, headers: professional_headers
35
+ ))
33
36
  end
34
37
 
35
38
  def self.health_check
@@ -37,19 +40,17 @@ module ChangeHealth
37
40
  end
38
41
 
39
42
  def self.ping
40
- self.health_check
43
+ health_check
41
44
  end
42
45
 
43
46
  def professional_headers
44
47
  if self[:headers]
45
48
  extra_headers = {}
46
- extra_headers["X-CHC-ClaimSubmission-SubmitterId"] = self[:headers][:submitter_id]
47
- extra_headers["X-CHC-ClaimSubmission-BillerId"] = self[:headers][:biller_id]
48
- extra_headers["X-CHC-ClaimSubmission-Username"] = self[:headers][:username]
49
- extra_headers["X-CHC-ClaimSubmission-Pwd"] = self[:headers][:password]
49
+ extra_headers['X-CHC-ClaimSubmission-SubmitterId'] = self[:headers][:submitter_id]
50
+ extra_headers['X-CHC-ClaimSubmission-BillerId'] = self[:headers][:biller_id]
51
+ extra_headers['X-CHC-ClaimSubmission-Username'] = self[:headers][:username]
52
+ extra_headers['X-CHC-ClaimSubmission-Pwd'] = self[:headers][:password]
50
53
  extra_headers
51
- else
52
- nil
53
54
  end
54
55
  end
55
56
  end
@@ -0,0 +1,44 @@
1
+ module ChangeHealth
2
+ module Response
3
+ module Claim
4
+ class Report277Claim < ReportClaim
5
+ property :clearinghouse_trace_number, required: false
6
+ property :info_claim_statuses, required: false
7
+ property :patient_account_number, required: false
8
+ property :procedure_codes, required: false
9
+ property :referenced_transaction_trace_number, required: false
10
+ property :trading_partner_claim_number, required: false
11
+
12
+ def add_info_claim_status(info_claim_status)
13
+ self[:info_claim_statuses] ||= []
14
+ self[:info_claim_statuses] << info_claim_status
15
+ end
16
+
17
+ def add_procedure_code(procedure_code)
18
+ self[:procedure_codes] ||= []
19
+ self[:procedure_codes] << procedure_code
20
+ end
21
+
22
+ def latest_status_category_codes
23
+ latest_info_claim_status&.status_category_codes
24
+ end
25
+
26
+ def total_charge_amount
27
+ latest_info_claim_status&.total_charge_amount
28
+ end
29
+
30
+ def latest_status_info_effective_date
31
+ latest_info_claim_status&.status_information_effective_date
32
+ end
33
+
34
+ def latest_info_claim_status
35
+ info_claim_statuses&.select do |info|
36
+ !info.status_information_effective_date.nil? &&
37
+ info.status_information_effective_date.is_a?(Date) &&
38
+ info.status_information_effective_date <= Date.today
39
+ end&.max_by(&:status_information_effective_date)
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -8,23 +8,29 @@ module ChangeHealth
8
8
  end
9
9
 
10
10
  # Only one payer per report
11
- def payer_org_name
11
+ def payer_name
12
12
  transactions&.first&.dig('payers')&.first&.dig('organizationName')
13
13
  end
14
14
 
15
+ def report_creation_date
16
+ ChangeHealth::Models::PARSE_DATE.call(transactions&.first&.dig('transactionSetCreationDate'))
17
+ end
18
+
15
19
  def claims
16
20
  report_claims = []
17
21
 
18
22
  transactions&.each do |transaction|
19
- transaction_set_creation_date = ChangeHealth::Models::PARSE_DATE.call(transaction['transactionSetCreationDate'])
23
+ report_creation_date = ChangeHealth::Models::PARSE_DATE.call(transaction['transactionSetCreationDate'])
20
24
  transaction['payers']&.each do |payer|
21
- payer_org_name = payer['organizationName']
25
+ payer_identification = payer['payerIdentification']
26
+ payer_name = payer['organizationName']
22
27
  payer['claimStatusTransactions']&.each do |claim_status_txn|
23
28
  claim_status_txn['claimStatusDetails']&.each do |claim_status_detail|
24
29
  service_provider_npi = claim_status_detail.dig('serviceProvider', 'npi')
25
30
  claim_status_detail['patientClaimStatusDetails']&.each do |patient_claim_status_detail|
26
- subscriber_first_name = patient_claim_status_detail.dig('subscriber', 'firstName')
27
- subscriber_last_name = patient_claim_status_detail.dig('subscriber', 'lastName')
31
+ patient_first_name = patient_claim_status_detail.dig('subscriber', 'firstName')
32
+ patient_last_name = patient_claim_status_detail.dig('subscriber', 'lastName')
33
+ patient_member_id = patient_claim_status_detail.dig('subscriber', 'memberId')
28
34
  patient_claim_status_detail['claims']&.each do |claim|
29
35
  procedure_codes = []
30
36
  claim['serviceLines']&.each do |service_line|
@@ -33,11 +39,17 @@ module ChangeHealth
33
39
  claim_status = claim['claimStatus']
34
40
  next if claim_status.nil?
35
41
 
36
- service_begin_date = ChangeHealth::Models::PARSE_DATE.call(claim_status['claimServiceBeginDate'] || claim_status['claimServiceDate'])
37
- service_end_date = ChangeHealth::Models::PARSE_DATE.call(claim_status['claimServiceEndDate'] || claim_status['claimServiceDate'])
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
+
47
+ service_date_begin = ChangeHealth::Models::PARSE_DATE.call(claim_status['claimServiceBeginDate'] || claim_status['claimServiceDate'])
48
+ service_date_end = ChangeHealth::Models::PARSE_DATE.call(claim_status['claimServiceEndDate'] || claim_status['claimServiceDate'])
38
49
 
39
50
  info_claim_statuses = []
40
51
  claim_status['informationClaimStatuses']&.each do |info_claim_status|
52
+ message = info_claim_status['message']
41
53
  status_information_effective_date = ChangeHealth::Models::PARSE_DATE.call(info_claim_status['statusInformationEffectiveDate'])
42
54
  total_charge_amount = info_claim_status['totalClaimChargeAmount']
43
55
 
@@ -46,22 +58,30 @@ module ChangeHealth
46
58
  status_category_codes << info_status['healthCareClaimStatusCategoryCode']
47
59
  end
48
60
 
49
- info_claim_statuses << ReportInfoClaimStatus.new(
61
+ info_claim_statuses << Report277InfoClaimStatus.new(
62
+ message: message,
50
63
  status_category_codes: status_category_codes,
51
64
  total_charge_amount: total_charge_amount,
52
65
  status_information_effective_date: status_information_effective_date
53
66
  )
54
67
  end
55
- report_claims << ReportClaim.new(
56
- transaction_set_creation_date: transaction_set_creation_date,
57
- payer_org_name: payer_org_name,
58
- service_provider_npi: service_provider_npi,
59
- subscriber_first_name: subscriber_first_name,
60
- subscriber_last_name: subscriber_last_name,
68
+ report_claims << Report277Claim.new(
69
+ clearinghouse_trace_number: clearinghouse_trace_number,
70
+ info_claim_statuses: info_claim_statuses,
71
+ patient_account_number: patient_account_number,
72
+ patient_first_name: patient_first_name,
73
+ patient_last_name: patient_last_name,
74
+ patient_member_id: patient_member_id,
75
+ payer_identification: payer_identification,
76
+ payer_name: payer_name,
61
77
  procedure_codes: procedure_codes,
62
- service_begin_date: service_begin_date,
63
- service_end_date: service_end_date,
64
- info_claim_statuses: info_claim_statuses
78
+ referenced_transaction_trace_number: referenced_transaction_trace_number,
79
+ report_creation_date: report_creation_date,
80
+ report_name: report_name,
81
+ service_date_begin: service_date_begin,
82
+ service_date_end: service_date_end,
83
+ service_provider_npi: service_provider_npi,
84
+ trading_partner_claim_number: trading_partner_claim_number
65
85
  )
66
86
  end
67
87
  end
@@ -1,7 +1,8 @@
1
1
  module ChangeHealth
2
2
  module Response
3
3
  module Claim
4
- class ReportInfoClaimStatus < Hashie::Trash
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
@@ -0,0 +1,19 @@
1
+ module ChangeHealth
2
+ module Response
3
+ module Claim
4
+ class Report835Claim < ReportClaim
5
+ property :claim_payment_remark_codes, required: false
6
+ property :patient_control_number, required: false
7
+ property :payer_claim_control_number, required: false
8
+ property :payment_method_code, required: false
9
+ property :service_lines, required: false
10
+ property :total_actual_provider_payment_amount, required: false
11
+ property :total_charge_amount, required: false
12
+
13
+ def procedure_codes
14
+ service_lines&.map(&:adjudicated_procedure_code)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,7 +1,138 @@
1
1
  module ChangeHealth
2
2
  module Response
3
3
  module Claim
4
+ # Methods only return meaningful data for json reports
4
5
  class Report835Data < ChangeHealth::Response::Claim::ReportData
6
+ def transactions
7
+ @raw['transactions']
8
+ end
9
+
10
+ # Only one payer per report
11
+ def payer_name
12
+ transactions&.first&.dig('payer')&.dig('name')
13
+ end
14
+
15
+ def payment_method_code
16
+ transactions&.first&.dig('financialInformation', 'paymentMethodCode')
17
+ end
18
+
19
+ def report_creation_date
20
+ ChangeHealth::Models::PARSE_DATE.call(transactions&.first&.dig('productionDate'))
21
+ end
22
+
23
+ def total_actual_provider_payment_amount
24
+ transactions&.first&.dig('financialInformation', 'totalActualProviderPaymentAmount')
25
+ end
26
+
27
+ def claims
28
+ report_claims = []
29
+
30
+ 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
+ transaction['detailInfo']&.each do |detail_info|
39
+ detail_info['paymentInfo']&.each do |payment_info|
40
+ patient_control_number = payment_info.dig('claimPaymentInfo', 'patientControlNumber')
41
+ patient_first_name = payment_info.dig('patientName', 'firstName')
42
+ patient_last_name = payment_info.dig('patientName', 'lastName')
43
+ patient_member_id = payment_info.dig('patientName', 'memberId')
44
+ payer_claim_control_number = payment_info.dig('claimPaymentInfo', 'payerClaimControlNumber')
45
+ service_provider_npi = payment_info.dig('renderingProvider', 'npi')
46
+ total_charge_amount = payment_info.dig('claimPaymentInfo', 'totalClaimChargeAmount')
47
+
48
+ claim_payment_remark_codes = []
49
+ claim_payment_remark_codes_index = 1
50
+ while payment_info.dig('outpatientAdjudication',
51
+ "claimPaymentRemarkCode#{claim_payment_remark_codes_index}")
52
+ claim_payment_remark_codes << payment_info.dig('outpatientAdjudication',
53
+ "claimPaymentRemarkCode#{claim_payment_remark_codes_index}")
54
+ claim_payment_remark_codes_index += 1
55
+ end
56
+
57
+ service_date_begin = nil
58
+ service_date_end = nil
59
+ service_lines = []
60
+ payment_info['serviceLines']&.each do |service_line|
61
+ service_line_date = ChangeHealth::Models::PARSE_DATE.call(service_line['serviceDate'])
62
+ if service_date_begin.nil? || service_line_date < service_date_begin
63
+ service_date_begin = service_line_date
64
+ end
65
+ service_date_end = service_line_date if service_date_end.nil? || service_date_end < service_line_date
66
+
67
+ adjudicated_procedure_code = service_line.dig('servicePaymentInformation', 'adjudicatedProcedureCode')
68
+ allowed_actual = service_line.dig('serviceSupplementalAmounts', 'allowedActual')
69
+ line_item_charge_amount = service_line.dig('servicePaymentInformation', 'lineItemChargeAmount')
70
+ line_item_provider_payment_amount = service_line.dig('servicePaymentInformation',
71
+ 'lineItemProviderPaymentAmount')
72
+
73
+ service_adjustments = []
74
+ service_line['serviceAdjustments']&.each do |service_adjustment|
75
+ adjustments = {}
76
+ service_adjustment_index = 1
77
+ while service_adjustment["adjustmentReasonCode#{service_adjustment_index}"]
78
+ adjustment_reason = service_adjustment["adjustmentReasonCode#{service_adjustment_index}"]
79
+ adjustment_amount = service_adjustment["adjustmentAmount#{service_adjustment_index}"]
80
+ adjustments[adjustment_reason] = adjustment_amount
81
+ service_adjustment_index += 1
82
+ end
83
+
84
+ claim_adjustment_group_code = service_adjustment['claimAdjustmentGroupCode']
85
+
86
+ service_adjustments << Report835ServiceAdjustment.new(
87
+ adjustments: adjustments,
88
+ claim_adjustment_group_code: claim_adjustment_group_code
89
+ )
90
+ end
91
+
92
+ health_care_check_remark_codes = []
93
+ service_line['healthCareCheckRemarkCodes']&.each do |health_care_check_remark_code|
94
+ health_care_check_remark_codes << Report835HealthCareCheckRemarkCode.new(
95
+ code_list_qualifier_code: health_care_check_remark_code['codeListQualifierCode'],
96
+ code_list_qualifier_code_value: health_care_check_remark_code['codeListQualifierCodeValue'],
97
+ remark_code: health_care_check_remark_code['remarkCode']
98
+ )
99
+ end
100
+
101
+ service_lines << Report835ServiceLine.new(
102
+ adjudicated_procedure_code: adjudicated_procedure_code,
103
+ allowed_actual: allowed_actual,
104
+ line_item_charge_amount: line_item_charge_amount,
105
+ line_item_provider_payment_amount: line_item_provider_payment_amount,
106
+ service_adjustments: service_adjustments,
107
+ health_care_check_remark_codes: health_care_check_remark_codes
108
+ )
109
+ end
110
+
111
+ report_claims << Report835Claim.new(
112
+ claim_payment_remark_codes: claim_payment_remark_codes,
113
+ patient_control_number: patient_control_number,
114
+ patient_first_name: patient_first_name,
115
+ patient_last_name: patient_last_name,
116
+ patient_member_id: patient_member_id,
117
+ payer_claim_control_number: payer_claim_control_number,
118
+ payer_identification: payer_identification,
119
+ payer_name: payer_name,
120
+ payment_method_code: payment_method_code,
121
+ report_creation_date: report_creation_date,
122
+ report_name: report_name,
123
+ service_date_begin: service_date_begin,
124
+ service_date_end: service_date_end,
125
+ service_lines: service_lines,
126
+ service_provider_npi: service_provider_npi,
127
+ total_actual_provider_payment_amount: total_actual_provider_payment_amount,
128
+ total_charge_amount: total_charge_amount
129
+ )
130
+ end
131
+ end
132
+ end
133
+
134
+ report_claims
135
+ end
5
136
  end
6
137
  end
7
138
  end
@@ -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
@@ -0,0 +1,15 @@
1
+ module ChangeHealth
2
+ module Response
3
+ module Claim
4
+ class Report835ServiceAdjustment < Hashie::Trash
5
+ property :adjustments, required: false
6
+ property :claim_adjustment_group_code, required: false
7
+
8
+ def add_adjustment(adjustment)
9
+ self[:adjustments] ||= []
10
+ self[:adjustments] << adjustment
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,14 @@
1
+ module ChangeHealth
2
+ module Response
3
+ module Claim
4
+ class Report835ServiceLine < Hashie::Trash
5
+ property :adjudicated_procedure_code, required: false
6
+ property :allowed_actual, required: false
7
+ property :health_care_check_remark_codes, required: false
8
+ property :line_item_charge_amount, required: false
9
+ property :line_item_provider_payment_amount, required: false
10
+ property :service_adjustments, required: false
11
+ end
12
+ end
13
+ end
14
+ end
@@ -2,45 +2,16 @@ module ChangeHealth
2
2
  module Response
3
3
  module Claim
4
4
  class ReportClaim < Hashie::Trash
5
- property :transaction_set_creation_date, required: false
6
- property :payer_org_name, required: false
5
+ property :patient_first_name, required: false
6
+ property :patient_last_name, required: false
7
+ property :patient_member_id, required: false
8
+ property :payer_identification, required: false
9
+ property :payer_name, required: false
10
+ property :report_creation_date, required: false
11
+ property :report_name, required: false
12
+ property :service_date_begin, required: false
13
+ property :service_date_end, required: false
7
14
  property :service_provider_npi, required: false
8
- property :subscriber_first_name, required: false
9
- property :subscriber_last_name, required: false
10
- property :procedure_codes, required: false
11
- property :service_begin_date, required: false
12
- property :service_end_date, required: false
13
- property :info_claim_statuses, required: false
14
-
15
- def add_procedure_code(procedure_code)
16
- self[:procedure_codes] ||= []
17
- self[:procedure_codes] << procedure_code
18
- end
19
-
20
- def add_info_claim_status(info_claim_status)
21
- self[:info_claim_statuses] ||= []
22
- self[:info_claim_statuses] << info_claim_status
23
- end
24
-
25
- def latest_status_category_codes
26
- latest_info_claim_status&.status_category_codes
27
- end
28
-
29
- def latest_total_charge_amount
30
- latest_info_claim_status&.total_charge_amount
31
- end
32
-
33
- def latest_status_info_effective_date
34
- latest_info_claim_status&.status_information_effective_date
35
- end
36
-
37
- def latest_info_claim_status
38
- info_claim_statuses&.select do |info|
39
- !info.status_information_effective_date.nil? &&
40
- info.status_information_effective_date.is_a?(Date) &&
41
- info.status_information_effective_date <= Date.today
42
- end&.max_by(&:status_information_effective_date)
43
- end
44
15
  end
45
16
  end
46
17
  end
@@ -1,13 +1,12 @@
1
1
  module ChangeHealth
2
- # TODO: This should be the response module/folder... next major release
3
- module Models
2
+ module Response
4
3
  class Error
5
4
  attr_reader :data
6
5
 
7
6
  SIMPLE_RETRY_CODES = %w[
8
- 42
9
- 80
10
- ].freeze
7
+ 42
8
+ 80
9
+ ].freeze
11
10
 
12
11
  NO_RESUBMIT_MESSAGES = [
13
12
  'resubmission not allowed',
@@ -40,7 +39,9 @@ module ChangeHealth
40
39
 
41
40
  def retryable?
42
41
  represents_down? ||
43
- (code? && SIMPLE_RETRY_CODES.include?(code) && followupAction? && NO_RESUBMIT_MESSAGES.none? {|msg| followupAction.downcase.include?(msg) })
42
+ (code? && SIMPLE_RETRY_CODES.include?(code) && followupAction? && NO_RESUBMIT_MESSAGES.none? do |msg|
43
+ followupAction.downcase.include?(msg)
44
+ end)
44
45
  end
45
46
 
46
47
  %w[field description code followupAction location].each do |method_name|
@@ -48,7 +49,7 @@ module ChangeHealth
48
49
  false == send(method_name).nil?
49
50
  end
50
51
 
51
- define_method("#{method_name}") do
52
+ define_method(method_name.to_s) do
52
53
  @data[method_name]
53
54
  end
54
55
  end
@@ -16,13 +16,13 @@ module ChangeHealth
16
16
  end
17
17
 
18
18
  def errors?
19
- self.errors.is_a?(Array) && false == self.errors.empty?
19
+ errors.is_a?(Array) && false == errors.empty?
20
20
  end
21
21
 
22
22
  def errors
23
23
  errors = @raw.dig('errors') || []
24
24
 
25
- errors.flatten.map {|error| ChangeHealth::Models::Error.new(error) }
25
+ errors.flatten.map { |error| ChangeHealth::Response::Error.new(error) }
26
26
  end
27
27
 
28
28
  def recommend_retry?
@@ -34,7 +34,7 @@ module ChangeHealth
34
34
 
35
35
  return false if error_codes.empty?
36
36
 
37
- return error_codes.all?(&:retryable?)
37
+ error_codes.all?(&:retryable?)
38
38
  end
39
39
  end
40
40
  end
@@ -1,3 +1,3 @@
1
1
  module ChangeHealth
2
- VERSION = '2.3.0'.freeze
2
+ VERSION = '3.3.0'.freeze
3
3
  end
data/lib/change_health.rb CHANGED
@@ -5,9 +5,10 @@ require 'change_health/authentication'
5
5
  require 'change_health/change_health_exception'
6
6
  require 'change_health/connection'
7
7
  require 'change_health/extensions'
8
- require 'change_health/models/error'
9
8
  require 'change_health/models/model'
9
+ require 'change_health/models/claim/submission/address'
10
10
  require 'change_health/models/claim/submission/claim_information'
11
+ require 'change_health/models/claim/submission/drug_identification'
11
12
  require 'change_health/models/claim/submission/provider'
12
13
  require 'change_health/models/claim/submission/service_line'
13
14
  require 'change_health/models/claim/submission/submitter'
@@ -20,6 +21,7 @@ require 'change_health/request/eligibility'
20
21
  require 'change_health/request/submission'
21
22
  require 'change_health/request/report'
22
23
  require 'change_health/request/trading_partner'
24
+ require 'change_health/response/error'
23
25
  require 'change_health/response/response_data'
24
26
  require 'change_health/response/claim/submission/submission_data'
25
27
  require 'change_health/response/claim/report/report_list_data'
@@ -27,7 +29,12 @@ require 'change_health/response/claim/report/report_data'
27
29
  require 'change_health/response/claim/report/report_277_data'
28
30
  require 'change_health/response/claim/report/report_835_data'
29
31
  require 'change_health/response/claim/report/report_claim'
30
- require 'change_health/response/claim/report/report_info_claim_status'
32
+ require 'change_health/response/claim/report/report_277_claim'
33
+ require 'change_health/response/claim/report/report_277_info_claim_status'
34
+ require 'change_health/response/claim/report/report_835_claim'
35
+ require 'change_health/response/claim/report/report_835_health_care_check_remark_code'
36
+ require 'change_health/response/claim/report/report_835_service_adjustment'
37
+ require 'change_health/response/claim/report/report_835_service_line'
31
38
  require 'change_health/response/eligibility/eligibility_benefit'
32
39
  require 'change_health/response/eligibility/eligibility_benefits'
33
40
  require 'change_health/response/eligibility/eligibility_data'
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: 2.3.0
4
+ version: 3.3.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-11-19 00:00:00.000000000 Z
11
+ date: 2022-02-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -147,7 +147,9 @@ files:
147
147
  - lib/change_health/change_health_exception.rb
148
148
  - lib/change_health/connection.rb
149
149
  - lib/change_health/extensions.rb
150
+ - lib/change_health/models/claim/submission/address.rb
150
151
  - lib/change_health/models/claim/submission/claim_information.rb
152
+ - lib/change_health/models/claim/submission/drug_identification.rb
151
153
  - lib/change_health/models/claim/submission/provider.rb
152
154
  - lib/change_health/models/claim/submission/service_line.rb
153
155
  - lib/change_health/models/claim/submission/submitter.rb
@@ -155,23 +157,28 @@ files:
155
157
  - lib/change_health/models/eligibility/encounter.rb
156
158
  - lib/change_health/models/eligibility/provider.rb
157
159
  - lib/change_health/models/eligibility/subscriber.rb
158
- - lib/change_health/models/error.rb
159
160
  - lib/change_health/models/model.rb
160
161
  - lib/change_health/models/trading_partner/trading_partner.rb
161
162
  - lib/change_health/request/eligibility.rb
162
163
  - lib/change_health/request/report.rb
163
164
  - lib/change_health/request/submission.rb
164
165
  - lib/change_health/request/trading_partner.rb
166
+ - lib/change_health/response/claim/report/report_277_claim.rb
165
167
  - lib/change_health/response/claim/report/report_277_data.rb
168
+ - lib/change_health/response/claim/report/report_277_info_claim_status.rb
169
+ - lib/change_health/response/claim/report/report_835_claim.rb
166
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
172
+ - lib/change_health/response/claim/report/report_835_service_adjustment.rb
173
+ - lib/change_health/response/claim/report/report_835_service_line.rb
167
174
  - lib/change_health/response/claim/report/report_claim.rb
168
175
  - lib/change_health/response/claim/report/report_data.rb
169
- - lib/change_health/response/claim/report/report_info_claim_status.rb
170
176
  - lib/change_health/response/claim/report/report_list_data.rb
171
177
  - lib/change_health/response/claim/submission/submission_data.rb
172
178
  - lib/change_health/response/eligibility/eligibility_benefit.rb
173
179
  - lib/change_health/response/eligibility/eligibility_benefits.rb
174
180
  - lib/change_health/response/eligibility/eligibility_data.rb
181
+ - lib/change_health/response/error.rb
175
182
  - lib/change_health/response/response_data.rb
176
183
  - lib/change_health/response/trading_partner/trading_partner_data.rb
177
184
  - lib/change_health/response/trading_partner/trading_partners_data.rb