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 AttestationTestCarinV2Requirement150 < Inferno::Test
|
3
|
+
title 'Uses procedure codes not revenue codes'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
The `item.productOrService` element in an oral ExplanationOfBenefit resource
|
6
|
+
is populated with CPT or HCPCS procedure codes as CodeableConcept values, and that revenue
|
7
|
+
codes are not used for oral claims.
|
8
|
+
DESCRIPTION
|
9
|
+
id :carin_server_requirement_150_attestation
|
10
|
+
|
11
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@150'
|
12
|
+
|
13
|
+
run do
|
14
|
+
identifier = SecureRandom.hex(32)
|
15
|
+
wait(
|
16
|
+
identifier:,
|
17
|
+
message: <<~MESSAGE
|
18
|
+
I attest that the `item.productOrService` element in an oral ExplanationOfBenefit resource
|
19
|
+
is populated with CPT or HCPCS procedure codes as CodeableConcept values, and that revenue
|
20
|
+
codes are not used for oral claims.
|
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 AttestationTestCarinV2Requirement151 < Inferno::Test
|
3
|
+
title 'Specifies primary body site'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
The primary body site for each line item (tooth or oral cavity) is specified in the
|
6
|
+
`item.bodySite` element of the ExplanationOfBenefit resource.
|
7
|
+
DESCRIPTION
|
8
|
+
id :carin_server_requirement_151_attestation
|
9
|
+
|
10
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@151'
|
11
|
+
|
12
|
+
run do
|
13
|
+
identifier = SecureRandom.hex(32)
|
14
|
+
wait(
|
15
|
+
identifier:,
|
16
|
+
message: <<~MESSAGE
|
17
|
+
I attest that the primary body site for each line item (tooth or oral cavity) is specified in the
|
18
|
+
`item.bodySite` element of 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
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement152 < Inferno::Test
|
3
|
+
title 'Specifies additional body sites'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
Additional body sites (tooth or oral cavity) are specified in `supportingInfo[additionalbodysite]`
|
6
|
+
elements, and that each `supportingInfo[additionalbodysite].sequence` matches the associated line item's
|
7
|
+
`item.informationSequence`.
|
8
|
+
DESCRIPTION
|
9
|
+
id :carin_server_requirement_152_attestation
|
10
|
+
|
11
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@152'
|
12
|
+
|
13
|
+
run do
|
14
|
+
identifier = SecureRandom.hex(32)
|
15
|
+
wait(
|
16
|
+
identifier:,
|
17
|
+
message: <<~MESSAGE
|
18
|
+
I attest that additional body sites (tooth or oral cavity) are specified in `supportingInfo[additionalbodysite]`
|
19
|
+
elements, and that each `supportingInfo[additionalbodysite].sequence` matches the associated line item's
|
20
|
+
`item.informationSequence`.
|
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,31 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement153 < Inferno::Test
|
3
|
+
title 'Applies oral line item subsites to associated tooth surfaces'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
All oral line item subsites (`item.subSite` repetitions) apply to all the line item's
|
6
|
+
associated tooth surfaces, including those specified in `item.bodySite` and `supportingInfo[additionalbodysite]`,
|
7
|
+
with the association established through matching `supportingInfo[additionalbodysite].sequence` values in
|
8
|
+
`item.informationSequence`.
|
9
|
+
DESCRIPTION
|
10
|
+
id :carin_server_requirement_153_attestation
|
11
|
+
|
12
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@153'
|
13
|
+
|
14
|
+
run do
|
15
|
+
identifier = SecureRandom.hex(32)
|
16
|
+
wait(
|
17
|
+
identifier:,
|
18
|
+
message: <<~MESSAGE
|
19
|
+
I attest that all oral line item subsites (`item.subSite` repetitions) apply to all the line item's
|
20
|
+
associated tooth surfaces, including those specified in `item.bodySite` and `supportingInfo[additionalbodysite]`,
|
21
|
+
with the association established through matching `supportingInfo[additionalbodysite].sequence` values in
|
22
|
+
`item.informationSequence`.
|
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,23 @@
|
|
1
|
+
require_relative '06_eob_oral_group/attestation_test_requirement_144'
|
2
|
+
require_relative '06_eob_oral_group/attestation_test_requirement_148'
|
3
|
+
require_relative '06_eob_oral_group/attestation_test_requirement_149'
|
4
|
+
require_relative '06_eob_oral_group/attestation_test_requirement_150'
|
5
|
+
require_relative '06_eob_oral_group/attestation_test_requirement_151'
|
6
|
+
require_relative '06_eob_oral_group/attestation_test_requirement_152'
|
7
|
+
require_relative '06_eob_oral_group/attestation_test_requirement_153'
|
8
|
+
|
9
|
+
module CarinForBlueButtonTestKit
|
10
|
+
class CarinEOBOralAttestationGroup < Inferno::TestGroup
|
11
|
+
id :c4bb_eob_oral
|
12
|
+
title 'Explanation of Benefit - Oral'
|
13
|
+
short_title 'EOB Oral'
|
14
|
+
|
15
|
+
test from: :carin_server_requirement_144_145_146_attestation
|
16
|
+
test from: :carin_server_requirement_148_attestation
|
17
|
+
test from: :carin_server_requirement_149_attestation
|
18
|
+
test from: :carin_server_requirement_150_attestation
|
19
|
+
test from: :carin_server_requirement_151_attestation
|
20
|
+
test from: :carin_server_requirement_152_attestation
|
21
|
+
test from: :carin_server_requirement_153_attestation
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement161 < Inferno::Test
|
3
|
+
title 'Populates with an NDC code'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
When the Compound Code (MapID 78) is 0 or 1, the `item.productOrService` element is
|
6
|
+
populated with an NDC code.
|
7
|
+
DESCRIPTION
|
8
|
+
id :carin_server_requirement_161_attestation
|
9
|
+
|
10
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@161'
|
11
|
+
|
12
|
+
run do
|
13
|
+
identifier = SecureRandom.hex(32)
|
14
|
+
wait(
|
15
|
+
identifier:,
|
16
|
+
message: <<~MESSAGE
|
17
|
+
I attest that when the Compound Code (MapID 78) is 0 or 1, the `item.productOrService` element is
|
18
|
+
populated with an NDC code.
|
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,27 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement162 < Inferno::Test
|
3
|
+
title 'Populates with "compound" and maps correctly'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
When the Compound Code is 2, the `item.productOrService` element is populated with the value
|
6
|
+
"compound" and that the ingredient information is mapped to `item.detail.productOrService.`
|
7
|
+
DESCRIPTION
|
8
|
+
id :carin_server_requirement_162_attestation
|
9
|
+
|
10
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@162'
|
11
|
+
|
12
|
+
run do
|
13
|
+
identifier = SecureRandom.hex(32)
|
14
|
+
wait(
|
15
|
+
identifier:,
|
16
|
+
message: <<~MESSAGE
|
17
|
+
I attest that when the Compound Code is 2, the `item.productOrService` element is populated with the value
|
18
|
+
"compound" and that the ingredient information is mapped to `item.detail.productOrService.`
|
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,27 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement163 < Inferno::Test
|
3
|
+
title 'Populates with NDC code'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
Both `item.productOrService` and `item.detail.productOrService` elements are populated with
|
6
|
+
an 11-digit NDC code.
|
7
|
+
DESCRIPTION
|
8
|
+
id :carin_server_requirement_163_attestation
|
9
|
+
|
10
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@163'
|
11
|
+
|
12
|
+
run do
|
13
|
+
identifier = SecureRandom.hex(32)
|
14
|
+
wait(
|
15
|
+
identifier:,
|
16
|
+
message: <<~MESSAGE
|
17
|
+
I attest that both `item.productOrService` and `item.detail.productOrService` elements are populated with
|
18
|
+
an 11-digit NDC code.
|
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,25 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement164 < Inferno::Test
|
3
|
+
title 'Populates "quantity" for all compound code values'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
The `item.quantity` element is populated for all Compound Code values.
|
6
|
+
DESCRIPTION
|
7
|
+
id :carin_server_requirement_164_attestation
|
8
|
+
|
9
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@164'
|
10
|
+
|
11
|
+
run do
|
12
|
+
identifier = SecureRandom.hex(32)
|
13
|
+
wait(
|
14
|
+
identifier:,
|
15
|
+
message: <<~MESSAGE
|
16
|
+
I attest that the `item.quantity` element is populated for all Compound Code values.
|
17
|
+
|
18
|
+
[Click here](#{resume_pass_url}?token=#{identifier}) if the system **meets** this requirement.
|
19
|
+
|
20
|
+
[Click here](#{resume_fail_url}?token=#{identifier}) if the system **does not meet** this requirement.
|
21
|
+
MESSAGE
|
22
|
+
)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement165 < Inferno::Test
|
3
|
+
title 'Adds ingredient quantity information'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
When the Compound Code is 2, and ingredient quantity information is available,
|
6
|
+
it is mapped to `item.detail.quantity`.
|
7
|
+
DESCRIPTION
|
8
|
+
id :carin_server_requirement_165_attestation
|
9
|
+
|
10
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@165'
|
11
|
+
|
12
|
+
run do
|
13
|
+
identifier = SecureRandom.hex(32)
|
14
|
+
wait(
|
15
|
+
identifier:,
|
16
|
+
message: <<~MESSAGE
|
17
|
+
I attest that when the Compound Code is 2, and ingredient quantity information is available,
|
18
|
+
it is mapped to `item.detail.quantity`.
|
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,19 @@
|
|
1
|
+
require_relative '07_eob_pharmacy_group/attestation_test_requirement_161'
|
2
|
+
require_relative '07_eob_pharmacy_group/attestation_test_requirement_162'
|
3
|
+
require_relative '07_eob_pharmacy_group/attestation_test_requirement_163'
|
4
|
+
require_relative '07_eob_pharmacy_group/attestation_test_requirement_164'
|
5
|
+
require_relative '07_eob_pharmacy_group/attestation_test_requirement_165'
|
6
|
+
|
7
|
+
module CarinForBlueButtonTestKit
|
8
|
+
class CarinEOBPharmacyAttestationGroup < Inferno::TestGroup
|
9
|
+
id :c4bb_eob_pharmacy
|
10
|
+
title 'Explanation of Benefit - Pharmacy'
|
11
|
+
short_title 'EOB Pharmacy'
|
12
|
+
|
13
|
+
test from: :carin_server_requirement_161_attestation
|
14
|
+
test from: :carin_server_requirement_162_attestation
|
15
|
+
test from: :carin_server_requirement_163_attestation
|
16
|
+
test from: :carin_server_requirement_164_attestation
|
17
|
+
test from: :carin_server_requirement_165_attestation
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement168 < Inferno::Test
|
3
|
+
title 'Sequentially numbers and properly references diagnosis.sequence'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
The Health IT Module sequentially numbers all diagnoses at the ExplanationOfBenefit header
|
6
|
+
level using the `diagnosis.sequence` element. I further attest that each `item.diagnosisSequence` element
|
7
|
+
references the appropriate `diagnosis.sequence` number from the header-level diagnoses.
|
8
|
+
DESCRIPTION
|
9
|
+
id :carin_server_requirement_168_170_attestation
|
10
|
+
|
11
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@168', 'hl7.fhir.us.carin-bb_2.0.0@170'
|
12
|
+
|
13
|
+
run do
|
14
|
+
identifier = SecureRandom.hex(32)
|
15
|
+
wait(
|
16
|
+
identifier:,
|
17
|
+
message: <<~MESSAGE
|
18
|
+
I attest that the Health IT Module sequentially numbers all diagnoses at the ExplanationOfBenefit header
|
19
|
+
level using the `diagnosis.sequence` element. I further attest that each `item.diagnosisSequence` element
|
20
|
+
references the appropriate `diagnosis.sequence` number from the header-level diagnoses.
|
21
|
+
|
22
|
+
[Click here](#{resume_pass_url}?token=#{identifier}) if the system **meets** these requirements.
|
23
|
+
|
24
|
+
[Click here](#{resume_fail_url}?token=#{identifier}) if the system **does not meet** these requirements.
|
25
|
+
MESSAGE
|
26
|
+
)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement173 < Inferno::Test
|
3
|
+
title 'Associates supportingInfo with line items'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
Every `supportingInfo` repetition with a Transportation Services Category code is associated
|
6
|
+
with at least one ExplanationOfBenefit line item by referencing `supportingInfo.sequence` through the
|
7
|
+
`item.informationSequence` element.
|
8
|
+
DESCRIPTION
|
9
|
+
id :carin_server_requirement_173_attestation
|
10
|
+
|
11
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@173'
|
12
|
+
|
13
|
+
run do
|
14
|
+
identifier = SecureRandom.hex(32)
|
15
|
+
wait(
|
16
|
+
identifier:,
|
17
|
+
message: <<~MESSAGE
|
18
|
+
I attest that every `supportingInfo` repetition with a Transportation Services Category code is associated
|
19
|
+
with at least one ExplanationOfBenefit line item by referencing `supportingInfo.sequence` through the
|
20
|
+
`item.informationSequence` element.
|
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,13 @@
|
|
1
|
+
require_relative '08_eob_nonclinician_group/attestation_test_requirement_168_170'
|
2
|
+
require_relative '08_eob_nonclinician_group/attestation_test_requirement_173'
|
3
|
+
|
4
|
+
module CarinForBlueButtonTestKit
|
5
|
+
class CarinEOBNonClinicianAttestationGroup < Inferno::TestGroup
|
6
|
+
id :c4bb_eob_nonclinician
|
7
|
+
title 'Explanation of Benefit - Professional NonClinician'
|
8
|
+
short_title 'EOB Professional NonClinician'
|
9
|
+
|
10
|
+
test from: :carin_server_requirement_168_170_attestation
|
11
|
+
test from: :carin_server_requirement_173_attestation
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement177 < Inferno::Test
|
3
|
+
title 'Properly populates the NPI identifier'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
The Health IT Module populates the Service Facility `identifier[NPI]` in the
|
6
|
+
Organization resource when assigned, and uses the value 'NPI has not been assigned' when no
|
7
|
+
NPI has been assigned to the Service Location Organization.
|
8
|
+
DESCRIPTION
|
9
|
+
id :carin_server_requirement_177_attestation
|
10
|
+
|
11
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@177'
|
12
|
+
|
13
|
+
run do
|
14
|
+
identifier = SecureRandom.hex(32)
|
15
|
+
wait(
|
16
|
+
identifier:,
|
17
|
+
message: <<~MESSAGE
|
18
|
+
I attest that the Health IT Module populates the Service Facility `identifier[NPI]` in the
|
19
|
+
Organization resource when assigned, and uses the value 'NPI has not been assigned' when no
|
20
|
+
NPI has been assigned to the Service Location Organization.
|
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 AttestationTestCarinV2Requirement178 < Inferno::Test
|
3
|
+
title 'Does not populate "address" when part of Billing Provider'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
The Health IT Module does not populate the Organization resource `address` element
|
6
|
+
when the location where services were rendered is a component of the Billing Provider.
|
7
|
+
DESCRIPTION
|
8
|
+
id :carin_server_requirement_178_attestation
|
9
|
+
|
10
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@178'
|
11
|
+
|
12
|
+
run do
|
13
|
+
identifier = SecureRandom.hex(32)
|
14
|
+
wait(
|
15
|
+
identifier:,
|
16
|
+
message: <<~MESSAGE
|
17
|
+
I attest that the Health IT Module does not populate the Organization resource `address` element
|
18
|
+
when the location where services were rendered is a component of the Billing Provider.
|
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,12 @@
|
|
1
|
+
require_relative '09_organization_group/attestation_test_requirement_177'
|
2
|
+
require_relative '09_organization_group/attestation_test_requirement_178'
|
3
|
+
|
4
|
+
module CarinForBlueButtonTestKit
|
5
|
+
class CarinOrganizationAttestationGroup < Inferno::TestGroup
|
6
|
+
id :c4bb_organization
|
7
|
+
title 'Organization'
|
8
|
+
|
9
|
+
test from: :carin_server_requirement_177_attestation
|
10
|
+
test from: :carin_server_requirement_178_attestation
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement186 < Inferno::Test
|
3
|
+
title 'Populates an identifier'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
The Health IT Module populates the Practitioner resource with at least one identifier,
|
6
|
+
either an NPI or a Tax ID.
|
7
|
+
DESCRIPTION
|
8
|
+
id :carin_server_requirement_186_attestation
|
9
|
+
|
10
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@186'
|
11
|
+
|
12
|
+
run do
|
13
|
+
identifier = SecureRandom.hex(32)
|
14
|
+
wait(
|
15
|
+
identifier:,
|
16
|
+
message: <<~MESSAGE
|
17
|
+
I attest that the Health IT Module populates the Practitioner resource with at least one identifier,
|
18
|
+
either an NPI or a Tax ID.
|
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,10 @@
|
|
1
|
+
require_relative '10_practitioner_group/attestation_test_requirement_186'
|
2
|
+
|
3
|
+
module CarinForBlueButtonTestKit
|
4
|
+
class CarinPractitionerAttestationGroup < Inferno::TestGroup
|
5
|
+
id :c4bb_practitioner
|
6
|
+
title 'Practitioner'
|
7
|
+
|
8
|
+
test from: :carin_server_requirement_186_attestation
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AdjudicationAmountTest < Inferno::Test
|
3
|
+
title 'Properly uses ".adjudication.amount"'
|
4
|
+
|
5
|
+
description <<~DESCRIPTION
|
6
|
+
For:
|
7
|
+
- C4BB ExplanationOfBenefit Inpatient Institutional `.adjudication.amount`
|
8
|
+
- C4BB ExplanationOfBenefit Outpatient Institutional `.adjudication.amount`
|
9
|
+
|
10
|
+
The Health IT Module must only populate `.adjudication.amount` if `.item.adjudication` is not available.
|
11
|
+
DESCRIPTION
|
12
|
+
|
13
|
+
id :adjudication_amount
|
14
|
+
|
15
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@142',
|
16
|
+
'hl7.fhir.us.carin-bb_2.0.0@197'
|
17
|
+
|
18
|
+
run do
|
19
|
+
identifier = SecureRandom.hex(32)
|
20
|
+
|
21
|
+
wait(
|
22
|
+
identifier:,
|
23
|
+
message: <<~MESSAGE
|
24
|
+
For:
|
25
|
+
- C4BB ExplanationOfBenefit Inpatient Institutional `.adjudication.amount`
|
26
|
+
- C4BB ExplanationOfBenefit Outpatient Institutional `.adjudication.amount`
|
27
|
+
|
28
|
+
The developer of the Health IT Module attests that the Health IT Module only populates
|
29
|
+
`.adjudication.amount` if `.item.adjudication` is not available.
|
30
|
+
|
31
|
+
[Click here](#{resume_pass_url}?token=#{identifier}) if the system **meets** these requirements.
|
32
|
+
|
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,69 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AmountCalculationTest < Inferno::Test
|
3
|
+
title 'Properly calculates "amount" fields'
|
4
|
+
|
5
|
+
description <<~DESCRIPTION
|
6
|
+
For:
|
7
|
+
- C4BB ExplanationOfBenefit Inpatient Institutional `.total.amount`
|
8
|
+
- C4BB ExplanationOfBenefit Inpatient Institutional `.item.adjudication.amount`
|
9
|
+
- C4BB ExplanationOfBenefit Inpatient Institutional `.adjudication.amount`
|
10
|
+
- C4BB ExplanationOfBenefit Outpatient Institutional `.total.amount`
|
11
|
+
- C4BB ExplanationOfBenefit Outpatient Institutional `.item.adjudication.amount`
|
12
|
+
- C4BB ExplanationOfBenefit Outpatient Institutional `.adjudication.amount`
|
13
|
+
- C4BB ExplanationOfBenefit Oral `.total.amount`
|
14
|
+
- C4BB ExplanationOfBenefit Oral `.item.adjudication.amount`
|
15
|
+
- C4BB ExplanationOfBenefit Professional NonClinician `.total.amount`
|
16
|
+
- C4BB ExplanationOfBenefit Professional NonClinician `.item.adjudication.amount`
|
17
|
+
|
18
|
+
The Health IT Module calculates the total amount as follows:
|
19
|
+
- Eligible amount = submitted amount - the noncovered amount - discount.
|
20
|
+
|
21
|
+
The subscriber pays the member liability = deductible + coinsurance + copay + noncovered.
|
22
|
+
|
23
|
+
(Part of the member liability may have already been paid to the provider as paidbypatient).
|
24
|
+
|
25
|
+
The eligible amount - the member liability is the payment amount to the provider (paidtoprovider) or the subscriber (paidtopatient).
|
26
|
+
DESCRIPTION
|
27
|
+
|
28
|
+
id :amount_calculations
|
29
|
+
|
30
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@143',
|
31
|
+
'hl7.fhir.us.carin-bb_2.0.0@154',
|
32
|
+
'hl7.fhir.us.carin-bb_2.0.0@155',
|
33
|
+
'hl7.fhir.us.carin-bb_2.0.0@190',
|
34
|
+
'hl7.fhir.us.carin-bb_2.0.0@191',
|
35
|
+
'hl7.fhir.us.carin-bb_2.0.0@192',
|
36
|
+
'hl7.fhir.us.carin-bb_2.0.0@193',
|
37
|
+
'hl7.fhir.us.carin-bb_2.0.0@194',
|
38
|
+
'hl7.fhir.us.carin-bb_2.0.0@195',
|
39
|
+
'hl7.fhir.us.carin-bb_2.0.0@196'
|
40
|
+
|
41
|
+
run do
|
42
|
+
identifier = SecureRandom.hex(32)
|
43
|
+
|
44
|
+
wait(
|
45
|
+
identifier:,
|
46
|
+
message: <<~MESSAGE
|
47
|
+
For:
|
48
|
+
- C4BB ExplanationOfBenefit Inpatient Institutional `.total.amount`
|
49
|
+
- C4BB ExplanationOfBenefit Inpatient Institutional `.item.adjudication.amount`
|
50
|
+
- C4BB ExplanationOfBenefit Inpatient Institutional `.adjudication.amount`
|
51
|
+
- C4BB ExplanationOfBenefit Outpatient Institutional `.total.amount`
|
52
|
+
- C4BB ExplanationOfBenefit Outpatient Institutional `.item.adjudication.amount`
|
53
|
+
- C4BB ExplanationOfBenefit Outpatient Institutional `.adjudication.amount`
|
54
|
+
- C4BB ExplanationOfBenefit Oral `.total.amount`
|
55
|
+
- C4BB ExplanationOfBenefit Oral `.item.adjudication.amount`
|
56
|
+
- C4BB ExplanationOfBenefit Professional NonClinician `.total.amount`
|
57
|
+
- C4BB ExplanationOfBenefit Professional NonClinician `.item.adjudication.amount`
|
58
|
+
|
59
|
+
The developer of the Health IT Module attests that the Health IT Module calculates the total amount as follows:
|
60
|
+
- Eligible amount = submitted amount - the noncovered amount - discount.
|
61
|
+
|
62
|
+
[Click here](#{resume_pass_url}?token=#{identifier}) if the system **meets** these requirements.
|
63
|
+
|
64
|
+
[Click here](#{resume_fail_url}?token=#{identifier}) if the system **does not meet** these requirements.
|
65
|
+
MESSAGE
|
66
|
+
)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement19 < Inferno::Test
|
3
|
+
title 'Uses code display string'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
The Health IT Module ensures that when the `display` element is populated,
|
6
|
+
it contains one of the display strings defined for the associated code
|
7
|
+
in the code system.
|
8
|
+
DESCRIPTION
|
9
|
+
id :carin_server_requirement_19_attestation
|
10
|
+
|
11
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@19'
|
12
|
+
|
13
|
+
run do
|
14
|
+
identifier = SecureRandom.hex(32)
|
15
|
+
wait(
|
16
|
+
identifier:,
|
17
|
+
message: <<~MESSAGE
|
18
|
+
I attest that when the `display` element is populated, the Health IT Module uses a valid display string defined
|
19
|
+
for that code by the code system (which may allow multiple valid display strings).
|
20
|
+
|
21
|
+
[Click here](#{resume_pass_url}?token=#{identifier}) if the system **meets** this requirement.
|
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,26 @@
|
|
1
|
+
module CarinForBlueButtonTestKit
|
2
|
+
class AttestationTestCarinV2Requirement28 < Inferno::Test
|
3
|
+
title 'Ensures conformant CPCDS data'
|
4
|
+
description <<~DESCRIPTION
|
5
|
+
The Health IT Module ensures that data representing the Common Payer Consumer Data Set (CPCDS)
|
6
|
+
conforms to the specified profiles, vocabulary standards, and code sets required by the specification.
|
7
|
+
DESCRIPTION
|
8
|
+
id :carin_server_requirement_28_attestation
|
9
|
+
|
10
|
+
verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@28'
|
11
|
+
|
12
|
+
run do
|
13
|
+
identifier = SecureRandom.hex(32)
|
14
|
+
wait(
|
15
|
+
identifier:,
|
16
|
+
message: <<~MESSAGE
|
17
|
+
I attest that the Health IT Module ensures CPCDS data conforms to the specified profiles,
|
18
|
+
vocabulary standards, and code sets outlined in the specification.
|
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
|