us_core_test_kit 0.7.0 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (116) hide show
  1. checksums.yaml +4 -4
  2. data/lib/us_core_test_kit/custom_groups/base_smart_granular_scopes_group.rb +2 -1
  3. data/lib/us_core_test_kit/custom_groups/capability_statement/instantiate_test.rb +6 -2
  4. data/lib/us_core_test_kit/custom_groups/capability_statement/profile_support_test.rb +10 -7
  5. data/lib/us_core_test_kit/custom_groups/screening_assessment_category_test.rb +75 -0
  6. data/lib/us_core_test_kit/custom_groups/smart_scopes_constants.rb +6 -4
  7. data/lib/us_core_test_kit/custom_groups/v6.1.0/screening_assessment_group.rb +45 -0
  8. data/lib/us_core_test_kit/custom_groups/v6.1.0/smart_granular_scopes_group.rb +46 -93
  9. data/lib/us_core_test_kit/custom_groups/v7.0.0-ballot/screening_assessment_group.rb +48 -0
  10. data/lib/us_core_test_kit/fhir_resource_navigation.rb +11 -6
  11. data/lib/us_core_test_kit/generated/v6.1.0/condition_encounter_diagnosis/metadata.yml +22 -20
  12. data/lib/us_core_test_kit/generated/v6.1.0/condition_granular_scope1_group.rb +22 -21
  13. data/lib/us_core_test_kit/generated/v6.1.0/condition_granular_scope2_group.rb +44 -0
  14. data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/condition/condition_granular_scope_read_test.rb +32 -0
  15. data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/condition/{condition_patient_abatement_date_granular_scope_test.rb → condition_patient_abatement_date_granular_scope_search_test.rb} +5 -5
  16. data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/condition/{condition_patient_asserted_date_granular_scope_test.rb → condition_patient_asserted_date_granular_scope_search_test.rb} +5 -5
  17. data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/condition/{condition_patient_category_clinical_status_granular_scope_test.rb → condition_patient_category_clinical_status_granular_scope_search_test.rb} +5 -5
  18. data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/condition/{condition_patient_category_encounter_granular_scope_test.rb → condition_patient_category_encounter_granular_scope_search_test.rb} +5 -5
  19. data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/condition/{condition_patient_category_granular_scope_test.rb → condition_patient_category_granular_scope_search_test.rb} +5 -5
  20. data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/condition/{condition_patient_clinical_status_granular_scope_test.rb → condition_patient_clinical_status_granular_scope_search_test.rb} +5 -5
  21. data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/condition/{condition_patient_code_granular_scope_test.rb → condition_patient_code_granular_scope_search_test.rb} +5 -5
  22. data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/condition/{condition_patient_granular_scope_test.rb → condition_patient_granular_scope_search_test.rb} +5 -5
  23. data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/condition/{condition_patient_onset_date_granular_scope_test.rb → condition_patient_onset_date_granular_scope_search_test.rb} +5 -5
  24. data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/condition/{condition_patient_recorded_date_granular_scope_test.rb → condition_patient_recorded_date_granular_scope_search_test.rb} +5 -5
  25. data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/condition/metadata.yml +24 -22
  26. data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/observation/metadata.yml +14 -12
  27. data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/observation/observation_granular_scope_read_test.rb +32 -0
  28. data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/observation/{observation_patient_category_date_granular_scope_test.rb → observation_patient_category_date_granular_scope_search_test.rb} +5 -5
  29. data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/observation/{observation_patient_category_granular_scope_test.rb → observation_patient_category_granular_scope_search_test.rb} +5 -5
  30. data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/observation/{observation_patient_category_status_granular_scope_test.rb → observation_patient_category_status_granular_scope_search_test.rb} +5 -5
  31. data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/observation/{observation_patient_code_date_granular_scope_test.rb → observation_patient_code_date_granular_scope_search_test.rb} +5 -5
  32. data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/observation/{observation_patient_code_granular_scope_test.rb → observation_patient_code_granular_scope_search_test.rb} +5 -5
  33. data/lib/us_core_test_kit/generated/v6.1.0/granular_scopes1_group.rb +0 -4
  34. data/lib/us_core_test_kit/generated/v6.1.0/granular_scopes2_group.rb +51 -0
  35. data/lib/us_core_test_kit/generated/v6.1.0/metadata.yml +40 -30
  36. data/lib/us_core_test_kit/generated/v6.1.0/observation_granular_scope1_group.rb +12 -13
  37. data/lib/us_core_test_kit/generated/v6.1.0/observation_granular_scope2_group.rb +36 -0
  38. data/lib/us_core_test_kit/generated/v6.1.0/observation_lab/metadata.yml +12 -10
  39. data/lib/us_core_test_kit/generated/v6.1.0/us_core_test_suite.rb +3 -1
  40. data/lib/us_core_test_kit/generated/v7.0.0-ballot/condition_encounter_diagnosis/metadata.yml +22 -20
  41. data/lib/us_core_test_kit/generated/v7.0.0-ballot/condition_granular_scope1_group.rb +22 -20
  42. data/lib/us_core_test_kit/generated/v7.0.0-ballot/condition_granular_scope2_group.rb +22 -20
  43. data/lib/us_core_test_kit/generated/v7.0.0-ballot/diagnostic_report_granular_scope1_group.rb +14 -12
  44. data/lib/us_core_test_kit/generated/v7.0.0-ballot/diagnostic_report_granular_scope2_group.rb +14 -12
  45. data/lib/us_core_test_kit/generated/v7.0.0-ballot/diagnostic_report_note/metadata.yml +14 -12
  46. data/lib/us_core_test_kit/generated/v7.0.0-ballot/document_reference/metadata.yml +16 -14
  47. data/lib/us_core_test_kit/generated/v7.0.0-ballot/document_reference_granular_scope1_group.rb +16 -14
  48. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/condition/condition_granular_scope_read_test.rb +32 -0
  49. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/condition/{condition_patient_abatement_date_granular_scope_test.rb → condition_patient_abatement_date_granular_scope_search_test.rb} +5 -5
  50. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/condition/{condition_patient_asserted_date_granular_scope_test.rb → condition_patient_asserted_date_granular_scope_search_test.rb} +5 -5
  51. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/condition/{condition_patient_category_clinical_status_granular_scope_test.rb → condition_patient_category_clinical_status_granular_scope_search_test.rb} +5 -5
  52. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/condition/{condition_patient_category_encounter_granular_scope_test.rb → condition_patient_category_encounter_granular_scope_search_test.rb} +5 -5
  53. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/condition/{condition_patient_category_granular_scope_test.rb → condition_patient_category_granular_scope_search_test.rb} +5 -5
  54. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/condition/{condition_patient_clinical_status_granular_scope_test.rb → condition_patient_clinical_status_granular_scope_search_test.rb} +5 -5
  55. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/condition/{condition_patient_code_granular_scope_test.rb → condition_patient_code_granular_scope_search_test.rb} +5 -5
  56. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/condition/{condition_patient_granular_scope_test.rb → condition_patient_granular_scope_search_test.rb} +5 -5
  57. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/condition/{condition_patient_onset_date_granular_scope_test.rb → condition_patient_onset_date_granular_scope_search_test.rb} +5 -5
  58. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/condition/{condition_patient_recorded_date_granular_scope_test.rb → condition_patient_recorded_date_granular_scope_search_test.rb} +5 -5
  59. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/condition/metadata.yml +22 -20
  60. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/diagnostic_report/diagnostic_report_granular_scope_read_test.rb +32 -0
  61. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/diagnostic_report/{diagnostic_report_patient_category_date_granular_scope_test.rb → diagnostic_report_patient_category_date_granular_scope_search_test.rb} +5 -5
  62. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/diagnostic_report/{diagnostic_report_patient_category_granular_scope_test.rb → diagnostic_report_patient_category_granular_scope_search_test.rb} +5 -5
  63. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/diagnostic_report/{diagnostic_report_patient_code_date_granular_scope_test.rb → diagnostic_report_patient_code_date_granular_scope_search_test.rb} +5 -5
  64. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/diagnostic_report/{diagnostic_report_patient_code_granular_scope_test.rb → diagnostic_report_patient_code_granular_scope_search_test.rb} +5 -5
  65. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/diagnostic_report/{diagnostic_report_patient_granular_scope_test.rb → diagnostic_report_patient_granular_scope_search_test.rb} +5 -5
  66. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/diagnostic_report/{diagnostic_report_patient_status_granular_scope_test.rb → diagnostic_report_patient_status_granular_scope_search_test.rb} +5 -5
  67. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/diagnostic_report/metadata.yml +14 -12
  68. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/document_reference/document_reference_granular_scope_read_test.rb +32 -0
  69. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/document_reference/{document_reference_id_granular_scope_test.rb → document_reference_id_granular_scope_search_test.rb} +5 -5
  70. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/document_reference/{document_reference_patient_category_date_granular_scope_test.rb → document_reference_patient_category_date_granular_scope_search_test.rb} +5 -5
  71. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/document_reference/{document_reference_patient_category_granular_scope_test.rb → document_reference_patient_category_granular_scope_search_test.rb} +5 -5
  72. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/document_reference/{document_reference_patient_granular_scope_test.rb → document_reference_patient_granular_scope_search_test.rb} +5 -5
  73. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/document_reference/{document_reference_patient_status_granular_scope_test.rb → document_reference_patient_status_granular_scope_search_test.rb} +5 -5
  74. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/document_reference/{document_reference_patient_type_granular_scope_test.rb → document_reference_patient_type_granular_scope_search_test.rb} +5 -5
  75. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/document_reference/{document_reference_patient_type_period_granular_scope_test.rb → document_reference_patient_type_period_granular_scope_search_test.rb} +5 -5
  76. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/document_reference/metadata.yml +16 -14
  77. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/observation/metadata.yml +12 -10
  78. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/observation/observation_granular_scope_read_test.rb +32 -0
  79. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/observation/{observation_patient_category_date_granular_scope_test.rb → observation_patient_category_date_granular_scope_search_test.rb} +5 -5
  80. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/observation/{observation_patient_category_granular_scope_test.rb → observation_patient_category_granular_scope_search_test.rb} +5 -5
  81. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/observation/{observation_patient_category_status_granular_scope_test.rb → observation_patient_category_status_granular_scope_search_test.rb} +5 -5
  82. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/observation/{observation_patient_code_date_granular_scope_test.rb → observation_patient_code_date_granular_scope_search_test.rb} +5 -5
  83. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/observation/{observation_patient_code_granular_scope_test.rb → observation_patient_code_granular_scope_search_test.rb} +5 -5
  84. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/service_request/metadata.yml +16 -14
  85. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/service_request/service_request_granular_scope_read_test.rb +32 -0
  86. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/service_request/{service_request_id_granular_scope_test.rb → service_request_id_granular_scope_search_test.rb} +5 -5
  87. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/service_request/{service_request_patient_category_authored_granular_scope_test.rb → service_request_patient_category_authored_granular_scope_search_test.rb} +5 -5
  88. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/service_request/{service_request_patient_category_granular_scope_test.rb → service_request_patient_category_granular_scope_search_test.rb} +5 -5
  89. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/service_request/{service_request_patient_code_authored_granular_scope_test.rb → service_request_patient_code_authored_granular_scope_search_test.rb} +5 -5
  90. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/service_request/{service_request_patient_code_granular_scope_test.rb → service_request_patient_code_granular_scope_search_test.rb} +5 -5
  91. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/service_request/{service_request_patient_granular_scope_test.rb → service_request_patient_granular_scope_search_test.rb} +5 -5
  92. data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/service_request/{service_request_patient_status_granular_scope_test.rb → service_request_patient_status_granular_scope_search_test.rb} +5 -5
  93. data/lib/us_core_test_kit/generated/v7.0.0-ballot/metadata.yml +80 -70
  94. data/lib/us_core_test_kit/generated/v7.0.0-ballot/observation_granular_scope1_group.rb +12 -10
  95. data/lib/us_core_test_kit/generated/v7.0.0-ballot/observation_granular_scope2_group.rb +12 -10
  96. data/lib/us_core_test_kit/generated/v7.0.0-ballot/observation_lab/metadata.yml +12 -10
  97. data/lib/us_core_test_kit/generated/v7.0.0-ballot/service_request/metadata.yml +16 -14
  98. data/lib/us_core_test_kit/generated/v7.0.0-ballot/service_request_granular_scope1_group.rb +16 -14
  99. data/lib/us_core_test_kit/generated/v7.0.0-ballot/service_request_granular_scope2_group.rb +16 -14
  100. data/lib/us_core_test_kit/generated/v7.0.0-ballot/us_core_test_suite.rb +3 -1
  101. data/lib/us_core_test_kit/generator/granular_scope_group_generator.rb +0 -7
  102. data/lib/us_core_test_kit/generator/granular_scope_read_test_generator.rb +102 -0
  103. data/lib/us_core_test_kit/generator/granular_scope_resource_type_group_generator.rb +1 -1
  104. data/lib/us_core_test_kit/generator/granular_scope_test_generator.rb +4 -4
  105. data/lib/us_core_test_kit/generator/suite_generator.rb +9 -1
  106. data/lib/us_core_test_kit/generator.rb +2 -0
  107. data/lib/us_core_test_kit/granular_scope.rb +63 -0
  108. data/lib/us_core_test_kit/granular_scope_read_test.rb +71 -0
  109. data/lib/us_core_test_kit/{granular_scope_checker.rb → granular_scope_search_test.rb} +8 -47
  110. data/lib/us_core_test_kit/must_support_test.rb +3 -2
  111. data/lib/us_core_test_kit/primitive_type.rb +5 -0
  112. data/lib/us_core_test_kit/provenance_validator.rb +3 -4
  113. data/lib/us_core_test_kit/resource_search_param_checker.rb +139 -0
  114. data/lib/us_core_test_kit/search_test.rb +6 -2
  115. data/lib/us_core_test_kit/version.rb +1 -1
  116. metadata +73 -55
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ff99afacbf38abd7c8c459ab425b3e58c763a9ff721f9447562d62ff6e5dba66
4
- data.tar.gz: b69ed849fd8588b2f8fe029cee922d78b46ba639de36ccd174efe94fe3da60eb
3
+ metadata.gz: cc3ca68e2a7b8f7609f1eaf4f983afd2813252e706a65f096733412d3aa4e118
4
+ data.tar.gz: 3458eaaeb4d904b728b16f92524da58598d1d84d12b82458614d014d8959efcc
5
5
  SHA512:
