carin_for_blue_button_test_kit 0.15.1 → 0.15.3
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 +4 -4
- data/lib/carin_for_blue_button_test_kit/capability_statement/tests/instantiates_test.rb +14 -15
- data/lib/carin_for_blue_button_test_kit/capability_statement/tests/json_support_test.rb +0 -1
- data/lib/carin_for_blue_button_test_kit/client/v2.0.0/c4bb_client_test_suite.rb +14 -0
- data/lib/carin_for_blue_button_test_kit/client/v2.0.0/claim_data_request_tests/client_claims_data_attestation_test.rb +2 -2
- data/lib/carin_for_blue_button_test_kit/custom_groups/v2.0.0/eob/insurer_same_test.rb +74 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/v2.0.0/eob/outcome_complete_test.rb +32 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/v2.0.0/eob/type_data_absent_test.rb +41 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_client/authentication.rb +30 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_client/last_updated.rb +31 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_client/must_support_absent_reason.rb +26 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_client/must_support_display.rb +26 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_client/must_support_missing.rb +27 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_client.rb +25 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/00_authorization_group/attestation_test_requirement_48.rb +50 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/00_authorization_group/attestation_test_requirement_60.rb +48 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/00_authorization_group/attestation_test_requirement_97.rb +41 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/00_authorization_group.rb +15 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/01_must_support_group/attestation_test_requirement_10.rb +26 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/01_must_support_group/attestation_test_requirement_2.rb +29 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/01_must_support_group/attestation_test_requirement_5.rb +29 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/01_must_support_group/attestation_test_requirement_7.rb +30 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/01_must_support_group/attestation_test_requirement_9.rb +26 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/01_must_support_group.rb +19 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/03_eob_group/attestation_test_requirement_105.rb +29 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/03_eob_group/attestation_test_requirement_108.rb +29 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/03_eob_group/attestation_test_requirement_115.rb +24 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/03_eob_group/attestation_test_requirement_116.rb +30 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/03_eob_group/attestation_test_requirement_118.rb +31 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/03_eob_group/attestation_test_requirement_119.rb +31 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/03_eob_group/attestation_test_requirement_120.rb +29 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/03_eob_group/attestation_test_requirement_124.rb +38 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/03_eob_group.rb +25 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/04_eob_inpatient_group/attestation_test_requirement_130.rb +29 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/04_eob_inpatient_group/attestation_test_requirement_132.rb +27 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/04_eob_inpatient_group.rb +13 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/05_eob_outpatient_group/attestation_test_requirement_156.rb +28 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/05_eob_outpatient_group/attestation_test_requirement_157.rb +33 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/05_eob_outpatient_group.rb +13 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/06_eob_oral_group/attestation_test_requirement_144.rb +33 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/06_eob_oral_group/attestation_test_requirement_148.rb +29 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/06_eob_oral_group/attestation_test_requirement_149.rb +27 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/06_eob_oral_group/attestation_test_requirement_150.rb +29 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/06_eob_oral_group/attestation_test_requirement_151.rb +27 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/06_eob_oral_group/attestation_test_requirement_152.rb +29 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/06_eob_oral_group/attestation_test_requirement_153.rb +31 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/06_eob_oral_group.rb +23 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/07_eob_pharmacy_group/attestation_test_requirement_161.rb +27 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/07_eob_pharmacy_group/attestation_test_requirement_162.rb +27 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/07_eob_pharmacy_group/attestation_test_requirement_163.rb +27 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/07_eob_pharmacy_group/attestation_test_requirement_164.rb +25 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/07_eob_pharmacy_group/attestation_test_requirement_165.rb +27 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/07_eob_pharmacy_group.rb +19 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/08_eob_nonclinician_group/attestation_test_requirement_168_170.rb +29 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/08_eob_nonclinician_group/attestation_test_requirement_173.rb +29 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/08_eob_nonclinician_group.rb +13 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/09_organization_group/attestation_test_requirement_177.rb +29 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/09_organization_group/attestation_test_requirement_178.rb +27 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/09_organization_group.rb +12 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/10_practitioner_group/attestation_test_requirement_186.rb +27 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/10_practitioner_group.rb +10 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/11_crosscutting_group/adjudication_amount.rb +38 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/11_crosscutting_group/amount_calculations.rb +69 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/11_crosscutting_group/attestation_test_requirement_19.rb +27 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/11_crosscutting_group/attestation_test_requirement_28.rb +26 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/11_crosscutting_group/attestation_test_requirement_99.rb +26 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/11_crosscutting_group/coverage_reference_resource.rb +31 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/11_crosscutting_group/licensing.rb +33 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/11_crosscutting_group/meta_lastupdated.rb +46 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server/11_crosscutting_group.rb +24 -0
- data/lib/carin_for_blue_button_test_kit/custom_groups/visual_inspection_and_attestation/v200_server.rb +37 -0
- data/lib/carin_for_blue_button_test_kit/generated/v1.1.0/c4bb_test_suite.rb +2 -0
- data/lib/carin_for_blue_button_test_kit/generated/v2.0.0/c4bb_test_suite.rb +20 -2
- data/lib/carin_for_blue_button_test_kit/generated/v2.0.0/eob_group.rb +6 -0
- data/lib/carin_for_blue_button_test_kit/generated/v2.0.0-dev-nonfinancial/c4bb_test_suite.rb +8 -0
- data/lib/carin_for_blue_button_test_kit/generator/suite_generator.rb +1 -1
- data/lib/carin_for_blue_button_test_kit/generator/templates/group.rb.erb +7 -1
- data/lib/carin_for_blue_button_test_kit/generator/templates/suite.rb.erb +21 -1
- data/lib/carin_for_blue_button_test_kit/requirements/{carin-for-blue-button-test-kit_requirements.csv → carin_for_blue_button_test_kit_requirements.csv} +198 -198
- data/lib/carin_for_blue_button_test_kit/requirements/generated/c4bb_v110_requirements_coverage.csv +1 -0
- data/lib/carin_for_blue_button_test_kit/requirements/generated/c4bb_v200_client_requirements_coverage.csv +47 -0
- data/lib/carin_for_blue_button_test_kit/requirements/generated/{carin-for-blue-button-test-kit_requirements_coverage.csv → c4bb_v200_requirements_coverage.csv} +156 -190
- data/lib/carin_for_blue_button_test_kit/requirements/generated/c4bb_v200devnonfinancial_requirements_coverage.csv +244 -0
- data/lib/carin_for_blue_button_test_kit/requirements/hl7.fhir.us.carin-bb_2.0.0_reqs.xlsx +0 -0
- data/lib/carin_for_blue_button_test_kit/version.rb +2 -2
- data/lib/carin_for_blue_button_test_kit.rb +0 -1
- metadata +80 -15
- data/lib/carin_for_blue_button_test_kit/requirements/carin-for-blue-button-test-kit_out_of_scope_requirements.csv +0 -68
- data/lib/inferno_requirements_tools/ext/inferno_core/runnable.rb +0 -22
- data/lib/inferno_requirements_tools/rake/rakefile_template +0 -31
- data/lib/inferno_requirements_tools/tasks/requirements_coverage.rb +0 -284
- data/lib/requirements_config.yaml +0 -17
@@ -0,0 +1,29 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement5 < Inferno::Test
|
3
|
+
title 'Does not include absent data with unknown reason'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
In situations where information for a particular data element is not present and
|
6
|
+
the reason for its absence is unknown, the Health IT Module does not include the data element in
|
7
|
+
the resource instance returned as part of the query results.
|
8
|
+
DESCRIPTION
|
9
|
+
id :carin_server_requirement_5_attestation
|
10
|
+
|
11
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@5'
|
12
|
+
|
13
|
+
run do
|
14
|
+
identifier = SecureRandom.hex(32)
|
15
|
+
wait(
|
16
|
+
identifier:,
|
17
|
+
message: <<~MESSAGE
|
18
|
+
I attest that in situations where information for a particular data element is not present and
|
19
|
+
the reason for its absence is unknown, the Health IT Module does not include the data element in
|
20
|
+
the resource instance returned as part of the query results.
|
21
|
+
|
22
|
+
[Click here](#{resume_pass_url}?token=#{identifier}) if the system **meets** this requirement.
|
23
|
+
|
24
|
+
[Click here](#{resume_fail_url}?token=#{identifier}) if the system **does not meet** this requirement.
|
25
|
+
MESSAGE
|
26
|
+
)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement7 < Inferno::Test
|
3
|
+
title 'Includes reason for missing Must Support elements'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
When a Must Support element is missing and the reason for the absence is known,
|
6
|
+
the Health IT Module includes a reason using either:
|
7
|
+
- a value such as a nullFlavor from the relevant value set, or
|
8
|
+
- the `dataAbsentReason` extension.
|
9
|
+
DESCRIPTION
|
10
|
+
id :carin_server_requirement_7_attestation
|
11
|
+
|
12
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@7'
|
13
|
+
|
14
|
+
run do
|
15
|
+
identifier = SecureRandom.hex(32)
|
16
|
+
wait(
|
17
|
+
identifier:,
|
18
|
+
message: <<~MESSAGE
|
19
|
+
The developer of the Health IT Module attests that when a Must Support element is missing and the
|
20
|
+
reason for the absence is known, the Health IT Module includes a reason using either:
|
21
|
+
- a value such as a nullFlavor from the relevant value set, or
|
22
|
+
- the `dataAbsentReason` extension.
|
23
|
+
|
24
|
+
[Click here](#{resume_pass_url}?token=#{identifier}) if the system **meets** this requirement.
|
25
|
+
[Click here](#{resume_fail_url}?token=#{identifier}) if the system **does not meet** this requirement.
|
26
|
+
MESSAGE
|
27
|
+
)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement9 < Inferno::Test
|
3
|
+
title 'Omits Must Support elements with cardinality >= 0 if data is not present'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
The Health IT Module omits `Must Support` data elements from the resource if the element's minimum
|
6
|
+
cardinality is 0 and no data is available from the source system.
|
7
|
+
DESCRIPTION
|
8
|
+
id :carin_server_requirement_9_attestation
|
9
|
+
|
10
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@9'
|
11
|
+
|
12
|
+
run do
|
13
|
+
identifier = SecureRandom.hex(32)
|
14
|
+
wait(
|
15
|
+
identifier:,
|
16
|
+
message: <<~MESSAGE
|
17
|
+
I attest that the Health IT Module omits `Must Support` elements with minimum cardinality = 0
|
18
|
+
when the source system has no data available for them.
|
19
|
+
|
20
|
+
[Click here](#{resume_pass_url}?token=#{identifier}) if the system **meets** this requirement.
|
21
|
+
[Click here](#{resume_fail_url}?token=#{identifier}) if the system **does not meet** this requirement.
|
22
|
+
MESSAGE
|
23
|
+
)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require_relative '01_must_support_group/attestation_test_requirement_2'
|
2
|
+
require_relative '01_must_support_group/attestation_test_requirement_5'
|
3
|
+
require_relative '01_must_support_group/attestation_test_requirement_7'
|
4
|
+
require_relative '01_must_support_group/attestation_test_requirement_9'
|
5
|
+
require_relative '01_must_support_group/attestation_test_requirement_10'
|
6
|
+
|
7
|
+
module CarinForBlueButtonTestKit
|
8
|
+
class CarinMustSupportAttestationGroup < Inferno::TestGroup
|
9
|
+
id :c4bb_must_support
|
10
|
+
title 'Must Support'
|
11
|
+
short_title 'Must Support'
|
12
|
+
|
13
|
+
test from: :carin_server_requirement_2_attestation
|
14
|
+
test from: :carin_server_requirement_5_attestation
|
15
|
+
test from: :carin_server_requirement_7_attestation
|
16
|
+
test from: :carin_server_requirement_9_attestation
|
17
|
+
test from: :carin_server_requirement_10_attestation
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement105 < Inferno::Test
|
3
|
+
title 'Uses versioned references when point-in-time data is maintained'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
The Health IT Module uses versioned references when an ExplanationOfBenefit
|
6
|
+
references another resource whenever point-in-time data is maintained, reflecting the data
|
7
|
+
effective as of the date of service or admission on the claim.
|
8
|
+
DESCRIPTION
|
9
|
+
id :carin_server_requirement_105_attestation
|
10
|
+
|
11
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@105'
|
12
|
+
|
13
|
+
run do
|
14
|
+
identifier = SecureRandom.hex(32)
|
15
|
+
wait(
|
16
|
+
identifier:,
|
17
|
+
message: <<~MESSAGE
|
18
|
+
I attest that the Health IT Module uses versioned references when an ExplanationOfBenefit
|
19
|
+
references another resource whenever point-in-time data is maintained, reflecting the data
|
20
|
+
effective as of the date of service or admission on the claim.
|
21
|
+
|
22
|
+
[Click here](#{resume_pass_url}?token=#{identifier}) if the system **meets** this requirement.
|
23
|
+
|
24
|
+
[Click here](#{resume_fail_url}?token=#{identifier}) if the system **does not meet** this requirement.
|
25
|
+
MESSAGE
|
26
|
+
)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement108 < Inferno::Test
|
3
|
+
title 'Supports versioned and unversioned references'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
The Health IT Module supports both versioned and non-versioned ExplanationOfBenefit
|
6
|
+
reference approaches when referencing another resource,
|
7
|
+
and returns the same content for referenced resources in either case.
|
8
|
+
DESCRIPTION
|
9
|
+
id :carin_server_requirement_108_attestation
|
10
|
+
|
11
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@108'
|
12
|
+
|
13
|
+
run do
|
14
|
+
identifier = SecureRandom.hex(32)
|
15
|
+
wait(
|
16
|
+
identifier:,
|
17
|
+
message: <<~MESSAGE
|
18
|
+
I attest that the Health IT Module supports both versioned and non-versioned ExplanationOfBenefit
|
19
|
+
reference approaches when referencing another resource,
|
20
|
+
and returns the same content for referenced resources in either case.
|
21
|
+
|
22
|
+
[Click here](#{resume_pass_url}?token=#{identifier}) if the system **meets** this requirement.
|
23
|
+
|
24
|
+
[Click here](#{resume_fail_url}?token=#{identifier}) if the system **does not meet** this requirement.
|
25
|
+
MESSAGE
|
26
|
+
)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement115 < Inferno::Test
|
3
|
+
title 'Does not use a data absent reason for EOB.type'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
The Health IT Module does not assign a data absent reason to the `ExplanationOfBenefit.type` element.
|
6
|
+
DESCRIPTION
|
7
|
+
id :carin_server_requirement_115_attestation
|
8
|
+
|
9
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@115'
|
10
|
+
|
11
|
+
run do
|
12
|
+
identifier = SecureRandom.hex(32)
|
13
|
+
wait(
|
14
|
+
identifier:,
|
15
|
+
message: <<~MESSAGE
|
16
|
+
I attest that the Health IT Module does **not** assign a data absent reason to `ExplanationOfBenefit.type`.
|
17
|
+
|
18
|
+
[Click here](#{resume_pass_url}?token=#{identifier}) if the system **meets** this requirement.
|
19
|
+
[Click here](#{resume_fail_url}?token=#{identifier}) if the system **does not meet** this requirement.
|
20
|
+
MESSAGE
|
21
|
+
)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement116_117 < Inferno::Test
|
3
|
+
title 'Correctly populates EOB.insurer and EOB.outcome'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
The Health IT Module:
|
6
|
+
- Sets `ExplanationOfBenefit.outcome` to "complete",
|
7
|
+
- Sets `ExplanationOfBenefit.insurer` equal to `insurance.coverage.organization`.
|
8
|
+
DESCRIPTION
|
9
|
+
id :carin_server_requirement_116_117_attestation
|
10
|
+
|
11
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@116',
|
12
|
+
'hl7.fhir.us.carin-bb_2.0.0@117'
|
13
|
+
|
14
|
+
run do
|
15
|
+
identifier = SecureRandom.hex(32)
|
16
|
+
wait(
|
17
|
+
identifier:,
|
18
|
+
message: <<~MESSAGE
|
19
|
+
I attest that the Health IT Module:
|
20
|
+
|
21
|
+
- Sets `ExplanationOfBenefit.outcome` to "complete",
|
22
|
+
- Populates `ExplanationOfBenefit.insurer` with the same value as `insurance.coverage.organization`.
|
23
|
+
|
24
|
+
[Click here](#{resume_pass_url}?token=#{identifier}) if the system **meets** these requirements.
|
25
|
+
[Click here](#{resume_fail_url}?token=#{identifier}) if the system **does not meet** these requirements.
|
26
|
+
MESSAGE
|
27
|
+
)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement118 < Inferno::Test
|
3
|
+
title 'Updates reference when the reference adjusts another reference'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
When an ExplanationOfBenefit resource returned by the Health IT Module
|
6
|
+
adjusts a prior ExplanationOfBenefit, the `.related.reference`
|
7
|
+
field is populated with the identifier of the prior ExplanationOfBenefit, and the `.related.relationship` field
|
8
|
+
is assigned the value `prior`.
|
9
|
+
DESCRIPTION
|
10
|
+
id :carin_server_requirement_118_attestation
|
11
|
+
|
12
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@118'
|
13
|
+
|
14
|
+
run do
|
15
|
+
identifier = SecureRandom.hex(32)
|
16
|
+
wait(
|
17
|
+
identifier:,
|
18
|
+
message: <<~MESSAGE
|
19
|
+
I attest that when an ExplanationOfBenefit resource returned by the Health IT Module
|
20
|
+
adjusts a prior ExplanationOfBenefit, the `.related.reference`
|
21
|
+
field is populated with the identifier of the prior ExplanationOfBenefit, and the `.related.relationship` field
|
22
|
+
is assigned the value `prior`.
|
23
|
+
|
24
|
+
[Click here](#{resume_pass_url}?token=#{identifier}) if the system **meets** this requirement.
|
25
|
+
|
26
|
+
[Click here](#{resume_fail_url}?token=#{identifier}) if the system **does not meet** this requirement.
|
27
|
+
MESSAGE
|
28
|
+
)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement119 < Inferno::Test
|
3
|
+
title 'Updates reference when the reference is adjusted by another reference'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
When an ExplanationOfBenefit resource returned by the Health IT Module
|
6
|
+
has been adjusted by another ExplanationOfBenefit,
|
7
|
+
the `.related.reference` field is populated with the identifier of the adjusting ExplanationOfBenefit,
|
8
|
+
and the `.related.relationship` field is assigned the value `replacedby`.
|
9
|
+
DESCRIPTION
|
10
|
+
id :carin_server_requirement_119_attestation
|
11
|
+
|
12
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@119'
|
13
|
+
|
14
|
+
run do
|
15
|
+
identifier = SecureRandom.hex(32)
|
16
|
+
wait(
|
17
|
+
identifier:,
|
18
|
+
message: <<~MESSAGE
|
19
|
+
I attest that when an ExplanationOfBenefit resource returned by the Health IT Module
|
20
|
+
has been adjusted by another ExplanationOfBenefit,
|
21
|
+
the `.related.reference` field is populated with the identifier of the adjusting ExplanationOfBenefit,
|
22
|
+
and the `.related.relationship` field is assigned the value `replacedby`.
|
23
|
+
|
24
|
+
[Click here](#{resume_pass_url}?token=#{identifier}) if the system **meets** this requirement.
|
25
|
+
|
26
|
+
[Click here](#{resume_fail_url}?token=#{identifier}) if the system **does not meet** this requirement.
|
27
|
+
MESSAGE
|
28
|
+
)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement120 < Inferno::Test
|
3
|
+
title 'Reference contains identifier of immediately preceding or following ExplanationOfBenefit'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
The `.related.reference` field in an ExplanationOfBenefit resource
|
6
|
+
returned by the Health IT Module contains the identifier
|
7
|
+
of the immediately preceding or following ExplanationOfBenefit, and not the first or last in a sequence.
|
8
|
+
DESCRIPTION
|
9
|
+
id :carin_server_requirement_120_attestation
|
10
|
+
|
11
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@120'
|
12
|
+
|
13
|
+
run do
|
14
|
+
identifier = SecureRandom.hex(32)
|
15
|
+
wait(
|
16
|
+
identifier:,
|
17
|
+
message: <<~MESSAGE
|
18
|
+
I attest that the `.related.reference` field in an ExplanationOfBenefit resource
|
19
|
+
returned by the Health IT Module contains the identifier
|
20
|
+
of the immediately preceding or following ExplanationOfBenefit, and not the first or last in a sequence.
|
21
|
+
|
22
|
+
[Click here](#{resume_pass_url}?token=#{identifier}) if the system **meets** this requirement.
|
23
|
+
|
24
|
+
[Click here](#{resume_fail_url}?token=#{identifier}) if the system **does not meet** this requirement.
|
25
|
+
MESSAGE
|
26
|
+
)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement124_125_127_128_129 < Inferno::Test
|
3
|
+
title 'Correctly populates EOB.insurance'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
The Health IT Module:
|
6
|
+
- Only assigns `True` to `.insurance.focal` when the insurance matches the `ExplanationOfBenefit.insurer`,
|
7
|
+
- Ensures that when `focal = true`, `Coverage.payor` is the same as `EOB.insurer`,
|
8
|
+
- When `focal = true`, sets `Coverage.payor` to an Organization identifier,
|
9
|
+
- When `focal = false`, sets `insurance.coverage.display` to the name of the other carrier,
|
10
|
+
- Populates `insurance.coverage` the same as `insurance.coverage.organization`.
|
11
|
+
DESCRIPTION
|
12
|
+
id :carin_server_requirement_124_125_127_128_129_attestation
|
13
|
+
|
14
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@124',
|
15
|
+
'hl7.fhir.us.carin-bb_2.0.0@125',
|
16
|
+
'hl7.fhir.us.carin-bb_2.0.0@127',
|
17
|
+
'hl7.fhir.us.carin-bb_2.0.0@128',
|
18
|
+
'hl7.fhir.us.carin-bb_2.0.0@129'
|
19
|
+
|
20
|
+
run do
|
21
|
+
identifier = SecureRandom.hex(32)
|
22
|
+
wait(
|
23
|
+
identifier:,
|
24
|
+
message: <<~MESSAGE
|
25
|
+
I attest that the Health IT Module:
|
26
|
+
|
27
|
+
- Assigns `.insurance.focal = true` only for entries that match `ExplanationOfBenefit.insurer`,
|
28
|
+
- When `focal = true`, `Coverage.payor` equals `EOB.insurer` and is represented by an Organization identifier,
|
29
|
+
- When `focal = false`, `insurance.coverage.display` is set to the name of the other carrier,
|
30
|
+
- Populates `insurance.coverage` the same as `insurance.coverage.organization`.
|
31
|
+
|
32
|
+
[Click here](#{resume_pass_url}?token=#{identifier}) if the system **meets** these requirements.
|
33
|
+
[Click here](#{resume_fail_url}?token=#{identifier}) if the system **does not meet** these requirements.
|
34
|
+
MESSAGE
|
35
|
+
)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require_relative '03_eob_group/attestation_test_requirement_105'
|
2
|
+
require_relative '03_eob_group/attestation_test_requirement_108'
|
3
|
+
require_relative '03_eob_group/attestation_test_requirement_115'
|
4
|
+
require_relative '03_eob_group/attestation_test_requirement_116'
|
5
|
+
require_relative '03_eob_group/attestation_test_requirement_118'
|
6
|
+
require_relative '03_eob_group/attestation_test_requirement_119'
|
7
|
+
require_relative '03_eob_group/attestation_test_requirement_120'
|
8
|
+
require_relative '03_eob_group/attestation_test_requirement_124'
|
9
|
+
|
10
|
+
module CarinForBlueButtonTestKit
|
11
|
+
class CarinEOBAttestationGroup < Inferno::TestGroup
|
12
|
+
id :c4bb_eob
|
13
|
+
title 'Explanation of Benefit'
|
14
|
+
short_title 'Explanation of Benefit (EOB)'
|
15
|
+
|
16
|
+
test from: :carin_server_requirement_105_attestation
|
17
|
+
test from: :carin_server_requirement_108_attestation
|
18
|
+
test from: :carin_server_requirement_115_attestation
|
19
|
+
test from: :carin_server_requirement_116_117_attestation
|
20
|
+
test from: :carin_server_requirement_118_attestation
|
21
|
+
test from: :carin_server_requirement_119_attestation
|
22
|
+
test from: :carin_server_requirement_120_attestation
|
23
|
+
test from: :carin_server_requirement_124_125_127_128_129_attestation
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement130 < Inferno::Test
|
3
|
+
title 'Provides claim amounts if line item amounts unavailable'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
If line item amounts are not available, the Health IT Module provides the claim amounts
|
6
|
+
and corresponding amount types in the ExplanationOfBenefit (EOB) header data elements, as specified
|
7
|
+
by the CPCDS data elements.
|
8
|
+
DESCRIPTION
|
9
|
+
id :carin_server_requirement_130_attestation
|
10
|
+
|
11
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@130'
|
12
|
+
|
13
|
+
run do
|
14
|
+
identifier = SecureRandom.hex(32)
|
15
|
+
wait(
|
16
|
+
identifier:,
|
17
|
+
message: <<~MESSAGE
|
18
|
+
I attest that if line item amounts are not available, the Health IT Module provides the claim amounts
|
19
|
+
and corresponding amount types in the ExplanationOfBenefit (EOB) header data elements, as specified
|
20
|
+
by the CPCDS data elements.
|
21
|
+
|
22
|
+
[Click here](#{resume_pass_url}?token=#{identifier}) if the system **meets** this requirement.
|
23
|
+
|
24
|
+
[Click here](#{resume_fail_url}?token=#{identifier}) if the system **does not meet** this requirement.
|
25
|
+
MESSAGE
|
26
|
+
)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement132 < Inferno::Test
|
3
|
+
title 'Includes in-network or out-of-network payment status'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
The Health IT Module includes the in-network or out-of-network payment status of the
|
6
|
+
claim within the `EOB.supportingInfo` element, as specified by the CPCDS data elements.
|
7
|
+
DESCRIPTION
|
8
|
+
id :carin_server_requirement_132_attestation
|
9
|
+
|
10
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@132'
|
11
|
+
|
12
|
+
run do
|
13
|
+
identifier = SecureRandom.hex(32)
|
14
|
+
wait(
|
15
|
+
identifier:,
|
16
|
+
message: <<~MESSAGE
|
17
|
+
I attest that the Health IT Module includes the in-network or out-of-network payment status of the
|
18
|
+
claim within the `EOB.supportingInfo` element, as specified by the CPCDS data elements.
|
19
|
+
|
20
|
+
[Click here](#{resume_pass_url}?token=#{identifier}) if the system **meets** this requirement.
|
21
|
+
|
22
|
+
[Click here](#{resume_fail_url}?token=#{identifier}) if the system **does not meet** this requirement.
|
23
|
+
MESSAGE
|
24
|
+
)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require_relative '04_eob_inpatient_group/attestation_test_requirement_130'
|
2
|
+
require_relative '04_eob_inpatient_group/attestation_test_requirement_132'
|
3
|
+
|
4
|
+
module CarinForBlueButtonTestKit
|
5
|
+
class CarinEOBInpatientAttestationGroup < Inferno::TestGroup
|
6
|
+
id :c4bb_eob_inpatient
|
7
|
+
title 'Explanation of Benefit - Inpatient Institutional'
|
8
|
+
short_title 'EOB Inpatient Institutional'
|
9
|
+
|
10
|
+
test from: :carin_server_requirement_130_attestation
|
11
|
+
test from: :carin_server_requirement_132_attestation
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement156 < Inferno::Test
|
3
|
+
title 'Maps CPCDS data when line item data is unavailable'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
The Health IT Module maps CPCDS data to either `EOB.item` or `EOB.header` as appropriate:
|
6
|
+
- When line item amounts are available, they are provided in `EOB.item`.
|
7
|
+
- When line item amounts are not available, claim-level amounts and amount types are provided in `EOB.header`.
|
8
|
+
DESCRIPTION
|
9
|
+
id :carin_server_requirement_156_attestation
|
10
|
+
|
11
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@156'
|
12
|
+
|
13
|
+
run do
|
14
|
+
identifier = SecureRandom.hex(32)
|
15
|
+
wait(
|
16
|
+
identifier:,
|
17
|
+
message: <<~MESSAGE
|
18
|
+
I attest that the Health IT Module maps CPCDS data to either `EOB.item` or `EOB.header` as appropriate:
|
19
|
+
- When line item amounts are available, they are provided in `EOB.item`.
|
20
|
+
- When line item amounts are not available, claim-level amounts and amount types are provided in `EOB.header`.
|
21
|
+
|
22
|
+
[Click here](#{resume_pass_url}?token=#{identifier}) if the system **meets** this requirement.
|
23
|
+
[Click here](#{resume_fail_url}?token=#{identifier}) if the system **does not meet** this requirement.
|
24
|
+
MESSAGE
|
25
|
+
)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement157_158_159 < Inferno::Test
|
3
|
+
title 'Correctly populates EOB.item.productOrService'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
The Health IT Module:
|
6
|
+
- Defines CPT, HCPCS, or HIPPS codes in `item.productOrService` as CodeableConcepts,
|
7
|
+
- Ensures `item.productOrService` is populated whenever `.item` is present,
|
8
|
+
- Enforces a cardinality of 1..1 for `item.productOrService`.
|
9
|
+
DESCRIPTION
|
10
|
+
id :carin_server_requirement_157_158_159_attestation
|
11
|
+
|
12
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@157',
|
13
|
+
'hl7.fhir.us.carin-bb_2.0.0@158',
|
14
|
+
'hl7.fhir.us.carin-bb_2.0.0@159'
|
15
|
+
|
16
|
+
run do
|
17
|
+
identifier = SecureRandom.hex(32)
|
18
|
+
wait(
|
19
|
+
identifier:,
|
20
|
+
message: <<~MESSAGE
|
21
|
+
I attest that the Health IT Module:
|
22
|
+
|
23
|
+
- Defines CPT, HCPCS, or HIPPS codes in `item.productOrService` and represents them as CodeableConcepts,
|
24
|
+
- Populates `item.productOrService` whenever `EOB.item` is present,
|
25
|
+
- Enforces that `item.productOrService` has a cardinality of 1..1.
|
26
|
+
|
27
|
+
[Click here](#{resume_pass_url}?token=#{identifier}) if the system **meets** these requirements.
|
28
|
+
[Click here](#{resume_fail_url}?token=#{identifier}) if the system **does not meet** these requirements.
|
29
|
+
MESSAGE
|
30
|
+
)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require_relative '05_eob_outpatient_group/attestation_test_requirement_157'
|
2
|
+
require_relative '05_eob_outpatient_group/attestation_test_requirement_156'
|
3
|
+
|
4
|
+
module CarinForBlueButtonTestKit
|
5
|
+
class CarinEOBOutpatientAttestationGroup < Inferno::TestGroup
|
6
|
+
id :c4bb_eob_outpatient
|
7
|
+
title 'Explanation of Benefit - Outpatient Institutional'
|
8
|
+
short_title 'EOB Outpatient Institutional'
|
9
|
+
|
10
|
+
test from: :carin_server_requirement_156_attestation
|
11
|
+
test from: :carin_server_requirement_157_158_159_attestation
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement144_145_146 < Inferno::Test
|
3
|
+
title 'Correctly maps CPCDS data to EOB.item and EOB.total fields'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
The Health IT Module maps CPCDS data elements to:
|
6
|
+
- `EOB.item` for line item amounts, amount types, and network status,
|
7
|
+
- `EOB.total` for claim-level totals,
|
8
|
+
- `C4BB Payer Benefit Payment Status` is set to 'Other' when lines are both in-network and out-of-network.
|
9
|
+
DESCRIPTION
|
10
|
+
id :carin_server_requirement_144_145_146_attestation
|
11
|
+
|
12
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@144',
|
13
|
+
'hl7.fhir.us.carin-bb_2.0.0@145',
|
14
|
+
'hl7.fhir.us.carin-bb_2.0.0@146'
|
15
|
+
|
16
|
+
run do
|
17
|
+
identifier = SecureRandom.hex(32)
|
18
|
+
wait(
|
19
|
+
identifier:,
|
20
|
+
message: <<~MESSAGE
|
21
|
+
I attest that the Health IT Module maps CPCDS data elements as follows:
|
22
|
+
|
23
|
+
- Line-level data (amounts, types, network status) are provided in `EOB.item`,
|
24
|
+
- Claim-level totals are in `EOB.total`,
|
25
|
+
- Mixed network claims set `C4BB Payer Benefit Payment Status` to 'Other'.
|
26
|
+
|
27
|
+
[Click here](#{resume_pass_url}?token=#{identifier}) if the system **meets** these requirements.
|
28
|
+
[Click here](#{resume_fail_url}?token=#{identifier}) if the system **does not meet** these requirements.
|
29
|
+
MESSAGE
|
30
|
+
)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement148 < Inferno::Test
|
3
|
+
title 'Populates facility information when differs from billing'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
The Health Plan API populates `supportingInfo[service`facility`] with the name, full address,
|
6
|
+
and identifier of the facility where services were rendered, when that facility differs from the Billing or
|
7
|
+
Rendering Provider.
|
8
|
+
DESCRIPTION
|
9
|
+
id :carin_server_requirement_148_attestation
|
10
|
+
|
11
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@148'
|
12
|
+
|
13
|
+
run do
|
14
|
+
identifier = SecureRandom.hex(32)
|
15
|
+
wait(
|
16
|
+
identifier:,
|
17
|
+
message: <<~MESSAGE
|
18
|
+
I attest that the Health Plan API populates `supportingInfo[service`facility`] with the name, full address,
|
19
|
+
and identifier of the facility where services were rendered, when that facility differs from the Billing or
|
20
|
+
Rendering Provider.
|
21
|
+
|
22
|
+
[Click here](#{resume_pass_url}?token=#{identifier}) if the system **meets** this requirement.
|
23
|
+
|
24
|
+
[Click here](#{resume_fail_url}?token=#{identifier}) if the system **does not meet** this requirement.
|
25
|
+
MESSAGE
|
26
|
+
)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement149 < Inferno::Test
|
3
|
+
title 'References sequence number of associated diagnosis'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
The `item.diagnosisSequence` element references the sequence number of the associated
|
6
|
+
diagnosis listed in the ExplanationOfBenefit resource.
|
7
|
+
DESCRIPTION
|
8
|
+
id :carin_server_requirement_149_attestation
|
9
|
+
|
10
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@149'
|
11
|
+
|
12
|
+
run do
|
13
|
+
identifier = SecureRandom.hex(32)
|
14
|
+
wait(
|
15
|
+
identifier:,
|
16
|
+
message: <<~MESSAGE
|
17
|
+
I attest that the `item.diagnosisSequence` element references the sequence number of the associated
|
18
|
+
diagnosis listed in the ExplanationOfBenefit resource.
|
19
|
+
|
20
|
+
[Click here](#{resume_pass_url}?token=#{identifier}) if the system **meets** this requirement.
|
21
|
+
|
22
|
+
[Click here](#{resume_fail_url}?token=#{identifier}) if the system **does not meet** this requirement.
|
23
|
+
MESSAGE
|
24
|
+
)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|