onc_certification_g10_test_kit 2.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +201 -0
  3. data/lib/inferno/exceptions.rb +31 -0
  4. data/lib/inferno/ext/bloomer.rb +24 -0
  5. data/lib/inferno/repositiories/validators.rb +17 -0
  6. data/lib/inferno/repositiories/value_sets.rb +26 -0
  7. data/lib/inferno/terminology/bcp47.rb +95 -0
  8. data/lib/inferno/terminology/bcp_13.rb +26 -0
  9. data/lib/inferno/terminology/codesystem.rb +49 -0
  10. data/lib/inferno/terminology/expected_manifest.yml +1123 -0
  11. data/lib/inferno/terminology/fhir_package_manager.rb +69 -0
  12. data/lib/inferno/terminology/loader.rb +298 -0
  13. data/lib/inferno/terminology/tasks/check_built_terminology.rb +77 -0
  14. data/lib/inferno/terminology/tasks/cleanup.rb +13 -0
  15. data/lib/inferno/terminology/tasks/cleanup_precursors.rb +23 -0
  16. data/lib/inferno/terminology/tasks/count_codes_in_value_set.rb +20 -0
  17. data/lib/inferno/terminology/tasks/create_value_set_validators.rb +34 -0
  18. data/lib/inferno/terminology/tasks/download_fhir_terminology.rb +27 -0
  19. data/lib/inferno/terminology/tasks/download_umls.rb +109 -0
  20. data/lib/inferno/terminology/tasks/download_umls_notice.rb +20 -0
  21. data/lib/inferno/terminology/tasks/expand_value_set_to_file.rb +36 -0
  22. data/lib/inferno/terminology/tasks/process_umls.rb +91 -0
  23. data/lib/inferno/terminology/tasks/process_umls_translations.rb +85 -0
  24. data/lib/inferno/terminology/tasks/run_umls_jar.rb +75 -0
  25. data/lib/inferno/terminology/tasks/temp_dir.rb +27 -0
  26. data/lib/inferno/terminology/tasks/unzip_umls.rb +42 -0
  27. data/lib/inferno/terminology/tasks/validate_code.rb +36 -0
  28. data/lib/inferno/terminology/tasks.rb +11 -0
  29. data/lib/inferno/terminology/terminology_configuration.rb +52 -0
  30. data/lib/inferno/terminology/terminology_validation.rb +42 -0
  31. data/lib/inferno/terminology/validator.rb +64 -0
  32. data/lib/inferno/terminology/value_set.rb +462 -0
  33. data/lib/inferno/terminology.rb +16 -0
  34. data/lib/onc_certification_g10_test_kit/authorization_request_builder.rb +87 -0
  35. data/lib/onc_certification_g10_test_kit/base_token_refresh_group.rb +48 -0
  36. data/lib/onc_certification_g10_test_kit/bulk_data_authorization.rb +235 -0
  37. data/lib/onc_certification_g10_test_kit/bulk_data_group_export.rb +255 -0
  38. data/lib/onc_certification_g10_test_kit/bulk_data_group_export_validation.rb +474 -0
  39. data/lib/onc_certification_g10_test_kit/bulk_data_jwks.json +58 -0
  40. data/lib/onc_certification_g10_test_kit/bulk_export_validation_tester.rb +171 -0
  41. data/lib/onc_certification_g10_test_kit/configuration_checker.rb +104 -0
  42. data/lib/onc_certification_g10_test_kit/export_kick_off_performer.rb +12 -0
  43. data/lib/onc_certification_g10_test_kit/igs/StructureDefinition-bodyheight.json +3772 -0
  44. data/lib/onc_certification_g10_test_kit/igs/StructureDefinition-bodytemp.json +3772 -0
  45. data/lib/onc_certification_g10_test_kit/igs/StructureDefinition-bodyweight.json +3772 -0
  46. data/lib/onc_certification_g10_test_kit/igs/StructureDefinition-bp.json +6034 -0
  47. data/lib/onc_certification_g10_test_kit/igs/StructureDefinition-heartrate.json +3756 -0
  48. data/lib/onc_certification_g10_test_kit/igs/StructureDefinition-resprate.json +3756 -0
  49. data/lib/onc_certification_g10_test_kit/limited_scope_grant_test.rb +66 -0
  50. data/lib/onc_certification_g10_test_kit/multi_patient_api.rb +43 -0
  51. data/lib/onc_certification_g10_test_kit/patient_context_test.rb +30 -0
  52. data/lib/onc_certification_g10_test_kit/profile_guesser.rb +69 -0
  53. data/lib/onc_certification_g10_test_kit/resource_access_test.rb +96 -0
  54. data/lib/onc_certification_g10_test_kit/restricted_access_test.rb +12 -0
  55. data/lib/onc_certification_g10_test_kit/restricted_resource_type_access_group.rb +303 -0
  56. data/lib/onc_certification_g10_test_kit/smart_app_launch_invalid_aud_group.rb +136 -0
  57. data/lib/onc_certification_g10_test_kit/smart_ehr_practitioner_app_group.rb +209 -0
  58. data/lib/onc_certification_g10_test_kit/smart_invalid_token_group.rb +197 -0
  59. data/lib/onc_certification_g10_test_kit/smart_limited_app_group.rb +123 -0
  60. data/lib/onc_certification_g10_test_kit/smart_public_standalone_launch_group.rb +113 -0
  61. data/lib/onc_certification_g10_test_kit/smart_scopes_test.rb +153 -0
  62. data/lib/onc_certification_g10_test_kit/smart_standalone_patient_app_group.rb +177 -0
  63. data/lib/onc_certification_g10_test_kit/terminology_binding_validator.rb +140 -0
  64. data/lib/onc_certification_g10_test_kit/token_revocation_group.rb +133 -0
  65. data/lib/onc_certification_g10_test_kit/unauthorized_access_test.rb +25 -0
  66. data/lib/onc_certification_g10_test_kit/unrestricted_resource_type_access_group.rb +375 -0
  67. data/lib/onc_certification_g10_test_kit/version.rb +3 -0
  68. data/lib/onc_certification_g10_test_kit/visual_inspection_and_attestations_group.rb +470 -0
  69. data/lib/onc_certification_g10_test_kit/well_known_capabilities_test.rb +37 -0
  70. data/lib/onc_certification_g10_test_kit.rb +223 -0
  71. metadata +310 -0
