davinci_dtr_test_kit 0.9.0 → 0.11.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.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/lib/davinci_dtr_test_kit/client_groups/dinner_static/dtr_dinner_questionnaire_package_request_test.rb +97 -0
  3. data/lib/davinci_dtr_test_kit/client_groups/dinner_static/dtr_questionnaire_response_save_test.rb +2 -2
  4. data/lib/davinci_dtr_test_kit/client_groups/dinner_static/dtr_smart_app_questionnaire_workflow_group.rb +3 -2
  5. data/lib/davinci_dtr_test_kit/client_groups/dinner_static/prepopulation_attestation_test.rb +4 -4
  6. data/lib/davinci_dtr_test_kit/client_groups/dinner_static/prepopulation_override_attestation_test.rb +4 -4
  7. data/lib/davinci_dtr_test_kit/client_groups/dinner_static/rendering_enabled_questions_attestation_test.rb +4 -4
  8. data/lib/davinci_dtr_test_kit/client_groups/resp_assist_device/dtr_questionnaire_package_group.rb +2 -2
  9. data/lib/davinci_dtr_test_kit/client_groups/resp_assist_device/dtr_questionnaire_rendering_attestation_test.rb +4 -4
  10. data/lib/davinci_dtr_test_kit/client_groups/resp_assist_device/dtr_questionnaire_response_save_test.rb +2 -2
  11. data/lib/davinci_dtr_test_kit/client_groups/resp_assist_device/dtr_resp_questionnaire_package_request_test.rb +95 -0
  12. data/lib/davinci_dtr_test_kit/client_groups/resp_assist_device/dtr_smart_app_questionnaire_workflow_group.rb +4 -3
  13. data/lib/davinci_dtr_test_kit/docs/dtr_smart_app_suite_description_v201.md +107 -43
  14. data/lib/davinci_dtr_test_kit/dtr_full_ehr_suite.rb +30 -6
  15. data/lib/davinci_dtr_test_kit/dtr_light_ehr_suite.rb +26 -3
  16. data/lib/davinci_dtr_test_kit/dtr_payer_server_suite.rb +33 -7
  17. data/lib/davinci_dtr_test_kit/dtr_questionnaire_response_validation.rb +26 -10
  18. data/lib/davinci_dtr_test_kit/dtr_smart_app_suite.rb +59 -14
  19. data/lib/davinci_dtr_test_kit/fixtures/dinner_static/questionnaire_dinner_order_static.json +1 -1
  20. data/lib/davinci_dtr_test_kit/fixtures/questionnaire_package.json +1 -1
  21. data/lib/davinci_dtr_test_kit/mock_auth_server.rb +135 -0
  22. data/lib/davinci_dtr_test_kit/mock_ehr.rb +32 -12
  23. data/lib/davinci_dtr_test_kit/mock_payer.rb +2 -21
  24. data/lib/davinci_dtr_test_kit/payer_server_groups/payer_server_static_group.rb +4 -2
  25. data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_libraries_test.rb +2 -2
  26. data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_questionnaire_expressions_test.rb +3 -3
  27. data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_questionnaire_extensions_test.rb +2 -2
  28. data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_request_test.rb +1 -0
  29. data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_request_validation_test.rb +5 -3
  30. data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_response_validation_test.rb +15 -11
  31. data/lib/davinci_dtr_test_kit/urls.rb +14 -3
  32. data/lib/davinci_dtr_test_kit/version.rb +1 -1
  33. metadata +19 -3
  34. data/lib/davinci_dtr_test_kit/client_groups/shared/dtr_questionnaire_package_request_test.rb +0 -36
@@ -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.nil?, 'No request resource received from the client.'
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[:questionnaire_bundle] = resources
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
- FHIR.from_contents(initial_static_questionnaire_request)
37
- fhir_operation("#{url}/Questionnaire/$questionnaire-package",
38
- body: JSON.parse(initial_static_questionnaire_request),
39
- headers: { 'Content-Type': 'application/json' })
40
- scratch[:questionnaire_bundle] = resource
41
-
42
- assert_response_status(200)
43
- assert_resource_type(:parameters)
44
- questionnaire_bundle = resource.parameter.find { |param| param.name == 'return' }&.resource
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
@@ -1,7 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DaVinciDTRTestKit
4
- TOKEN_PATH = '/mock_auth/token'
4
+ SMART_CONFIG_PATH = '/fhir/.well-known/smart-configuration'
5
+ EHR_AUTHORIZE_PATH = '/mock_ehr_auth/authorize'
6
+ EHR_TOKEN_PATH = '/mock_ehr_auth/token'
7
+ PAYER_TOKEN_PATH = '/mock_payer_auth/token'
5
8
  QUESTIONNAIRE_PACKAGE_PATH = '/fhir/Questionnaire/$questionnaire-package'
6
9
  NEXT_PATH = '/fhir/Questionnaire/$next-question'
7
10
  QUESTIONNAIRE_RESPONSE_PATH = '/fhir/QuestionnaireResponse'
@@ -15,8 +18,16 @@ module DaVinciDTRTestKit
15
18
  @base_url ||= "#{Inferno::Application['base_url']}/custom/#{suite_id}"
16
19
  end
17
20
 
