davinci_plan_net_test_kit 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE +201 -0
- data/lib/davinci_plan_net_test_kit/custom_groups/capability_statement/conformance_support_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/custom_groups/capability_statement/fhir_version_test.rb +15 -0
- data/lib/davinci_plan_net_test_kit/custom_groups/capability_statement/instantiate_test.rb +19 -0
- data/lib/davinci_plan_net_test_kit/custom_groups/capability_statement/json_support_test.rb +39 -0
- data/lib/davinci_plan_net_test_kit/custom_groups/capability_statement/profile_support_test.rb +38 -0
- data/lib/davinci_plan_net_test_kit/custom_groups/combination_searches/examples.json +40 -0
- data/lib/davinci_plan_net_test_kit/custom_groups/data_absent_reason_group.rb +59 -0
- data/lib/davinci_plan_net_test_kit/custom_groups/reverse_chain_tests/examples.json +60 -0
- data/lib/davinci_plan_net_test_kit/custom_groups/v1.1.0/capability_statement_group.rb +75 -0
- data/lib/davinci_plan_net_test_kit/date_search_validation.rb +108 -0
- data/lib/davinci_plan_net_test_kit/fhir_resource_navigation.rb +75 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/davinci_plan_net_test_suite.rb +231 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/endpoint/endpoint_forward_chain_organization_address_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/endpoint/endpoint_forward_chain_organization_name_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/endpoint/endpoint_forward_chain_organization_partof_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/endpoint/endpoint_forward_chain_organization_type_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/endpoint/endpoint_id_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/endpoint/endpoint_include_endpoint_organization_search_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/endpoint/endpoint_lastupdated_search_test.rb +43 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/endpoint/endpoint_must_support_test.rb +47 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/endpoint/endpoint_no_params_search_test.rb +49 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/endpoint/endpoint_organization_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/endpoint/endpoint_read_test.rb +26 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/endpoint/endpoint_reference_resolution_test.rb +42 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/endpoint/endpoint_validation_test.rb +40 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/endpoint/metadata.yml +171 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/endpoint_group.rb +168 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_combination_list_specialty_covered_by_network_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_coverage_area_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_endpoint_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_forward_chain_endpoint_organization_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_forward_chain_location_address_city_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_forward_chain_location_address_postalcode_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_forward_chain_location_address_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_forward_chain_location_address_state_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_forward_chain_location_organization_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_forward_chain_location_type_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_forward_chain_organization_address_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_forward_chain_organization_name_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_forward_chain_organization_partof_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_forward_chain_organization_type_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_id_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_include_healthcare_service_coverage_area_search_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_include_healthcare_service_endpoint_search_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_include_healthcare_service_location_search_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_include_healthcare_service_organization_search_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_lastupdated_search_test.rb +43 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_location_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_must_support_test.rb +65 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_name_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_no_params_search_test.rb +49 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_organization_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_read_test.rb +26 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_reference_resolution_test.rb +45 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_revinclude_organization_affiliation_service_search_test.rb +60 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_revinclude_practitioner_role_service_search_test.rb +60 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_service_category_search_test.rb +42 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_service_type_search_test.rb +42 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_specialty_search_test.rb +42 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/healthcare_service_validation_test.rb +40 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service/metadata.yml +1377 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/healthcare_service_group.rb +240 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/insurance_plan/insurance_plan_administered_by_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/insurance_plan/insurance_plan_coverage_area_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/insurance_plan/insurance_plan_forward_chain_administered_by_name_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/insurance_plan/insurance_plan_forward_chain_administered_by_partof_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/insurance_plan/insurance_plan_forward_chain_owned_by_name_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/insurance_plan/insurance_plan_forward_chain_owned_by_partof_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/insurance_plan/insurance_plan_id_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/insurance_plan/insurance_plan_identifier_search_test.rb +44 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/insurance_plan/insurance_plan_include_insurance_plan_administered_by_search_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/insurance_plan/insurance_plan_include_insurance_plan_coverage_area_search_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/insurance_plan/insurance_plan_include_insurance_plan_owned_by_search_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/insurance_plan/insurance_plan_lastupdated_search_test.rb +43 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/insurance_plan/insurance_plan_must_support_test.rb +57 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/insurance_plan/insurance_plan_name_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/insurance_plan/insurance_plan_no_params_search_test.rb +49 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/insurance_plan/insurance_plan_owned_by_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/insurance_plan/insurance_plan_plan_type_search_test.rb +42 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/insurance_plan/insurance_plan_read_test.rb +26 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/insurance_plan/insurance_plan_reference_resolution_test.rb +48 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/insurance_plan/insurance_plan_type_search_test.rb +42 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/insurance_plan/insurance_plan_validation_test.rb +40 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/insurance_plan/metadata.yml +368 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/insurance_plan_group.rb +193 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_address_city_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_address_postalcode_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_address_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_address_state_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_endpoint_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_forward_chain_endpoint_organization_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_forward_chain_organization_address_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_forward_chain_organization_name_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_forward_chain_organization_partof_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_forward_chain_organization_type_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_forward_chain_partof_address_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_forward_chain_partof_organization_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_forward_chain_partof_type_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_id_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_include_location_endpoint_search_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_include_location_organization_search_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_include_location_partof_search_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_lastupdated_search_test.rb +43 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_must_support_test.rb +66 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_no_params_search_test.rb +49 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_organization_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_partof_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_read_test.rb +26 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_reference_resolution_test.rb +44 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_reverse_chain_insurance_plan_coverage_area_owned_by_search_test.rb +62 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_revinclude_healthcare_service_location_search_test.rb +60 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_revinclude_insurance_plan_coverage_area_search_test.rb +60 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_revinclude_organization_affiliation_location_search_test.rb +60 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_revinclude_practitioner_role_location_search_test.rb +60 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_type_search_test.rb +42 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/location_validation_test.rb +40 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location/metadata.yml +395 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/location_group.rb +262 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/metadata.yml +5214 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/network/metadata.yml +304 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/network/network_address_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/network/network_coverage_area_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/network/network_endpoint_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/network/network_forward_chain_endpoint_organization_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/network/network_forward_chain_partof_address_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/network/network_forward_chain_partof_name_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/network/network_forward_chain_partof_type_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/network/network_id_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/network/network_include_organization_coverage_area_search_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/network/network_include_organization_endpoint_search_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/network/network_include_organization_partof_search_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/network/network_lastupdated_search_test.rb +43 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/network/network_must_support_test.rb +58 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/network/network_name_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/network/network_no_params_search_test.rb +49 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/network/network_partof_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/network/network_read_test.rb +26 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/network/network_reference_resolution_test.rb +43 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/network/network_reverse_chain_practitioner_role_network_location_search_test.rb +62 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/network/network_revinclude_practitioner_role_network_search_test.rb +60 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/network/network_type_search_test.rb +42 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/network/network_validation_test.rb +40 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/network_group.rb +238 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/metadata.yml +1296 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_endpoint_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_forward_chain_endpoint_organization_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_forward_chain_location_address_city_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_forward_chain_location_address_postalcode_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_forward_chain_location_address_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_forward_chain_location_address_state_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_forward_chain_location_organization_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_forward_chain_location_type_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_forward_chain_network_name_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_forward_chain_network_partof_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_forward_chain_participating_organization_address_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_forward_chain_participating_organization_name_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_forward_chain_participating_organization_partof_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_forward_chain_participating_organization_type_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_forward_chain_primary_organization_address_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_forward_chain_primary_organization_name_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_forward_chain_primary_organization_partof_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_forward_chain_primary_organization_type_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_forward_chain_service_location_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_forward_chain_service_organization_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_forward_chain_service_service_category_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_id_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_include_organization_affiliation_endpoint_search_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_include_organization_affiliation_location_search_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_include_organization_affiliation_network_search_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_include_organization_affiliation_participating_organization_search_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_include_organization_affiliation_primary_organization_search_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_include_organization_affiliation_service_search_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_lastupdated_search_test.rb +43 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_location_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_must_support_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_network_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_no_params_search_test.rb +49 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_participating_organization_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_primary_organization_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_read_test.rb +26 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_reference_resolution_test.rb +47 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_role_search_test.rb +42 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_service_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_specialty_search_test.rb +42 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil/org_affil_validation_test.rb +40 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/org_affil_group.rb +241 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/metadata.yml +384 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_address_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_coverage_area_search_test.rb +43 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_endpoint_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_forward_chain_endpoint_organization_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_forward_chain_partof_address_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_forward_chain_partof_name_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_forward_chain_partof_type_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_id_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_include_organization_coverage_area_search_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_include_organization_endpoint_search_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_include_organization_partof_search_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_lastupdated_search_test.rb +43 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_must_support_test.rb +68 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_name_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_no_params_search_test.rb +49 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_partof_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_read_test.rb +26 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_reference_resolution_test.rb +43 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_reverse_chain_insurance_plan_owned_by_coverage_area_search_test.rb +62 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_reverse_chain_org_affil_participating_organization_location_search_test.rb +62 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_reverse_chain_org_affil_participating_organization_network_search_test.rb +62 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_reverse_chain_org_affil_participating_organization_specialty_search_test.rb +62 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_revinclude_endpoint_organization_search_test.rb +60 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_revinclude_healthcare_service_organization_search_test.rb +60 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_revinclude_insurance_plan_administered_by_search_test.rb +60 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_revinclude_insurance_plan_owned_by_search_test.rb +60 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_revinclude_organization_affiliation_participating_organization_search_test.rb +60 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_revinclude_organization_affiliation_primary_organization_search_test.rb +60 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_revinclude_practitioner_role_organization_search_test.rb +60 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_type_search_test.rb +42 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization/organization_validation_test.rb +40 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/organization_group.rb +265 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner/metadata.yml +253 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner/practitioner_family_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner/practitioner_given_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner/practitioner_id_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner/practitioner_lastupdated_search_test.rb +43 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner/practitioner_must_support_test.rb +57 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner/practitioner_name_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner/practitioner_no_params_search_test.rb +49 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner/practitioner_read_test.rb +26 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner/practitioner_reference_resolution_test.rb +42 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner/practitioner_reverse_chain_practitioner_role_practitioner_location_search_test.rb +62 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner/practitioner_reverse_chain_practitioner_role_practitioner_network_search_test.rb +62 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner/practitioner_reverse_chain_practitioner_role_practitioner_role_search_test.rb +62 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner/practitioner_reverse_chain_practitioner_role_practitioner_specialty_search_test.rb +62 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner/practitioner_revinclude_practitioner_role_practitioner_search_test.rb +60 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner/practitioner_validation_test.rb +40 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_group.rb +188 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/metadata.yml +1198 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_combination_list_practitioners_with_specialty_and_location_search_test.rb +50 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_endpoint_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_forward_chain_endpoint_organization_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_forward_chain_location_address_city_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_forward_chain_location_address_postalcode_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_forward_chain_location_address_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_forward_chain_location_address_state_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_forward_chain_location_organization_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_forward_chain_location_type_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_forward_chain_network_address_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_forward_chain_network_name_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_forward_chain_network_partof_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_forward_chain_network_type_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_forward_chain_organization_address_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_forward_chain_organization_name_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_forward_chain_organization_partof_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_forward_chain_organization_type_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_forward_chain_practitioner_name_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_forward_chain_service_location_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_forward_chain_service_organization_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_forward_chain_service_service_category_search_test.rb +55 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_id_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_include_practitioner_role_endpoint_search_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_include_practitioner_role_location_search_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_include_practitioner_role_network_search_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_include_practitioner_role_organization_search_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_include_practitioner_role_practitioner_search_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_include_practitioner_role_service_search_test.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_lastupdated_search_test.rb +43 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_location_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_must_support_test.rb +70 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_network_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_no_params_search_test.rb +49 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_organization_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_practitioner_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_read_test.rb +26 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_reference_resolution_test.rb +46 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_role_search_test.rb +42 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_service_search_test.rb +41 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_specialty_search_test.rb +42 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role/practitioner_role_validation_test.rb +40 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/practitioner_role_group.rb +241 -0
- data/lib/davinci_plan_net_test_kit/generated/v1.1.0/resource_list.rb +16 -0
- data/lib/davinci_plan_net_test_kit/generator/combination_search_test_generator.rb +215 -0
- data/lib/davinci_plan_net_test_kit/generator/forward_chain_test_generator.rb +198 -0
- data/lib/davinci_plan_net_test_kit/generator/group_generator.rb +377 -0
- data/lib/davinci_plan_net_test_kit/generator/group_metadata.rb +77 -0
- data/lib/davinci_plan_net_test_kit/generator/group_metadata_extractor.rb +268 -0
- data/lib/davinci_plan_net_test_kit/generator/ig_loader.rb +76 -0
- data/lib/davinci_plan_net_test_kit/generator/ig_metadata.rb +52 -0
- data/lib/davinci_plan_net_test_kit/generator/ig_metadata_extractor.rb +57 -0
- data/lib/davinci_plan_net_test_kit/generator/ig_resources.rb +64 -0
- data/lib/davinci_plan_net_test_kit/generator/include_search_test_generator.rb +205 -0
- data/lib/davinci_plan_net_test_kit/generator/must_support_metadata_extractor.rb +337 -0
- data/lib/davinci_plan_net_test_kit/generator/must_support_metadata_extractor_us_core_3.rb +25 -0
- data/lib/davinci_plan_net_test_kit/generator/must_support_test_generator.rb +116 -0
- data/lib/davinci_plan_net_test_kit/generator/naming.rb +34 -0
- data/lib/davinci_plan_net_test_kit/generator/read_test_generator.rb +86 -0
- data/lib/davinci_plan_net_test_kit/generator/reference_resolution_test_generator.rb +92 -0
- data/lib/davinci_plan_net_test_kit/generator/resource_list_generator.rb +42 -0
- data/lib/davinci_plan_net_test_kit/generator/reverse_chain_search_test_generator.rb +194 -0
- data/lib/davinci_plan_net_test_kit/generator/revinclude_search_test_generator.rb +204 -0
- data/lib/davinci_plan_net_test_kit/generator/search_definition_metadata_extractor.rb +193 -0
- data/lib/davinci_plan_net_test_kit/generator/search_metadata_extractor.rb +74 -0
- data/lib/davinci_plan_net_test_kit/generator/search_no_params_test_generator.rb +124 -0
- data/lib/davinci_plan_net_test_kit/generator/search_test_generator.rb +276 -0
- data/lib/davinci_plan_net_test_kit/generator/special_cases.rb +92 -0
- data/lib/davinci_plan_net_test_kit/generator/suite_generator.rb +93 -0
- data/lib/davinci_plan_net_test_kit/generator/terminology_binding_metadata_extractor.rb +120 -0
- data/lib/davinci_plan_net_test_kit/generator/validation_test_generator.rb +140 -0
- data/lib/davinci_plan_net_test_kit/generator/value_extractor.rb +117 -0
- data/lib/davinci_plan_net_test_kit/generator.rb +143 -0
- data/lib/davinci_plan_net_test_kit/igs/package/SearchParameter-Resource-id.json +1 -0
- data/lib/davinci_plan_net_test_kit/igs/package/SearchParameter-Resource-lastUpdated.json +1 -0
- data/lib/davinci_plan_net_test_kit/igs/package.tgz +0 -0
- data/lib/davinci_plan_net_test_kit/must_support_test.rb +211 -0
- data/lib/davinci_plan_net_test_kit/provenance_validator.rb +37 -0
- data/lib/davinci_plan_net_test_kit/read_test.rb +62 -0
- data/lib/davinci_plan_net_test_kit/reference_resolution_test.rb +179 -0
- data/lib/davinci_plan_net_test_kit/request_logger.rb +46 -0
- data/lib/davinci_plan_net_test_kit/search_test.rb +1252 -0
- data/lib/davinci_plan_net_test_kit/search_test_properties.rb +66 -0
- data/lib/davinci_plan_net_test_kit/validation_test.rb +56 -0
- data/lib/davinci_plan_net_test_kit/version.rb +5 -0
- data/lib/davinci_plan_net_test_kit.rb +1 -0
- metadata +452 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DaVinciPlanNetTestKit
|
|
4
|
+
module DateSearchValidation
|
|
5
|
+
def get_fhir_datetime_range(datetime)
|
|
6
|
+
range = { start: DateTime.xmlschema(datetime), end: nil }
|
|
7
|
+
range[:end] =
|
|
8
|
+
if /^\d{4}$/.match?(datetime) # YYYY
|
|
9
|
+
range[:start].next_year - 1.seconds
|
|
10
|
+
elsif /^\d{4}-\d{2}$/.match?(datetime) # YYYY-MM
|
|
11
|
+
range[:start].next_month - 1.seconds
|
|
12
|
+
elsif /^\d{4}-\d{2}-\d{2}$/.match?(datetime) # YYYY-MM-DD
|
|
13
|
+
range[:start].next_day - 1.seconds
|
|
14
|
+
else # YYYY-MM-DDThh:mm:ss+zz:zz
|
|
15
|
+
range[:start]
|
|
16
|
+
end
|
|
17
|
+
range
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def get_fhir_period_range(period)
|
|
21
|
+
range = { start: nil, end: nil }
|
|
22
|
+
range[:start] = DateTime.xmlschema(period.start) unless period.start.nil?
|
|
23
|
+
return range if period.end.nil?
|
|
24
|
+
|
|
25
|
+
period_end_beginning = DateTime.xmlschema(period.end)
|
|
26
|
+
range[:end] =
|
|
27
|
+
if /^\d{4}$/.match?(period.end) # YYYY
|
|
28
|
+
period_end_beginning.next_year - 1.seconds
|
|
29
|
+
elsif /^\d{4}-\d{2}$/.match?(period.end) # YYYY-MM
|
|
30
|
+
period_end_beginning.next_month - 1.seconds
|
|
31
|
+
elsif /^\d{4}-\d{2}-\d{2}$/.match?(period.end) # YYYY-MM-DD
|
|
32
|
+
period_end_beginning.next_day - 1.seconds
|
|
33
|
+
else # YYYY-MM-DDThh:mm:ss+zz:zz
|
|
34
|
+
period_end_beginning
|
|
35
|
+
end
|
|
36
|
+
range
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def fhir_date_comparer(search_range, target_range, comparator, extend_start = false, extend_end = false)
|
|
40
|
+
# Implicitly, a missing lower boundary is "less than" any actual date. A missing upper boundary is "greater than" any actual date.
|
|
41
|
+
case comparator
|
|
42
|
+
when 'eq' # the range of the search value fully contains the range of the target value
|
|
43
|
+
!target_range[:start].nil? && !target_range[:end].nil? && search_range[:start] <= target_range[:start] && search_range[:end] >= target_range[:end]
|
|
44
|
+
when 'ne' # the range of the search value does not fully contain the range of the target value
|
|
45
|
+
target_range[:start].nil? || target_range[:end].nil? || search_range[:start] > target_range[:start] || search_range[:end] < target_range[:end]
|
|
46
|
+
when 'gt' # the range above the search value intersects (i.e. overlaps) with the range of the target value
|
|
47
|
+
target_range[:end].nil? || search_range[:end] < target_range[:end] || (search_range[:end] < (target_range[:end] + 1) && extend_end)
|
|
48
|
+
when 'lt' # the range below the search value intersects (i.e. overlaps) with the range of the target value
|
|
49
|
+
target_range[:start].nil? || search_range[:start] > target_range[:start] || (search_range[:start] > (target_range[:start] - 1) && extend_start)
|
|
50
|
+
when 'ge'
|
|
51
|
+
fhir_date_comparer(search_range, target_range, 'gt', extend_start, extend_end) || fhir_date_comparer(search_range, target_range, 'eq')
|
|
52
|
+
when 'le'
|
|
53
|
+
fhir_date_comparer(search_range, target_range, 'lt', extend_start, extend_end) || fhir_date_comparer(search_range, target_range, 'eq')
|
|
54
|
+
when 'sa' # the range above the search value contains the range of the target value
|
|
55
|
+
!target_range[:start].nil? && search_range[:end] < target_range[:start]
|
|
56
|
+
when 'eb' # the range below the search value contains the range of the target value
|
|
57
|
+
!target_range[:end].nil? && search_range[:start] > target_range[:end]
|
|
58
|
+
when 'ap' # the range of the search value overlaps with the range of the target value
|
|
59
|
+
if target_range[:start].nil? || target_range[:end].nil?
|
|
60
|
+
(target_range[:start].nil? && search_range[:start] < target_range[:end]) ||
|
|
61
|
+
(target_range[:end].nil? && search_range[:end] > target_range[:start])
|
|
62
|
+
else
|
|
63
|
+
(search_range[:start] >= target_range[:start] && search_range[:start] <= target_range[:end]) ||
|
|
64
|
+
(search_range[:end] >= target_range[:start] && search_range[:end] <= target_range[:end])
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def validate_date_search(search_value, target_value)
|
|
70
|
+
if target_value.instance_of? FHIR::Period
|
|
71
|
+
validate_period_search(search_value, target_value)
|
|
72
|
+
else
|
|
73
|
+
validate_datetime_search(search_value, target_value)
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def validate_datetime_search(search_value, target_value)
|
|
78
|
+
comparator = search_value[0..1]
|
|
79
|
+
if ['eq', 'ge', 'gt', 'le', 'lt', 'ne', 'sa', 'eb', 'ap'].include? comparator
|
|
80
|
+
search_value = search_value[2..-1]
|
|
81
|
+
else
|
|
82
|
+
comparator = 'eq'
|
|
83
|
+
end
|
|
84
|
+
search_is_date = is_date?(search_value)
|
|
85
|
+
target_is_date = is_date?(target_value)
|
|
86
|
+
search_range = get_fhir_datetime_range(search_value)
|
|
87
|
+
target_range = get_fhir_datetime_range(target_value)
|
|
88
|
+
fhir_date_comparer(search_range, target_range, comparator, !search_is_date && target_is_date, !search_is_date && target_is_date)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def validate_period_search(search_value, target_value)
|
|
92
|
+
comparator = search_value[0..1]
|
|
93
|
+
if ['eq', 'ge', 'gt', 'le', 'lt', 'ne', 'sa', 'eb', 'ap'].include? comparator
|
|
94
|
+
search_value = search_value[2..-1]
|
|
95
|
+
else
|
|
96
|
+
comparator = 'eq'
|
|
97
|
+
end
|
|
98
|
+
search_is_date = is_date?(search_value)
|
|
99
|
+
search_range = get_fhir_datetime_range(search_value)
|
|
100
|
+
target_range = get_fhir_period_range(target_value)
|
|
101
|
+
fhir_date_comparer(search_range, target_range, comparator, !search_is_date && is_date?(target_value.start), !search_is_date && is_date?(target_value.end))
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def is_date?(value)
|
|
105
|
+
/^\d{4}(-\d{2})?(-\d{2})?$/.match?(value) # YYYY or YYYY-MM or YYYY-MM-DD
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
module DaVinciPlanNetTestKit
|
|
2
|
+
module FHIRResourceNavigation
|
|
3
|
+
DAR_EXTENSION_URL = 'http://hl7.org/fhir/StructureDefinition/data-absent-reason'.freeze
|
|
4
|
+
|
|
5
|
+
def resolve_path(elements, path)
|
|
6
|
+
elements = Array.wrap(elements)
|
|
7
|
+
return elements if path.blank?
|
|
8
|
+
|
|
9
|
+
paths = path.split(/(?<!hl7)\./)
|
|
10
|
+
segment = paths.first
|
|
11
|
+
remaining_path = paths.drop(1).join('.')
|
|
12
|
+
|
|
13
|
+
elements.flat_map do |element|
|
|
14
|
+
child = get_next_value(element, segment)
|
|
15
|
+
resolve_path(child, remaining_path)
|
|
16
|
+
end.compact
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def find_a_value_at(element, path, include_dar: false)
|
|
20
|
+
return nil if element.nil?
|
|
21
|
+
|
|
22
|
+
elements = Array.wrap(element)
|
|
23
|
+
|
|
24
|
+
if path.empty?
|
|
25
|
+
unless include_dar
|
|
26
|
+
elements = elements.reject do |el|
|
|
27
|
+
el.respond_to?(:extension) && el.extension.any? { |ext| ext.url == DAR_EXTENSION_URL}
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
return elements.find { |el| yield(el) } if block_given?
|
|
32
|
+
|
|
33
|
+
return elements.first
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
path_segments = path.split(/(?<!hl7)\./)
|
|
37
|
+
segment = path_segments.shift.delete_suffix('[x]').gsub(/^class$/, 'local_class').to_sym
|
|
38
|
+
|
|
39
|
+
no_elements_present =
|
|
40
|
+
elements.none? do |element|
|
|
41
|
+
child = get_next_value(element, segment)
|
|
42
|
+
child.present? || child == false
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
return nil if no_elements_present
|
|
46
|
+
|
|
47
|
+
remaining_path = path_segments.join('.')
|
|
48
|
+
|
|
49
|
+
elements.each do |element|
|
|
50
|
+
child = get_next_value(element, segment)
|
|
51
|
+
element_found =
|
|
52
|
+
if block_given?
|
|
53
|
+
find_a_value_at(child, remaining_path, include_dar: include_dar) { |value_found| yield(value_found) }
|
|
54
|
+
else
|
|
55
|
+
find_a_value_at(child, remaining_path, include_dar: include_dar)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
return element_found if element_found.present? || element_found == false
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
nil
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def get_next_value(element, property)
|
|
65
|
+
extension_url = property[/(?<=where\(url=').*(?='\))/]
|
|
66
|
+
if extension_url.present?
|
|
67
|
+
element.url == extension_url ? element : nil
|
|
68
|
+
else
|
|
69
|
+
element.send(property)
|
|
70
|
+
end
|
|
71
|
+
rescue NoMethodError
|
|
72
|
+
nil
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
require 'inferno/dsl/oauth_credentials'
|
|
2
|
+
require_relative '../../version'
|
|
3
|
+
require_relative '../../custom_groups/v1.1.0/capability_statement_group'
|
|
4
|
+
require_relative 'endpoint_group'
|
|
5
|
+
require_relative 'insurance_plan_group'
|
|
6
|
+
require_relative 'org_affil_group'
|
|
7
|
+
require_relative 'practitioner_role_group'
|
|
8
|
+
require_relative 'practitioner_group'
|
|
9
|
+
require_relative 'healthcare_service_group'
|
|
10
|
+
require_relative 'location_group'
|
|
11
|
+
require_relative 'network_group'
|
|
12
|
+
require_relative 'organization_group'
|
|
13
|
+
|
|
14
|
+
module DaVinciPlanNetTestKit
|
|
15
|
+
module DaVinciPlanNetServerV110
|
|
16
|
+
class DaVinciPlanNetServerTestSuite < Inferno::TestSuite
|
|
17
|
+
title 'DaVinci Plan Net v1.1.0 Server Test Suite'
|
|
18
|
+
description %(
|
|
19
|
+
The Plan Net Test Kit tests servers for their conformance to the [Plan Net
|
|
20
|
+
Implementation Guide](https://hl7.org/fhir/us/davinci-pdex-plan-net/STU1.1).
|
|
21
|
+
|
|
22
|
+
## Scope
|
|
23
|
+
|
|
24
|
+
These tests are a **DRAFT** intended to allow Plan Net server implementers to perform
|
|
25
|
+
preliminary checks of their servers against Plan Net IG requirements and [provide
|
|
26
|
+
feedback](https://github.com/inferno-framework/davinci-plan-net-test-kit/issues)
|
|
27
|
+
to ONC on the tests. Future versions of these tests may validate other
|
|
28
|
+
requirements and may change the test validation logic.
|
|
29
|
+
|
|
30
|
+
## Test Methodology
|
|
31
|
+
|
|
32
|
+
Inferno will act as a client and make a series of requests to the
|
|
33
|
+
server under test. The responses will be checked for conformance to the Plan
|
|
34
|
+
Net IG requirements individually and used in aggregate to determine whether
|
|
35
|
+
required features and functionality are present.
|
|
36
|
+
|
|
37
|
+
HL7® FHIR® resources are validated with the Java validator using
|
|
38
|
+
`tx.fhir.org` as the terminology server.
|
|
39
|
+
|
|
40
|
+
## Running the Tests
|
|
41
|
+
|
|
42
|
+
### Quick Start
|
|
43
|
+
|
|
44
|
+
The tests are designed to be runnable with a single input from the user:
|
|
45
|
+
the base FHIR URL of the server under test. To run in this mode:
|
|
46
|
+
1. Click the `RUN ALL TESTS` button in the upper right
|
|
47
|
+
2. Provide the URL for the server in the first "FHIR Endpoint (required)" input
|
|
48
|
+
3. Click the `Submit` button in the lower right of the input display
|
|
49
|
+
4. Wait for Inferno to run the tests (will take several minutes)
|
|
50
|
+
5. Expand tests with failures to determine the reason
|
|
51
|
+
|
|
52
|
+
If you would like to try out the tests but don't have a Plan Net server implementation,
|
|
53
|
+
you can use the publicly available reference implementation available at URL
|
|
54
|
+
https://plan-net-ri.davinci.hl7.org/fhir. Select this endpoint by using that URL as the
|
|
55
|
+
"FHIR Endpoint (required)" input or prepopulating it by selecting the
|
|
56
|
+
`Da Vinci Plan Net Reference Server` preset in the upper left.
|
|
57
|
+
|
|
58
|
+
The feedback provided may require
|
|
59
|
+
- Configuration updates (see *Test Configuration Details* below) to better guide Inferno's test execution.
|
|
60
|
+
- Additional data within the system under test, e.g., to demonstrate all Must Support elements.
|
|
61
|
+
- Fixes to the system under test.
|
|
62
|
+
|
|
63
|
+
Note that this mode requires that the server support parameterless searches against
|
|
64
|
+
Plan Net resource types (e.g., `GET [FHIR Endpoint]/InsurancePlan`), which are not required
|
|
65
|
+
by the Plan Net IG. If your server does not support these searches, or some returned instances
|
|
66
|
+
will not conform to Plan Net profiles, see the *Instance Gathering* section under
|
|
67
|
+
*Test Configuration Details* below for how to disable these searches and direct the tests
|
|
68
|
+
toward specific instances of each profile instead.
|
|
69
|
+
|
|
70
|
+
### Running Groups Individually
|
|
71
|
+
|
|
72
|
+
Each test group listed on the left can be run individually using the `RUN TESTS`
|
|
73
|
+
button in the upper right of the group page. However, note that running
|
|
74
|
+
them individually requires additional inputs so that Inferno can find appropriate values for searches
|
|
75
|
+
(see *Determination of Search Values When Running Single Groups* below for details).
|
|
76
|
+
|
|
77
|
+
## Test Configuration Details
|
|
78
|
+
|
|
79
|
+
The details provided here supplement the documentation of individual inputs in the input dialog
|
|
80
|
+
that appears when initiating a test run.
|
|
81
|
+
|
|
82
|
+
### Authentication
|
|
83
|
+
|
|
84
|
+
The Plan Net IG requires that "A conformant Plan-Net service SHALL NOT
|
|
85
|
+
require a directory mobile application to send consumer identifying information
|
|
86
|
+
in order to query content." A simple way to ensure this is to not require authentication,
|
|
87
|
+
which is safe because the information in scope does not include PHI. Thus, the
|
|
88
|
+
tests do not send authentication details by default.
|
|
89
|
+
|
|
90
|
+
If a server under test requires authentication information to be sent, an access token
|
|
91
|
+
may be provided using the "OAuth Credentials - Access Token" input. When populated,
|
|
92
|
+
requests to the server will include an HTTP header of the form `Authorization: Bearer [access token]`.
|
|
93
|
+
|
|
94
|
+
### Instance Gathering
|
|
95
|
+
|
|
96
|
+
Inferno needs to identify instances of each profile to use to validate conformance to
|
|
97
|
+
structural and search API requirements. Inferno will use one or a combination of the
|
|
98
|
+
following two approaches as directed by the inputs.
|
|
99
|
+
|
|
100
|
+
#### Parameterless searches (default)
|
|
101
|
+
|
|
102
|
+
Inferno will use a search against the base resource type without any search
|
|
103
|
+
parameters (`GET [FHIR Endpoint]/[Resource Type]`) to identify instances of each profile.
|
|
104
|
+
This behavior can be controlled using the following inputs:
|
|
105
|
+
- "Use parameterless searches to identify instances?": if the server under test does not support
|
|
106
|
+
parameterless searches, this can be set to `No` to disable parameterless searches.
|
|
107
|
+
- "Maximum number of instances to gather using parameterless searches (required)" and
|
|
108
|
+
"Maximum pages of results to consider when using parameterless searches (required)": if fewer
|
|
109
|
+
instances (e.g., to improve performance) or more instances (e.g., to improve Must Support
|
|
110
|
+
element coverage) should be gathered, these inputs can be adjusted to tune the number
|
|
111
|
+
of instances that Inferno will gather using parameterless searches.
|
|
112
|
+
|
|
113
|
+
#### Specific instance ids
|
|
114
|
+
|
|
115
|
+
Inputs of the form "ids of [profile] instances" can be used by the user to specify particular
|
|
116
|
+
instances for Inferno to gather for use in testing. Inferno will perform a read on each provided id
|
|
117
|
+
to gather the instances. When parameterless searches are not used, all inputs of this form must be populated.
|
|
118
|
+
When instance ids are provided in addition to parameterless searches, instances provided by the user
|
|
119
|
+
are prioritized for use in determining search values for search tests.
|
|
120
|
+
|
|
121
|
+
### Determination of Search Values When Running Single Groups
|
|
122
|
+
|
|
123
|
+
Validation of search parameters requires Inferno to identify values that are expected
|
|
124
|
+
to return instances. By default, Inferno does this by examining gathered instances of each profile
|
|
125
|
+
to identify search values that should return results when performed against the server under
|
|
126
|
+
test. For `_revinclude` and reverse chaining tests, Inferno needs access to instances of other profiles
|
|
127
|
+
in order to determine appropriate search values. When test groups are run individually, Inferno will not
|
|
128
|
+
have access to instances identified while running other groups. Thus, when running at the group level,
|
|
129
|
+
two additional inputs are required to allow the tests to identify appropriate search values:
|
|
130
|
+
- "[target profile] instance ids referenced in [referencing profile].[reference element]":
|
|
131
|
+
used by `_revinclude` tests on [target profile] when run as a group to identify
|
|
132
|
+
instances of the [target profile] that have instances of [referencing profile] that reference it.
|
|
133
|
+
- "'[constraining element]' value from a [referencing profile] instance with '[reference element]' populated": used by reverse chaining tests
|
|
134
|
+
on the [target profile] referenced in the [reference element] element when run as a single group
|
|
135
|
+
to identify the value to use when performing the reverse chain search.
|
|
136
|
+
)
|
|
137
|
+
version VERSION
|
|
138
|
+
|
|
139
|
+
VALIDATION_MESSAGE_FILTERS = [
|
|
140
|
+
%r{Sub-extension url 'introspect' is not defined by the Extension http://fhir-registry\.smarthealthit\.org/StructureDefinition/oauth-uris},
|
|
141
|
+
%r{Sub-extension url 'revoke' is not defined by the Extension http://fhir-registry\.smarthealthit\.org/StructureDefinition/oauth-uris},
|
|
142
|
+
/Observation\.effective\.ofType\(Period\): .*us-core-1:/, # Invalid invariant in US Core v3.1.1
|
|
143
|
+
].freeze
|
|
144
|
+
|
|
145
|
+
VERSION_SPECIFIC_MESSAGE_FILTERS = [].freeze
|
|
146
|
+
|
|
147
|
+
def self.metadata
|
|
148
|
+
@metadata ||= YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)[:groups].map do |raw_metadata|
|
|
149
|
+
Generator::GroupMetadata.new(raw_metadata)
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
validator do
|
|
154
|
+
url ENV.fetch('V110_VALIDATOR_URL', 'http://validator_service:4567')
|
|
155
|
+
message_filters = VALIDATION_MESSAGE_FILTERS + VERSION_SPECIFIC_MESSAGE_FILTERS
|
|
156
|
+
|
|
157
|
+
exclude_message do |message|
|
|
158
|
+
|
|
159
|
+
message_filters.any? { |filter| filter.match? message.message }
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
perform_additional_validation do |resource, profile_url|
|
|
163
|
+
ProvenanceValidator.validate(resource) if resource.instance_of?(FHIR::Provenance)
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
links [
|
|
168
|
+
{
|
|
169
|
+
label: 'Report Issue',
|
|
170
|
+
url: 'https://github.com/inferno-framework/davinci-plan-net-test-kit/issues'
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
label: 'Source Code',
|
|
174
|
+
url: 'https://github.com/inferno-framework/davinci-plan-net-test-kit'
|
|
175
|
+
}
|
|
176
|
+
]
|
|
177
|
+
|
|
178
|
+
id :davinci_plan_net_server_v110
|
|
179
|
+
|
|
180
|
+
input :url,
|
|
181
|
+
title: 'FHIR Endpoint',
|
|
182
|
+
description: 'URL of the FHIR endpoint'
|
|
183
|
+
input :smart_credentials,
|
|
184
|
+
title: 'OAuth Credentials',
|
|
185
|
+
type: :oauth_credentials,
|
|
186
|
+
optional: true
|
|
187
|
+
input :no_param_search,
|
|
188
|
+
title: 'Use parameterless searches to identify instances?',
|
|
189
|
+
type: 'radio',
|
|
190
|
+
options: {
|
|
191
|
+
list_options: [
|
|
192
|
+
{
|
|
193
|
+
label: 'Yes',
|
|
194
|
+
value: 'true'
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
label: 'No',
|
|
198
|
+
value: 'false'
|
|
199
|
+
}
|
|
200
|
+
]
|
|
201
|
+
},
|
|
202
|
+
default: 'true',
|
|
203
|
+
description: 'If `Yes`, Inferno will gather instances of each profile using searches of the form `GET [FHIR Endpoint]/[resource type]`. If searches of this form are not supported or some instances on the server will not be expected to conform to Plan Net profiles, select `No` and enter instance ids of each profile in the "ids of [profile] instances" inputs.'
|
|
204
|
+
input :max_instances,
|
|
205
|
+
title: 'Maximum number of instances to gather using parameterless searches',
|
|
206
|
+
default: '200',
|
|
207
|
+
description: 'Only used with parameterless searches. A higher number will gather more instances for the tests, if they are available. The test will stop looking when the page limit has been reached.'
|
|
208
|
+
input :max_pages,
|
|
209
|
+
title: 'Maximum pages of results to consider when using parameterless searches',
|
|
210
|
+
default: '20',
|
|
211
|
+
description: 'Only used with parameterless searches. A higher number will gather more instances for the tests, if they are available. The test will not consider further pages once the maximum number of instances has been reached.'
|
|
212
|
+
|
|
213
|
+
fhir_client do
|
|
214
|
+
url :url
|
|
215
|
+
oauth_credentials :smart_credentials
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
group from: :davinci_plan_net_v110_capability_statement
|
|
219
|
+
|
|
220
|
+
group from: :davinci_plan_net_v110_endpoint
|
|
221
|
+
group from: :davinci_plan_net_v110_insurance_plan
|
|
222
|
+
group from: :davinci_plan_net_v110_org_affil
|
|
223
|
+
group from: :davinci_plan_net_v110_practitioner_role
|
|
224
|
+
group from: :davinci_plan_net_v110_practitioner
|
|
225
|
+
group from: :davinci_plan_net_v110_healthcare_service
|
|
226
|
+
group from: :davinci_plan_net_v110_location
|
|
227
|
+
group from: :davinci_plan_net_v110_network
|
|
228
|
+
group from: :davinci_plan_net_v110_organization
|
|
229
|
+
end
|
|
230
|
+
end
|
|
231
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
require_relative '../../../search_test'
|
|
2
|
+
require_relative '../../../generator/group_metadata'
|
|
3
|
+
|
|
4
|
+
module DaVinciPlanNetTestKit
|
|
5
|
+
module DaVinciPlanNetV110
|
|
6
|
+
class EndpointForwardChainOrganizationAddressSearchTest < Inferno::Test
|
|
7
|
+
include DaVinciPlanNetTestKit::SearchTest
|
|
8
|
+
|
|
9
|
+
title 'Server capable of forward chaining with organization.address'
|
|
10
|
+
description %(
|
|
11
|
+
A server SHALL be capable of supporting chaining for address through the search parameter organization
|
|
12
|
+
for the Endpoint profile.
|
|
13
|
+
|
|
14
|
+
This test will perform a search with organization.address using a value
|
|
15
|
+
in the address element on an instance found during _include tests executed
|
|
16
|
+
previously during this sequence. To validate the returned instances, the test will perform a search
|
|
17
|
+
on the Organization resource type using the same address search
|
|
18
|
+
parameter and value and check that this search contains any instances referenced through the
|
|
19
|
+
organization element of instances returned by the tested search.
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
id :davinci_plan_net_v110_forward_chain_organization_address_search_test
|
|
23
|
+
|
|
24
|
+
def properties
|
|
25
|
+
@properties ||= SearchTestProperties.new(
|
|
26
|
+
resource_type: 'Endpoint',
|
|
27
|
+
search_param_names: [],
|
|
28
|
+
chain_param: 'address',
|
|
29
|
+
chain_param_base: 'organization',
|
|
30
|
+
additional_resource_type: 'Organization'
|
|
31
|
+
)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def self.metadata
|
|
35
|
+
@metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml')))
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def self.additional_metadata
|
|
39
|
+
@additional_metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, '..', 'organization', 'metadata.yml'), aliases: true))
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def scratch_resources
|
|
43
|
+
scratch[:endpoint_resources] ||= {}
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def scratch_additional_resources
|
|
47
|
+
scratch[:organization_resources] ||= {}
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
run do
|
|
51
|
+
run_forward_chain_search_test
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
require_relative '../../../search_test'
|
|
2
|
+
require_relative '../../../generator/group_metadata'
|
|
3
|
+
|
|
4
|
+
module DaVinciPlanNetTestKit
|
|
5
|
+
module DaVinciPlanNetV110
|
|
6
|
+
class EndpointForwardChainOrganizationNameSearchTest < Inferno::Test
|
|
7
|
+
include DaVinciPlanNetTestKit::SearchTest
|
|
8
|
+
|
|
9
|
+
title 'Server capable of forward chaining with organization.name'
|
|
10
|
+
description %(
|
|
11
|
+
A server SHALL be capable of supporting chaining for name through the search parameter organization
|
|
12
|
+
for the Endpoint profile.
|
|
13
|
+
|
|
14
|
+
This test will perform a search with organization.name using a value
|
|
15
|
+
in the name element on an instance found during _include tests executed
|
|
16
|
+
previously during this sequence. To validate the returned instances, the test will perform a search
|
|
17
|
+
on the Organization resource type using the same name search
|
|
18
|
+
parameter and value and check that this search contains any instances referenced through the
|
|
19
|
+
organization element of instances returned by the tested search.
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
id :davinci_plan_net_v110_forward_chain_organization_name_search_test
|
|
23
|
+
|
|
24
|
+
def properties
|
|
25
|
+
@properties ||= SearchTestProperties.new(
|
|
26
|
+
resource_type: 'Endpoint',
|
|
27
|
+
search_param_names: [],
|
|
28
|
+
chain_param: 'name',
|
|
29
|
+
chain_param_base: 'organization',
|
|
30
|
+
additional_resource_type: 'Organization'
|
|
31
|
+
)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def self.metadata
|
|
35
|
+
@metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml')))
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def self.additional_metadata
|
|
39
|
+
@additional_metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, '..', 'organization', 'metadata.yml'), aliases: true))
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def scratch_resources
|
|
43
|
+
scratch[:endpoint_resources] ||= {}
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def scratch_additional_resources
|
|
47
|
+
scratch[:organization_resources] ||= {}
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
run do
|
|
51
|
+
run_forward_chain_search_test
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
require_relative '../../../search_test'
|
|
2
|
+
require_relative '../../../generator/group_metadata'
|
|
3
|
+
|
|
4
|
+
module DaVinciPlanNetTestKit
|
|
5
|
+
module DaVinciPlanNetV110
|
|
6
|
+
class EndpointForwardChainOrganizationPartofSearchTest < Inferno::Test
|
|
7
|
+
include DaVinciPlanNetTestKit::SearchTest
|
|
8
|
+
|
|
9
|
+
title 'Server capable of forward chaining with organization.partof'
|
|
10
|
+
description %(
|
|
11
|
+
A server SHALL be capable of supporting chaining for partof through the search parameter organization
|
|
12
|
+
for the Endpoint profile.
|
|
13
|
+
|
|
14
|
+
This test will perform a search with organization.partof using a value
|
|
15
|
+
in the partof element on an instance found during _include tests executed
|
|
16
|
+
previously during this sequence. To validate the returned instances, the test will perform a search
|
|
17
|
+
on the Organization resource type using the same partof search
|
|
18
|
+
parameter and value and check that this search contains any instances referenced through the
|
|
19
|
+
organization element of instances returned by the tested search.
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
id :davinci_plan_net_v110_forward_chain_organization_partof_search_test
|
|
23
|
+
|
|
24
|
+
def properties
|
|
25
|
+
@properties ||= SearchTestProperties.new(
|
|
26
|
+
resource_type: 'Endpoint',
|
|
27
|
+
search_param_names: [],
|
|
28
|
+
chain_param: 'partof',
|
|
29
|
+
chain_param_base: 'organization',
|
|
30
|
+
additional_resource_type: 'Organization'
|
|
31
|
+
)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def self.metadata
|
|
35
|
+
@metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml')))
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def self.additional_metadata
|
|
39
|
+
@additional_metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, '..', 'organization', 'metadata.yml'), aliases: true))
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def scratch_resources
|
|
43
|
+
scratch[:endpoint_resources] ||= {}
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def scratch_additional_resources
|
|
47
|
+
scratch[:organization_resources] ||= {}
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
run do
|
|
51
|
+
run_forward_chain_search_test
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
require_relative '../../../search_test'
|
|
2
|
+
require_relative '../../../generator/group_metadata'
|
|
3
|
+
|
|
4
|
+
module DaVinciPlanNetTestKit
|
|
5
|
+
module DaVinciPlanNetV110
|
|
6
|
+
class EndpointForwardChainOrganizationTypeSearchTest < Inferno::Test
|
|
7
|
+
include DaVinciPlanNetTestKit::SearchTest
|
|
8
|
+
|
|
9
|
+
title 'Server capable of forward chaining with organization.type'
|
|
10
|
+
description %(
|
|
11
|
+
A server SHALL be capable of supporting chaining for type through the search parameter organization
|
|
12
|
+
for the Endpoint profile.
|
|
13
|
+
|
|
14
|
+
This test will perform a search with organization.type using a value
|
|
15
|
+
in the type element on an instance found during _include tests executed
|
|
16
|
+
previously during this sequence. To validate the returned instances, the test will perform a search
|
|
17
|
+
on the Organization resource type using the same type search
|
|
18
|
+
parameter and value and check that this search contains any instances referenced through the
|
|
19
|
+
organization element of instances returned by the tested search.
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
id :davinci_plan_net_v110_forward_chain_organization_type_search_test
|
|
23
|
+
|
|
24
|
+
def properties
|
|
25
|
+
@properties ||= SearchTestProperties.new(
|
|
26
|
+
resource_type: 'Endpoint',
|
|
27
|
+
search_param_names: [],
|
|
28
|
+
chain_param: 'type',
|
|
29
|
+
chain_param_base: 'organization',
|
|
30
|
+
additional_resource_type: 'Organization'
|
|
31
|
+
)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def self.metadata
|
|
35
|
+
@metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml')))
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def self.additional_metadata
|
|
39
|
+
@additional_metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, '..', 'organization', 'metadata.yml'), aliases: true))
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def scratch_resources
|
|
43
|
+
scratch[:endpoint_resources] ||= {}
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def scratch_additional_resources
|
|
47
|
+
scratch[:organization_resources] ||= {}
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
run do
|
|
51
|
+
run_forward_chain_search_test
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
require_relative '../../../search_test'
|
|
2
|
+
require_relative '../../../generator/group_metadata'
|
|
3
|
+
|
|
4
|
+
module DaVinciPlanNetTestKit
|
|
5
|
+
module DaVinciPlanNetV110
|
|
6
|
+
class EndpointIdSearchTest < Inferno::Test
|
|
7
|
+
include DaVinciPlanNetTestKit::SearchTest
|
|
8
|
+
|
|
9
|
+
title 'Server returns valid results for Endpoint search by _id'
|
|
10
|
+
description %(
|
|
11
|
+
A server SHALL support searching by
|
|
12
|
+
_id on the Endpoint resource. This test
|
|
13
|
+
will pass if resources are returned and match the search criteria. If
|
|
14
|
+
none are returned, the test is skipped.
|
|
15
|
+
|
|
16
|
+
[Plan Net Server CapabilityStatement](http://hl7.org/fhir/us/davinci-pdex-plan-net/STU1.1/CapabilityStatement/plan-net)
|
|
17
|
+
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
id :davinci_plan_net_v110_endpoint__id_search_test
|
|
21
|
+
def self.properties
|
|
22
|
+
@properties ||= SearchTestProperties.new(
|
|
23
|
+
resource_type: 'Endpoint',
|
|
24
|
+
search_param_names: ['_id']
|
|
25
|
+
)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.metadata
|
|
29
|
+
@metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true))
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def scratch_resources
|
|
33
|
+
scratch[:endpoint_resources] ||= {}
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
run do
|
|
37
|
+
run_search_test
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|