davinci_dtr_test_kit 0.11.1 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/lib/davinci_dtr_test_kit/auth_groups/token_request_test.rb +1 -1
  3. data/lib/davinci_dtr_test_kit/client_groups/dinner_static/dtr_full_ehr_dinner_questionnaire_package_request_test.rb +52 -0
  4. data/lib/davinci_dtr_test_kit/client_groups/dinner_static/dtr_full_ehr_dinner_static_questionnaire_response_conformance_test.rb +15 -0
  5. data/lib/davinci_dtr_test_kit/client_groups/dinner_static/dtr_full_ehr_dinner_static_questionnaire_response_correctness_test.rb +30 -0
  6. data/lib/davinci_dtr_test_kit/client_groups/dinner_static/dtr_full_ehr_launch_attestation_test.rb +28 -0
  7. data/lib/davinci_dtr_test_kit/client_groups/dinner_static/dtr_full_ehr_prepopulation_attestation_test.rb +30 -0
  8. data/lib/davinci_dtr_test_kit/client_groups/dinner_static/dtr_full_ehr_prepopulation_override_attestation_test.rb +27 -0
  9. data/lib/davinci_dtr_test_kit/client_groups/dinner_static/dtr_full_ehr_questionnaire_workflow_group.rb +91 -0
  10. data/lib/davinci_dtr_test_kit/client_groups/dinner_static/dtr_full_ehr_rendering_enabled_questions_attestation_test.rb +30 -0
  11. data/lib/davinci_dtr_test_kit/client_groups/dinner_static/dtr_full_ehr_store_attestation_test.rb +29 -0
  12. data/lib/davinci_dtr_test_kit/client_groups/dinner_static/{dtr_dinner_questionnaire_package_request_test.rb → dtr_smart_app_dinner_questionnaire_package_request_test.rb} +5 -5
  13. data/lib/davinci_dtr_test_kit/client_groups/dinner_static/{prepopulation_attestation_test.rb → dtr_smart_app_prepopulation_attestation_test.rb} +2 -2
  14. data/lib/davinci_dtr_test_kit/client_groups/dinner_static/{prepopulation_override_attestation_test.rb → dtr_smart_app_prepopulation_override_attestation_test.rb} +2 -2
  15. data/lib/davinci_dtr_test_kit/client_groups/dinner_static/{dtr_questionnaire_response_save_test.rb → dtr_smart_app_questionnaire_response_save_test.rb} +2 -2
  16. data/lib/davinci_dtr_test_kit/client_groups/dinner_static/dtr_smart_app_questionnaire_workflow_group.rb +13 -13
  17. data/lib/davinci_dtr_test_kit/client_groups/dinner_static/{rendering_enabled_questions_attestation_test.rb → dtr_smart_app_rendering_enabled_questions_attestation_test.rb} +2 -2
  18. data/lib/davinci_dtr_test_kit/client_groups/shared/dtr_questionnaire_package_request_validation_test.rb +1 -1
  19. data/lib/davinci_dtr_test_kit/client_groups/shared/dtr_questionnaire_response_basic_conformance_test.rb +3 -7
  20. data/lib/davinci_dtr_test_kit/client_groups/shared/dtr_questionnaire_response_pre_population_test.rb +9 -5
  21. data/lib/davinci_dtr_test_kit/cql_test.rb +182 -137
  22. data/lib/davinci_dtr_test_kit/docs/dtr_full_ehr_suite_description_v201.md +127 -0
  23. data/lib/davinci_dtr_test_kit/docs/dtr_light_ehr_suite_description_v201.md +29 -0
  24. data/lib/davinci_dtr_test_kit/dtr_full_ehr_suite.rb +4 -12
  25. data/lib/davinci_dtr_test_kit/dtr_light_ehr_suite.rb +38 -25
  26. data/lib/davinci_dtr_test_kit/dtr_options.rb +7 -0
  27. data/lib/davinci_dtr_test_kit/dtr_questionnaire_response_validation.rb +118 -75
  28. data/lib/davinci_dtr_test_kit/dtr_smart_app_suite.rb +6 -3
  29. data/lib/davinci_dtr_test_kit/fixture_loader.rb +6 -84
  30. data/lib/davinci_dtr_test_kit/fixtures.rb +43 -48
  31. data/lib/davinci_dtr_test_kit/mock_auth_server.rb +101 -18
  32. data/lib/davinci_dtr_test_kit/mock_ehr.rb +32 -24
  33. data/lib/davinci_dtr_test_kit/mock_payer.rb +41 -64
  34. data/lib/davinci_dtr_test_kit/payer_server_groups/adaptive_next_questionnaire_expressions_test.rb +2 -2
  35. data/lib/davinci_dtr_test_kit/payer_server_groups/payer_server_adaptive_request_validation_test.rb +11 -19
  36. data/lib/davinci_dtr_test_kit/payer_server_groups/payer_server_adaptive_response_bundles_validation_test.rb +6 -6
  37. data/lib/davinci_dtr_test_kit/payer_server_groups/payer_server_adaptive_response_search_validation_test.rb +6 -6
  38. data/lib/davinci_dtr_test_kit/payer_server_groups/payer_server_adaptive_response_validation_test.rb +17 -18
  39. data/lib/davinci_dtr_test_kit/payer_server_groups/payer_server_next_request_validation_test.rb +6 -7
  40. data/lib/davinci_dtr_test_kit/payer_server_groups/payer_server_next_response_validation_test.rb +3 -1
  41. data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_request_validation_test.rb +10 -21
  42. data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_response_validation_test.rb +7 -13
  43. data/lib/davinci_dtr_test_kit/tags.rb +1 -0
  44. data/lib/davinci_dtr_test_kit/urls.rb +13 -10
  45. data/lib/davinci_dtr_test_kit/validation_test.rb +8 -9
  46. data/lib/davinci_dtr_test_kit/version.rb +1 -1
  47. data/lib/davinci_dtr_test_kit.rb +2 -2
  48. metadata +37 -12
  49. data/lib/davinci_dtr_test_kit/client_groups/resp_assist_device/dtr_full_ehr_questionnaire_workflow_group.rb +0 -19
  50. /data/lib/davinci_dtr_test_kit/fixtures/{pre_populated_questionnaire_response.json → respiratory_assist_device/pre_populated_questionnaire_response.json} +0 -0
  51. /data/lib/davinci_dtr_test_kit/fixtures/{questionnaire_package.json → respiratory_assist_device/questionnaire_package.json} +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3449c737f53b2443bc81890e9788ff4aad6837c70865512e58b5a5d3809ad96e
