carin_for_blue_button_test_kit 0.13.3 → 0.14.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 (51) hide show
  1. checksums.yaml +4 -4
  2. data/config/presets/carin_cpcds_client_ri.json +12 -0
  3. data/lib/carin_for_blue_button_test_kit/client/v2.0.0/c4bb_client_test_suite.rb +17 -4
  4. data/lib/carin_for_blue_button_test_kit/client/v2.0.0/claim_data_request_tests/coverage_claims_data_request_test.rb +0 -1
  5. data/lib/carin_for_blue_button_test_kit/client/v2.0.0/claim_data_request_tests/eob_inpatient_claims_data_request_test.rb +0 -1
  6. data/lib/carin_for_blue_button_test_kit/client/v2.0.0/claim_data_request_tests/eob_oral_claims_data_request_test.rb +0 -1
  7. data/lib/carin_for_blue_button_test_kit/client/v2.0.0/claim_data_request_tests/eob_outpatient_claims_data_request_test.rb +0 -1
  8. data/lib/carin_for_blue_button_test_kit/client/v2.0.0/claim_data_request_tests/eob_pharmacy_claims_data_request_test.rb +0 -1
  9. data/lib/carin_for_blue_button_test_kit/client/v2.0.0/claim_data_request_tests/eob_professional_claims_data_request_test.rb +0 -1
  10. data/lib/carin_for_blue_button_test_kit/client/v2.0.0/claim_data_request_tests/organization_claims_data_request_test.rb +0 -1
  11. data/lib/carin_for_blue_button_test_kit/client/v2.0.0/claim_data_request_tests/patient_claims_data_request_test.rb +0 -1
  12. data/lib/carin_for_blue_button_test_kit/client/v2.0.0/claim_data_request_tests/practitioner_claims_data_request_test.rb +0 -1
  13. data/lib/carin_for_blue_button_test_kit/client/v2.0.0/claim_data_request_tests/relatedperson_claims_data_request_test.rb +0 -1
  14. data/lib/carin_for_blue_button_test_kit/client/v2.0.0/endpoints/authorize_endpoint.rb +32 -0
  15. data/lib/carin_for_blue_button_test_kit/client/v2.0.0/endpoints/next_page_endpoint.rb +3 -1
  16. data/lib/carin_for_blue_button_test_kit/client/v2.0.0/endpoints/resource_api_endpoint.rb +3 -1
  17. data/lib/carin_for_blue_button_test_kit/client/v2.0.0/endpoints/resource_id_endpoint.rb +3 -1
  18. data/lib/carin_for_blue_button_test_kit/client/v2.0.0/endpoints/token_endpoint.rb +69 -13
  19. data/lib/carin_for_blue_button_test_kit/client/v2.0.0/initial_wait_test.rb +35 -4
  20. data/lib/carin_for_blue_button_test_kit/client/v2.0.0/metadata/{mock_capability_statement.json → mock_capability_statement.json.erb} +28 -0
  21. data/lib/carin_for_blue_button_test_kit/client/v2.0.0/mock_authorization.rb +35 -0
  22. data/lib/carin_for_blue_button_test_kit/client/v2.0.0/mock_server.rb +43 -9
  23. data/lib/carin_for_blue_button_test_kit/client/v2.0.0/required_searches_tests/coverage_required_searches.rb +0 -1
  24. data/lib/carin_for_blue_button_test_kit/client/v2.0.0/required_searches_tests/eob_required_searches.rb +0 -1
  25. data/lib/carin_for_blue_button_test_kit/client/v2.0.0/required_searches_tests/organization_required_searches.rb +0 -1
  26. data/lib/carin_for_blue_button_test_kit/client/v2.0.0/required_searches_tests/patient_required_searches.rb +0 -1
  27. data/lib/carin_for_blue_button_test_kit/client/v2.0.0/required_searches_tests/practitioner_required_searches.rb +0 -1
  28. data/lib/carin_for_blue_button_test_kit/client/v2.0.0/required_searches_tests/relatedperson_required_searches.rb +0 -1
  29. data/lib/carin_for_blue_button_test_kit/client/v2.0.0/tags.rb +2 -0
  30. data/lib/carin_for_blue_button_test_kit/client/v2.0.0/urls.rb +25 -10
  31. data/lib/carin_for_blue_button_test_kit/docs/carin_for_blue_button_v2.0.0_client_suite_description.md +7 -4
  32. data/lib/carin_for_blue_button_test_kit/generated/v1.1.0/c4bb_test_suite.rb +9 -1
  33. data/lib/carin_for_blue_button_test_kit/generated/v2.0.0/c4bb_test_suite.rb +9 -1
  34. data/lib/carin_for_blue_button_test_kit/generated/v2.0.0-dev-nonfinancial/c4bb_test_suite.rb +9 -1
  35. data/lib/carin_for_blue_button_test_kit/generator/templates/group.rb.erb +24 -0
  36. data/lib/carin_for_blue_button_test_kit/generator/templates/include_search.rb.erb +37 -0
  37. data/lib/carin_for_blue_button_test_kit/generator/templates/must_support.rb.erb +44 -0
  38. data/lib/carin_for_blue_button_test_kit/generator/templates/read.rb.erb +38 -0
  39. data/lib/carin_for_blue_button_test_kit/generator/templates/resource_list.rb.erb +9 -0
  40. data/lib/carin_for_blue_button_test_kit/generator/templates/search.rb.erb +43 -0
  41. data/lib/carin_for_blue_button_test_kit/generator/templates/suite.rb.erb +92 -0
  42. data/lib/carin_for_blue_button_test_kit/generator/templates/validation.rb.erb +34 -0
  43. data/lib/carin_for_blue_button_test_kit/metadata.rb +70 -0
  44. data/lib/carin_for_blue_button_test_kit/requirements/carin-for-blue-button-test-kit_out_of_scope_requirements.csv +53 -0
  45. data/lib/carin_for_blue_button_test_kit/requirements/carin-for-blue-button-test-kit_requirements.csv +335 -0
  46. data/lib/carin_for_blue_button_test_kit/requirements/generated/carin-for-blue-button-test-kit_requirements_coverage.csv +335 -0
  47. data/lib/carin_for_blue_button_test_kit/version.rb +2 -1
  48. data/lib/carin_for_blue_button_test_kit.rb +1 -0
  49. data/lib/inferno_requirements_tools/rake/rakefile_template +31 -0
  50. data/lib/requirements_config.yaml +14 -0
  51. metadata +27 -9
