davinci_dtr_test_kit 0.9.0 → 0.10.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/lib/davinci_dtr_test_kit/docs/dtr_smart_app_suite_description_v201.md +1 -1
- data/lib/davinci_dtr_test_kit/dtr_full_ehr_suite.rb +26 -3
- data/lib/davinci_dtr_test_kit/dtr_light_ehr_suite.rb +26 -3
- data/lib/davinci_dtr_test_kit/dtr_payer_server_suite.rb +27 -3
- data/lib/davinci_dtr_test_kit/dtr_smart_app_suite.rb +26 -3
- data/lib/davinci_dtr_test_kit/mock_payer.rb +1 -1
- data/lib/davinci_dtr_test_kit/payer_server_groups/payer_server_static_group.rb +4 -2
- data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_libraries_test.rb +2 -2
- data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_questionnaire_expressions_test.rb +3 -3
- data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_questionnaire_extensions_test.rb +2 -2
- data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_request_test.rb +1 -0
- data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_request_validation_test.rb +5 -3
- data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_response_validation_test.rb +15 -11
- data/lib/davinci_dtr_test_kit/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 940914e499d108663302b9df9fac473315dff874b8e6d1f7afa354a0fb02b412
|
|
4
|
+
data.tar.gz: 878e70bfea50b8458ad08cbe7ad4834ae05c1c34c21a883dd1cdce883d1c3500
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4b6888ef1ce9334ced832a2816c614ae4fd846c376181fcb7ff698e4069afe197db2f7305ff0100de94518ef22cd6d043ddd6516e965839e4acc7d836b9d98e2
|
|
7
|
+
data.tar.gz: 5a4003c46adfd4f682979ef22bdf7d97dbff6c7be12416e744851eada2ece766f4dbceaa77a01468d7a5f2a4567f65e1d5885dcabfca1d42eddbc66ef575dafe
|
|
@@ -85,7 +85,7 @@ Note: authentication options for these tests have not been finalized and are sub
|
|
|
85
85
|
### Postman-based Demo
|
|
86
86
|
|
|
87
87
|
If you do not have a DTR SMART app but would like to try the tests out, you can use
|
|
88
|
-
[this Postman collection](https://github.com/inferno-framework/davinci-dtr-test-kit/blob/main/config/DTR%
|
|
88
|
+
[this Postman collection](https://github.com/inferno-framework/davinci-dtr-test-kit/blob/main/config/DTR%20SMART%20App%20Tests%20Postman%20Demo.postman_collection.json)
|
|
89
89
|
to make requests against Inferno. This does not include the capability to render the complete the
|
|
90
90
|
questionnaires, but does have samples of correctly and incorrectly completed QuestionnaireResponses.
|
|
91
91
|
The following is a list of tests with the Postman requests that can be used with them:
|
|
@@ -25,9 +25,32 @@ module DaVinciDTRTestKit
|
|
|
25
25
|
|
|
26
26
|
version VERSION
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
links [
|
|
29
|
+
{
|
|
30
|
+
label: 'Report Issue',
|
|
31
|
+
url: 'https://github.com/inferno-framework/davinci-dtr-test-kit/issues'
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
label: 'Open Source',
|
|
35
|
+
url: 'https://github.com/inferno-framework/davinci-dtr-test-kit'
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
label: 'Download',
|
|
39
|
+
url: 'https://github.com/inferno-framework/davinci-dtr-test-kit/releases'
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
label: 'Implementation Guide',
|
|
43
|
+
url: 'https://hl7.org/fhir/us/davinci-dtr/STU2/'
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
|
|
47
|
+
# Hl7 Validator Wrapper:
|
|
48
|
+
fhir_resource_validator do
|
|
49
|
+
igs 'hl7.fhir.us.davinci-dtr#2.0.1'
|
|
50
|
+
|
|
51
|
+
exclude_message do |message|
|
|
52
|
+
message.message.match?(/\A\S+: \S+: URL value '.*' does not resolve/)
|
|
53
|
+
end
|
|
31
54
|
end
|
|
32
55
|
|
|
33
56
|
allow_cors QUESTIONNAIRE_PACKAGE_PATH
|
|
@@ -16,6 +16,25 @@ module DaVinciDTRTestKit
|
|
|
16
16
|
|
|
17
17
|
version VERSION
|
|
18
18
|
|
|
19
|
+
links [
|
|
20
|
+
{
|
|
21
|
+
label: 'Report Issue',
|
|
22
|
+
url: 'https://github.com/inferno-framework/davinci-dtr-test-kit/issues'
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
label: 'Open Source',
|
|
26
|
+
url: 'https://github.com/inferno-framework/davinci-dtr-test-kit'
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
label: 'Download',
|
|
30
|
+
url: 'https://github.com/inferno-framework/davinci-dtr-test-kit/releases'
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
label: 'Implementation Guide',
|
|
34
|
+
url: 'https://hl7.org/fhir/us/davinci-dtr/STU2/'
|
|
35
|
+
}
|
|
36
|
+
]
|
|
37
|
+
|
|
19
38
|
# These inputs will be available to all tests in this suite
|
|
20
39
|
input :url,
|
|
21
40
|
title: 'FHIR Server Base Url'
|
|
@@ -31,9 +50,13 @@ module DaVinciDTRTestKit
|
|
|
31
50
|
oauth_credentials :credentials
|
|
32
51
|
end
|
|
33
52
|
|
|
34
|
-
#
|
|
35
|
-
|
|
36
|
-
|
|
53
|
+
# Hl7 Validator Wrapper:
|
|
54
|
+
fhir_resource_validator do
|
|
55
|
+
igs 'hl7.fhir.us.davinci-dtr#2.0.1'
|
|
56
|
+
|
|
57
|
+
exclude_message do |message|
|
|
58
|
+
message.message.match?(/\A\S+: \S+: URL value '.*' does not resolve/)
|
|
59
|
+
end
|
|
37
60
|
end
|
|
38
61
|
end
|
|
39
62
|
end
|
|
@@ -16,6 +16,26 @@ module DaVinciDTRTestKit
|
|
|
16
16
|
description File.read(File.join(__dir__, 'docs', 'dtr_payer_server_suite_description_v201.md'))
|
|
17
17
|
|
|
18
18
|
version VERSION
|
|
19
|
+
|
|
20
|
+
links [
|
|
21
|
+
{
|
|
22
|
+
label: 'Report Issue',
|
|
23
|
+
url: 'https://github.com/inferno-framework/davinci-dtr-test-kit/issues'
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
label: 'Open Source',
|
|
27
|
+
url: 'https://github.com/inferno-framework/davinci-dtr-test-kit'
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
label: 'Download',
|
|
31
|
+
url: 'https://github.com/inferno-framework/davinci-dtr-test-kit/releases'
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
label: 'Implementation Guide',
|
|
35
|
+
url: 'https://hl7.org/fhir/us/davinci-dtr/STU2/'
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
|
|
19
39
|
# These inputs will be available to all tests in this suite
|
|
20
40
|
|
|
21
41
|
input :retrieval_method,
|
|
@@ -73,9 +93,13 @@ module DaVinciDTRTestKit
|
|
|
73
93
|
oauth_credentials :credentials
|
|
74
94
|
end
|
|
75
95
|
|
|
76
|
-
#
|
|
77
|
-
|
|
78
|
-
|
|
96
|
+
# Hl7 Validator Wrapper:
|
|
97
|
+
fhir_resource_validator do
|
|
98
|
+
igs 'hl7.fhir.us.davinci-dtr#2.0.1'
|
|
99
|
+
|
|
100
|
+
exclude_message do |message|
|
|
101
|
+
message.message.match?(/\A\S+: \S+: URL value '.*' does not resolve/)
|
|
102
|
+
end
|
|
79
103
|
end
|
|
80
104
|
|
|
81
105
|
allow_cors QUESTIONNAIRE_PACKAGE_PATH, NEXT_PATH
|
|
@@ -20,9 +20,32 @@ module DaVinciDTRTestKit
|
|
|
20
20
|
|
|
21
21
|
version VERSION
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
links [
|
|
24
|
+
{
|
|
25
|
+
label: 'Report Issue',
|
|
26
|
+
url: 'https://github.com/inferno-framework/davinci-dtr-test-kit/issues'
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
label: 'Open Source',
|
|
30
|
+
url: 'https://github.com/inferno-framework/davinci-dtr-test-kit'
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
label: 'Download',
|
|
34
|
+
url: 'https://github.com/inferno-framework/davinci-dtr-test-kit/releases'
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
label: 'Implementation Guide',
|
|
38
|
+
url: 'https://hl7.org/fhir/us/davinci-dtr/STU2/'
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
|
|
42
|
+
# Hl7 Validator Wrapper:
|
|
43
|
+
fhir_resource_validator do
|
|
44
|
+
igs 'hl7.fhir.us.davinci-dtr#2.0.1'
|
|
45
|
+
|
|
46
|
+
exclude_message do |message|
|
|
47
|
+
message.message.match?(/\A\S+: \S+: URL value '.*' does not resolve/)
|
|
48
|
+
end
|
|
26
49
|
end
|
|
27
50
|
|
|
28
51
|
allow_cors QUESTIONNAIRE_PACKAGE_PATH, QUESTIONNAIRE_RESPONSE_PATH, FHIR_RESOURCE_PATH, FHIR_SEARCH_PATH
|
|
@@ -25,7 +25,7 @@ module DaVinciDTRTestKit
|
|
|
25
25
|
url_input = JSON.parse(test_result.input_json).find { |input| input['name'] == 'url' }
|
|
26
26
|
client = FHIR::Client.new(url_input['value'])
|
|
27
27
|
client.default_json
|
|
28
|
-
endpoint = endpoint_input['value'].nil? ? '/Questionnaire/$questionnaire-package' : endpoint_input['value']
|
|
28
|
+
endpoint = endpoint_input.to_h['value'].nil? ? '/Questionnaire/$questionnaire-package' : endpoint_input['value']
|
|
29
29
|
payer_response = client.send(:post, endpoint, JSON.parse(request.request_body),
|
|
30
30
|
{ 'Content-Type' => 'application/json' })
|
|
31
31
|
|
|
@@ -37,11 +37,13 @@ module DaVinciDTRTestKit
|
|
|
37
37
|
description: 'Manual Flow',
|
|
38
38
|
type: 'textarea'
|
|
39
39
|
|
|
40
|
+
input :access_token, :retrieval_method
|
|
41
|
+
|
|
40
42
|
input_order :retrieval_method,
|
|
41
|
-
:
|
|
43
|
+
:access_token,
|
|
42
44
|
:initial_static_questionnaire_request
|
|
43
45
|
|
|
44
|
-
test from: :dtr_v201_payer_static_questionnaire_request_test, receives_request: :
|
|
46
|
+
test from: :dtr_v201_payer_static_questionnaire_request_test, receives_request: :static_questionnaire_request
|
|
45
47
|
test from: :dtr_v201_payer_static_form_request_validation_test
|
|
46
48
|
test from: :dtr_v201_payer_static_form_response_test
|
|
47
49
|
test from: :dtr_v201_payer_static_form_libraries_test
|
|
@@ -12,8 +12,8 @@ module DaVinciDTRTestKit
|
|
|
12
12
|
|
|
13
13
|
run do
|
|
14
14
|
skip_if retrieval_method == 'Adaptive', 'Performing only adaptive flow tests - only one flow is required.'
|
|
15
|
-
skip_if scratch[:
|
|
16
|
-
check_libraries(scratch[:
|
|
15
|
+
skip_if scratch[:output_parameters].nil?, 'No questionnaire bundle returned.'
|
|
16
|
+
check_libraries(scratch[:output_parameters])
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
19
|
end
|
data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_questionnaire_expressions_test.rb
CHANGED
|
@@ -12,9 +12,9 @@ module DaVinciDTRTestKit
|
|
|
12
12
|
|
|
13
13
|
run do
|
|
14
14
|
skip_if retrieval_method == 'Adaptive', 'Performing only adaptive flow tests - only one flow is required.'
|
|
15
|
-
skip_if scratch[:
|
|
16
|
-
questionnaire_items_test(scratch[:
|
|
17
|
-
scratch[:
|
|
15
|
+
skip_if scratch[:output_parameters].nil?, 'No questionnaire bundle returned.'
|
|
16
|
+
questionnaire_items_test(scratch[:output_parameters], final_cql_test: true)
|
|
17
|
+
scratch[:output_parameters] = nil
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
20
|
end
|
data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_questionnaire_extensions_test.rb
CHANGED
|
@@ -12,8 +12,8 @@ module DaVinciDTRTestKit
|
|
|
12
12
|
|
|
13
13
|
run do
|
|
14
14
|
skip_if retrieval_method == 'Adaptive', 'Performing only adaptive flow tests - only one flow is required.'
|
|
15
|
-
skip_if scratch[:
|
|
16
|
-
questionnaire_extensions_test(scratch[:
|
|
15
|
+
skip_if scratch[:output_parameters].nil?, 'No questionnaire bundle returned.'
|
|
16
|
+
questionnaire_extensions_test(scratch[:output_parameters])
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
19
|
end
|
|
@@ -9,6 +9,7 @@ module DaVinciDTRTestKit
|
|
|
9
9
|
)
|
|
10
10
|
id :dtr_v201_payer_static_questionnaire_request_test
|
|
11
11
|
config options: { accepts_multiple_requests: false }
|
|
12
|
+
input :initial_static_questionnaire_request, :access_token, :retrieval_method, :url
|
|
12
13
|
|
|
13
14
|
run do
|
|
14
15
|
skip_if retrieval_method == 'Adaptive', 'Performing only adaptive flow tests - only one flow is required.'
|
|
@@ -18,6 +18,7 @@ module DaVinciDTRTestKit
|
|
|
18
18
|
This test may process multiple resources, labeling messages with the corresponding tested resources
|
|
19
19
|
in the order that they were received.
|
|
20
20
|
)
|
|
21
|
+
input :initial_static_questionnaire_request, :access_token, :retrieval_method
|
|
21
22
|
|
|
22
23
|
run do
|
|
23
24
|
skip_if retrieval_method == 'Adaptive', 'Performing only adaptive flow tests - only one flow is required.'
|
|
@@ -25,8 +26,8 @@ module DaVinciDTRTestKit
|
|
|
25
26
|
using_manual_entry = false
|
|
26
27
|
skip_if access_token.nil?, 'No access token provided - required for client flow.'
|
|
27
28
|
resources = load_tagged_requests(QUESTIONNAIRE_TAG)
|
|
28
|
-
skip_if resources.
|
|
29
|
-
perform_request_validation_test(
|
|
29
|
+
skip_if resources.blank?, 'No request resource received from the client.'
|
|
30
|
+
assert perform_request_validation_test(
|
|
30
31
|
resources,
|
|
31
32
|
:parameters,
|
|
32
33
|
'http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-qpackage-input-parameters',
|
|
@@ -34,9 +35,10 @@ module DaVinciDTRTestKit
|
|
|
34
35
|
using_manual_entry
|
|
35
36
|
)
|
|
36
37
|
else
|
|
38
|
+
# TODO: fix redundant logic here
|
|
37
39
|
skip_if initial_static_questionnaire_request.nil?, 'No request resource was provided - required for manual flow'
|
|
38
40
|
request = FHIR.from_contents(initial_static_questionnaire_request)
|
|
39
|
-
assert_valid_resource(resource: request, profile_url: 'http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-qpackage-input-parameters')
|
|
41
|
+
assert assert_valid_resource(resource: request, profile_url: 'http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-qpackage-input-parameters')
|
|
40
42
|
end
|
|
41
43
|
rescue Inferno::Exceptions::AssertionException => e
|
|
42
44
|
msg = e.message.to_s.strip
|
|
@@ -18,30 +18,34 @@ module DaVinciDTRTestKit
|
|
|
18
18
|
This test may process multiple resources, labeling messages with the corresponding tested resources
|
|
19
19
|
in the order that they were received.
|
|
20
20
|
)
|
|
21
|
+
input :url
|
|
21
22
|
|
|
22
23
|
run do
|
|
23
24
|
skip_if retrieval_method == 'Adaptive', 'Performing only adaptive flow tests - only one flow is required.'
|
|
24
|
-
|
|
25
25
|
if initial_static_questionnaire_request.nil?
|
|
26
26
|
skip_if access_token.nil?, 'No access token provided - required for client flow.'
|
|
27
27
|
resources = load_tagged_requests(QUESTIONNAIRE_TAG)
|
|
28
28
|
skip_if resources.nil?, 'No request resource received from the client.'
|
|
29
|
-
scratch[:
|
|
29
|
+
scratch[:output_parameters] = resources
|
|
30
30
|
perform_response_validation_test(
|
|
31
31
|
resources,
|
|
32
32
|
:parameters,
|
|
33
33
|
'http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-qpackage-output-parameters'
|
|
34
34
|
)
|
|
35
35
|
else
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
scratch[:
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
36
|
+
request = fhir_operation("#{url}/Questionnaire/$questionnaire-package",
|
|
37
|
+
body: JSON.parse(initial_static_questionnaire_request),
|
|
38
|
+
headers: { 'Content-Type': 'application/json' })
|
|
39
|
+
resource = FHIR.from_contents(request.response[:body])
|
|
40
|
+
scratch[:output_parameters] = resource
|
|
41
|
+
assert_response_status([200, 201], response: request.response)
|
|
42
|
+
assert_resource_type(:parameters, resource:)
|
|
43
|
+
perform_response_validation_test(
|
|
44
|
+
[request],
|
|
45
|
+
:parameters,
|
|
46
|
+
'http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-qpackage-output-parameters'
|
|
47
|
+
)
|
|
48
|
+
questionnaire_bundle = resource.parameter.find { |param| param.resource.resourceType == 'Bundle' }&.resource
|
|
45
49
|
assert questionnaire_bundle, 'No questionnaire bundle found in the response'
|
|
46
50
|
assert_valid_resource(resource: questionnaire_bundle, profile_url: 'http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/DTR-QPackageBundle')
|
|
47
51
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: davinci_dtr_test_kit
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.10.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Karl Naden
|
|
@@ -10,7 +10,7 @@ authors:
|
|
|
10
10
|
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date: 2024-
|
|
13
|
+
date: 2024-07-08 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: inferno_core
|