davinci_pdex_test_kit 0.10.6 → 0.12.0
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/config/presets/pdex_payer_client_postman_preset.json +12 -0
- data/config/presets/pdex_payer_server_fhir_foundry_ri_preset.json +96 -0
- data/config/presets/pdex_payer_server_inferno_ri_preset.json +96 -0
- data/lib/davinci_pdex_test_kit/docs/davinci_pdex_test_kit_description_v200.md +33 -0
- data/lib/davinci_pdex_test_kit/docs/payer_client_suite_description_v200.md +107 -17
- data/lib/davinci_pdex_test_kit/fhir_resource_navigation.rb +5 -1
- data/lib/davinci_pdex_test_kit/group_metadata.rb +5 -1
- data/lib/davinci_pdex_test_kit/igs/davinci-pdex-2.0.0.tgz +0 -0
- data/lib/davinci_pdex_test_kit/igs/us-core-3.1.1.tgz +0 -0
- data/lib/davinci_pdex_test_kit/metadata.rb +16 -0
- data/lib/davinci_pdex_test_kit/must_support_test.rb +3 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/client_member_match_tests/client_member_match_validation_test.rb +21 -17
- data/lib/davinci_pdex_test_kit/pdex_payer_client/client_validation_test.rb +96 -43
- data/lib/davinci_pdex_test_kit/pdex_payer_client/client_workflow_interaction_test.rb +50 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/allergyintolerance_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/careplan_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/careteam_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/clinical_data_request_check_test.rb +24 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/condition_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/device_clinical_data_request_test.rb +19 -17
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/diagnosticreport_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/documentreference_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/encounter_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/explanationofbenefit_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/goal_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/immunization_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/location_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/medicationdispense_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/medicationrequest_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/observation_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/organization_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/patient_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/patient_id_search_request_check_test.rb +21 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/practitioner_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/practitionerrole_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/procedure_clinical_data_request_test.rb +18 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_client/collection.rb +46 -44
- data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/binary_endpoint.rb +26 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/export_endpoint.rb +29 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/export_status_endpoint.rb +38 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/member_match_endpoint.rb +51 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/next_page_endpoint.rb +23 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/patient_endpoint.rb +25 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/patient_everything_endpoint.rb +34 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/proxy_endpoint.rb +178 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/resource_read_endpoint.rb +21 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/resource_search_endpoint.rb +22 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/token_endpoint.rb +27 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server.rb +53 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/tags.rb +15 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/urls.rb +51 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client_suite.rb +99 -144
- data/lib/davinci_pdex_test_kit/pdex_payer_server/coverage_to_link_minimal_data_validation.rb +1 -1
- data/lib/davinci_pdex_test_kit/pdex_payer_server/coverage_to_link_must_support_validation.rb +1 -1
- data/lib/davinci_pdex_test_kit/pdex_payer_server/device/device_must_support_test.rb +50 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/device/device_patient_search_test.rb +68 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/device/device_patient_type_search_test.rb +54 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/{explanation_of_benefit/explanation_of_benefit_provenance_revinclude_search_test.rb → device/device_provenance_revinclude_search_test.rb} +16 -13
- data/lib/davinci_pdex_test_kit/pdex_payer_server/device/device_read_test.rb +26 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/device/device_reference_resolution_test.rb +42 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/device/device_validation_test.rb +39 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/device/metadata.yml +154 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/device_group.rb +88 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_id_search_test.rb +10 -26
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_identifier_search_test.rb +13 -26
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_must_support_test.rb +40 -7
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_lastupdated_search_test.rb +48 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_search_test.rb +62 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_service_date_search_test.rb +13 -28
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_type_search_test.rb +12 -28
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_read_test.rb +1 -1
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_reference_resolution_test.rb +10 -6
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_validation_test.rb +10 -11
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/metadata.yml +285 -273
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit_group.rb +69 -73
- data/lib/davinci_pdex_test_kit/pdex_payer_server/export_patient_group.rb +11 -13
- data/lib/davinci_pdex_test_kit/pdex_payer_server/export_validation_group.rb +3 -8
- data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense/medication_dispense_must_support_test.rb +42 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense/medication_dispense_patient_search_test.rb +64 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense/medication_dispense_patient_status_search_test.rb +54 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense/medication_dispense_patient_status_type_search_test.rb +55 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense/medication_dispense_provenance_revinclude_search_test.rb +54 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense/medication_dispense_read_test.rb +26 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense/medication_dispense_reference_resolution_test.rb +42 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense/medication_dispense_validation_test.rb +39 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense/metadata.yml +206 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense_group.rb +69 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/member_match_request_local_references_validation.rb +1 -1
- data/lib/davinci_pdex_test_kit/pdex_payer_server/member_match_request_profile_validation.rb +1 -3
- data/lib/davinci_pdex_test_kit/pdex_payer_server/multiple_member_matches_group.rb +36 -37
- data/lib/davinci_pdex_test_kit/pdex_payer_server/no_member_matches_group.rb +30 -31
- data/lib/davinci_pdex_test_kit/pdex_payer_server/patient_operation_in_capability_statement_validation.rb +16 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_server/provenance/metadata.yml +173 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/provenance/provenance_must_support_test.rb +51 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/provenance/provenance_read_test.rb +26 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/provenance/provenance_reference_resolution_test.rb +46 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/provenance/provenance_validation_test.rb +39 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/provenance_group.rb +59 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/workflow_clinical_data_group.rb +25 -16
- data/lib/davinci_pdex_test_kit/pdex_payer_server/workflow_everything_group.rb +21 -10
- data/lib/davinci_pdex_test_kit/pdex_payer_server/workflow_export_group.rb +24 -20
- data/lib/davinci_pdex_test_kit/pdex_payer_server/workflow_member_match_group.rb +56 -38
- data/lib/davinci_pdex_test_kit/pdex_payer_server_suite.rb +124 -112
- data/lib/davinci_pdex_test_kit/pdex_provider_client_suite.rb +8 -8
- data/lib/davinci_pdex_test_kit/requirements/davinci-pdex-test-kit_out_of_scope_requirements.csv +1 -0
- data/lib/davinci_pdex_test_kit/requirements/davinci-pdex-test-kit_requirements.csv +64 -0
- data/lib/davinci_pdex_test_kit/requirements/generated/davinci-pdex-test-kit_requirements_coverage.csv +64 -0
- data/lib/davinci_pdex_test_kit/version.rb +2 -3
- data/lib/davinci_pdex_test_kit.rb +2 -2
- data/lib/inferno_requirements_tools/ext/inferno_core/runnable.rb +22 -0
- data/lib/inferno_requirements_tools/rake/rakefile_template +19 -0
- data/lib/inferno_requirements_tools/tasks/requirements_coverage.rb +284 -0
- data/lib/requirements_config.yaml +17 -0
- metadata +113 -27
- data/lib/davinci_pdex_test_kit/ext/inferno_core/record_response_route.rb +0 -98
- data/lib/davinci_pdex_test_kit/ext/inferno_core/request.rb +0 -19
- data/lib/davinci_pdex_test_kit/ext/inferno_core/runnable.rb +0 -18
- data/lib/davinci_pdex_test_kit/mock_server.rb +0 -281
- data/lib/davinci_pdex_test_kit/pdex_payer_client/client_member_match_tests/client_member_match_submit_test.rb +0 -24
- data/lib/davinci_pdex_test_kit/pdex_payer_client/client_must_support_tests/client_member_match_must_support_submit_test.rb +0 -26
- data/lib/davinci_pdex_test_kit/pdex_payer_client/client_must_support_tests/client_member_match_must_support_validation_test.rb +0 -32
- data/lib/davinci_pdex_test_kit/pdex_payer_client/client_must_support_tests/metadata.yml +0 -61
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/initial_scratch_storing.rb +0 -32
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/initial_wait_test.rb +0 -31
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_last_updated_search_test.rb +0 -63
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_use_search_test.rb +0 -68
- data/lib/davinci_pdex_test_kit/tags.rb +0 -11
- data/lib/davinci_pdex_test_kit/urls.rb +0 -77
- /data/lib/davinci_pdex_test_kit/{metadata → pdex_payer_client/mock_server/resources}/mock_capability_statement.json +0 -0
- /data/lib/davinci_pdex_test_kit/{metadata → pdex_payer_client/mock_server/resources}/mock_operation_outcome_resource.json +0 -0
@@ -1,16 +1,15 @@
|
|
1
|
-
|
2
|
-
require_relative '
|
3
|
-
require_relative 'ext/inferno_core/runnable'
|
4
|
-
require_relative 'ext/inferno_core/request'
|
5
|
-
require_relative 'urls'
|
6
|
-
require_relative 'mock_server'
|
7
|
-
require_relative 'tags'
|
1
|
+
require_relative 'pdex_payer_client/urls'
|
2
|
+
require_relative 'pdex_payer_client/tags'
|
8
3
|
require_relative 'pdex_payer_client/collection'
|
9
|
-
require_relative '
|
10
|
-
require_relative '
|
4
|
+
require_relative 'pdex_payer_client/mock_server'
|
5
|
+
# require_relative 'must_support_test'
|
6
|
+
# require_relative 'pdex_payer_client/client_validation_test'
|
11
7
|
|
12
|
-
require_relative 'pdex_payer_client/
|
13
|
-
require_relative 'pdex_payer_client/
|
8
|
+
require_relative 'pdex_payer_client/client_workflow_interaction_test'
|
9
|
+
require_relative 'pdex_payer_client/client_member_match_tests/client_member_match_validation_test'
|
10
|
+
|
11
|
+
require_relative 'pdex_payer_client/clinical_data_request_tests/clinical_data_request_check_test'
|
12
|
+
require_relative 'pdex_payer_client/clinical_data_request_tests/patient_id_search_request_check_test'
|
14
13
|
require_relative 'pdex_payer_client/clinical_data_request_tests/allergyintolerance_clinical_data_request_test'
|
15
14
|
require_relative 'pdex_payer_client/clinical_data_request_tests/careplan_clinical_data_request_test'
|
16
15
|
require_relative 'pdex_payer_client/clinical_data_request_tests/careteam_clinical_data_request_test'
|
@@ -32,155 +31,111 @@ require_relative 'pdex_payer_client/clinical_data_request_tests/practitioner_cli
|
|
32
31
|
require_relative 'pdex_payer_client/clinical_data_request_tests/practitionerrole_clinical_data_request_test'
|
33
32
|
require_relative 'pdex_payer_client/clinical_data_request_tests/procedure_clinical_data_request_test'
|
34
33
|
|
35
|
-
require_relative 'pdex_payer_client/client_member_match_tests/client_member_match_submit_test'
|
36
|
-
require_relative 'pdex_payer_client/client_member_match_tests/client_member_match_validation_test'
|
37
|
-
# require_relative 'pdex_payer_client/client_must_support_tests/client_member_match_must_support_submit_test'
|
38
|
-
# require_relative 'pdex_payer_client/client_must_support_tests/client_member_match_must_support_validation_test'
|
39
|
-
|
40
|
-
|
41
34
|
module DaVinciPDexTestKit
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
#
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
exclude_message do |message|
|
79
|
-
message.message.match?(/\A\S+: \S+: URL value '.*' does not resolve/)
|
80
|
-
end
|
35
|
+
class PDexPayerClientSuite < Inferno::TestSuite
|
36
|
+
include PDexPayerClient
|
37
|
+
include PDexPayerClient::URLs
|
38
|
+
include PDexPayerClient::MockServer
|
39
|
+
|
40
|
+
id :pdex_payer_client
|
41
|
+
title 'Da Vinci PDex Payer Client Test Suite'
|
42
|
+
description File.read(File.join(__dir__, 'docs', 'payer_client_suite_description_v200.md'))
|
43
|
+
|
44
|
+
links [
|
45
|
+
{
|
46
|
+
label: 'Report Issue',
|
47
|
+
url: 'https://github.com/inferno-framework/davinci-pdex-test-kit/issues'
|
48
|
+
},
|
49
|
+
{
|
50
|
+
label: 'Open Source',
|
51
|
+
url: 'https://github.com/inferno-framework/davinci-pdex-test-kit'
|
52
|
+
},
|
53
|
+
{
|
54
|
+
label: 'Download',
|
55
|
+
url: 'https://github.com/inferno-framework/davinci-pdex-test-kit/releases'
|
56
|
+
},
|
57
|
+
{
|
58
|
+
label: 'Implementation Guide',
|
59
|
+
url: 'https://hl7.org/fhir/us/davinci-pdex/STU2/'
|
60
|
+
}
|
61
|
+
]
|
62
|
+
|
63
|
+
# Hl7 Validator Wrapper:
|
64
|
+
fhir_resource_validator do
|
65
|
+
igs 'hl7.fhir.us.davinci-pdex#2.0.0'
|
66
|
+
# hrex 1.0.0 and other dependencies will auto-load
|
67
|
+
|
68
|
+
exclude_message do |message|
|
69
|
+
message.message.match?(/\A\S+: \S+: URL value '.*' does not resolve/)
|
81
70
|
end
|
71
|
+
end
|
82
72
|
|
83
|
-
|
84
|
-
|
85
|
-
|
73
|
+
resume_test_route :get, RESUME_PASS_PATH do |request|
|
74
|
+
PDexPayerClientSuite.extract_token_from_query_params(request)
|
75
|
+
end
|
86
76
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
end
|
77
|
+
resume_test_route :get, RESUME_CLINICAL_DATA_PATH do |request|
|
78
|
+
PDexPayerClientSuite.extract_token_from_query_params(request)
|
79
|
+
end
|
91
80
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
end
|
81
|
+
resume_test_route :get, RESUME_FAIL_PATH, result: 'fail' do |request|
|
82
|
+
PDexPayerClientSuite.extract_token_from_query_params(request)
|
83
|
+
end
|
96
84
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
85
|
+
group do
|
86
|
+
run_as_group
|
87
|
+
title 'Workflow Tests'
|
88
|
+
id :payer_to_payer_workflow
|
101
89
|
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
end
|
90
|
+
group do
|
91
|
+
title 'Interaction Tests'
|
92
|
+
id :client_workflow_interaction
|
106
93
|
|
107
|
-
|
108
|
-
resumes: method(:test_resumes?) do |request|
|
109
|
-
PDexPayerClientSuite.extract_bearer_token(request)
|
94
|
+
test from: :pdex_client_workflow_interaction
|
110
95
|
end
|
111
96
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
end
|
97
|
+
group do
|
98
|
+
title '$member-match validation'
|
99
|
+
id :member_match_validation
|
116
100
|
|
117
|
-
|
118
|
-
resumes: method(:test_resumes?) do |request|
|
119
|
-
PDexPayerClientSuite.extract_bearer_token(request)
|
101
|
+
test from: :pdex_initial_member_match_validation
|
120
102
|
end
|
121
103
|
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
104
|
+
group do
|
105
|
+
title 'Clinical data request validation'
|
106
|
+
id :clinical_data_validation
|
107
|
+
|
108
|
+
test from: :pdex_clinical_data_request_check
|
109
|
+
test from: :pdex_patient_id_search_request_check
|
110
|
+
test from: :pdex_allergyintolerance_clinical_data_request
|
111
|
+
test from: :pdex_careplan_clinical_data_request
|
112
|
+
test from: :pdex_careteam_clinical_data_request
|
113
|
+
test from: :pdex_condition_clinical_data_request
|
114
|
+
test from: :pdex_device_clinical_data_request
|
115
|
+
test from: :pdex_diagnosticreport_clinical_data_request
|
116
|
+
test from: :pdex_documentreference_clinical_data_request
|
117
|
+
test from: :pdex_encounter_clinical_data_request
|
118
|
+
test from: :pdex_explanationofbenefit_clinical_data_request
|
119
|
+
test from: :pdex_goal_clinical_data_request
|
120
|
+
test from: :pdex_immunization_clinical_data_request
|
121
|
+
test from: :pdex_location_clinical_data_request
|
122
|
+
test from: :pdex_medicationdispense_clinical_data_request
|
123
|
+
test from: :pdex_medicationrequest_clinical_data_request
|
124
|
+
test from: :pdex_observation_clinical_data_request
|
125
|
+
test from: :pdex_organization_clinical_data_request
|
126
|
+
test from: :pdex_patient_clinical_data_request
|
127
|
+
test from: :pdex_practitioner_clinical_data_request
|
128
|
+
test from: :pdex_practitionerrole_clinical_data_request
|
129
|
+
test from: :pdex_procedure_clinical_data_request
|
129
130
|
end
|
131
|
+
end
|
130
132
|
|
131
|
-
|
132
|
-
PDexPayerClientSuite.extract_token_from_query_params(request)
|
133
|
-
end
|
134
|
-
|
135
|
-
resume_test_route :get, RESUME_FAIL_PATH, result: 'fail' do |request|
|
136
|
-
PDexPayerClientSuite.extract_token_from_query_params(request)
|
137
|
-
end
|
133
|
+
# TODO: must support validation
|
138
134
|
|
139
|
-
|
135
|
+
private
|
140
136
|
|
141
|
-
|
142
|
-
|
143
|
-
title "Workflow Tests"
|
144
|
-
group do
|
145
|
-
title "$member-match validation"
|
146
|
-
test from: :initial_member_match_submit_test
|
147
|
-
test from: :initial_member_match_validation_test
|
148
|
-
end
|
149
|
-
group do
|
150
|
-
title "Clinical data request tests"
|
151
|
-
test from: :initial_wait_test
|
152
|
-
test from: :initial_scratch_storing
|
153
|
-
test from: :allergyintolerance_clinical_data_request_test
|
154
|
-
test from: :careplan_clinical_data_request_test
|
155
|
-
test from: :careteam_clinical_data_request_test
|
156
|
-
test from: :condition_clinical_data_request_test
|
157
|
-
test from: :device_clinical_data_request_test
|
158
|
-
test from: :diagnosticreport_clinical_data_request_test
|
159
|
-
test from: :documentreference_clinical_data_request_test
|
160
|
-
test from: :encounter_clinical_data_request_test
|
161
|
-
test from: :explanationofbenefit_clinical_data_request_test
|
162
|
-
test from: :goal_clinical_data_request_test
|
163
|
-
test from: :immunization_clinical_data_request_test
|
164
|
-
test from: :location_clinical_data_request_test
|
165
|
-
test from: :medicationdispense_clinical_data_request_test
|
166
|
-
test from: :medicationrequest_clinical_data_request_test
|
167
|
-
test from: :observation_clinical_data_request_test
|
168
|
-
test from: :organization_clinical_data_request_test
|
169
|
-
test from: :patient_clinical_data_request_test
|
170
|
-
test from: :practitioner_clinical_data_request_test
|
171
|
-
test from: :practitionerrole_clinical_data_request_test
|
172
|
-
test from: :procedure_clinical_data_request_test
|
173
|
-
end
|
174
|
-
end
|
175
|
-
|
176
|
-
# group do
|
177
|
-
# title "Must Support validation"
|
178
|
-
# group do
|
179
|
-
# title "$member-match Must Support tests"
|
180
|
-
# test from: :initial_member_match_must_support_submit_test
|
181
|
-
# test from: :initial_member_match_must_support_validation_test
|
182
|
-
# end
|
183
|
-
# end
|
137
|
+
def self.extract_token_from_query_params(request)
|
138
|
+
request.query_parameters['token']
|
184
139
|
end
|
185
140
|
end
|
186
|
-
|
141
|
+
end
|
data/lib/davinci_pdex_test_kit/pdex_payer_server/coverage_to_link_minimal_data_validation.rb
CHANGED
@@ -28,7 +28,7 @@ module DaVinciPDexTestKit
|
|
28
28
|
#
|
29
29
|
class CoverageToLinkMinimalDataValidation < Inferno::Test
|
30
30
|
|
31
|
-
id :
|
31
|
+
id :pdex_coverage_to_link_minimal_validation
|
32
32
|
title '[USER INPUT VALIDATION] CoverageToLink parameter should not include any data elements not marked as mustSupport'
|
33
33
|
optional
|
34
34
|
description %{
|
data/lib/davinci_pdex_test_kit/pdex_payer_server/coverage_to_link_must_support_validation.rb
CHANGED
@@ -29,7 +29,7 @@ module DaVinciPDexTestKit
|
|
29
29
|
#
|
30
30
|
class CoverageToLinkMustSupportValidation < Inferno::Test
|
31
31
|
|
32
|
-
id :
|
32
|
+
id :pdex_coverage_to_link_ms_validation
|
33
33
|
title '[USER INPUT VALIDATION] CoverageToLink parameter is optional for generic FHIR clients, but required for Payer systems.'
|
34
34
|
description 'See [CoverageToLink parameter documentation](https://hl7.org/fhir/us/davinci-hrex/STU1/OperationDefinition-member-match.html).'
|
35
35
|
optional
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'us_core_test_kit/must_support_test'
|
2
|
+
require 'us_core_test_kit/generator/group_metadata'
|
3
|
+
|
4
|
+
module DaVinciPDexTestKit
|
5
|
+
module PDexPayerServer
|
6
|
+
class DeviceMustSupportTest < Inferno::Test
|
7
|
+
include USCoreTestKit::MustSupportTest
|
8
|
+
|
9
|
+
title 'All must support elements are provided in the Device resources returned'
|
10
|
+
description %(
|
11
|
+
PDex Responders SHALL be capable of populating all data elements as
|
12
|
+
part of the query results as specified by the PDex Server Capability
|
13
|
+
Statement. This test will look through the Device resources
|
14
|
+
found previously for the following must support elements:
|
15
|
+
|
16
|
+
* Device.distinctIdentifier
|
17
|
+
* Device.expirationDate
|
18
|
+
* Device.lotNumber
|
19
|
+
* Device.patient
|
20
|
+
* Device.serialNumber
|
21
|
+
* Device.status
|
22
|
+
* Device.type
|
23
|
+
* Device.udiCarrier
|
24
|
+
* Device.udiCarrier.carrierAIDC
|
25
|
+
* Device.udiCarrier.carrierHRF
|
26
|
+
* Device.udiCarrier.deviceIdentifier
|
27
|
+
* Device.url
|
28
|
+
)
|
29
|
+
|
30
|
+
id :pdex_device_must_support
|
31
|
+
|
32
|
+
def resource_type
|
33
|
+
'Device'
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.metadata
|
37
|
+
@metadata ||= USCoreTestKit::Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'),
|
38
|
+
aliases: true))
|
39
|
+
end
|
40
|
+
|
41
|
+
def scratch_resources
|
42
|
+
scratch[:device_resources] ||= {}
|
43
|
+
end
|
44
|
+
|
45
|
+
run do
|
46
|
+
perform_must_support_test(all_scratch_resources)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'us_core_test_kit/search_test'
|
2
|
+
require 'us_core_test_kit/search_test_properties'
|
3
|
+
require 'us_core_test_kit/generator/group_metadata'
|
4
|
+
|
5
|
+
module DaVinciPDexTestKit
|
6
|
+
module PDexPayerServer
|
7
|
+
class DevicePatientSearchTest < Inferno::Test
|
8
|
+
include USCoreTestKit::SearchTest
|
9
|
+
|
10
|
+
title 'Server returns valid results for Device search by patient'
|
11
|
+
description %(
|
12
|
+
A server SHALL support searching by
|
13
|
+
patient on the Device resource. This test
|
14
|
+
will pass if resources are returned and match the search criteria. If
|
15
|
+
none are returned, the test is skipped.
|
16
|
+
|
17
|
+
This test verifies that the server supports searching by reference using
|
18
|
+
the form `patient=[id]` as well as `patient=Patient/[id]`. The two
|
19
|
+
different forms are expected to return the same number of results. US
|
20
|
+
Core requires that both forms are supported by PDex responders.
|
21
|
+
|
22
|
+
Because this is the first search of the sequence, resources in the
|
23
|
+
response will be used for subsequent tests.
|
24
|
+
|
25
|
+
Additionally, this test will check that GET and POST search methods
|
26
|
+
return the same number of results. Search by POST is required by the
|
27
|
+
FHIR R4 specification, and these tests interpret search by GET as a
|
28
|
+
requirement of PDex v2.0.0.
|
29
|
+
|
30
|
+
[PDex Server CapabilityStatement](https://hl7.org/fhir/us/davinci-pdex/STU2/CapabilityStatement-pdex-server.html)
|
31
|
+
)
|
32
|
+
|
33
|
+
id :pdex_device_patient_search
|
34
|
+
input :patient_ids,
|
35
|
+
title: 'Patient IDs',
|
36
|
+
description: 'Comma separated list of patient IDs that in sum contain all MUST SUPPORT elements'
|
37
|
+
|
38
|
+
input :implantable_device_codes,
|
39
|
+
title: 'Implantable Device Type Code',
|
40
|
+
description: 'Enter the code for an Implantable Device type, or multiple codes separated by commas. ' \
|
41
|
+
'If blank, Inferno will validate all Device resources against the Implantable Device profile',
|
42
|
+
optional: true
|
43
|
+
|
44
|
+
def self.properties
|
45
|
+
@properties ||= USCoreTestKit::SearchTestProperties.new(
|
46
|
+
first_search: true,
|
47
|
+
resource_type: 'Device',
|
48
|
+
search_param_names: ['patient'],
|
49
|
+
test_reference_variants: true,
|
50
|
+
test_post_search: true
|
51
|
+
)
|
52
|
+
end
|
53
|
+
|
54
|
+
def self.metadata
|
55
|
+
@metadata ||= USCoreTestKit::Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'),
|
56
|
+
aliases: true))
|
57
|
+
end
|
58
|
+
|
59
|
+
def scratch_resources
|
60
|
+
scratch[:device_resources] ||= {}
|
61
|
+
end
|
62
|
+
|
63
|
+
run do
|
64
|
+
run_search_test
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'us_core_test_kit/search_test'
|
2
|
+
require 'us_core_test_kit/generator/group_metadata'
|
3
|
+
|
4
|
+
module DaVinciPDexTestKit
|
5
|
+
module PDexPayerServer
|
6
|
+
class DevicePatientTypeSearchTest < Inferno::Test
|
7
|
+
include USCoreTestKit::SearchTest
|
8
|
+
|
9
|
+
title 'Server returns valid results for Device search by patient + type'
|
10
|
+
description %(
|
11
|
+
A server SHOULD support searching by
|
12
|
+
patient + type on the Device resource. This test
|
13
|
+
will pass if resources are returned and match the search criteria. If
|
14
|
+
none are returned, the test is skipped.
|
15
|
+
|
16
|
+
[PDex Server CapabilityStatement](https://hl7.org/fhir/us/davinci-pdex/STU2/CapabilityStatement-pdex-server.html)
|
17
|
+
)
|
18
|
+
|
19
|
+
id :pdex_device_patient_type_search
|
20
|
+
optional
|
21
|
+
|
22
|
+
input :patient_ids,
|
23
|
+
title: 'Patient IDs',
|
24
|
+
description: 'Comma separated list of patient IDs that in sum contain all MUST SUPPORT elements'
|
25
|
+
|
26
|
+
input :implantable_device_codes,
|
27
|
+
title: 'Implantable Device Type Code',
|
28
|
+
description: 'Enter the code for an Implantable Device type, or multiple codes separated by commas. ' \
|
29
|
+
'If blank, Inferno will validate all Device resources against the Implantable Device profile',
|
30
|
+
optional: true
|
31
|
+
|
32
|
+
def self.properties
|
33
|
+
@properties ||= USCoreTestKit::SearchTestProperties.new(
|
34
|
+
resource_type: 'Device',
|
35
|
+
search_param_names: ['patient', 'type'],
|
36
|
+
token_search_params: ['type']
|
37
|
+
)
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.metadata
|
41
|
+
@metadata ||= USCoreTestKit::Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'),
|
42
|
+
aliases: true))
|
43
|
+
end
|
44
|
+
|
45
|
+
def scratch_resources
|
46
|
+
scratch[:device_resources] ||= {}
|
47
|
+
end
|
48
|
+
|
49
|
+
run do
|
50
|
+
run_search_test
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -2,12 +2,12 @@ require 'us_core_test_kit/search_test'
|
|
2
2
|
require 'us_core_test_kit/search_test_properties'
|
3
3
|
require 'us_core_test_kit/generator/group_metadata'
|
4
4
|
|
5
|
-
module
|
6
|
-
module
|
7
|
-
class
|
5
|
+
module DaVinciPDexTestKit
|
6
|
+
module PDexPayerServer
|
7
|
+
class DeviceProvenanceRevincludeSearchTest < Inferno::Test
|
8
8
|
include USCoreTestKit::SearchTest
|
9
9
|
|
10
|
-
title 'Server returns Provenance resources from
|
10
|
+
title 'Server returns Provenance resources from Device search by patient + revInclude:Provenance:target'
|
11
11
|
description %(
|
12
12
|
A server SHALL be capable of supporting _revIncludes:Provenance:target.
|
13
13
|
|
@@ -15,16 +15,16 @@ module USCoreTestKit
|
|
15
15
|
will pass if a Provenance resource is found in the response.
|
16
16
|
%)
|
17
17
|
|
18
|
-
id :
|
19
|
-
|
18
|
+
id :pdex_device_provenance_revinclude_search
|
19
|
+
|
20
20
|
input :patient_ids,
|
21
|
-
|
22
|
-
|
23
|
-
|
21
|
+
title: 'Patient IDs',
|
22
|
+
description: 'Comma separated list of patient IDs that in sum contain all MUST SUPPORT elements'
|
23
|
+
|
24
24
|
def properties
|
25
25
|
@properties ||= USCoreTestKit::SearchTestProperties.new(
|
26
|
-
resource_type: '
|
27
|
-
|
26
|
+
resource_type: 'Device',
|
27
|
+
search_param_names: ['patient']
|
28
28
|
)
|
29
29
|
end
|
30
30
|
|
@@ -33,11 +33,14 @@ module USCoreTestKit
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def self.provenance_metadata
|
36
|
-
@provenance_metadata ||= USCoreTestKit::Generator::GroupMetadata.new(YAML.load_file(
|
36
|
+
@provenance_metadata ||= USCoreTestKit::Generator::GroupMetadata.new(YAML.load_file(
|
37
|
+
File.join(__dir__, '..', 'provenance',
|
38
|
+
'metadata.yml'), aliases: true
|
39
|
+
))
|
37
40
|
end
|
38
41
|
|
39
42
|
def scratch_resources
|
40
|
-
scratch[:
|
43
|
+
scratch[:device_resources] ||= {}
|
41
44
|
end
|
42
45
|
|
43
46
|
def scratch_provenance_resources
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'us_core_test_kit/read_test'
|
2
|
+
|
3
|
+
module DaVinciPDexTestKit
|
4
|
+
module PDexPayerServer
|
5
|
+
class DeviceReadTest < Inferno::Test
|
6
|
+
include USCoreTestKit::ReadTest
|
7
|
+
|
8
|
+
title 'Server returns correct Device resource from Device read interaction'
|
9
|
+
description 'A server SHALL support the Device read interaction.'
|
10
|
+
|
11
|
+
id :pdex_device_read
|
12
|
+
|
13
|
+
def resource_type
|
14
|
+
'Device'
|
15
|
+
end
|
16
|
+
|
17
|
+
def scratch_resources
|
18
|
+
scratch[:device_resources] ||= {}
|
19
|
+
end
|
20
|
+
|
21
|
+
run do
|
22
|
+
perform_read_test(all_scratch_resources)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'us_core_test_kit/reference_resolution_test'
|
2
|
+
require 'us_core_test_kit/generator/group_metadata'
|
3
|
+
|
4
|
+
module DaVinciPDexTestKit
|
5
|
+
module PDexPayerServer
|
6
|
+
class DeviceReferenceResolutionTest < Inferno::Test
|
7
|
+
include USCoreTestKit::ReferenceResolutionTest
|
8
|
+
|
9
|
+
title 'MustSupport references within Device resources are valid'
|
10
|
+
description %(
|
11
|
+
This test will attempt to read external references provided within elements
|
12
|
+
marked as 'MustSupport', if any are available.
|
13
|
+
|
14
|
+
It verifies that at least one external reference for each MustSupport Reference element
|
15
|
+
can be accessed by the test client, and conforms to corresponding PDex profile.
|
16
|
+
|
17
|
+
Elements which may provide external references include:
|
18
|
+
|
19
|
+
* Device.patient
|
20
|
+
)
|
21
|
+
|
22
|
+
id :pdex_device_ref_resolution
|
23
|
+
|
24
|
+
def resource_type
|
25
|
+
'Device'
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.metadata
|
29
|
+
@metadata ||= USCoreTestKit::Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'),
|
30
|
+
aliases: true))
|
31
|
+
end
|
32
|
+
|
33
|
+
def scratch_resources
|
34
|
+
scratch[:device_resources] ||= {}
|
35
|
+
end
|
36
|
+
|
37
|
+
run do
|
38
|
+
perform_reference_resolution_test(scratch_resources[:all])
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'us_core_test_kit/validation_test'
|
2
|
+
|
3
|
+
module DaVinciPDexTestKit
|
4
|
+
module PDexPayerServer
|
5
|
+
class DeviceValidationTest < Inferno::Test
|
6
|
+
include USCoreTestKit::ValidationTest
|
7
|
+
|
8
|
+
id :pdex_device_validation
|
9
|
+
title 'Device resources returned during previous tests conform to the PDex Device'
|
10
|
+
description %(
|
11
|
+
This test verifies resources returned from the first search conform to
|
12
|
+
the [PDex Device](http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/pdex-device).
|
13
|
+
Systems must demonstrate at least one valid example in order to pass this test.
|
14
|
+
|
15
|
+
It verifies the presence of mandatory elements and that elements with
|
16
|
+
required bindings contain appropriate values. CodeableConcept element
|
17
|
+
bindings will fail if none of their codings have a code/system belonging
|
18
|
+
to the bound ValueSet. Quantity, Coding, and code element bindings will
|
19
|
+
fail if their code/system are not found in the valueset.
|
20
|
+
)
|
21
|
+
output :dar_code_found, :dar_extension_found
|
22
|
+
|
23
|
+
def resource_type
|
24
|
+
'Device'
|
25
|
+
end
|
26
|
+
|
27
|
+
def scratch_resources
|
28
|
+
scratch[:device_resources] ||= {}
|
29
|
+
end
|
30
|
+
|
31
|
+
run do
|
32
|
+
perform_validation_test(scratch_resources[:all] || [],
|
33
|
+
'http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/pdex-device',
|
34
|
+
'2.0.0',
|
35
|
+
skip_if_empty: true)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|