davinci_pdex_test_kit 0.12.3 → 0.13.1
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/davinci_pdex_test_kit/pdex_payer_client/visual_inspection_and_attestation/authentication.rb +33 -11
- data/lib/davinci_pdex_test_kit/pdex_payer_client/visual_inspection_and_attestation/must_support.rb +33 -9
- data/lib/davinci_pdex_test_kit/pdex_payer_client/visual_inspection_and_attestation/provenance.rb +32 -11
- data/lib/davinci_pdex_test_kit/pdex_payer_client/visual_inspection_and_attestation/receive_must_support.rb +33 -11
- data/lib/davinci_pdex_test_kit/pdex_payer_client_suite.rb +7 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/coverage_to_link_minimal_data_validation.rb +2 -1
- data/lib/davinci_pdex_test_kit/pdex_payer_server/coverage_to_link_must_support_validation.rb +2 -1
- data/lib/davinci_pdex_test_kit/pdex_payer_server/member_match_request_local_references_validation.rb +2 -1
- data/lib/davinci_pdex_test_kit/pdex_payer_server/multiple_member_matches_group.rb +2 -1
- data/lib/davinci_pdex_test_kit/pdex_payer_server/no_member_matches_group.rb +2 -1
- data/lib/davinci_pdex_test_kit/pdex_payer_server/visual_inspection_and_attestation/bulk_data_transmission_restrictions.rb +30 -10
- data/lib/davinci_pdex_test_kit/pdex_payer_server/visual_inspection_and_attestation/consent_failure.rb +35 -13
- data/lib/davinci_pdex_test_kit/pdex_payer_server/visual_inspection_and_attestation/consent_requirements.rb +33 -9
- data/lib/davinci_pdex_test_kit/pdex_payer_server/visual_inspection_and_attestation/hrex_must_support.rb +32 -11
- data/lib/davinci_pdex_test_kit/pdex_payer_server/visual_inspection_and_attestation/licensing.rb +31 -9
- data/lib/davinci_pdex_test_kit/pdex_payer_server/visual_inspection_and_attestation/member_auth.rb +54 -12
- data/lib/davinci_pdex_test_kit/pdex_payer_server/visual_inspection_and_attestation/mtls.rb +44 -11
- data/lib/davinci_pdex_test_kit/pdex_payer_server/visual_inspection_and_attestation/payer_consent_compliance.rb +30 -10
- data/lib/davinci_pdex_test_kit/pdex_payer_server/visual_inspection_and_attestation/prior_authorization_decisions.rb +32 -12
- data/lib/davinci_pdex_test_kit/pdex_payer_server/visual_inspection_and_attestation/provenance_records.rb +33 -10
- data/lib/davinci_pdex_test_kit/pdex_payer_server/visual_inspection_and_attestation/read_and_search_hrex.rb +31 -10
- data/lib/davinci_pdex_test_kit/pdex_payer_server/visual_inspection_and_attestation/resources_in_capability_statement.rb +31 -10
- data/lib/davinci_pdex_test_kit/pdex_payer_server/workflow_member_match_group.rb +4 -2
- data/lib/davinci_pdex_test_kit/pdex_payer_server_suite.rb +9 -1
- data/lib/davinci_pdex_test_kit/pdex_provider_client_suite.rb +4 -1
- data/lib/davinci_pdex_test_kit/remove_input.rb +10 -0
- data/lib/davinci_pdex_test_kit/version.rb +2 -2
- metadata +41 -17
data/lib/davinci_pdex_test_kit/pdex_payer_server/visual_inspection_and_attestation/member_auth.rb
CHANGED
|
@@ -11,7 +11,7 @@ module DaVinciPDexTestKit
|
|
|
11
11
|
information exchange using SMART on FHIR and OAuth 2.0 by satisfying the following criteria.
|
|
12
12
|
|
|
13
13
|
The Health IT Module is acting as the **source** Health Plan, and is the Health Plan the member would like to get data from.
|
|
14
|
-
The **target** Health Plan is the Health
|
|
14
|
+
The **target** Health Plan is the Health Plan the member would like to share data to.
|
|
15
15
|
|
|
16
16
|
1. **Client Authorization Credentials**
|
|
17
17
|
The Health IT Module issues the target Health Plan OAuth 2.0 client application credentials during client registration.
|
|
@@ -41,17 +41,61 @@ module DaVinciPDexTestKit
|
|
|
41
41
|
'hl7.fhir.us.davinci-pdex_2.0.0@25',
|
|
42
42
|
'hl7.fhir.us.davinci-pdex_2.0.0@26'
|
|
43
43
|
|
|
44
|
+
input :pdex_member_authorized_exchange_test_options,
|
|
45
|
+
title: 'Supports Payer-to-Payer member-authorized exchange',
|
|
46
|
+
description: %(
|
|
47
|
+
I attest that the Health IT Module supports Payer-to-Payer member-authorized
|
|
48
|
+
information exchange using SMART on FHIR and OAuth 2.0 by satisfying the following criteria.
|
|
49
|
+
|
|
50
|
+
The **source** Health Plan is the Health Plan the member would like to get data from, and the **target**
|
|
51
|
+
Health Plan is the Health plan the member would like to share data to.
|
|
52
|
+
|
|
53
|
+
1. **Client Authorization Credentials**
|
|
54
|
+
The Health IT Module issues the target Health Plan OAuth 2.0 client application credentials during client registration.
|
|
55
|
+
|
|
56
|
+
1. **Member Consent Flow**
|
|
57
|
+
After the member authenticates to the Health IT Module's authorization server, the system presents an Authorization
|
|
58
|
+
screen enabling the member to approve sharing with the target Health Plan.
|
|
59
|
+
|
|
60
|
+
The Authorization process aligns with applicable privacy policy and regulations, allowing members to
|
|
61
|
+
select what data may be shared.
|
|
62
|
+
|
|
63
|
+
4. **Token Issuance**
|
|
64
|
+
Upon successful authorization, the Health IT Module issues an Access Token to the target Health Plan.
|
|
65
|
+
The scopes associated with the Access Token are limited to the information and permissions authorized by the member.
|
|
66
|
+
|
|
67
|
+
6. **Refresh Token Handling**:
|
|
68
|
+
Any Access Token subsequently issued by the Health IT Module using a Refresh Token enforces the same scope and member-specific
|
|
69
|
+
restrictions as the original authorization.
|
|
70
|
+
),
|
|
71
|
+
type: 'radio',
|
|
72
|
+
default: 'false',
|
|
73
|
+
options: {
|
|
74
|
+
list_options: [
|
|
75
|
+
{
|
|
76
|
+
label: 'Yes',
|
|
77
|
+
value: 'true'
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
label: 'No',
|
|
81
|
+
value: 'false'
|
|
82
|
+
}
|
|
83
|
+
]
|
|
84
|
+
}
|
|
85
|
+
input :pdex_member_authorized_exchange_test_note,
|
|
86
|
+
title: 'Notes, if applicable:',
|
|
87
|
+
type: 'textarea',
|
|
88
|
+
optional: true
|
|
89
|
+
|
|
44
90
|
run do
|
|
45
|
-
|
|
91
|
+
assert pdex_member_authorized_exchange_test_options == 'true', %(
|
|
92
|
+
The following was not satisfied:
|
|
46
93
|
|
|
47
|
-
|
|
48
|
-
identifier:,
|
|
49
|
-
message: <<~MESSAGE
|
|
50
|
-
I attest that the Health IT Module supports Payer-to-Payer member-authorized
|
|
94
|
+
The Health IT Module supports Payer-to-Payer member-authorized
|
|
51
95
|
information exchange using SMART on FHIR and OAuth 2.0 by satisfying the following criteria.
|
|
52
96
|
|
|
53
|
-
The **source** Health Plan is the Health Plan the member would like to get data from
|
|
54
|
-
Health Plan is the Health
|
|
97
|
+
The Health IT Module is acting as the **source** Health Plan, and is the Health Plan the member would like to get data from.
|
|
98
|
+
The **target** Health Plan is the Health plan the member would like to share data to.
|
|
55
99
|
|
|
56
100
|
1. **Client Authorization Credentials**
|
|
57
101
|
The Health IT Module issues the target Health Plan OAuth 2.0 client application credentials during client registration.
|
|
@@ -71,11 +115,9 @@ module DaVinciPDexTestKit
|
|
|
71
115
|
Any Access Token subsequently issued by the Health IT Module using a Refresh Token enforces the same scope and member-specific
|
|
72
116
|
restrictions as the original authorization.
|
|
73
117
|
|
|
74
|
-
[Click here](#{resume_pass_url}?token=#{identifier}) if the system **meets** these requirements.
|
|
75
|
-
|
|
76
|
-
[Click here](#{resume_fail_url}?token=#{identifier}) if the system **does not meet** these requirements.
|
|
77
|
-
MESSAGE
|
|
78
118
|
)
|
|
119
|
+
pass pdex_member_authorized_exchange_test_note if pdex_member_authorized_exchange_test_note.present?
|
|
79
120
|
end
|
|
121
|
+
|
|
80
122
|
end
|
|
81
123
|
end
|
|
@@ -9,7 +9,7 @@ module DaVinciPDexTestKit
|
|
|
9
9
|
description <<~DESCRIPTION
|
|
10
10
|
The Health IT Module attests that the system supports secure payer-to-payer exchange for $member-match as follows:
|
|
11
11
|
|
|
12
|
-
The **source** Health Plan is the Health Plan the member would like to get data from, and the **
|
|
12
|
+
The **source** Health Plan is the Health Plan the member would like to get data from, and the **target**
|
|
13
13
|
Health Plan is the Health Plan the member would like to share data to.
|
|
14
14
|
|
|
15
15
|
1. **Secure mTLS Connection** — Establishes a mutual TLS (mTLS) connection with the target Health Plan.
|
|
@@ -30,15 +30,50 @@ module DaVinciPDexTestKit
|
|
|
30
30
|
'hl7.fhir.us.davinci-pdex_2.0.0@33',
|
|
31
31
|
'hl7.fhir.us.davinci-pdex_2.0.0@34'
|
|
32
32
|
|
|
33
|
+
input :pdex_payer_to_payer_mtls_options,
|
|
34
|
+
title: 'Supports mTLS for secure $member-match payer-to-payer exchange',
|
|
35
|
+
description: %(
|
|
36
|
+
I attest that the Health IT Module supports secure payer-to-payer exchange for $member-match as follows:
|
|
37
|
+
|
|
38
|
+
The **source** Health Plan is the Health Plan the member would like to get data from, and the **target**
|
|
39
|
+
Health Plan is the Health Plan the member would like to share data to.
|
|
40
|
+
|
|
41
|
+
1. **Secure mTLS Connection** — Establishes a mutual TLS (mTLS) connection with the target Health Plan.
|
|
42
|
+
|
|
43
|
+
2. **Client Registration** — Supports OAuth 2.0 Dynamic Client Registration for the target Health Plan over the mTLS-secured connection.
|
|
44
|
+
|
|
45
|
+
3. **Token Acquisition** — Accepts a Client Credentials grant request by the target Health Plan over mTLS to issue an OAuth 2.0 access
|
|
46
|
+
token for the $member-match operation.
|
|
47
|
+
|
|
48
|
+
4. **Scoped Access Token for Matched Patient** — If a Patient ID is matched, returns an OAuth 2.0 access token to the target Health Plan
|
|
49
|
+
that is scoped to that member to enable further data exchange.
|
|
50
|
+
),
|
|
51
|
+
type: 'radio',
|
|
52
|
+
default: 'false',
|
|
53
|
+
options: {
|
|
54
|
+
list_options: [
|
|
55
|
+
{
|
|
56
|
+
label: 'Yes',
|
|
57
|
+
value: 'true'
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
label: 'No',
|
|
61
|
+
value: 'false'
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
|
+
}
|
|
65
|
+
input :pdex_payer_to_payer_mtls_note,
|
|
66
|
+
title: 'Notes, if applicable:',
|
|
67
|
+
type: 'textarea',
|
|
68
|
+
optional: true
|
|
69
|
+
|
|
33
70
|
run do
|
|
34
|
-
|
|
71
|
+
assert pdex_payer_to_payer_mtls_options == 'true', %(
|
|
72
|
+
The following was not satisfied:
|
|
35
73
|
|
|
36
|
-
|
|
37
|
-
identifier:,
|
|
38
|
-
message: <<~MESSAGE
|
|
39
|
-
I attest that the Health IT Module supports secure payer-to-payer exchange for $member-match as follows:
|
|
74
|
+
The Health IT Module attests that the system supports secure payer-to-payer exchange for $member-match as follows:
|
|
40
75
|
|
|
41
|
-
The **source** Health Plan is the Health Plan the member would like to get data from, and the **
|
|
76
|
+
The **source** Health Plan is the Health Plan the member would like to get data from, and the **target**
|
|
42
77
|
Health Plan is the Health Plan the member would like to share data to.
|
|
43
78
|
|
|
44
79
|
1. **Secure mTLS Connection** — Establishes a mutual TLS (mTLS) connection with the target Health Plan.
|
|
@@ -51,11 +86,9 @@ module DaVinciPDexTestKit
|
|
|
51
86
|
4. **Scoped Access Token for Matched Patient** — If a Patient ID is matched, returns an OAuth 2.0 access token to the target Health Plan
|
|
52
87
|
that is scoped to that member to enable further data exchange.
|
|
53
88
|
|
|
54
|
-
[Click here](#{resume_pass_url}?token=#{identifier}) if the system **meets** these requirements.
|
|
55
|
-
|
|
56
|
-
[Click here](#{resume_fail_url}?token=#{identifier}) if the system **does not meet** these requirements.
|
|
57
|
-
MESSAGE
|
|
58
89
|
)
|
|
90
|
+
pass pdex_payer_to_payer_mtls_note if pdex_payer_to_payer_mtls_note.present?
|
|
59
91
|
end
|
|
92
|
+
|
|
60
93
|
end
|
|
61
94
|
end
|
|
@@ -14,20 +14,40 @@ module DaVinciPDexTestKit
|
|
|
14
14
|
|
|
15
15
|
verifies_requirements 'hl7.fhir.us.davinci-pdex_2.0.0@45'
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
input :pdex_payer_consent_compliance_test_options,
|
|
18
|
+
title: 'Constrains response based on access permissions',
|
|
19
|
+
description: %(
|
|
20
|
+
The developer of the Health IT Module attests that the Health IT Module constrains the data returned from the server to a requester
|
|
21
|
+
based upon the access permissions of the requester.
|
|
22
|
+
),
|
|
23
|
+
type: 'radio',
|
|
24
|
+
default: 'false',
|
|
25
|
+
options: {
|
|
26
|
+
list_options: [
|
|
27
|
+
{
|
|
28
|
+
label: 'Yes',
|
|
29
|
+
value: 'true'
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
label: 'No',
|
|
33
|
+
value: 'false'
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
input :pdex_payer_consent_compliance_test_note,
|
|
38
|
+
title: 'Notes, if applicable:',
|
|
39
|
+
type: 'textarea',
|
|
40
|
+
optional: true
|
|
19
41
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
The developer of the Health IT Module attests that the Health IT Module constrains the data returned from the server to a requester
|
|
24
|
-
based upon the access permissions of the requester.
|
|
42
|
+
run do
|
|
43
|
+
assert pdex_payer_consent_compliance_test_options == 'true', %(
|
|
44
|
+
The following was not satisfied:
|
|
25
45
|
|
|
26
|
-
|
|
46
|
+
The Health IT Module constrains the data returned from the server to a requester based upon the access permissions of the requester.
|
|
27
47
|
|
|
28
|
-
[Click here](#{resume_fail_url}?token=#{identifier}) if the system **does not meet** this requirement.
|
|
29
|
-
MESSAGE
|
|
30
48
|
)
|
|
49
|
+
pass pdex_payer_consent_compliance_test_note if pdex_payer_consent_compliance_test_note.present?
|
|
31
50
|
end
|
|
51
|
+
|
|
32
52
|
end
|
|
33
53
|
end
|
|
@@ -14,22 +14,42 @@ module DaVinciPDexTestKit
|
|
|
14
14
|
|
|
15
15
|
verifies_requirements 'hl7.fhir.us.davinci-pdex_2.0.0@56'
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
input :pdex_prior_authorization_decisions_test_options,
|
|
18
|
+
title: 'Makes available pending and active prior authorization decisions',
|
|
19
|
+
description: %(
|
|
20
|
+
The developer of the Health IT Module attests that the Health IT Module makes available pending and active prior authorization decisions
|
|
21
|
+
and related clinical documentation and forms for items and services, not including prescription drugs, including the date the prior authorization was approved,
|
|
22
|
+
the date the authorization ends, as well as the units and services approved and those used to date, no later than one (1) business day after a provider initiates
|
|
23
|
+
a prior authorization for the beneficiary or there is a change of status for the prior authorization.
|
|
24
|
+
),
|
|
25
|
+
type: 'radio',
|
|
26
|
+
default: 'false',
|
|
27
|
+
options: {
|
|
28
|
+
list_options: [
|
|
29
|
+
{
|
|
30
|
+
label: 'Yes',
|
|
31
|
+
value: 'true'
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
label: 'No',
|
|
35
|
+
value: 'false'
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
input :pdex_prior_authorization_decisions_test_note,
|
|
40
|
+
title: 'Notes, if applicable:',
|
|
41
|
+
type: 'textarea',
|
|
42
|
+
optional: true
|
|
19
43
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
The developer of the Health IT Module attests that the Health IT Module makes available pending and active prior authorization decisions
|
|
24
|
-
and related clinical documentation and forms for items and services, not including prescription drugs, including the date the prior authorization was approved,
|
|
25
|
-
the date the authorization ends, as well as the units and services approved and those used to date, no later than one (1) business day after a provider initiates
|
|
26
|
-
a prior authorization for the beneficiary or there is a change of status for the prior authorization.
|
|
44
|
+
run do
|
|
45
|
+
assert pdex_prior_authorization_decisions_test_options == 'true', %(
|
|
46
|
+
The following was not satisfied:
|
|
27
47
|
|
|
28
|
-
|
|
48
|
+
The Health IT Module makes available pending and active prior authorization decisions and related clinical documentation and forms for items and services.
|
|
29
49
|
|
|
30
|
-
[Click here](#{resume_fail_url}?token=#{identifier}) if the system **does not meet** this requirement.
|
|
31
|
-
MESSAGE
|
|
32
50
|
)
|
|
51
|
+
pass pdex_prior_authorization_decisions_test_note if pdex_prior_authorization_decisions_test_note.present?
|
|
33
52
|
end
|
|
53
|
+
|
|
34
54
|
end
|
|
35
55
|
end
|
|
@@ -18,23 +18,46 @@ module DaVinciPDexTestKit
|
|
|
18
18
|
verifies_requirements 'hl7.fhir.us.davinci-pdex_2.0.0@12',
|
|
19
19
|
'hl7.fhir.us.davinci-pdex_2.0.0@13'
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
input :pdex_provenance_test_options,
|
|
22
|
+
title: 'Includes and generates provenance records as required',
|
|
23
|
+
description: %(
|
|
24
|
+
The developer of the Health IT Module attests that the system:
|
|
25
|
+
|
|
26
|
+
- Incorporates provenance records received as part of any FHIR data exchange.
|
|
27
|
+
- Generates provenance records for each non-Provenance resource, at a minimum identifying the
|
|
28
|
+
Health Plan as the Transmitter of the data in PDex exchanges.
|
|
29
|
+
),
|
|
30
|
+
type: 'radio',
|
|
31
|
+
default: 'false',
|
|
32
|
+
options: {
|
|
33
|
+
list_options: [
|
|
34
|
+
{
|
|
35
|
+
label: 'Yes',
|
|
36
|
+
value: 'true'
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
label: 'No',
|
|
40
|
+
value: 'false'
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
input :pdex_provenance_test_note,
|
|
45
|
+
title: 'Notes, if applicable:',
|
|
46
|
+
type: 'textarea',
|
|
47
|
+
optional: true
|
|
23
48
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
The developer of the Health IT Module attests that the system:
|
|
49
|
+
run do
|
|
50
|
+
assert pdex_provenance_test_options == 'true', %(
|
|
51
|
+
The following was not satisfied:
|
|
28
52
|
|
|
53
|
+
The Health IT Module
|
|
29
54
|
- Incorporates provenance records received as part of any FHIR data exchange.
|
|
30
55
|
- Generates provenance records for each non-Provenance resource, at a minimum identifying the
|
|
31
56
|
Health Plan as the Transmitter of the data in PDex exchanges.
|
|
32
57
|
|
|
33
|
-
[Click here](#{resume_pass_url}?token=#{identifier}) if the system **meets** these requirements.
|
|
34
|
-
|
|
35
|
-
[Click here](#{resume_fail_url}?token=#{identifier}) if the system **does not meet** these requirements.
|
|
36
|
-
MESSAGE
|
|
37
58
|
)
|
|
59
|
+
pass pdex_provenance_test_note if pdex_provenance_test_note.present?
|
|
38
60
|
end
|
|
61
|
+
|
|
39
62
|
end
|
|
40
63
|
end
|
|
@@ -16,20 +16,41 @@ module DaVinciPDexTestKit
|
|
|
16
16
|
verifies_requirements 'hl7.fhir.us.davinci-pdex_2.0.0@17',
|
|
17
17
|
'hl7.fhir.us.davinci-pdex_2.0.0@18'
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
input :pdex_coverage_interaction_support_test_options,
|
|
20
|
+
title: 'Supports Read and Search for the HRex Coverage resource',
|
|
21
|
+
description: %(
|
|
22
|
+
I attest that the Health IT Module supports both the FHIR Read and Search
|
|
23
|
+
operations for the Coverage resource using the HRex Coverage profile.
|
|
24
|
+
),
|
|
25
|
+
type: 'radio',
|
|
26
|
+
default: 'false',
|
|
27
|
+
options: {
|
|
28
|
+
list_options: [
|
|
29
|
+
{
|
|
30
|
+
label: 'Yes',
|
|
31
|
+
value: 'true'
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
label: 'No',
|
|
35
|
+
value: 'false'
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
input :pdex_coverage_interaction_support_test_note,
|
|
40
|
+
title: 'Notes, if applicable:',
|
|
41
|
+
type: 'textarea',
|
|
42
|
+
optional: true
|
|
21
43
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
I attest that the Health IT Module supports both the FHIR Read and Search
|
|
26
|
-
operations for the Coverage resource using the HRex Coverage profile.
|
|
44
|
+
run do
|
|
45
|
+
assert pdex_coverage_interaction_support_test_options == 'true', %(
|
|
46
|
+
The following was not satisfied:
|
|
27
47
|
|
|
28
|
-
|
|
48
|
+
The Health IT Module supports the FHIR Read and Search operations for the Coverage resource,
|
|
49
|
+
using the HRex Coverage profile.
|
|
29
50
|
|
|
30
|
-
[Click here](#{resume_fail_url}?token=#{identifier}) if the system **does not meet** these requirements.
|
|
31
|
-
MESSAGE
|
|
32
51
|
)
|
|
52
|
+
pass pdex_coverage_interaction_support_test_note if pdex_coverage_interaction_support_test_note.present?
|
|
33
53
|
end
|
|
54
|
+
|
|
34
55
|
end
|
|
35
56
|
end
|
|
@@ -16,20 +16,41 @@ module DaVinciPDexTestKit
|
|
|
16
16
|
verifies_requirements 'hl7.fhir.us.davinci-pdex_2.0.0@15',
|
|
17
17
|
'hl7.fhir.us.davinci-pdex_2.0.0@19'
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
input :pdex_capability_statement_declaration_test_options,
|
|
20
|
+
title: 'Declares resources and operations in CapabilityStatement',
|
|
21
|
+
description: %(
|
|
22
|
+
The developer of the Health IT Module attests that all FHIR resources and operations
|
|
23
|
+
available via a FHIR API endpoint are declared in the system's CapabilityStatement.
|
|
24
|
+
),
|
|
25
|
+
type: 'radio',
|
|
26
|
+
default: 'false',
|
|
27
|
+
options: {
|
|
28
|
+
list_options: [
|
|
29
|
+
{
|
|
30
|
+
label: 'Yes',
|
|
31
|
+
value: 'true'
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
label: 'No',
|
|
35
|
+
value: 'false'
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
input :pdex_capability_statement_declaration_test_note,
|
|
40
|
+
title: 'Notes, if applicable:',
|
|
41
|
+
type: 'textarea',
|
|
42
|
+
optional: true
|
|
21
43
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
The developer of the Health IT Module attests that all FHIR resources and operations
|
|
26
|
-
available via a FHIR API endpoint are declared in the system's CapabilityStatement.
|
|
44
|
+
run do
|
|
45
|
+
assert pdex_capability_statement_declaration_test_options == 'true', %(
|
|
46
|
+
The following was not satisfied:
|
|
27
47
|
|
|
28
|
-
|
|
48
|
+
The Health IT Module declares all FHIR resources and operations available via its API
|
|
49
|
+
in its FHIR CapabilityStatement, in accordance with PDex requirements.
|
|
29
50
|
|
|
30
|
-
[Click here](#{resume_fail_url}?token=#{identifier}) if the system **does not meet** these requirements.
|
|
31
|
-
MESSAGE
|
|
32
51
|
)
|
|
52
|
+
pass pdex_capability_statement_declaration_test_note if pdex_capability_statement_declaration_test_note.present?
|
|
33
53
|
end
|
|
54
|
+
|
|
34
55
|
end
|
|
35
56
|
end
|
|
@@ -61,18 +61,20 @@ module DaVinciPDexTestKit
|
|
|
61
61
|
|
|
62
62
|
test from: :pdex_member_match_profile_validation do
|
|
63
63
|
id :pdex_one_match_profile_validation
|
|
64
|
-
title '
|
|
64
|
+
title 'Member match request for exactly one match is valid'
|
|
65
65
|
description %{
|
|
66
66
|
This test validates the conformity of the user input to the
|
|
67
67
|
[HRex Member Match Request Profile](https://hl7.org/fhir/us/davinci-hrex/STU1/StructureDefinition-hrex-parameters-member-match-in.html),
|
|
68
68
|
ensuring subsequent tests can accurately simulate content. It also checks conformance to the [Parameters Resource](https://hl7.org/fhir/R4/parameters.html),
|
|
69
69
|
mandatory elements, and terminology.
|
|
70
70
|
}
|
|
71
|
+
simulation_verification
|
|
71
72
|
end
|
|
72
73
|
|
|
73
74
|
test from: :pdex_member_match_local_ref_validation do
|
|
74
75
|
id :pdex_member_match_local_ref
|
|
75
|
-
title '
|
|
76
|
+
title 'Member match request only uses local references'
|
|
77
|
+
simulation_verification
|
|
76
78
|
end
|
|
77
79
|
|
|
78
80
|
test from: :pdex_coverage_to_link_minimal_validation
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
require 'us_core_test_kit/generated/v3.1.1/us_core_test_suite'
|
|
2
2
|
|
|
3
|
+
require_relative 'remove_input'
|
|
4
|
+
|
|
3
5
|
require_relative 'pdex_payer_server/workflow_member_match_group'
|
|
4
6
|
require_relative 'pdex_payer_server/workflow_clinical_data_group'
|
|
5
7
|
require_relative 'pdex_payer_server/workflow_everything_group'
|
|
@@ -69,8 +71,13 @@ module DaVinciPDexTestKit
|
|
|
69
71
|
igs 'hl7.fhir.us.davinci-pdex#2.0.0'
|
|
70
72
|
# hrex 1.0.0 and other dependencies will auto-load
|
|
71
73
|
|
|
74
|
+
validation_context do
|
|
75
|
+
snomedCT '731000124108'
|
|
76
|
+
end
|
|
77
|
+
|
|
72
78
|
# Copy messages limit from Bulk Data Export tests
|
|
73
|
-
message_filters = VALIDATION_MESSAGE_FILTERS + VERSION_SPECIFIC_MESSAGE_FILTERS
|
|
79
|
+
message_filters = VALIDATION_MESSAGE_FILTERS + VERSION_SPECIFIC_MESSAGE_FILTERS +
|
|
80
|
+
USCoreTestKit::USCoreV311::USCoreTestSuite::VALIDATION_MESSAGE_FILTERS
|
|
74
81
|
|
|
75
82
|
$num_messages = 0
|
|
76
83
|
$capped_message = false
|
|
@@ -214,5 +221,6 @@ module DaVinciPDexTestKit
|
|
|
214
221
|
group from: :pdex_server_visual_inspection_and_attestation do
|
|
215
222
|
optional
|
|
216
223
|
end
|
|
224
|
+
RemoveInput::recursive_remove_input(groups.last, :url)
|
|
217
225
|
end
|
|
218
226
|
end
|
|
@@ -51,10 +51,13 @@ module DaVinciPDexTestKit
|
|
|
51
51
|
igs 'hl7.fhir.us.davinci-pdex#2.0.0'
|
|
52
52
|
# hrex 1.0.0 and other dependencies will auto-load
|
|
53
53
|
|
|
54
|
+
validation_context do
|
|
55
|
+
snomedCT '731000124108'
|
|
56
|
+
end
|
|
57
|
+
|
|
54
58
|
exclude_message do |message|
|
|
55
59
|
message.message.match?(/\A\S+: \S+: URL value '.*' does not resolve/)
|
|
56
60
|
end
|
|
57
|
-
|
|
58
61
|
end
|
|
59
62
|
|
|
60
63
|
requirement_sets(
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
module DaVinciPDexTestKit
|
|
2
|
+
module RemoveInput
|
|
3
|
+
module_function
|
|
4
|
+
def recursive_remove_input(runnable, input)
|
|
5
|
+
runnable.inputs.delete(input)
|
|
6
|
+
runnable.input_order.delete(input)
|
|
7
|
+
runnable.children.each { |child_runnable| recursive_remove_input(child_runnable, input) }
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|