Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 0 additions & 12 deletions lib/onc_certification_g10_test_kit/g10_certification_suite.rb
Original file line number Diff line number Diff line change
Expand Up @@ -256,14 +256,6 @@ def self.well_known_route_handler
suite_option :us_core_version,
title: 'US Core Version',
list_options: [
{
label: 'US Core 3.1.1 / USCDI v1',
value: G10Options::US_CORE_3
},
{
label: 'US Core 4.0.0 / USCDI v1',
value: G10Options::US_CORE_4
},
{
label: 'US Core 6.1.0 / USCDI v3',
value: G10Options::US_CORE_6
Expand All @@ -277,10 +269,6 @@ def self.well_known_route_handler
suite_option :smart_app_launch_version,
title: 'SMART App Launch Version',
list_options: [
{
label: 'SMART App Launch 1.0.0',
value: G10Options::SMART_1
},
{
label: 'SMART App Launch 2.0.0',
value: G10Options::SMART_2
Expand Down
61 changes: 37 additions & 24 deletions lib/onc_certification_g10_test_kit/scope_constants.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,49 +4,62 @@ module ScopeConstants
%(
launch/patient openid fhirUser offline_access patient/Medication.read
patient/AllergyIntolerance.read patient/CarePlan.read
patient/CareTeam.read patient/Condition.read patient/Device.read
patient/DiagnosticReport.read patient/DocumentReference.read
patient/Encounter.read patient/Goal.read patient/Immunization.read
patient/Location.read patient/MedicationRequest.read
patient/CareTeam.read patient/Condition.read patient/Coverage.read
patient/Device.read patient/DiagnosticReport.read
patient/DocumentReference.read patient/Encounter.read patient/Goal.read
patient/Immunization.read patient/Location.read
patient/MedicationDispense.read patient/MedicationRequest.read
patient/Observation.read patient/Organization.read patient/Patient.read
patient/Practitioner.read patient/Procedure.read patient/Provenance.read
patient/PractitionerRole.read
patient/Practitioner.read patient/PractitionerRole.read
patient/Procedure.read patient/Provenance.read
patient/QuestionnaireResponse.read patient/RelatedPerson.read
patient/ServiceRequest.read patient/Specimen.read
).gsub(/\s{2,}/, ' ').strip.freeze

STANDALONE_SMART_2_SCOPES =
%(
launch/patient openid fhirUser offline_access patient/Medication.rs
patient/AllergyIntolerance.rs patient/CarePlan.rs patient/CareTeam.rs
patient/Condition.rs patient/Device.rs patient/DiagnosticReport.rs
patient/DocumentReference.rs patient/Encounter.rs patient/Goal.rs
patient/Immunization.rs patient/Location.rs patient/MedicationRequest.rs
patient/Observation.rs patient/Organization.rs patient/Patient.rs
patient/Practitioner.rs patient/Procedure.rs patient/Provenance.rs
patient/PractitionerRole.rs
patient/Condition.rs patient/Coverage.rs patient/Device.rs
patient/DiagnosticReport.rs patient/DocumentReference.rs
patient/Encounter.rs patient/Goal.rs patient/Immunization.rs
patient/Location.rs patient/MedicationDispense.rs
patient/MedicationRequest.rs patient/Observation.rs
patient/Organization.rs patient/Patient.rs patient/Practitioner.rs
patient/PractitionerRole.rs patient/Procedure.rs
patient/Provenance.rs patient/QuestionnaireResponse.rs
patient/RelatedPerson.rs patient/ServiceRequest.rs
patient/Specimen.rs
).gsub(/\s{2,}/, ' ').strip.freeze

EHR_SMART_1_SCOPES =
%(
launch openid fhirUser offline_access user/Medication.read
user/AllergyIntolerance.read user/CarePlan.read user/CareTeam.read
user/Condition.read user/Device.read user/DiagnosticReport.read
user/DocumentReference.read user/Encounter.read user/Goal.read
user/Immunization.read user/Location.read user/MedicationRequest.read
user/Observation.read user/Organization.read user/Patient.read
user/Practitioner.read user/Procedure.read user/Provenance.read
user/PractitionerRole.read
user/Condition.read user/Coverage.read user/Device.read
user/DiagnosticReport.read user/DocumentReference.read
user/Encounter.read user/Goal.read user/Immunization.read
user/Location.read user/MedicationDispense.read
user/MedicationRequest.read user/Observation.read
user/Organization.read user/Patient.read user/Practitioner.read
user/PractitionerRole.read user/Procedure.read user/Provenance.read
user/QuestionnaireResponse.read user/RelatedPerson.read
user/ServiceRequest.read user/Specimen.read
).gsub(/\s{2,}/, ' ').strip.freeze

EHR_SMART_2_SCOPES =
%(
launch openid fhirUser offline_access user/Medication.rs
user/AllergyIntolerance.rs user/CarePlan.rs user/CareTeam.rs
user/Condition.rs user/Device.rs user/DiagnosticReport.rs
user/DocumentReference.rs user/Encounter.rs user/Goal.rs
user/Immunization.rs user/Location.rs user/MedicationRequest.rs
user/Observation.rs user/Organization.rs user/Patient.rs
user/Practitioner.rs user/Procedure.rs user/Provenance.rs
user/PractitionerRole.rs
user/Condition.rs user/Coverage.rs user/Device.rs
user/DiagnosticReport.rs user/DocumentReference.rs
user/Encounter.rs user/Goal.rs user/Immunization.rs
user/Location.rs user/MedicationDispense.rs
user/MedicationRequest.rs user/Observation.rs
user/Organization.rs user/Patient.rs user/Practitioner.rs
user/PractitionerRole.rs user/Procedure.rs user/Provenance.rs
user/QuestionnaireResponse.rs user/RelatedPerson.rs
user/ServiceRequest.rs user/Specimen.rs
).gsub(/\s{2,}/, ' ').strip.freeze
end
end
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,14 @@
.find { |group| group.id.include? 'multi_patient_api' }
.groups.find { |group| group.id.include? 'bulk_data_group_export_validation' }
end
let(:input) do
{
requires_access_token: 'true',
status_output:,
bulk_smart_auth_info: Inferno::DSL::AuthInfo.new(access_token: bearer_token),
bulk_download_url: endpoint
}
end
let(:suite_id) { 'g10_certification' }
let(:endpoint) { 'https://www.example.com' }
let(:status_output) { "[{\"url\":\"#{endpoint}\"}]" }
Expand All @@ -15,13 +23,9 @@
let(:contents) { '' }
let(:contents_missing_element) { '' }
let(:scratch) { {} }
let(:input) do
{
requires_access_token: 'true',
status_output:,
bulk_smart_auth_info: Inferno::DSL::AuthInfo.new(access_token: bearer_token),
bulk_download_url: endpoint
}

before do
allow_any_instance_of(Inferno::Test).to receive(:suite_options).and_return({ us_core_version: 'us_core_3' })
end

describe '[NDJSON download requires access token] test' do
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,42 +3,6 @@
RSpec.describe ONCCertificationG10TestKit::SmartEHRPractitionerAppGroup do
let(:suite_id) { 'g10_certification' }

it 'has a properly configured SMART v1 auth input' do
inputs =
described_class.available_inputs(
[Inferno::DSL::SuiteOption.new(id: :smart_app_launch_version, value: 'smart_app_launch_1')]
)

auth_input = inputs[:ehr_smart_auth_info]

expected_auth_input_options =
{
mode: 'auth',
components: [
{
name: :auth_type,
default: 'symmetric',
options: {
list_options: [
{ label: 'Public', value: 'public' },
{ label: 'Confidential Symmetric', value: 'symmetric' }
]
},
locked: true
},
{
name: :requested_scopes,
default: ONCCertificationG10TestKit::ScopeConstants::EHR_SMART_1_SCOPES
},
{ name: :auth_request_method, default: 'GET', locked: true },
{ name: :use_discovery, locked: true },
{ name: :pkce_support, default: 'disabled' }
]
}

expect(auth_input.options[:components]).to match_array(expected_auth_input_options[:components])
end

it 'has a properly configured SMART v2 auth input' do
inputs =
described_class.available_inputs(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,42 +3,6 @@
RSpec.describe ONCCertificationG10TestKit::SmartStandalonePatientAppGroup do
let(:suite_id) { 'g10_certification' }

it 'has a properly configured SMART v1 auth input' do
inputs =
described_class.available_inputs(
[Inferno::DSL::SuiteOption.new(id: :smart_app_launch_version, value: 'smart_app_launch_1')]
)

auth_input = inputs[:standalone_smart_auth_info]

expected_auth_input_options =
{
mode: 'auth',
components: [
{
name: :auth_type,
default: 'symmetric',
options: {
list_options: [
{ label: 'Public', value: 'public' },
{ label: 'Confidential Symmetric', value: 'symmetric' }
]
},
locked: true
},
{
name: :requested_scopes,
default: ONCCertificationG10TestKit::ScopeConstants::STANDALONE_SMART_1_SCOPES
},
{ name: :auth_request_method, default: 'GET', locked: true },
{ name: :use_discovery, locked: true },
{ name: :pkce_support, default: 'disabled' }
]
}

expect(auth_input.options[:components]).to match_array(expected_auth_input_options[:components])
end

it 'has a properly configured SMART v2 auth input' do
inputs =
described_class.available_inputs(
Expand Down