6
- metadata.gz: c64bede1519c6c76aa1e6fdb82f87036ccce90f88d238bb0af3fa35d7080246206a0cfedb0cbc57e0ad8aaf1769b1fa1297b5db50a1a5c0a35b6dc861664828a
7
- data.tar.gz: 41a2be6bc4932c82fe6ef1ebe48027c556fec81ff8e3e7c72bcd77bb02de6ccb6161ea16772de78f7df2679facf6f7b798c1fbc9656a4fa2f20d96db6ee6d9fb
6
+ metadata.gz: 0b8df109a82023aa02b8eeadfd4a024cd41e1b00570c6d7e3aa55e68d910ac17031874e62bed5f8a09392f5b6b70cc594a6a60ec47b1c1c34620f71c526f2d2f
7
+ data.tar.gz: 87e2ed36f19a5a5815d13c64f74afa0b8c3824fa751fb52b5b013bf9f0449b3d2d47bf36e8d9bd26341e6cd25a8731a27d7f8a1b5fe38ce21c250a02187ab37b
@@ -3,7 +3,8 @@ require 'smart_app_launch_test_kit'
3
3
  require_relative './smart_ehr_launch_stu2'
4
4
  require_relative './smart_scopes_constants'
5
5
  require_relative './smart_standalone_launch_stu2_group'