@@ -26,7 +26,6 @@ module CarinForBlueButtonTestKit
26
26
  * birthdate+name
27
27
  * gender+name
28
28
  )
29
- input :access_token
30
29
 
31
30
  verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@14'
32
31
 
@@ -18,7 +18,6 @@ module CarinForBlueButtonTestKit
18
18
  * name
19
19
  * identifier
20
20
  )
21
- input :access_token
22
21
 
23
22
  verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@14'
24
23
 
@@ -16,7 +16,6 @@ module CarinForBlueButtonTestKit
16
16
  Capability Statements:
17
17
  * _id
18
18
  )
19
- input :access_token
20
19
 
21
20
  verifies_requirements 'hl7.fhir.us.carin-bb_2.0.0@14'
22
21
 
@@ -4,4 +4,6 @@ module CarinForBlueButtonTestKit
4
4
  AUTH_TAG = 'carin_auth'
5
5
  RESOURCE_API_TAG = 'carin_resource_api'
6
6
  RESOURCE_ID_TAG = 'carin_resource_id'
7
+ AUTHORIZE_TAG = 'carin_smart_app_authorize'
8
+ TOKEN_TAG = 'carin_smart_app_token'
7
9
  end
@@ -1,13 +1,16 @@
1
1
  module CarinForBlueButtonTestKit
2
- TOKEN_PATH = '/mock_auth/token'
3
- PATIENT_PATH = '/fhir/Patient'
4
- RESOURCE_API_PATH = '/fhir/:endpoint'
5
- RESOURCE_ID_PATH = '/fhir/:endpoint/:id'
6
- METADATA_PATH = '/fhir/metadata'
7
- BASE_FHIR_PATH = '/fhir'
8
- RESUME_PASS_PATH = '/resume_pass'
9
- RESUME_CLAIMS_DATA_PATH = '/resume_claims_data'
10
- RESUME_FAIL_PATH = '/resume_fail'
2
+ TOKEN_PATH = '/mock_auth/token'.freeze
3
+ AUTH_PATH = '/mock_auth/authorization'.freeze
4
+ JKWS_PATH = '/.well-known/jwks.json'.freeze
5
+ SMART_CONFIG_PATH = '/.well-known/smart-configuration'.freeze
6
+ PATIENT_PATH = '/fhir/Patient'.freeze
7
+ RESOURCE_API_PATH = '/fhir/:endpoint'.freeze
8
+ RESOURCE_ID_PATH = '/fhir/:endpoint/:id'.freeze
9
+ METADATA_PATH = '/fhir/metadata'.freeze
10
+ BASE_FHIR_PATH = '/fhir'.freeze
11
+ RESUME_PASS_PATH = '/resume_pass'.freeze
12
+ RESUME_CLAIMS_DATA_PATH = '/resume_claims_data'.freeze
13
+ RESUME_FAIL_PATH = '/resume_fail'.freeze
11
14
 
12
15
  module URLs
13
16
  def base_url
@@ -18,6 +21,18 @@ module CarinForBlueButtonTestKit
18
21
  @token_url ||= base_url + TOKEN_PATH
19
22
  end
20
23
 
