davinci_pdex_test_kit 0.10.6 → 0.12.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 (131) hide show
  1. checksums.yaml +4 -4
  2. data/config/presets/pdex_payer_client_postman_preset.json +12 -0
  3. data/config/presets/pdex_payer_server_fhir_foundry_ri_preset.json +96 -0
  4. data/config/presets/pdex_payer_server_inferno_ri_preset.json +96 -0
  5. data/lib/davinci_pdex_test_kit/docs/davinci_pdex_test_kit_description_v200.md +33 -0
  6. data/lib/davinci_pdex_test_kit/docs/payer_client_suite_description_v200.md +107 -17
  7. data/lib/davinci_pdex_test_kit/fhir_resource_navigation.rb +5 -1
  8. data/lib/davinci_pdex_test_kit/group_metadata.rb +5 -1
  9. data/lib/davinci_pdex_test_kit/igs/davinci-pdex-2.0.0.tgz +0 -0
  10. data/lib/davinci_pdex_test_kit/igs/us-core-3.1.1.tgz +0 -0
  11. data/lib/davinci_pdex_test_kit/metadata.rb +16 -0
  12. data/lib/davinci_pdex_test_kit/must_support_test.rb +3 -0
  13. data/lib/davinci_pdex_test_kit/pdex_payer_client/client_member_match_tests/client_member_match_validation_test.rb +21 -17
  14. data/lib/davinci_pdex_test_kit/pdex_payer_client/client_validation_test.rb +96 -43
  15. data/lib/davinci_pdex_test_kit/pdex_payer_client/client_workflow_interaction_test.rb +50 -0
  16. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/allergyintolerance_clinical_data_request_test.rb +18 -16
  17. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/careplan_clinical_data_request_test.rb +18 -16
  18. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/careteam_clinical_data_request_test.rb +18 -16
  19. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/clinical_data_request_check_test.rb +24 -0
  20. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/condition_clinical_data_request_test.rb +18 -16
  21. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/device_clinical_data_request_test.rb +19 -17
  22. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/diagnosticreport_clinical_data_request_test.rb +18 -16
  23. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/documentreference_clinical_data_request_test.rb +18 -16
  24. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/encounter_clinical_data_request_test.rb +18 -16
  25. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/explanationofbenefit_clinical_data_request_test.rb +18 -16
  26. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/goal_clinical_data_request_test.rb +18 -16
  27. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/immunization_clinical_data_request_test.rb +18 -16
  28. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/location_clinical_data_request_test.rb +18 -16
  29. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/medicationdispense_clinical_data_request_test.rb +18 -16
  30. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/medicationrequest_clinical_data_request_test.rb +18 -16
  31. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/observation_clinical_data_request_test.rb +18 -16
  32. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/organization_clinical_data_request_test.rb +18 -16
  33. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/patient_clinical_data_request_test.rb +18 -16
  34. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/patient_id_search_request_check_test.rb +21 -0
  35. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/practitioner_clinical_data_request_test.rb +18 -16
  36. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/practitionerrole_clinical_data_request_test.rb +18 -16
  37. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/procedure_clinical_data_request_test.rb +18 -16
  38. data/lib/davinci_pdex_test_kit/pdex_payer_client/collection.rb +46 -44
  39. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/binary_endpoint.rb +26 -0
  40. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/export_endpoint.rb +29 -0
  41. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/export_status_endpoint.rb +38 -0
  42. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/member_match_endpoint.rb +51 -0
  43. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/next_page_endpoint.rb +23 -0
  44. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/patient_endpoint.rb +25 -0
  45. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/patient_everything_endpoint.rb +34 -0
  46. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/proxy_endpoint.rb +178 -0
  47. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/resource_read_endpoint.rb +21 -0
  48. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/resource_search_endpoint.rb +22 -0
  49. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/token_endpoint.rb +27 -0
  50. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server.rb +53 -0
  51. data/lib/davinci_pdex_test_kit/pdex_payer_client/tags.rb +15 -0
  52. data/lib/davinci_pdex_test_kit/pdex_payer_client/urls.rb +51 -0
  53. data/lib/davinci_pdex_test_kit/pdex_payer_client_suite.rb +99 -144
  54. data/lib/davinci_pdex_test_kit/pdex_payer_server/coverage_to_link_minimal_data_validation.rb +1 -1
  55. data/lib/davinci_pdex_test_kit/pdex_payer_server/coverage_to_link_must_support_validation.rb +1 -1
  56. data/lib/davinci_pdex_test_kit/pdex_payer_server/device/device_must_support_test.rb +50 -0
  57. data/lib/davinci_pdex_test_kit/pdex_payer_server/device/device_patient_search_test.rb +68 -0
  58. data/lib/davinci_pdex_test_kit/pdex_payer_server/device/device_patient_type_search_test.rb +54 -0
  59. data/lib/davinci_pdex_test_kit/pdex_payer_server/{explanation_of_benefit/explanation_of_benefit_provenance_revinclude_search_test.rb → device/device_provenance_revinclude_search_test.rb} +16 -13
  60. data/lib/davinci_pdex_test_kit/pdex_payer_server/device/device_read_test.rb +26 -0
  61. data/lib/davinci_pdex_test_kit/pdex_payer_server/device/device_reference_resolution_test.rb +42 -0
  62. data/lib/davinci_pdex_test_kit/pdex_payer_server/device/device_validation_test.rb +39 -0
  63. data/lib/davinci_pdex_test_kit/pdex_payer_server/device/metadata.yml +154 -0
  64. data/lib/davinci_pdex_test_kit/pdex_payer_server/device_group.rb +88 -0
  65. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_id_search_test.rb +10 -26
  66. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_identifier_search_test.rb +13 -26
  67. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_must_support_test.rb +40 -7
  68. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_lastupdated_search_test.rb +48 -0
  69. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_search_test.rb +62 -0
  70. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_service_date_search_test.rb +13 -28
  71. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_type_search_test.rb +12 -28
  72. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_read_test.rb +1 -1
  73. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_reference_resolution_test.rb +10 -6
  74. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_validation_test.rb +10 -11
  75. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/metadata.yml +285 -273
  76. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit_group.rb +69 -73
  77. data/lib/davinci_pdex_test_kit/pdex_payer_server/export_patient_group.rb +11 -13
  78. data/lib/davinci_pdex_test_kit/pdex_payer_server/export_validation_group.rb +3 -8
  79. data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense/medication_dispense_must_support_test.rb +42 -0
  80. data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense/medication_dispense_patient_search_test.rb +64 -0
  81. data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense/medication_dispense_patient_status_search_test.rb +54 -0
  82. data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense/medication_dispense_patient_status_type_search_test.rb +55 -0
  83. data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense/medication_dispense_provenance_revinclude_search_test.rb +54 -0
  84. data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense/medication_dispense_read_test.rb +26 -0
  85. data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense/medication_dispense_reference_resolution_test.rb +42 -0
  86. data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense/medication_dispense_validation_test.rb +39 -0
  87. data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense/metadata.yml +206 -0
  88. data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense_group.rb +69 -0
  89. data/lib/davinci_pdex_test_kit/pdex_payer_server/member_match_request_local_references_validation.rb +1 -1
  90. data/lib/davinci_pdex_test_kit/pdex_payer_server/member_match_request_profile_validation.rb +1 -3
  91. data/lib/davinci_pdex_test_kit/pdex_payer_server/multiple_member_matches_group.rb +36 -37
  92. data/lib/davinci_pdex_test_kit/pdex_payer_server/no_member_matches_group.rb +30 -31
  93. data/lib/davinci_pdex_test_kit/pdex_payer_server/patient_operation_in_capability_statement_validation.rb +16 -16
  94. data/lib/davinci_pdex_test_kit/pdex_payer_server/provenance/metadata.yml +173 -0
  95. data/lib/davinci_pdex_test_kit/pdex_payer_server/provenance/provenance_must_support_test.rb +51 -0
  96. data/lib/davinci_pdex_test_kit/pdex_payer_server/provenance/provenance_read_test.rb +26 -0
  97. data/lib/davinci_pdex_test_kit/pdex_payer_server/provenance/provenance_reference_resolution_test.rb +46 -0
  98. data/lib/davinci_pdex_test_kit/pdex_payer_server/provenance/provenance_validation_test.rb +39 -0
  99. data/lib/davinci_pdex_test_kit/pdex_payer_server/provenance_group.rb +59 -0
  100. data/lib/davinci_pdex_test_kit/pdex_payer_server/workflow_clinical_data_group.rb +25 -16
  101. data/lib/davinci_pdex_test_kit/pdex_payer_server/workflow_everything_group.rb +21 -10
  102. data/lib/davinci_pdex_test_kit/pdex_payer_server/workflow_export_group.rb +24 -20
  103. data/lib/davinci_pdex_test_kit/pdex_payer_server/workflow_member_match_group.rb +56 -38
  104. data/lib/davinci_pdex_test_kit/pdex_payer_server_suite.rb +124 -112
  105. data/lib/davinci_pdex_test_kit/pdex_provider_client_suite.rb +8 -8
  106. data/lib/davinci_pdex_test_kit/requirements/davinci-pdex-test-kit_out_of_scope_requirements.csv +1 -0
  107. data/lib/davinci_pdex_test_kit/requirements/davinci-pdex-test-kit_requirements.csv +64 -0
  108. data/lib/davinci_pdex_test_kit/requirements/generated/davinci-pdex-test-kit_requirements_coverage.csv +64 -0
  109. data/lib/davinci_pdex_test_kit/version.rb +2 -3
  110. data/lib/davinci_pdex_test_kit.rb +2 -2
  111. data/lib/inferno_requirements_tools/ext/inferno_core/runnable.rb +22 -0
  112. data/lib/inferno_requirements_tools/rake/rakefile_template +19 -0
  113. data/lib/inferno_requirements_tools/tasks/requirements_coverage.rb +284 -0
  114. data/lib/requirements_config.yaml +17 -0
  115. metadata +113 -27
  116. data/lib/davinci_pdex_test_kit/ext/inferno_core/record_response_route.rb +0 -98
  117. data/lib/davinci_pdex_test_kit/ext/inferno_core/request.rb +0 -19
  118. data/lib/davinci_pdex_test_kit/ext/inferno_core/runnable.rb +0 -18
  119. data/lib/davinci_pdex_test_kit/mock_server.rb +0 -281
  120. data/lib/davinci_pdex_test_kit/pdex_payer_client/client_member_match_tests/client_member_match_submit_test.rb +0 -24
  121. data/lib/davinci_pdex_test_kit/pdex_payer_client/client_must_support_tests/client_member_match_must_support_submit_test.rb +0 -26
  122. data/lib/davinci_pdex_test_kit/pdex_payer_client/client_must_support_tests/client_member_match_must_support_validation_test.rb +0 -32
  123. data/lib/davinci_pdex_test_kit/pdex_payer_client/client_must_support_tests/metadata.yml +0 -61
  124. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/initial_scratch_storing.rb +0 -32
  125. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/initial_wait_test.rb +0 -31
  126. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_last_updated_search_test.rb +0 -63
  127. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_use_search_test.rb +0 -68
  128. data/lib/davinci_pdex_test_kit/tags.rb +0 -11
  129. data/lib/davinci_pdex_test_kit/urls.rb +0 -77
  130. /data/lib/davinci_pdex_test_kit/{metadata → pdex_payer_client/mock_server/resources}/mock_capability_statement.json +0 -0
  131. /data/lib/davinci_pdex_test_kit/{metadata → pdex_payer_client/mock_server/resources}/mock_operation_outcome_resource.json +0 -0