6
- require_relative '../granular_scope_checker'
6
+ require_relative '../granular_scope_search_test'
7
+ require_relative '../granular_scope_read_test'
7
8
  require_relative '../us_core_options'
8
9
  require_relative './granted_granular_scopes_test'
9
10
 
@@ -12,8 +12,12 @@ module USCoreTestKit
12
12
  assert_resource_type(:capability_statement)
13
13
  capability_statement = resource
14
14
 
15
- assert capability_statement.instantiates.include?('http://hl7.org/fhir/us/core/CapabilityStatement/us-core-server'),
16
- "Server CapabilityStatement.instantiates does not include 'http://hl7.org/fhir/us/core/CapabilityStatement/us-core-server'"
15
+ include_us_core = capability_statement.instantiates&.any? do |url|
16
+ url.split('|').first == 'http://hl7.org/fhir/us/core/CapabilityStatement/us-core-server'
17
+ end
18
+
19
+ assert include_us_core,
20
+ "Server CapabilityStatement.instantiates does not include 'http://hl7.org/fhir/us/core/CapabilityStatement/us-core-server'"
17
21
  end
18
22
  end
19
23
  end
@@ -20,13 +20,15 @@ module USCoreTestKit
20
20
  assert_resource_type(:capability_statement)
21
21
  capability_statement = resource
22
22
 
