Module: DaVinciCRDTestKit::SuggestionActionsValidation

Constant Summary

Constants included from ProfilesAndResourceTypes

ProfilesAndResourceTypes::ORDER_OR_ENCOUNTER_RESOURCE_CLASSES, ProfilesAndResourceTypes::ORDER_RESOURCE_CLASSES, ProfilesAndResourceTypes::ORDER_RESOURCE_TYPES

Constants included from RequestsLogicalModelValidation

RequestsLogicalModelValidation::CRD_CDS_HOOK_REQUEST_MODEL_URL, RequestsLogicalModelValidation::PERFORMER_ALLOWED_RESOURCE_TYPES, RequestsLogicalModelValidation::USER_ID_ALLOWED_RESOURCE_TYPES

Instance Method Summary collapse

Methods included from HookRequestFieldValidation

#hook_request_context_check, #hook_request_optional_fields_check, #hook_request_prefetch_check, #hook_request_required_fields_check, #json_parse, #no_error_validation

Methods included from ProfilesAndResourceTypes

#structure_definition_map, #structure_definition_map_v201, #structure_definition_map_v221

Methods included from ServerBaseURLs

#client_fhir_base_url, #fhir_url, #instance_url, #search_url

Methods included from BaseURLs

#inferno_base_url, #resume_fail_url, #resume_pass_url

Methods included from RequestsLogicalModelValidation

#validate_request_against_logical_model

Methods included from LogicalModelsOverrideHelper

#allowed_resource_type?, #check_appointment_conformance, #check_order_like_resource_conformance, #check_resource_conformance_to_coverage_profile, #check_resource_conformance_to_order_or_encounter_profile, #check_resource_conformance_to_order_profile, #check_resource_conformance_to_questionnaire_task_profile, #check_resource_type_and_validate, #local_reference?, #manually_check_appointment_validation_errors, #parse_action_resource, #primary_performer_type?, #referenced_resource_present_in_bundle?, #reject_resource_issues, #resolved_participant_patient_slice_issue?, #resolved_participant_primary_performer_slice_issue?

Instance Method Details

#action_fields_validation(action, ig_version: 'v201') ⇒ Object



7
8
9
10
11
12
13
# File 'lib/davinci_crd_test_kit/cross_suite/suggestion_actions_validation.rb', line 7

def action_fields_validation(action, ig_version: 'v201')
  action_required_fields.each do |field, type|
    validate_presence_and_type(action, field, type, 'Action')
  end

  action_type_field_validation(action, ig_version:)
end

#action_resource_type_check(action, expected_resource_types) ⇒ Object

rubocop:disable Naming/PredicateMethod



28
29
30
31
32
33
34
35
# File 'lib/davinci_crd_test_kit/cross_suite/suggestion_actions_validation.rb', line 28

def action_resource_type_check(action, expected_resource_types) # rubocop:disable Naming/PredicateMethod
  resource_type = if ['create', 'update'].include?(action['type'])
                    FHIR.from_contents(action['resource'].to_json)&.resourceType
                  else
                    action['resourceId']&.split('/')&.first
                  end
  expected_resource_types.include?(resource_type)
end

#actions_check(actions, contexts = nil, ig_version: 'v201') ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/davinci_crd_test_kit/cross_suite/suggestion_actions_validation.rb', line 15

def actions_check(actions, contexts = nil, ig_version: 'v201')
  create_actions_resource_types = extract_resource_types_by_action(actions, 'create')

  actions.each do |action|
    case action['type']
    when 'create', 'update'
      create_or_update_action_check(action, contexts, ig_version:)
    when 'delete'
      delete_action_check(action, create_actions_resource_types, contexts)
    end
  end
end