@@ -1,16 +1,15 @@
1
- require 'inferno/dsl/oauth_credentials'
2
- require_relative 'ext/inferno_core/record_response_route'
3
- require_relative 'ext/inferno_core/runnable'
4
- require_relative 'ext/inferno_core/request'
5
- require_relative 'urls'
6
- require_relative 'mock_server'
7
- require_relative 'tags'
1
+ require_relative 'pdex_payer_client/urls'
2
+ require_relative 'pdex_payer_client/tags'
8
3
  require_relative 'pdex_payer_client/collection'
9
- require_relative 'must_support_test'
10
- require_relative 'pdex_payer_client/client_validation_test'
4
+ require_relative 'pdex_payer_client/mock_server'
5
+ # require_relative 'must_support_test'
6
+ # require_relative 'pdex_payer_client/client_validation_test'
11
7
 
12
- require_relative 'pdex_payer_client/clinical_data_request_tests/initial_wait_test'
13
- require_relative 'pdex_payer_client/clinical_data_request_tests/initial_scratch_storing'
8
+ require_relative 'pdex_payer_client/client_workflow_interaction_test'
9
+ require_relative 'pdex_payer_client/client_member_match_tests/client_member_match_validation_test'
10
+
11
+ require_relative 'pdex_payer_client/clinical_data_request_tests/clinical_data_request_check_test'
12
+ require_relative 'pdex_payer_client/clinical_data_request_tests/patient_id_search_request_check_test'
14
13
  require_relative 'pdex_payer_client/clinical_data_request_tests/allergyintolerance_clinical_data_request_test'