23
- supported_profiles =
24
- capability_statement.rest
25
- &.each_with_object([]) do |rest, profiles|
26
- rest.resource.each { |resource| profiles.concat(resource.supportedProfile) }
27
- end.uniq
23
+ supported_profiles = capability_statement.rest&.flat_map do |rest|
24
+ rest.resource.flat_map do |resource|
25
+ # Remove trailing version from canonical url
26
+ resource.supportedProfile&.map { |profile| profile.split('|').first }
27
+ end.compact
28
+ end&.uniq || []
28
29
 
29
- assert supported_profiles.include?('http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient'), 'US Core Patient profile not supported'
30
+ assert supported_profiles.include?('http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient'),
31
+ 'US Core Patient profile not supported'
30
32
 
31
33
  us_core_profiles = config.options[:us_core_profiles]
32
34
 
@@ -45,7 +47,8 @@ module USCoreTestKit
45
47
  .join(', ')
46
48
 
47
49
  assert missing_profiles.empty?,
48
- "The CapabilityStatement did not list support for the following resources: #{missing_profiles_list}"
50
+ 'The CapabilityStatement does not list support for the following' \
51
+ "US Core profiles: #{missing_profiles_list}"
49
52
  end
50
53
  end
51
54
  end
@@ -0,0 +1,75 @@
1
+ require_relative '../search_test'
2
+
3
+ module USCoreTestKit
4
+ class ScreeningAssessmentCategoryTest < Inferno::Test
5
+ include SearchTest
6
+
7
+ id :us_core_screening_assessment_category
8
+ title 'Server demonstrates support for the required Condition and Observation categories.'
9
+
10
+ input :patient_ids,
11
+ title: 'Patient IDs',
12
+ description: 'Comma separated list of patient IDs that in sum contain all MUST SUPPORT elements'
13
+
14
+ # Disable tagging requests since this test doesn't have properties defined.
15
+ # TODO: investigate whether we need to tag these for granular scope
16
+ # checking.
17
+ def tags(_params)
18
+ nil
19
+ end
20
+
21
+ # rubocop:disable Metrics/CyclomaticComplexity
22
+ def category_found(resource_type:, patient_id:, category_search_values:, missing_categories:)
23
+ search_params = { patient: patient_id }
24
+
25
+ category_search_values.each do |category_search_value|
26
+ search_params[:category] = category_search_value
27
+ search_and_check_response(search_params, resource_type)
28
+
29
+ resources = fetch_all_bundled_resources(resource_type:)
30
+ .select { |resource| resource.resourceType == resource_type }
31
+
32
+ resources.each do |resource|
33
+ resource.category&.each do |category|
34
+ category.coding&.each do |coding|
35
+ missing_categories.delete(coding.code)
36
+ end
37
+ end
38
+
39
+ break if missing_categories.empty?
40
+ end
41
+
42
+ break if missing_categories.empty?
43
+ end
44
+ end
45
+ # rubocop:enable Metrics/CyclomaticComplexity
46
+
47
+ run do
48
+ missing_obs_categories = config.options[:observation_screening_assessment_categories].dup
49
+ missing_cond_categories = config.options[:condition_screening_assessment_categories].dup
50
+
51
+ patient_id_list.each do |patient_id|
52
+ unless missing_cond_categories.empty?
53
+ category_found(resource_type: 'Condition',
54
+ patient_id:,
55
+ category_search_values: ['health-concern', 'problem-list-item'],
56
+ missing_categories: missing_cond_categories)
57
+ end
58
+
59
+ next if missing_obs_categories.empty?
60
+
61
+ category_found(resource_type: 'Observation',
62
+ patient_id:,
63
+ category_search_values: ['survey'],
64
+ missing_categories: missing_obs_categories)
65
+ end
66
+
67
+ pass if missing_cond_categories.empty? && missing_obs_categories.empty?
68
+
69
+ messages = []
70
+ messages << "Observation categories: #{missing_obs_categories.join(', ')}" unless missing_obs_categories.empty?
71
+ messages << "Condition categories: #{missing_cond_categories.join(', ')}" unless missing_cond_categories.empty?
72
+ skip "Could not find these #{messages.join(' and ')}."
73
+ end
74
+ end
75
+ end
@@ -6,12 +6,8 @@ module USCoreTestKit
6
6
  'v610' => [
7
7
  'patient/Condition.rs?category=http://terminology.hl7.org/CodeSystem/condition-category|encounter-diagnosis',
8
8
  'patient/Condition.rs?category=http://hl7.org/fhir/us/core/CodeSystem/condition-category|health-concern',
9
- 'patient/Condition.rs?category=http://terminology.hl7.org/CodeSystem/condition-category|problem-list-item',
10
9
  'patient/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory',
11
10
  'patient/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|social-history',
12
- 'patient/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|vital-signs',
13
- 'patient/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|survey',
14
- 'patient/Observation.rs?category=http://hl7.org/fhir/us/core/CodeSystem/us-core-category|sdoh'
15
11
  ].map(&:freeze).freeze,
16
12
  'v700_ballot' => [
17
13
  'patient/Condition.rs?category=http://terminology.hl7.org/CodeSystem/condition-category|encounter-diagnosis',
@@ -28,6 +24,12 @@ module USCoreTestKit
28
24
  }.freeze
29
25
 