24
+ def authorization_url
25
+ @authorization_url ||= base_url + AUTH_PATH
26
+ end
27
+
28
+ def jwks_url
29
+ @jwks_url ||= base_url + JKWS_PATH
30
+ end
31
+
32
+ def smart_configuration_url
33
+ @smart_configuration_url ||= base_url + SMART_CONFIG_PATH
34
+ end
35
+
21
36
  def base_fhir_url
22
37
  @base_fhir_url ||= base_url + BASE_FHIR_PATH
23
38
  end
@@ -51,7 +66,7 @@ module CarinForBlueButtonTestKit
51
66
  end
52
67
 
53
68
  def suite_id
54
- self.class.suite.id
69
+ CarinForBlueButtonTestKit::C4BBV200ClientSuite.id
55
70
  end
56
71
  end
57
72
  end
@@ -40,7 +40,8 @@ During execution, Inferno will wait for the client under test to issue requests
40
40
 
41
41
  The following input must be provided by the tester to execute
42
42
  any tests in this suite:
43
- 1. *Access Token*: A `Bearer` token that the client under test will send in the
43
+ 1. *Client ID*: A Client ID that the client under test will use to connect to the test suite via SMART.
44
+ This client ID will be sent back to the client as the `Bearer` token that the client under test will send in the
44
45
  `Authorization` header of HTTP requests made against Inferno. Inferno uses the
45
46
  value to identify incoming requests that belong to the testing session.
46
47
 
@@ -63,7 +64,7 @@ requests needed to pass all of the tests. Note that some requests within the col
63
64
 
64
65
  To run the client tests against the Postman collection:
65
66
  1. Start an Inferno session of the CARIN for Blue Button Client test suite.
66
- 3. Click the "Run All Tests" button in the upper right and type in "SAMPLE_TOKEN" for the `access_token` input in the dialog that appears.
67
+ 3. Click the "Run All Tests" button in the upper right and type in "SAMPLE_CLIENT_ID" for the `Client ID` input in the dialog that appears.
67
68
  4. Click the "Submit" button. The simulated server will then be waiting for an interaction.
68
69
  4. Open Postman and import the `C4BB Client Search Tests` Postman collection.
69
70
  5. Send each of the requests listed under the `C4BB Client Search Tests` Postman collection and ensure a
@@ -77,8 +78,9 @@ to associate requests with sessions. If multiple concurrent sessions are configu
77
78
  to use the same token, they may interfere with each other. To prevent concurrent executors
78
79
  of these sample executions from disrupting your session it
79
80
  is recommended, but not required, to:
80
- 1. Update the Authorization tab of the C4BB Client Search Tests collection in Postman to a random value
81
- 2. When starting the tests, provide the same value in the access_token input.
81
+ 1. When starting the tests, provide a random client id in the `Client ID` input.
82
+ 2. A wait dialog will appear for the first test to wait for incoming requests. This window provides the bearer token Inferno expects to receive in the Authorization header of incoming requests.
83
+ 3. Update the Authorization tab of the C4BB Client Search Tests collection in Postman to this provided bearer token.
82
84
 
83
85
  ## Current Limitations
84
86
 
@@ -91,3 +93,4 @@ Specific current limitations to highlight include:
91
93
  - Inferno's simulated CARIN server does not support all required search parameters on the ExplanationOfBenefit resource, including service-date, service-start-date, billable-period-start, type, and _include=ExplanationOfBenefit:insurer. Inferno recognizes searches made using those parameters and will give the client credit for having performed them, but will always return an OperationOutcome indicating failure.
92
94
  - Testers must manually configure their client system to connect to a specific target patient and ingest specific curated sample CARIN data. Future versions of the tests may allow more flexibility in the patient identity and the associated data.
93
95
  - Testers must attest to their system's ability to process and retain all received information. Currently, this is implemented as a single test. Future versions of the tests may split this test out into different attestations per profile or other more fine-grained organization.
96
+ - This test kit contains basic SMART App Launch capabilities that may not be complete. In particular, refresh tokens are not currently supported and scopes are not precise. To provide feedback and input on the design of this feature and help us prioritize improvements, submit a ticket [here](https://github.com/inferno-framework/carin-for-blue-button-test-kit/issues).
@@ -20,12 +20,20 @@ module CarinForBlueButtonTestKit
20
20
 
21
21
 
22
22
  )