15
14
  require_relative 'pdex_payer_client/clinical_data_request_tests/careplan_clinical_data_request_test'
16
15
  require_relative 'pdex_payer_client/clinical_data_request_tests/careteam_clinical_data_request_test'
@@ -32,155 +31,111 @@ require_relative 'pdex_payer_client/clinical_data_request_tests/practitioner_cli
32
31
  require_relative 'pdex_payer_client/clinical_data_request_tests/practitionerrole_clinical_data_request_test'
33
32
  require_relative 'pdex_payer_client/clinical_data_request_tests/procedure_clinical_data_request_test'
34
33
 
35
- require_relative 'pdex_payer_client/client_member_match_tests/client_member_match_submit_test'
36
- require_relative 'pdex_payer_client/client_member_match_tests/client_member_match_validation_test'
37
- # require_relative 'pdex_payer_client/client_must_support_tests/client_member_match_must_support_submit_test'
38
- # require_relative 'pdex_payer_client/client_must_support_tests/client_member_match_must_support_validation_test'
39
-
40
-
41
34
  module DaVinciPDexTestKit
42
- class PDexPayerClientSuite < Inferno::TestSuite
43
- extend MockServer
44
- extend ClientValidationTest
45
-
46
- id :pdex_payer_client
47
- title 'Da Vinci PDex Payer Client Test Suite'
48
- description File.read(File.join(__dir__, 'docs', 'payer_client_suite_description_v200.md'))
49
-
50
- def self.test_resumes?(test)
51
- !test.config.options[:accepts_multiple_requests]
52
- end
53
-
54
- links [
55
- {
56
- label: 'Report Issue',
57
- url: 'https://github.com/inferno-framework/davinci-pdex-test-kit/issues'
58
- },
59
- {
60
- label: 'Open Source',
61
- url: 'https://github.com/inferno-framework/davinci-pdex-test-kit'
62
- },
63
- {
64
- label: 'Download',
65
- url: 'https://github.com/inferno-framework/davinci-pdex-test-kit/releases'
66
- },
67
- {
68
- label: 'Implementation Guide',
69
- url: 'https://hl7.org/fhir/us/davinci-pdex/STU2/'
70
- }
71
- ]
72
-
73
- # Hl7 Validator Wrapper:
74
- fhir_resource_validator do
75
- igs 'hl7.fhir.us.davinci-pdex#2.0.0'
76
- # hrex 1.0.0 and other dependencies will auto-load
77
-
78
- exclude_message do |message|
79
- message.message.match?(/\A\S+: \S+: URL value '.*' does not resolve/)
80
- end
35
+ class PDexPayerClientSuite < Inferno::TestSuite
36
+ include PDexPayerClient
37
+ include PDexPayerClient::URLs
38
+ include PDexPayerClient::MockServer
39
+
40
+ id :pdex_payer_client
41
+ title 'Da Vinci PDex Payer Client Test Suite'
42
+ description File.read(File.join(__dir__, 'docs', 'payer_client_suite_description_v200.md'))
43
+
44
+ links [
45
+ {
46
+ label: 'Report Issue',
47
+ url: 'https://github.com/inferno-framework/davinci-pdex-test-kit/issues'
48
+ },
49
+ {
50
+ label: 'Open Source',
51
+ url: 'https://github.com/inferno-framework/davinci-pdex-test-kit'
52
+ },
53
+ {
54
+ label: 'Download',
55
+ url: 'https://github.com/inferno-framework/davinci-pdex-test-kit/releases'
56
+ },
57
+ {
58
+ label: 'Implementation Guide',
59
+ url: 'https://hl7.org/fhir/us/davinci-pdex/STU2/'
60
+ }
61
+ ]
62
+
63
+ # Hl7 Validator Wrapper:
64
+ fhir_resource_validator do
65
+ igs 'hl7.fhir.us.davinci-pdex#2.0.0'
66
+ # hrex 1.0.0 and other dependencies will auto-load
67
+
68
+ exclude_message do |message|
69
+ message.message.match?(/\A\S+: \S+: URL value '.*' does not resolve/)
81
70
  end
