davinci_pas_test_kit 0.9.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.
- checksums.yaml +7 -0
- data/LICENSE +201 -0
- data/lib/davinci_pas_test_kit/client_suite.rb +289 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/claim_status/pas_claim_status_test.rb +109 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_approval_submit_response_attest.rb +39 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_approval_submit_test.rb +38 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_denial_submit_response_attest.rb +38 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_denial_submit_test.rb +43 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_inquire_must_support_test.rb +51 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_pended_inquire_response_attest.rb +39 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_pended_inquire_test.rb +35 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_pended_submit_response_attest.rb +39 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_pended_submit_test.rb +43 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_submit_must_support_test.rb +57 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_token_request_test.rb +31 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_token_validation_test.rb +18 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/error_tests/nonconformant_pas_bundle.json +16 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/error_tests/pas_inquiry_error_test.rb +38 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/error_tests/pas_submission_error_test.rb +56 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/must_support/device_request_metadata.yml +112 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/must_support/medication_request_metadata.yml +183 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/must_support/nutrition_order_metadata.yml +109 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/must_support/pas_client_must_support_requirement_test.rb +117 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/must_support/pas_server_must_support_requirement_test.rb +116 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/must_support/service_request_metadata.yml +148 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/pas_client_approval_group.rb +26 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/pas_client_authentication_group.rb +49 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/pas_client_denial_group.rb +41 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/pas_client_pended_group.rb +56 -0
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/pas_error_group.rb +20 -0
- data/lib/davinci_pas_test_kit/ext/inferno_core/record_response_route.rb +98 -0
- data/lib/davinci_pas_test_kit/ext/inferno_core/request.rb +19 -0
- data/lib/davinci_pas_test_kit/ext/inferno_core/runnable.rb +18 -0
- data/lib/davinci_pas_test_kit/fhir_resource_navigation.rb +72 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/client_inquiry_request_beneficiary_must_support_test.rb +75 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/client_submit_request_beneficiary_must_support_test.rb +75 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/metadata.yml +162 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/server_inquiry_request_beneficiary_must_support_test.rb +75 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/server_inquiry_response_beneficiary_must_support_test.rb +75 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/server_submit_request_beneficiary_must_support_test.rb +75 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/server_submit_response_beneficiary_must_support_test.rb +75 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/claim/claim_operation_test.rb +67 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/claim/metadata.yml +577 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/claim_inquiry/claim_inquiry_operation_test.rb +57 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/claim_inquiry/client_inquiry_request_claim_inquiry_must_support_test.rb +95 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/claim_inquiry/metadata.yml +516 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/claim_inquiry/server_inquiry_request_claim_inquiry_must_support_test.rb +95 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/claim_update/client_submit_request_claim_update_must_support_test.rb +102 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/claim_update/metadata.yml +591 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/claim_update/server_submit_request_claim_update_must_support_test.rb +102 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/claiminquiryresponse/metadata.yml +311 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/claiminquiryresponse/server_inquiry_response_claiminquiryresponse_must_support_test.rb +73 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/claimresponse/metadata.yml +318 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/claimresponse/server_submit_response_claimresponse_must_support_test.rb +75 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/client_tests/client_denial_pas_response_bundle_validation_test.rb +53 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/client_tests/client_pas_request_bundle_validation_test.rb +55 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/client_tests/client_pended_pas_inquiry_request_bundle_validation_test.rb +55 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/client_tests/client_pended_pas_response_bundle_validation_test.rb +53 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/communication_request/metadata.yml +130 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/communication_request/server_submit_response_communication_request_must_support_test.rb +58 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/client_inquiry_request_coverage_must_support_test.rb +55 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/client_submit_request_coverage_must_support_test.rb +55 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/metadata.yml +111 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/server_inquiry_request_coverage_must_support_test.rb +55 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/server_submit_request_coverage_must_support_test.rb +55 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/device_request/client_submit_request_device_request_must_support_test.rb +51 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/device_request/metadata.yml +112 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/device_request/server_submit_request_device_request_must_support_test.rb +51 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/encounter/client_submit_request_encounter_must_support_test.rb +67 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/encounter/metadata.yml +213 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/encounter/server_submit_request_encounter_must_support_test.rb +67 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/client_inquiry_request_insurer_must_support_test.rb +60 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/client_submit_request_insurer_must_support_test.rb +60 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/metadata.yml +104 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_inquiry_request_insurer_must_support_test.rb +60 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_inquiry_response_insurer_must_support_test.rb +60 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_submit_request_insurer_must_support_test.rb +60 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_submit_response_insurer_must_support_test.rb +60 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/medication_request/client_submit_request_medication_request_must_support_test.rb +61 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/medication_request/metadata.yml +183 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/medication_request/server_submit_request_medication_request_must_support_test.rb +61 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/metadata.yml +5253 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/nutrition_order/client_submit_request_nutrition_order_must_support_test.rb +53 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/nutrition_order/metadata.yml +109 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/nutrition_order/server_submit_request_nutrition_order_must_support_test.rb +53 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_client_inquiry_must_support_use_case_group.rb +51 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_client_submit_must_support_use_case_group.rb +61 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/client_inquiry_request_pas_inquiry_request_bundle_must_support_test.rb +53 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/metadata.yml +77 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/server_inquiry_request_pas_inquiry_request_bundle_must_support_test.rb +53 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/server_pas_inquiry_request_bundle_validation_test.rb +83 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_response_bundle/metadata.yml +67 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_response_bundle/server_inquiry_response_pas_inquiry_response_bundle_must_support_test.rb +52 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_response_bundle/server_pas_inquiry_response_bundle_validation_test.rb +80 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/client_submit_request_pas_request_bundle_must_support_test.rb +53 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/metadata.yml +77 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/server_pas_request_bundle_validation_test.rb +83 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/server_submit_request_pas_request_bundle_must_support_test.rb +53 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_response_bundle/metadata.yml +71 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_response_bundle/server_pas_response_bundle_validation_test.rb +80 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_response_bundle/server_submit_response_pas_response_bundle_must_support_test.rb +52 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_approval_use_case_group.rb +59 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_denial_use_case_group.rb +59 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_must_support_use_case_group.rb +265 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_pended_use_case_group.rb +84 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/client_inquiry_request_practitioner_must_support_test.rb +53 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/client_submit_request_practitioner_must_support_test.rb +53 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/metadata.yml +74 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_inquiry_request_practitioner_must_support_test.rb +53 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_inquiry_response_practitioner_must_support_test.rb +53 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_submit_request_practitioner_must_support_test.rb +53 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_submit_response_practitioner_must_support_test.rb +53 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/client_inquiry_request_practitioner_role_must_support_test.rb +49 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/client_submit_request_practitioner_role_must_support_test.rb +49 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/metadata.yml +81 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_inquiry_request_practitioner_role_must_support_test.rb +49 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_inquiry_response_practitioner_role_must_support_test.rb +49 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_submit_request_practitioner_role_must_support_test.rb +49 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_submit_response_practitioner_role_must_support_test.rb +49 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/client_inquiry_request_requestor_must_support_test.rb +63 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/client_submit_request_requestor_must_support_test.rb +63 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/metadata.yml +107 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_inquiry_request_requestor_must_support_test.rb +63 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_inquiry_response_requestor_must_support_test.rb +63 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_submit_request_requestor_must_support_test.rb +63 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_submit_response_requestor_must_support_test.rb +63 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/resource_list.rb +54 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/server_suite.rb +236 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/service_request/client_submit_request_service_request_must_support_test.rb +53 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/service_request/metadata.yml +148 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/service_request/server_submit_request_service_request_must_support_test.rb +53 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/client_inquiry_request_subscriber_must_support_test.rb +74 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/client_submit_request_subscriber_must_support_test.rb +74 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/metadata.yml +159 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/server_inquiry_request_subscriber_must_support_test.rb +74 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/server_submit_request_subscriber_must_support_test.rb +74 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/task/metadata.yml +192 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/task/server_inquiry_response_task_must_support_test.rb +61 -0
- data/lib/davinci_pas_test_kit/generated/v2.0.1/task/server_submit_response_task_must_support_test.rb +61 -0
- data/lib/davinci_pas_test_kit/generator/group_generator.rb +440 -0
- data/lib/davinci_pas_test_kit/generator/group_metadata.rb +73 -0
- data/lib/davinci_pas_test_kit/generator/group_metadata_extractor.rb +244 -0
- data/lib/davinci_pas_test_kit/generator/ig_loader.rb +78 -0
- data/lib/davinci_pas_test_kit/generator/ig_metadata.rb +66 -0
- data/lib/davinci_pas_test_kit/generator/ig_metadata_extractor.rb +54 -0
- data/lib/davinci_pas_test_kit/generator/ig_resources.rb +74 -0
- data/lib/davinci_pas_test_kit/generator/must_support_check_profiles.rb +86 -0
- data/lib/davinci_pas_test_kit/generator/must_support_metadata_extractor.rb +327 -0
- data/lib/davinci_pas_test_kit/generator/must_support_test_generator.rb +155 -0
- data/lib/davinci_pas_test_kit/generator/naming.rb +50 -0
- data/lib/davinci_pas_test_kit/generator/operation_test_generator.rb +136 -0
- data/lib/davinci_pas_test_kit/generator/resource_list_generator.rb +59 -0
- data/lib/davinci_pas_test_kit/generator/suite_generator.rb +94 -0
- data/lib/davinci_pas_test_kit/generator/terminology_binding_metadata_extractor.rb +108 -0
- data/lib/davinci_pas_test_kit/generator/validation_test_generator.rb +181 -0
- data/lib/davinci_pas_test_kit/generator/value_extractor.rb +48 -0
- data/lib/davinci_pas_test_kit/generator.rb +80 -0
- data/lib/davinci_pas_test_kit/mock_server.rb +189 -0
- data/lib/davinci_pas_test_kit/must_support_test.rb +267 -0
- data/lib/davinci_pas_test_kit/pas_bundle_validation.rb +568 -0
- data/lib/davinci_pas_test_kit/tags.rb +7 -0
- data/lib/davinci_pas_test_kit/urls.rb +39 -0
- data/lib/davinci_pas_test_kit/user_input_response.rb +32 -0
- data/lib/davinci_pas_test_kit/validation_test.rb +58 -0
- data/lib/davinci_pas_test_kit/validator_suppressions.rb +143 -0
- data/lib/davinci_pas_test_kit/version.rb +5 -0
- data/lib/davinci_pas_test_kit.rb +2 -0
- metadata +281 -0
|
@@ -0,0 +1,440 @@
|
|
|
1
|
+
require_relative 'naming'
|
|
2
|
+
|
|
3
|
+
module DaVinciPASTestKit
|
|
4
|
+
class Generator
|
|
5
|
+
class GroupGenerator
|
|
6
|
+
class << self
|
|
7
|
+
def generate(ig_metadata, base_output_dir)
|
|
8
|
+
groups = ig_metadata.groups.select { |group| group.tests.present? }.reject do |group|
|
|
9
|
+
group.profile_name.include?('Base')
|
|
10
|
+
end
|
|
11
|
+
# Server Test Groups
|
|
12
|
+
['approval', 'denial', 'pended', 'must_support'].each_with_index do |use_case, index|
|
|
13
|
+
new(ig_metadata, use_case, groups, base_output_dir, 'server', index.zero?).generate
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Client Test Groups
|
|
17
|
+
['submit_must_support', 'inquiry_must_support'].each do |use_case|
|
|
18
|
+
new(ig_metadata, use_case, groups, base_output_dir, 'client', false).generate
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
attr_accessor :ig_metadata, :use_case, :groups, :base_output_dir, :first_generate, :system
|
|
24
|
+
|
|
25
|
+
def initialize(ig_metadata, use_case, groups, base_output_dir, system = 'server', first_generate = false)
|
|
26
|
+
self.ig_metadata = ig_metadata
|
|
27
|
+
self.use_case = use_case
|
|
28
|
+
self.groups = groups
|
|
29
|
+
self.base_output_dir = base_output_dir
|
|
30
|
+
self.system = system
|
|
31
|
+
self.first_generate = first_generate
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def template
|
|
35
|
+
@template ||= File.read(File.join(__dir__, 'templates', 'group.rb.erb'))
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def output
|
|
39
|
+
@output ||= ERB.new(template).result(binding)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def base_output_file_name
|
|
43
|
+
"#{class_name.underscore}.rb"
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def base_metadata_file_name
|
|
47
|
+
'metadata.yml'
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def class_name
|
|
51
|
+
"PAS#{system.capitalize}#{use_case.camelize}UseCaseGroup"
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def module_name
|
|
55
|
+
"DaVinciPAS#{groups.first.reformatted_version.upcase}"
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def title
|
|
59
|
+
if use_case.include?('must_support')
|
|
60
|
+
return 'Submit Request Must Support' if system == 'client' && use_case.include?('submit')
|
|
61
|
+
return 'Inquiry Request Must Support' if system == 'client'
|
|
62
|
+
|
|
63
|
+
'Demonstrate Element Support'
|
|
64
|
+
else
|
|
65
|
+
"Successful #{use_case.capitalize} Workflow"
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def run_as_group
|
|
70
|
+
return false if use_case.include?('must_support') && system == 'server'
|
|
71
|
+
|
|
72
|
+
true
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def output_file_name
|
|
76
|
+
File.join(base_output_dir, base_output_file_name)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def metadata_file_name(group)
|
|
80
|
+
File.join(base_output_dir, profile_identifier(group), base_metadata_file_name)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def profile_identifier(group_metadata)
|
|
84
|
+
Naming.snake_case_for_profile(group_metadata)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def group_id
|
|
88
|
+
"pas_#{system}_#{groups.first.reformatted_version}_#{use_case}_use_case"
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def generate
|
|
92
|
+
File.write(output_file_name, output)
|
|
93
|
+
ig_metadata.add_use_case_groups(group_id, base_output_file_name)
|
|
94
|
+
return unless first_generate
|
|
95
|
+
|
|
96
|
+
groups.each do |group_metadata|
|
|
97
|
+
File.write(metadata_file_name(group_metadata), YAML.dump(group_metadata.to_hash))
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def all_tests
|
|
102
|
+
@all_tests ||= groups.flat_map(&:tests).compact
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def all_test_ids
|
|
106
|
+
@all_test_ids = all_tests.map { |test| test[:id] }.reject do |id|
|
|
107
|
+
id.include?('medication_request_must_support') || id.include?('service_request_must_support') ||
|
|
108
|
+
id.include?('device_request_must_support') || id.include?('nutrition_order_must_support')
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def select_test_ids(include_patterns, exclude_patterns = [])
|
|
113
|
+
all_test_ids.select do |id|
|
|
114
|
+
include_conditions = include_patterns.all? { |pattern| id.include?(pattern) }
|
|
115
|
+
exclude_conditions = exclude_patterns.none? { |pattern| id.include?(pattern) }
|
|
116
|
+
include_conditions && exclude_conditions
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def submit_request_validation_test_ids
|
|
121
|
+
@submit_request_validation_test_ids ||= select_test_ids(['request', 'validation_test'], ['inquiry', 'client'])
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def inquiry_request_validation_test_ids
|
|
125
|
+
@inquiry_request_validation_test_ids ||= select_test_ids(['request', 'validation_test', 'inquiry'], ['client'])
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def submit_response_validation_test_ids
|
|
129
|
+
@submit_response_validation_test_ids ||= select_test_ids(['response', 'validation_test'], ['inquiry', 'client'])
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
def inquiry_response_validation_test_ids
|
|
133
|
+
@inquiry_response_validation_test_ids ||= select_test_ids(['response', 'validation_test', 'inquiry'],
|
|
134
|
+
['client'])
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
def submit_request_must_support_test_ids
|
|
138
|
+
@submit_request_must_support_test_ids ||= select_test_ids(['submit_request', 'must_support_test'], ['client'])
|
|
139
|
+
.unshift(pas_submit_must_support_requirement_test_id)
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
def client_submit_request_must_support_test_ids
|
|
143
|
+
@client_submit_request_must_support_test_ids ||= select_test_ids(
|
|
144
|
+
['submit_request', 'must_support_test'],
|
|
145
|
+
['server']
|
|
146
|
+
).unshift(pas_client_must_support_test_id, pas_submit_must_support_requirement_test_id)
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
def inquiry_request_must_support_test_ids
|
|
150
|
+
@inquiry_request_must_support_test_ids ||= select_test_ids(['inquiry_request', 'must_support_test'], ['client'])
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
def client_inquiry_request_must_support_test_ids
|
|
154
|
+
@client_inquiry_request_must_support_test_ids ||= select_test_ids(
|
|
155
|
+
['inquiry_request', 'must_support_test'],
|
|
156
|
+
['server']
|
|
157
|
+
).unshift(pas_client_must_support_test_id)
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def submit_response_must_support_test_ids
|
|
161
|
+
@submit_response_must_support_test_ids ||= select_test_ids(['submit_response', 'must_support_test'])
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
def inquiry_response_must_support_test_ids
|
|
165
|
+
@inquiry_response_must_support_test_ids ||= select_test_ids(['inquiry_response', 'must_support_test'])
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
def submit_operation_test_ids
|
|
169
|
+
@submit_operation_test_ids ||= select_test_ids(['operation_test'], ['inquiry'])
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
def inquiry_operation_test_ids
|
|
173
|
+
@inquiry_operation_test_ids ||= select_test_ids(['operation_test', 'inquiry'])
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
def approval_denial_test_ids
|
|
177
|
+
submit_request_validation_test_ids + submit_operation_test_ids + submit_response_validation_test_ids
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
def grouped_approval_denial_test_ids
|
|
181
|
+
{
|
|
182
|
+
'PAS Submit Operation' => approval_denial_test_ids,
|
|
183
|
+
'PAS Status Check' => [claim_status_test_id]
|
|
184
|
+
}
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
def pended_test_ids
|
|
188
|
+
approval_denial_test_ids + inquiry_request_validation_test_ids +
|
|
189
|
+
inquiry_operation_test_ids + inquiry_response_validation_test_ids
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
def grouped_pended_test_ids
|
|
193
|
+
inquiry_operation = inquiry_request_validation_test_ids +
|
|
194
|
+
inquiry_operation_test_ids +
|
|
195
|
+
inquiry_response_validation_test_ids
|
|
196
|
+
inquiry_tests = {
|
|
197
|
+
'PAS Inquiry Operation' => inquiry_operation
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
grouped_approval_denial_test_ids.merge(inquiry_tests)
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
def must_support_test_ids
|
|
204
|
+
pended_test_ids + submit_request_must_support_test_ids + submit_response_must_support_test_ids +
|
|
205
|
+
inquiry_request_must_support_test_ids + inquiry_response_must_support_test_ids
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
def grouped_must_support_test_ids
|
|
209
|
+
submit_tests = submit_request_validation_test_ids +
|
|
210
|
+
submit_operation_test_ids +
|
|
211
|
+
submit_response_validation_test_ids
|
|
212
|
+
inquiry_operation = inquiry_request_validation_test_ids +
|
|
213
|
+
inquiry_operation_test_ids +
|
|
214
|
+
inquiry_response_validation_test_ids
|
|
215
|
+
{
|
|
216
|
+
'$submit Element Support' => {
|
|
217
|
+
'PAS Submit Operation' => submit_tests,
|
|
218
|
+
'[USER INPUT VALIDATION] Submit Request Must Support' => submit_request_must_support_test_ids,
|
|
219
|
+
'Submit Response Must Support' => submit_response_must_support_test_ids
|
|
220
|
+
},
|
|
221
|
+
'$inquire Element Support' => {
|
|
222
|
+
'PAS Inquiry Operation' => inquiry_operation,
|
|
223
|
+
'[USER INPUT VALIDATION] Inquiry Request Must Support' => inquiry_request_must_support_test_ids,
|
|
224
|
+
'Inquiry Response Must Support' => inquiry_response_must_support_test_ids
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
end
|
|
228
|
+
|
|
229
|
+
def common_test_file_list(test_ids)
|
|
230
|
+
test_ids.map do |id|
|
|
231
|
+
test = all_tests.find { |t| t[:id] == id }
|
|
232
|
+
next unless test
|
|
233
|
+
|
|
234
|
+
group = groups.find { |grp| grp.tests.include?(test) }
|
|
235
|
+
name_without_suffix = test[:file_name].delete_suffix('.rb')
|
|
236
|
+
test_file = if name_without_suffix.start_with?('..')
|
|
237
|
+
name_without_suffix
|
|
238
|
+
else
|
|
239
|
+
"#{profile_identifier(group)}/#{name_without_suffix}"
|
|
240
|
+
end
|
|
241
|
+
test_file
|
|
242
|
+
end.compact
|
|
243
|
+
end
|
|
244
|
+
|
|
245
|
+
def approval_denial_test_file_list
|
|
246
|
+
common_test_file_list(approval_denial_test_ids) << claim_status_file_name
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
def pended_test_file_list
|
|
250
|
+
common_test_file_list(pended_test_ids) << claim_status_file_name
|
|
251
|
+
end
|
|
252
|
+
|
|
253
|
+
def must_support_test_file_list
|
|
254
|
+
common_test_file_list(must_support_test_ids).push(pas_submit_must_support_requirement_test_file)
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
def client_submit_request_must_support_test_file_list
|
|
258
|
+
common_test_file_list(client_submit_request_must_support_test_ids)
|
|
259
|
+
.push(pas_submit_must_support_requirement_test_file, pas_client_must_support_test_file)
|
|
260
|
+
end
|
|
261
|
+
|
|
262
|
+
def client_inquiry_request_must_support_test_file_list
|
|
263
|
+
common_test_file_list(client_inquiry_request_must_support_test_ids)
|
|
264
|
+
.push(pas_client_must_support_test_file)
|
|
265
|
+
end
|
|
266
|
+
|
|
267
|
+
def test_id_list
|
|
268
|
+
@test_id_list ||= if system == 'client'
|
|
269
|
+
if use_case == 'submit_must_support'
|
|
270
|
+
client_submit_request_must_support_test_ids
|
|
271
|
+
else
|
|
272
|
+
client_inquiry_request_must_support_test_ids
|
|
273
|
+
end
|
|
274
|
+
elsif use_case == 'approval' || use_case == 'denial'
|
|
275
|
+
grouped_approval_denial_test_ids
|
|
276
|
+
elsif use_case == 'pended'
|
|
277
|
+
grouped_pended_test_ids
|
|
278
|
+
else
|
|
279
|
+
grouped_must_support_test_ids
|
|
280
|
+
end
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
def test_file_list
|
|
284
|
+
@test_file_list ||= if system == 'client'
|
|
285
|
+
if use_case == 'submit_must_support'
|
|
286
|
+
client_submit_request_must_support_test_file_list
|
|
287
|
+
else
|
|
288
|
+
client_inquiry_request_must_support_test_file_list
|
|
289
|
+
end
|
|
290
|
+
elsif use_case == 'approval' || use_case == 'denial'
|
|
291
|
+
approval_denial_test_file_list
|
|
292
|
+
elsif use_case == 'pended'
|
|
293
|
+
pended_test_file_list
|
|
294
|
+
else
|
|
295
|
+
must_support_test_file_list
|
|
296
|
+
end
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
def claim_status_test_id
|
|
300
|
+
'prior_auth_claim_status'
|
|
301
|
+
end
|
|
302
|
+
|
|
303
|
+
def claim_status_file_name
|
|
304
|
+
"../../custom_groups/#{ig_metadata.ig_version}/claim_status/pas_claim_status_test"
|
|
305
|
+
end
|
|
306
|
+
|
|
307
|
+
def rename_input?(test_id)
|
|
308
|
+
(test_id.include?('request') && test_id.include?('validation') && !test_id.include?('inquiry')) ||
|
|
309
|
+
test_id.include?('operation_test')
|
|
310
|
+
end
|
|
311
|
+
|
|
312
|
+
def must_support_rename_input?(test_id)
|
|
313
|
+
(test_id.include?('request') && test_id.include?('validation')) ||
|
|
314
|
+
test_id.include?('operation_test')
|
|
315
|
+
end
|
|
316
|
+
|
|
317
|
+
def alt_test_id(id, use_case)
|
|
318
|
+
"#{id}_#{use_case}"
|
|
319
|
+
end
|
|
320
|
+
|
|
321
|
+
def alt_request_input_name(use_case, request_type)
|
|
322
|
+
"#{use_case}_pa_#{request_type}_request_payload"
|
|
323
|
+
end
|
|
324
|
+
|
|
325
|
+
def alt_request_input_title(use_case, request_type)
|
|
326
|
+
if use_case == 'must_support'
|
|
327
|
+
"Additional PAS #{request_type.capitalize} Request Payloads"
|
|
328
|
+
else
|
|
329
|
+
"PAS #{request_type.capitalize} Request Payload for #{use_case.capitalize} Response"
|
|
330
|
+
end
|
|
331
|
+
end
|
|
332
|
+
|
|
333
|
+
def pas_submit_must_support_requirement_test_id
|
|
334
|
+
"pas_#{system}_submit_#{ig_metadata.reformatted_version}_must_support_requirement"
|
|
335
|
+
end
|
|
336
|
+
|
|
337
|
+
def pas_submit_must_support_requirement_test_file
|
|
338
|
+
"../../custom_groups/#{ig_metadata.ig_version}/must_support/pas_#{system}_must_support_requirement_test"
|
|
339
|
+
end
|
|
340
|
+
|
|
341
|
+
# Client tests initiation for must support: tests to allow the client to send $submit/$inquire requests in
|
|
342
|
+
# addition to any already sent in previous test groups for Inferno to evaluate coverage of must support elements.
|
|
343
|
+
def pas_client_must_support_test_id
|
|
344
|
+
request_type = use_case.include?('submit') ? 'submit' : 'inquire'
|
|
345
|
+
"pas_client_#{request_type}_#{ig_metadata.reformatted_version}_must_support_test"
|
|
346
|
+
end
|
|
347
|
+
|
|
348
|
+
def pas_client_must_support_test_file
|
|
349
|
+
request_type = use_case.include?('submit') ? 'submit' : 'inquire'
|
|
350
|
+
"../../custom_groups/#{ig_metadata.ig_version}/client_tests/pas_client_#{request_type}_must_support_test"
|
|
351
|
+
end
|
|
352
|
+
|
|
353
|
+
def description
|
|
354
|
+
case system
|
|
355
|
+
when 'server'
|
|
356
|
+
case use_case
|
|
357
|
+
when 'approval'
|
|
358
|
+
<<~DESCRIPTION
|
|
359
|
+
Demonstrate the ability of the server to respond to a prior
|
|
360
|
+
authorization request with an `approved` decision.
|
|
361
|
+
DESCRIPTION
|
|
362
|
+
when 'denial'
|
|
363
|
+
<<~DESCRIPTION
|
|
364
|
+
Demonstrate the ability of the server to respond to a prior
|
|
365
|
+
authorization request with an `denied` decision.
|
|
366
|
+
DESCRIPTION
|
|
367
|
+
when 'pended'
|
|
368
|
+
<<~DESCRIPTION
|
|
369
|
+
Demonstrate a complete prior authorization workflow including a period
|
|
370
|
+
during which the final decision is pending. This includes
|
|
371
|
+
|
|
372
|
+
- Demonstrating the ability of the server to respond to a prior
|
|
373
|
+
authorization request with an `pended` status.
|
|
374
|
+
- Demonstrating the ability of the server to respond to a subsequent
|
|
375
|
+
inquiry request with a final decision for the request
|
|
376
|
+
DESCRIPTION
|
|
377
|
+
else # must_support
|
|
378
|
+
<<~DESCRIPTION
|
|
379
|
+
Demonstrate the ability of the server to support all PAS-defined profiles
|
|
380
|
+
and the must support elements defined in them. This includes
|
|
381
|
+
|
|
382
|
+
- the ability to respond to prior authorization submission and inquiry
|
|
383
|
+
requests that contain all PAS-defined profiles and their must support
|
|
384
|
+
elements.
|
|
385
|
+
- the ability to include in those responses all PAS-defined profiles
|
|
386
|
+
and their must support elements.
|
|
387
|
+
|
|
388
|
+
In order to allow Inferno to observe and validate these criteria, testers
|
|
389
|
+
are required to provide a set of `$submit` and `$inquire` requests that
|
|
390
|
+
collectively both themselves contain and elicit server responses that contain
|
|
391
|
+
all PAS-defined profiles and their must support elements.
|
|
392
|
+
DESCRIPTION
|
|
393
|
+
end
|
|
394
|
+
when 'client'
|
|
395
|
+
if use_case.include?('submit')
|
|
396
|
+
<<~DESCRIPTION
|
|
397
|
+
Check that the client can demonstrate `$submit` requests that contain
|
|
398
|
+
all PAS-defined profiles and their must support elements.
|
|
399
|
+
|
|
400
|
+
For `$submit` requests, this includes the following profiles:
|
|
401
|
+
|
|
402
|
+
- [PAS Request Bundle](https://hl7.org/fhir/us/davinci-pas/STU2/StructureDefinition-profile-pas-request-bundle.html)
|
|
403
|
+
- [PAS Claim Update](https://hl7.org/fhir/us/davinci-pas/STU2/StructureDefinition-profile-claim-update.html)
|
|
404
|
+
- [PAS Coverage](https://hl7.org/fhir/us/davinci-pas/STU2/StructureDefinition-profile-coverage.html)
|
|
405
|
+
- [PAS Beneficiary Patient](https://hl7.org/fhir/us/davinci-pas/STU2/StructureDefinition-profile-beneficiary.html)
|
|
406
|
+
- [PAS Subscriber Patient](https://hl7.org/fhir/us/davinci-pas/STU2/StructureDefinition-profile-subscriber.html)
|
|
407
|
+
- [PAS Insurer Organization](https://hl7.org/fhir/us/davinci-pas/STU2/StructureDefinition-profile-insurer.html)
|
|
408
|
+
- [PAS Requestor Organization](https://hl7.org/fhir/us/davinci-pas/STU2/StructureDefinition-profile-requestor.html)
|
|
409
|
+
- [PAS Practitioner](https://hl7.org/fhir/us/davinci-pas/STU2/StructureDefinition-profile-practitioner.html)
|
|
410
|
+
- [PAS PractitionerRole](https://hl7.org/fhir/us/davinci-pas/STU2/StructureDefinition-profile-practitionerrole.html)
|
|
411
|
+
- [PAS Encounter](https://hl7.org/fhir/us/davinci-pas/STU2/StructureDefinition-profile-encounter.html)
|
|
412
|
+
- At least one of the following request profiles
|
|
413
|
+
- [PAS Device Request](https://hl7.org/fhir/us/davinci-pas/STU2/StructureDefinition-profile-devicerequest.html)
|
|
414
|
+
- [PAS Medication Request](https://hl7.org/fhir/us/davinci-pas/STU2/StructureDefinition-profile-medicationrequest.html)
|
|
415
|
+
- [PAS Nutrition Order](https://hl7.org/fhir/us/davinci-pas/STU2/StructureDefinition-profile-nutritionorder.html)
|
|
416
|
+
- [PAS Service Request](https://hl7.org/fhir/us/davinci-pas/STU2/StructureDefinition-profile-servicerequest.html)
|
|
417
|
+
DESCRIPTION
|
|
418
|
+
else # inquire
|
|
419
|
+
<<~DESCRIPTION
|
|
420
|
+
Check that the client can demonstrate `$inquire` requests that contain
|
|
421
|
+
all PAS-defined profiles and their must support elements.
|
|
422
|
+
|
|
423
|
+
For `$inquire` requests, this includes the following profiles:
|
|
424
|
+
|
|
425
|
+
- [PAS Inquiry Request Bundle](https://hl7.org/fhir/us/davinci-pas/STU2/StructureDefinition-profile-pas-inquiry-request-bundle.html)
|
|
426
|
+
- [PAS Claim Inquiry](https://hl7.org/fhir/us/davinci-pas/STU2/StructureDefinition-profile-claim-inquiry.html)
|
|
427
|
+
- [PAS Coverage](https://hl7.org/fhir/us/davinci-pas/STU2/StructureDefinition-profile-coverage.html)
|
|
428
|
+
- [PAS Beneficiary Patient](https://hl7.org/fhir/us/davinci-pas/STU2/StructureDefinition-profile-beneficiary.html)
|
|
429
|
+
- [PAS Subscriber Patient](https://hl7.org/fhir/us/davinci-pas/STU2/StructureDefinition-profile-subscriber.html)
|
|
430
|
+
- [PAS Insurer Organization](https://hl7.org/fhir/us/davinci-pas/STU2/StructureDefinition-profile-insurer.html)
|
|
431
|
+
- [PAS Requestor Organization](https://hl7.org/fhir/us/davinci-pas/STU2/StructureDefinition-profile-requestor.html)
|
|
432
|
+
- [PAS Practitioner](https://hl7.org/fhir/us/davinci-pas/STU2/StructureDefinition-profile-practitioner.html)
|
|
433
|
+
- [PAS PractitionerRole](https://hl7.org/fhir/us/davinci-pas/STU2/StructureDefinition-profile-practitionerrole.html)
|
|
434
|
+
DESCRIPTION
|
|
435
|
+
end
|
|
436
|
+
end
|
|
437
|
+
end
|
|
438
|
+
end
|
|
439
|
+
end
|
|
440
|
+
end
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
module DaVinciPASTestKit
|
|
2
|
+
class Generator
|
|
3
|
+
class GroupMetadata
|
|
4
|
+
ATTRIBUTES = %i[
|
|
5
|
+
name
|
|
6
|
+
class_name
|
|
7
|
+
version
|
|
8
|
+
reformatted_version
|
|
9
|
+
resource
|
|
10
|
+
conformance_expectation
|
|
11
|
+
profile_url
|
|
12
|
+
profile_name
|
|
13
|
+
profile_version
|
|
14
|
+
title
|
|
15
|
+
short_description
|
|
16
|
+
interactions
|
|
17
|
+
operations
|
|
18
|
+
required_concepts
|
|
19
|
+
must_supports
|
|
20
|
+
mandatory_elements
|
|
21
|
+
bindings
|
|
22
|
+
references
|
|
23
|
+
tests
|
|
24
|
+
id
|
|
25
|
+
file_name
|
|
26
|
+
delayed_references
|
|
27
|
+
].freeze
|
|
28
|
+
|
|
29
|
+
ATTRIBUTES.each { |name| attr_accessor name }
|
|
30
|
+
|
|
31
|
+
def initialize(metadata)
|
|
32
|
+
metadata.each do |key, value|
|
|
33
|
+
raise "Unknown attribute #{key}" unless ATTRIBUTES.include? key
|
|
34
|
+
|
|
35
|
+
instance_variable_set(:"@#{key}", value)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def delayed?
|
|
40
|
+
!['Patient', 'Claim', 'ClaimResponse'].include?(resource)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def add_test(id:, file_name:)
|
|
44
|
+
self.tests ||= []
|
|
45
|
+
|
|
46
|
+
test_metadata = {
|
|
47
|
+
id:,
|
|
48
|
+
file_name:
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
self.tests << test_metadata
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def to_hash
|
|
55
|
+
ATTRIBUTES.each_with_object({}) { |key, hash| hash[key] = send(key) unless send(key).nil? }
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def add_delayed_references(delayed_profiles, ig_resources)
|
|
59
|
+
self.delayed_references =
|
|
60
|
+
references
|
|
61
|
+
.select { |reference| (reference[:profiles] & delayed_profiles).present? }
|
|
62
|
+
.map do |reference|
|
|
63
|
+
profile_urls = (reference[:profiles] & delayed_profiles)
|
|
64
|
+
delayed_resources = profile_urls.map { |url| ig_resources.resource_type_for_profile(url) }
|
|
65
|
+
{
|
|
66
|
+
path: reference[:path].gsub("#{resource}.", ''),
|
|
67
|
+
resources: delayed_resources
|
|
68
|
+
}
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|