4
- data.tar.gz: 4b2775168992e4887e5e330178138bd918a225bf9d57f2b7425a021acc7ee7c1
3
+ metadata.gz: 0a072f135a4057afa53b8836a3436fab457fc8c1ab15199e19608732b16d16cb
4
+ data.tar.gz: e4942f1af9755743eab89b7a0cc8b559929ad8b4be4bed00e7e1a33b4de1b0bd
5
5
  SHA512:
6
- metadata.gz: e6107a0cf03478d3bdc9c9b155af0664b8d39b9a3819e563c3dcf45bc69b34d80a83b0be270022be6d75aeb95a6b2b9b85d486c00693a9ad3e4f0605e2d504ee
7
- data.tar.gz: 69701c0a2b4a2a69ae16d5e8dd1b79fd9d27fddf0230d02dc6793be32752d965f01688d3661df72cfdddc9a208b252fda1303f516b5aa6458d33631383fc17f2
6
+ metadata.gz: aae323b007b88a564283b1fc946490e3c2330d6b3081de4783c0611c25afd732327e631d7e782743bab1fe1cab797dad84bcd9403accedcdb21f464278d05f0f
7
+ data.tar.gz: e68f011efaa3f0785d94c7a1f683a9986474dc887f3b99492b62ccdaf5f3ecb92387be39c909872a6f6448dfc6cb8dc1520de971557d8325cf725b3fe6853771
@@ -17,7 +17,7 @@ module DaVinciDTRTestKit
17
17
  message: %(
18
18
  Submit your token request to
19
19
 
20
- `#{token_url}`
20
+ `#{payer_token_url}`
21
21
  )
22
22
  )
23
23
  end