71
+ end
82
72
 
83
- record_response_route :post, TOKEN_PATH, AUTH_TAG, method(:token_response) do |request|
84
- PDexPayerClientSuite.extract_client_id(request)
85
- end
73
+ resume_test_route :get, RESUME_PASS_PATH do |request|
74
+ PDexPayerClientSuite.extract_token_from_query_params(request)
75
+ end
86
76
 
87
- record_response_route :get, PATIENT_PATH, SUBMIT_TAG, method(:claim_response), # Patient needs a specific definition
88
- resumes: method(:test_resumes?) do |request|
89
- PDexPayerClientSuite.extract_bearer_token(request)
90
- end
77
+ resume_test_route :get, RESUME_CLINICAL_DATA_PATH do |request|
78
+ PDexPayerClientSuite.extract_token_from_query_params(request)
79
+ end
91
80
 
92
- record_response_route :get, SUBMIT_PATH, SUBMIT_TAG, method(:claim_response),
93
- resumes: method(:test_resumes?) do |request|
94
- PDexPayerClientSuite.extract_bearer_token(request)
95
- end
81
+ resume_test_route :get, RESUME_FAIL_PATH, result: 'fail' do |request|
82
+ PDexPayerClientSuite.extract_token_from_query_params(request)
83
+ end
96
84
 
97
- record_response_route :get, BINARY_PATH, BINARY_TAG, method(:binary_read_response),
98
- resumes: method(:test_resumes?) do |request|
99
- PDexPayerClientSuite.extract_bearer_token(request)
100
- end
85
+ group do
86
+ run_as_group
87
+ title 'Workflow Tests'
88
+ id :payer_to_payer_workflow
101
89
 
