davinci_dtr_test_kit 0.10.0 → 0.11.1
Sign up to get free protection for your applications and to get access to all the features.
- 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.
|