davinci_dtr_test_kit 0.10.0 → 0.11.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_dtr_test_kit/client_groups/dinner_static/dtr_dinner_questionnaire_package_request_test.rb +134 -0
- data/lib/davinci_dtr_test_kit/client_groups/dinner_static/dtr_questionnaire_response_save_test.rb +2 -2
- data/lib/davinci_dtr_test_kit/client_groups/dinner_static/dtr_smart_app_questionnaire_workflow_group.rb +3 -2
- data/lib/davinci_dtr_test_kit/client_groups/dinner_static/prepopulation_attestation_test.rb +4 -4
- data/lib/davinci_dtr_test_kit/client_groups/dinner_static/prepopulation_override_attestation_test.rb +4 -4
- data/lib/davinci_dtr_test_kit/client_groups/dinner_static/rendering_enabled_questions_attestation_test.rb +4 -4
- data/lib/davinci_dtr_test_kit/client_groups/resp_assist_device/dtr_questionnaire_package_group.rb +2 -2
- data/lib/davinci_dtr_test_kit/client_groups/resp_assist_device/dtr_questionnaire_rendering_attestation_test.rb +4 -4
- data/lib/davinci_dtr_test_kit/client_groups/resp_assist_device/dtr_questionnaire_response_save_test.rb +2 -2
- data/lib/davinci_dtr_test_kit/client_groups/resp_assist_device/dtr_resp_questionnaire_package_request_test.rb +132 -0
- data/lib/davinci_dtr_test_kit/client_groups/resp_assist_device/dtr_smart_app_questionnaire_workflow_group.rb +4 -3
- data/lib/davinci_dtr_test_kit/client_groups/shared/dtr_questionnaire_response_pre_population_test.rb +1 -0
- data/lib/davinci_dtr_test_kit/docs/dtr_payer_server_suite_description_v201.md +2 -2
- data/lib/davinci_dtr_test_kit/docs/dtr_smart_app_suite_description_v201.md +106 -42
- data/lib/davinci_dtr_test_kit/dtr_full_ehr_suite.rb +4 -3
- data/lib/davinci_dtr_test_kit/dtr_payer_server_suite.rb +6 -4
- data/lib/davinci_dtr_test_kit/dtr_questionnaire_response_validation.rb +26 -10
- data/lib/davinci_dtr_test_kit/dtr_smart_app_suite.rb +33 -11
- data/lib/davinci_dtr_test_kit/fixtures/dinner_adaptive/dinner_order_adaptive_next_question_hamburger.json +1 -1
- data/lib/davinci_dtr_test_kit/fixtures/dinner_static/questionnaire_dinner_order_static.json +2 -2
- data/lib/davinci_dtr_test_kit/fixtures/questionnaire_package.json +1 -1
- data/lib/davinci_dtr_test_kit/mock_auth_server.rb +145 -0
- data/lib/davinci_dtr_test_kit/mock_ehr.rb +37 -12
- data/lib/davinci_dtr_test_kit/mock_payer.rb +1 -20
- data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_request_validation_test.rb +1 -0
- data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_response_validation_test.rb +1 -0
- data/lib/davinci_dtr_test_kit/urls.rb +14 -3
- data/lib/davinci_dtr_test_kit/validation_test.rb +1 -0
- data/lib/davinci_dtr_test_kit/version.rb +1 -1
- metadata +19 -3
- data/lib/davinci_dtr_test_kit/client_groups/shared/dtr_questionnaire_package_request_test.rb +0 -36
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3449c737f53b2443bc81890e9788ff4aad6837c70865512e58b5a5d3809ad96e
|
4
|
+
data.tar.gz: 4b2775168992e4887e5e330178138bd918a225bf9d57f2b7425a021acc7ee7c1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e6107a0cf03478d3bdc9c9b155af0664b8d39b9a3819e563c3dcf45bc69b34d80a83b0be270022be6d75aeb95a6b2b9b85d486c00693a9ad3e4f0605e2d504ee
|
7
|
+
data.tar.gz: 69701c0a2b4a2a69ae16d5e8dd1b79fd9d27fddf0230d02dc6793be32752d965f01688d3661df72cfdddc9a208b252fda1303f516b5aa6458d33631383fc17f2
|
@@ -0,0 +1,134 @@
|
|
1
|
+
require 'base64'
|
2
|
+
require_relative '../../urls'
|
3
|
+
|
4
|
+
module DaVinciDTRTestKit
|
5
|
+
class DTRDinnerQuestionnairePackageRequestTest < Inferno::Test
|
6
|
+
include URLs
|
7
|
+
|
8
|
+
id :dtr_dinner_questionnaire_package_request
|
9
|
+
title 'Invoke the DTR Questionnaire Package operation'
|
10
|
+
description %(
|
11
|
+
Inferno will wait for a DTR questionnaire package request from the client. Upon receipt, Inferno will generate and
|
12
|
+
send a response.
|
13
|
+
)
|
14
|
+
input :smart_app_launch,
|
15
|
+
type: 'radio',
|
16
|
+
title: 'SMART App Launch',
|
17
|
+
description: 'How will the DTR SMART App launch?',
|
18
|
+
options: { list_options: [{ label: 'EHR Launch from Inferno', value: 'ehr' },
|
19
|
+
{ label: 'Standalone Launch', value: 'standalone' }] }
|
20
|
+
input :client_id
|
21
|
+
input :launch_uri,
|
22
|
+
optional: true,
|
23
|
+
description: 'Required if "Launch from Inferno" is selected'
|
24
|
+
input :smart_patient_id,
|
25
|
+
optional: true,
|
26
|
+
title: 'SMART App Launch Patient ID (Dinner Static)',
|
27
|
+
type: 'text',
|
28
|
+
description: %(
|
29
|
+
Patient instance `id` to be provided by Inferno as the `patient` as a part of the SMART App
|
30
|
+
Launch.
|
31
|
+
),
|
32
|
+
default: 'pat015'
|
33
|
+
input :smart_fhir_context,
|
34
|
+
optional: true,
|
35
|
+
title: 'SMART App Launch fhirContext (Dinner Static)',
|
36
|
+
type: 'textarea',
|
37
|
+
description: %(
|
38
|
+
References to be provided by Inferno as the `fhirContext` as a part of the SMART App
|
39
|
+
Launch. These references help determine the behavior of the app. Referenced instances
|
40
|
+
may be provided in the "EHR-available resources" input.
|
41
|
+
),
|
42
|
+
default: JSON.pretty_generate([{ reference: 'Coverage/cov015' },
|
43
|
+
{ reference: 'DeviceRequest/devreqe0470' }])
|
44
|
+
input :ehr_bundle,
|
45
|
+
optional: true,
|
46
|
+
title: 'EHR-available resources (Dinner Static)',
|
47
|
+
type: 'textarea',
|
48
|
+
description: %(
|
49
|
+
Resources available from the EHR needed to drive the dinner static workflow.
|
50
|
+
Formatted as a FHIR bundle that contains resources, each with an `id` property populated. Each
|
51
|
+
instance present will be available for retrieval from Inferno at the endpoint:
|
52
|
+
|
53
|
+
```
|
54
|
+
[fhir-base]/[resource type]/[instance id]
|
55
|
+
```
|
56
|
+
)
|
57
|
+
|
58
|
+
def example_client_jwt_payload_part
|
59
|
+
Base64.strict_encode64({ inferno_client_id: client_id }.to_json).delete('=')
|
60
|
+
end
|
61
|
+
|
62
|
+
run do
|
63
|
+
# validate relevant inputs and provide warnings if they are bad
|
64
|
+
warning do
|
65
|
+
if smart_fhir_context
|
66
|
+
assert_valid_json(smart_fhir_context,
|
67
|
+
'The **SMART App Launch fhirContext** input is not valid JSON, so it will not be included in
|
68
|
+
the access token response.')
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
warning do
|
73
|
+
if ehr_bundle
|
74
|
+
assert_valid_json(ehr_bundle,
|
75
|
+
'The **EHR-available resources** input is not valid JSON, so no tester-specified instances
|
76
|
+
will be available to access from Inferno.')
|
77
|
+
assert(FHIR.from_contents(ehr_bundle).is_a?(FHIR::Bundle),
|
78
|
+
'The **EHR-available resources** input does not contain a FHIR Bundle, so no tester-specified instances
|
79
|
+
will be available to access from Inferno.')
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
launch_prompt = if smart_app_launch == 'ehr'
|
84
|
+
%(Launch the DTR SMART App from Inferno by right clicking
|
85
|
+
[this link](#{launch_uri}?iss=#{fhir_base_url}&launch=#{launch_uri})
|
86
|
+
and selecting or "Open in new window" or "Open in new tab".)
|
87
|
+
else
|
88
|
+
%(Launch the SMART App from your EHR.)
|
89
|
+
end
|
90
|
+
inferno_prompt_cont = %(As the DTR app steps through the launch steps, Inferno will wait and respond to the app's
|
91
|
+
requests for SMART configuration, authorization and access token.)
|
92
|
+
|
93
|
+
wait(
|
94
|
+
identifier: client_id,
|
95
|
+
message: %(
|
96
|
+
### SMART App Launch
|
97
|
+
|
98
|
+
#{launch_prompt}
|
99
|
+
|
100
|
+
#{inferno_prompt_cont if smart_app_launch == 'ehr'}
|
101
|
+
|
102
|
+
Then, Inferno will expect the SMART App to invoke the DTR Questionnaire Package operation by sending a POST
|
103
|
+
request to
|
104
|
+
|
105
|
+
`#{questionnaire_package_url}`
|
106
|
+
|
107
|
+
A questionnaire package generated by Inferno will be returned.
|
108
|
+
|
109
|
+
### Pre-population
|
110
|
+
|
111
|
+
Inferno will then wait for the client to complete Questionnaire pre-population. The client should make FHIR
|
112
|
+
GET requests using service base path:
|
113
|
+
|
114
|
+
`#{fhir_base_url}`
|
115
|
+
|
116
|
+
### Request Identification
|
117
|
+
|
118
|
+
In order to identify requests for this session, Inferno will look for
|
119
|
+
an `Authorization` header with value:
|
120
|
+
|
121
|
+
```
|
122
|
+
Bearer eyJhbGcmOiJub25lIn0.#{example_client_jwt_payload_part}.
|
123
|
+
```
|
124
|
+
|
125
|
+
### Continuing the Tests
|
126
|
+
|
127
|
+
When the DTR application has finished loading the Questionnaire,
|
128
|
+
including any clinical data requests to support pre-population,
|
129
|
+
[Click here](#{resume_pass_url}?client_id=#{client_id}) to continue.
|
130
|
+
)
|
131
|
+
)
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
data/lib/davinci_dtr_test_kit/client_groups/dinner_static/dtr_questionnaire_response_save_test.rb
CHANGED
@@ -9,11 +9,11 @@ module DaVinciDTRTestKit
|
|
9
9
|
description %(
|
10
10
|
Inferno, acting as the EHR, will wait for a request to save the QuestionnaireResponse from the client.
|
11
11
|
)
|
12
|
-
input :
|
12
|
+
input :client_id
|
13
13
|
|
14
14
|
run do
|
15
15
|
wait(
|
16
|
-
identifier:
|
16
|
+
identifier: client_id,
|
17
17
|
message: %(
|
18
18
|
Complete the questionnaire, leaving the following items unmodified, because a subsequent test will expect
|
19
19
|
their pre-populated values:
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require_relative '
|
1
|
+
require_relative 'dtr_dinner_questionnaire_package_request_test'
|
2
2
|
require_relative '../shared/dtr_questionnaire_package_request_validation_test'
|
3
3
|
require_relative 'prepopulation_attestation_test'
|
4
4
|
require_relative 'prepopulation_override_attestation_test'
|
@@ -17,6 +17,7 @@ module DaVinciDTRTestKit
|
|
17
17
|
demonstrate their ability to:
|
18
18
|
|
19
19
|
1. Fetch the static questionnaire package
|
20
|
+
([DinnerOrderStatic](https://github.com/inferno-framework/davinci-dtr-test-kit/blob/main/lib/davinci_dtr_test_kit/fixtures/dinner_static/questionnaire_dinner_order_static.json))
|
20
21
|
2. Render and pre-populate the questionnaire appropriately, including:
|
21
22
|
- fetch additional data needed for pre-population
|
22
23
|
- pre-populate data as directed by the questionnaire
|
@@ -36,7 +37,7 @@ module DaVinciDTRTestKit
|
|
36
37
|
run_as_group
|
37
38
|
|
38
39
|
# Test 1: wait for the $questionnaire-package request
|
39
|
-
test from: :
|
40
|
+
test from: :dtr_dinner_questionnaire_package_request
|
40
41
|
# Test 2: validate the $questionnaire-package body
|
41
42
|
test from: :dtr_questionnaire_package_request_validation
|
42
43
|
end
|
@@ -9,19 +9,19 @@ module DaVinciDTRTestKit
|
|
9
9
|
description %(
|
10
10
|
Validate that pre-population of patient name information occurs as expected.
|
11
11
|
)
|
12
|
-
input :
|
12
|
+
input :client_id
|
13
13
|
|
14
14
|
run do
|
15
15
|
wait(
|
16
|
-
identifier:
|
16
|
+
identifier: client_id,
|
17
17
|
message: %(
|
18
18
|
I attest that the client application pre-populates the following questions with the respective values:
|
19
19
|
- Last Name: Oster
|
20
20
|
- First Name: William
|
21
21
|
|
22
|
-
[Click here](#{resume_pass_url}?
|
22
|
+
[Click here](#{resume_pass_url}?client_id=#{client_id}) if the above statement is **true**.
|
23
23
|
|
24
|
-
[Click here](#{resume_fail_url}?
|
24
|
+
[Click here](#{resume_fail_url}?client_id=#{client_id}) if the above statement is **false**.
|
25
25
|
)
|
26
26
|
)
|
27
27
|
end
|
data/lib/davinci_dtr_test_kit/client_groups/dinner_static/prepopulation_override_attestation_test.rb
CHANGED
@@ -9,20 +9,20 @@ module DaVinciDTRTestKit
|
|
9
9
|
description %(
|
10
10
|
Validate that the user can edit a pre-populated item and replace it with another value.
|
11
11
|
)
|
12
|
-
input :
|
12
|
+
input :client_id
|
13
13
|
|
14
14
|
run do
|
15
15
|
wait(
|
16
|
-
identifier:
|
16
|
+
identifier: client_id,
|
17
17
|
message: %(
|
18
18
|
I attest that
|
19
19
|
|
20
20
|
1. The client pre-populated an answer for question 'Location'.
|
21
21
|
2. I have changed the answer to a different value.
|
22
22
|
|
23
|
-
[Click here](#{resume_pass_url}?
|
23
|
+
[Click here](#{resume_pass_url}?client_id=#{client_id}) if the above statement is **true**.
|
24
24
|
|
25
|
-
[Click here](#{resume_fail_url}?
|
25
|
+
[Click here](#{resume_fail_url}?client_id=#{client_id}) if the above statement is **false**.
|
26
26
|
)
|
27
27
|
)
|
28
28
|
end
|
@@ -10,19 +10,19 @@ module DaVinciDTRTestKit
|
|
10
10
|
Validate that the rendering of the questionnaire includes only the "What would you like on..."
|
11
11
|
question appropriate for the dinner selection, if made.
|
12
12
|
)
|
13
|
-
input :
|
13
|
+
input :client_id
|
14
14
|
|
15
15
|
run do
|
16
16
|
wait(
|
17
|
-
identifier:
|
17
|
+
identifier: client_id,
|
18
18
|
message: %(
|
19
19
|
I attest that the client application does not display any "What would you like on..."
|
20
20
|
questions until I have selected a dinner choice and then only displays the
|
21
21
|
"What would you like on..." question relevant for the dinner request:
|
22
22
|
|
23
|
-
[Click here](#{resume_pass_url}?
|
23
|
+
[Click here](#{resume_pass_url}?client_id=#{client_id}) if the above statement is **true**.
|
24
24
|
|
25
|
-
[Click here](#{resume_fail_url}?
|
25
|
+
[Click here](#{resume_fail_url}?client_id=#{client_id}) if the above statement is **false**.
|
26
26
|
)
|
27
27
|
)
|
28
28
|
end
|
data/lib/davinci_dtr_test_kit/client_groups/resp_assist_device/dtr_questionnaire_package_group.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require_relative '
|
1
|
+
require_relative 'dtr_resp_questionnaire_package_request_test'
|
2
2
|
require_relative '../shared/dtr_questionnaire_package_request_validation_test'
|
3
3
|
|
4
4
|
module DaVinciDTRTestKit
|
@@ -10,7 +10,7 @@ module DaVinciDTRTestKit
|
|
10
10
|
)
|
11
11
|
run_as_group
|
12
12
|
|
13
|
-
test from: :
|
13
|
+
test from: :dtr_resp_questionnaire_package_request
|
14
14
|
test from: :dtr_questionnaire_package_request_validation
|
15
15
|
end
|
16
16
|
end
|
@@ -10,21 +10,21 @@ module DaVinciDTRTestKit
|
|
10
10
|
Thist test provides the tester an opportunity to observe their client application following the receipt of the
|
11
11
|
questionnaire pacakage and attest that the application renders the questionnaire.
|
12
12
|
)
|
13
|
-
input :
|
13
|
+
input :client_id
|
14
14
|
|
15
15
|
run do
|
16
16
|
load_tagged_requests QUESTIONNAIRE_PACKAGE_TAG
|
17
17
|
skip_if request.blank?, 'A Questionnaire Package request must be made prior to running this test'
|
18
18
|
|
19
19
|
wait(
|
20
|
-
identifier:
|
20
|
+
identifier: client_id,
|
21
21
|
message: %(
|
22
22
|
I attest that the client application displays the questionnaire and respects the following rendering style:
|
23
23
|
- The "Signature" field label is rendered with green text
|
24
24
|
|
25
|
-
[Click here](#{resume_pass_url}?
|
25
|
+
[Click here](#{resume_pass_url}?client_id=#{client_id}) if the above statement is **true**.
|
26
26
|
|
27
|
-
[Click here](#{resume_fail_url}?
|
27
|
+
[Click here](#{resume_fail_url}?client_id=#{client_id}) if the above statement is **false**.
|
28
28
|
)
|
29
29
|
)
|
30
30
|
end
|
@@ -9,11 +9,11 @@ module DaVinciDTRTestKit
|
|
9
9
|
description %(
|
10
10
|
Inferno, acting as the EHR, will wait for a request to save the QuestionnaireResponse from the client.
|
11
11
|
)
|
12
|
-
input :
|
12
|
+
input :client_id
|
13
13
|
|
14
14
|
run do
|
15
15
|
wait(
|
16
|
-
identifier:
|
16
|
+
identifier: client_id,
|
17
17
|
message: %(
|
18
18
|
Complete the questionnaire, leaving the following items unmodified, because a subsequent test will expect
|
19
19
|
their pre-populated values:
|
@@ -0,0 +1,132 @@
|
|
1
|
+
require_relative '../../urls'
|
2
|
+
|
3
|
+
module DaVinciDTRTestKit
|
4
|
+
class DTRRespQuestionnairePackageRequestTest < Inferno::Test
|
5
|
+
include URLs
|
6
|
+
|
7
|
+
id :dtr_resp_questionnaire_package_request
|
8
|
+
title 'Invoke the DTR Questionnaire Package operation'
|
9
|
+
description %(
|
10
|
+
Inferno will wait for a DTR questionnaire package request from the client. Upon receipt, Inferno will generate and
|
11
|
+
send a response.
|
12
|
+
)
|
13
|
+
input :smart_app_launch,
|
14
|
+
type: 'radio',
|
15
|
+
title: 'SMART App Launch',
|
16
|
+
description: 'How will the DTR SMART App launch?',
|
17
|
+
options: { list_options: [{ label: 'EHR Launch from Inferno', value: 'ehr' },
|
18
|
+
{ label: 'Standalone Launch', value: 'standalone' }] }
|
19
|
+
input :client_id
|
20
|
+
input :launch_uri,
|
21
|
+
optional: true,
|
22
|
+
description: 'Required if "Launch from Inferno" is selected'
|
23
|
+
input :smart_patient_id,
|
24
|
+
optional: true,
|
25
|
+
title: 'SMART App Launch Patient ID (Respiratory Assist Device)',
|
26
|
+
type: 'text',
|
27
|
+
description: %(
|
28
|
+
Patient instance `id` to be provided by Inferno as the `patient` as a part of the SMART App
|
29
|
+
Launch.
|
30
|
+
),
|
31
|
+
default: 'pat015'
|
32
|
+
input :smart_fhir_context,
|
33
|
+
optional: true,
|
34
|
+
title: 'SMART App Launch fhirContext (Respiratory Assist Device)',
|
35
|
+
type: 'textarea',
|
36
|
+
description: %(
|
37
|
+
References to be provided by Inferno as the `fhirContext` as a part of the SMART App
|
38
|
+
Launch. These references help determine the behavior of the app. Referenced instances
|
39
|
+
may be provided in the "EHR-available resources" input.
|
40
|
+
),
|
41
|
+
default: JSON.pretty_generate([{ reference: 'Coverage/cov015' },
|
42
|
+
{ reference: 'DeviceRequest/devreqe0470' }])
|
43
|
+
input :ehr_bundle,
|
44
|
+
optional: true,
|
45
|
+
title: 'EHR-available resources (Respiratory Assist Device)',
|
46
|
+
type: 'textarea',
|
47
|
+
description: %(
|
48
|
+
Resources available from the EHR needed to drive the respiratory assist device workflow.
|
49
|
+
Formatted as a FHIR bundle that contains resources, each with an `id` property populated. Each
|
50
|
+
instance present will be available for retrieval from Inferno at the endpoint
|
51
|
+
|
52
|
+
```
|
53
|
+
[fhir-base]/[resource type]/[instance id]
|
54
|
+
```
|
55
|
+
)
|
56
|
+
|
57
|
+
def example_client_jwt_payload_part
|
58
|
+
Base64.strict_encode64({ inferno_client_id: client_id }.to_json).delete('=')
|
59
|
+
end
|
60
|
+
|
61
|
+
run do
|
62
|
+
# validate relevant inputs and provide warnings if they are bad
|
63
|
+
warning do
|
64
|
+
if smart_fhir_context
|
65
|
+
assert_valid_json(smart_fhir_context,
|
66
|
+
'The **SMART App Launch fhirContext** input is not valid JSON, so it will not be included in
|
67
|
+
the access token response.')
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
warning do
|
72
|
+
if ehr_bundle
|
73
|
+
assert_valid_json(ehr_bundle,
|
74
|
+
'The **EHR-available resources** input is not valid JSON, so no tester-specified instances
|
75
|
+
will be available to access from Inferno.')
|
76
|
+
assert(FHIR.from_contents(ehr_bundle).is_a?(FHIR::Bundle),
|
77
|
+
'The **EHR-available resources** input does not contain a FHIR Bundle, so no tester-specified instances
|
78
|
+
will be available to access from Inferno.')
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
launch_prompt = if smart_app_launch == 'ehr'
|
83
|
+
%(Launch the DTR SMART App from Inferno by right clicking
|
84
|
+
[this link](#{launch_uri}?iss=#{fhir_base_url}&launch=#{launch_uri})
|
85
|
+
and selecting or "Open in new window" or "Open in new tab".)
|
86
|
+
else
|
87
|
+
%(Launch the SMART App from your EHR.)
|
88
|
+
end
|
89
|
+
inferno_prompt_cont = %(As the DTR app steps through the launch steps, Inferno will wait and respond to the app's
|
90
|
+
requests for SMART configuration, authorization and access token.)
|
91
|
+
wait(
|
92
|
+
identifier: client_id,
|
93
|
+
message: %(
|
94
|
+
### SMART App Launch
|
95
|
+
|
96
|
+
#{launch_prompt}
|
97
|
+
|
98
|
+
#{inferno_prompt_cont if smart_app_launch == 'ehr'}
|
99
|
+
|
100
|
+
Then, Inferno will expect the SMART App to invoke the DTR Questionnaire Package operation by sending a POST
|
101
|
+
request to
|
102
|
+
|
103
|
+
`#{questionnaire_package_url}`
|
104
|
+
|
105
|
+
A questionnaire package generated by Inferno will be returned.
|
106
|
+
|
107
|
+
### Pre-population
|
108
|
+
|
109
|
+
Inferno will then wait for the client to complete Questionnaire pre-population. The client should make FHIR
|
110
|
+
GET requests using service base path:
|
111
|
+
|
112
|
+
`#{fhir_base_url}`
|
113
|
+
|
114
|
+
### Request Identification
|
115
|
+
|
116
|
+
In order to identify requests for this session, Inferno will look for
|
117
|
+
an `Authorization` header with value:
|
118
|
+
|
119
|
+
```
|
120
|
+
Bearer eyJhbGcmOiJub25lIn0.#{example_client_jwt_payload_part}.
|
121
|
+
```
|
122
|
+
|
123
|
+
### Continuing the Tests
|
124
|
+
|
125
|
+
When the DTR application has finished loading the Questionnaire,
|
126
|
+
including any clinical data requests to support pre-population,
|
127
|
+
[Click here](#{resume_pass_url}?client_id=#{client_id}) to continue.
|
128
|
+
)
|
129
|
+
)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
@@ -7,10 +7,11 @@ module DaVinciDTRTestKit
|
|
7
7
|
id :dtr_smart_app_questionnaire_workflow
|
8
8
|
title 'Respiratory Assist Device Questionnaire Workflow'
|
9
9
|
description %(
|
10
|
-
This workflow validates that a DTR SMART App can perform a full DTR
|
11
|
-
Questionnaire
|
10
|
+
This workflow validates that a DTR SMART App can perform a full DTR
|
11
|
+
Questionnaire workflow using a canned Questionnaire
|
12
|
+
for a respiratory assist device order:
|
12
13
|
|
13
|
-
1. Fetch the questionnaire package
|
14
|
+
1. Fetch the questionnaire package ([RespiratoryAssistDevices](https://github.com/inferno-framework/davinci-dtr-test-kit/blob/main/lib/davinci_dtr_test_kit/fixtures/questionnaire_package.json))
|
14
15
|
2. Render the questionnaire
|
15
16
|
3. Pre-populate the questionnaire response
|
16
17
|
)
|
@@ -81,9 +81,9 @@ If you would like to try out the tests but don't have a DTR payer server impleme
|
|
81
81
|
you can run these tests against the DTR SMART Client test suite included in this test kit
|
82
82
|
using the following steps:
|
83
83
|
1. Start an Inferno session of the Da Vinci DTR SMART App Test Suite.
|
84
|
-
1. Select test
|
84
|
+
1. Select test 1.1.1 *Retrieving the Static Questionnaire* from the menu on the left.
|
85
85
|
1. Click the "Run All Tests" button in the upper right.
|
86
|
-
1. In the "
|
86
|
+
1. In the "SMART App Launch" select `Standalone Launch` and in the "client_id" input, put `sample`.
|
87
87
|
1. Click the "submit" button in the dialog that appears. The client tests will now be waiting for requests.
|
88
88
|
1. Start an Inferno session of the DTR Payer Server test suite.
|
89
89
|
1. Select test 1 *Static Questionnaire Package Retrieval* from the menu on the left.
|