102
- record_response_route :get, EVERYTHING_PATH, EVERYTHING_TAG, method(:everything_response),
103
- resumes: method(:test_resumes?) do |request|
104
- PDexPayerClientSuite.extract_bearer_token(request)
105
- end
90
+ group do
91
+ title 'Interaction Tests'
92
+ id :client_workflow_interaction
106
93
 
107
- record_response_route :get, EXPORT_PATH, EXPORT_TAG, method(:export_response),
108
- resumes: method(:test_resumes?) do |request|
109
- PDexPayerClientSuite.extract_bearer_token(request)
94
+ test from: :pdex_client_workflow_interaction
110
95
  end
111
96
 
112
- record_response_route :get, EXPORT_STATUS_PATH, EXPORT_STATUS_TAG, method(:export_status_response),
113
- resumes: method(:test_resumes?) do |request|
114
- PDexPayerClientSuite.extract_bearer_token(request)
115
- end
97
+ group do
98
+ title '$member-match validation'
99
+ id :member_match_validation
116
100
 
117
- record_response_route :post, MEMBER_MATCH_PATH, MEMBER_MATCH_TAG, method(:member_match_response),
118
- resumes: method(:test_resumes?) do |request|
119
- PDexPayerClientSuite.extract_bearer_token(request)
101
+ test from: :pdex_initial_member_match_validation
120
102
  end
121
103
 
122
- record_response_route :get, BASE_FHIR_PATH, SUBMIT_TAG, method(:read_next_page),
123
- resumes: method(:test_resumes?) do |request|
124
- PDexPayerClientSuite.extract_bearer_token(request)
125
- end
126
-
127
- resume_test_route :get, RESUME_PASS_PATH do |request|
128
- PDexPayerClientSuite.extract_token_from_query_params(request)
104
+ group do
105
+ title 'Clinical data request validation'
106
+ id :clinical_data_validation
107
+
108
+ test from: :pdex_clinical_data_request_check
109
+ test from: :pdex_patient_id_search_request_check
110
+ test from: :pdex_allergyintolerance_clinical_data_request
111
+ test from: :pdex_careplan_clinical_data_request
112
+ test from: :pdex_careteam_clinical_data_request
113
+ test from: :pdex_condition_clinical_data_request
114
+ test from: :pdex_device_clinical_data_request
115
+ test from: :pdex_diagnosticreport_clinical_data_request
116
+ test from: :pdex_documentreference_clinical_data_request
117
+ test from: :pdex_encounter_clinical_data_request
118
+ test from: :pdex_explanationofbenefit_clinical_data_request
119
+ test from: :pdex_goal_clinical_data_request
120
+ test from: :pdex_immunization_clinical_data_request
121
+ test from: :pdex_location_clinical_data_request
122
+ test from: :pdex_medicationdispense_clinical_data_request
123
+ test from: :pdex_medicationrequest_clinical_data_request
124
+ test from: :pdex_observation_clinical_data_request
125
+ test from: :pdex_organization_clinical_data_request
126
+ test from: :pdex_patient_clinical_data_request
127
+ test from: :pdex_practitioner_clinical_data_request
128
+ test from: :pdex_practitionerrole_clinical_data_request
129
+ test from: :pdex_procedure_clinical_data_request
129
130
  end
131
+ end
130
132
 
131
- resume_test_route :get, RESUME_CLINICAL_DATA_PATH do |request|
132
- PDexPayerClientSuite.extract_token_from_query_params(request)
133
- end
134
-
135
- resume_test_route :get, RESUME_FAIL_PATH, result: 'fail' do |request|
136
- PDexPayerClientSuite.extract_token_from_query_params(request)
137
- end
133
+ # TODO: must support validation
138
134
 
139
- route(:get, METADATA_PATH, get_metadata)
135
+ private
140
136
 
141
- group do
142
- run_as_group
143
- title "Workflow Tests"
144
- group do
145
- title "$member-match validation"
146
- test from: :initial_member_match_submit_test
147
- test from: :initial_member_match_validation_test
148
- end
149
- group do
150
- title "Clinical data request tests"
151
- test from: :initial_wait_test
152
- test from: :initial_scratch_storing
153
- test from: :allergyintolerance_clinical_data_request_test
154
- test from: :careplan_clinical_data_request_test
155
- test from: :careteam_clinical_data_request_test
156
- test from: :condition_clinical_data_request_test
157
- test from: :device_clinical_data_request_test
158
- test from: :diagnosticreport_clinical_data_request_test
159
- test from: :documentreference_clinical_data_request_test
160
- test from: :encounter_clinical_data_request_test
161
- test from: :explanationofbenefit_clinical_data_request_test
162
- test from: :goal_clinical_data_request_test
163
- test from: :immunization_clinical_data_request_test
164
- test from: :location_clinical_data_request_test
165
- test from: :medicationdispense_clinical_data_request_test
166
- test from: :medicationrequest_clinical_data_request_test
167
- test from: :observation_clinical_data_request_test
168
- test from: :organization_clinical_data_request_test
169
- test from: :patient_clinical_data_request_test
170
- test from: :practitioner_clinical_data_request_test
171
- test from: :practitionerrole_clinical_data_request_test
172
- test from: :procedure_clinical_data_request_test
173
- end
174
- end
175
-
176
- # group do
177
- # title "Must Support validation"
178
- # group do
179
- # title "$member-match Must Support tests"
180
- # test from: :initial_member_match_must_support_submit_test
181
- # test from: :initial_member_match_must_support_validation_test
182
- # end
183
- # end
137
+ def self.extract_token_from_query_params(request)
138
+ request.query_parameters['token']
184
139
  end
