ipa_test_kit 0.2.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/ipa_test_kit/custom_groups/v1.0.0/capability_statement/conformance_support_test.rb +43 -0
- data/lib/ipa_test_kit/custom_groups/v1.0.0/capability_statement/fhir_version_test.rb +17 -0
- data/lib/ipa_test_kit/custom_groups/v1.0.0/capability_statement/instantiates_ig_test.rb +22 -0
- data/lib/ipa_test_kit/custom_groups/v1.0.0/capability_statement/json_support_test.rb +41 -0
- data/lib/ipa_test_kit/custom_groups/v1.0.0/capability_statement/profile_support_test.rb +65 -0
- data/lib/ipa_test_kit/custom_groups/v1.0.0/capability_statement_group.rb +73 -0
- data/lib/ipa_test_kit/custom_groups/v1.0.0/ipa_smart_launch_group.rb +108 -0
- data/lib/ipa_test_kit/fhir_resource_navigation.rb +12 -3
- data/lib/ipa_test_kit/generated/v1.0.0/allergy_intolerance/allergy_intolerance_must_support_test.rb +46 -0
- data/lib/ipa_test_kit/generated/v1.0.0/allergy_intolerance/allergy_intolerance_patient_clinical_status_search_test.rb +50 -0
- data/lib/ipa_test_kit/generated/v1.0.0/allergy_intolerance/allergy_intolerance_patient_search_test.rb +63 -0
- data/lib/ipa_test_kit/generated/v1.0.0/allergy_intolerance/allergy_intolerance_provenance_revinclude_search_test.rb +51 -0
- data/lib/ipa_test_kit/generated/v1.0.0/allergy_intolerance/allergy_intolerance_read_test.rb +26 -0
- data/lib/ipa_test_kit/generated/v1.0.0/allergy_intolerance/allergy_intolerance_reference_resolution_test.rb +42 -0
- data/lib/ipa_test_kit/generated/v1.0.0/allergy_intolerance/allergy_intolerance_validation_test.rb +40 -0
- data/lib/ipa_test_kit/generated/{allergy_intolerance → v1.0.0/allergy_intolerance}/metadata.yml +88 -58
- data/lib/ipa_test_kit/generated/{allergy_intolerance_group.rb → v1.0.0/allergy_intolerance_group.rb} +31 -24
- data/lib/ipa_test_kit/generated/v1.0.0/condition/condition_must_support_test.rb +47 -0
- data/lib/ipa_test_kit/generated/v1.0.0/condition/condition_patient_category_clinical_status_search_test.rb +50 -0
- data/lib/ipa_test_kit/generated/v1.0.0/condition/condition_patient_category_search_test.rb +50 -0
- data/lib/ipa_test_kit/generated/v1.0.0/condition/condition_patient_clinical_status_search_test.rb +50 -0
- data/lib/ipa_test_kit/generated/v1.0.0/condition/condition_patient_code_search_test.rb +50 -0
- data/lib/ipa_test_kit/generated/v1.0.0/condition/condition_patient_onset_date_search_test.rb +49 -0
- data/lib/ipa_test_kit/generated/v1.0.0/condition/condition_patient_search_test.rb +63 -0
- data/lib/ipa_test_kit/generated/v1.0.0/condition/condition_provenance_revinclude_search_test.rb +51 -0
- data/lib/ipa_test_kit/generated/v1.0.0/condition/condition_read_test.rb +26 -0
- data/lib/ipa_test_kit/generated/v1.0.0/condition/condition_reference_resolution_test.rb +42 -0
- data/lib/ipa_test_kit/generated/v1.0.0/condition/condition_validation_test.rb +40 -0
- data/lib/ipa_test_kit/generated/v1.0.0/condition/metadata.yml +290 -0
- data/lib/ipa_test_kit/generated/{condition_group.rb → v1.0.0/condition_group.rb} +38 -29
- data/lib/ipa_test_kit/generated/v1.0.0/document_reference/document_reference_id_search_test.rb +43 -0
- data/lib/ipa_test_kit/generated/v1.0.0/document_reference/document_reference_must_support_test.rb +56 -0
- data/lib/ipa_test_kit/generated/v1.0.0/document_reference/document_reference_patient_category_date_search_test.rb +48 -0
- data/lib/ipa_test_kit/generated/v1.0.0/document_reference/document_reference_patient_category_search_test.rb +48 -0
- data/lib/ipa_test_kit/generated/v1.0.0/document_reference/document_reference_patient_contenttype_search_test.rb +49 -0
- data/lib/ipa_test_kit/generated/v1.0.0/document_reference/document_reference_patient_search_test.rb +64 -0
- data/lib/ipa_test_kit/generated/v1.0.0/document_reference/document_reference_patient_status_search_test.rb +49 -0
- data/lib/ipa_test_kit/generated/v1.0.0/document_reference/document_reference_patient_type_date_search_test.rb +50 -0
- data/lib/ipa_test_kit/generated/v1.0.0/document_reference/document_reference_patient_type_period_search_test.rb +50 -0
- data/lib/ipa_test_kit/generated/v1.0.0/document_reference/document_reference_patient_type_search_test.rb +48 -0
- data/lib/ipa_test_kit/generated/v1.0.0/document_reference/document_reference_provenance_revinclude_search_test.rb +51 -0
- data/lib/ipa_test_kit/generated/v1.0.0/document_reference/document_reference_read_test.rb +26 -0
- data/lib/ipa_test_kit/generated/v1.0.0/document_reference/document_reference_reference_resolution_test.rb +44 -0
- data/lib/ipa_test_kit/generated/v1.0.0/document_reference/document_reference_validation_test.rb +40 -0
- data/lib/ipa_test_kit/generated/{document_reference → v1.0.0/document_reference}/metadata.yml +197 -188
- data/lib/ipa_test_kit/generated/{document_reference_group.rb → v1.0.0/document_reference_group.rb} +45 -34
- data/lib/ipa_test_kit/generated/v1.0.0/immunization/immunization_must_support_test.rb +47 -0
- data/lib/ipa_test_kit/generated/v1.0.0/immunization/immunization_patient_date_search_test.rb +49 -0
- data/lib/ipa_test_kit/generated/v1.0.0/immunization/immunization_patient_search_test.rb +63 -0
- data/lib/ipa_test_kit/generated/v1.0.0/immunization/immunization_patient_status_search_test.rb +49 -0
- data/lib/ipa_test_kit/generated/v1.0.0/immunization/immunization_provenance_revinclude_search_test.rb +51 -0
- data/lib/ipa_test_kit/generated/v1.0.0/immunization/immunization_read_test.rb +26 -0
- data/lib/ipa_test_kit/generated/v1.0.0/immunization/immunization_reference_resolution_test.rb +42 -0
- data/lib/ipa_test_kit/generated/v1.0.0/immunization/immunization_validation_test.rb +40 -0
- data/lib/ipa_test_kit/generated/v1.0.0/immunization/metadata.yml +245 -0
- data/lib/ipa_test_kit/generated/{immunization_group.rb → v1.0.0/immunization_group.rb} +32 -25
- data/lib/ipa_test_kit/generated/v1.0.0/ipa_test_suite.rb +113 -0
- data/lib/ipa_test_kit/generated/v1.0.0/medication/medication_must_support_test.rb +43 -0
- data/lib/ipa_test_kit/generated/v1.0.0/medication/medication_read_test.rb +26 -0
- data/lib/ipa_test_kit/generated/v1.0.0/medication/medication_validation_test.rb +39 -0
- data/lib/ipa_test_kit/generated/v1.0.0/medication/metadata.yml +52 -0
- data/lib/ipa_test_kit/generated/v1.0.0/medication_group.rb +61 -0
- data/lib/ipa_test_kit/generated/v1.0.0/medication_request/medication_request_category_search_test.rb +51 -0
- data/lib/ipa_test_kit/generated/v1.0.0/medication_request/medication_request_code_search_test.rb +50 -0
- data/lib/ipa_test_kit/generated/v1.0.0/medication_request/medication_request_must_support_test.rb +52 -0
- data/lib/ipa_test_kit/generated/v1.0.0/medication_request/medication_request_patient_intent_authoredon_search_test.rb +54 -0
- data/lib/ipa_test_kit/generated/v1.0.0/medication_request/medication_request_patient_intent_search_test.rb +54 -0
- data/lib/ipa_test_kit/generated/v1.0.0/medication_request/medication_request_patient_intent_status_search_test.rb +54 -0
- data/lib/ipa_test_kit/generated/v1.0.0/medication_request/medication_request_patient_search_test.rb +69 -0
- data/lib/ipa_test_kit/generated/v1.0.0/medication_request/medication_request_provenance_revinclude_search_test.rb +51 -0
- data/lib/ipa_test_kit/generated/v1.0.0/medication_request/medication_request_read_test.rb +26 -0
- data/lib/ipa_test_kit/generated/v1.0.0/medication_request/medication_request_reference_resolution_test.rb +46 -0
- data/lib/ipa_test_kit/generated/v1.0.0/medication_request/medication_request_validation_test.rb +40 -0
- data/lib/ipa_test_kit/generated/v1.0.0/medication_request/medication_validation_test.rb +39 -0
- data/lib/ipa_test_kit/generated/v1.0.0/medication_request/metadata.yml +370 -0
- data/lib/ipa_test_kit/generated/{medication_request_group.rb → v1.0.0/medication_request_group.rb} +39 -31
- data/lib/ipa_test_kit/generated/v1.0.0/medication_statement/medication_statement_must_support_test.rb +51 -0
- data/lib/ipa_test_kit/generated/v1.0.0/medication_statement/medication_statement_patient_search_test.rb +64 -0
- data/lib/ipa_test_kit/generated/v1.0.0/medication_statement/medication_statement_patient_status_search_test.rb +49 -0
- data/lib/ipa_test_kit/generated/v1.0.0/medication_statement/medication_statement_provenance_revinclude_search_test.rb +51 -0
- data/lib/ipa_test_kit/generated/v1.0.0/medication_statement/medication_statement_read_test.rb +26 -0
- data/lib/ipa_test_kit/generated/v1.0.0/medication_statement/medication_statement_reference_resolution_test.rb +45 -0
- data/lib/ipa_test_kit/generated/v1.0.0/medication_statement/medication_statement_validation_test.rb +40 -0
- data/lib/ipa_test_kit/generated/v1.0.0/medication_statement/metadata.yml +222 -0
- data/lib/ipa_test_kit/generated/{medication_statement_group.rb → v1.0.0/medication_statement_group.rb} +31 -31
- data/lib/ipa_test_kit/generated/v1.0.0/metadata.yml +2845 -0
- data/lib/ipa_test_kit/generated/v1.0.0/observation/metadata.yml +341 -0
- data/lib/ipa_test_kit/generated/v1.0.0/observation/observation_must_support_test.rb +49 -0
- data/lib/ipa_test_kit/generated/v1.0.0/observation/observation_patient_category_date_search_test.rb +48 -0
- data/lib/ipa_test_kit/generated/v1.0.0/observation/observation_patient_category_search_test.rb +65 -0
- data/lib/ipa_test_kit/generated/v1.0.0/observation/observation_patient_category_status_search_test.rb +50 -0
- data/lib/ipa_test_kit/generated/v1.0.0/observation/observation_patient_code_date_search_test.rb +50 -0
- data/lib/ipa_test_kit/generated/v1.0.0/observation/observation_patient_code_search_test.rb +48 -0
- data/lib/ipa_test_kit/generated/v1.0.0/observation/observation_provenance_revinclude_search_test.rb +52 -0
- data/lib/ipa_test_kit/generated/v1.0.0/observation/observation_read_test.rb +26 -0
- data/lib/ipa_test_kit/generated/v1.0.0/observation/observation_reference_resolution_test.rb +42 -0
- data/lib/ipa_test_kit/generated/v1.0.0/observation/observation_validation_test.rb +40 -0
- data/lib/ipa_test_kit/generated/{observation_group.rb → v1.0.0/observation_group.rb} +40 -29
- data/lib/ipa_test_kit/generated/v1.0.0/patient/metadata.yml +259 -0
- data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_birthdate_family_search_test.rb +45 -0
- data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_birthdate_name_search_test.rb +45 -0
- data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_birthdate_search_test.rb +45 -0
- data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_family_gender_search_test.rb +45 -0
- data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_family_search_test.rb +45 -0
- data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_gender_name_search_test.rb +45 -0
- data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_gender_search_test.rb +45 -0
- data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_given_search_test.rb +45 -0
- data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_id_search_test.rb +57 -0
- data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_identifier_search_test.rb +44 -0
- data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_must_support_test.rb +49 -0
- data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_name_search_test.rb +45 -0
- data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_provenance_revinclude_search_test.rb +51 -0
- data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_read_test.rb +26 -0
- data/lib/ipa_test_kit/generated/v1.0.0/patient/patient_validation_test.rb +40 -0
- data/lib/ipa_test_kit/generated/{patient_group.rb → v1.0.0/patient_group.rb} +44 -34
- data/lib/ipa_test_kit/generated/v1.0.0/practitioner/metadata.yml +48 -0
- data/lib/ipa_test_kit/generated/v1.0.0/practitioner/practitioner_must_support_test.rb +43 -0
- data/lib/ipa_test_kit/generated/v1.0.0/practitioner/practitioner_provenance_revinclude_search_test.rb +0 -0
- data/lib/ipa_test_kit/generated/v1.0.0/practitioner/practitioner_read_test.rb +26 -0
- data/lib/ipa_test_kit/generated/v1.0.0/practitioner/practitioner_validation_test.rb +40 -0
- data/lib/ipa_test_kit/generated/v1.0.0/practitioner_group.rb +61 -0
- data/lib/ipa_test_kit/generated/v1.0.0/practitioner_role/metadata.yml +68 -0
- data/lib/ipa_test_kit/generated/v1.0.0/practitioner_role/practitioner_role_must_support_test.rb +43 -0
- data/lib/ipa_test_kit/generated/v1.0.0/practitioner_role/practitioner_role_read_test.rb +26 -0
- data/lib/ipa_test_kit/generated/v1.0.0/practitioner_role/practitioner_role_reference_resolution_test.rb +42 -0
- data/lib/ipa_test_kit/generated/v1.0.0/practitioner_role/practitioner_role_validation_test.rb +40 -0
- data/lib/ipa_test_kit/generated/v1.0.0/practitioner_role_group.rb +63 -0
- data/lib/ipa_test_kit/generated/v1.0.0/problem_list_item/metadata.yml +299 -0
- data/lib/ipa_test_kit/generated/v1.0.0/problem_list_item/problem_list_item_must_support_test.rb +48 -0
- data/lib/ipa_test_kit/generated/v1.0.0/problem_list_item/problem_list_item_patient_category_clinical_status_search_test.rb +50 -0
- data/lib/ipa_test_kit/generated/v1.0.0/problem_list_item/problem_list_item_patient_category_search_test.rb +50 -0
- data/lib/ipa_test_kit/generated/v1.0.0/problem_list_item/problem_list_item_patient_clinical_status_search_test.rb +50 -0
- data/lib/ipa_test_kit/generated/v1.0.0/problem_list_item/problem_list_item_patient_code_search_test.rb +50 -0
- data/lib/ipa_test_kit/generated/v1.0.0/problem_list_item/problem_list_item_patient_onset_date_search_test.rb +49 -0
- data/lib/ipa_test_kit/generated/v1.0.0/problem_list_item/problem_list_item_patient_search_test.rb +63 -0
- data/lib/ipa_test_kit/generated/v1.0.0/problem_list_item/problem_list_item_provenance_revinclude_search_test.rb +51 -0
- data/lib/ipa_test_kit/generated/v1.0.0/problem_list_item/problem_list_item_read_test.rb +26 -0
- data/lib/ipa_test_kit/generated/v1.0.0/problem_list_item/problem_list_item_reference_resolution_test.rb +42 -0
- data/lib/ipa_test_kit/generated/v1.0.0/problem_list_item/problem_list_item_validation_test.rb +40 -0
- data/lib/ipa_test_kit/generated/v1.0.0/problem_list_item_group.rb +100 -0
- data/lib/ipa_test_kit/generated/{resource_list.rb → v1.0.0/resource_list.rb} +7 -6
- data/lib/ipa_test_kit/generated/v1.0.0/vitalsigns/metadata.yml +370 -0
- data/lib/ipa_test_kit/generated/v1.0.0/vitalsigns/vitalsigns_must_support_test.rb +57 -0
- data/lib/ipa_test_kit/generated/v1.0.0/vitalsigns/vitalsigns_patient_category_date_search_test.rb +48 -0
- data/lib/ipa_test_kit/generated/v1.0.0/vitalsigns/vitalsigns_patient_category_search_test.rb +65 -0
- data/lib/ipa_test_kit/generated/v1.0.0/vitalsigns/vitalsigns_patient_category_status_search_test.rb +50 -0
- data/lib/ipa_test_kit/generated/v1.0.0/vitalsigns/vitalsigns_patient_code_date_search_test.rb +50 -0
- data/lib/ipa_test_kit/generated/v1.0.0/vitalsigns/vitalsigns_patient_code_search_test.rb +48 -0
- data/lib/ipa_test_kit/generated/v1.0.0/vitalsigns/vitalsigns_provenance_revinclude_search_test.rb +52 -0
- data/lib/ipa_test_kit/generated/v1.0.0/vitalsigns/vitalsigns_read_test.rb +26 -0
- data/lib/ipa_test_kit/generated/v1.0.0/vitalsigns/vitalsigns_reference_resolution_test.rb +42 -0
- data/lib/ipa_test_kit/generated/v1.0.0/vitalsigns/vitalsigns_validation_test.rb +40 -0
- data/lib/ipa_test_kit/generated/v1.0.0/vitalsigns_group.rb +100 -0
- data/lib/ipa_test_kit/generator/group_generator.rb +56 -14
- data/lib/ipa_test_kit/generator/group_metadata.rb +5 -17
- data/lib/ipa_test_kit/generator/group_metadata_extractor.rb +45 -31
- data/lib/ipa_test_kit/generator/ig_loader.rb +15 -2
- data/lib/ipa_test_kit/generator/ig_metadata.rb +2 -2
- data/lib/ipa_test_kit/generator/ig_metadata_extractor.rb +18 -15
- data/lib/ipa_test_kit/generator/ig_resources.rb +3 -2
- data/lib/ipa_test_kit/generator/must_support_metadata_extractor.rb +245 -35
- data/lib/ipa_test_kit/generator/must_support_test_generator.rb +32 -11
- data/lib/ipa_test_kit/generator/naming.rb +31 -17
- data/lib/ipa_test_kit/generator/provenance_revinclude_search_test_generator.rb +14 -12
- data/lib/ipa_test_kit/generator/read_test_generator.rb +12 -7
- data/lib/ipa_test_kit/generator/reference_resolution_test_generator.rb +27 -7
- data/lib/ipa_test_kit/generator/resource_list_generator.rb +8 -12
- data/lib/ipa_test_kit/generator/search_definition_metadata_extractor.rb +36 -74
- data/lib/ipa_test_kit/generator/search_metadata_extractor.rb +4 -3
- data/lib/ipa_test_kit/generator/search_test_generator.rb +33 -38
- data/lib/ipa_test_kit/generator/special_cases.rb +8 -4
- data/lib/ipa_test_kit/generator/suite_generator.rb +41 -8
- data/lib/ipa_test_kit/generator/terminology_binding_metadata_extractor.rb +18 -3
- data/lib/ipa_test_kit/generator/validation_test_generator.rb +29 -17
- data/lib/ipa_test_kit/generator/value_extractor.rb +101 -0
- data/lib/ipa_test_kit/generator.rb +48 -14
- data/lib/ipa_test_kit/igs/ipa_v100/search-parameters.json +65408 -0
- data/lib/ipa_test_kit/igs/ipa_v100/vitalsigns.profile.json +3122 -0
- data/lib/ipa_test_kit/igs/ipa_v100.tgz +0 -0
- data/lib/ipa_test_kit/must_support_test.rb +50 -1
- data/lib/ipa_test_kit/provenance_validator.rb +38 -0
- data/lib/ipa_test_kit/read_test.rb +1 -1
- data/lib/ipa_test_kit/reference_resolution_test.rb +139 -70
- data/lib/ipa_test_kit/search_test.rb +253 -224
- data/lib/ipa_test_kit/search_test_properties.rb +3 -13
- data/lib/ipa_test_kit/validation_test.rb +13 -5
- data/lib/ipa_test_kit/version.rb +1 -1
- data/lib/ipa_test_kit.rb +3 -2
- metadata +173 -236
- data/lib/ipa_test_kit/custom_groups/capability_statement/conformance_support_test.rb +0 -41
- data/lib/ipa_test_kit/custom_groups/capability_statement/fhir_version_test.rb +0 -15
- data/lib/ipa_test_kit/custom_groups/capability_statement/json_support_test.rb +0 -39
- data/lib/ipa_test_kit/custom_groups/capability_statement/profile_support_test.rb +0 -76
- data/lib/ipa_test_kit/custom_groups/capability_statement_group.rb +0 -64
- data/lib/ipa_test_kit/ext/fhir_models.rb +0 -59
- data/lib/ipa_test_kit/generated/allergy_intolerance/allergy_intolerance_must_support_test.rb +0 -40
- data/lib/ipa_test_kit/generated/allergy_intolerance/allergy_intolerance_patient_clinical_status_search_test.rb +0 -46
- data/lib/ipa_test_kit/generated/allergy_intolerance/allergy_intolerance_patient_search_test.rb +0 -60
- data/lib/ipa_test_kit/generated/allergy_intolerance/allergy_intolerance_provenance_revinclude_search_test.rb +0 -49
- data/lib/ipa_test_kit/generated/allergy_intolerance/allergy_intolerance_read_test.rb +0 -24
- data/lib/ipa_test_kit/generated/allergy_intolerance/allergy_intolerance_reference_resolution_test.rb +0 -28
- data/lib/ipa_test_kit/generated/allergy_intolerance/allergy_intolerance_validation_test.rb +0 -34
- data/lib/ipa_test_kit/generated/bmi/bmi_must_support_test.rb +0 -49
- data/lib/ipa_test_kit/generated/bmi/bmi_patient_category_date_search_test.rb +0 -46
- data/lib/ipa_test_kit/generated/bmi/bmi_patient_category_search_test.rb +0 -45
- data/lib/ipa_test_kit/generated/bmi/bmi_patient_category_status_search_test.rb +0 -47
- data/lib/ipa_test_kit/generated/bmi/bmi_patient_code_date_search_test.rb +0 -48
- data/lib/ipa_test_kit/generated/bmi/bmi_patient_code_search_test.rb +0 -62
- data/lib/ipa_test_kit/generated/bmi/bmi_provenance_revinclude_search_test.rb +0 -51
- data/lib/ipa_test_kit/generated/bmi/bmi_read_test.rb +0 -24
- data/lib/ipa_test_kit/generated/bmi/bmi_reference_resolution_test.rb +0 -28
- data/lib/ipa_test_kit/generated/bmi/bmi_validation_test.rb +0 -34
- data/lib/ipa_test_kit/generated/bmi/metadata.yml +0 -322
- data/lib/ipa_test_kit/generated/bmi_group.rb +0 -93
- data/lib/ipa_test_kit/generated/bodyheight/bodyheight_must_support_test.rb +0 -49
- data/lib/ipa_test_kit/generated/bodyheight/bodyheight_patient_category_date_search_test.rb +0 -46
- data/lib/ipa_test_kit/generated/bodyheight/bodyheight_patient_category_search_test.rb +0 -45
- data/lib/ipa_test_kit/generated/bodyheight/bodyheight_patient_category_status_search_test.rb +0 -47
- data/lib/ipa_test_kit/generated/bodyheight/bodyheight_patient_code_date_search_test.rb +0 -48
- data/lib/ipa_test_kit/generated/bodyheight/bodyheight_patient_code_search_test.rb +0 -62
- data/lib/ipa_test_kit/generated/bodyheight/bodyheight_provenance_revinclude_search_test.rb +0 -51
- data/lib/ipa_test_kit/generated/bodyheight/bodyheight_read_test.rb +0 -24
- data/lib/ipa_test_kit/generated/bodyheight/bodyheight_reference_resolution_test.rb +0 -28
- data/lib/ipa_test_kit/generated/bodyheight/bodyheight_validation_test.rb +0 -34
- data/lib/ipa_test_kit/generated/bodyheight/metadata.yml +0 -328
- data/lib/ipa_test_kit/generated/bodyheight_group.rb +0 -93
- data/lib/ipa_test_kit/generated/bodytemp/bodytemp_must_support_test.rb +0 -49
- data/lib/ipa_test_kit/generated/bodytemp/bodytemp_patient_category_date_search_test.rb +0 -46
- data/lib/ipa_test_kit/generated/bodytemp/bodytemp_patient_category_search_test.rb +0 -45
- data/lib/ipa_test_kit/generated/bodytemp/bodytemp_patient_category_status_search_test.rb +0 -47
- data/lib/ipa_test_kit/generated/bodytemp/bodytemp_patient_code_date_search_test.rb +0 -48
- data/lib/ipa_test_kit/generated/bodytemp/bodytemp_patient_code_search_test.rb +0 -62
- data/lib/ipa_test_kit/generated/bodytemp/bodytemp_provenance_revinclude_search_test.rb +0 -51
- data/lib/ipa_test_kit/generated/bodytemp/bodytemp_read_test.rb +0 -24
- data/lib/ipa_test_kit/generated/bodytemp/bodytemp_reference_resolution_test.rb +0 -28
- data/lib/ipa_test_kit/generated/bodytemp/bodytemp_validation_test.rb +0 -34
- data/lib/ipa_test_kit/generated/bodytemp/metadata.yml +0 -328
- data/lib/ipa_test_kit/generated/bodytemp_group.rb +0 -93
- data/lib/ipa_test_kit/generated/bodyweight/bodyweight_must_support_test.rb +0 -49
- data/lib/ipa_test_kit/generated/bodyweight/bodyweight_patient_category_date_search_test.rb +0 -46
- data/lib/ipa_test_kit/generated/bodyweight/bodyweight_patient_category_search_test.rb +0 -45
- data/lib/ipa_test_kit/generated/bodyweight/bodyweight_patient_category_status_search_test.rb +0 -47
- data/lib/ipa_test_kit/generated/bodyweight/bodyweight_patient_code_date_search_test.rb +0 -48
- data/lib/ipa_test_kit/generated/bodyweight/bodyweight_patient_code_search_test.rb +0 -62
- data/lib/ipa_test_kit/generated/bodyweight/bodyweight_provenance_revinclude_search_test.rb +0 -51
- data/lib/ipa_test_kit/generated/bodyweight/bodyweight_read_test.rb +0 -24
- data/lib/ipa_test_kit/generated/bodyweight/bodyweight_reference_resolution_test.rb +0 -28
- data/lib/ipa_test_kit/generated/bodyweight/bodyweight_validation_test.rb +0 -34
- data/lib/ipa_test_kit/generated/bodyweight/metadata.yml +0 -328
- data/lib/ipa_test_kit/generated/bodyweight_group.rb +0 -93
- data/lib/ipa_test_kit/generated/bp/bp_must_support_test.rb +0 -52
- data/lib/ipa_test_kit/generated/bp/bp_patient_category_date_search_test.rb +0 -46
- data/lib/ipa_test_kit/generated/bp/bp_patient_category_search_test.rb +0 -45
- data/lib/ipa_test_kit/generated/bp/bp_patient_category_status_search_test.rb +0 -47
- data/lib/ipa_test_kit/generated/bp/bp_patient_code_date_search_test.rb +0 -48
- data/lib/ipa_test_kit/generated/bp/bp_patient_code_search_test.rb +0 -62
- data/lib/ipa_test_kit/generated/bp/bp_provenance_revinclude_search_test.rb +0 -51
- data/lib/ipa_test_kit/generated/bp/bp_read_test.rb +0 -24
- data/lib/ipa_test_kit/generated/bp/bp_reference_resolution_test.rb +0 -28
- data/lib/ipa_test_kit/generated/bp/bp_validation_test.rb +0 -34
- data/lib/ipa_test_kit/generated/bp/metadata.yml +0 -379
- data/lib/ipa_test_kit/generated/bp_group.rb +0 -93
- data/lib/ipa_test_kit/generated/condition/condition_must_support_test.rb +0 -39
- data/lib/ipa_test_kit/generated/condition/condition_patient_category_search_test.rb +0 -47
- data/lib/ipa_test_kit/generated/condition/condition_patient_clinical_status_search_test.rb +0 -46
- data/lib/ipa_test_kit/generated/condition/condition_patient_code_search_test.rb +0 -47
- data/lib/ipa_test_kit/generated/condition/condition_patient_onset_date_search_test.rb +0 -47
- data/lib/ipa_test_kit/generated/condition/condition_patient_search_test.rb +0 -60
- data/lib/ipa_test_kit/generated/condition/condition_provenance_revinclude_search_test.rb +0 -49
- data/lib/ipa_test_kit/generated/condition/condition_read_test.rb +0 -24
- data/lib/ipa_test_kit/generated/condition/condition_reference_resolution_test.rb +0 -28
- data/lib/ipa_test_kit/generated/condition/condition_validation_test.rb +0 -34
- data/lib/ipa_test_kit/generated/condition/metadata.yml +0 -231
- data/lib/ipa_test_kit/generated/document_reference/document_reference_id_search_test.rb +0 -40
- data/lib/ipa_test_kit/generated/document_reference/document_reference_must_support_test.rb +0 -49
- data/lib/ipa_test_kit/generated/document_reference/document_reference_patient_category_date_search_test.rb +0 -46
- data/lib/ipa_test_kit/generated/document_reference/document_reference_patient_category_search_test.rb +0 -45
- data/lib/ipa_test_kit/generated/document_reference/document_reference_patient_search_test.rb +0 -61
- data/lib/ipa_test_kit/generated/document_reference/document_reference_patient_status_search_test.rb +0 -46
- data/lib/ipa_test_kit/generated/document_reference/document_reference_patient_type_period_search_test.rb +0 -48
- data/lib/ipa_test_kit/generated/document_reference/document_reference_patient_type_search_test.rb +0 -45
- data/lib/ipa_test_kit/generated/document_reference/document_reference_provenance_revinclude_search_test.rb +0 -50
- data/lib/ipa_test_kit/generated/document_reference/document_reference_read_test.rb +0 -24
- data/lib/ipa_test_kit/generated/document_reference/document_reference_reference_resolution_test.rb +0 -28
- data/lib/ipa_test_kit/generated/document_reference/document_reference_validation_test.rb +0 -34
- data/lib/ipa_test_kit/generated/head_circumference/head_circumference_must_support_test.rb +0 -49
- data/lib/ipa_test_kit/generated/head_circumference/head_circumference_patient_category_date_search_test.rb +0 -46
- data/lib/ipa_test_kit/generated/head_circumference/head_circumference_patient_category_search_test.rb +0 -45
- data/lib/ipa_test_kit/generated/head_circumference/head_circumference_patient_category_status_search_test.rb +0 -47
- data/lib/ipa_test_kit/generated/head_circumference/head_circumference_patient_code_date_search_test.rb +0 -48
- data/lib/ipa_test_kit/generated/head_circumference/head_circumference_patient_code_search_test.rb +0 -62
- data/lib/ipa_test_kit/generated/head_circumference/head_circumference_provenance_revinclude_search_test.rb +0 -51
- data/lib/ipa_test_kit/generated/head_circumference/head_circumference_read_test.rb +0 -24
- data/lib/ipa_test_kit/generated/head_circumference/head_circumference_reference_resolution_test.rb +0 -28
- data/lib/ipa_test_kit/generated/head_circumference/head_circumference_validation_test.rb +0 -34
- data/lib/ipa_test_kit/generated/head_circumference/metadata.yml +0 -324
- data/lib/ipa_test_kit/generated/head_circumference_group.rb +0 -93
- data/lib/ipa_test_kit/generated/heartrate/heartrate_must_support_test.rb +0 -49
- data/lib/ipa_test_kit/generated/heartrate/heartrate_patient_category_date_search_test.rb +0 -46
- data/lib/ipa_test_kit/generated/heartrate/heartrate_patient_category_search_test.rb +0 -45
- data/lib/ipa_test_kit/generated/heartrate/heartrate_patient_category_status_search_test.rb +0 -47
- data/lib/ipa_test_kit/generated/heartrate/heartrate_patient_code_date_search_test.rb +0 -48
- data/lib/ipa_test_kit/generated/heartrate/heartrate_patient_code_search_test.rb +0 -62
- data/lib/ipa_test_kit/generated/heartrate/heartrate_provenance_revinclude_search_test.rb +0 -51
- data/lib/ipa_test_kit/generated/heartrate/heartrate_read_test.rb +0 -24
- data/lib/ipa_test_kit/generated/heartrate/heartrate_reference_resolution_test.rb +0 -28
- data/lib/ipa_test_kit/generated/heartrate/heartrate_validation_test.rb +0 -34
- data/lib/ipa_test_kit/generated/heartrate/metadata.yml +0 -325
- data/lib/ipa_test_kit/generated/heartrate_group.rb +0 -93
- data/lib/ipa_test_kit/generated/immunization/immunization_must_support_test.rb +0 -40
- data/lib/ipa_test_kit/generated/immunization/immunization_patient_date_search_test.rb +0 -47
- data/lib/ipa_test_kit/generated/immunization/immunization_patient_search_test.rb +0 -60
- data/lib/ipa_test_kit/generated/immunization/immunization_patient_status_search_test.rb +0 -45
- data/lib/ipa_test_kit/generated/immunization/immunization_provenance_revinclude_search_test.rb +0 -50
- data/lib/ipa_test_kit/generated/immunization/immunization_read_test.rb +0 -24
- data/lib/ipa_test_kit/generated/immunization/immunization_reference_resolution_test.rb +0 -28
- data/lib/ipa_test_kit/generated/immunization/immunization_validation_test.rb +0 -34
- data/lib/ipa_test_kit/generated/immunization/metadata.yml +0 -210
- data/lib/ipa_test_kit/generated/ipa_test_suite.rb +0 -88
- data/lib/ipa_test_kit/generated/medication_request/medication_request_must_support_test.rb +0 -44
- data/lib/ipa_test_kit/generated/medication_request/medication_request_patient_intent_authoredon_search_test.rb +0 -53
- data/lib/ipa_test_kit/generated/medication_request/medication_request_patient_intent_encounter_search_test.rb +0 -52
- data/lib/ipa_test_kit/generated/medication_request/medication_request_patient_intent_search_test.rb +0 -68
- data/lib/ipa_test_kit/generated/medication_request/medication_request_patient_intent_status_search_test.rb +0 -49
- data/lib/ipa_test_kit/generated/medication_request/medication_request_provenance_revinclude_search_test.rb +0 -51
- data/lib/ipa_test_kit/generated/medication_request/medication_request_read_test.rb +0 -24
- data/lib/ipa_test_kit/generated/medication_request/medication_request_reference_resolution_test.rb +0 -28
- data/lib/ipa_test_kit/generated/medication_request/medication_request_validation_test.rb +0 -34
- data/lib/ipa_test_kit/generated/medication_request/medication_validation_test.rb +0 -34
- data/lib/ipa_test_kit/generated/medication_request/metadata.yml +0 -307
- data/lib/ipa_test_kit/generated/medication_statement/medication_statement_must_support_test.rb +0 -43
- data/lib/ipa_test_kit/generated/medication_statement/medication_statement_patient_context_search_test.rb +0 -51
- data/lib/ipa_test_kit/generated/medication_statement/medication_statement_patient_effective_search_test.rb +0 -52
- data/lib/ipa_test_kit/generated/medication_statement/medication_statement_patient_search_test.rb +0 -68
- data/lib/ipa_test_kit/generated/medication_statement/medication_statement_patient_status_search_test.rb +0 -49
- data/lib/ipa_test_kit/generated/medication_statement/medication_statement_provenance_revinclude_search_test.rb +0 -51
- data/lib/ipa_test_kit/generated/medication_statement/medication_statement_read_test.rb +0 -24
- data/lib/ipa_test_kit/generated/medication_statement/medication_statement_reference_resolution_test.rb +0 -28
- data/lib/ipa_test_kit/generated/medication_statement/medication_statement_validation_test.rb +0 -34
- data/lib/ipa_test_kit/generated/medication_statement/medication_validation_test.rb +0 -34
- data/lib/ipa_test_kit/generated/medication_statement/metadata.yml +0 -230
- data/lib/ipa_test_kit/generated/metadata.yml +0 -6230
- data/lib/ipa_test_kit/generated/observation/metadata.yml +0 -1280
- data/lib/ipa_test_kit/generated/observation/observation_must_support_test.rb +0 -41
- data/lib/ipa_test_kit/generated/observation/observation_patient_category_date_search_test.rb +0 -46
- data/lib/ipa_test_kit/generated/observation/observation_patient_category_search_test.rb +0 -62
- data/lib/ipa_test_kit/generated/observation/observation_patient_category_status_search_test.rb +0 -47
- data/lib/ipa_test_kit/generated/observation/observation_patient_code_date_search_test.rb +0 -48
- data/lib/ipa_test_kit/generated/observation/observation_patient_code_search_test.rb +0 -45
- data/lib/ipa_test_kit/generated/observation/observation_provenance_revinclude_search_test.rb +0 -51
- data/lib/ipa_test_kit/generated/observation/observation_read_test.rb +0 -24
- data/lib/ipa_test_kit/generated/observation/observation_reference_resolution_test.rb +0 -28
- data/lib/ipa_test_kit/generated/observation/observation_validation_test.rb +0 -34
- data/lib/ipa_test_kit/generated/oxygensat/metadata.yml +0 -366
- data/lib/ipa_test_kit/generated/oxygensat/oxygensat_must_support_test.rb +0 -65
- data/lib/ipa_test_kit/generated/oxygensat/oxygensat_patient_category_date_search_test.rb +0 -46
- data/lib/ipa_test_kit/generated/oxygensat/oxygensat_patient_category_search_test.rb +0 -45
- data/lib/ipa_test_kit/generated/oxygensat/oxygensat_patient_category_status_search_test.rb +0 -47
- data/lib/ipa_test_kit/generated/oxygensat/oxygensat_patient_code_date_search_test.rb +0 -48
- data/lib/ipa_test_kit/generated/oxygensat/oxygensat_patient_code_search_test.rb +0 -62
- data/lib/ipa_test_kit/generated/oxygensat/oxygensat_provenance_revinclude_search_test.rb +0 -51
- data/lib/ipa_test_kit/generated/oxygensat/oxygensat_read_test.rb +0 -24
- data/lib/ipa_test_kit/generated/oxygensat/oxygensat_reference_resolution_test.rb +0 -28
- data/lib/ipa_test_kit/generated/oxygensat/oxygensat_validation_test.rb +0 -34
- data/lib/ipa_test_kit/generated/oxygensat_group.rb +0 -93
- data/lib/ipa_test_kit/generated/patient/metadata.yml +0 -320
- data/lib/ipa_test_kit/generated/patient/patient_birthdate_family_search_test.rb +0 -41
- data/lib/ipa_test_kit/generated/patient/patient_birthdate_name_search_test.rb +0 -39
- data/lib/ipa_test_kit/generated/patient/patient_family_gender_search_test.rb +0 -41
- data/lib/ipa_test_kit/generated/patient/patient_gender_name_search_test.rb +0 -39
- data/lib/ipa_test_kit/generated/patient/patient_id_search_test.rb +0 -53
- data/lib/ipa_test_kit/generated/patient/patient_identifier_search_test.rb +0 -40
- data/lib/ipa_test_kit/generated/patient/patient_must_support_test.rb +0 -57
- data/lib/ipa_test_kit/generated/patient/patient_name_search_test.rb +0 -39
- data/lib/ipa_test_kit/generated/patient/patient_provenance_revinclude_search_test.rb +0 -49
- data/lib/ipa_test_kit/generated/patient/patient_read_test.rb +0 -24
- data/lib/ipa_test_kit/generated/patient/patient_reference_resolution_test.rb +0 -28
- data/lib/ipa_test_kit/generated/patient/patient_validation_test.rb +0 -34
- data/lib/ipa_test_kit/generated/practitioner/metadata.yml +0 -124
- data/lib/ipa_test_kit/generated/practitioner/practitioner_identifier_search_test.rb +0 -40
- data/lib/ipa_test_kit/generated/practitioner/practitioner_must_support_test.rb +0 -40
- data/lib/ipa_test_kit/generated/practitioner/practitioner_name_search_test.rb +0 -49
- data/lib/ipa_test_kit/generated/practitioner/practitioner_read_test.rb +0 -24
- data/lib/ipa_test_kit/generated/practitioner/practitioner_reference_resolution_test.rb +0 -28
- data/lib/ipa_test_kit/generated/practitioner/practitioner_validation_test.rb +0 -34
- data/lib/ipa_test_kit/generated/practitioner_group.rb +0 -84
- data/lib/ipa_test_kit/generated/practitioner_role/metadata.yml +0 -141
- data/lib/ipa_test_kit/generated/practitioner_role/practitioner_role_identifier_search_test.rb +0 -40
- data/lib/ipa_test_kit/generated/practitioner_role/practitioner_role_must_support_test.rb +0 -40
- data/lib/ipa_test_kit/generated/practitioner_role/practitioner_role_practitioner_search_test.rb +0 -51
- data/lib/ipa_test_kit/generated/practitioner_role/practitioner_role_read_test.rb +0 -24
- data/lib/ipa_test_kit/generated/practitioner_role/practitioner_role_reference_resolution_test.rb +0 -28
- data/lib/ipa_test_kit/generated/practitioner_role/practitioner_role_validation_test.rb +0 -34
- data/lib/ipa_test_kit/generated/practitioner_role_group.rb +0 -84
- data/lib/ipa_test_kit/generated/provenance/metadata.yml +0 -114
- data/lib/ipa_test_kit/generated/provenance/provenance_read_test.rb +0 -24
- data/lib/ipa_test_kit/generated/provenance/provenance_reference_resolution_test.rb +0 -28
- data/lib/ipa_test_kit/generated/provenance/provenance_validation_test.rb +0 -34
- data/lib/ipa_test_kit/generated/provenance_group.rb +0 -53
- data/lib/ipa_test_kit/generated/resprate/metadata.yml +0 -325
- data/lib/ipa_test_kit/generated/resprate/resprate_must_support_test.rb +0 -49
- data/lib/ipa_test_kit/generated/resprate/resprate_patient_category_date_search_test.rb +0 -46
- data/lib/ipa_test_kit/generated/resprate/resprate_patient_category_search_test.rb +0 -45
- data/lib/ipa_test_kit/generated/resprate/resprate_patient_category_status_search_test.rb +0 -47
- data/lib/ipa_test_kit/generated/resprate/resprate_patient_code_date_search_test.rb +0 -48
- data/lib/ipa_test_kit/generated/resprate/resprate_patient_code_search_test.rb +0 -62
- data/lib/ipa_test_kit/generated/resprate/resprate_provenance_revinclude_search_test.rb +0 -51
- data/lib/ipa_test_kit/generated/resprate/resprate_read_test.rb +0 -24
- data/lib/ipa_test_kit/generated/resprate/resprate_reference_resolution_test.rb +0 -28
- data/lib/ipa_test_kit/generated/resprate/resprate_validation_test.rb +0 -34
- data/lib/ipa_test_kit/generated/resprate_group.rb +0 -93
- data/lib/ipa_test_kit/igs/package.tgz +0 -0
@@ -15,9 +15,7 @@ module IpaTestKit
|
|
15
15
|
:saves_delayed_references?,
|
16
16
|
:first_search?,
|
17
17
|
:fixed_value_search?,
|
18
|
-
:
|
19
|
-
:test_medication_inclusion_mr?,
|
20
|
-
:test_medication_inclusion_ms?,
|
18
|
+
:test_medication_inclusion?,
|
21
19
|
:test_post_search?,
|
22
20
|
:token_search_params,
|
23
21
|
:test_reference_variants?,
|
@@ -32,7 +30,7 @@ module IpaTestKit
|
|
32
30
|
if fixed_value_search?
|
33
31
|
fixed_value_search_param_values.map { |value| fixed_value_search_params(value, patient_id) }
|
34
32
|
else
|
35
|
-
[search_params_with_values(patient_id)]
|
33
|
+
[search_params_with_values(search_param_names, patient_id)]
|
36
34
|
end
|
37
35
|
new_params.reject! do |params|
|
38
36
|
params.any? { |_key, value| value.blank? }
|
@@ -62,8 +60,6 @@ module IpaTestKit
|
|
62
60
|
params_list.flat_map do |params|
|
63
61
|
fhir_search resource_type, params: params
|
64
62
|
|
65
|
-
perform_search_with_status(params, patient_id) if response[:status] == 400 && possible_status_search?
|
66
|
-
|
67
63
|
check_search_response
|
68
64
|
|
69
65
|
fetch_all_bundled_resources(additional_resource_types: ['Provenance'])
|
@@ -96,8 +92,6 @@ module IpaTestKit
|
|
96
92
|
def perform_search(params, patient_id)
|
97
93
|
fhir_search resource_type, params: params
|
98
94
|
|
99
|
-
perform_search_with_status(params, patient_id) if response[:status] == 400 && possible_status_search?
|
100
|
-
|
101
95
|
check_search_response
|
102
96
|
|
103
97
|
resources_returned =
|
@@ -107,6 +101,7 @@ module IpaTestKit
|
|
107
101
|
|
108
102
|
perform_comparator_searches(params, patient_id) if params_with_comparators.present?
|
109
103
|
|
104
|
+
filter_conditions(resources_returned) if resource_type == 'Condition' && metadata.name == 'ipa_problem_list_item'
|
110
105
|
filter_devices(resources_returned) if resource_type == 'Device'
|
111
106
|
|
112
107
|
if first_search?
|
@@ -122,9 +117,7 @@ module IpaTestKit
|
|
122
117
|
|
123
118
|
return resources_returned if all_search_variants_tested?
|
124
119
|
|
125
|
-
|
126
|
-
test_medication_inclusion_mr(resources_returned, params, patient_id) if test_medication_inclusion_mr?
|
127
|
-
test_medication_inclusion_ms(resources_returned, params, patient_id) if test_medication_inclusion_ms?
|
120
|
+
test_medication_inclusion(resources_returned, params, patient_id) if test_medication_inclusion?
|
128
121
|
perform_reference_with_type_search(params, resources_returned.count) if test_reference_variants?
|
129
122
|
perform_search_with_system(params, patient_id) if token_search_params.present?
|
130
123
|
|
@@ -137,6 +130,10 @@ module IpaTestKit
|
|
137
130
|
check_search_response
|
138
131
|
|
139
132
|
post_search_resources = fetch_all_bundled_resources.select { |resource| resource.resourceType == resource_type }
|
133
|
+
|
134
|
+
filter_conditions(post_search_resources) if resource_type == 'Condition' && metadata.name == 'ipa_problem_list_item'
|
135
|
+
filter_devices(post_search_resources) if resource_type == 'Device'
|
136
|
+
|
140
137
|
get_resource_count = get_search_resources.length
|
141
138
|
post_resource_count = post_search_resources.length
|
142
139
|
|
@@ -157,6 +154,19 @@ module IpaTestKit
|
|
157
154
|
end
|
158
155
|
end
|
159
156
|
|
157
|
+
def filter_conditions(resources)
|
158
|
+
# HL7 JIRA FHIR-37917. US Core v5.0.1 does not required patient+category.
|
159
|
+
# In order to distinguish which resources matches the current profile, Inferno has to manually filter
|
160
|
+
# the result of first search, which is searching by patient.
|
161
|
+
resources.select! do |resource|
|
162
|
+
resource.category.any? do |category|
|
163
|
+
category.coding.any? do |coding|
|
164
|
+
metadata.search_definitions[:category][:values].include? coding.code
|
165
|
+
end
|
166
|
+
end
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
160
170
|
def search_and_check_response(params, resource_type = self.resource_type)
|
161
171
|
fhir_search resource_type, params: params
|
162
172
|
|
@@ -176,7 +186,7 @@ module IpaTestKit
|
|
176
186
|
def initial_search_variant_test_records
|
177
187
|
{}.tap do |records|
|
178
188
|
records[:post_variant] = false if test_post_search?
|
179
|
-
records[:medication_inclusion] = false if
|
189
|
+
records[:medication_inclusion] = false# if test_medication_inclusion?
|
180
190
|
records[:reference_variants] = false if test_reference_variants?
|
181
191
|
records[:token_variants] = false if token_search_params.present?
|
182
192
|
records[:comparator_searches] = Set.new if params_with_comparators.present?
|
@@ -221,14 +231,15 @@ module IpaTestKit
|
|
221
231
|
next if search_variant_test_records[:comparator_searches].include? name
|
222
232
|
|
223
233
|
required_comparators(name).each do |comparator|
|
224
|
-
|
225
|
-
date_element = find_a_value_at(scratch_resources_for_patient(patient_id),
|
234
|
+
paths = search_param_paths(name).first
|
235
|
+
date_element = find_a_value_at(scratch_resources_for_patient(patient_id), paths)
|
226
236
|
params_with_comparator = params.merge(name => date_comparator_value(comparator, date_element))
|
227
237
|
|
228
238
|
search_and_check_response(params_with_comparator)
|
229
239
|
|
230
|
-
fetch_all_bundled_resources
|
231
|
-
|
240
|
+
fetch_all_bundled_resources.each do |resource|
|
241
|
+
check_resource_against_params(resource, params_with_comparator) if resource.resourceType == resource_type
|
242
|
+
end
|
232
243
|
end
|
233
244
|
|
234
245
|
search_variant_test_records[:comparator_searches] << name
|
@@ -242,10 +253,12 @@ module IpaTestKit
|
|
242
253
|
new_search_params = params.merge('patient' => "Patient/#{params['patient']}")
|
243
254
|
search_and_check_response(new_search_params)
|
244
255
|
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
256
|
+
reference_with_type_resources = fetch_all_bundled_resources.select { |resource| resource.resourceType == resource_type }
|
257
|
+
|
258
|
+
filter_conditions(reference_with_type_resources) if resource_type == 'Condition' && metadata.name == 'ipa_problem_list_item'
|
259
|
+
filter_devices(reference_with_type_resources) if resource_type == 'Device'
|
260
|
+
|
261
|
+
new_resource_count = reference_with_type_resources.count
|
249
262
|
|
250
263
|
assert new_resource_count == resource_count,
|
251
264
|
"Expected search by `#{params['patient']}` to to return the same results as searching " \
|
@@ -258,9 +271,7 @@ module IpaTestKit
|
|
258
271
|
def perform_search_with_system(params, patient_id)
|
259
272
|
return if search_variant_test_records[:token_variants]
|
260
273
|
|
261
|
-
new_search_params = token_search_params
|
262
|
-
search_params[name] = search_param_value(name, patient_id, include_system: true)
|
263
|
-
end
|
274
|
+
new_search_params = search_params_with_values(token_search_params, patient_id, include_system: true)
|
264
275
|
return if new_search_params.any? { |_name, value| value.blank? }
|
265
276
|
|
266
277
|
search_params = params.merge(new_search_params)
|
@@ -275,28 +286,6 @@ module IpaTestKit
|
|
275
286
|
search_variant_test_records[:token_variants] = true
|
276
287
|
end
|
277
288
|
|
278
|
-
def perform_search_with_status(
|
279
|
-
original_params,
|
280
|
-
patient_id,
|
281
|
-
status_search_values: self.status_search_values,
|
282
|
-
resource_type: self.resource_type
|
283
|
-
)
|
284
|
-
assert resource.is_a?(FHIR::OperationOutcome), "Server returned a status of 400 without an OperationOutcome"
|
285
|
-
# TODO: warn about documenting status requirements
|
286
|
-
status_search_values.flat_map do |status_value|
|
287
|
-
search_params = original_params.merge("#{status_search_param_name}": status_value)
|
288
|
-
|
289
|
-
search_and_check_response(search_params)
|
290
|
-
|
291
|
-
entries = resource.entry.select { |entry| entry.resource.resourceType == resource_type }
|
292
|
-
|
293
|
-
if entries.present?
|
294
|
-
original_params.merge!("#{status_search_param_name}": status_value)
|
295
|
-
break
|
296
|
-
end
|
297
|
-
end
|
298
|
-
end
|
299
|
-
|
300
289
|
def status_search_param_name
|
301
290
|
@status_search_param_name ||=
|
302
291
|
metadata.search_definitions.keys.find { |key| key.to_s.include? 'status' }
|
@@ -310,7 +299,7 @@ module IpaTestKit
|
|
310
299
|
definition = metadata.search_definitions[param_name]
|
311
300
|
return [] if definition.blank?
|
312
301
|
|
313
|
-
definition[:multiple_or] == 'SHALL' ? [definition[:values].join(',')] :
|
302
|
+
definition[:multiple_or] == 'SHALL' ? [definition[:values].join(',')] : Array.wrap(definition[:values])
|
314
303
|
end
|
315
304
|
|
316
305
|
|
@@ -319,7 +308,7 @@ module IpaTestKit
|
|
319
308
|
|
320
309
|
all_search_params.each do |patient_id, params_list|
|
321
310
|
next unless params_list.present?
|
322
|
-
|
311
|
+
|
323
312
|
search_params = params_list.first
|
324
313
|
existing_values = {}
|
325
314
|
missing_values = {}
|
@@ -356,7 +345,7 @@ module IpaTestKit
|
|
356
345
|
end
|
357
346
|
end
|
358
347
|
|
359
|
-
def
|
348
|
+
def test_medication_inclusion(medication_requests, params, patient_id)
|
360
349
|
return if search_variant_test_records[:medication_inclusion]
|
361
350
|
|
362
351
|
scratch[:medication_resources] ||= {}
|
@@ -396,46 +385,6 @@ module IpaTestKit
|
|
396
385
|
search_variant_test_records[:medication_inclusion] = true
|
397
386
|
end
|
398
387
|
|
399
|
-
def test_medication_inclusion_ms(medication_requests, params, patient_id)
|
400
|
-
return if search_variant_test_records[:medication_inclusion]
|
401
|
-
|
402
|
-
scratch[:medication_resources] ||= {}
|
403
|
-
scratch[:medication_resources][:all] ||= []
|
404
|
-
scratch[:medication_resources][patient_id] ||= []
|
405
|
-
scratch[:medication_resources][:contained] ||= []
|
406
|
-
|
407
|
-
requests_with_external_references =
|
408
|
-
medication_requests
|
409
|
-
.select { |request| request&.medicationReference&.present? }
|
410
|
-
.reject { |request| request&.medicationReference&.reference&.start_with? '#' }
|
411
|
-
|
412
|
-
contained_medications =
|
413
|
-
medication_requests
|
414
|
-
.select { |request| request&.medicationReference&.reference&.start_with? '#' }
|
415
|
-
.flat_map(&:contained)
|
416
|
-
.select { |resource| resource.resourceType == 'Medication' }
|
417
|
-
|
418
|
-
scratch[:medication_resources][:all] += contained_medications
|
419
|
-
scratch[:medication_resources][patient_id] += contained_medications
|
420
|
-
scratch[:medication_resources][:contained] += contained_medications
|
421
|
-
|
422
|
-
return if requests_with_external_references.blank?
|
423
|
-
|
424
|
-
search_params = params.merge(_include: 'MedicationStatement:medication')
|
425
|
-
|
426
|
-
search_and_check_response(search_params)
|
427
|
-
|
428
|
-
medications = fetch_all_bundled_resources.select { |resource| resource.resourceType == 'Medication' }
|
429
|
-
assert medications.present?, 'No Medications were included in the search results'
|
430
|
-
|
431
|
-
medications.uniq!(&:id)
|
432
|
-
|
433
|
-
scratch[:medication_resources][:all] += medications
|
434
|
-
scratch[:medication_resources][patient_id] += medications
|
435
|
-
|
436
|
-
search_variant_test_records[:medication_inclusion] = true
|
437
|
-
end
|
438
|
-
|
439
388
|
def all_scratch_resources
|
440
389
|
scratch_resources[:all] ||= []
|
441
390
|
end
|
@@ -456,7 +405,9 @@ module IpaTestKit
|
|
456
405
|
end
|
457
406
|
|
458
407
|
def fixed_value_search_param_values
|
459
|
-
metadata.search_definitions[fixed_value_search_param_name.to_sym][:values]
|
408
|
+
return metadata.search_definitions[fixed_value_search_param_name.to_sym][:values] unless respond_to? :observation_categories
|
409
|
+
|
410
|
+
observation_categories.split(',').map(&:strip)
|
460
411
|
end
|
461
412
|
|
462
413
|
def fixed_value_search_params(value, patient_id)
|
@@ -465,11 +416,29 @@ module IpaTestKit
|
|
465
416
|
end
|
466
417
|
end
|
467
418
|
|
468
|
-
def search_params_with_values(patient_id)
|
469
|
-
|
470
|
-
|
471
|
-
|
419
|
+
def search_params_with_values(search_param_names, patient_id, include_system: false)
|
420
|
+
resources = scratch_resources_for_patient(patient_id)
|
421
|
+
|
422
|
+
if resources.empty?
|
423
|
+
return search_param_names.each_with_object({}) do |name, params|
|
424
|
+
value = patient_id_param?(name) ? patient_id : nil
|
425
|
+
params[name] = value
|
426
|
+
end
|
427
|
+
end
|
428
|
+
|
429
|
+
params_with_partial_value = resources.each_with_object({}) do |resource, outer_params|
|
430
|
+
results_from_one_resource = search_param_names.each_with_object({}) do |name, params|
|
431
|
+
value = patient_id_param?(name) ? patient_id : search_param_value(name, resource, include_system: include_system)
|
432
|
+
params[name] = value
|
433
|
+
end
|
434
|
+
|
435
|
+
outer_params.merge!(results_from_one_resource)
|
436
|
+
|
437
|
+
# stop if all parameter values are found
|
438
|
+
return outer_params if outer_params.all? { |_key, value| value.present? }
|
472
439
|
end
|
440
|
+
|
441
|
+
params_with_partial_value
|
473
442
|
end
|
474
443
|
|
475
444
|
def patient_id_list
|
@@ -486,9 +455,13 @@ module IpaTestKit
|
|
486
455
|
name == 'patient' || (name == '_id' && resource_type == 'Patient')
|
487
456
|
end
|
488
457
|
|
489
|
-
def
|
490
|
-
|
491
|
-
|
458
|
+
def search_param_paths(name)
|
459
|
+
paths = metadata.search_definitions[name.to_sym][:paths]
|
460
|
+
if paths.first =='class'
|
461
|
+
paths[0] = 'local_class'
|
462
|
+
end
|
463
|
+
|
464
|
+
paths
|
492
465
|
end
|
493
466
|
|
494
467
|
def all_search_params_present?(params)
|
@@ -508,8 +481,13 @@ module IpaTestKit
|
|
508
481
|
end
|
509
482
|
|
510
483
|
def no_resources_skip_message(resource_type = self.resource_type)
|
511
|
-
"No #{resource_type} resources appear to be available
|
512
|
-
|
484
|
+
msg = "No #{resource_type} resources appear to be available"
|
485
|
+
|
486
|
+
if (resource_type == 'Device' && implantable_device_codes.present?)
|
487
|
+
msg.concat(" with the following Device Type Code filter: #{implantable_device_codes}")
|
488
|
+
end
|
489
|
+
|
490
|
+
msg + ". Please use patients with more information"
|
513
491
|
end
|
514
492
|
|
515
493
|
def fetch_all_bundled_resources(
|
@@ -543,13 +521,18 @@ module IpaTestKit
|
|
543
521
|
end
|
544
522
|
|
545
523
|
valid_resource_types = [resource_type, 'OperationOutcome'].concat(additional_resource_types)
|
546
|
-
valid_resource_types << 'Medication' if
|
524
|
+
valid_resource_types << 'Medication' if resource_type == 'MedicationRequest'
|
547
525
|
|
548
|
-
|
549
|
-
resources.
|
526
|
+
invalid_resource_types =
|
527
|
+
resources.reject { |entry| valid_resource_types.include? entry.resourceType }
|
528
|
+
.map(&:resourceType)
|
529
|
+
.uniq
|
550
530
|
|
551
|
-
|
552
|
-
|
531
|
+
if invalid_resource_types.any?
|
532
|
+
info "Received resource type(s) #{invalid_resource_types.join(', ')} in search bundle, " \
|
533
|
+
"but only expected resource types #{valid_resource_types.join(', ')}. " + \
|
534
|
+
"This is unusual but allowed if the server believes additional resource types are relevant."
|
535
|
+
end
|
553
536
|
|
554
537
|
resources
|
555
538
|
end
|
@@ -558,57 +541,91 @@ module IpaTestKit
|
|
558
541
|
"Could not resolve next bundle: #{link}"
|
559
542
|
end
|
560
543
|
|
561
|
-
def search_param_value(name,
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
when FHIR::CodeableConcept
|
576
|
-
if include_system
|
577
|
-
coding =
|
578
|
-
find_a_value_at(element, 'coding') { |coding| coding.code.present? && coding.system.present? }
|
579
|
-
coding.present? ? "#{coding.system}|#{coding.code}" : nil
|
580
|
-
else
|
581
|
-
find_a_value_at(element, 'coding.code')
|
582
|
-
end
|
583
|
-
when FHIR::Identifier
|
584
|
-
if include_system
|
585
|
-
identifier = find_a_value_at(scratch_resources_for_patient(patient_id), path) do |identifier|
|
586
|
-
identifier.value.present? && identifier.system.present?
|
544
|
+
def search_param_value(name, resource, include_system: false)
|
545
|
+
paths = search_param_paths(name)
|
546
|
+
search_value = nil
|
547
|
+
paths.each do |path|
|
548
|
+
element = find_a_value_at(resource, path) { |element| element_has_valid_value?(element, include_system) }
|
549
|
+
|
550
|
+
search_value =
|
551
|
+
case element
|
552
|
+
when FHIR::Period
|
553
|
+
if element.start.present?
|
554
|
+
'gt' + (DateTime.xmlschema(element.start) - 1).xmlschema
|
555
|
+
else
|
556
|
+
end_datetime = get_fhir_datetime_range(element.end)[:end]
|
557
|
+
'lt' + (end_datetime + 1).xmlschema
|
587
558
|
end
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
559
|
+
when FHIR::Reference
|
560
|
+
element.reference
|
561
|
+
when FHIR::CodeableConcept
|
562
|
+
if include_system
|
563
|
+
coding =
|
564
|
+
find_a_value_at(element, 'coding') { |coding| coding.code.present? && coding.system.present? }
|
565
|
+
"#{coding.system}|#{coding.code}"
|
566
|
+
else
|
567
|
+
find_a_value_at(element, 'coding.code')
|
596
568
|
end
|
597
|
-
|
569
|
+
when FHIR::Identifier
|
570
|
+
include_system ? "#{element.system}|#{element.value}" : element.value
|
571
|
+
when FHIR::Coding
|
572
|
+
include_system ? "#{element.system}|#{element.code}" : element.code
|
573
|
+
when FHIR::HumanName
|
574
|
+
element.family || element.given&.first || element.text
|
575
|
+
when FHIR::Address
|
576
|
+
element.text || element.city || element.state || element.postalCode || element.country
|
598
577
|
else
|
599
|
-
|
578
|
+
if metadata.version != 'v3.1.1' &&
|
579
|
+
metadata.search_definitions[name.to_sym][:type] == 'date' &&
|
580
|
+
params_with_comparators&.include?(name)
|
581
|
+
# convert date search to greath-than comparator search with correct precision
|
582
|
+
# For all date search parameters:
|
583
|
+
# Patient.birthDate does not mandate comparators so cannot be converted
|
584
|
+
# Goal.target-date has day precision
|
585
|
+
# All others have second + time offset precision
|
586
|
+
if /^\d{4}(-\d{2})?$/.match?(element) || # YYYY or YYYY-MM
|
587
|
+
(/^\d{4}-\d{2}-\d{2}$/.match?(element) && resource_type != "Goal") # YYY-MM-DD AND Resource is NOT Goal
|
588
|
+
"gt#{(DateTime.xmlschema(element)-1).xmlschema}"
|
589
|
+
else
|
590
|
+
element
|
591
|
+
end
|
592
|
+
else
|
593
|
+
element
|
594
|
+
end
|
600
595
|
end
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
-
|
605
|
-
else
|
606
|
-
element
|
607
|
-
end
|
596
|
+
|
597
|
+
break if search_value.present?
|
598
|
+
end
|
599
|
+
|
608
600
|
escaped_value = search_value&.gsub(',', '\\,')
|
609
601
|
escaped_value
|
610
602
|
end
|
611
603
|
|
604
|
+
def element_has_valid_value?(element, include_system)
|
605
|
+
case element
|
606
|
+
when FHIR::Reference
|
607
|
+
element.reference.present?
|
608
|
+
when FHIR::CodeableConcept
|
609
|
+
if include_system
|
610
|
+
coding =
|
611
|
+
find_a_value_at(element, 'coding') { |coding| coding.code.present? && coding.system.present? }
|
612
|
+
coding.present?
|
613
|
+
else
|
614
|
+
find_a_value_at(element, 'coding.code').present?
|
615
|
+
end
|
616
|
+
when FHIR::Identifier
|
617
|
+
include_system ? element.value.present? && element.system.present? : element.value.present?
|
618
|
+
when FHIR::Coding
|
619
|
+
include_system ? element.code.present? && element.system.present? : element.code.present?
|
620
|
+
when FHIR::HumanName
|
621
|
+
(element.family || element.given&.first || element.text).present?
|
622
|
+
when FHIR::Address
|
623
|
+
(element.text || element.city || element.state || element.postalCode || element.country).present?
|
624
|
+
else
|
625
|
+
true
|
626
|
+
end
|
627
|
+
end
|
628
|
+
|
612
629
|
def save_resource_reference(resource_type, reference)
|
613
630
|
scratch[:references] ||= {}
|
614
631
|
scratch[:references][resource_type] ||= Set.new
|
@@ -616,6 +633,7 @@ module IpaTestKit
|
|
616
633
|
end
|
617
634
|
|
618
635
|
def save_delayed_references(resources, containing_resource_type = self.resource_type)
|
636
|
+
return if containing_resource_type == 'Provenance'
|
619
637
|
resources.each do |resource|
|
620
638
|
references_to_save(containing_resource_type).each do |reference_to_save|
|
621
639
|
resolve_path(resource, reference_to_save[:path])
|
@@ -634,89 +652,100 @@ module IpaTestKit
|
|
634
652
|
#### RESULT CHECKING ####
|
635
653
|
|
636
654
|
def check_resource_against_params(resource, params)
|
637
|
-
|
638
|
-
|
639
|
-
|
640
|
-
|
641
|
-
|
642
|
-
|
643
|
-
|
644
|
-
|
645
|
-
|
646
|
-
|
655
|
+
|
656
|
+
params.each do |name, escaped_search_value|
|
657
|
+
#unescape search value
|
658
|
+
search_value = escaped_search_value&.gsub('\\,', ',')
|
659
|
+
paths = search_param_paths(name)
|
660
|
+
|
661
|
+
match_found = false
|
662
|
+
values_found = []
|
663
|
+
|
664
|
+
paths.each do |path|
|
665
|
+
type = metadata.search_definitions[name.to_sym][:type]
|
666
|
+
values_found =
|
667
|
+
resolve_path(resource, path)
|
668
|
+
.map do |value|
|
669
|
+
if value.is_a? FHIR::Reference
|
670
|
+
value.reference
|
671
|
+
else
|
672
|
+
value
|
673
|
+
end
|
647
674
|
end
|
648
|
-
end
|
649
675
|
|
650
|
-
|
651
|
-
|
652
|
-
|
653
|
-
|
654
|
-
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
678
|
-
|
679
|
-
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
|
687
|
-
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
704
|
-
|
705
|
-
end
|
706
|
-
else
|
707
|
-
# searching by patient requires special case because we are searching by a resource identifier
|
708
|
-
# references can also be URL's, so we made need to resolve those url's
|
709
|
-
if ['subject', 'patient'].include? name.to_s
|
710
|
-
id = search_value.split('Patient/').last
|
711
|
-
possible_values = [id, 'Patient/' + id, "#{url}/Patient/\#{id}"]
|
712
|
-
values_found.any? do |reference|
|
713
|
-
possible_values.include? reference
|
676
|
+
match_found =
|
677
|
+
case type
|
678
|
+
when 'Period', 'date', 'instant', 'dateTime'
|
679
|
+
values_found.any? { |date| validate_date_search(search_value, date) }
|
680
|
+
when 'HumanName'
|
681
|
+
# When a string search parameter refers to the types HumanName and Address,
|
682
|
+
# the search covers the elements of type string, and does not cover elements such as use and period
|
683
|
+
# https://www.hl7.org/fhir/search.html#string
|
684
|
+
search_value_downcase = search_value.downcase
|
685
|
+
values_found.any? do |name|
|
686
|
+
name&.text&.downcase&.start_with?(search_value_downcase) ||
|
687
|
+
name&.family&.downcase&.start_with?(search_value_downcase) ||
|
688
|
+
name&.given&.any? { |given| given.downcase.start_with?(search_value_downcase) } ||
|
689
|
+
name&.prefix&.any? { |prefix| prefix.downcase.start_with?(search_value_downcase) } ||
|
690
|
+
name&.suffix&.any? { |suffix| suffix.downcase.start_with?(search_value_downcase) }
|
691
|
+
end
|
692
|
+
when 'Address'
|
693
|
+
search_value_downcase = search_value.downcase
|
694
|
+
values_found.any? do |address|
|
695
|
+
address&.text&.downcase&.start_with?(search_value_downcase) ||
|
696
|
+
address&.city&.downcase&.start_with?(search_value_downcase) ||
|
697
|
+
address&.state&.downcase&.start_with?(search_value_downcase) ||
|
698
|
+
address&.postalCode&.downcase&.start_with?(search_value_downcase) ||
|
699
|
+
address&.country&.downcase&.start_with?(search_value_downcase)
|
700
|
+
end
|
701
|
+
when 'CodeableConcept'
|
702
|
+
# FHIR token search (https://www.hl7.org/fhir/search.html#token): "When in doubt, servers SHOULD
|
703
|
+
# treat tokens in a case-insensitive manner, on the grounds that including undesired data has
|
704
|
+
# less safety implications than excluding desired behavior".
|
705
|
+
codings = values_found.flat_map(&:coding)
|
706
|
+
if search_value.include? '|'
|
707
|
+
system = search_value.split('|').first
|
708
|
+
code = search_value.split('|').last
|
709
|
+
codings&.any? { |coding| coding.system == system && coding.code&.casecmp?(code) }
|
710
|
+
else
|
711
|
+
codings&.any? { |coding| coding.code&.casecmp?(search_value) }
|
712
|
+
end
|
713
|
+
when 'Coding'
|
714
|
+
if search_value.include? '|'
|
715
|
+
system = search_value.split('|').first
|
716
|
+
code = search_value.split('|').last
|
717
|
+
values_found.any? { |coding| coding.system == system && coding.code&.casecmp?(code) }
|
718
|
+
else
|
719
|
+
values_found.any? { |coding| coding.code&.casecmp?(search_value) }
|
720
|
+
end
|
721
|
+
when 'Identifier'
|
722
|
+
if search_value.include? '|'
|
723
|
+
values_found.any? { |identifier| "#{identifier.system}|#{identifier.value}" == search_value }
|
724
|
+
else
|
725
|
+
values_found.any? { |identifier| identifier.value == search_value }
|
726
|
+
end
|
727
|
+
when 'string'
|
728
|
+
searched_values = search_value.downcase.split(/(?<!\\\\),/).map{ |string| string.gsub('\\,', ',') }
|
729
|
+
values_found.any? do |value_found|
|
730
|
+
searched_values.any? { |searched_value| value_found.downcase.starts_with? searched_value }
|
714
731
|
end
|
715
732
|
else
|
716
|
-
|
717
|
-
|
733
|
+
# searching by patient requires special case because we are searching by a resource identifier
|
734
|
+
# references can also be URLs, so we may need to resolve those URLs
|
735
|
+
if ['subject', 'patient'].include? name.to_s
|
736
|
+
id = search_value.split('Patient/').last
|
737
|
+
possible_values = [id, "Patient/#{id}", "#{url}/Patient/#{id}"]
|
738
|
+
values_found.any? do |reference|
|
739
|
+
possible_values.include? reference
|
740
|
+
end
|
741
|
+
else
|
742
|
+
search_values = search_value.split(/(?<!\\\\),/).map { |string| string.gsub('\\,', ',') }
|
743
|
+
values_found.any? { |value_found| search_values.include? value_found }
|
744
|
+
end
|
718
745
|
end
|
719
|
-
|
746
|
+
|
747
|
+
break if match_found
|
748
|
+
end
|
720
749
|
|
721
750
|
assert match_found,
|
722
751
|
"#{resource_type}/#{resource.id} did not match the search parameters:\n" \
|