23
- version VERSION
23
+
24
24
  links [
25
+ {
26
+ label: 'Report Issue',
27
+ url: 'https://github.com/inferno-framework/carin-for-blue-button-test-kit/issues'
28
+ },
25
29
  {
26
30
  label: 'Open Source',
27
31
  url: 'https://github.com/inferno-framework/carin-for-blue-button-test-kit'
28
32
  },
33
+ {
34
+ label: 'Download',
35
+ url: 'https://github.com/inferno-framework/carin-for-blue-button-test-kit/releases'
36
+ },
29
37
  {
30
38
  label: 'Implementation Guide',
31
39
  url: 'http://hl7.org/fhir/us/carin-bb/STU1.1'
@@ -21,12 +21,20 @@ module CarinForBlueButtonTestKit
21
21
 
22
22
 
23
23
  )
24
- version VERSION
24
+
25
25
  links [
26
+ {
27
+ label: 'Report Issue',
28
+ url: 'https://github.com/inferno-framework/carin-for-blue-button-test-kit/issues'
29
+ },
26
30
  {
27
31
  label: 'Open Source',
28
32
  url: 'https://github.com/inferno-framework/carin-for-blue-button-test-kit'
29
33
  },
34
+ {
35
+ label: 'Download',
36
+ url: 'https://github.com/inferno-framework/carin-for-blue-button-test-kit/releases'
37
+ },
30
38
  {
31
39
  label: 'Implementation Guide',
32
40
  url: 'http://hl7.org/fhir/us/carin-bb/STU2'
@@ -23,12 +23,20 @@ module CarinForBlueButtonTestKit
23
23
  Development build for the [non-financial branch](https://build.fhir.org/ig/HL7/carin-bb/branches/non-financial/).
24
24
 
25
25
  )
26
- version VERSION
26
+
27
27
  links [
28
+ {
29
+ label: 'Report Issue',
30
+ url: 'https://github.com/inferno-framework/carin-for-blue-button-test-kit/issues'
31
+ },
28
32
  {
29
33
  label: 'Open Source',
30
34
  url: 'https://github.com/inferno-framework/carin-for-blue-button-test-kit'
31
35
  },
36
+ {
37
+ label: 'Download',
38
+ url: 'https://github.com/inferno-framework/carin-for-blue-button-test-kit/releases'
39
+ },
32
40
  {
33
41
  label: 'Implementation Guide',
34
42
  url: 'http://hl7.org/fhir/us/carin-bb/history.html'
@@ -0,0 +1,24 @@
1
+ <% test_file_list.each do |file_name| %>require_relative '<%= file_name %>'
2
+ <% end %>
3
+ module CarinForBlueButtonTestKit
4
+ module <%= module_name %>
5
+ class <%= class_name %> < Inferno::TestGroup
6
+ title '<%= title %> Tests'
7
+ short_description '<%= short_description %>'
8
+ description %(
9
+ <%=description %>
10
+ )
11
+
12
+ id :<%= group_id %>
13
+ run_as_group<% if optional? %>
14
+ optional
15
+ <% end %>
16
+
17
+ def self.metadata
18
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, '<%= profile_identifier %>', 'metadata.yml'), aliases: true))
19
+ end
20
+ <% test_id_list.each do |id| %>
21
+ test from: :<%= id %><% end %>
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,37 @@
1
+ require_relative '../../../carin_search_test'
2
+ require_relative '../../../generator/group_metadata'
3
+
4
+ module CarinForBlueButtonTestKit
5
+ module <%= module_name %>
6
+ class <%= class_name %> < Inferno::Test
7
+ include CarinForBlueButtonTestKit::CarinSearchTest
8
+
9
+ title 'Server returns valid results for <%= resource_type %> search by id + _include=<%= search_param %>'
10
+ description %(<%=
11
+ description %>
12
+ )
13
+
14
+ def self.properties
15
+ @properties ||= SearchTestProperties.new(
16
+ resource_type: '<%=resource_type%>',
17
+ search_param_names: ['_include'],
18
+ include_parameters: <%= include_parameters %>
19
+ )
20
+ end
21
+
22
+ id :<%= test_id %>
23
+
24
+ def self.metadata
25
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true))
26
+ end
27
+
28
+ def scratch_resources
29
+ scratch[:<%= resource_type.downcase %>_resources] ||= {}
30
+ end
31
+
32
+ run do
33
+ run_include_search('<%=include_search_param%>')
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,44 @@
1
+ require_relative '../../../must_support_test'
2
+ require_relative './read_test'
3
+ require_relative '../../../generator/group_metadata'
4
+
5
+ module CarinForBlueButtonTestKit
6
+ module <%= module_name %>
7
+ class <%= class_name %> < Inferno::Test
8
+ include CarinForBlueButtonTestKit::MustSupportTest
9
+ include CarinForBlueButtonTestKit::<%= module_name %>
10
+
11
+ title 'All must support elements are provided in the <%= specific_resource_type %> resources returned'
12
+ description %(
13
+ CARIN for Blue Button Responders SHALL be capable of populating all data elements as
14
+ part of the query results as specified by the CARIN for Blue Button Capability
15
+ Statement. This test will look through the <%= specific_resource_type %> resources
16
+ found previously for the following must support elements:
17
+
18
+ <%= must_support_list_string %><% if uscdi_list_string.present? %>
19
+
20
+ For ONC USCDI requirements, each <%= resource_type %> must support the following additional elements:
21
+
22
+ <%= uscdi_list_string %><% end %>
23
+ )
24
+
25
+ id :<%= test_id %>
26
+
27
+ def resource_type
28
+ '<%= resource_type %>'
29
+ end
30
+
31
+ def self.metadata
32
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true))
33
+ end
34
+
35
+ def scratch_resources
36
+ scratch[:<%= resource_type.downcase %>_resources] ||= {}
37
+ end
38
+
39
+ run do
40
+ perform_must_support_test(all_scratch_resources)
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,38 @@
1
+ require_relative '../../../read_test'
2
+ require 'json'
3
+
4
+ module CarinForBlueButtonTestKit
5
+ module <%= module_name %>
6
+ class <%= class_name %> < Inferno::Test
7
+ include CarinForBlueButtonTestKit::ReadTest
8
+
9
+ title 'Server returns correct <%= resource_type %> resource from <%= resource_type %> read interaction'
10
+ description 'A server <%= conformance_expectation %> support the <%= resource_type %> read interaction.'
11
+
12
+ id :<%= test_id %>
13
+ <% if no_search_params? %>
14
+ input :additional_<%= profile_identifier %>_ids,
15
+ title: "Additional <%= profile_identifier %> IDs",
16
+ type: 'text',
17
+ description: "<%= input_description.strip %>. This is optional, but must be provided if executing only the <%= resource_type %> test group.",
18
+ optional: true
19
+ <% end %>
20
+ def resource_type
21
+ '<%= resource_type %>'
22
+ end
23
+
24
+ def scratch_resources
25
+ scratch[:<%= resource_type.downcase %>_resources] ||= {}
26
+ end
27
+
28
+ def resource_ids
29
+ return [] unless respond_to? :additional_<%= profile_identifier%>_ids
30
+ additional_<%= profile_identifier%>_ids.split(',').map(&:strip)
31
+ end
32
+
33
+ run do
34
+ perform_read_test(<%= resource_collection_string %>)
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,9 @@
1
+ module CarinForBlueButtonTestKit
2
+ module <%= module_name %>
3
+ module ResourceList
4
+ RESOURCE_LIST = [
5
+ <%= resource_list_string %>
6
+ ].freeze
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,43 @@
1
+ require_relative '../../../carin_search_test'
2
+ require_relative '../../../generator/group_metadata'
3
+
4
+ module CarinForBlueButtonTestKit
5
+ module <%= module_name %>
6
+ class <%= class_name %> < Inferno::Test
7
+ include CarinForBlueButtonTestKit::CarinSearchTest
8
+
9
+ title 'Server returns valid results for <%= resource_type %> search by <%= search_param_name_string %>'
10
+ description %(<%=
11
+ description %>
12
+ )
13
+
14
+ id :<%= test_id %><% if optional? %>
15
+ optional
16
+ <% end %>
17
+ <% if first_search? %>
18
+ input :<%=input_id%>,
19
+ title: '<%=input_title.strip%>',
20
+ type: 'text',
21
+ description: '<%=input_description.strip%>'<%if !needs_patient_id?%>,
22
+ optional: true<% end %>
23
+ <% end %>
24
+ def self.properties
25
+ @properties ||= SearchTestProperties.new(
26
+ <%= search_test_properties_string.gsub("\n", "\n" + " "*2) %>
27
+ )
28
+ end
29
+
30
+ def self.metadata
31
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true))
32
+ end
33
+
34
+ def scratch_resources
35
+ scratch[:<%= resource_type.downcase %>_resources] ||= {}
36
+ end
37
+
38
+ run do
39
+ run_search_test<% if first_search? && !needs_patient_id? %>(<%=input_id%>)<% end %>
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,92 @@
1
+ require 'inferno/dsl/oauth_credentials'
2
+ require 'smart_app_launch_test_kit'
3
+ require_relative '../../version'
4
+
5
+ require_relative '../../capability_statement/capability_statement_group'
6
+ require_relative '<%= smart_launch_file_name %>'
7
+
8
+ <% group_file_list.each do |file_name| %>require_relative '<%= file_name %>'
9
+ <% end %>
10
+ module CarinForBlueButtonTestKit
11
+ module <%= module_name %>
12
+ class <%= class_name %> < Inferno::TestSuite
13
+ title '<%= title %>'
14
+ description %(
15
+ The CARIN for Blue Button test suite validates system conformance to the HL7® FHIR® [CARIN for Blue Button® Implementation Guide](<%= ig_link %>).
16
+
17
+ <% if module_name.include? ("FINANCIAL") %>
18
+ Development build for the [non-financial branch](https://build.fhir.org/ig/HL7/carin-bb/branches/non-financial/).
19
+ <% end %>
20
+ )
21
+
22
+ links [
23
+ {
24
+ label: 'Report Issue',
25
+ url: 'https://github.com/inferno-framework/carin-for-blue-button-test-kit/issues'
26
+ },
27
+ {
28
+ label: 'Open Source',
29
+ url: 'https://github.com/inferno-framework/carin-for-blue-button-test-kit'
30
+ },
31
+ {
32
+ label: 'Download',
33
+ url: 'https://github.com/inferno-framework/carin-for-blue-button-test-kit/releases'
34
+ },
35
+ {
36
+ label: 'Implementation Guide',
37
+ url: '<%= ig_link %>'
38
+ }
39
+ ]
40
+
41
+ def self.metadata
42
+ @metadata ||= YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)[:groups].map do |raw_metadata|
43
+ Generator::GroupMetadata.new(raw_metadata)
44
+ end
45
+ end
46
+
47
+ id :<%= suite_id %>
48
+
49
+ VALIDATION_MESSAGE_FILTERS = [
50
+ /\A\S+: \S+: URL value '.*' does not resolve/
51
+ ].freeze
52
+
53
+ fhir_resource_validator do
54
+ igs '<%= ig_relative_path %>'
55
+
56
+ exclude_message do |message|
57
+ VALIDATION_MESSAGE_FILTERS.any? { |filter| filter.match? message.message }
58
+ end
59
+ end
60
+
61
+ input :url,
62
+ title: 'FHIR Endpoint',
63
+ description: 'URL of the FHIR endpoint'
64
+
65
+ fhir_client do
66
+ url :url
67
+ oauth_credentials :smart_credentials
68
+ end
69
+
70
+ group from: :<%= smart_launch_group_id %>
71
+
72
+ group do
73
+ title 'C4BB FHIR API Tests'
74
+ description %(
75
+ The CARIN for Blue Button FHIR API Tests evaluate the ability of a system (C4BB FHIR Server)
76
+ to support required and optional FHIR operations and search parameters to return
77
+ conformant C4BB resources.
78
+ )
79
+
80
+ input :smart_credentials,
81
+ title: 'OAuth Credentials',
82
+ type: :oauth_credentials,
83
+ optional: true
84
+ input_order :url, :smart_credentials
85
+
86
+ group from: :capability_statement_group
87
+ <% group_id_list.each do |id| %>
88
+ group from: :<%= id %><% end %>
89
+ end
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,34 @@
1
+ require_relative '../../../validation_test'
2
+ require_relative './read_test'
3
+
4
+ module CarinForBlueButtonTestKit
5
+ module <%= module_name %>
6
+ class <%= class_name %> < Inferno::Test
7
+ include CarinForBlueButtonTestKit::ValidationTest
8
+ include CarinForBlueButtonTestKit::<%= module_name %>
9
+
10
+ id :<%= test_id %>
11
+ title '<%= resource_type %> resources returned during previous tests conform to the <%= profile_name %>'
12
+ description %(<%=
13
+ description %>
14
+ )
15
+
16
+ output :dar_code_found, :dar_extension_found
17
+
18
+ def resource_type
19
+ '<%= resource_type %>'
20
+ end
21
+
22
+ def scratch_resources
23
+ scratch[:<%= resource_type.downcase %>_resources] ||= {}
24
+ end
25
+
26
+ run do
27
+ perform_validation_test(scratch_resources[:all] || [],
28
+ '<%= profile_url %>',
29
+ '<%= profile_version %>',
30
+ skip_if_empty: <%= skip_if_empty %>)
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,70 @@
1
+ require_relative 'version'
2
+
3
+ module CarinForBlueButtonTestKit
4
+ class Metadata < Inferno::TestKit
5
+ id :carin_for_blue_button_test_kit
6
+ title 'CARIN IG for Blue Button Test Kit'
7
+ description <<~DESCRIPTION
8
+ The Carin IG for Blue Button Test Kit validates the conformance of server
9
+ and client implementations to the [CARIN IG for Blue
10
+ Button](https://hl7.org/fhir/us/carin-bb/) including versions:
11
+ - [**v1.1.0**](http://hl7.org/fhir/us/carin-bb/STU1.1) (server tests only)
12
+ - [**v2.0.0**](http://hl7.org/fhir/us/carin-bb/STU2) (server and client tests)
13
+ - **Non-financial Proposal** (server tests only)
14
+
15
+ <!-- break -->
16
+
17
+ This test kit is built using the [Inferno Framework](https://inferno-framework.github.io/inferno-core/). The Inferno Framework is
18
+ designed for reuse and aims to make it easier to build test kits for any
19
+ FHIR-based data exchange.
20
+
21
+ ## Status
22
+
23
+ These tests are intended to allow CARIN IG for Blue Button server implementers to perform checks of their server against CARIN IG for Blue Button requrirements. Future versions of these tests may validate other requirements and may change how these are tested.
24
+
25
+ For more details on the specific validations performed as part of testing the following requirements, see the test descriptions within the test suites.
26
+
27
+ ### Server Tests
28
+
29
+ The server suites currently test the following requirements:
30
+ - SMART on FHIR Discovery
31
+ - SMART App Launch Protocol's standalone launch sequence
32
+ - Support for Capability Statement
33
+ - Support for Must Support Elements
34
+ - Profile Validation
35
+ - Reference Validation
36
+ - Searching on ExplanationofBenefit Resource
37
+
38
+ ### Client Tests
39
+
40
+ The client suite currently tests that clients are able to
41
+ - Fetch instances conformant to each FHIR profile defined in the CARIN IG.
42
+ - Perform searches using each of the required search parameters.
43
+ - Correctly process instances containing populated examples of all must support elements.
44
+
45
+ You can find additional information on the IG requirements that the client test suite covers
46
+ and does not cover in the [Requirements Coverage](https://github.com/inferno-framework/carin-for-blue-button-test-kit/blob/main/lib/carin_for_blue_button_test_kit/requirements/generated/carin-for-blue-button-test-kit_requirements_coverage.csv)
47
+ CSV document.
48
+
49
+ Specific known limitations of the client tests include:
50
+ - Inferno's simulated CARIN server does not support all required search parameters on the ExplanationOfBenefit resource, including service-date, service-start-date, billable-period-start, type, and _include=ExplanationOfBenefit:insurer. Inferno recognizes searches made using those parameters and will give the client credit for having performed them but will always return an OperationOutcome indicating failure.
51
+ - Testers must manually configure their client system to connect to a specific target patient and ingest specific curated sample CARIN data. Future versions of the tests may allow more flexibility in the patient identity and the associated data.
52
+ - Testers must attest to their system's ability to process and retain all received information. Currently, this is implemented as a single test. Future versions of the tests may split this test out into different attestations per profile or other more fine-grained organization.
53
+
54
+ ## Repository
55
+
56
+ The Carin IG for Blue Button Test Kit GitHub repository can be [found here](https://github.com/inferno-framework/carin-for-blue-button-test-kit).
57
+
58
+ ## Providing Feedback and Reporting Issues
59
+
60
+ Please report any issues with this set of tests in the [issues section](https://github.com/inferno-framework/carin-for-blue-button-test-kit/issues) of the repository.
61
+ DESCRIPTION
62
+ suite_ids [:c4bb_v110, :c4bb_v200, :c4bb_v200_client, :c4bb_v200devnonfinancial]
63
+ tags ['CARIN']
64
+ last_updated LAST_UPDATED
65
+ version VERSION
66
+ maturity 'Medium'
67
+ authors ['Inferno Team']
68
+ repo 'https://github.com/inferno-framework/carin-for-blue-button-test-kit'
69
+ end
70
+ end
@@ -0,0 +1,53 @@
1
+ Req Set,ID,Reason,Details
2
+ hl7.fhir.us.carin-bb_2.0.0,7,Not Verifiable,Can't know if the Health Plan API actor knows the precise reason for the absence of data
3
+ hl7.fhir.us.carin-bb_2.0.0,15,Not Verifiable,There's no point in checking that maybe something exists that could exist.
4
+ hl7.fhir.us.carin-bb_2.0.0,16,Not Verifiable,Nothing to verify
5
+ hl7.fhir.us.carin-bb_2.0.0,18,Not Verifiable,There's no point in checking that maybe something exists that could exist.
6
+ hl7.fhir.us.carin-bb_2.0.0,20,Not Verifiable,Cannot know if the a business value is an exact match or not
7
+ hl7.fhir.us.carin-bb_2.0.0,21,Not Verifiable,There's no point in checking that maybe something exists that could exist.
8
+ hl7.fhir.us.carin-bb_2.0.0,22,Not Verifiable,There's no point in checking that maybe something exists that could exist.
9
+ hl7.fhir.us.carin-bb_2.0.0,23,Not Verifiable,There's no point in checking that maybe something exists that could exist.
10
+ hl7.fhir.us.carin-bb_2.0.0,24,Not Verifiable,Doesn't specify where the descriptions would be provided.
11
+ hl7.fhir.us.carin-bb_2.0.0,25,Not Verifiable,There's no point in checking that maybe something exists that could exist.
12
+ hl7.fhir.us.carin-bb_2.0.0,26,Not Verifiable,There's no point in checking that maybe something exists that could exist.
13
+ hl7.fhir.us.carin-bb_2.0.0,27,Not Verifiable,This is a description of the CPCDS dataset rather than a requirement specification for an implementer.
14
+ hl7.fhir.us.carin-bb_2.0.0,29,Not Verifiable,This defines a mapping not a requirement on the Health Plan.
15
+ hl7.fhir.us.carin-bb_2.0.0,49,Not Verifiable,"""Proper"" undefined"
16
+ hl7.fhir.us.carin-bb_2.0.0,50,Not Verifiable,"""Appropriately secured"" undefined"
17
+ hl7.fhir.us.carin-bb_2.0.0,52,Not Verifiable,We can't know agreements between trading partners
18
+ hl7.fhir.us.carin-bb_2.0.0,59,Not Tested,"""should consider"" not strong enough to warrant testing."
19
+ hl7.fhir.us.carin-bb_2.0.0,82,Not Tested,"Maybe - It's a ""MAY"" requirement but I think the criteria will turn it into a ""SHALL"" requirement."
20
+ hl7.fhir.us.carin-bb_2.0.0,84,Not Verifiable,Doesn't specify where and how these will be recorded so they are not verifiable.
21
+ hl7.fhir.us.carin-bb_2.0.0,85,Not Verifiable,"Unclear wth ""IG related data"" is"
22
+ hl7.fhir.us.carin-bb_2.0.0,88,Not Verifiable,There's no point in checking that maybe something exists that could exist.
23
+ hl7.fhir.us.carin-bb_2.0.0,91,Not Verifiable,Cannot know what data was effective at what time
24
+ hl7.fhir.us.carin-bb_2.0.0,92,Not Verifiable,There's no point in checking that maybe something exists that could exist.
25
+ hl7.fhir.us.carin-bb_2.0.0,93,Not Verifiable,Cannot know when data was last changed
26
+ hl7.fhir.us.carin-bb_2.0.0,94,Not Verifiable,Cannot verify the internal of an app
27
+ hl7.fhir.us.carin-bb_2.0.0,96,Not Verifiable,Overly broad
28
+ hl7.fhir.us.carin-bb_2.0.0,104,Not Verifiable,There's no point in checking that maybe something exists that could exist.
29
+ hl7.fhir.us.carin-bb_2.0.0,106,Not Verifiable,There's no point in checking that maybe something exists that could exist.
30
+ hl7.fhir.us.carin-bb_2.0.0,107,Not Verifiable,MAY requirement
31
+ hl7.fhir.us.carin-bb_2.0.0,121,Not Verifiable,Cannot test how client apps do look ups
32
+ hl7.fhir.us.carin-bb_2.0.0,122,Not Verifiable,Cannot confirm if client apps assign value to something
33
+ hl7.fhir.us.carin-bb_2.0.0,123,Not Verifiable,There's no point in checking that maybe something exists that could exist.
34
+ hl7.fhir.us.carin-bb_2.0.0,126,Not Verifiable,There's no point in checking that maybe something exists that could exist.
35
+ hl7.fhir.us.carin-bb_2.0.0,137,Not Verifiable,Cannot confirm if client apps assign value to something
36
+ hl7.fhir.us.carin-bb_2.0.0,138,Not Verifiable,Cannot confirm how a client uses values
37
+ hl7.fhir.us.carin-bb_2.0.0,139,Not Verifiable,Cannot confirm if client apps assign value to something
38
+ hl7.fhir.us.carin-bb_2.0.0,140,Not Verifiable,Cannot confirm how a client uses values
39
+ hl7.fhir.us.carin-bb_2.0.0,143,Not Verifiable,Appears to be business logic not a calculation that we can confirm
40
+ hl7.fhir.us.carin-bb_2.0.0,147,Not Verifiable,Cannot confirm how a client uses values
41
+ hl7.fhir.us.carin-bb_2.0.0,154,Not Verifiable,Appears to be business logic not a calculation that we can confirm
42
+ hl7.fhir.us.carin-bb_2.0.0,155,Not Verifiable,Appears to be business logic not a calculation that we can confirm
43
+ hl7.fhir.us.carin-bb_2.0.0,166,Not Verifiable,Cannot know how clients interpret data.
44
+ hl7.fhir.us.carin-bb_2.0.0,167,Not Verifiable,Cannot know how clients interpret data.
45
+ hl7.fhir.us.carin-bb_2.0.0,169,Not Verifiable,Unclear if this should *only* be populated if it's different
46
+ hl7.fhir.us.carin-bb_2.0.0,174,Not Verifiable,"This is a definition, not a requirement."
47
+ hl7.fhir.us.carin-bb_2.0.0,176,Not Verifiable,Cannot know when data was in effect
48
+ hl7.fhir.us.carin-bb_2.0.0,180,Not Verifiable,Cannot confirm how a client uses values
49
+ hl7.fhir.us.carin-bb_2.0.0,181,Not Verifiable,Business rule that we cannot verify
50
+ hl7.fhir.us.carin-bb_2.0.0,182,Not Verifiable,Cannot know
51
+ hl7.fhir.us.carin-bb_2.0.0,184,Not Verifiable,Cannot confirm how a client uses values
52
+ hl7.fhir.us.carin-bb_2.0.0,185,Not Verifiable,Cannot know
53
+ hl7.fhir.us.carin-bb_2.0.0,188,Not Verifiable,Cannot confirm how a client uses values