185
140
  end
186
-
141
+ end
@@ -28,7 +28,7 @@ module DaVinciPDexTestKit
28
28
  #
29
29
  class CoverageToLinkMinimalDataValidation < Inferno::Test
30
30
 
31
- id :pdex_coverage_to_link_minimal_data_validation
31
+ id :pdex_coverage_to_link_minimal_validation
32
32
  title '[USER INPUT VALIDATION] CoverageToLink parameter should not include any data elements not marked as mustSupport'
33
33
  optional
34
34
  description %{
@@ -29,7 +29,7 @@ module DaVinciPDexTestKit
29
29
  #
30
30
  class CoverageToLinkMustSupportValidation < Inferno::Test
31
31
 
32
- id :pdex_coverage_to_link_must_support_validation
32
+ id :pdex_coverage_to_link_ms_validation
33
33
  title '[USER INPUT VALIDATION] CoverageToLink parameter is optional for generic FHIR clients, but required for Payer systems.'
34
34
  description 'See [CoverageToLink parameter documentation](https://hl7.org/fhir/us/davinci-hrex/STU1/OperationDefinition-member-match.html).'
35
35
  optional
@@ -0,0 +1,50 @@
1
+ require 'us_core_test_kit/must_support_test'
2
+ require 'us_core_test_kit/generator/group_metadata'
3
+
4
+ module DaVinciPDexTestKit
5
+ module PDexPayerServer
6
+ class DeviceMustSupportTest < Inferno::Test
7
+ include USCoreTestKit::MustSupportTest
8
+
9
+ title 'All must support elements are provided in the Device resources returned'
10
+ description %(
11
+ PDex Responders SHALL be capable of populating all data elements as
12
+ part of the query results as specified by the PDex Server Capability
13
+ Statement. This test will look through the Device resources
14
+ found previously for the following must support elements:
15
+
16
+ * Device.distinctIdentifier
17
+ * Device.expirationDate
18
+ * Device.lotNumber
19
+ * Device.patient
20
+ * Device.serialNumber
21
+ * Device.status
22
+ * Device.type
23
+ * Device.udiCarrier
24
+ * Device.udiCarrier.carrierAIDC
25
+ * Device.udiCarrier.carrierHRF
26
+ * Device.udiCarrier.deviceIdentifier
27
+ * Device.url
28
+ )
29
+
30
+ id :pdex_device_must_support
31
+
32
+ def resource_type
33
+ 'Device'
34
+ end
35
+
36
+ def self.metadata
37
+ @metadata ||= USCoreTestKit::Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'),
38
+ aliases: true))
39
+ end
40
+
41
+ def scratch_resources
42
+ scratch[:device_resources] ||= {}
43
+ end
44
+
45
+ run do
46
+ perform_must_support_test(all_scratch_resources)
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,68 @@
1
+ require 'us_core_test_kit/search_test'
2
+ require 'us_core_test_kit/search_test_properties'
3
+ require 'us_core_test_kit/generator/group_metadata'
4
+
5
+ module DaVinciPDexTestKit
6
+ module PDexPayerServer
7
+ class DevicePatientSearchTest < Inferno::Test
8
+ include USCoreTestKit::SearchTest
9
+
10
+ title 'Server returns valid results for Device search by patient'
11
+ description %(
12
+ A server SHALL support searching by
13
+ patient on the Device resource. This test
14
+ will pass if resources are returned and match the search criteria. If
15
+ none are returned, the test is skipped.
16
+
17
+ This test verifies that the server supports searching by reference using
18
+ the form `patient=[id]` as well as `patient=Patient/[id]`. The two
19
+ different forms are expected to return the same number of results. US
20
+ Core requires that both forms are supported by PDex responders.
21
+
22
+ Because this is the first search of the sequence, resources in the
23
+ response will be used for subsequent tests.
24
+
25
+ Additionally, this test will check that GET and POST search methods
26
+ return the same number of results. Search by POST is required by the
27
+ FHIR R4 specification, and these tests interpret search by GET as a
28
+ requirement of PDex v2.0.0.
29
+
30
+ [PDex Server CapabilityStatement](https://hl7.org/fhir/us/davinci-pdex/STU2/CapabilityStatement-pdex-server.html)
31
+ )
32
+
33
+ id :pdex_device_patient_search
34
+ input :patient_ids,
35
+ title: 'Patient IDs',
36
+ description: 'Comma separated list of patient IDs that in sum contain all MUST SUPPORT elements'
37
+
38
+ input :implantable_device_codes,
39
+ title: 'Implantable Device Type Code',
40
+ description: 'Enter the code for an Implantable Device type, or multiple codes separated by commas. ' \
41
+ 'If blank, Inferno will validate all Device resources against the Implantable Device profile',
42
+ optional: true
43
+
44
+ def self.properties
45
+ @properties ||= USCoreTestKit::SearchTestProperties.new(
46
+ first_search: true,
47
+ resource_type: 'Device',
48
+ search_param_names: ['patient'],
49
+ test_reference_variants: true,
50
+ test_post_search: true
51
+ )
52
+ end
53
+
54
+ def self.metadata
55
+ @metadata ||= USCoreTestKit::Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'),
56
+ aliases: true))
57
+ end
58
+
59
+ def scratch_resources
60
+ scratch[:device_resources] ||= {}
61
+ end
62
+
63
+ run do
64
+ run_search_test
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,54 @@
1
+ require 'us_core_test_kit/search_test'
2
+ require 'us_core_test_kit/generator/group_metadata'
3
+
4
+ module DaVinciPDexTestKit
5
+ module PDexPayerServer
6
+ class DevicePatientTypeSearchTest < Inferno::Test
7
+ include USCoreTestKit::SearchTest
8
+
9
+ title 'Server returns valid results for Device search by patient + type'
10
+ description %(
11
+ A server SHOULD support searching by
12
+ patient + type on the Device resource. This test
13
+ will pass if resources are returned and match the search criteria. If
14
+ none are returned, the test is skipped.
15
+
16
+ [PDex Server CapabilityStatement](https://hl7.org/fhir/us/davinci-pdex/STU2/CapabilityStatement-pdex-server.html)
17
+ )
18
+
19
+ id :pdex_device_patient_type_search
20
+ optional
21
+
22
+ input :patient_ids,
23
+ title: 'Patient IDs',
24
+ description: 'Comma separated list of patient IDs that in sum contain all MUST SUPPORT elements'
25
+
26
+ input :implantable_device_codes,
27
+ title: 'Implantable Device Type Code',
28
+ description: 'Enter the code for an Implantable Device type, or multiple codes separated by commas. ' \
29
+ 'If blank, Inferno will validate all Device resources against the Implantable Device profile',
30
+ optional: true
31
+
32
+ def self.properties
33
+ @properties ||= USCoreTestKit::SearchTestProperties.new(
34
+ resource_type: 'Device',
35
+ search_param_names: ['patient', 'type'],
36
+ token_search_params: ['type']
37
+ )
38
+ end
39
+
40
+ def self.metadata
41
+ @metadata ||= USCoreTestKit::Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'),
42
+ aliases: true))
43
+ end
44
+
45
+ def scratch_resources
46
+ scratch[:device_resources] ||= {}
47
+ end
48
+
49
+ run do
50
+ run_search_test
51
+ end
52
+ end
53
+ end
54
+ end
@@ -2,12 +2,12 @@ require 'us_core_test_kit/search_test'
2
2
  require 'us_core_test_kit/search_test_properties'