@@ -0,0 +1,66 @@
1
+ module ONCCertificationG10TestKit
2
+ class LimitedScopeGrantTest < Inferno::Test
3
+ title 'OAuth token exchange response grants scope that is limited to those selected by user'
4
+ description %(
5
+ The ONC certification criteria requires that patients are capable of
6
+ choosing which FHIR resources to authorize to the application. For this
7
+ test, the tester specifies which resources will be selected during
8
+ authorization, and this verifies that only those resources are granted
9
+ according to the scopes returned during the access token response.
10
+ )
11
+ id :g10_limited_scope_grant
12
+
13
+ input :received_scopes, :expected_resources
14
+
15
+ def possible_resources
16
+ [
17
+ 'AllergyIntolerance',
18
+ 'CarePlan',
19
+ 'CareTeam',
20
+ 'Condition',
21
+ 'Device',
22
+ 'DiagnosticReport',
23
+ 'DocumentReference',
24
+ 'Goal',
25
+ 'Immunization',
26
+ 'MedicationRequest',
27
+ 'Observation',
28
+ 'Procedure',
29
+ 'Patient'
30
+ ]
31
+ end
32
+
33
+ def scope_granting_access?(resource_type, scopes)
34
+ scopes.any? do |scope|
35
+ scope.start_with?("patient/#{resource_type}", 'patient/*') && scope.end_with?('*', 'read')
36
+ end
37
+ end
38
+
39
+ run do
40
+ expected_resources_list = expected_resources.split(',').map(&:strip).map(&:downcase)
41
+ allowed_resources =
42
+ possible_resources.select { |resource_type| expected_resources_list.include? resource_type.downcase }
43
+ forbidden_resources = possible_resources - allowed_resources
44
+
45
+ received_scope_list = received_scopes.split
46
+
47
+ improperly_granted_resources =
48
+ forbidden_resources.select { |resource_type| scope_granting_access?(resource_type, received_scope_list) }
49
+ improperly_denied_resources =
50
+ allowed_resources.reject { |resource_type| scope_granting_access?(resource_type, received_scope_list) }
51
+
52
+ assert improperly_granted_resources.empty?,
53
+ 'User expected to deny the following resources that were granted: ' \
54
+ "#{improperly_granted_resources.join(', ')}"
55
+ assert improperly_denied_resources.empty?,
56
+ 'User expected to grant access to the following resources: ' \
57
+ "#{improperly_denied_resources.join(', ')}"
58
+
59
+ assert forbidden_resources.present?,
60
+ 'This test requires at least one resource to be denied, but the received scopes ' \
61
+ "`#{received_scopes}` grant access to all resource types."
62
+
63
+ pass "Resources to be denied: #{forbidden_resources.join(', ')}"
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,43 @@
1
+ require_relative 'bulk_data_authorization'
2
+ require_relative 'bulk_data_group_export'
3
+ require_relative 'bulk_data_group_export_validation'
4
+
5
+ module ONCCertificationG10TestKit
6
+ class MultiPatientAPIGroup < Inferno::TestGroup
7
+ title 'Multi-Patient Authorization and API'
8
+ short_title 'Multi-Patient API'
9
+
10
+ input_instructions %(
11
+ Register Inferno as a bulk data client with the following information, and
12
+ enter the client id and client registration in the appropriate fields.
13
+ This set of tests only checks the Group export. Enter the group export
14
+ information in the appropriate box.
15
+
16
+ Register Inferno with the following JWK Set Url:
17
+
18
+ * `#{Inferno::Application[:base_url]}/custom/g10_certification/.well-known/jwks.json`
19
+ )
20
+
21
+ description %(
22
+ Demonstrate the ability to export clinical data for multiple patients in
23
+ a group using [FHIR Bulk Data Access
24
+ IG](https://hl7.org/fhir/uv/bulkdata/). This test uses [Backend Services
25
+ Authorization](https://hl7.org/fhir/uv/bulkdata/authorization/index.html)
26
+ to obtain an access token from the server. After authorization, a group
27
+ level bulk data export request is initialized. Finally, this test reads
28
+ exported NDJSON files from the server and validates the resources in
29
+ each file. To run the test successfully, the selected group export is
30
+ required to have every type of resource mapped to [USCDI data
31
+ elements](https://www.healthit.gov/isa/us-core-data-interoperability-uscdi).
32
+ Additionally, it is expected the server will provide Encounter,
33
+ Location, Organization, and Practitioner resources as they are
34
+ referenced as must support elements in required resources.
35
+ )
36
+ id :multi_patient_api
37
+ run_as_group
38
+
39
+ group from: :bulk_data_authorization
40
+ group from: :bulk_data_group_export
41
+ group from: :bulk_data_group_export_validation
42
+ end
43
+ end
@@ -0,0 +1,30 @@
1
+ module ONCCertificationG10TestKit
2
+ class PatientContextTest < Inferno::Test
3
+ title 'OAuth token exchange response body contains patient context and patient resource can be retrieved'
4
+ description %(
5
+ The `patient` field is a String value with a patient id, indicating that
6
+ the app was launched in the context of this FHIR Patient.
7
+ )
8
+ id :g10_patient_context
9
+ input :patient_id, :url
10
+ input :smart_credentials, type: :oauth_credentials
11
+
12
+ fhir_client :authenticated do
13
+ url :url
14
+ oauth_credentials :smart_credentials
15
+ end
16
+
17
+ run do
18
+ skip_if smart_credentials.access_token.blank?, 'No access token was received during the SMART launch'
19
+
20
+ skip_if patient_id.blank?, 'Token response did not contain `patient` field'
21
+
22
+ skip_if request.status != 200, 'Token was not successfully refreshed' if config.options[:refresh_test]
23
+
24
+ fhir_read(:patient, patient_id, client: :authenticated)
25
+
26
+ assert_response_status(200)
27
+ assert_resource_type(:patient)
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,69 @@
1
+ module ONCCertificationG10TestKit
2
+ module ProfileGuesser
3
+ def extract_profile(profile)
4
+ if ['Location', 'Medication'].include?(profile)
5
+ return USCoreTestKit::USCoreTestSuite.metadata.find do |meta|
6
+ meta.resource == profile
7
+ end.profile_url
8
+ end
9
+ "USCoreTestKit::#{profile}Group".constantize.metadata.profile_url
10
+ end
11
+
12
+ def observation_contains_code(observation_resource, code)
13
+ observation_resource&.code&.coding&.any? { |coding| coding&.code == code }
14
+ end
15
+
16
+ def resource_contains_category(resource, category_code, category_system = nil) # rubocop:disable Metrics/CyclomaticComplexity
17
+ resource&.category&.any? do |category|
18
+ category.coding&.any? do |coding|
19
+ coding.code == category_code &&
20
+ (category_system.blank? || coding.system.blank? || category_system == coding.system)
21
+ end
22
+ end
23
+ end
24
+
25
+ def guess_profile(resource) # rubocop:disable Metrics/CyclomaticComplexity
26
+ case resource.resourceType
27
+ when 'DiagnosticReport'
28
+ return extract_profile('DiagnosticReportLab') if resource_contains_category(resource, 'LAB', 'http://terminology.hl7.org/CodeSystem/v2-0074')
29
+
30
+ extract_profile('DiagnosticReportNote')
31
+ when 'Observation'
32
+ return extract_profile('Smokingstatus') if observation_contains_code(resource, '72166-2')
33
+
34
+ return extract_profile('ObservationLab') if resource_contains_category(resource, 'laboratory', 'http://terminology.hl7.org/CodeSystem/observation-category')
35
+
36
+ return extract_profile('PediatricBmiForAge') if observation_contains_code(resource, '59576-9')
37
+
38
+ return extract_profile('PediatricWeightForHeight') if observation_contains_code(resource, '77606-2')
39
+
40
+ return extract_profile('PulseOximetry') if observation_contains_code(resource, '59408-5')
41
+
42
+ return extract_profile('HeadCircumference') if observation_contains_code(resource, '8289-1')
43
+
44
+ # FHIR Vital Signs profiles: https://www.hl7.org/fhir/observation-vitalsigns.html
45
+ # Vital Signs Panel, Oxygen Saturation are not required by USCDI
46
+ # Body Mass Index is replaced by :pediatric_bmi_age Profile
47
+ # Systolic Blood Pressure, Diastolic Blood Pressure are covered by :blood_pressure Profile
48
+ # Head Circumference is replaced by US Core Head Occipital-frontal Circumference Percentile Profile
49
+ return extract_profile('Bp') if observation_contains_code(resource, '85354-9')
50
+
51
+ return extract_profile('Bodyheight') if observation_contains_code(resource, '8302-2')
52
+
53
+ return extract_profile('Bodytemp') if observation_contains_code(resource, '8310-5')
54
+
55
+ return extract_profile('Bodyweight') if observation_contains_code(resource, '29463-7')
56
+
57
+ return extract_profile('Heartrate') if observation_contains_code(resource, '8867-4')
58
+
59
+ return extract_profile('Resprate') if observation_contains_code(resource, '9279-1')
60
+
61
+ nil
62
+ else
63
+ extract_profile(resource.resourceType)
64
+ end
65
+ rescue StandardError
66
+ skip "Could not determine profile of \"#{resource.resourceType}\" resource."
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,96 @@
1
+ module ONCCertificationG10TestKit
2
+ class ResourceAccessTest < Inferno::Test
3
+ id :g10_resource_access_test
4
+ input :patient_id, :received_scopes
5
+
6
+ title 'Access to resources are restricted properly based on patient-selected scope'
7
+ description %(
8
+ This test ensures that access to the resource is granted or denied
9
+ based on the selection by the tester prior to the execution of the test.
10
+ If the tester indicated that access will be granted to this resource,
11
+ this test verifies that a search by patient in this resource does not
12
+ result in an access denied result. If the tester indicated that access
13
+ will be denied for this resource, this verifies that search by patient
14
+ in the resource results in an access denied result.
15
+ )
16
+
17
+ def resource_group
18
+ raise StandardError, '#resource_group must be overridden'
19
+ end
20
+
21
+ def search_params
22
+ @search_params ||=
23
+ resource_group.metadata.searches.first[:names].each_with_object({}) do |name, params|
24
+ params[name] = search_param_value(name)
25
+ end
26
+ end
27
+
28
+ def search_param_value(name)
29
+ return patient_id if ['patient', '_id', 'subject'].include?(name)
30
+
31
+ resource_group.metadata.search_definitions[name.to_sym][:values].first
32
+ end
33
+
34
+ def status_search_params
35
+ {
36
+ "#{status_search_param_name}": search_param_value(status_search_param_name)
37
+ }
38
+ end
39
+
40
+ def status_search_param_name
41
+ @status_search_param_name ||=
42
+ resource_group.metadata.search_definitions.keys.find { |key| key.to_s.include? 'status' }
43
+ end
44
+
45
+ def status_search_param_value
46
+ @status_search_param_value ||=
47
+ resource_group.metadata.search_definitions[status_search_param_name][:values].first
48
+ end
49
+
50
+ def resource_search_test
51
+ resource_group.tests.first
52
+ end
53
+
54
+ def request_should_succeed?
55
+ true
56
+ end
57
+
58
+ def resource_type
59
+ resource_search_test.properties.resource_type
60
+ end
61
+
62
+ run do
63
+ skip_if patient_id.blank?, 'Patient ID not provided to test.'
64
+ skip_if received_scopes.blank?, 'No scopes were received.'
65
+
66
+ fhir_search(resource_type, params: search_params)
67
+
68
+ if request_should_succeed?
69
+ if request.status == 400 && resource_search_test.properties.possible_status_search?
70
+ error_message = %(
71
+ Server is expected to grant access to the resource. A search
72
+ without a status can return an HTTP 400 status, but must also must
73
+ include an OperationOutcome. No OperationOutcome is present in the
74
+ body of the response.
75
+ )
76
+ begin
77
+ parsed_body = JSON.parse(response[:body])
78
+ assert parsed_body['resourceType'] == 'OperationOutcome', error_message
79
+ rescue JSON::ParserError
80
+ assert false, error_message
81
+ end
82
+ fhir_search(
83
+ :allergy_intolerance,
84
+ params: search_params.merge(status_search_params)
85
+ )
86
+ end
87
+
88
+ assert_response_status(200)
89
+ pass "Access expected to be granted and request properly returned #{request.status}"
90
+ else
91
+ message = "Bad response code: expected 403 (Forbidden) or 401 (Unauthorized), but found #{request.status}."
92
+ assert [401, 403].include?(request.status), message
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,12 @@
1
+ require_relative 'resource_access_test'
2
+
3
+ module ONCCertificationG10TestKit
4
+ class RestrictedAccessTest < ResourceAccessTest
5
+ id :g10_restricted_access_test
6
+ input :expected_resources
7
+
8
+ def request_should_succeed?
9
+ expected_resources.split(',').any? { |resource| resource.strip.casecmp? resource_type }
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,303 @@
1
+ require_relative 'restricted_access_test'
2
+
3
+ module ONCCertificationG10TestKit
4
+ class RestrictedResourceTypeAccessGroup < Inferno::TestGroup
5
+ title 'Restricted Resource Type Access'
6
+ description %(
7
+ This test ensures that patients are able to grant or deny access to a
8
+ subset of resources to an app as requied by the certification criteria.
9
+ The tester provides a list of resources that will be granted during the
10
+ SMART App Launch process, and this test verifies that the scopes granted
11
+ are consistent with what the tester provided. It also formulates queries
12
+ to ensure that the app is either given access to, or denied access to, the
13
+ appropriate resource types based on those chosen by the tester.
14
+
15
+ Resources that can be mapped to USCDI are checked in this test, including:
16
+
17
+ * AllergyIntolerance
18
+ * CarePlan
19
+ * CareTeam
20
+ * Condition
21
+ * Device
22
+ * DiagnosticReport
23
+ * DocumentReference
24
+ * Goal
25
+ * Immunization
26
+ * MedicationRequest
27
+ * Observation
28
+ * Procedure
29
+
30
+ For each of the resources that can be mapped to USCDI data class or
31
+ elements, this set of tests performs a minimum number of requests to
32
+ determine if access to the resource type is appropriately allowed or
33
+ denied given the scope granted. In the case of the Patient resource, this
34
+ test simply performs a read request. For other resources, it performs a
35
+ search by patient that must be supported by the server. In some cases,
36
+ servers can return an error message if a status search parameter is not
37
+ provided. For these, the test will perform an additional search with the
38
+ required status search parameter.
39
+
40
+ This set of tests does not attempt to access resources that do not
41
+ directly map to USCDI v1, including Encounter, Location, Organization, and
42
+ Practitioner. It also does not test Provenance, as this resource type is
43
+ accessed by queries through other resource types. These resource types are
44
+ accessed in the more comprehensive Single Patient Query tests.
45
+
46
+ If the tester chooses to not grant access to a resource, the queries
47
+ associated with that resource must result in either a 401 (Unauthorized)
48
+ or 403 (Forbidden) status code. The flexiblity provided here is due to
49
+ some ambiguity in the specifications tested.
50
+ )
51
+ id :g10_restricted_resource_type_access
52
+
53
+ input :url, :patient_id, :received_scopes, :expected_resources
54
+ input :smart_credentials, type: :oauth_credentials
55
+
56
+ config(
57
+ inputs: {
58
+ client_secret: {
59
+ optional: false
60
+ }
61
+ }
62
+ )
63
+
64
+ fhir_client do
65
+ url :url
66
+ oauth_credentials :smart_credentials
67
+ end
68
+
69
+ test from: :g10_restricted_access_test do
70
+ title 'Access to Patient resources are restricted properly based on patient-selected scope'
71
+ description %(
72
+ This test ensures that access to the Patient is granted or
73
+ denied based on the selection by the tester prior to the execution of
74
+ the test. If the tester indicated that access will be granted to this
75
+ resource, this test verifies that a search by patient in this resource
76
+ does not result in an access denied result. If the tester indicated that
77
+ access will be denied for this resource, this verifies that search by
78
+ patient in the resource results in an access denied result.
79
+ )
80
+ id :g10_patient_restricted_access
81
+
82
+ def resource_group
83
+ USCoreTestKit::PatientGroup
84
+ end
85
+ end
86
+
87
+ test from: :g10_restricted_access_test do
88
+ title 'Access to AllergyIntolerance resources are restricted properly based on patient-selected scope'
89
+ description %(
90
+ This test ensures that access to the AllergyIntolerance is granted or
91
+ denied based on the selection by the tester prior to the execution of
92
+ the test. If the tester indicated that access will be granted to this
93
+ resource, this test verifies that a search by patient in this resource
94
+ does not result in an access denied result. If the tester indicated that
95
+ access will be denied for this resource, this verifies that search by
96
+ patient in the resource results in an access denied result.
97
+ )
98
+ id :g10_allergy_intolerance_restricted_access
99
+
100
+ def resource_group
101
+ USCoreTestKit::AllergyIntoleranceGroup
102
+ end
103
+ end
104
+
105
+ test from: :g10_restricted_access_test do
106
+ title 'Access to CarePlan resources are restricted properly based on patient-selected scope'
107
+ description %(
108
+ This test ensures that access to the CarePlan is granted or
109
+ denied based on the selection by the tester prior to the execution of
110
+ the test. If the tester indicated that access will be granted to this
111
+ resource, this test verifies that a search by patient in this resource
112
+ does not result in an access denied result. If the tester indicated that
113
+ access will be denied for this resource, this verifies that search by
114
+ patient in the resource results in an access denied result.
115
+ )
116
+ id :g10_care_plan_restricted_access
117
+
118
+ def resource_group
119
+ USCoreTestKit::CarePlanGroup
120
+ end
121
+ end
122
+
123
+ test from: :g10_restricted_access_test do
124
+ title 'Access to CareTeam resources are restricted properly based on patient-selected scope'
125
+ description %(
126
+ This test ensures that access to the CareTeam is granted or
127
+ denied based on the selection by the tester prior to the execution of
128
+ the test. If the tester indicated that access will be granted to this
129
+ resource, this test verifies that a search by patient in this resource
130
+ does not result in an access denied result. If the tester indicated that
131
+ access will be denied for this resource, this verifies that search by
132
+ patient in the resource results in an access denied result.
133
+ )
134
+ id :g10_care_team_restricted_access
135
+
136
+ def resource_group
137
+ USCoreTestKit::CareTeamGroup
138
+ end
139
+ end
140
+
141
+ test from: :g10_restricted_access_test do
142
+ title 'Access to Condition resources are restricted properly based on patient-selected scope'
143
+ description %(
144
+ This test ensures that access to the Condition is granted or
145
+ denied based on the selection by the tester prior to the execution of
146
+ the test. If the tester indicated that access will be granted to this
147
+ resource, this test verifies that a search by patient in this resource
148
+ does not result in an access denied result. If the tester indicated that
149
+ access will be denied for this resource, this verifies that search by
150
+ patient in the resource results in an access denied result.
151
+ )
152
+ id :g10_condition_restricted_access
153
+
154
+ def resource_group
155
+ USCoreTestKit::ConditionGroup
156
+ end
157
+ end
158
+
159
+ test from: :g10_restricted_access_test do
160
+ title 'Access to Device resources are restricted properly based on patient-selected scope'
161
+ description %(
162
+ This test ensures that access to the Device is granted or
163
+ denied based on the selection by the tester prior to the execution of
164
+ the test. If the tester indicated that access will be granted to this
165
+ resource, this test verifies that a search by patient in this resource
166
+ does not result in an access denied result. If the tester indicated that
167
+ access will be denied for this resource, this verifies that search by
168
+ patient in the resource results in an access denied result.
169
+ )
170
+ id :g10_device_restricted_access
171
+
172
+ def resource_group
173
+ USCoreTestKit::DeviceGroup
174
+ end
175
+ end
176
+
177
+ test from: :g10_restricted_access_test do
178
+ title 'Access to DiagnosticReport resources are restricted properly based on patient-selected scope'
179
+ description %(
180
+ This test ensures that access to the DiagnosticReport is granted or
181
+ denied based on the selection by the tester prior to the execution of
182
+ the test. If the tester indicated that access will be granted to this
183
+ resource, this test verifies that a search by patient in this resource
184
+ does not result in an access denied result. If the tester indicated that
185
+ access will be denied for this resource, this verifies that search by
186
+ patient in the resource results in an access denied result.
187
+ )
188
+ id :g10_diagnostic_report_restricted_access
189
+
190
+ def resource_group
191
+ USCoreTestKit::DiagnosticReportLabGroup
192
+ end
193
+ end
194
+
195
+ test from: :g10_restricted_access_test do
196
+ title 'Access to DocumentReference resources are restricted properly based on patient-selected scope'
197
+ description %(
198
+ This test ensures that access to the DocumentReference is granted or
199
+ denied based on the selection by the tester prior to the execution of
200
+ the test. If the tester indicated that access will be granted to this
201
+ resource, this test verifies that a search by patient in this resource
202
+ does not result in an access denied result. If the tester indicated that
203
+ access will be denied for this resource, this verifies that search by
204
+ patient in the resource results in an access denied result.
205
+ )
206
+ id :g10_document_reference_restricted_access
207
+
208
+ def resource_group
209
+ USCoreTestKit::DocumentReferenceGroup
210
+ end
211
+ end
212
+
213
+ test from: :g10_restricted_access_test do
214
+ title 'Access to Goal resources are restricted properly based on patient-selected scope'
215
+ description %(
216
+ This test ensures that access to the Goal is granted or
217
+ denied based on the selection by the tester prior to the execution of
218
+ the test. If the tester indicated that access will be granted to this
219
+ resource, this test verifies that a search by patient in this resource
220
+ does not result in an access denied result. If the tester indicated that
221
+ access will be denied for this resource, this verifies that search by
222
+ patient in the resource results in an access denied result.
223
+ )
224
+ id :g10_goal_restricted_access
225
+
226
+ def resource_group
227
+ USCoreTestKit::GoalGroup
228
+ end
229
+ end
230
+
231
+ test from: :g10_restricted_access_test do
232
+ title 'Access to Immunization resources are restricted properly based on patient-selected scope'
233
+ description %(
234
+ This test ensures that access to the Immunization is granted or
235
+ denied based on the selection by the tester prior to the execution of
236
+ the test. If the tester indicated that access will be granted to this
237
+ resource, this test verifies that a search by patient in this resource
238
+ does not result in an access denied result. If the tester indicated that
239
+ access will be denied for this resource, this verifies that search by
240
+ patient in the resource results in an access denied result.
241
+ )
242
+ id :g10_immunization_restricted_access
243
+
244
+ def resource_group
245
+ USCoreTestKit::ImmunizationGroup
246
+ end
247
+ end
248
+
249
+ test from: :g10_restricted_access_test do
250
+ title 'Access to MedicationRequest resources are restricted properly based on patient-selected scope'
251
+ description %(
252
+ This test ensures that access to the MedicationRequest is granted or
253
+ denied based on the selection by the tester prior to the execution of
254
+ the test. If the tester indicated that access will be granted to this
255
+ resource, this test verifies that a search by patient in this resource
256
+ does not result in an access denied result. If the tester indicated that
257
+ access will be denied for this resource, this verifies that search by
258
+ patient in the resource results in an access denied result.
259
+ )
260
+ id :g10_medication_request_access
261
+
262
+ def resource_group
263
+ USCoreTestKit::MedicationRequestGroup
264
+ end
265
+ end
266
+
267
+ test from: :g10_restricted_access_test do
268
+ title 'Access to Observation resources are restricted properly based on patient-selected scope'
269
+ description %(
270
+ This test ensures that access to the Observation is granted or
271
+ denied based on the selection by the tester prior to the execution of
272
+ the test. If the tester indicated that access will be granted to this
273
+ resource, this test verifies that a search by patient in this resource
274
+ does not result in an access denied result. If the tester indicated that
275
+ access will be denied for this resource, this verifies that search by
276
+ patient in the resource results in an access denied result.
277
+ )
278
+ id :g10_observation_restricted_access
279
+
280
+ def resource_group
281
+ USCoreTestKit::PulseOximetryGroup
282
+ end
283
+ end
284
+
285
+ test from: :g10_restricted_access_test do
286
+ title 'Access to Procedure resources are restricted properly based on patient-selected scope'
287
+ description %(
288
+ This test ensures that access to the Procedure is granted or
289
+ denied based on the selection by the tester prior to the execution of
290
+ the test. If the tester indicated that access will be granted to this
291
+ resource, this test verifies that a search by patient in this resource
292
+ does not result in an access denied result. If the tester indicated that
293
+ access will be denied for this resource, this verifies that search by
294
+ patient in the resource results in an access denied result.
295
+ )
296
+ id :g10_procedure_restricted_access
297
+
298
+ def resource_group
299
+ USCoreTestKit::ProcedureGroup
300
+ end
301
+ end
302
+ end
303
+ end