18
- def token_url
19
- @token_url ||= base_url + TOKEN_PATH
21
+ def ehr_authorize_url
22
+ @ehr_authorize_url ||= base_url + EHR_AUTHORIZE_PATH
23
+ end
24
+
25
+ def ehr_token_url
26
+ @ehr_token_url ||= base_url + EHR_TOKEN_PATH
27
+ end
28
+
29
+ def payer_token_url
30
+ @payer_token_url ||= base_url + PAYER_TOKEN_PATH
20
31
  end
21
32
 
22
33
  def questionnaire_package_url
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DaVinciDTRTestKit
4
- VERSION = '0.9.0'.freeze
4
+ VERSION = '0.11.0'
5
5
  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.9.0
4
+ version: 0.11.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-06-07 00:00:00.000000000 Z
13
+ date: 2024-07-15 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: inferno_core
@@ -26,6 +26,20 @@ dependencies:
26
26
  - - "~>"
27
27
  - !ruby/object:Gem::Version
28
28
  version: 0.4.37
29
+ - !ruby/object:Gem::Dependency
30
+ name: jwt
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - "~>"
34
+ - !ruby/object:Gem::Version
35
+ version: '2.6'
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '2.6'
29
43
  description: Test Kit for the Da Vinci Documentation Templates and Rules (DTR) FHIR
30
44
  Implementation Guide
31
45
  email:
@@ -40,6 +54,7 @@ files:
40
54
  - lib/davinci_dtr_test_kit/auth_groups/token_request_test.rb
41
55
  - lib/davinci_dtr_test_kit/auth_groups/token_validation_test.rb
42
56
  - lib/davinci_dtr_test_kit/client_groups/dinner_adaptive/dtr_smart_app_questionnaire_workflow_group.rb
57
+ - lib/davinci_dtr_test_kit/client_groups/dinner_static/dtr_dinner_questionnaire_package_request_test.rb
43
58
  - lib/davinci_dtr_test_kit/client_groups/dinner_static/dtr_questionnaire_response_save_test.rb
44
59
  - lib/davinci_dtr_test_kit/client_groups/dinner_static/dtr_smart_app_questionnaire_workflow_group.rb
45
60
  - lib/davinci_dtr_test_kit/client_groups/dinner_static/prepopulation_attestation_test.rb
@@ -51,8 +66,8 @@ files:
51
66
  - lib/davinci_dtr_test_kit/client_groups/resp_assist_device/dtr_questionnaire_rendering_group.rb
52
67
  - lib/davinci_dtr_test_kit/client_groups/resp_assist_device/dtr_questionnaire_response_group.rb
53
68
  - lib/davinci_dtr_test_kit/client_groups/resp_assist_device/dtr_questionnaire_response_save_test.rb
69
+ - lib/davinci_dtr_test_kit/client_groups/resp_assist_device/dtr_resp_questionnaire_package_request_test.rb
54
70
  - lib/davinci_dtr_test_kit/client_groups/resp_assist_device/dtr_smart_app_questionnaire_workflow_group.rb
55
- - lib/davinci_dtr_test_kit/client_groups/shared/dtr_questionnaire_package_request_test.rb
56
71
  - lib/davinci_dtr_test_kit/client_groups/shared/dtr_questionnaire_package_request_validation_test.rb
57
72
  - lib/davinci_dtr_test_kit/client_groups/shared/dtr_questionnaire_response_basic_conformance_test.rb
58
73
  - lib/davinci_dtr_test_kit/client_groups/shared/dtr_questionnaire_response_pre_population_test.rb
@@ -77,6 +92,7 @@ files:
77
92
  - lib/davinci_dtr_test_kit/fixtures/dinner_static/questionnaire_response_dinner_order_static.json
78
93
  - lib/davinci_dtr_test_kit/fixtures/pre_populated_questionnaire_response.json
79
94
  - lib/davinci_dtr_test_kit/fixtures/questionnaire_package.json
95
+ - lib/davinci_dtr_test_kit/mock_auth_server.rb
80
96
  - lib/davinci_dtr_test_kit/mock_ehr.rb
81
97
  - lib/davinci_dtr_test_kit/mock_payer.rb
82
98
  - lib/davinci_dtr_test_kit/payer_server_groups/adaptive_form_libraries_test.rb
@@ -1,36 +0,0 @@
1
- require_relative '../../urls'
2
-
3
- module DaVinciDTRTestKit
4
- class DTRQuestionnairePackageRequestTest < Inferno::Test
5
- include URLs
6
-
7
- id :dtr_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 :access_token
14
-
15
- run do
16
- wait(
17
- identifier: access_token,
18
- message: %(
19
- Invoke the DTR Questionnaire Package operation by sending a POST request to
20
-
21
- `#{questionnaire_package_url}`
22
-
23
- A questionnaire package generated by Inferno will be returned.
24
-
25
- Inferno will wait for the client to complete Questionnaire pre-population. The client should make FHIR GET
26
- requests using service base path:
27
-
28
- `#{fhir_base_url}`
29
-
30
- When the DTR application has finished loading the Questionnaire,
31
- [Click here](#{resume_pass_url}?token=#{access_token}) to continue.
32
- )
33
- )
34
- end
35
- end
36
- end