30
26
  SMART_GRANULAR_SCOPES_GROUP2 = {
27
+ 'v610' => [
28
+ 'patient/Condition.rs?category=http://terminology.hl7.org/CodeSystem/condition-category|problem-list-item',
29
+ 'patient/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|vital-signs',
30
+ 'patient/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|survey',
31
+ 'patient/Observation.rs?category=http://hl7.org/fhir/us/core/CodeSystem/us-core-category|sdoh'
32
+ ].map(&:freeze).freeze,
31
33
  'v700_ballot' => [
32
34
  'patient/Condition.rs?category=http://terminology.hl7.org/CodeSystem/condition-category|problem-list-item',
33
35
  'patient/DiagnosticReport.rs?category=http://loinc.org|LP7839-6',
@@ -0,0 +1,45 @@
1
+ require_relative '../screening_assessment_category_test'
2
+
3
+ module USCoreTestKit
4
+ module USCoreV610
5
+ class ScreeningAssessmentGroup < Inferno::TestGroup
6
+ id :us_core_v610_screening_assessment
7
+ title 'Screening Assessments Guidance'
8
+ short_description 'Verify Condition and Observation resources support the ' \
9
+ 'US Core Screening And Assessments Guidance.'
10
+ description %(
11
+ The #{title} Sequence tests Condition and Observation
12
+ resources associated with the provided patient. The resources returned
13
+ will be checked for consistency against the [US Core Screening And Assessments
14
+ Guidance](https://hl7.org/fhir/us/core/STU6.1/screening-and-assessments.html)
15
+ and FHIR JIRA ticket [FHIR-45319](https://jira.hl7.org/browse/FHIR-45319)
16
+
17
+ In this set of tests, Inferno serves as a FHIR client that attempts to
18
+ access the different types of Screening and Assessments specified in the guidance.
19
+ The provided patient needs to have the following four common Screening and Assessements
20
+ as Observation categories:
21
+
22
+ * SDOH Assessment (sdoh)
23
+ * Functional Status (functional-status)
24
+ * Disability Status (disability-status)
25
+ * Mental/Cognitive Status (cognitive-status)
26
+
27
+ The provided patient also needs to have the following common Screening and Assessment
28
+ as Condition category:
29
+
30
+ * SDOH Assessment (sdoh)
31
+ )
32
+ run_as_group
33
+
34
+ test from: :us_core_screening_assessment_category do
35
+ config(
36
+ options: {
37
+ condition_screening_assessment_categories: ['sdoh'].freeze,
38
+ observation_screening_assessment_categories: ['sdoh', 'functional-status', 'disability-status',
39
+ 'cognitive-status'].freeze
40
+ }
41
+ )
42
+ end
43
+ end
44
+ end
45
+ end
@@ -1,33 +1,12 @@
1
1
  require_relative '../base_smart_granular_scopes_group'
2
- require_relative '../smart_scopes_constants'
3
- require_relative '../granted_granular_scopes_test'
4
2
  require_relative '../../generated/v6.1.0/granular_scopes1_group'
3
+ require_relative '../../generated/v6.1.0/granular_scopes2_group'
5
4
 
6
5
  module USCoreTestKit
7
6
  module USCoreV610
8
- class SmartGranularScopesGroup < Inferno::TestGroup
9
- include SmartScopesConstants
10
- title 'US Core SMART Granular Scopes'
7
+ class SmartGranularScopesGroup < BaseSmartGranularScopesGroup
11
8
  id :us_core_v610_smart_granular_scopes
12
-
13
- description <<~DESCRIPTION
14
- These tests verify that servers honor [SMART App Launch granular
15
- scopes](http://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#finer-grained-resource-constraints-using-search-parameters).
16
- Support for these scopes is [required in US Core
17
- 7](http://hl7.org/fhir/us/core/2024Jan/scopes.html#us-core-scopes).
18
-
19
- Prior to running these tests, first run the US Core FHIR API tests using
20
- resource-level scopes. This group includes a SMART App Launch followed by
21
- FHIR API tests. The app launches require that a granular scopes be
22
- granted. The FHIR API tests then repeat all of the queries from the
23
- original FHIR API tests that were run using resource-level scopes, and
24
- verify that only resources matching the granted granular scopes are
25
- returned.
26
- DESCRIPTION
27
-
28
- def self.default_group_scopes(version)
29
- [DEFAULT_SCOPES, *SMART_GRANULAR_SCOPES_GROUP1[version]].join(' ')
30
- end
9
+ title 'US Core SMART Granular Scopes'
31
10
 
32
11
  def self.scopes_string(scopes)
33
12
  scopes
@@ -36,91 +15,65 @@ module USCoreTestKit
36
15
  .join("\n")
37
16
  end
38
17
 
39
- config(
40
- inputs: {
41
- url: {
42
- locked: true
18
+ groups
19
+ .first
20
+ .description %(
21
+ These tests perform a SMART app launch to receive the following granular scopes:
22
+
23
+ #{scopes_string(SMART_GRANULAR_SCOPES_GROUP1['v610'])}
24
+
25
+ Then all of the searches which have been performed in the US Core FHIR API tests
26
+ are repeated to verify that the results have been filtered according to the
27
+ above scopes.
28
+ )
29
+
30
+ groups
31
+ .first
32
+ .config(
33
+ inputs: {
34
+ requested_scopes: {
35
+ name: :requested_scopes_group1,
36
+ default: groups.first.default_group_scopes('v610')
37
+ }
43
38
  },
44
- requested_scopes: {
45
- name: :requested_scopes_group1,
46
- default: default_group_scopes('v610')
39
+ options: {
40
+ required_scopes: SMART_GRANULAR_SCOPES_GROUP1['v610']
47
41
  }
48
- }
49
- )
50
-
51
- group do
52
- title 'SMART App Launch w/Granular Scopes'
42
+ )
53
43
 
54
- def self.scopes_string(scopes)
55
- scopes
56
- .map { |scope| scope.delete_prefix 'patient/' }
57
- .map { |scope| "* `#{scope}`" }
58
- .join("\n")
59
- end
44
+ groups
45
+ .first
46
+ .group from: :us_core_v610_smart_granular_scopes_1
60
47
 
61
- description %(
48
+ groups
49
+ .last
50
+ .description %(
62
51
  These tests perform a SMART app launch to receive the following granular scopes:
63
52
 
64
- #{scopes_string(SMART_GRANULAR_SCOPES_GROUP1['v610'])}
53
+ #{scopes_string(SMART_GRANULAR_SCOPES_GROUP2['v610'])}
65
54
 
66
55
  Then all of the searches which have been performed in the US Core FHIR API tests
67
56
  are repeated to verify that the results have been filtered according to the
68
57
  above scopes.
69
58
  )
70
59
 
71
- config(
72
- outputs: {
73
- smart_credentials: {
74
- name: :granular_scopes_1_credentials
60
+ groups
61
+ .last
62
+ .config(
63
+ inputs: {
64
+ requested_scopes: {
65
+ name: :requested_scopes_group2,
66
+ default: groups.last.default_group_scopes('v610')
75
67
  }
68
+ },
69
+ options: {
70
+ required_scopes: SMART_GRANULAR_SCOPES_GROUP2['v610']
76
71
  }
77
72
  )
78
- group from: :us_core_smart_standalone_launch_stu2,
79
- optional: true,
80
- config: {
81
- inputs: {
82
- smart_credentials: {
83
- name: :granular_scopes_1_credentials
84
- }
85
- }
86
- } do
87
- groups[1].test from: :us_core_granted_granular_scopes,
88
- config: {
89
- inputs: {
90
- received_scopes: {
91
- name: :standalone_received_scopes
92
- }
93
- },
94
- options: {
95
- required_scopes: SMART_GRANULAR_SCOPES_GROUP1['v610']
96
- }
97
- }
98
- end
99
- group from: :us_core_smart_ehr_launch_stu2,
100
- optional: true,
101
- config: {
102
- inputs: {
103
- smart_credentials: {
104
- name: :granular_scopes_1_credentials
105
- }
106
- }
107
- } do
108
- groups[1].test from: :us_core_granted_granular_scopes,
109
- config: {
110
- inputs: {
111
- received_scopes: {
112
- name: :ehr_received_scopes
113
- }
114
- },
115
- options: {
116
- required_scopes: SMART_GRANULAR_SCOPES_GROUP1['v610']
117
- }
118
- }
119
- end
120
- end
121
73
 
122
- group from: :us_core_v610_smart_granular_scopes_1,
123
- title: 'US Core FHIR API w/Granular Scopes'
74
+ groups
75
+ .last
76
+ .group from: :us_core_v610_smart_granular_scopes_2
124
77
  end
125
78
  end
126
79
  end
@@ -0,0 +1,48 @@
1
+ require_relative '../screening_assessment_category_test'
2
+
3
+ module USCoreTestKit
4
+ module USCoreV700_BALLOT
5
+ class ScreeningAssessmentGroup < Inferno::TestGroup
6
+ id :us_core_v700_ballot_screening_assessment
7
+ title 'Screening Assessments Guidance'
8
+ short_description 'Verify Condition and Observation resources support the ' \
9
+ 'US Core Screening And Assessments Guidance.'
10
+ description %(
11
+ The #{title} Sequence tests Condition and Observation
12
+ resources associated with the provided patient. The resources returned
13
+ will be checked for consistency against the [US Core Screening And Assessments
14
+ Guidance](https://hl7.org/fhir/us/core/STU7/screening-and-assessments.html)
15
+ and FHIR JIRA ticket [FHIR-46052](https://jira.hl7.org/browse/FHIR-46052)
16
+
17
+ In this set of tests, Inferno serves as a FHIR client that attempts to
18
+ access the different types of Screening and Assessments specified in the guidance.
19
+ The provided patient needs to have the following four common Screening and Assessements
20
+ as Observation categories:
21
+
22
+ * SDOH Assessment (sdoh)
23
+ * Functional Status (functional-status)
24
+ * Disability Status (disability-status)
25
+ * Mental/Cognitive Status (cognitive-status)
26
+ * Physical Activity (activity)
27
+ * Alcohol Use (social-history)
28
+ * Substance Use (social-history)
29
+
30
+ The provided patient also needs to have the following common Screening and Assessment
31
+ as Condition category:
32
+
33
+ * SDOH Assessment (sdoh)
34
+ )
35
+ run_as_group
36
+
37
+ test from: :us_core_screening_assessment_category do
38
+ config(
39
+ options: {
40
+ condition_screening_assessment_categories: ['sdoh'].freeze,
41
+ observation_screening_assessment_categories: ['sdoh', 'functional-status', 'disability-status',
42
+ 'cognitive-status', 'activity', 'social-history'].freeze
43
+ }
44
+ )
45
+ end
46
+ end
47
+ end
48
+ end
@@ -1,3 +1,5 @@
1
+ require_relative './primitive_type'
2
+
1
3
  module USCoreTestKit
2
4
  module FHIRResourceNavigation
3
5
  DAR_EXTENSION_URL = 'http://hl7.org/fhir/StructureDefinition/data-absent-reason'.freeze
@@ -65,19 +67,22 @@ module USCoreTestKit
65
67
  slice = find_slice_via_discriminator(element, property)
66
68
  slice
67
69
  else
68
- result = element.send(property)
69
- result = find_primitive_extension(element, property) if result.nil?
70
- result
70
+ value = element.send(property)
71
+ primitive_value = get_primitive_type_value(element, property, value)
72
+ primitive_value.present? ? primitive_value : value
71
73
  end
72
74
  rescue NoMethodError
73
75
  nil
74
76
  end
75
77
 
76
- def find_primitive_extension(element, property)
77
- type = element.class::METADATA[property.to_s]['type']
78
+ def get_primitive_type_value(element, property, value)
78
79
  source_value = element.source_hash["_#{property}"]
79
80
 
80
- PRIMITIVE_DATA_TYPES.include?(type) && source_value.present? ? FHIR::Element.new(source_value) : nil
81
+ return nil unless source_value.present?
82
+
83
+ primitive_value = USCoreTestKit::PrimitiveType.new(source_value)
84
+ primitive_value.value = value
85
+ primitive_value
81
86
  end
82
87
 
83
88
  def find_slice_via_discriminator(element, property)
@@ -350,26 +350,28 @@
350
350
  - :id: us_core_v610_condition_encounter_diagnosis_reference_resolution_test
351
351
  :file_name: condition_encounter_diagnosis_reference_resolution_test.rb
352
352
  :granular_scope_tests:
353
- - :id: us_core_v610_Condition_patient_category_granular_scope_test
354
- :file_name: condition_patient_category_granular_scope_test.rb
355
- - :id: us_core_v610_Condition_patient_granular_scope_test
356
- :file_name: condition_patient_granular_scope_test.rb
357
- - :id: us_core_v610_Condition_patient_recorded_date_granular_scope_test
358
- :file_name: condition_patient_recorded_date_granular_scope_test.rb
359
- - :id: us_core_v610_Condition_patient_asserted_date_granular_scope_test
360
- :file_name: condition_patient_asserted_date_granular_scope_test.rb
361
- - :id: us_core_v610_Condition_patient_category_clinical_status_granular_scope_test
362
- :file_name: condition_patient_category_clinical_status_granular_scope_test.rb
363
- - :id: us_core_v610_Condition_patient_onset_date_granular_scope_test
364
- :file_name: condition_patient_onset_date_granular_scope_test.rb
365
- - :id: us_core_v610_Condition_patient_abatement_date_granular_scope_test
366
- :file_name: condition_patient_abatement_date_granular_scope_test.rb
367
- - :id: us_core_v610_Condition_patient_clinical_status_granular_scope_test
368
- :file_name: condition_patient_clinical_status_granular_scope_test.rb
369
- - :id: us_core_v610_Condition_patient_category_encounter_granular_scope_test
370
- :file_name: condition_patient_category_encounter_granular_scope_test.rb
371
- - :id: us_core_v610_Condition_patient_code_granular_scope_test
372
- :file_name: condition_patient_code_granular_scope_test.rb
353
+ - :id: us_core_v610_Condition_patient_category_granular_scope_search_test
354
+ :file_name: condition_patient_category_granular_scope_search_test.rb
355
+ - :id: us_core_v610_Condition_patient_granular_scope_search_test
356
+ :file_name: condition_patient_granular_scope_search_test.rb
357
+ - :id: us_core_v610_Condition_patient_recorded_date_granular_scope_search_test
358
+ :file_name: condition_patient_recorded_date_granular_scope_search_test.rb
359
+ - :id: us_core_v610_Condition_patient_asserted_date_granular_scope_search_test
360
+ :file_name: condition_patient_asserted_date_granular_scope_search_test.rb
361
+ - :id: us_core_v610_Condition_patient_category_clinical_status_granular_scope_search_test
362
+ :file_name: condition_patient_category_clinical_status_granular_scope_search_test.rb
363
+ - :id: us_core_v610_Condition_patient_onset_date_granular_scope_search_test
364
+ :file_name: condition_patient_onset_date_granular_scope_search_test.rb
365
+ - :id: us_core_v610_Condition_patient_abatement_date_granular_scope_search_test
366
+ :file_name: condition_patient_abatement_date_granular_scope_search_test.rb
367
+ - :id: us_core_v610_Condition_patient_clinical_status_granular_scope_search_test
368
+ :file_name: condition_patient_clinical_status_granular_scope_search_test.rb
369
+ - :id: us_core_v610_Condition_patient_category_encounter_granular_scope_search_test
370
+ :file_name: condition_patient_category_encounter_granular_scope_search_test.rb
371
+ - :id: us_core_v610_Condition_patient_code_granular_scope_search_test
372
+ :file_name: condition_patient_code_granular_scope_search_test.rb
373
+ - :id: us_core_v610_Condition_granular_scope_read_test
374
+ :file_name: condition_granular_scope_read_test.rb
373
375
  :id: us_core_v610_condition_encounter_diagnosis
374
376
  :file_name: condition_encounter_diagnosis_group.rb
375
377
  :delayed_references: []
@@ -1,13 +1,14 @@
1
- require_relative './granular_scope_tests/condition/condition_patient_category_granular_scope_test'
2
- require_relative './granular_scope_tests/condition/condition_patient_granular_scope_test'
3
- require_relative './granular_scope_tests/condition/condition_patient_recorded_date_granular_scope_test'
4
- require_relative './granular_scope_tests/condition/condition_patient_asserted_date_granular_scope_test'
5
- require_relative './granular_scope_tests/condition/condition_patient_category_clinical_status_granular_scope_test'
6
- require_relative './granular_scope_tests/condition/condition_patient_onset_date_granular_scope_test'
7
- require_relative './granular_scope_tests/condition/condition_patient_abatement_date_granular_scope_test'
8
- require_relative './granular_scope_tests/condition/condition_patient_clinical_status_granular_scope_test'
9
- require_relative './granular_scope_tests/condition/condition_patient_category_encounter_granular_scope_test'
10
- require_relative './granular_scope_tests/condition/condition_patient_code_granular_scope_test'
1
+ require_relative './granular_scope_tests/condition/condition_patient_category_granular_scope_search_test'
2
+ require_relative './granular_scope_tests/condition/condition_patient_granular_scope_search_test'
3
+ require_relative './granular_scope_tests/condition/condition_patient_recorded_date_granular_scope_search_test'
4
+ require_relative './granular_scope_tests/condition/condition_patient_asserted_date_granular_scope_search_test'
5
+ require_relative './granular_scope_tests/condition/condition_patient_category_clinical_status_granular_scope_search_test'
6
+ require_relative './granular_scope_tests/condition/condition_patient_onset_date_granular_scope_search_test'
7
+ require_relative './granular_scope_tests/condition/condition_patient_abatement_date_granular_scope_search_test'
8
+ require_relative './granular_scope_tests/condition/condition_patient_clinical_status_granular_scope_search_test'
9
+ require_relative './granular_scope_tests/condition/condition_patient_category_encounter_granular_scope_search_test'
10
+ require_relative './granular_scope_tests/condition/condition_patient_code_granular_scope_search_test'
11
+ require_relative './granular_scope_tests/condition/condition_granular_scope_read_test'
11
12
 
12
13
  module USCoreTestKit
13
14
  module USCoreV610
@@ -21,7 +22,6 @@ based on the following granular scopes:
21
22
 
22
23
  * `Condition.rs?category=http://terminology.hl7.org/CodeSystem/condition-category|encounter-diagnosis`
23
24
  * `Condition.rs?category=http://hl7.org/fhir/us/core/CodeSystem/condition-category|health-concern`
24
- * `Condition.rs?category=http://terminology.hl7.org/CodeSystem/condition-category|problem-list-item`
25
25
 
26
26
  )
27
27
 
@@ -29,16 +29,17 @@ based on the following granular scopes:
29
29
  run_as_group
30
30
 
31
31
 
32
- test from: :us_core_v610_Condition_patient_category_granular_scope_test
33
- test from: :us_core_v610_Condition_patient_granular_scope_test
34
- test from: :us_core_v610_Condition_patient_recorded_date_granular_scope_test
35
- test from: :us_core_v610_Condition_patient_asserted_date_granular_scope_test
36
- test from: :us_core_v610_Condition_patient_category_clinical_status_granular_scope_test
37
- test from: :us_core_v610_Condition_patient_onset_date_granular_scope_test
38
- test from: :us_core_v610_Condition_patient_abatement_date_granular_scope_test
39
- test from: :us_core_v610_Condition_patient_clinical_status_granular_scope_test
40
- test from: :us_core_v610_Condition_patient_category_encounter_granular_scope_test
41
- test from: :us_core_v610_Condition_patient_code_granular_scope_test
32
+ test from: :us_core_v610_Condition_patient_category_granular_scope_search_test
33
+ test from: :us_core_v610_Condition_patient_granular_scope_search_test
34
+ test from: :us_core_v610_Condition_patient_recorded_date_granular_scope_search_test
35
+ test from: :us_core_v610_Condition_patient_asserted_date_granular_scope_search_test
36
+ test from: :us_core_v610_Condition_patient_category_clinical_status_granular_scope_search_test
37
+ test from: :us_core_v610_Condition_patient_onset_date_granular_scope_search_test
38
+ test from: :us_core_v610_Condition_patient_abatement_date_granular_scope_search_test
39
+ test from: :us_core_v610_Condition_patient_clinical_status_granular_scope_search_test
40
+ test from: :us_core_v610_Condition_patient_category_encounter_granular_scope_search_test
41
+ test from: :us_core_v610_Condition_patient_code_granular_scope_search_test
42
+ test from: :us_core_v610_Condition_granular_scope_read_test
42
43
  end
43
44
  end
44
45
  end
@@ -0,0 +1,44 @@
1
+ require_relative './granular_scope_tests/condition/condition_patient_category_granular_scope_search_test'
2
+ require_relative './granular_scope_tests/condition/condition_patient_granular_scope_search_test'
3
+ require_relative './granular_scope_tests/condition/condition_patient_recorded_date_granular_scope_search_test'
4
+ require_relative './granular_scope_tests/condition/condition_patient_asserted_date_granular_scope_search_test'
5
+ require_relative './granular_scope_tests/condition/condition_patient_category_clinical_status_granular_scope_search_test'
6
+ require_relative './granular_scope_tests/condition/condition_patient_onset_date_granular_scope_search_test'
7
+ require_relative './granular_scope_tests/condition/condition_patient_abatement_date_granular_scope_search_test'
8
+ require_relative './granular_scope_tests/condition/condition_patient_clinical_status_granular_scope_search_test'
9
+ require_relative './granular_scope_tests/condition/condition_patient_category_encounter_granular_scope_search_test'
10
+ require_relative './granular_scope_tests/condition/condition_patient_code_granular_scope_search_test'
11
+ require_relative './granular_scope_tests/condition/condition_granular_scope_read_test'
12
+
13
+ module USCoreTestKit
14
+ module USCoreV610
15
+ class ConditionGranularScope2Group < Inferno::TestGroup
16
+ title 'Condition Granular Scope Tests Tests'
17
+ short_description 'Verify support for the server capabilities required by the US Core Condition Encounter Diagnosis Profile.'
18
+ description %(
19
+ The tests in this group repeat all of the searches from the US Core
20
+ FHIR API tests, and verify that the resources returned are filtered
21
+ based on the following granular scopes:
22
+
23
+ * `Condition.rs?category=http://terminology.hl7.org/CodeSystem/condition-category|problem-list-item`
24
+
25
+ )
26
+
27
+ id :us_core_v610_condition_granular_scope_2_group
28
+ run_as_group
29
+
30
+
31
+ test from: :us_core_v610_Condition_patient_category_granular_scope_search_test
32
+ test from: :us_core_v610_Condition_patient_granular_scope_search_test
33
+ test from: :us_core_v610_Condition_patient_recorded_date_granular_scope_search_test
34
+ test from: :us_core_v610_Condition_patient_asserted_date_granular_scope_search_test
35
+ test from: :us_core_v610_Condition_patient_category_clinical_status_granular_scope_search_test
36
+ test from: :us_core_v610_Condition_patient_onset_date_granular_scope_search_test
37
+ test from: :us_core_v610_Condition_patient_abatement_date_granular_scope_search_test
38
+ test from: :us_core_v610_Condition_patient_clinical_status_granular_scope_search_test
39
+ test from: :us_core_v610_Condition_patient_category_encounter_granular_scope_search_test
40
+ test from: :us_core_v610_Condition_patient_code_granular_scope_search_test
41
+ test from: :us_core_v610_Condition_granular_scope_read_test
42
+ end
43
+ end
44
+ end