3
3
  require 'us_core_test_kit/generator/group_metadata'
4
4
 
5
- module USCoreTestKit
6
- module USCoreV311
7
- class ExplanationOfBenefitProvenanceRevincludeSearchTest < Inferno::Test
5
+ module DaVinciPDexTestKit
6
+ module PDexPayerServer
7
+ class DeviceProvenanceRevincludeSearchTest < Inferno::Test
8
8
  include USCoreTestKit::SearchTest
9
9
 
10
- title 'Server returns Provenance resources from ExplanationOfBenefit search by patient + revInclude:Provenance:target'
10
+ title 'Server returns Provenance resources from Device search by patient + revInclude:Provenance:target'
11
11
  description %(
12
12
  A server SHALL be capable of supporting _revIncludes:Provenance:target.
13
13
 
@@ -15,16 +15,16 @@ module USCoreTestKit
15
15
  will pass if a Provenance resource is found in the response.
16
16
  %)
17
17
 
18
- id :pdex_explanation_of_benefit_provenance_revinclude_search_test
19
-
18
+ id :pdex_device_provenance_revinclude_search
19
+
20
20
  input :patient_ids,
21
- title: 'Patient IDs',
22
- description: 'Comma separated list of patient IDs that in sum contain all MUST SUPPORT elements'
23
-
21
+ title: 'Patient IDs',
22
+ description: 'Comma separated list of patient IDs that in sum contain all MUST SUPPORT elements'
23
+
24
24
  def properties
