davinci_pdex_test_kit 0.9.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 +7 -0
- data/LICENSE +201 -0
- data/lib/davinci_pdex_test_kit/docs/payer_client_suite_description_v200.md +91 -0
- data/lib/davinci_pdex_test_kit/docs/payer_server_suite_description_v200.md +119 -0
- data/lib/davinci_pdex_test_kit/ext/inferno_core/record_response_route.rb +98 -0
- data/lib/davinci_pdex_test_kit/ext/inferno_core/request.rb +19 -0
- data/lib/davinci_pdex_test_kit/ext/inferno_core/runnable.rb +18 -0
- data/lib/davinci_pdex_test_kit/fhir_resource_navigation.rb +154 -0
- data/lib/davinci_pdex_test_kit/group_metadata.rb +109 -0
- data/lib/davinci_pdex_test_kit/metadata/mock_capability_statement.json +1052 -0
- data/lib/davinci_pdex_test_kit/metadata/mock_operation_outcome_resource.json +16 -0
- data/lib/davinci_pdex_test_kit/mock_server.rb +247 -0
- data/lib/davinci_pdex_test_kit/must_support_test.rb +252 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/client_member_match_tests/client_member_match_submit_test.rb +24 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/client_member_match_tests/client_member_match_validation_test.rb +23 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/client_must_support_tests/client_member_match_must_support_submit_test.rb +26 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/client_must_support_tests/client_member_match_must_support_validation_test.rb +32 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/client_validation_test.rb +94 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/allergyintolerance_clinical_data_request_test.rb +23 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/careplan_clinical_data_request_test.rb +23 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/careteam_clinical_data_request_test.rb +23 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/condition_clinical_data_request_test.rb +23 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/device_clinical_data_request_test.rb +23 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/diagnosticreport_clinical_data_request_test.rb +23 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/documentreference_clinical_data_request_test.rb +23 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/encounter_clinical_data_request_test.rb +23 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/explanationofbenefit_clinical_data_request_test.rb +23 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/goal_clinical_data_request_test.rb +23 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/immunization_clinical_data_request_test.rb +23 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/initial_scratch_storing.rb +34 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/initial_wait_test.rb +28 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/location_clinical_data_request_test.rb +23 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/medicationdispense_clinical_data_request_test.rb +23 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/medicationrequest_clinical_data_request_test.rb +23 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/observation_clinical_data_request_test.rb +23 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/organization_clinical_data_request_test.rb +23 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/patient_clinical_data_request_test.rb +23 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/practitioner_clinical_data_request_test.rb +23 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/practitionerrole_clinical_data_request_test.rb +23 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/procedure_clinical_data_request_test.rb +23 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client/collection.rb +46 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_client_suite.rb +152 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/abstract_member_match_request_conformance_test.rb +33 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/abstract_member_match_request_local_references_test.rb +35 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/coverage_to_link_has_minimal_data_test.rb +52 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/coverage_to_link_must_support_test.rb +28 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_id_search_test.rb +58 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_identifier_search_test.rb +58 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_must_support_test.rb +40 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_last_updated_search_test.rb +63 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_service_date_search_test.rb +63 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_type_search_test.rb +63 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_use_search_test.rb +68 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_provenance_revinclude_search_test.rb +52 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_read_test.rb +26 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_reference_resolution_test.rb +43 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_validation_test.rb +40 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit_group.rb +105 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/export_patient_group.rb +103 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/export_validation_group.rb +59 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/multiple_member_matches_group.rb +66 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/no_member_matches_group.rb +69 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/workflow_clinical_data.rb +66 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/workflow_everything.rb +184 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/workflow_export.rb +67 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server/workflow_member_match.rb +171 -0
- data/lib/davinci_pdex_test_kit/pdex_payer_server_suite.rb +158 -0
- data/lib/davinci_pdex_test_kit/pdex_provider_client_suite.rb +36 -0
- data/lib/davinci_pdex_test_kit/tags.rb +9 -0
- data/lib/davinci_pdex_test_kit/urls.rb +67 -0
- data/lib/davinci_pdex_test_kit/user_input_response.rb +32 -0
- data/lib/davinci_pdex_test_kit/version.rb +5 -0
- data/lib/davinci_pdex_test_kit.rb +8 -0
- metadata +218 -0
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'pdex_payer_server/workflow_member_match'
|
|
4
|
+
require_relative 'pdex_payer_server/workflow_clinical_data'
|
|
5
|
+
require_relative 'pdex_payer_server/workflow_everything'
|
|
6
|
+
require_relative 'pdex_payer_server/workflow_export'
|
|
7
|
+
|
|
8
|
+
require_relative 'pdex_payer_server/no_member_matches_group'
|
|
9
|
+
require_relative 'pdex_payer_server/multiple_member_matches_group'
|
|
10
|
+
|
|
11
|
+
require_relative 'pdex_payer_server/explanation_of_benefit_group'
|
|
12
|
+
|
|
13
|
+
module DaVinciPDexTestKit
|
|
14
|
+
class PDexPayerServerSuite < Inferno::TestSuite
|
|
15
|
+
id :pdex_payer_server
|
|
16
|
+
title 'Da Vinci PDex Payer Server Test Suite'
|
|
17
|
+
description File.read(File.join(__dir__, 'docs', 'payer_server_suite_description_v200.md'))
|
|
18
|
+
|
|
19
|
+
input :url,
|
|
20
|
+
title: 'FHIR Server Base Url'
|
|
21
|
+
|
|
22
|
+
input :credentials,
|
|
23
|
+
title: 'OAuth Credentials',
|
|
24
|
+
type: :oauth_credentials,
|
|
25
|
+
optional: true
|
|
26
|
+
|
|
27
|
+
fhir_client do
|
|
28
|
+
url :url
|
|
29
|
+
oauth_credentials :credentials
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
VALIDATION_MESSAGE_FILTERS = [
|
|
33
|
+
/Observation\.effective\.ofType\(Period\): .*vs-1:/, # Invalid invariant in FHIR v4.0.1
|
|
34
|
+
/\A\S+: \S+: URL value '.*' does not resolve/
|
|
35
|
+
].freeze
|
|
36
|
+
|
|
37
|
+
VERSION_SPECIFIC_MESSAGE_FILTERS = [].freeze
|
|
38
|
+
|
|
39
|
+
validator do
|
|
40
|
+
url ENV.fetch('VALIDATOR_URL')
|
|
41
|
+
|
|
42
|
+
# Copy messages limit from Bulk Data Export tests
|
|
43
|
+
message_filters = VALIDATION_MESSAGE_FILTERS + VERSION_SPECIFIC_MESSAGE_FILTERS
|
|
44
|
+
|
|
45
|
+
$num_messages = 0
|
|
46
|
+
$capped_message = false
|
|
47
|
+
$num_errors = 0
|
|
48
|
+
$capped_errors = false
|
|
49
|
+
|
|
50
|
+
exclude_message do |message|
|
|
51
|
+
matches_filter = message_filters.any? { |filter| filter.match? message.message }
|
|
52
|
+
|
|
53
|
+
unless matches_filter
|
|
54
|
+
if message.type != 'error'
|
|
55
|
+
$num_messages += 1
|
|
56
|
+
else
|
|
57
|
+
$num_errors += 1
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
matches_filter ||
|
|
62
|
+
(message.type != 'error' && $num_messages > 50 && !message.message.include?('Inferno is only showing the first')) ||
|
|
63
|
+
(message.type == 'error' && $num_errors > 20 && !message.message.include?('Inferno is only showing the first'))
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
perform_additional_validation do
|
|
67
|
+
if $num_messages > 50 && !$capped_message
|
|
68
|
+
$capped_message = true
|
|
69
|
+
{ type: 'info', message: 'Inferno is only showing the first 50 validation info and warning messages.' }
|
|
70
|
+
elsif $num_errors > 20 && !$capped_errors
|
|
71
|
+
$capped_errors = true
|
|
72
|
+
{ type: 'error', message: 'Inferno is only showing the first 20 validation error messages.' }
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
group do
|
|
78
|
+
title 'Payer to Payer Workflow'
|
|
79
|
+
id :payer_to_payer_workflow
|
|
80
|
+
description %(
|
|
81
|
+
# Background
|
|
82
|
+
|
|
83
|
+
This Payer to Payer Workflow test sequence is designed to simulate a realistic use case for
|
|
84
|
+
data access on a Payer's FHIR Server. This workflow conforms to the Da Vinci
|
|
85
|
+
[Payer Data Exchange (PDex) v2.0.0 Implementation Guide](https://hl7.org/fhir/us/davinci-pdex/STU2/),
|
|
86
|
+
which itself relies on
|
|
87
|
+
[Health Record Exchange (HRex) v1.0.0 Implementation Guide](https://hl7.org/fhir/us/davinci-hrex/index.html)
|
|
88
|
+
and [US Core v3.1.1 Implementation Guide](http://hl7.org/fhir/us/core/STU3.1.1/). The PDex Implementation Guide contains more on
|
|
89
|
+
the [business use case background](https://hl7.org/fhir/us/davinci-pdex/STU2/index.html#background), and the specific
|
|
90
|
+
[payer-to-payer workflow](https://hl7.org/fhir/us/davinci-pdex/STU2/payertopayerexchange.html).
|
|
91
|
+
|
|
92
|
+
# Testing Methodology
|
|
93
|
+
|
|
94
|
+
This workflow is broken into four parts:
|
|
95
|
+
|
|
96
|
+
1. Send a `$member-match` request to the Server to identify a Patient based on Payer's coverage plan and Patient consent.
|
|
97
|
+
|
|
98
|
+
2. Use the identified Patient to query for specific clinical data.
|
|
99
|
+
|
|
100
|
+
3. **Optional.** Send an `$everything` request to the server to query for all relevant clinical data on the Patient.
|
|
101
|
+
|
|
102
|
+
4. **Optional.** Send an `$export` request to the server to query for all relevant clinical data on the Patient asynchronously.
|
|
103
|
+
|
|
104
|
+
See the corresponding test group's description for the testing methodology of each part.
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
group from: :workflow_member_match
|
|
108
|
+
group from: :workflow_clinical_data
|
|
109
|
+
group from: :workflow_everything
|
|
110
|
+
group from: :workflow_export
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
group do
|
|
114
|
+
title 'API Capability and Must Support Coverage'
|
|
115
|
+
id :api_and_must_support_coverage
|
|
116
|
+
|
|
117
|
+
group do
|
|
118
|
+
title '$member-match failure cases'
|
|
119
|
+
id :member_match_failure_cases
|
|
120
|
+
description %{
|
|
121
|
+
# Background
|
|
122
|
+
|
|
123
|
+
This test sequence is for the negative results specification in
|
|
124
|
+
[member matching logic](http://hl7.org/fhir/us/davinci-hrex/STU1/OperationDefinition-member-match.html#member-matching-logic)
|
|
125
|
+
from HRex 1.0.0 Implementation Guide, and is required by the PDex 2.0.0 Implementation Guide.
|
|
126
|
+
|
|
127
|
+
# Testing Methodology
|
|
128
|
+
|
|
129
|
+
1. If provided, attempt no-match member match operation
|
|
130
|
+
+ validate input
|
|
131
|
+
+ POST request to server and validiate HTTP 422 response status
|
|
132
|
+
2. If provided, attempt a multiple-match member match operation
|
|
133
|
+
+ validate input
|
|
134
|
+
+ POST request to server and validiate HTTP 422 response status
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
input_order :url, :credentials, :no_member_match_request, :multiple_member_match_request
|
|
138
|
+
|
|
139
|
+
group from: :no_member_matches_group
|
|
140
|
+
group from: :multiple_member_matches_group
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
group do
|
|
144
|
+
title 'PDEX Search and Read API (US Core plus additional PDex resource types)'
|
|
145
|
+
id :search_and_read_api_coverage
|
|
146
|
+
|
|
147
|
+
group from: :pdex_explanation_of_benefit
|
|
148
|
+
# Import all US Core v3.1.1 groups without the Suite
|
|
149
|
+
Dir.glob(File.join($LOAD_PATH.find { |x| x.match? "us_core_test_kit" }, 'us_core_test_kit/generated/v3.1.1/*_group.rb')).each do |test_group_path|
|
|
150
|
+
require_relative test_group_path
|
|
151
|
+
|
|
152
|
+
group from: "us_core_v311_#{File.basename(test_group_path).gsub('_group.rb','')}".to_sym
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
end
|
|
158
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module DaVinciPDexTestKit
|
|
2
|
+
class PDexProviderClientSuite < Inferno::TestSuite
|
|
3
|
+
id :pdex_provider_client
|
|
4
|
+
title 'Da Vinci PDex Provider Client Test Suite'
|
|
5
|
+
description %(
|
|
6
|
+
# Da Vinci PDex Provider Client Test Suite
|
|
7
|
+
|
|
8
|
+
This suite validates that a provider system can act as a client
|
|
9
|
+
retrieving patient data from a payer system using
|
|
10
|
+
the APIs described in the PDex implementation
|
|
11
|
+
guide. Inferno will act as a payer server that the
|
|
12
|
+
system under test will connect to and retrieve data from.
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
# These inputs will be available to all tests in this suite
|
|
16
|
+
input :url,
|
|
17
|
+
title: 'FHIR Server Base Url'
|
|
18
|
+
|
|
19
|
+
input :credentials,
|
|
20
|
+
title: 'OAuth Credentials',
|
|
21
|
+
type: :oauth_credentials,
|
|
22
|
+
optional: true
|
|
23
|
+
|
|
24
|
+
# All FHIR requests in this suite will use this FHIR client
|
|
25
|
+
fhir_client do
|
|
26
|
+
url :url
|
|
27
|
+
oauth_credentials :credentials
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# All FHIR validation requsets will use this FHIR validator
|
|
31
|
+
validator do
|
|
32
|
+
url ENV.fetch('VALIDATOR_URL')
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
module DaVinciPDexTestKit
|
|
2
|
+
TOKEN_PATH = '/mock_auth/token'
|
|
3
|
+
PATIENT_PATH = '/fhir/Patient'
|
|
4
|
+
SUBMIT_PATH = '/fhir/:endpoint'
|
|
5
|
+
METADATA_PATH = '/fhir/metadata'
|
|
6
|
+
EVERYTHING_PATH = '/fhir/Patient/:patient/$everything'
|
|
7
|
+
MEMBER_MATCH_PATH = '/fhir/Patient/$member-match'
|
|
8
|
+
# EXPORT_PATH = '/fhir/Patient/$export'
|
|
9
|
+
BASE_FHIR_PATH = '/fhir'
|
|
10
|
+
RESUME_PASS_PATH = '/resume_pass'
|
|
11
|
+
RESUME_CLINICAL_DATA_PATH = '/resume_clinical_data'
|
|
12
|
+
RESUME_FAIL_PATH = '/resume_fail'
|
|
13
|
+
|
|
14
|
+
module URLs
|
|
15
|
+
def base_url
|
|
16
|
+
@base_url ||= "#{Inferno::Application['base_url']}/custom/#{suite_id}"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def token_url
|
|
20
|
+
@token_url ||= base_url + TOKEN_PATH
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def base_fhir_url
|
|
24
|
+
@base_fhir_url ||= base_url + BASE_FHIR_PATH
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def patient_url
|
|
28
|
+
@patient_url ||= base_url + PATIENT_PATH
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def submit_url
|
|
32
|
+
@submit_url ||= base_url + SUBMIT_PATH
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def metadata_url
|
|
36
|
+
@metadata_url ||= base_url + METADATA_PATH
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def everything_url
|
|
40
|
+
@everything_url ||= base_url + EVERYTHING_PATH
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def member_match_url
|
|
44
|
+
@member_match_url ||= base_url + MEMBER_MATCH_PATH
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# def export_url
|
|
48
|
+
# @export_url ||= base_url + EXPORT_PATH
|
|
49
|
+
# end
|
|
50
|
+
|
|
51
|
+
def resume_pass_url
|
|
52
|
+
@resume_pass_url ||= base_url + RESUME_PASS_PATH
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def resume_clinical_data_url
|
|
56
|
+
@resume_clinical_data_url ||= base_url + RESUME_CLINICAL_DATA_PATH
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def resume_fail_url
|
|
60
|
+
@resume_fail_url ||= base_url + RESUME_FAIL_PATH
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def suite_id
|
|
64
|
+
self.class.suite.id
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module DaVinciPDexTestKit
|
|
2
|
+
module UserInputResponse
|
|
3
|
+
def self.included(klass)
|
|
4
|
+
klass.extend ClassMethods
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def self.user_inputted_response(configurable, result)
|
|
8
|
+
input_key = configurable.config.options[:respond_with]
|
|
9
|
+
return unless input_key.present?
|
|
10
|
+
|
|
11
|
+
JSON.parse(result.input_json)&.find { |i| i['name'] == input_key.to_s }&.dig('value')
|
|
12
|
+
rescue JSON::ParserError
|
|
13
|
+
nil
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def check_user_inputted_response(input_key, message = nil)
|
|
17
|
+
skip_if send(input_key).blank?,
|
|
18
|
+
message ||
|
|
19
|
+
"To run this test a response body must be provided in the '**#{input_title(input_key)}**' input"
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def input_title(input_key)
|
|
23
|
+
config.inputs[input_key]&.title || config.inputs[input_key]&.name
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
module ClassMethods
|
|
27
|
+
def respond_with(key)
|
|
28
|
+
config options: { respond_with: key }
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'davinci_pdex_test_kit/pdex_payer_server_suite'
|
|
4
|
+
require_relative 'davinci_pdex_test_kit/pdex_payer_client_suite'
|
|
5
|
+
# require_relative 'davinci_pdex_test_kit/pdex_provider_client_suite'
|
|
6
|
+
|
|
7
|
+
module DaVinciPDexTestKit
|
|
8
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: davinci_pdex_test_kit
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.9.1
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Karl Naden
|
|
8
|
+
- Shaumik Ashraf
|
|
9
|
+
- Diego Griese
|
|
10
|
+
autorequire:
|
|
11
|
+
bindir: bin
|
|
12
|
+
cert_chain: []
|
|
13
|
+
date: 2024-06-07 00:00:00.000000000 Z
|
|
14
|
+
dependencies:
|
|
15
|
+
- !ruby/object:Gem::Dependency
|
|
16
|
+
name: inferno_core
|
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
|
18
|
+
requirements:
|
|
19
|
+
- - "~>"
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: 0.4.38
|
|
22
|
+
type: :runtime
|
|
23
|
+
prerelease: false
|
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
+
requirements:
|
|
26
|
+
- - "~>"
|
|
27
|
+
- !ruby/object:Gem::Version
|
|
28
|
+
version: 0.4.38
|
|
29
|
+
- !ruby/object:Gem::Dependency
|
|
30
|
+
name: us_core_test_kit
|
|
31
|
+
requirement: !ruby/object:Gem::Requirement
|
|
32
|
+
requirements:
|
|
33
|
+
- - "~>"
|
|
34
|
+
- !ruby/object:Gem::Version
|
|
35
|
+
version: 0.6.5
|
|
36
|
+
type: :runtime
|
|
37
|
+
prerelease: false
|
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
39
|
+
requirements:
|
|
40
|
+
- - "~>"
|
|
41
|
+
- !ruby/object:Gem::Version
|
|
42
|
+
version: 0.6.5
|
|
43
|
+
- !ruby/object:Gem::Dependency
|
|
44
|
+
name: bulk_data_test_kit
|
|
45
|
+
requirement: !ruby/object:Gem::Requirement
|
|
46
|
+
requirements:
|
|
47
|
+
- - "~>"
|
|
48
|
+
- !ruby/object:Gem::Version
|
|
49
|
+
version: '0.10'
|
|
50
|
+
type: :runtime
|
|
51
|
+
prerelease: false
|
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
53
|
+
requirements:
|
|
54
|
+
- - "~>"
|
|
55
|
+
- !ruby/object:Gem::Version
|
|
56
|
+
version: '0.10'
|
|
57
|
+
- !ruby/object:Gem::Dependency
|
|
58
|
+
name: database_cleaner-sequel
|
|
59
|
+
requirement: !ruby/object:Gem::Requirement
|
|
60
|
+
requirements:
|
|
61
|
+
- - "~>"
|
|
62
|
+
- !ruby/object:Gem::Version
|
|
63
|
+
version: '1.8'
|
|
64
|
+
type: :development
|
|
65
|
+
prerelease: false
|
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
67
|
+
requirements:
|
|
68
|
+
- - "~>"
|
|
69
|
+
- !ruby/object:Gem::Version
|
|
70
|
+
version: '1.8'
|
|
71
|
+
- !ruby/object:Gem::Dependency
|
|
72
|
+
name: factory_bot
|
|
73
|
+
requirement: !ruby/object:Gem::Requirement
|
|
74
|
+
requirements:
|
|
75
|
+
- - "~>"
|
|
76
|
+
- !ruby/object:Gem::Version
|
|
77
|
+
version: '6.1'
|
|
78
|
+
type: :development
|
|
79
|
+
prerelease: false
|
|
80
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
81
|
+
requirements:
|
|
82
|
+
- - "~>"
|
|
83
|
+
- !ruby/object:Gem::Version
|
|
84
|
+
version: '6.1'
|
|
85
|
+
- !ruby/object:Gem::Dependency
|
|
86
|
+
name: rspec
|
|
87
|
+
requirement: !ruby/object:Gem::Requirement
|
|
88
|
+
requirements:
|
|
89
|
+
- - "~>"
|
|
90
|
+
- !ruby/object:Gem::Version
|
|
91
|
+
version: '3.10'
|
|
92
|
+
type: :development
|
|
93
|
+
prerelease: false
|
|
94
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
95
|
+
requirements:
|
|
96
|
+
- - "~>"
|
|
97
|
+
- !ruby/object:Gem::Version
|
|
98
|
+
version: '3.10'
|
|
99
|
+
- !ruby/object:Gem::Dependency
|
|
100
|
+
name: webmock
|
|
101
|
+
requirement: !ruby/object:Gem::Requirement
|
|
102
|
+
requirements:
|
|
103
|
+
- - "~>"
|
|
104
|
+
- !ruby/object:Gem::Version
|
|
105
|
+
version: '3.11'
|
|
106
|
+
type: :development
|
|
107
|
+
prerelease: false
|
|
108
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
109
|
+
requirements:
|
|
110
|
+
- - "~>"
|
|
111
|
+
- !ruby/object:Gem::Version
|
|
112
|
+
version: '3.11'
|
|
113
|
+
description: Test Kit for the Da Vinci Payer Data Exchange (PDex) FHIR Implementation
|
|
114
|
+
Guide
|
|
115
|
+
email:
|
|
116
|
+
- inferno@groups.mitre.org
|
|
117
|
+
executables: []
|
|
118
|
+
extensions: []
|
|
119
|
+
extra_rdoc_files: []
|
|
120
|
+
files:
|
|
121
|
+
- LICENSE
|
|
122
|
+
- lib/davinci_pdex_test_kit.rb
|
|
123
|
+
- lib/davinci_pdex_test_kit/docs/payer_client_suite_description_v200.md
|
|
124
|
+
- lib/davinci_pdex_test_kit/docs/payer_server_suite_description_v200.md
|
|
125
|
+
- lib/davinci_pdex_test_kit/ext/inferno_core/record_response_route.rb
|
|
126
|
+
- lib/davinci_pdex_test_kit/ext/inferno_core/request.rb
|
|
127
|
+
- lib/davinci_pdex_test_kit/ext/inferno_core/runnable.rb
|
|
128
|
+
- lib/davinci_pdex_test_kit/fhir_resource_navigation.rb
|
|
129
|
+
- lib/davinci_pdex_test_kit/group_metadata.rb
|
|
130
|
+
- lib/davinci_pdex_test_kit/metadata/mock_capability_statement.json
|
|
131
|
+
- lib/davinci_pdex_test_kit/metadata/mock_operation_outcome_resource.json
|
|
132
|
+
- lib/davinci_pdex_test_kit/mock_server.rb
|
|
133
|
+
- lib/davinci_pdex_test_kit/must_support_test.rb
|
|
134
|
+
- lib/davinci_pdex_test_kit/pdex_payer_client/client_member_match_tests/client_member_match_submit_test.rb
|
|
135
|
+
- lib/davinci_pdex_test_kit/pdex_payer_client/client_member_match_tests/client_member_match_validation_test.rb
|
|
136
|
+
- lib/davinci_pdex_test_kit/pdex_payer_client/client_must_support_tests/client_member_match_must_support_submit_test.rb
|
|
137
|
+
- lib/davinci_pdex_test_kit/pdex_payer_client/client_must_support_tests/client_member_match_must_support_validation_test.rb
|
|
138
|
+
- lib/davinci_pdex_test_kit/pdex_payer_client/client_validation_test.rb
|
|
139
|
+
- lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/allergyintolerance_clinical_data_request_test.rb
|
|
140
|
+
- lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/careplan_clinical_data_request_test.rb
|
|
141
|
+
- lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/careteam_clinical_data_request_test.rb
|
|
142
|
+
- lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/condition_clinical_data_request_test.rb
|
|
143
|
+
- lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/device_clinical_data_request_test.rb
|
|
144
|
+
- lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/diagnosticreport_clinical_data_request_test.rb
|
|
145
|
+
- lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/documentreference_clinical_data_request_test.rb
|
|
146
|
+
- lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/encounter_clinical_data_request_test.rb
|
|
147
|
+
- lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/explanationofbenefit_clinical_data_request_test.rb
|
|
148
|
+
- lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/goal_clinical_data_request_test.rb
|
|
149
|
+
- lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/immunization_clinical_data_request_test.rb
|
|
150
|
+
- lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/initial_scratch_storing.rb
|
|
151
|
+
- lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/initial_wait_test.rb
|
|
152
|
+
- lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/location_clinical_data_request_test.rb
|
|
153
|
+
- lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/medicationdispense_clinical_data_request_test.rb
|
|
154
|
+
- lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/medicationrequest_clinical_data_request_test.rb
|
|
155
|
+
- lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/observation_clinical_data_request_test.rb
|
|
156
|
+
- lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/organization_clinical_data_request_test.rb
|
|
157
|
+
- lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/patient_clinical_data_request_test.rb
|
|
158
|
+
- lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/practitioner_clinical_data_request_test.rb
|
|
159
|
+
- lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/practitionerrole_clinical_data_request_test.rb
|
|
160
|
+
- lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/procedure_clinical_data_request_test.rb
|
|
161
|
+
- lib/davinci_pdex_test_kit/pdex_payer_client/collection.rb
|
|
162
|
+
- lib/davinci_pdex_test_kit/pdex_payer_client_suite.rb
|
|
163
|
+
- lib/davinci_pdex_test_kit/pdex_payer_server/abstract_member_match_request_conformance_test.rb
|
|
164
|
+
- lib/davinci_pdex_test_kit/pdex_payer_server/abstract_member_match_request_local_references_test.rb
|
|
165
|
+
- lib/davinci_pdex_test_kit/pdex_payer_server/coverage_to_link_has_minimal_data_test.rb
|
|
166
|
+
- lib/davinci_pdex_test_kit/pdex_payer_server/coverage_to_link_must_support_test.rb
|
|
167
|
+
- lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_id_search_test.rb
|
|
168
|
+
- lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_identifier_search_test.rb
|
|
169
|
+
- lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_must_support_test.rb
|
|
170
|
+
- lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_last_updated_search_test.rb
|
|
171
|
+
- lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_service_date_search_test.rb
|
|
172
|
+
- lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_type_search_test.rb
|
|
173
|
+
- lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_use_search_test.rb
|
|
174
|
+
- lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_provenance_revinclude_search_test.rb
|
|
175
|
+
- lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_read_test.rb
|
|
176
|
+
- lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_reference_resolution_test.rb
|
|
177
|
+
- lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_validation_test.rb
|
|
178
|
+
- lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit_group.rb
|
|
179
|
+
- lib/davinci_pdex_test_kit/pdex_payer_server/export_patient_group.rb
|
|
180
|
+
- lib/davinci_pdex_test_kit/pdex_payer_server/export_validation_group.rb
|
|
181
|
+
- lib/davinci_pdex_test_kit/pdex_payer_server/multiple_member_matches_group.rb
|
|
182
|
+
- lib/davinci_pdex_test_kit/pdex_payer_server/no_member_matches_group.rb
|
|
183
|
+
- lib/davinci_pdex_test_kit/pdex_payer_server/workflow_clinical_data.rb
|
|
184
|
+
- lib/davinci_pdex_test_kit/pdex_payer_server/workflow_everything.rb
|
|
185
|
+
- lib/davinci_pdex_test_kit/pdex_payer_server/workflow_export.rb
|
|
186
|
+
- lib/davinci_pdex_test_kit/pdex_payer_server/workflow_member_match.rb
|
|
187
|
+
- lib/davinci_pdex_test_kit/pdex_payer_server_suite.rb
|
|
188
|
+
- lib/davinci_pdex_test_kit/pdex_provider_client_suite.rb
|
|
189
|
+
- lib/davinci_pdex_test_kit/tags.rb
|
|
190
|
+
- lib/davinci_pdex_test_kit/urls.rb
|
|
191
|
+
- lib/davinci_pdex_test_kit/user_input_response.rb
|
|
192
|
+
- lib/davinci_pdex_test_kit/version.rb
|
|
193
|
+
homepage: https://github.com/inferno-framework/davinci-pdex-test-kit/
|
|
194
|
+
licenses:
|
|
195
|
+
- Apache-2.0
|
|
196
|
+
metadata:
|
|
197
|
+
homepage_uri: https://github.com/inferno-framework/davinci-pdex-test-kit/
|
|
198
|
+
source_code_uri: https://github.com/inferno-framework/davinci-pdex-test-kit/
|
|
199
|
+
post_install_message:
|
|
200
|
+
rdoc_options: []
|
|
201
|
+
require_paths:
|
|
202
|
+
- lib
|
|
203
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
204
|
+
requirements:
|
|
205
|
+
- - ">="
|
|
206
|
+
- !ruby/object:Gem::Version
|
|
207
|
+
version: 3.1.2
|
|
208
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
209
|
+
requirements:
|
|
210
|
+
- - ">="
|
|
211
|
+
- !ruby/object:Gem::Version
|
|
212
|
+
version: '0'
|
|
213
|
+
requirements: []
|
|
214
|
+
rubygems_version: 3.3.7
|
|
215
|
+
signing_key:
|
|
216
|
+
specification_version: 4
|
|
217
|
+
summary: Da Vinci PDex Test Kit
|
|
218
|
+
test_files: []
|