davinci_crd_test_kit 0.12.2 → 0.14.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 +4 -4
- data/config/presets/inferno_crd_client_suite.json.erb +20 -14
- data/config/presets/inferno_crd_client_suite_prefetch_subset_v221.json.erb +125 -0
- data/config/presets/inferno_crd_client_suite_v221.json.erb +124 -0
- data/config/presets/inferno_crd_server_suite.json.erb +59 -2
- data/config/presets/inferno_crd_server_suite_v221.json.erb +94 -0
- data/config/presets/ri_crd_request_generator.json_v221.json.erb +13 -0
- data/config/presets/ri_crd_server.json.erb +19 -19
- data/lib/davinci_crd_test_kit/client/client_base_urls.rb +80 -0
- data/lib/davinci_crd_test_kit/{client_hook_request_validation.rb → client/client_hook_request_validation.rb} +1 -1
- data/lib/davinci_crd_test_kit/client/crd_client_options.rb +30 -0
- data/lib/davinci_crd_test_kit/client/endpoints/cds_services_discovery_handler.rb +34 -0
- data/lib/davinci_crd_test_kit/client/endpoints/custom_service_response.rb +342 -0
- data/lib/davinci_crd_test_kit/client/endpoints/gather_response_generation_data.rb +410 -0
- data/lib/davinci_crd_test_kit/client/endpoints/hook_request_endpoint.rb +233 -0
- data/lib/davinci_crd_test_kit/{mock_service_response.rb → client/endpoints/mock_service_response.rb} +165 -59
- data/lib/davinci_crd_test_kit/{card_responses → client/endpoints/mocked_card_responses}/companions_prerequisites.json +1 -0
- data/lib/davinci_crd_test_kit/{card_responses → client/endpoints/mocked_card_responses}/create_update_coverage_information.json +3 -2
- data/lib/davinci_crd_test_kit/{card_responses → client/endpoints/mocked_card_responses}/launch_smart_app.json +8 -1
- data/lib/davinci_crd_test_kit/{card_responses → client/endpoints/mocked_card_responses}/propose_alternate_request.json +1 -0
- data/lib/davinci_crd_test_kit/{card_responses → client/endpoints/mocked_card_responses}/request_form_completion.json +17 -16
- data/lib/davinci_crd_test_kit/client/multi_request_message_helper.rb +35 -0
- data/lib/davinci_crd_test_kit/client/tagged_request_load_helper.rb +38 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_create_test.rb +43 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_read_test.rb +43 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_search_test.rb +234 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_update_test.rb +43 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_validation_test.rb +63 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/auth/decode_auth_token_test.rb +65 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/auth/retrieve_jwks_test.rb +109 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/auth/token_header_test.rb +70 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/auth/token_payload_test.rb +85 -0
- data/lib/davinci_crd_test_kit/{routes/cds-services.json → client/v2.0.1/cds-services-v201.json} +1 -1
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_appointment_book_group.rb +108 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_card_must_support_group.rb +31 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_encounter_discharge_group.rb +105 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_encounter_start_group.rb +105 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_fhir_api_group.rb +790 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_hooks_group.rb +74 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_order_dispatch_group.rb +111 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_order_select_group.rb +116 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_order_sign_group.rb +113 -0
- data/lib/davinci_crd_test_kit/{client_registration_group.rb → client/v2.0.1/client_registration_group.rb} +12 -8
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_urls.rb +13 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/crd_client_suite.rb +134 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/invocation/appointment_book_receive_request_test.rb +129 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/invocation/encounter_discharge_receive_request_test.rb +126 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/invocation/encounter_start_receive_request_test.rb +126 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/invocation/order_dispatch_receive_request_test.rb +138 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/invocation/order_select_receive_request_test.rb +134 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/invocation/order_sign_receive_request_test.rb +136 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_coverage_information.rb +93 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_external_reference.rb +62 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_instructions.rb +62 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/registration/client_registration_verification_test.rb +94 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/registration/client_service_registration_attestation_test.rb +40 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_fetched_data_test.rb +86 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_optional_fields_test.rb +63 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_prefetch_equals_queried_test.rb +96 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_required_fields_test.rb +55 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_valid_context_test.rb +70 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_valid_prefetch_test.rb +62 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_response/client_display_cards_attest.rb +83 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_response/inferno_response_validation.rb +79 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/api/client_coverage_info_update_test.rb +212 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/api/client_crd_update_verification_group.rb +18 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/auth/decode_auth_token_test.rb +69 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/auth/retrieve_jwks_test.rb +120 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/auth/token_header_test.rb +92 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/auth/token_payload_test.rb +93 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/cds-services-prefetch-subset-v221.json +198 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/cds-services-v221.json +202 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_appointment_book_group.rb +102 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_cross_hook_group.rb +28 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_encounter_discharge_group.rb +96 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_encounter_start_group.rb +95 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_fhir_api_group.rb +88 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_hooks_group.rb +64 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_long_running_hook_group.rb +32 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_dispatch_group.rb +101 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_select_group.rb +102 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_sign_group.rb +107 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_registration_group.rb +27 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_urls.rb +27 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/crd_client_suite.rb +229 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_card_must_support_coverage_information_test.rb +63 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_fhirpath_collection_as_comma_delimited_string_test.rb +60 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_hook_instances_unique_test.rb +45 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_location_address_propagation_test.rb +135 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_prefetch_complete_and_subset_test.rb +103 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/appointment_book_receive_request_test.rb +156 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/encounter_discharge_receive_request_test.rb +157 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/encounter_start_receive_request_test.rb +157 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_dispatch_receive_request_test.rb +165 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_select_receive_request_test.rb +165 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_sign_receive_request_test.rb +165 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/long_running/client_long_running_receive_request_test.rb +64 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/long_running/client_skip_long_running_attestation_test.rb +49 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/registration/client_registration_verification_test.rb +161 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/registration/client_service_registration_attestation_test.rb +107 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_conformance_test.rb +47 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_coverage_verification_test.rb +152 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_data_fetch_verification_test.rb +55 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_granted_scopes_test.rb +123 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_prefetch_complete_test.rb +127 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_prefetch_profiles_test.rb +55 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_requested_version_test.rb +54 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_secured_transport_test.rb +48 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/client_display_cards_attest.rb +74 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/hook_response_support_coverage_information_test.rb +30 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/inferno_response_validation.rb +77 -0
- data/lib/davinci_crd_test_kit/cross_suite/base_urls.rb +20 -0
- data/lib/davinci_crd_test_kit/cross_suite/cards_identification.rb +312 -0
- data/lib/davinci_crd_test_kit/{cards_validation.rb → cross_suite/cards_validation.rb} +104 -47
- data/lib/davinci_crd_test_kit/cross_suite/coverage-information_stu201_metadata.yml +27 -0
- data/lib/davinci_crd_test_kit/cross_suite/coverage-information_stu221_metadata.yml +60 -0
- data/lib/davinci_crd_test_kit/cross_suite/fhirpath_on_cds_request.rb +177 -0
- data/lib/davinci_crd_test_kit/{hook_request_field_validation.rb → cross_suite/hook_request_field_validation.rb} +282 -203
- data/lib/davinci_crd_test_kit/cross_suite/logical_models_override_helper.rb +220 -0
- data/lib/davinci_crd_test_kit/cross_suite/prefetch_completeness_checker.rb +462 -0
- data/lib/davinci_crd_test_kit/cross_suite/prefetch_contents_validation.rb +81 -0
- data/lib/davinci_crd_test_kit/cross_suite/prefetch_profile_validation.rb +48 -0
- data/lib/davinci_crd_test_kit/cross_suite/profiles_and_resource_types.rb +63 -0
- data/lib/davinci_crd_test_kit/cross_suite/replace_tokens.rb +38 -0
- data/lib/davinci_crd_test_kit/cross_suite/requests_logical_model_validation.rb +202 -0
- data/lib/davinci_crd_test_kit/cross_suite/response_logical_model_validation.rb +274 -0
- data/lib/davinci_crd_test_kit/{suggestion_actions_validation.rb → cross_suite/suggestion_actions_validation.rb} +70 -50
- data/lib/davinci_crd_test_kit/cross_suite/tags.rb +42 -0
- data/lib/davinci_crd_test_kit/metadata.rb +10 -44
- data/lib/davinci_crd_test_kit/requirements/cds-hooks-library_1.0.1_requirements.xlsx +0 -0
- data/lib/davinci_crd_test_kit/requirements/cds-hooks_2.0_requirements.xlsx +0 -0
- data/lib/davinci_crd_test_kit/requirements/cds-hooks_3.0.0-ballot_requirements.xlsx +0 -0
- data/lib/davinci_crd_test_kit/requirements/davinci_crd_test_kit_requirements.csv +742 -65
- data/lib/davinci_crd_test_kit/requirements/generated/crd_client_requirements_coverage.csv +279 -54
- data/lib/davinci_crd_test_kit/requirements/generated/crd_client_v221_requirements_coverage.csv +1430 -0
- data/lib/davinci_crd_test_kit/requirements/generated/crd_server_requirements_coverage.csv +36 -45
- data/lib/davinci_crd_test_kit/requirements/generated/crd_server_v221_requirements_coverage.csv +143 -0
- data/lib/davinci_crd_test_kit/requirements/hl7.fhir.us.davinci-crd_2.0.1_requirements.xlsx +0 -0
- data/lib/davinci_crd_test_kit/requirements/hl7.fhir.us.davinci-crd_2.2.1_requirements.xlsx +0 -0
- data/lib/davinci_crd_test_kit/server/endpoints/jwk_set_endpoint_handler.rb +13 -0
- data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_create_endpoint.rb +23 -0
- data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_delete_endpoint.rb +30 -0
- data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_metadata_endpoint.rb +112 -0
- data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_read_endpoint.rb +21 -0
- data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_request_handler.rb +261 -0
- data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_search_endpoint.rb +561 -0
- data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_update_endpoint.rb +24 -0
- data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/stress-test-Bundle.json +54687 -0
- data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr_endpoints.rb +95 -0
- data/lib/davinci_crd_test_kit/server/jobs/invoke_hook.rb +225 -0
- data/lib/davinci_crd_test_kit/{jwt_helper.rb → server/jwt_helper.rb} +1 -12
- data/lib/davinci_crd_test_kit/server/resource_extractor.rb +68 -0
- data/lib/davinci_crd_test_kit/server/server_abstract_invoke_hook_test.rb +165 -0
- data/lib/davinci_crd_test_kit/server/server_base_urls.rb +30 -0
- data/lib/davinci_crd_test_kit/{server_hook_helper.rb → server/server_hook_helper.rb} +1 -1
- data/lib/davinci_crd_test_kit/{server_hook_request_validation.rb → server/server_hook_request_validation.rb} +1 -1
- data/lib/davinci_crd_test_kit/{test_helper.rb → server/server_test_helper.rb} +7 -3
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Appointment.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/ClaimResponse.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/CommunicationRequest.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Coverage.yml +21 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Device.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/DeviceRequest.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Encounter.yml +7 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Location.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/MedicationRequest.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/NutritionOrder.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Organization.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Patient.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Practitioner.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/PractitionerRole.yml +40 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/ServiceRequest.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Task.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/VisionPrescription.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_server_suite.rb +99 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/discovery/discovery_endpoint_test.rb +90 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/discovery/discovery_services_validation_test.rb +67 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/interaction/server_invoke_hook_test.rb +12 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/must_support/coverage_information_system_action_across_hooks_validation_test.rb +34 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/must_support/external_reference_card_across_hooks_validation_test.rb +30 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/must_support/instructions_card_received_across_hooks_test.rb +27 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_appointment_book_group.rb +191 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_demonstrate_hook_response_group.rb +93 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_discovery_group.rb +62 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_encounter_discharge_group.rb +186 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_encounter_start_group.rb +186 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_hooks_group.rb +73 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_order_dispatch_group.rb +191 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_order_select_group.rb +211 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_order_sign_group.rb +216 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_required_card_response_validation_group.rb +28 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_urls.rb +13 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_request/service_request_context_validation_test.rb +30 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_request/service_request_optional_fields_validation_test.rb +39 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_request/service_request_required_fields_validation_test.rb +40 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/additional_orders_validation_test.rb +59 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/card_optional_fields_validation_test.rb +51 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/coverage_information_system_action_received_test.rb +65 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/coverage_information_system_action_validation_test.rb +120 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/create_or_update_coverage_info_response_validation_test.rb +70 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/external_reference_card_validation_test.rb +37 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/form_completion_response_validation_test.rb +67 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/instructions_card_received_test.rb +30 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/launch_smart_app_card_validation_test.rb +39 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/propose_alternate_request_card_validation_test.rb +46 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/service_response_validation_test.rb +83 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Appointment_withorder.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Appointment_withoutorder.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/CommunicationRequest.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Coverage.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Device.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/DeviceRequest.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Encounter.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Location.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/MedicationRequest.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/NutritionOrder.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Organization.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Patient.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/PractitionerRole.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/ServiceRequest.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/VisionPrescription.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_server_suite.rb +115 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_configuration_test.rb +159 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_endpoint_test.rb +90 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_prefetch_support_test.rb +43 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_services_validation_test.rb +121 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/interaction/server_invoke_hook_test.rb +17 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/must_support/coverage_information_must_support_test.rb +71 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/must_support/coverage_information_system_action_across_hooks_validation_test.rb +36 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/must_support/supported_us_core_versions_test.rb +118 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_appointment_book_group.rb +213 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_demonstrate_hook_response_group.rb +93 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_discovery_group.rb +69 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_encounter_discharge_group.rb +194 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_encounter_start_group.rb +194 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_hooks_group.rb +73 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_dispatch_group.rb +214 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_select_group.rb +219 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_sign_group.rb +241 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_required_card_response_validation_group.rb +30 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_urls.rb +13 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_context_validation_test.rb +30 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_no_custom_extensions_test.rb +120 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_optional_fields_validation_test.rb +39 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_required_fields_validation_test.rb +40 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/additional_orders_validation_test.rb +66 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/all_responses_include_coverage_information_test.rb +123 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/card_optional_fields_validation_test.rb +57 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_info_configuration_test.rb +83 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_system_action_received_test.rb +65 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_system_action_validation_test.rb +184 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/create_or_update_coverage_info_response_validation_test.rb +75 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/external_reference_card_validation_test.rb +47 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/form_completion_response_validation_test.rb +91 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/hook_request_resource_resolution.rb +137 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/instructions_card_received_test.rb +32 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/launch_smart_app_card_validation_test.rb +49 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/order_dispatch_coverage_information_test.rb +38 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/propose_alternate_request_card_validation_test.rb +54 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/service_response_validation_test.rb +97 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_cds_hooks_elements_test.rb +78 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_configuration_test.rb +78 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_context_test.rb +78 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/verify_response_without_billing_options_test.rb +43 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/verify_response_without_configuration_test.rb +44 -0
- data/lib/davinci_crd_test_kit/version.rb +2 -2
- data/lib/davinci_crd_test_kit.rb +4 -2
- metadata +308 -101
- data/lib/davinci_crd_test_kit/client_fhir_api_group.rb +0 -785
- data/lib/davinci_crd_test_kit/client_hooks_group.rb +0 -75
- data/lib/davinci_crd_test_kit/client_tests/appointment_book_receive_request_test.rb +0 -93
- data/lib/davinci_crd_test_kit/client_tests/client_appointment_book_group.rb +0 -75
- data/lib/davinci_crd_test_kit/client_tests/client_display_cards_attest.rb +0 -48
- data/lib/davinci_crd_test_kit/client_tests/client_encounter_discharge_group.rb +0 -73
- data/lib/davinci_crd_test_kit/client_tests/client_encounter_start_group.rb +0 -73
- data/lib/davinci_crd_test_kit/client_tests/client_fhir_api_create_test.rb +0 -41
- data/lib/davinci_crd_test_kit/client_tests/client_fhir_api_read_test.rb +0 -39
- data/lib/davinci_crd_test_kit/client_tests/client_fhir_api_search_test.rb +0 -232
- data/lib/davinci_crd_test_kit/client_tests/client_fhir_api_update_test.rb +0 -41
- data/lib/davinci_crd_test_kit/client_tests/client_fhir_api_validation_test.rb +0 -60
- data/lib/davinci_crd_test_kit/client_tests/client_order_dispatch_group.rb +0 -79
- data/lib/davinci_crd_test_kit/client_tests/client_order_select_group.rb +0 -82
- data/lib/davinci_crd_test_kit/client_tests/client_order_sign_group.rb +0 -81
- data/lib/davinci_crd_test_kit/client_tests/client_registration_verification_test.rb +0 -88
- data/lib/davinci_crd_test_kit/client_tests/decode_auth_token_test.rb +0 -60
- data/lib/davinci_crd_test_kit/client_tests/encounter_discharge_receive_request_test.rb +0 -90
- data/lib/davinci_crd_test_kit/client_tests/encounter_start_receive_request_test.rb +0 -90
- data/lib/davinci_crd_test_kit/client_tests/hook_request_optional_fields_test.rb +0 -57
- data/lib/davinci_crd_test_kit/client_tests/hook_request_required_fields_test.rb +0 -49
- data/lib/davinci_crd_test_kit/client_tests/hook_request_valid_context_test.rb +0 -68
- data/lib/davinci_crd_test_kit/client_tests/hook_request_valid_prefetch_test.rb +0 -69
- data/lib/davinci_crd_test_kit/client_tests/order_dispatch_receive_request_test.rb +0 -102
- data/lib/davinci_crd_test_kit/client_tests/order_select_receive_request_test.rb +0 -98
- data/lib/davinci_crd_test_kit/client_tests/order_sign_receive_request_test.rb +0 -101
- data/lib/davinci_crd_test_kit/client_tests/retrieve_jwks_test.rb +0 -105
- data/lib/davinci_crd_test_kit/client_tests/submitted_response_validation.rb +0 -44
- data/lib/davinci_crd_test_kit/client_tests/token_header_test.rb +0 -65
- data/lib/davinci_crd_test_kit/client_tests/token_payload_test.rb +0 -78
- data/lib/davinci_crd_test_kit/crd_client_suite.rb +0 -185
- data/lib/davinci_crd_test_kit/crd_options.rb +0 -9
- data/lib/davinci_crd_test_kit/crd_server_suite.rb +0 -125
- data/lib/davinci_crd_test_kit/igs/davinci-crd-2.0.1.tgz +0 -0
- data/lib/davinci_crd_test_kit/routes/cds_services_discovery_handler.rb +0 -18
- data/lib/davinci_crd_test_kit/routes/hook_request_endpoint.rb +0 -77
- data/lib/davinci_crd_test_kit/routes/jwk_set_endpoint_handler.rb +0 -15
- data/lib/davinci_crd_test_kit/server_appointment_book_group.rb +0 -176
- data/lib/davinci_crd_test_kit/server_demonstrate_hook_response_group.rb +0 -77
- data/lib/davinci_crd_test_kit/server_discovery_group.rb +0 -60
- data/lib/davinci_crd_test_kit/server_encounter_discharge_group.rb +0 -170
- data/lib/davinci_crd_test_kit/server_encounter_start_group.rb +0 -170
- data/lib/davinci_crd_test_kit/server_hooks_group.rb +0 -71
- data/lib/davinci_crd_test_kit/server_order_dispatch_group.rb +0 -176
- data/lib/davinci_crd_test_kit/server_order_select_group.rb +0 -195
- data/lib/davinci_crd_test_kit/server_order_sign_group.rb +0 -201
- data/lib/davinci_crd_test_kit/server_required_card_response_validation_group.rb +0 -26
- data/lib/davinci_crd_test_kit/server_tests/additional_orders_validation_test.rb +0 -68
- data/lib/davinci_crd_test_kit/server_tests/card_optional_fields_validation_test.rb +0 -47
- data/lib/davinci_crd_test_kit/server_tests/coverage_information_system_action_across_hooks_validation_test.rb +0 -32
- data/lib/davinci_crd_test_kit/server_tests/coverage_information_system_action_received_test.rb +0 -63
- data/lib/davinci_crd_test_kit/server_tests/coverage_information_system_action_validation_test.rb +0 -118
- data/lib/davinci_crd_test_kit/server_tests/create_or_update_coverage_info_response_validation_test.rb +0 -71
- data/lib/davinci_crd_test_kit/server_tests/discovery_endpoint_test.rb +0 -88
- data/lib/davinci_crd_test_kit/server_tests/discovery_services_validation_test.rb +0 -65
- data/lib/davinci_crd_test_kit/server_tests/external_reference_card_across_hooks_validation_test.rb +0 -28
- data/lib/davinci_crd_test_kit/server_tests/external_reference_card_validation_test.rb +0 -36
- data/lib/davinci_crd_test_kit/server_tests/form_completion_response_validation_test.rb +0 -78
- data/lib/davinci_crd_test_kit/server_tests/instructions_card_received_across_hooks_test.rb +0 -25
- data/lib/davinci_crd_test_kit/server_tests/instructions_card_received_test.rb +0 -26
- data/lib/davinci_crd_test_kit/server_tests/launch_smart_app_card_validation_test.rb +0 -38
- data/lib/davinci_crd_test_kit/server_tests/propose_alternate_request_card_validation_test.rb +0 -63
- data/lib/davinci_crd_test_kit/server_tests/service_call_test.rb +0 -101
- data/lib/davinci_crd_test_kit/server_tests/service_request_context_validation_test.rb +0 -28
- data/lib/davinci_crd_test_kit/server_tests/service_request_optional_fields_validation_test.rb +0 -37
- data/lib/davinci_crd_test_kit/server_tests/service_request_required_fields_validation_test.rb +0 -38
- data/lib/davinci_crd_test_kit/server_tests/service_response_validation_test.rb +0 -81
- data/lib/davinci_crd_test_kit/tags.rb +0 -10
- data/lib/davinci_crd_test_kit/urls.rb +0 -52
- /data/lib/davinci_crd_test_kit/{card_responses → client/endpoints/mocked_card_responses}/external_reference.json +0 -0
- /data/lib/davinci_crd_test_kit/{card_responses → client/endpoints/mocked_card_responses}/instructions.json +0 -0
- /data/lib/davinci_crd_test_kit/{crd_jwks.json → server/endpoints/crd_jwks.json} +0 -0
- /data/lib/davinci_crd_test_kit/{jwks.rb → server/endpoints/jwks.rb} +0 -0
data/lib/davinci_crd_test_kit/requirements/generated/crd_server_v221_requirements_coverage.csv
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
Req Set,ID,URL,Requirement,Conformance,Actors,Conditionality,Not Tested Reason,Not Tested Details,Da Vinci CRD Server v2.2.1 Test Suite Short ID(s),Da Vinci CRD Server v2.2.1 Test Suite Full ID(s)
|
|
2
|
+
hl7.fhir.us.davinci-crd_2.2.1,billopt-2,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-billing-options.html#ci-c-billopt-2,CRD servers **SHALL NOT** depend on the billing-options extension being present in order to provide a response.,SHALL NOT,CRD Server,true,,,3.7.03,crd_server_v221-crd_v221_server_hooks-crd_v221_server_required_card_response_validation-verify_response_without_billing_options
|
|
3
|
+
hl7.fhir.us.davinci-crd_2.2.1,billopt-3-A,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-billing-options.html#ci-c-billopt-3,"If codes are provided with the billing-options extension, CRD servers **SHALL** consider any codes provided",SHALL,CRD Server,false,,,"",""
|
|
4
|
+
hl7.fhir.us.davinci-crd_2.2.1,billopt-3-B,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-billing-options.html#ci-c-billopt-3,"If codes are provided with the billing-options extension, CRD servers ... **MAY** consider additional codes determined by their own mapping when returning coverage information responses.",MAY,CRD Server,false,,,"",""
|
|
5
|
+
hl7.fhir.us.davinci-crd_2.2.1,conf-2,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-2,CRD servers **SHALL** be able to handle all three US Core versions.,SHALL,CRD Server,false,,,3.7.05,crd_server_v221-crd_v221_server_hooks-crd_v221_server_required_card_response_validation-crd_v221_supported_us_core_versions
|
|
6
|
+
hl7.fhir.us.davinci-crd_2.2.1,conf-4,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-4,CRD servers **SHALL** leverage mustSupport elements as available and appropriate to provide decision support.,SHALL,CRD Server,false,,,"",""
|
|
7
|
+
hl7.fhir.us.davinci-crd_2.2.1,conf-5,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-5,CRD servers **SHALL** populate mustSupport elements if an appropriate value exists.,SHALL,CRD Server,true,,,"",""
|
|
8
|
+
hl7.fhir.us.davinci-crd_2.2.1,conf-7,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-7,"When preparing [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-coverage-information.html) responses, CRD servers **SHALL NOT** depend on or set expectations for the inclusion of resource instances not compliant with profiles defined in this guide, HRex, or US Core.",SHALL NOT,CRD Server,false,,,3.7.06,crd_server_v221-crd_v221_server_hooks-crd_v221_server_required_card_response_validation-crd_v221_service_request_no_custom_extensions
|
|
9
|
+
hl7.fhir.us.davinci-crd_2.2.1,conf-8,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-8,CRD servers **SHALL NOT** depend on or set expectations for the inclusion of any data elements not marked as mandatory (min cardinality >= 1) or mustSupport in those profiles.,SHALL NOT,CRD Server,false,,,"",""
|
|
10
|
+
hl7.fhir.us.davinci-crd_2.2.1,conf-9,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-9,"When preparing [response types](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html) other than Coverage Information, CRD servers **SHOULD** limit themselves to the same resource instances and data elements as permitted above for Coverage Information responses.",SHOULD,CRD Server,true,,,"",""
|
|
11
|
+
hl7.fhir.us.davinci-crd_2.2.1,conf-11,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-11,"implementations **MAY**, by mutual agreement, pre-adopt the use of those additional CI-build profiles and/or mustSupport data elements and not be considered in violation of #1 or #3 above.",MAY,"CRD Client,CRD Server",true,,,"",""
|
|
12
|
+
hl7.fhir.us.davinci-crd_2.2.1,conf-12,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-12,"Where cardinality and other constraints present in profiles allow data elements to be omitted, CRD compliant systems **SHALL NOT** treat the omission of those elements as an error.",SHALL NOT,"CRD Client,CRD Server",true,,,"",""
|
|
13
|
+
hl7.fhir.us.davinci-crd_2.2.1,conf-13,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-13,CRD clients and services and **SHALL** use standard CRD data elements (i.e. elements found within CRD-defined or inherited profiles and marked as mandatory or mustSupport) to communicate needed data where the elements are intended to convey such information.,SHALL,"CRD Client,CRD Server",false,,,"",""
|
|
14
|
+
hl7.fhir.us.davinci-crd_2.2.1,covinfo-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-coverage-information.html#ci-c-covinfo-1,The union of the scoping elements in each coverage-information repetition **SHOULD** be disjoint.,SHOULD,CRD Server,false,,,"",""
|
|
15
|
+
hl7.fhir.us.davinci-crd_2.2.1,covinfo-2,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-coverage-information.html#ci-c-covinfo-2,"If there are multiple reason repetitions, each repetition **SHOULD** make clear exactly what aspect of the coverage information assertion the reason applies to.",SHOULD,CRD Server,true,,,"",""
|
|
16
|
+
hl7.fhir.us.davinci-crd_2.2.1,dev-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-1,CRD servers **SHALL** declare at least one supported CRD version for each supported hook.,SHALL,CRD Server,false,,,1.03,crd_server_v221-crd_v221_server_discovery_group-crd_v221_discovery_services_validation
|
|
17
|
+
hl7.fhir.us.davinci-crd_2.2.1,dev-2,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-2,"If the services endpoint can handle multiple CRD versions, it **SHALL** declare all versions it supports.",SHALL,CRD Server,true,,,"",""
|
|
18
|
+
hl7.fhir.us.davinci-crd_2.2.1,dev-4,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-4,Each configuration option SHALL include four mandatory elements.,SHALL,CRD Server,false,,,1.04,crd_server_v221-crd_v221_server_discovery_group-crd_v221_discovery_configuration
|
|
19
|
+
hl7.fhir.us.davinci-crd_2.2.1,dev-5,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-5,"CRD servers **SHALL**, at minimum, offer configuration options for each type of card they support (with a code corresponding to the [CRD Response Types](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-cardType.html) ValueSet and a type of 'boolean', where setting the flag to false will result in the server not returning any cards of the specified type).",SHALL,CRD Server,false,,,1.04,crd_server_v221-crd_v221_server_discovery_group-crd_v221_discovery_configuration
|
|
20
|
+
hl7.fhir.us.davinci-crd_2.2.1,dev-6,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-6,"Guidance can be given about allowed combinations in descriptions, but CRD servers **SHALL** gracefully handle disallowed/nonsensical combinations.",SHALL,CRD Server,false,,,"",""
|
|
21
|
+
hl7.fhir.us.davinci-crd_2.2.1,dev-7,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-7,Configuration codes **SHALL** be valid JSON property names and **SHALL** come from the [CRD Response Types](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-cardType.html) list if an applicable type is in that list.,SHALL,CRD Server,true,,,1.04,crd_server_v221-crd_v221_server_discovery_group-crd_v221_discovery_configuration
|
|
22
|
+
hl7.fhir.us.davinci-crd_2.2.1,dev-8,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-8,"Configuration codes, names, and descriptions **SHALL** be unique within a [CDS Service](http://cds-hooks.hl7.org/2026Jan/index.html#response) definition.",SHALL,CRD Server,false,,,1.04,crd_server_v221-crd_v221_server_discovery_group-crd_v221_discovery_configuration
|
|
23
|
+
hl7.fhir.us.davinci-crd_2.2.1,dev-9,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-9,"Configuration codes, names, and descriptions **SHOULD** be consistent across different hooks supported by the same payer when dealing with the same types of configuration options.",SHOULD,CRD Server,false,,,"",""
|
|
24
|
+
hl7.fhir.us.davinci-crd_2.2.1,dev-10,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-10,CRD servers providing more than one type of coverage requirement information/guidance **SHOULD** expose configuration options allowing clients to dynamically control what information is returned by the service.,SHOULD,CRD Server,false,,,"",""
|
|
25
|
+
hl7.fhir.us.davinci-crd_2.2.1,dev-14,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-14,CRD Servers **SHALL** behave in the manner prescribed by any supported configuration information received from the CRD Client.,SHALL,CRD Server,false,,,"3.1.3.11, 3.2.3.10, 3.3.3.10, 3.4.3.12, 3.5.3.11, 3.6.3.13","crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_coverage_info_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_coverage_info_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_coverage_info_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_coverage_info_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_coverage_info_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_coverage_info_configuration"
|
|
26
|
+
hl7.fhir.us.davinci-crd_2.2.1,dev-15,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-15,CRD Servers **SHALL NOT** require the inclusion of configuration information in a hook call (i.e. no hook invocation is permitted to fail because configuration information was not included).,SHALL NOT,CRD Server,false,,,3.7.04,crd_server_v221-crd_v221_server_hooks-crd_v221_server_required_card_response_validation-verify_response_without_configuration
|
|
27
|
+
hl7.fhir.us.davinci-crd_2.2.1,dev-17,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-17,CRD Servers **SHALL** ignore unsupported configuration information.,SHALL,CRD Server,false,,,"3.1.3.12, 3.2.3.11, 3.3.3.11, 3.4.3.13, 3.5.3.12, 3.6.3.14","crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_unknown_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_unknown_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_unknown_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_unknown_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_unknown_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_unknown_configuration"
|
|
28
|
+
hl7.fhir.us.davinci-crd_2.2.1,dev-19,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-19,"When included with a Task, the creation of the Questionnaire needs to be conditional - it **SHOULD** only occur if that specific Questionnaire version does not already exist",SHOULD,CRD Server,false,,,"",""
|
|
29
|
+
hl7.fhir.us.davinci-crd_2.2.1,dev-20,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-20,the CRD server **SHALL** query to determine if the client has a copy of the Questionnaire before sending the request.,SHALL,CRD Server,false,,,"3.1.3.09, 3.2.3.08, 3.3.3.08, 3.4.3.10, 3.5.3.09, 3.6.3.11","crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_request_form_completion_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_request_form_completion_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_request_form_completion_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_request_form_completion_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_request_form_completion_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_request_form_completion_response_validation"
|
|
30
|
+
hl7.fhir.us.davinci-crd_2.2.1,dev-24,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-24,"If a hook service is invoked on a collection of resources, all cards returned that are specific to only a subset of the resources passed as context **SHALL** disambiguate in the `detail` element which resources they are associated with in a human-friendly way.",SHALL,CRD Server,true,,,"",""
|
|
31
|
+
hl7.fhir.us.davinci-crd_2.2.1,dev-25,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-25,"As well, cards **SHOULD** include the associated-resource extension to allow computable linkage.",SHOULD,CRD Server,false,,,"",""
|
|
32
|
+
hl7.fhir.us.davinci-crd_2.2.1,found-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-1,"CRD servers and CRD clients **MAY** mutually agree to support additional hooks, additional card patterns, additional resources, additional extensions, etc. not found in this specification.",MAY,"CRD Client,CRD Server",false,,,"",""
|
|
33
|
+
hl7.fhir.us.davinci-crd_2.2.1,found-2,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-2,CRD servers **SHALL** return responses for all supported hooks and **SHALL** respond within the required time 90% of the time.,SHALL,CRD Server,false,,,"",""
|
|
34
|
+
hl7.fhir.us.davinci-crd_2.2.1,found-5,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-5,CRD servers **SHOULD** query all data necessary to make their coverage determination decisions if that data is available for query in the EHR and that data is not returned in prefetch.,SHOULD,CRD Server,true,,,"",""
|
|
35
|
+
hl7.fhir.us.davinci-crd_2.2.1,found-9,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-9,"CRD servers **SHALL** ensure that the guidance returned with respect to coverage and prior authorizations (e.g., assertions that a service is covered, or prior authorization is not necessary) is as accurate as guidance that would be provided by other means (e.g., portals, phone calls).",SHALL,CRD Server,false,,,"",""
|
|
36
|
+
hl7.fhir.us.davinci-crd_2.2.1,found-10,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-10,"Also, coverage and authorization guidance **SHOULD** allow for possible variances in coding and submission.",SHOULD,CRD Server,false,,,"",""
|
|
37
|
+
hl7.fhir.us.davinci-crd_2.2.1,found-11,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-11,CRD servers **SHALL** retain all coverage guidance provided and take into account answers provided via CRD (and DTR) when subsequently adjudicating claims.,SHALL,CRD Server,false,,,"",""
|
|
38
|
+
hl7.fhir.us.davinci-crd_2.2.1,found-13,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-13,CRD servers **SHALL** ensure that CDS Hooks return only messages and information relevant and useful to the intended recipient.,SHALL,CRD Server,false,,,"",""
|
|
39
|
+
hl7.fhir.us.davinci-crd_2.2.1,found-14,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-14,"If a CRD server supports [endpoint discovery](http://hl7.org/fhir/us/davinci-hrex/1.2.0/endpoint-discovery.html), they **SHALL** have at most a single endpoint for each coverage (e.g., Medicare, Medicaid, or commercial) they provide coverage under.",SHALL,CRD Server,true,,,"",""
|
|
40
|
+
hl7.fhir.us.davinci-crd_2.2.1,found-15,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-15,"If a CRD server does not support endpoint discovery, they **SHALL** expose only one CRD endpoint capable of handling all coverages.",SHALL,CRD Server,true,,,"",""
|
|
41
|
+
hl7.fhir.us.davinci-crd_2.2.1,found-18,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-18,CRD clients and servers **MAY** leverage the [payer registry](http://hl7.org/fhir/us/davinci-pdex-plan-net) developed by PDex (which will eventually fold into the [national directory under FAST](https://confluence.hl7.org/display/FAST/National+Healthcare+Directory)) as a means of determining which endpoints exist for which payers as candidates for configuration.,MAY,"CRD Client,CRD Server",false,,,"",""
|
|
42
|
+
hl7.fhir.us.davinci-crd_2.2.1,found-24,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-24,"For this release of the IG, conformant CRD clients and servers **SHALL** support the CDS Hooks prefetch capability.",SHALL,"CRD Client,CRD Server",false,,,1.05,crd_server_v221-crd_v221_server_discovery_group-crd_v221_discovery_prefetch_support
|
|
43
|
+
hl7.fhir.us.davinci-crd_2.2.1,found-26,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-26,"They **MAY** include more and/or less prefetch requests than described in 'standard' prefetch section below, based on which data is desired.",MAY,CRD Server,false,,,"",""
|
|
44
|
+
hl7.fhir.us.davinci-crd_2.2.1,found-27,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-27,Prefetch requests **SHOULD** only include information that is always expected to be needed for each hook invocation.,SHOULD,CRD Server,false,,,"",""
|
|
45
|
+
hl7.fhir.us.davinci-crd_2.2.1,found-28,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-28,"When information is only needed for certain invocations of the hook (e.g., for specific types of medications or services), that information **SHOULD** only be retrieved by query using the provided token, not requested universally via prefetch.",SHOULD,CRD Server,true,,,"",""
|
|
46
|
+
hl7.fhir.us.davinci-crd_2.2.1,found-29,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-29,Servers **SHALL** use prefetch expressions in the manner described below if those data elements are relevant to their coverage determination or other decision support.,SHALL,CRD Server,true,,,"",""
|
|
47
|
+
hl7.fhir.us.davinci-crd_2.2.1,found-32,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-32,HTTP 412 responses **SHALL NOT** be used in situations where the prefetch was provided or the query was successfully performed but the record in question did not have all the data the payer might have needed/desired.,SHALL NOT,CRD Server,false,,,"",""
|
|
48
|
+
hl7.fhir.us.davinci-crd_2.2.1,found-33,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-33,CRD clients and servers **SHALL** ignore unexpected elements when processing instances.,SHALL,"CRD Client,CRD Server",false,,,"3.1.3.14, 3.2.3.13, 3.3.3.13, 3.4.3.15, 3.5.3.14, 3.6.3.16","crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_unknown_cds_hooks_elements, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_unknown_cds_hooks_elements, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_unknown_cds_hooks_elements, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_unknown_cds_hooks_elements, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_unknown_cds_hooks_elements, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_unknown_cds_hooks_elements"
|
|
49
|
+
hl7.fhir.us.davinci-crd_2.2.1,found-34,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-34,CRD servers **SHALL** provide what coverage requirements they can based on the information available.,SHALL,CRD Server,false,,,"",""
|
|
50
|
+
hl7.fhir.us.davinci-crd_2.2.1,found-37,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-37,"Therefore, in addition to any logging performed for security purposes, both CRD clients and CRD servers **SHALL** retain logs of all CRD-related hook invocations and their responses for access in the event of a dispute.",SHALL,"CRD Client,CRD Server",false,,,"",""
|
|
51
|
+
hl7.fhir.us.davinci-crd_2.2.1,found-40,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-40,Conformant systems **SHOULD** omit non-significant whitespace in transmitted instances for performance reasons.,SHOULD,"CRD Client,CRD Server",false,,,"",""
|
|
52
|
+
hl7.fhir.us.davinci-crd_2.2.1,hook-4,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-4,CRD Servers conforming to this implementation guide **SHALL** provide a service for all hooks and order resource types required of CRD clients by this implementation guide unless the server has determined that the hook will not be reasonably useful in determining coverage or documentation expectations for the types of coverage provided.,SHALL,CRD Server,true,,,"",""
|
|
53
|
+
hl7.fhir.us.davinci-crd_2.2.1,hook-5,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-5,CRD Clients and CRD Servers **MAY** choose to support additional hooks available in the registry on the [CDS Hooks continuous integration build](https://build.fhir.org/ig/HL7/cds-hooks-library) or custom hooks defined elsewhere.,MAY,"CRD Client,CRD Server",false,,,"",""
|
|
54
|
+
hl7.fhir.us.davinci-crd_2.2.1,hook-6,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-6,"When supporting hooks not covered by this guide, systems **SHOULD** adhere to the general conformance expectations defined in this specification for those additional hooks.",SHOULD,"CRD Client,CRD Server",true,,,"",""
|
|
55
|
+
hl7.fhir.us.davinci-crd_2.2.1,hook-9,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-9,"If the CRD Server encounters an error when processing the request, the system **SHALL** return an appropriate error HTTP Response Code, starting with the digit ""4"" or ""5"", indicating that there was an error.",SHALL,CRD Server,true,,,"",""
|
|
56
|
+
hl7.fhir.us.davinci-crd_2.2.1,hook-10,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-10,"If an issue is identified at a layer of the CRD Server that is FHIR aware (e.g. not a ""wrong endpoint"" or ""not authorized"" issue), the server **SHALL** provide an OperationOutcome for internal issue tracking by the client system.",SHALL,CRD Server,true,,,"",""
|
|
57
|
+
hl7.fhir.us.davinci-crd_2.2.1,hook-13,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-13,CRD Servers SHALL use the 400 and 422 codes in a manner consistent with the FHIR RESTful Create Action,SHALL,CRD Server,false,,,"",""
|
|
58
|
+
hl7.fhir.us.davinci-crd_2.2.1,hook-14,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-14,"If a CRD server's validation process does not differentiate between validation issues stemming from the JSON syntax validation, FHIR core validation, CDS Hooks validation, and CRD-specific validation, it **MAY** treat all validation rules as 400 errors.",MAY,CRD Server,true,,,"",""
|
|
59
|
+
hl7.fhir.us.davinci-crd_2.2.1,hook-16,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-16,"Unless reporting an error or coverage information already exists and there is no new information, CRD Servers **SHALL** include a Coverage Information system action in the response for 'primary' hooks, even if the response indicates that further information is needed or that the level of detail provided is insufficient to determine coverage.",SHALL,CRD Server,false,,,"3.1.3.08, 3.5.3.08, 3.6.3.08","crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_all_responses_include_coverage_information, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_order_dispatch_coverage_information, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_all_responses_include_coverage_information"
|
|
60
|
+
hl7.fhir.us.davinci-crd_2.2.1,hook-19,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-19,"If Coverage Information is returned for these hooks, it **SHALL NOT** include messages indicating a need for [clinical](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-AdditionalDocumentation.html) or [administrative](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-AdditionalDocumentation.html) information, as such information is expected to be made available later in the process and therefore such guidance is not useful.",SHALL NOT,CRD Server,true,,,"",""
|
|
61
|
+
hl7.fhir.us.davinci-crd_2.2.1,hook-22,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-22,CRD servers **SHALL NOT** depend on data not covered by the identified profiles in order to return valid coverage-information responses.,SHALL NOT,CRD Server,false,,,3.7.06,crd_server_v221-crd_v221_server_hooks-crd_v221_server_required_card_response_validation-crd_v221_service_request_no_custom_extensions
|
|
62
|
+
hl7.fhir.us.davinci-crd_2.2.1,hook-23,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-23,CRD Servers **SHALL** handle unrecognized context elements by ignoring them.,SHALL,CRD Server,false,,,"3.1.3.13, 3.2.3.12, 3.3.3.12, 3.4.3.14, 3.5.3.13, 3.6.3.15","crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_unknown_context, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_unknown_context, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_unknown_context, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_unknown_context, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_unknown_context, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_unknown_context"
|
|
63
|
+
hl7.fhir.us.davinci-crd_2.2.1,hook-25,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-25,CRD Servers **MAY** use the appointment-book hook as a basis for associating a patient with a particular practitioner from a payer attribution perspective.,MAY,CRD Server,false,,,"",""
|
|
64
|
+
hl7.fhir.us.davinci-crd_2.2.1,hook-26,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-26,"CRD clients and servers **SHALL**, at minimum, support returning and processing the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-coverage-information.html) system action for all invocations of the appointment-book hook.",SHALL,"CRD Client,CRD Server",false,,,3.1.3.08,crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_all_responses_include_coverage_information
|
|
65
|
+
hl7.fhir.us.davinci-crd_2.2.1,hook-28,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-28,CRD Servers **MAY** use the encounter-start hook as a basis for associating a patient with a particular practitioner from a payer attribution perspective.,MAY,CRD Server,false,,,"",""
|
|
66
|
+
hl7.fhir.us.davinci-crd_2.2.1,hook-30,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-30,"Coverage requirements **SHOULD** be limited only to those resources that are included in the `dispatchedOrders` context, though the content of other resources **SHOULD** also be considered before making recommendations about what additional actions are necessary.",SHOULD,CRD Server,false,,,"",""
|
|
67
|
+
hl7.fhir.us.davinci-crd_2.2.1,hook-32,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-32,CRD Servers **MAY** use the order-dispatch hook as a basis for associating a patient with a particular practitioner from a payer attribution perspective.,MAY,CRD Server,false,,,"",""
|
|
68
|
+
hl7.fhir.us.davinci-crd_2.2.1,hook-33,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-33,"CRD clients and servers **SHALL**, at minimum, support returning and processing the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-coverage-information.html) system action for all invocations of the order-dispatch hook.",SHALL,"CRD Client,CRD Server",false,,,3.5.3.08,crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_order_dispatch_coverage_information
|
|
69
|
+
hl7.fhir.us.davinci-crd_2.2.1,hook-34,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-34,"Coverage requirements **SHOULD** be limited only to those resources that are included in the `selections` context, though the content of other resources **SHOULD** also be considered before making recommendations about what additional actions are necessary.",SHOULD,CRD Server,false,,,"",""
|
|
70
|
+
hl7.fhir.us.davinci-crd_2.2.1,hook-38,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-38,CRD Servers **MAY** use the order-sign hook as a basis for associating a patient with a particular practitioner from a payer attribution perspective.,MAY,CRD Server,false,,,"",""
|
|
71
|
+
hl7.fhir.us.davinci-crd_2.2.1,hook-39,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-39,"CRD clients and servers **SHALL**, at minimum, support returning and processing the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-coverage-information.html) system action for all invocations of the order-select hook.",SHALL,"CRD Client,CRD Server",false,,,3.6.3.08,crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_all_responses_include_coverage_information
|
|
72
|
+
hl7.fhir.us.davinci-crd_2.2.1,impl-2,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/implementation.html#ci-c-impl-2,CRD servers **SHOULD** strive to achieve a minimum of 3-9s availability for their services and strive to provide at least some level of useful response to CRD clients even if some of their back-end systems are unavailable.,SHOULD,CRD Server,false,,,"",""
|
|
73
|
+
hl7.fhir.us.davinci-crd_2.2.1,impl-3,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/implementation.html#ci-c-impl-3,"Even if implemented using multiple components, there is still a requirement that the exchanges between the provider HIT (including any ePA coordinators) and the payer HIT (including any ePA coordinators) **SHALL** replicate all of the defined exchanges between provider and payer.",SHALL,"CRD Client,CRD Server",false,,,"",""
|
|
74
|
+
hl7.fhir.us.davinci-crd_2.2.1,impl-5,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/implementation.html#ci-c-impl-5,"Where a CRD server has made inferences beyond what is explicit in the CRD request, the response **SHOULD** make clear what assumptions around billing codes, in/out-of-network, delivery location were made in providing the response.",SHOULD,CRD Server,false,,,"",""
|
|
75
|
+
hl7.fhir.us.davinci-crd_2.2.1,metric-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/metrics.html#ci-c-metric-1,"Each of these IGs recommends a set of metrics that **SHOULD** or **MAY** be collected by their respective implementations to facilitate the evaluation of adoption, functionality, processes, and improved outcomes.",SHOULD,"CRD Client,CRD Server",false,,,"",""
|
|
76
|
+
hl7.fhir.us.davinci-crd_2.2.1,ops-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/operational.html#ci-c-ops-1,"CRD clients and servers **SHOULD** support encounter-start and order-select, both to allow payer caching and to allow payers to return useful responses when possible (e.g. coverage expired, service not covered) with the limited information available in those hooks.",SHOULD,"CRD Client,CRD Server",false,,,"",""
|
|
77
|
+
hl7.fhir.us.davinci-crd_2.2.1,prof-15,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-coverageAssertionReasons.html#ci-c-prof-15,CRD servers **SHOULD** start sending the ActReason codes in parallel with the CRD-specific codes once they are available to ease transition in future releases when the CRD value set will be deprecated and eventually retired.,SHOULD,CRD Server,false,,,"",""
|
|
78
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-1,"The `Card.indicator` **SHOULD** be populated from the perspective of the clinical decision maker, not the payer",SHOULD,CRD Server,false,,,"",""
|
|
79
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-2,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-2,Most Coverage Requirements **SHOULD** be marked as 'info'.,SHOULD,CRD Server,false,,,"",""
|
|
80
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-3,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-3,All `Card.suggestion` elements **SHALL** populate the Suggestion.uuid element.,SHALL,CRD Server,false,,,"3.1.3.02, 3.2.3.02, 3.3.3.02, 3.4.3.02, 3.5.3.02, 3.6.3.02","crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_card_optional_fields_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_card_optional_fields_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_card_optional_fields_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_card_optional_fields_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_card_optional_fields_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_card_optional_fields_validation"
|
|
81
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-4,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-4,"The `Card.source.label` **SHALL** be populated with an insurer name that the user and patient are likely to recognize (i.e., the responsible insurer on the patient's insurance card), including in situations where coverage recommendations are being returned by a benefits manager or intermediary operating the CRD server on behalf of the payer.",SHALL,CRD Server,false,,,"2.3.01, 3.1.3.01, 3.2.3.01, 3.3.3.01, 3.4.3.01, 3.5.3.01, 3.6.3.01","crd_server_v221-crd_v221_server_demonstrate_hook_response-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_service_response_validation"
|
|
82
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-5,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-5,"`Card.source.topic` **SHALL** be populated, and has an [extensible](http://www.hl7.org/fhir/terminologies.html#extensible) binding to the ValueSet [CRD Response Types](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-cardType.html).",SHALL,CRD Server,false,,,"2.3.01, 3.1.3.01, 3.2.3.01, 3.3.3.01, 3.4.3.01, 3.5.3.01, 3.6.3.01","crd_server_v221-crd_v221_server_demonstrate_hook_response-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_service_response_validation"
|
|
83
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-6,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-6,`Card.summary` **SHOULD** provide actionable information.,SHOULD,CRD Server,false,,,"",""
|
|
84
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-7,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-7,`Card.detail` and/or external links **SHOULD** only be provided when coverage recommendations cannot be clearly provided in the 140-character limit of `Card.summary`.,SHOULD,CRD Server,false,,,"",""
|
|
85
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-8,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-8,"`Card.detail` **SHOULD** provide graduated information, with critical information being provided in the first paragraph and less critical information towards the end of the page.",SHOULD,CRD Server,false,,,"",""
|
|
86
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-9,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-9,"`Card.detail` **SHOULD** provide enough context that a user can determine whether it is worth their time to launch an app or follow an external link, ideally providing a sense of where to look for and how to use whatever link or app they launch in the specific context of the order they are making.",SHOULD,CRD Server,false,,,"",""
|
|
87
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-10,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-10,"While links are permitted in the markdown content of `Card.detail`, support for this is not universal, so links **SHOULD** also be provided in `[Card.link](http://Card.link)`.",SHOULD,CRD Server,false,,,"",""
|
|
88
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-11,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-11,"CRD client systems might not support all card capabilities, therefore card options **SHOULD** provide sufficient information for a user to perform record changes manually if automated support is not available.",SHOULD,CRD Server,false,,,"",""
|
|
89
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-12,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-12,"Where [systemActions](http://cds-hooks.hl7.org/2026Jan/index.html#system-action) are used, CRD servers **SHOULD NOT** return equivalent information in a card for user display.",SHOULD NOT,CRD Server,true,,,"",""
|
|
90
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-13,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-13,All CRD responses **SHALL** comply with the general profile found [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDHooksResponseBase.html).,SHALL,CRD Server,false,,,"2.3.01, 3.1.3.01, 3.1.3.02, 3.2.3.01, 3.2.3.02, 3.3.3.01, 3.3.3.02, 3.4.3.01, 3.4.3.02, 3.5.3.01, 3.5.3.02, 3.6.3.01, 3.6.3.02","crd_server_v221-crd_v221_server_demonstrate_hook_response-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_card_optional_fields_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_card_optional_fields_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_card_optional_fields_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_card_optional_fields_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_card_optional_fields_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_card_optional_fields_validation"
|
|
91
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-14,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-14,Conformant CRD clients and services **SHALL** support the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformancedetails.html#coverage-information-response-type) response type.,SHALL,"CRD Client,CRD Server",false,,,3.7.01,crd_server_v221-crd_v221_server_hooks-crd_v221_server_required_card_response_validation-crd_v221_coverage_info_system_action_across_hooks_validation
|
|
92
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-15,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-15,Conformant CRD clients and services **SHOULD** support the additional (non-coverage information) types defined by this guide.,SHOULD,"CRD Client,CRD Server",false,,,"",""
|
|
93
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-16,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-16,CRD servers that provide decision support for domains outside of coverage and/or documentation requirements **SHOULD** take reasonable steps to check that the CRD client does not have the information within its store that would allow it to detect the issue itself.,SHOULD,CRD Server,true,,,"",""
|
|
94
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-17,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-17,"CRD servers **SHALL NOT** use ""External Reference"" cards to direct users to a portal for the purpose of initiating prior authorization or determining coverage.",SHALL NOT,CRD Server,false,,,"",""
|
|
95
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-18,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-18,The card **SHALL** have at least one `[Card.link](http://Card.link)`.,SHALL,CRD Server,false,,,"3.1.3.02, 3.2.3.02, 3.3.3.02, 3.4.3.02, 3.5.3.02, 3.6.3.02","crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_card_optional_fields_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_card_optional_fields_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_card_optional_fields_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_card_optional_fields_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_card_optional_fields_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_card_optional_fields_validation"
|
|
96
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-19,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-19,"The `Link.type` **SHALL** have a type of ""absolute"".",SHALL,CRD Server,false,,,"3.1.3.02, 3.2.3.02, 3.3.3.02, 3.4.3.02, 3.5.3.02, 3.6.3.02","crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_card_optional_fields_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_card_optional_fields_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_card_optional_fields_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_card_optional_fields_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_card_optional_fields_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_card_optional_fields_validation"
|
|
97
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-20,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-20,"When reasonable, an ""External Reference"" card **SHOULD** contain a summary of the actionable information from the external reference in the `detail` element.",SHOULD,CRD Server,true,,,"",""
|
|
98
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-21,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-21,"As much as technically possible, links provided **SHOULD** be 'deep' links that take the user to the specific place in the documentation relevant to the current hook context to minimize provider reading and navigation time.",SHOULD,CRD Server,true,,,"",""
|
|
99
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-22,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-22,External Reference responses **SHALL** comply with the logical model profile found [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDHooksResponse-externalReference.html).,SHALL,CRD Server,false,,,"2.3.01, 3.1.3.01, 3.1.3.02, 3.1.3.03, 3.2.3.01, 3.2.3.02, 3.2.3.03, 3.3.3.01, 3.3.3.02, 3.3.3.03, 3.4.3.01, 3.4.3.02, 3.4.3.03, 3.5.3.01, 3.5.3.02, 3.5.3.03, 3.6.3.01, 3.6.3.02, 3.6.3.03","crd_server_v221-crd_v221_server_demonstrate_hook_response-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_card_optional_fields_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_external_reference_card_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_card_optional_fields_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_external_reference_card_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_card_optional_fields_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_external_reference_card_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_card_optional_fields_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_external_reference_card_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_card_optional_fields_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_external_reference_card_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_card_optional_fields_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_external_reference_card_validation"
|
|
100
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-23,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-23,CRD servers **SHALL NOT** use Instructions Response cards to direct users to a portal for the purpose of initiating prior authorization or determining coverage. Use the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformancedetails.html#coverage-information-response-type) response instead.,SHALL NOT,CRD Server,false,,,"",""
|
|
101
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-24,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-24,Instructions responses **SHALL** comply with the logical model profile found [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDHooksResponse-instructions.html).,SHALL,CRD Server,false,,,"2.3.01, 3.1.3.01, 3.1.3.05, 3.2.3.01, 3.2.3.05, 3.3.3.01, 3.3.3.05, 3.4.3.01, 3.4.3.05, 3.5.3.01, 3.5.3.05, 3.6.3.01, 3.6.3.05","crd_server_v221-crd_v221_server_demonstrate_hook_response-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_valid_instructions_card_received, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_valid_instructions_card_received, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_valid_instructions_card_received, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_valid_instructions_card_received, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_valid_instructions_card_received, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_valid_instructions_card_received"
|
|
102
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-25,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-25,"Regardless of the content, this ""Coverage Information"" response type **SHALL NOT** use a card.",SHALL NOT,CRD Server,false,,,"3.1.3.07, 3.5.3.07, 3.6.3.07","crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_coverage_info_system_action_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_coverage_info_system_action_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_coverage_info_system_action_validation"
|
|
103
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-26,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-26,"CRD servers **SHALL** support supplying coverage information for all primary hooks: order-sign, order-dispatch, and appointment-book.",SHALL,CRD Server,false,,,"3.1.3.06, 3.5.3.06, 3.6.3.06","crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_coverage_info_system_action_received, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_coverage_info_system_action_received, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_coverage_info_system_action_received"
|
|
104
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-27,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-27,CRD servers **MAY** support supplying coverage information for all other (non-primary) hooks.,MAY,CRD Server,false,,,"",""
|
|
105
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-28,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-28,CRD servers **SHALL** supply coverage information for all hooks where they support it unless the EHR sends a configuration option asking them not to.,SHALL,CRD Server,true,,,"3.1.3.08, 3.1.3.11, 3.2.3.10, 3.3.3.10, 3.4.3.12, 3.5.3.08, 3.5.3.11, 3.6.3.08, 3.6.3.13","crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_all_responses_include_coverage_information, crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_coverage_info_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_coverage_info_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_coverage_info_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_coverage_info_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_order_dispatch_coverage_information, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_coverage_info_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_all_responses_include_coverage_information, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_coverage_info_configuration"
|
|
106
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-29,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-29,"If coverage information is evaluated, a system action **SHALL** be returned for each in-scope request resource unless that request resource already has a coverage-information extension, and the CRD server has no new information to add.",SHALL,CRD Server,true,,,"3.1.3.08, 3.5.3.08, 3.6.3.08","crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_all_responses_include_coverage_information, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_order_dispatch_coverage_information, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_all_responses_include_coverage_information"
|
|
107
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-30,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-30,Such qualifiers around when the coverage assertion is considered valid **SHALL** be included as part of the annotation.,SHALL,CRD Server,false,,,"",""
|
|
108
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-32,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-32,"If multiple extension repetitions of the coverage-information extension are present, all repetitions referencing differing insurance (coverage-information.coverage) **SHALL** have distinct coverage-assertion-ids and satisfied-pa-ids, if present.",SHALL,CRD Server,true,,,"3.2.3.07, 3.3.3.07, 3.4.3.07","crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_coverage_info_system_action_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_coverage_info_system_action_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_coverage_info_system_action_validation"
|
|
109
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-33,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-33,"Where multiple repetitions apply to the same coverage, they **MAY** have the same coverage-assertion-ids and satisfied-pa-ids (if present).",MAY,CRD Server,true,,,"",""
|
|
110
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-35,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-35,"However, CRD servers **SHALL NOT** send a `systemAction` to update the order unless something is new or changed.",SHALL NOT,CRD Server,false,,,"",""
|
|
111
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-36,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-36,CRD servers **SHOULD** take into account the previous decision in deciding how much processing is necessary before returning a response.,SHOULD,CRD Server,false,,,"",""
|
|
112
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-37,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-37,"When returning a `systemAction` to update a resource with the ""Coverage Information"" response type, the resource content **SHALL NOT** make changes to any data elements other than adding or modifying coverage-information extensions.",SHALL NOT,CRD Server,true,,,"3.2.3.07, 3.3.3.07, 3.4.3.07","crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_coverage_info_system_action_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_coverage_info_system_action_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_coverage_info_system_action_validation"
|
|
113
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-38,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-38,"If a *coverage-information* extension indicates the need to collect additional information (via 'doc-needed'), the extension **SHOULD** include a reference to the questionnaire(s) to be completed.",SHOULD,CRD Server,true,,,"",""
|
|
114
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-39,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-39,CRD Servers **SHOULD** access information via the FHIR Rest API as part of CRD and only fall back to data capture via DTR when computable access is not possible.,SHOULD,CRD Server,false,,,"",""
|
|
115
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-42,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-42,The CRD server **SHOULD** either prompt for the additional needed information using DTR or return a coverage-information extension indicating that the patient is not covered with a reason indicating the issue (e.g. the member could not be found/resolved).,SHOULD,CRD Server,false,,,"",""
|
|
116
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-43,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-43,"If the CRD server encounters technical issues that prevent it from determining a coverage, prior auth, or documentation requirement response (e.g. due to internal communication issues, authorization failure, temporary unavailability of the CRD client's FHIR API, etc.), it **SHALL** indicate ""indeterminate"" in the appropriate element with a reason code of [technical](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-coverageAssertionReasons.html#logical-definition-cld) and additional details in the reason.text.",SHALL,CRD Server,true,,,"",""
|
|
117
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-44,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-44,"If the CRD server is unable to resolve the patient for a reason other than technology failure, the Coverage Information **SHALL** indicate ""not-covered"" in 'coverage' with a reason code of [no-member-found](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-coverageAssertionReasons.html#logical-definition-cld).",SHALL,CRD Server,true,,,"",""
|
|
118
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-45,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-45,"If the CRD server is able to resolve the patient but they do not have active coverage or cannot resolve to a single coverage, the Coverage Information **SHALL** indicate ""not-covered"" with a reason of either [coverage-not-found](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-coverageAssertionReasons.html#logical-definition-cld) or [no-active-coverage](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-coverageAssertionReasons.html#logical-definition-cld), as appropriate.",SHALL,CRD Server,true,,,"",""
|
|
119
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-47,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-47,"When using the ""Coverage Information"" response type, the proposed order or appointment being submitted for update SHALL comply with the required profiles",SHALL,CRD Server,false,,,"3.2.3.07, 3.3.3.07, 3.4.3.07","crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_coverage_info_system_action_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_coverage_info_system_action_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_coverage_info_system_action_validation"
|
|
120
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-48,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-48,"CRD clients and servers **SHALL** support the new CDS Hooks system action functionality to cause annotations to automatically be stored on the relevant request, appointment, etc. without any user intervention.",SHALL,"CRD Client,CRD Server",false,,,"3.2.3.07, 3.3.3.07, 3.4.3.07","crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_coverage_info_system_action_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_coverage_info_system_action_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_coverage_info_system_action_validation"
|
|
121
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-51,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-51,"Where CRD servers need data that was not transmitted, they **SHOULD** attempt to infer values from elements that are present.",SHOULD,CRD Server,false,,,"",""
|
|
122
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-52,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-52,Coverage Information responses **SHALL** comply with the logical model profile found [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDHooksResponse-coverageInformation.html).,SHALL,CRD Server,false,,,"3.2.3.07, 3.3.3.07, 3.4.3.07","crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_coverage_info_system_action_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_coverage_info_system_action_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_coverage_info_system_action_validation"
|
|
123
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-53,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-53,"Each suggestion **SHOULD** contain either a single ""update"" action to revise the existing proposed order; or a ""delete"" action for the current proposed order and a ""create"" action for the new proposed order.",SHOULD,CRD Server,false,,,"",""
|
|
124
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-54,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-54,"The choice of ""update"" vs. ""delete + create"" **SHOULD** be based on how significant the change is and how relevant the other decision support on the original request will still be.",SHOULD,CRD Server,false,,,"",""
|
|
125
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-55,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-55,"When using the ""Propose Alternate Request"" response type, the proposed orders (and any associated resources) SHALL comply with the required profiles.",SHALL,CRD Server,false,,,"3.4.3.08, 3.6.3.09","crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_propose_alternate_request_card_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_propose_alternate_request_card_validation"
|
|
126
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-56,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-56,Alternate Request responses **SHALL** comply with the logical model profile found [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDHooksResponse-alternateRequest.html).,SHALL,CRD Server,false,,,"2.3.01, 3.1.3.01, 3.2.3.01, 3.3.3.01, 3.4.3.01, 3.4.3.08, 3.5.3.01, 3.6.3.01, 3.6.3.09","crd_server_v221-crd_v221_server_demonstrate_hook_response-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_propose_alternate_request_card_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_propose_alternate_request_card_validation"
|
|
127
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-57,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-57,"When using the ""Identify Additional Orders"" response type, the proposed orders and any associated resources SHALL comply with the required profiles",SHALL,CRD Server,false,,,"3.4.3.09, 3.6.3.10","crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_additional_orders_card_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_additional_orders_card_validation"
|
|
128
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-58,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-58,Additional Orders responses **SHALL** comply with the logical model profile= found [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDHooksResponse-additionalOrders.html).,SHALL,CRD Server,false,,,"3.4.3.09, 3.6.3.10","crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_additional_orders_card_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_additional_orders_card_validation"
|
|
129
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-59,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-59,The Request Form Completion response type **SHALL NOT** be used in place of DTR,SHALL NOT,CRD Server,false,,,"",""
|
|
130
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-60,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-60,"Instead of using a card for ""Request Form Completion"", CRD servers **MAY** opt to use a [systemAction](http://cds-hooks.hl7.org/2026Jan/index.html#system-action).",MAY,CRD Server,false,,,"",""
|
|
131
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-62,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-62,"When using the ""Request Form Completion"" response type, the resources in the card or system action SHALL comply with the required profiles",SHALL,CRD Server,false,,,"3.1.3.09, 3.2.3.08, 3.3.3.08, 3.4.3.10, 3.5.3.09, 3.6.3.11","crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_request_form_completion_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_request_form_completion_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_request_form_completion_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_request_form_completion_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_request_form_completion_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_request_form_completion_response_validation"
|
|
132
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-63,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-63,CRD servers **SHOULD** use questionnaires that are compliant with either the [Argonaut questionnaire profiles](https://github.com/argonautproject/questionnaire) (for forms to be completed within the CRD client) or the [Structured Data Capture (SDC) profiles](http://hl7.org/fhir/uv/sdc/index.html) (for more sophisticated forms to be created within a SMART on FHIR app or through an external service).,SHOULD,CRD Server,false,,,"",""
|
|
133
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-65,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-65,Form Completion responses **SHALL** comply with the logical model profile found [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDHooksResponse-formCompletion.html).,SHALL,CRD Server,false,,,"3.1.3.09, 3.2.3.08, 3.3.3.08, 3.4.3.10, 3.5.3.09, 3.6.3.11","crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_request_form_completion_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_request_form_completion_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_request_form_completion_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_request_form_completion_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_request_form_completion_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_request_form_completion_response_validation"
|
|
134
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-66,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-66,"Instead of using a card for ""Update Coverage Records"", CRD servers **MAY** opt to use a [systemAction](http://cds-hooks.hl7.org/2026Jan/index.html#system-action) instead.",MAY,CRD Server,false,,,"",""
|
|
135
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-69,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-69,This Update Coverage Records capability **SHALL NOT** be used in situations where regulation dictates the use of the X12 functionality.,SHALL NOT,CRD Server,false,,,"",""
|
|
136
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-70,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-70,"If returning a card rather than a system action, the ""Update Coverage Records"" response type **SHOULD NOT** be returned for hook types that are likely to be triggered by clinical users rather than administrative staff. Cards of this type would be appropriate for hooks such as encounter-start or appointment-book but would not be appropriate for order-select or order-sign.",SHOULD NOT,CRD Server,true,,,"",""
|
|
137
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-71,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-71,Adjust Coverage responses **SHALL** comply with the logical model profile found [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDHooksResponse-adjustCoverage.html).,SHALL,CRD Server,false,,,"3.1.3.10, 3.2.3.09, 3.3.3.09, 3.4.3.11, 3.5.3.10, 3.6.3.12","crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_create_or_update_coverage_info_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_create_or_update_coverage_info_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_create_or_update_coverage_info_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_create_or_update_coverage_info_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_create_or_update_coverage_info_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_create_or_update_coverage_info_response_validation"
|
|
138
|
+
hl7.fhir.us.davinci-crd_2.2.1,resp-72,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-72,Launch SMART responses **SHALL** comply with the logical model profile found [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDHooksResponse-launchSMART.html).,SHALL,CRD Server,false,,,"3.1.3.04, 3.2.3.04, 3.3.3.04, 3.4.3.04, 3.5.3.04, 3.6.3.04","crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_launch_smart_app_card_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_launch_smart_app_card_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_launch_smart_app_card_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_launch_smart_app_card_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_launch_smart_app_card_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_launch_smart_app_card_validation"
|
|
139
|
+
hl7.fhir.us.davinci-crd_2.2.1,sec-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/security.html#ci-c-sec-1,Implementers SHALL adhere to inherited security and privacy rules,SHALL,"CRD Client,CRD Server",false,,,"",""
|
|
140
|
+
hl7.fhir.us.davinci-crd_2.2.1,sec-2,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/security.html#ci-c-sec-2,"As per the CDS Hooks specification, communications between CRD clients and CRD servers **SHALL** use TLS.",SHALL,"CRD Client,CRD Server",false,,,1.01,crd_server_v221-crd_v221_server_discovery_group-crd_v221_server_tls_version_stu2
|
|
141
|
+
hl7.fhir.us.davinci-crd_2.2.1,sec-3,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/security.html#ci-c-sec-3,CRD servers and CRD clients **SHOULD** enforce a minimum version and other TLS configuration requirements based on [HRex rules](http://hl7.org/fhir/us/davinci-hrex/1.2.0/security.html#exchange-security) for PHI exchange.,SHOULD,"CRD Client,CRD Server",false,,,"",""
|
|
142
|
+
hl7.fhir.us.davinci-crd_2.2.1,sec-5,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/security.html#ci-c-sec-5,CRD servers **SHALL** use information received solely for coverage determination and decision support purposes.,SHALL,CRD Server,false,,,"",""
|
|
143
|
+
hl7.fhir.us.davinci-crd_2.2.1,sec-6,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/security.html#ci-c-sec-6,Servers **SHALL NOT** retain data received over the CRD interfaces for any purpose other than audit or providing context for form completion using DTR.,SHALL NOT,CRD Server,false,,,"",""
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require_relative 'fhir_request_handler'
|
|
2
|
+
|
|
3
|
+
module DaVinciCRDTestKit
|
|
4
|
+
module MockEHR
|
|
5
|
+
class FHIRCreateEndpoint < Inferno::DSL::SuiteEndpoint
|
|
6
|
+
include FHIRRequestHandler
|
|
7
|
+
|
|
8
|
+
def make_response
|
|
9
|
+
prepare_response
|
|
10
|
+
return unless mock_ehr_bundle_present?
|
|
11
|
+
return unless resource_type_present?
|
|
12
|
+
return unless provided_resource_valid?
|
|
13
|
+
|
|
14
|
+
assign_id_to_provided_resource
|
|
15
|
+
add_provided_resource_to_mock_ehr_bundle
|
|
16
|
+
|
|
17
|
+
return_provided_resource
|
|
18
|
+
rescue StandardError => e
|
|
19
|
+
return_unhandled_error(e)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
require_relative 'fhir_request_handler'
|
|
2
|
+
|
|
3
|
+
module DaVinciCRDTestKit
|
|
4
|
+
module MockEHR
|
|
5
|
+
class FHIRDeleteEndpoint < Inferno::DSL::SuiteEndpoint
|
|
6
|
+
include FHIRRequestHandler
|
|
7
|
+
|
|
8
|
+
def make_response
|
|
9
|
+
prepare_response
|
|
10
|
+
return unless mock_ehr_bundle_present?
|
|
11
|
+
return unless resource_type_present?
|
|
12
|
+
return unless resource_id_present?
|
|
13
|
+
|
|
14
|
+
remove_target_resource_from_bundle
|
|
15
|
+
|
|
16
|
+
response.status = 204 # NO CONTENT
|
|
17
|
+
rescue StandardError => e
|
|
18
|
+
return_unhandled_error(e)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
# Hanami::Action strips non-entity headers from 204 responses by default.
|
|
24
|
+
# Allow CORS header so cross-origin clients can process the empty response.
|
|
25
|
+
def keep_response_header?(header)
|
|
26
|
+
super || header == 'Access-Control-Allow-Origin'
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
require 'yaml'
|
|
2
|
+
require 'us_core_test_kit'
|
|
3
|
+
require_relative '../../../version'
|
|
4
|
+
|
|
5
|
+
module DaVinciCRDTestKit
|
|
6
|
+
module MockEHR
|
|
7
|
+
class FHIRMetadataEndpoint
|
|
8
|
+
MOCK_EHR_INTERACTIONS = %w[read search-type create update delete].freeze
|
|
9
|
+
|
|
10
|
+
US_CORE_METADATA_DIR = File.join(
|
|
11
|
+
Gem::Specification.find_by_name('us_core_test_kit').gem_dir,
|
|
12
|
+
'lib', 'us_core_test_kit', 'generated', 'v6.1.0'
|
|
13
|
+
).freeze
|
|
14
|
+
|
|
15
|
+
SEARCH_PARAM_TYPES = {
|
|
16
|
+
'string' => 'string', 'HumanName' => 'string', 'Address' => 'string',
|
|
17
|
+
'http://hl7.org/fhirpath/System.String' => 'string',
|
|
18
|
+
'code' => 'token', 'CodeableConcept' => 'token', 'Coding' => 'token',
|
|
19
|
+
'Identifier' => 'token', 'patternCodeableConcept' => 'token',
|
|
20
|
+
'patternCoding' => 'token', 'patternIdentifier' => 'token', 'requiredBinding' => 'token',
|
|
21
|
+
'date' => 'date', 'dateTime' => 'date', 'instant' => 'date', 'Period' => 'date',
|
|
22
|
+
'Reference' => 'reference',
|
|
23
|
+
'uri' => 'uri', 'canonical' => 'uri',
|
|
24
|
+
'number' => 'number', 'integer' => 'number', 'decimal' => 'number',
|
|
25
|
+
'quantity' => 'quantity'
|
|
26
|
+
}.freeze
|
|
27
|
+
|
|
28
|
+
def self.call(...)
|
|
29
|
+
new.call(...)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def call(env)
|
|
33
|
+
request = Rack::Request.new(env)
|
|
34
|
+
[200, { 'Content-Type' => 'application/fhir+json' }, [capability_statement_json(request)]]
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def capability_statement_json(request)
|
|
38
|
+
fhir_base_url = request.url.delete_suffix('/metadata')
|
|
39
|
+
suite_id = request.path.split('/')[2]
|
|
40
|
+
suite_title = Inferno::Repositories::TestSuites.new.find(suite_id)&.title
|
|
41
|
+
fhir_server_name = 'Inferno US Core FHIR Server Simulation'
|
|
42
|
+
|
|
43
|
+
FHIR::CapabilityStatement.new(
|
|
44
|
+
status: 'active',
|
|
45
|
+
kind: 'instance',
|
|
46
|
+
date: LAST_UPDATED,
|
|
47
|
+
software: FHIR::CapabilityStatement::Software.new(
|
|
48
|
+
name: fhir_server_name
|
|
49
|
+
),
|
|
50
|
+
implementation: FHIR::CapabilityStatement::Implementation.new(
|
|
51
|
+
description: "#{suite_title} #{fhir_server_name} hosted at #{fhir_base_url}",
|
|
52
|
+
url: fhir_base_url
|
|
53
|
+
),
|
|
54
|
+
fhirVersion: '4.0.1',
|
|
55
|
+
format: ['application/fhir+json'],
|
|
56
|
+
instantiates: ['http://hl7.org/fhir/us/core/CapabilityStatement/us-core-server'],
|
|
57
|
+
rest: [FHIR::CapabilityStatement::Rest.new(mode: 'server', resource: self.class.resource_entries)]
|
|
58
|
+
).to_json
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def self.metadata_dir
|
|
62
|
+
US_CORE_METADATA_DIR
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def self.metadata_files
|
|
66
|
+
Dir.glob(File.join(metadata_dir, '*', 'metadata.yml'))
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def self.resource_entries
|
|
70
|
+
@resource_entries ||= build_resource_entries
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def self.search_param_type(type)
|
|
74
|
+
SEARCH_PARAM_TYPES.fetch(type, 'string')
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def self.collect_search_params(metadata_list)
|
|
78
|
+
metadata_list.each_with_object({}) do |metadata, params|
|
|
79
|
+
metadata.search_definitions&.each do |name, definition|
|
|
80
|
+
params[name.to_s] ||= definition[:type]
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def self.build_resource_entry(resource_type, metadata_list)
|
|
86
|
+
search_params = collect_search_params(metadata_list)
|
|
87
|
+
profile_urls = metadata_list.map(&:profile_url).compact
|
|
88
|
+
FHIR::CapabilityStatement::Rest::Resource.new(
|
|
89
|
+
type: resource_type,
|
|
90
|
+
supportedProfile: profile_urls,
|
|
91
|
+
interaction: MOCK_EHR_INTERACTIONS.map do |code|
|
|
92
|
+
FHIR::CapabilityStatement::Rest::Resource::Interaction.new(code:)
|
|
93
|
+
end,
|
|
94
|
+
searchParam: search_params.map do |name, type|
|
|
95
|
+
FHIR::CapabilityStatement::Rest::Resource::SearchParam.new(
|
|
96
|
+
name:,
|
|
97
|
+
type: search_param_type(type)
|
|
98
|
+
)
|
|
99
|
+
end
|
|
100
|
+
)
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def self.build_resource_entries
|
|
104
|
+
by_type = metadata_files.each_with_object(Hash.new { |h, k| h[k] = [] }) do |path, types|
|
|
105
|
+
metadata = USCoreTestKit::Generator::GroupMetadata.new(YAML.load_file(path, aliases: true))
|
|
106
|
+
types[metadata.resource] << metadata
|
|
107
|
+
end
|
|
108
|
+
by_type.map { |resource_type, metadata_list| build_resource_entry(resource_type, metadata_list) }
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require_relative 'fhir_request_handler'
|
|
2
|
+
|
|
3
|
+
module DaVinciCRDTestKit
|
|
4
|
+
module MockEHR
|
|
5
|
+
class FHIRReadEndpoint < Inferno::DSL::SuiteEndpoint
|
|
6
|
+
include FHIRRequestHandler
|
|
7
|
+
|
|
8
|
+
def make_response
|
|
9
|
+
prepare_response
|
|
10
|
+
return unless mock_ehr_bundle_present?
|
|
11
|
+
return unless resource_type_present?
|
|
12
|
+
return unless resource_id_present?
|
|
13
|
+
return unless target_resource_present?
|
|
14
|
+
|
|
15
|
+
return_target_resource
|
|
16
|
+
rescue StandardError => e
|
|
17
|
+
return_unhandled_error(e)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|