@@ -0,0 +1,52 @@
1
+ require 'base64'
2
+ require_relative '../../urls'
3
+
4
+ module DaVinciDTRTestKit
5
+ class DTRFullEHRDinnerQuestionnairePackageRequestTest < Inferno::Test
6
+ include URLs
7
+
8
+ id :dtr_full_ehr_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
+
15
+ input :access_token,
16
+ description: %(
17
+ `Bearer` token that the client under test will send in the
18
+ `Authorization` header of each HTTP request to Inferno. Inferno
19
+ will look for this value to associate requests with this session.
20
+ )
21
+
22
+ run do
23
+ wait(
24
+ identifier: access_token,
25
+ message: %(
26
+ ### Questionnaire Package
27
+
28
+ Inferno will wait for the Full EHR to invoke the DTR Questionnaire Package operation by sending a POST
29
+ request to
30
+
31
+ `#{questionnaire_package_url}`
32
+
33
+ A questionnaire package generated by Inferno will be returned.
34
+
35
+ ### Request Identification
36
+
37
+ In order to identify requests for this session, Inferno will look for
38
+ an `Authorization` header with value:
39
+
40
+ ```
41
+ Bearer #{access_token}
42
+ ```
43
+
44
+ ### Continuing the Tests
45
+
46
+ When the DTR application has finished loading the Questionnaire
47
+ [Click here](#{resume_pass_url}?token=#{access_token}) to continue.
48
+ )
49
+ )
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,15 @@
1
+ require_relative '../../dtr_questionnaire_response_validation'
2
+
3
+ module DaVinciDTRTestKit
4
+ class DTRFullEHRDinnerStaticQuestionnaireResponseConformanceTest < Inferno::Test
5
+ include DTRQuestionnaireResponseValidation
6
+
7
+ id :dtr_full_ehr_dinner_static_questionnaire_response_conformance
8
+ title 'QuestionnaireResponse is conformant'
9
+
10
+ run do
11
+ skip_if questionnaire_response.nil?, 'Completed QuestionnaireResponse input was blank'
12
+ verify_basic_conformance(questionnaire_response)
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,30 @@
1
+ require_relative '../../dtr_questionnaire_response_validation'
2
+
3
+ module DaVinciDTRTestKit
4
+ class DTRFullEHRDinnerStaticQuestionnaireResponseCorrectnessTest < Inferno::Test
5
+ include DTRQuestionnaireResponseValidation
6
+
7
+ id :dtr_full_ehr_dinner_static_questionnaire_response_correctness
8
+ title 'QuestionnaireResponse is correct for the workflow'
9
+ description %(
10
+ The QuestionnaireResponse aligns with the following expectations for the workflow. This includes checks for
11
+ the presence of the following answers and their appropriate origin source extensions:
12
+
13
+ - PBD.1 (Last Name): `auto`
14
+ - PBD.2 (First Name): `override`
15
+ - 3.1 (dinner choice): `manual`
16
+ )
17
+
18
+ run do
19
+ skip_if questionnaire_response.nil?, 'Completed QuestionnaireResponse input was blank'
20
+ check_is_questionnaire_response(questionnaire_response)
21
+
22
+ questionnaire = Fixtures.questionnaire_for_test(id)
23
+ # questionnaire = Fixtures.find_questionnaire('DinnerOrderStatic')
24
+ qr = FHIR.from_contents(questionnaire_response)
25
+ check_origin_sources(questionnaire.item, qr.item, expected_overrides: ['PBD.2'])
26
+ check_answer_presence(qr.item, link_ids: ['PBD.1', 'PBD.2', 'LOC.1'])
27
+ assert(messages.none? { |m| m[:type] == 'error' }, 'QuestionnaireResponse is not correct, see error message(s)')
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,28 @@
1
+ require_relative '../../urls'
2
+
3
+ module DaVinciDTRTestKit
4
+ class DTRFullEHRStaticDinnerLaunchAttestationTest < Inferno::Test
5
+ include URLs
6
+
7
+ id :dtr_full_ehr_dinner_static_launch_attestation
8
+ title 'Launch DTR for a patient that has an official name (Attestation)'
9
+ description %(
10
+ Attest that DTR has been launched for a patient with data that will be used for prepopulation.
11
+ )
12
+ input :access_token
13
+
14
+ run do
15
+ wait(
16
+ identifier: access_token,
17
+ message: %(
18
+ I attest that DTR has been launched in the context of a patient with an official name, including
19
+ first and last.
20
+
21
+ [Click here](#{resume_pass_url}?token=#{access_token}) if the above statement is **true**.
22
+
23
+ [Click here](#{resume_fail_url}?token=#{access_token}) if the above statement is **false**.
24
+ )
25
+ )
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,30 @@
1
+ require_relative '../../urls'
2
+
3
+ module DaVinciDTRTestKit
4
+ class DTRFullEHRStaticDinnerPrepopulationAttestationTest < Inferno::Test
5
+ include URLs
6
+
7
+ id :dtr_full_ehr_dinner_static_rendering_prepopulation_attestation
8
+ title 'Check that the client pre-populates the questionnaire (Attestation)'
9
+ description %(
10
+ Validate that pre-population of patient name information occurs as expected.
11
+ )
12
+ input :access_token
13
+
14
+ run do
15
+ wait(
16
+ identifier: access_token,
17
+ message: %(
18
+ I attest that the DTR application pre-populates the following questions with the respective
19
+ value for the official name of the patient:
20
+ - Last Name
21
+ - First Name
22
+
23
+ [Click here](#{resume_pass_url}?token=#{access_token}) if the above statement is **true**.
24
+
25
+ [Click here](#{resume_fail_url}?token=#{access_token}) if the above statement is **false**.
26
+ )
27
+ )
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,27 @@
1
+ require_relative '../../urls'
2
+
3
+ module DaVinciDTRTestKit
4
+ class DTRFullEHRStaticDinnerPrepopulationOverrideAttestationTest < Inferno::Test
5
+ include URLs
6
+
7
+ id :dtr_full_ehr_dinner_static_prepopulation_override_attestation
8
+ title 'Validate the user can override pre-populated data (Attestation)'
9
+ description %(
10
+ Validate that the user can edit a pre-populated item and replace it with another value.
11
+ )
12
+ input :access_token
13
+
14
+ run do
15
+ wait(
16
+ identifier: access_token,
17
+ message: %(
18
+ I attest that I have changed the prepopulated value in the First Name field to a new value.
19
+
20
+ [Click here](#{resume_pass_url}?token=#{access_token}) if the above statement is **true**.
21
+
22
+ [Click here](#{resume_fail_url}?token=#{access_token}) if the above statement is **false**.
23
+ )
24
+ )
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,91 @@
1
+ require_relative 'dtr_full_ehr_launch_attestation_test'
2
+ require_relative 'dtr_full_ehr_dinner_questionnaire_package_request_test'
3
+ require_relative '../shared/dtr_questionnaire_package_request_validation_test'
4
+ require_relative 'dtr_full_ehr_prepopulation_attestation_test'
5
+ require_relative 'dtr_full_ehr_prepopulation_override_attestation_test'
6
+ require_relative 'dtr_full_ehr_rendering_enabled_questions_attestation_test'
7
+ require_relative 'dtr_full_ehr_store_attestation_test'
8
+ require_relative 'dtr_full_ehr_dinner_static_questionnaire_response_conformance_test'
9
+ require_relative 'dtr_full_ehr_dinner_static_questionnaire_response_correctness_test'
10
+
11
+ module DaVinciDTRTestKit
12
+ class DTRFullEHRStaticDinnerQuestionnaireWorkflowGroup < Inferno::TestGroup
13
+ id :dtr_full_ehr_static_dinner_questionnaire_workflow
14
+ title 'Static Questionnaire Workflow'
15
+ description %(
16
+ This test validates that a DTR Full EHR client can perform a full DTR Static Questionnaire workflow
17
+ using a mocked questionnaire requesting what a patient wants for dinner. The client system must
18
+ demonstrate its ability to:
19
+
20
+ 1. Fetch the static questionnaire package
21
+ ([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))
22
+ 2. Render and pre-populate the questionnaire appropriately, including:
23
+ - pre-populate data as directed by the questionnaire
24
+ - display questions only when they are enabled by other answers
25
+ 3. Complete and store the questionnaire response for future use.
26
+ )
27
+
28
+ group do
29
+ id :dtr_full_ehr_static_questionnaire_retrieval
30
+ title 'Retrieving the Static Questionnaire'
31
+ description %(
32
+ After DTR launch, Inferno will wait for the client system to request a questionnaire using the
33
+ $questionnaire-package operation and will return a static questionnaire for the
34
+ tester to complete. Inferno will then validate the the conformance of the request.
35
+ )
36
+ run_as_group
37
+
38
+ # Test 0: attest to launch
39
+ test from: :dtr_full_ehr_dinner_static_launch_attestation
40
+ # Test 1: wait for the $questionnaire-package request
41
+ test from: :dtr_full_ehr_dinner_questionnaire_package_request
42
+ # Test 2: validate the $questionnaire-package body
43
+ test from: :dtr_questionnaire_package_request_validation
44
+ end
45
+
46
+ group do
47
+ id :dtr_full_ehr_static_questionnaire_rendering
48
+ title 'Filling Out the Static Questionnaire'
49
+ description %(
50
+ The tester will interact with the questionnaire within their client system
51
+ such that pre-population steps are taken, the qustionnaire is rendered, and
52
+ they are able to fill it out. The tester will attest that questionnaire pre-population
53
+ and rendering directives were followed.
54
+ )
55
+ run_as_group
56
+
57
+ # Test 1: attest to the pre-population of the name fields
58
+ test from: :dtr_full_ehr_dinner_static_rendering_prepopulation_attestation
59
+ # Test 2: attest to the pre-population and edit of the first name field
60
+ test from: :dtr_full_ehr_dinner_static_prepopulation_override_attestation
61
+ # Test 3: attest to the display of the toppings questions only when a dinner answer is selected
62
+ test from: :dtr_full_ehr_dinner_static_rendering_enabledQs_attestation
63
+ end
64
+
65
+ group do
66
+ id :dtr_full_ehr_static_questionnaire_response
67
+ title 'Saving the QuestionnaireResponse'
68
+ description %(
69
+ The tester will attest to the completion of the questionnaire such that
70
+ the results are stored for later use.
71
+ )
72
+ input :questionnaire_response,
73
+ type: 'textarea',
74
+ title: 'Completed QuestionnaireResponse',
75
+ optional: true,
76
+ description: %(
77
+ The QuestionnaireResponse as exported from the EHR after completion of the Questionnaire. IMPORTANT: If
78
+ you have not yet run the 'Filling Out the Static Questionnaire' group, leave this blank until you have
79
+ done so. Then, run just the 'Saving the QuestionnaireResponse' group and populate this input.
80
+ )
81
+ run_as_group
82
+
83
+ # Test 1: attest QuestionnaireResponse saved
84
+ test from: :dtr_full_ehr_dinner_static_store_attestation
85
+ # Test 2: verify basic conformance of the QuestionnaireResponse
86
+ test from: :dtr_full_ehr_dinner_static_questionnaire_response_conformance
87
+ # Test 3: check workflow-specific details such as pre-population and overrides
88
+ test from: :dtr_full_ehr_dinner_static_questionnaire_response_correctness
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,30 @@
1
+ require_relative '../../urls'
2
+
3
+ module DaVinciDTRTestKit
4
+ class DTRFullEHRStaticDinnerRenderingAttestationTest < Inferno::Test
5
+ include URLs
6
+
7
+ id :dtr_full_ehr_dinner_static_rendering_enabledQs_attestation
8
+ title 'Check that the client renders enabled questions appropriately (Attestation)'
9
+ description %(
10
+ Validate that the rendering of the questionnaire includes only the "What would you like on..."
11
+ question appropriate for the dinner selection, if made.
12
+ )
13
+ input :access_token
14
+
15
+ run do
16
+ wait(
17
+ identifier: access_token,
18
+ message: %(
19
+ I attest that the client application does not display any "What would you like on..."
20
+ questions until I have selected a dinner choice and then only displays the
21
+ "What would you like on..." question relevant for the dinner request:
22
+
23
+ [Click here](#{resume_pass_url}?token=#{access_token}) if the above statement is **true**.
24
+
25
+ [Click here](#{resume_fail_url}?token=#{access_token}) if the above statement is **false**.
26
+ )
27
+ )
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,29 @@
1
+ require_relative '../../urls'
2
+
3
+ module DaVinciDTRTestKit
4
+ class DTRFullEHRStaticDinnerStoreAttestationTest < Inferno::Test
5
+ include URLs
6
+
7
+ id :dtr_full_ehr_dinner_static_store_attestation
8
+ title 'Complete and Store the QuestionnaireResponse (Attestation)'
9
+ description %(
10
+ Attest that the questionnaire has been completed and the response has been persisted
11
+ and can be exported as a FHIR QuestionnaireResponse instance.
12
+ )
13
+ input :access_token
14
+
15
+ run do
16
+ wait(
17
+ identifier: access_token,
18
+ message: %(
19
+ I attest that the questionnaire has been completed and stored within the EHR for future
20
+ use and export as a FHIR QuestionnaireResponse instance.
21
+
22
+ [Click here](#{resume_pass_url}?token=#{access_token}) if the above statement is **true**.
23
+
24
+ [Click here](#{resume_fail_url}?token=#{access_token}) if the above statement is **false**.
25
+ )
26
+ )
27
+ end
28
+ end
29
+ end
@@ -2,10 +2,10 @@ require 'base64'
2
2
  require_relative '../../urls'
3
3
 
4
4
  module DaVinciDTRTestKit
5
- class DTRDinnerQuestionnairePackageRequestTest < Inferno::Test
5
+ class DTRSmartAppDinnerQuestionnairePackageRequestTest < Inferno::Test
6
6
  include URLs
7
7
 
8
- id :dtr_dinner_questionnaire_package_request
8
+ id :dtr_smart_app_dinner_questionnaire_package_request
9
9
  title 'Invoke the DTR Questionnaire Package operation'
10
10
  description %(
11
11
  Inferno will wait for a DTR questionnaire package request from the client. Upon receipt, Inferno will generate and
@@ -49,7 +49,7 @@ module DaVinciDTRTestKit
49
49
  Resources available from the EHR needed to drive the dinner static workflow.
50
50
  Formatted as a FHIR bundle that contains resources, each with an `id` property populated. Each
51
51
  instance present will be available for retrieval from Inferno at the endpoint:
52
-
52
+
53
53
  ```
54
54
  [fhir-base]/[resource type]/[instance id]
55
55
  ```
@@ -83,7 +83,7 @@ module DaVinciDTRTestKit
83
83
  launch_prompt = if smart_app_launch == 'ehr'
84
84
  %(Launch the DTR SMART App from Inferno by right clicking
85
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".)
86
+ and selecting "Open in new window" or "Open in new tab".)
87
87
  else
88
88
  %(Launch the SMART App from your EHR.)
89
89
  end
@@ -119,7 +119,7 @@ module DaVinciDTRTestKit
119
119
  an `Authorization` header with value:
120
120
 
121
121
  ```
122
- Bearer eyJhbGcmOiJub25lIn0.#{example_client_jwt_payload_part}.
122
+ Bearer eyJhbGciOiJub25lIn0.#{example_client_jwt_payload_part}.
123
123
  ```
124
124
 
125
125
  ### Continuing the Tests
@@ -1,10 +1,10 @@
1
1
  require_relative '../../urls'
2
2
 
3
3
  module DaVinciDTRTestKit
4
- class DTRStaticDinnerPrepopulationAttestationTest < Inferno::Test
4
+ class DTRSmartAppStaticDinnerPrepopulationAttestationTest < Inferno::Test
5
5
  include URLs
6
6
 
7
- id :dtr_dinner_static_rendering_prepopulation_attestation
7
+ id :dtr_smart_app_dinner_static_rendering_prepopulation_attestation
8
8
  title 'Check that the client pre-populates the questionnaire (Attestation)'
9
9
  description %(
10
10
  Validate that pre-population of patient name information occurs as expected.
@@ -1,10 +1,10 @@
1
1
  require_relative '../../urls'
2
2
 
3
3
  module DaVinciDTRTestKit
4
- class DTRStaticDinnerPrepopulationOverrideAttestationTest < Inferno::Test
4
+ class DTRSmartAppStaticDinnerPrepopulationOverrideAttestationTest < Inferno::Test
5
5
  include URLs
6
6
 
7
- id :dtr_dinner_static_prepopulation_override_attestation
7
+ id :dtr_smart_app_dinner_static_prepopulation_override_attestation
8
8
  title 'Validate the user can override pre-populated data (Attestation)'
9
9
  description %(
10
10
  Validate that the user can edit a pre-populated item and replace it with another value.
@@ -1,10 +1,10 @@
1
1
  require_relative '../../urls'
2
2
 
3
3
  module DaVinciDTRTestKit
4
- class DTRStaticDinnerQuestionnaireResponseSaveTest < Inferno::Test
4
+ class DTRSmartAppStaticDinnerQuestionnaireResponseSaveTest < Inferno::Test
5
5
  include URLs
6
6
 
7
- id :dtr_static_dinner_questionnaire_response_save
7
+ id :dtr_smart_app_static_dinner_questionnaire_response_save
8
8
  title 'Save the QuestionnaireResponse after completing it'
9
9
  description %(
10
10
  Inferno, acting as the EHR, will wait for a request to save the QuestionnaireResponse from the client.
@@ -1,9 +1,9 @@
1
- require_relative 'dtr_dinner_questionnaire_package_request_test'
1
+ require_relative 'dtr_smart_app_dinner_questionnaire_package_request_test'
2
2
  require_relative '../shared/dtr_questionnaire_package_request_validation_test'
3
- require_relative 'prepopulation_attestation_test'
4
- require_relative 'prepopulation_override_attestation_test'
5
- require_relative 'rendering_enabled_questions_attestation_test'
6
- require_relative 'dtr_questionnaire_response_save_test'
3
+ require_relative 'dtr_smart_app_prepopulation_attestation_test'
4
+ require_relative 'dtr_smart_app_prepopulation_override_attestation_test'
5
+ require_relative 'dtr_smart_app_rendering_enabled_questions_attestation_test'
6
+ require_relative 'dtr_smart_app_questionnaire_response_save_test'
7
7
  require_relative '../shared/dtr_questionnaire_response_basic_conformance_test'
8
8
  require_relative '../shared/dtr_questionnaire_response_pre_population_test'
9
9
 
@@ -27,7 +27,7 @@ module DaVinciDTRTestKit
27
27
  )
28
28
 
29
29
  group do
30
- id :dtr_static_questionnaire_retrieval
30
+ id :dtr_smart_app_static_questionnaire_retrieval
31
31
  title 'Retrieving the Static Questionnaire'
32
32
  description %(
33
33
  Inferno will wait for the client system to request a questionnaire using the
@@ -37,13 +37,13 @@ module DaVinciDTRTestKit
37
37
  run_as_group
38
38
 
39
39
  # Test 1: wait for the $questionnaire-package request
40
- test from: :dtr_dinner_questionnaire_package_request
40
+ test from: :dtr_smart_app_dinner_questionnaire_package_request
41
41
  # Test 2: validate the $questionnaire-package body
42
42
  test from: :dtr_questionnaire_package_request_validation
43
43
  end
44
44
 
45
45
  group do
46
- id :dtr_static_questionnaire_rendering
46
+ id :dtr_smart_app_static_questionnaire_rendering
47
47
  title 'Filling Out the Static Questionnaire'
48
48
  description %(
49
49
  The tester will interact with the questionnaire within their client system
@@ -58,15 +58,15 @@ module DaVinciDTRTestKit
58
58
  # since the questionnaire asks them to
59
59
  # TODO: once Tom has gotten the reference server hooked up
60
60
  # Test 2: attest to the pre-population of the name fields
61
- test from: :dtr_dinner_static_rendering_prepopulation_attestation
61
+ test from: :dtr_smart_app_dinner_static_rendering_prepopulation_attestation
62
62
  # Test 3: attest to the pre-population and edit of the location field
63
- test from: :dtr_dinner_static_prepopulation_override_attestation
63
+ test from: :dtr_smart_app_dinner_static_prepopulation_override_attestation
64
64
  # Test 4: attest to the display of the toppings questions only when a dinner answer is selected
65
- test from: :dtr_dinner_static_rendering_enabledQs_attestation
65
+ test from: :dtr_smart_app_dinner_static_rendering_enabledQs_attestation
66
66
  end
67
67
 
68
68
  group do
69
- id :dtr_static_questionnaire_response
69
+ id :dtr_smart_app_static_questionnaire_response
70
70
  title 'Saving the QuestionnaireResponse'
71
71
  description %(
72
72
  The tester will complete the questionnaire such that a QuestionnaireResponse is stored
@@ -77,7 +77,7 @@ module DaVinciDTRTestKit
77
77
  run_as_group
78
78
 
79
79
  # Test 1: wait for a QuestionnaireResponse
80
- test from: :dtr_static_dinner_questionnaire_response_save,
80
+ test from: :dtr_smart_app_static_dinner_questionnaire_response_save,
81
81
  receives_request: :questionnaire_response_save
82
82
  # Test 2: validate basic conformance of the QuestionnaireResponse
83
83
  test from: :dtr_questionnaire_response_basic_conformance,
@@ -1,10 +1,10 @@
1
1
  require_relative '../../urls'
2
2
 
3
3
  module DaVinciDTRTestKit
4
- class DTRStaticDinnerRenderingAttestationTest < Inferno::Test
4
+ class DTRSmartAppStaticDinnerRenderingAttestationTest < Inferno::Test
5
5
  include URLs
6
6
 
7
- id :dtr_dinner_static_rendering_enabledQs_attestation
7
+ id :dtr_smart_app_dinner_static_rendering_enabledQs_attestation
8
8
  title 'Check that the client renders enabled questions appropriately (Attestation)'
9
9
  description %(
10
10
  Validate that the rendering of the questionnaire includes only the "What would you like on..."
@@ -29,7 +29,7 @@ module DaVinciDTRTestKit
29
29
  assert input_params.present?, 'Request does not contain a recognized FHIR object'
30
30
  assert_resource_type(:parameters, resource: input_params)
31
31
  assert_valid_resource(resource: input_params,
32
- profile_url: 'http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-qpackage-input-parameters')
32
+ profile_url: 'http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-qpackage-input-parameters|2.0.1')
33
33
  end
34
34
  end
35
35
  end
@@ -1,8 +1,10 @@
1
1
  require_relative '../../urls'
2
+ require_relative '../../dtr_questionnaire_response_validation'
2
3
 
3
4
  module DaVinciDTRTestKit
4
5
  class DTRQuestionnaireResponseBasicConformanceTest < Inferno::Test
5
6
  include URLs
7
+ include DTRQuestionnaireResponseValidation
6
8
 
7
9
  id :dtr_questionnaire_response_basic_conformance
8
10
  title 'QuestionnaireResponse is conformant'
@@ -16,13 +18,7 @@ module DaVinciDTRTestKit
16
18
  assert request.url == questionnaire_response_url,
17
19
  "Request made to wrong URL: #{request.url}. Should instead be to #{questionnaire_response_url}"
18
20
 
19
- assert_valid_json(request.request_body)
20
- questionnaire_response = FHIR.from_contents(request.request_body)
21
- assert questionnaire_response.present?, 'Request does not contain a recognized FHIR object'
22
- assert_resource_type(:questionnaire_response, resource: questionnaire_response)
23
-
24
- assert_valid_resource(resource: questionnaire_response,
25
- profile_url: 'http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-questionnaireresponse')
21
+ verify_basic_conformance(request.request_body)
26
22
  end
27
23
  end
28
24
  end
@@ -1,4 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative '../../dtr_questionnaire_response_validation'
4
+ require_relative '../../fixtures'
2
5
 
3
6
  module DaVinciDTRTestKit
4
7
  class DTRQuestionnaireResponsePrePopulationTest < Inferno::Test
@@ -21,11 +24,12 @@ module DaVinciDTRTestKit
21
24
  )
22
25
 
23
26
  run do
24
- assert_valid_json(request.request_body)
25
- questionnaire_response = FHIR.from_contents(request.request_body)
26
- skip_if !questionnaire_response.present?, 'QuestionnaireResponse not received'
27
-
28
- validate_questionnaire_pre_population(questionnaire_response, id)
27
+ questionnaire_response_json = request.request_body
28
+ check_is_questionnaire_response(questionnaire_response_json)
29
+ questionnaire_response = FHIR.from_contents(questionnaire_response_json)
30
+ questionnaire = Fixtures.questionnaire_for_test(id)
31
+ response_template = Fixtures.questionnaire_response_for_test(id)
32
+ validate_questionnaire_pre_population(questionnaire, response_template, questionnaire_response)
29
33
  end
30
34
  end
31
35
  end