25
25
  @properties ||= USCoreTestKit::SearchTestProperties.new(
26
- resource_type: 'ExplanationOfBenefit',
27
- search_param_names: ['patient']
26
+ resource_type: 'Device',
27
+ search_param_names: ['patient']
28
28
  )
29
29
  end
30
30
 
@@ -33,11 +33,14 @@ module USCoreTestKit
33
33
  end
34
34
 
35
35
  def self.provenance_metadata
36
- @provenance_metadata ||= USCoreTestKit::Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, '..', 'provenance', 'metadata.yml'), aliases: true))
36
+ @provenance_metadata ||= USCoreTestKit::Generator::GroupMetadata.new(YAML.load_file(
37
+ File.join(__dir__, '..', 'provenance',
38
+ 'metadata.yml'), aliases: true
39
+ ))
37
40
  end
38
41
 
39
42
  def scratch_resources
40
- scratch[:explanation_of_benefit_resources] ||= {}
43
+ scratch[:device_resources] ||= {}
41
44
  end
42
45
 
43
46
  def scratch_provenance_resources
@@ -0,0 +1,26 @@
1
+ require 'us_core_test_kit/read_test'
2
+
3
+ module DaVinciPDexTestKit
4
+ module PDexPayerServer
5
+ class DeviceReadTest < Inferno::Test
6
+ include USCoreTestKit::ReadTest
7
+
8
+ title 'Server returns correct Device resource from Device read interaction'
9
+ description 'A server SHALL support the Device read interaction.'
10
+
11
+ id :pdex_device_read
12
+
13
+ def resource_type
14
+ 'Device'
15
+ end
16
+
17
+ def scratch_resources
18
+ scratch[:device_resources] ||= {}
19
+ end
20
+
21
+ run do
22
+ perform_read_test(all_scratch_resources)
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,42 @@
1
+ require 'us_core_test_kit/reference_resolution_test'
2
+ require 'us_core_test_kit/generator/group_metadata'
3
+
4
+ module DaVinciPDexTestKit
5
+ module PDexPayerServer
6
+ class DeviceReferenceResolutionTest < Inferno::Test
7
+ include USCoreTestKit::ReferenceResolutionTest
8
+
9
+ title 'MustSupport references within Device resources are valid'
10
+ description %(
11
+ This test will attempt to read external references provided within elements
12
+ marked as 'MustSupport', if any are available.
13
+
14
+ It verifies that at least one external reference for each MustSupport Reference element
15
+ can be accessed by the test client, and conforms to corresponding PDex profile.
16
+
17
+ Elements which may provide external references include:
18
+
19
+ * Device.patient
20
+ )
21
+
22
+ id :pdex_device_ref_resolution
23
+
24
+ def resource_type
25
+ 'Device'
26
+ end
27
+
28
+ def self.metadata
29
+ @metadata ||= USCoreTestKit::Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'),
30
+ aliases: true))
31
+ end
32
+
33
+ def scratch_resources
34
+ scratch[:device_resources] ||= {}
35
+ end
36
+
37
+ run do
38
+ perform_reference_resolution_test(scratch_resources[:all])
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,39 @@
1
+ require 'us_core_test_kit/validation_test'
2
+
3
+ module DaVinciPDexTestKit
4
+ module PDexPayerServer
5
+ class DeviceValidationTest < Inferno::Test
6
+ include USCoreTestKit::ValidationTest
7
+
8
+ id :pdex_device_validation
9
+ title 'Device resources returned during previous tests conform to the PDex Device'
10
+ description %(
11
+ This test verifies resources returned from the first search conform to
12
+ the [PDex Device](http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/pdex-device).
13
+ Systems must demonstrate at least one valid example in order to pass this test.
14
+
15
+ It verifies the presence of mandatory elements and that elements with
16
+ required bindings contain appropriate values. CodeableConcept element
17
+ bindings will fail if none of their codings have a code/system belonging
18
+ to the bound ValueSet. Quantity, Coding, and code element bindings will
19
+ fail if their code/system are not found in the valueset.
20
+ )
21
+ output :dar_code_found, :dar_extension_found
22
+
23
+ def resource_type
24
+ 'Device'
25
+ end
26
+
27
+ def scratch_resources
28
+ scratch[:device_resources] ||= {}
29
+ end
30
+
31
+ run do
32
+ perform_validation_test(scratch_resources[:all] || [],
33
+ 'http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/pdex-device',
34
+ '2.0.0',
35
+ skip_if_empty: true)
36
+ end
37
+ end
38
+ end
39
+ end