us_core_test_kit 0.1.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/us_core_test_kit/custom_groups/capability_statement/conformance_support_test.rb +41 -0
- data/lib/us_core_test_kit/custom_groups/capability_statement/fhir_version_test.rb +15 -0
- data/lib/us_core_test_kit/custom_groups/capability_statement/json_support_test.rb +40 -0
- data/lib/us_core_test_kit/custom_groups/capability_statement/profile_support_test.rb +90 -0
- data/lib/us_core_test_kit/custom_groups/capability_statement_group.rb +64 -0
- data/lib/us_core_test_kit/custom_groups/clinical_notes_guidance_group.rb +208 -0
- data/lib/us_core_test_kit/custom_groups/data_absent_reason_group.rb +59 -0
- data/lib/us_core_test_kit/date_search_validation.rb +101 -0
- data/lib/us_core_test_kit/ext/fhir_models.rb +59 -0
- data/lib/us_core_test_kit/fhir_resource_navigation.rb +63 -0
- data/lib/us_core_test_kit/generated/allergy_intolerance/allergy_intolerance_must_support_test.rb +40 -0
- data/lib/us_core_test_kit/generated/allergy_intolerance/allergy_intolerance_patient_clinical_status_search_test.rb +46 -0
- data/lib/us_core_test_kit/generated/allergy_intolerance/allergy_intolerance_patient_search_test.rb +60 -0
- data/lib/us_core_test_kit/generated/allergy_intolerance/allergy_intolerance_provenance_revinclude_search_test.rb +49 -0
- data/lib/us_core_test_kit/generated/allergy_intolerance/allergy_intolerance_read_test.rb +24 -0
- data/lib/us_core_test_kit/generated/allergy_intolerance/allergy_intolerance_reference_resolution_test.rb +28 -0
- data/lib/us_core_test_kit/generated/allergy_intolerance/allergy_intolerance_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/allergy_intolerance_group.rb +85 -0
- data/lib/us_core_test_kit/generated/bodyheight/bodyheight_must_support_test.rb +49 -0
- data/lib/us_core_test_kit/generated/bodyheight/bodyheight_patient_category_date_search_test.rb +46 -0
- data/lib/us_core_test_kit/generated/bodyheight/bodyheight_patient_category_search_test.rb +45 -0
- data/lib/us_core_test_kit/generated/bodyheight/bodyheight_patient_category_status_search_test.rb +47 -0
- data/lib/us_core_test_kit/generated/bodyheight/bodyheight_patient_code_date_search_test.rb +48 -0
- data/lib/us_core_test_kit/generated/bodyheight/bodyheight_patient_code_search_test.rb +62 -0
- data/lib/us_core_test_kit/generated/bodyheight/bodyheight_provenance_revinclude_search_test.rb +51 -0
- data/lib/us_core_test_kit/generated/bodyheight/bodyheight_read_test.rb +24 -0
- data/lib/us_core_test_kit/generated/bodyheight/bodyheight_reference_resolution_test.rb +28 -0
- data/lib/us_core_test_kit/generated/bodyheight/bodyheight_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/bodyheight_group.rb +93 -0
- data/lib/us_core_test_kit/generated/bodytemp/bodytemp_must_support_test.rb +49 -0
- data/lib/us_core_test_kit/generated/bodytemp/bodytemp_patient_category_date_search_test.rb +46 -0
- data/lib/us_core_test_kit/generated/bodytemp/bodytemp_patient_category_search_test.rb +45 -0
- data/lib/us_core_test_kit/generated/bodytemp/bodytemp_patient_category_status_search_test.rb +47 -0
- data/lib/us_core_test_kit/generated/bodytemp/bodytemp_patient_code_date_search_test.rb +48 -0
- data/lib/us_core_test_kit/generated/bodytemp/bodytemp_patient_code_search_test.rb +62 -0
- data/lib/us_core_test_kit/generated/bodytemp/bodytemp_provenance_revinclude_search_test.rb +51 -0
- data/lib/us_core_test_kit/generated/bodytemp/bodytemp_read_test.rb +24 -0
- data/lib/us_core_test_kit/generated/bodytemp/bodytemp_reference_resolution_test.rb +28 -0
- data/lib/us_core_test_kit/generated/bodytemp/bodytemp_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/bodytemp_group.rb +93 -0
- data/lib/us_core_test_kit/generated/bodyweight/bodyweight_must_support_test.rb +49 -0
- data/lib/us_core_test_kit/generated/bodyweight/bodyweight_patient_category_date_search_test.rb +46 -0
- data/lib/us_core_test_kit/generated/bodyweight/bodyweight_patient_category_search_test.rb +45 -0
- data/lib/us_core_test_kit/generated/bodyweight/bodyweight_patient_category_status_search_test.rb +47 -0
- data/lib/us_core_test_kit/generated/bodyweight/bodyweight_patient_code_date_search_test.rb +48 -0
- data/lib/us_core_test_kit/generated/bodyweight/bodyweight_patient_code_search_test.rb +62 -0
- data/lib/us_core_test_kit/generated/bodyweight/bodyweight_provenance_revinclude_search_test.rb +51 -0
- data/lib/us_core_test_kit/generated/bodyweight/bodyweight_read_test.rb +24 -0
- data/lib/us_core_test_kit/generated/bodyweight/bodyweight_reference_resolution_test.rb +28 -0
- data/lib/us_core_test_kit/generated/bodyweight/bodyweight_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/bodyweight_group.rb +93 -0
- data/lib/us_core_test_kit/generated/bp/bp_must_support_test.rb +52 -0
- data/lib/us_core_test_kit/generated/bp/bp_patient_category_date_search_test.rb +46 -0
- data/lib/us_core_test_kit/generated/bp/bp_patient_category_search_test.rb +45 -0
- data/lib/us_core_test_kit/generated/bp/bp_patient_category_status_search_test.rb +47 -0
- data/lib/us_core_test_kit/generated/bp/bp_patient_code_date_search_test.rb +48 -0
- data/lib/us_core_test_kit/generated/bp/bp_patient_code_search_test.rb +62 -0
- data/lib/us_core_test_kit/generated/bp/bp_provenance_revinclude_search_test.rb +51 -0
- data/lib/us_core_test_kit/generated/bp/bp_read_test.rb +24 -0
- data/lib/us_core_test_kit/generated/bp/bp_reference_resolution_test.rb +28 -0
- data/lib/us_core_test_kit/generated/bp/bp_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/bp_group.rb +93 -0
- data/lib/us_core_test_kit/generated/care_plan/care_plan_must_support_test.rb +41 -0
- data/lib/us_core_test_kit/generated/care_plan/care_plan_patient_category_date_search_test.rb +48 -0
- data/lib/us_core_test_kit/generated/care_plan/care_plan_patient_category_search_test.rb +62 -0
- data/lib/us_core_test_kit/generated/care_plan/care_plan_patient_category_status_date_search_test.rb +48 -0
- data/lib/us_core_test_kit/generated/care_plan/care_plan_patient_category_status_search_test.rb +47 -0
- data/lib/us_core_test_kit/generated/care_plan/care_plan_provenance_revinclude_search_test.rb +51 -0
- data/lib/us_core_test_kit/generated/care_plan/care_plan_read_test.rb +24 -0
- data/lib/us_core_test_kit/generated/care_plan/care_plan_reference_resolution_test.rb +28 -0
- data/lib/us_core_test_kit/generated/care_plan/care_plan_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/care_plan_group.rb +89 -0
- data/lib/us_core_test_kit/generated/care_team/care_team_must_support_test.rb +39 -0
- data/lib/us_core_test_kit/generated/care_team/care_team_patient_status_search_test.rb +62 -0
- data/lib/us_core_test_kit/generated/care_team/care_team_provenance_revinclude_search_test.rb +50 -0
- data/lib/us_core_test_kit/generated/care_team/care_team_read_test.rb +24 -0
- data/lib/us_core_test_kit/generated/care_team/care_team_reference_resolution_test.rb +28 -0
- data/lib/us_core_test_kit/generated/care_team/care_team_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/care_team_group.rb +83 -0
- data/lib/us_core_test_kit/generated/condition/condition_must_support_test.rb +39 -0
- data/lib/us_core_test_kit/generated/condition/condition_patient_category_search_test.rb +47 -0
- data/lib/us_core_test_kit/generated/condition/condition_patient_clinical_status_search_test.rb +46 -0
- data/lib/us_core_test_kit/generated/condition/condition_patient_code_search_test.rb +47 -0
- data/lib/us_core_test_kit/generated/condition/condition_patient_onset_date_search_test.rb +47 -0
- data/lib/us_core_test_kit/generated/condition/condition_patient_search_test.rb +60 -0
- data/lib/us_core_test_kit/generated/condition/condition_provenance_revinclude_search_test.rb +49 -0
- data/lib/us_core_test_kit/generated/condition/condition_read_test.rb +24 -0
- data/lib/us_core_test_kit/generated/condition/condition_reference_resolution_test.rb +28 -0
- data/lib/us_core_test_kit/generated/condition/condition_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/condition_group.rb +91 -0
- data/lib/us_core_test_kit/generated/device/device_must_support_test.rb +43 -0
- data/lib/us_core_test_kit/generated/device/device_patient_search_test.rb +65 -0
- data/lib/us_core_test_kit/generated/device/device_patient_type_search_test.rb +52 -0
- data/lib/us_core_test_kit/generated/device/device_provenance_revinclude_search_test.rb +49 -0
- data/lib/us_core_test_kit/generated/device/device_read_test.rb +24 -0
- data/lib/us_core_test_kit/generated/device/device_reference_resolution_test.rb +28 -0
- data/lib/us_core_test_kit/generated/device/device_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/device_group.rb +85 -0
- data/lib/us_core_test_kit/generated/diagnostic_report_lab/diagnostic_report_lab_must_support_test.rb +43 -0
- data/lib/us_core_test_kit/generated/diagnostic_report_lab/diagnostic_report_lab_patient_category_date_search_test.rb +46 -0
- data/lib/us_core_test_kit/generated/diagnostic_report_lab/diagnostic_report_lab_patient_category_search_test.rb +63 -0
- data/lib/us_core_test_kit/generated/diagnostic_report_lab/diagnostic_report_lab_patient_code_date_search_test.rb +48 -0
- data/lib/us_core_test_kit/generated/diagnostic_report_lab/diagnostic_report_lab_patient_code_search_test.rb +45 -0
- data/lib/us_core_test_kit/generated/diagnostic_report_lab/diagnostic_report_lab_patient_search_test.rb +44 -0
- data/lib/us_core_test_kit/generated/diagnostic_report_lab/diagnostic_report_lab_patient_status_search_test.rb +46 -0
- data/lib/us_core_test_kit/generated/diagnostic_report_lab/diagnostic_report_lab_provenance_revinclude_search_test.rb +51 -0
- data/lib/us_core_test_kit/generated/diagnostic_report_lab/diagnostic_report_lab_read_test.rb +24 -0
- data/lib/us_core_test_kit/generated/diagnostic_report_lab/diagnostic_report_lab_reference_resolution_test.rb +28 -0
- data/lib/us_core_test_kit/generated/diagnostic_report_lab/diagnostic_report_lab_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/diagnostic_report_lab_group.rb +96 -0
- data/lib/us_core_test_kit/generated/diagnostic_report_note/diagnostic_report_note_must_support_test.rb +43 -0
- data/lib/us_core_test_kit/generated/diagnostic_report_note/diagnostic_report_note_patient_category_date_search_test.rb +46 -0
- data/lib/us_core_test_kit/generated/diagnostic_report_note/diagnostic_report_note_patient_category_search_test.rb +63 -0
- data/lib/us_core_test_kit/generated/diagnostic_report_note/diagnostic_report_note_patient_code_date_search_test.rb +48 -0
- data/lib/us_core_test_kit/generated/diagnostic_report_note/diagnostic_report_note_patient_code_search_test.rb +45 -0
- data/lib/us_core_test_kit/generated/diagnostic_report_note/diagnostic_report_note_patient_search_test.rb +44 -0
- data/lib/us_core_test_kit/generated/diagnostic_report_note/diagnostic_report_note_patient_status_search_test.rb +46 -0
- data/lib/us_core_test_kit/generated/diagnostic_report_note/diagnostic_report_note_provenance_revinclude_search_test.rb +51 -0
- data/lib/us_core_test_kit/generated/diagnostic_report_note/diagnostic_report_note_read_test.rb +24 -0
- data/lib/us_core_test_kit/generated/diagnostic_report_note/diagnostic_report_note_reference_resolution_test.rb +28 -0
- data/lib/us_core_test_kit/generated/diagnostic_report_note/diagnostic_report_note_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/diagnostic_report_note_group.rb +96 -0
- data/lib/us_core_test_kit/generated/document_reference/document_reference_id_search_test.rb +40 -0
- data/lib/us_core_test_kit/generated/document_reference/document_reference_must_support_test.rb +49 -0
- data/lib/us_core_test_kit/generated/document_reference/document_reference_patient_category_date_search_test.rb +46 -0
- data/lib/us_core_test_kit/generated/document_reference/document_reference_patient_category_search_test.rb +45 -0
- data/lib/us_core_test_kit/generated/document_reference/document_reference_patient_search_test.rb +61 -0
- data/lib/us_core_test_kit/generated/document_reference/document_reference_patient_status_search_test.rb +46 -0
- data/lib/us_core_test_kit/generated/document_reference/document_reference_patient_type_period_search_test.rb +48 -0
- data/lib/us_core_test_kit/generated/document_reference/document_reference_patient_type_search_test.rb +45 -0
- data/lib/us_core_test_kit/generated/document_reference/document_reference_provenance_revinclude_search_test.rb +50 -0
- data/lib/us_core_test_kit/generated/document_reference/document_reference_read_test.rb +24 -0
- data/lib/us_core_test_kit/generated/document_reference/document_reference_reference_resolution_test.rb +28 -0
- data/lib/us_core_test_kit/generated/document_reference/document_reference_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/document_reference_group.rb +99 -0
- data/lib/us_core_test_kit/generated/encounter/encounter_class_patient_search_test.rb +47 -0
- data/lib/us_core_test_kit/generated/encounter/encounter_date_patient_search_test.rb +45 -0
- data/lib/us_core_test_kit/generated/encounter/encounter_id_search_test.rb +40 -0
- data/lib/us_core_test_kit/generated/encounter/encounter_identifier_search_test.rb +43 -0
- data/lib/us_core_test_kit/generated/encounter/encounter_must_support_test.rb +51 -0
- data/lib/us_core_test_kit/generated/encounter/encounter_patient_search_test.rb +61 -0
- data/lib/us_core_test_kit/generated/encounter/encounter_patient_status_search_test.rb +45 -0
- data/lib/us_core_test_kit/generated/encounter/encounter_patient_type_search_test.rb +47 -0
- data/lib/us_core_test_kit/generated/encounter/encounter_provenance_revinclude_search_test.rb +50 -0
- data/lib/us_core_test_kit/generated/encounter/encounter_read_test.rb +24 -0
- data/lib/us_core_test_kit/generated/encounter/encounter_reference_resolution_test.rb +28 -0
- data/lib/us_core_test_kit/generated/encounter/encounter_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/encounter_group.rb +97 -0
- data/lib/us_core_test_kit/generated/goal/goal_must_support_test.rb +39 -0
- data/lib/us_core_test_kit/generated/goal/goal_patient_lifecycle_status_search_test.rb +45 -0
- data/lib/us_core_test_kit/generated/goal/goal_patient_search_test.rb +60 -0
- data/lib/us_core_test_kit/generated/goal/goal_patient_target_date_search_test.rb +47 -0
- data/lib/us_core_test_kit/generated/goal/goal_provenance_revinclude_search_test.rb +49 -0
- data/lib/us_core_test_kit/generated/goal/goal_read_test.rb +24 -0
- data/lib/us_core_test_kit/generated/goal/goal_reference_resolution_test.rb +28 -0
- data/lib/us_core_test_kit/generated/goal/goal_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/goal_group.rb +87 -0
- data/lib/us_core_test_kit/generated/head_circumference/head_circumference_must_support_test.rb +49 -0
- data/lib/us_core_test_kit/generated/head_circumference/head_circumference_patient_category_date_search_test.rb +46 -0
- data/lib/us_core_test_kit/generated/head_circumference/head_circumference_patient_category_search_test.rb +45 -0
- data/lib/us_core_test_kit/generated/head_circumference/head_circumference_patient_category_status_search_test.rb +47 -0
- data/lib/us_core_test_kit/generated/head_circumference/head_circumference_patient_code_date_search_test.rb +48 -0
- data/lib/us_core_test_kit/generated/head_circumference/head_circumference_patient_code_search_test.rb +62 -0
- data/lib/us_core_test_kit/generated/head_circumference/head_circumference_provenance_revinclude_search_test.rb +51 -0
- data/lib/us_core_test_kit/generated/head_circumference/head_circumference_read_test.rb +24 -0
- data/lib/us_core_test_kit/generated/head_circumference/head_circumference_reference_resolution_test.rb +28 -0
- data/lib/us_core_test_kit/generated/head_circumference/head_circumference_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/head_circumference_group.rb +93 -0
- data/lib/us_core_test_kit/generated/heartrate/heartrate_must_support_test.rb +49 -0
- data/lib/us_core_test_kit/generated/heartrate/heartrate_patient_category_date_search_test.rb +46 -0
- data/lib/us_core_test_kit/generated/heartrate/heartrate_patient_category_search_test.rb +45 -0
- data/lib/us_core_test_kit/generated/heartrate/heartrate_patient_category_status_search_test.rb +47 -0
- data/lib/us_core_test_kit/generated/heartrate/heartrate_patient_code_date_search_test.rb +48 -0
- data/lib/us_core_test_kit/generated/heartrate/heartrate_patient_code_search_test.rb +62 -0
- data/lib/us_core_test_kit/generated/heartrate/heartrate_provenance_revinclude_search_test.rb +51 -0
- data/lib/us_core_test_kit/generated/heartrate/heartrate_read_test.rb +24 -0
- data/lib/us_core_test_kit/generated/heartrate/heartrate_reference_resolution_test.rb +28 -0
- data/lib/us_core_test_kit/generated/heartrate/heartrate_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/heartrate_group.rb +93 -0
- data/lib/us_core_test_kit/generated/immunization/immunization_must_support_test.rb +40 -0
- data/lib/us_core_test_kit/generated/immunization/immunization_patient_date_search_test.rb +47 -0
- data/lib/us_core_test_kit/generated/immunization/immunization_patient_search_test.rb +60 -0
- data/lib/us_core_test_kit/generated/immunization/immunization_patient_status_search_test.rb +45 -0
- data/lib/us_core_test_kit/generated/immunization/immunization_provenance_revinclude_search_test.rb +50 -0
- data/lib/us_core_test_kit/generated/immunization/immunization_read_test.rb +24 -0
- data/lib/us_core_test_kit/generated/immunization/immunization_reference_resolution_test.rb +28 -0
- data/lib/us_core_test_kit/generated/immunization/immunization_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/immunization_group.rb +87 -0
- data/lib/us_core_test_kit/generated/medication_request/medication_request_must_support_test.rb +44 -0
- data/lib/us_core_test_kit/generated/medication_request/medication_request_patient_intent_authoredon_search_test.rb +53 -0
- data/lib/us_core_test_kit/generated/medication_request/medication_request_patient_intent_encounter_search_test.rb +52 -0
- data/lib/us_core_test_kit/generated/medication_request/medication_request_patient_intent_search_test.rb +68 -0
- data/lib/us_core_test_kit/generated/medication_request/medication_request_patient_intent_status_search_test.rb +49 -0
- data/lib/us_core_test_kit/generated/medication_request/medication_request_provenance_revinclude_search_test.rb +51 -0
- data/lib/us_core_test_kit/generated/medication_request/medication_request_read_test.rb +24 -0
- data/lib/us_core_test_kit/generated/medication_request/medication_request_reference_resolution_test.rb +28 -0
- data/lib/us_core_test_kit/generated/medication_request/medication_request_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/medication_request/medication_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/medication_request_group.rb +92 -0
- data/lib/us_core_test_kit/generated/observation_lab/observation_lab_must_support_test.rb +41 -0
- data/lib/us_core_test_kit/generated/observation_lab/observation_lab_patient_category_date_search_test.rb +46 -0
- data/lib/us_core_test_kit/generated/observation_lab/observation_lab_patient_category_search_test.rb +62 -0
- data/lib/us_core_test_kit/generated/observation_lab/observation_lab_patient_category_status_search_test.rb +47 -0
- data/lib/us_core_test_kit/generated/observation_lab/observation_lab_patient_code_date_search_test.rb +48 -0
- data/lib/us_core_test_kit/generated/observation_lab/observation_lab_patient_code_search_test.rb +45 -0
- data/lib/us_core_test_kit/generated/observation_lab/observation_lab_provenance_revinclude_search_test.rb +51 -0
- data/lib/us_core_test_kit/generated/observation_lab/observation_lab_read_test.rb +24 -0
- data/lib/us_core_test_kit/generated/observation_lab/observation_lab_reference_resolution_test.rb +28 -0
- data/lib/us_core_test_kit/generated/observation_lab/observation_lab_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/observation_lab_group.rb +93 -0
- data/lib/us_core_test_kit/generated/organization/organization_address_search_test.rb +39 -0
- data/lib/us_core_test_kit/generated/organization/organization_must_support_test.rb +47 -0
- data/lib/us_core_test_kit/generated/organization/organization_name_search_test.rb +49 -0
- data/lib/us_core_test_kit/generated/organization/organization_read_test.rb +24 -0
- data/lib/us_core_test_kit/generated/organization/organization_reference_resolution_test.rb +28 -0
- data/lib/us_core_test_kit/generated/organization/organization_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/organization_group.rb +84 -0
- data/lib/us_core_test_kit/generated/patient/patient_birthdate_family_search_test.rb +41 -0
- data/lib/us_core_test_kit/generated/patient/patient_birthdate_name_search_test.rb +39 -0
- data/lib/us_core_test_kit/generated/patient/patient_family_gender_search_test.rb +41 -0
- data/lib/us_core_test_kit/generated/patient/patient_gender_name_search_test.rb +39 -0
- data/lib/us_core_test_kit/generated/patient/patient_id_search_test.rb +53 -0
- data/lib/us_core_test_kit/generated/patient/patient_identifier_search_test.rb +40 -0
- data/lib/us_core_test_kit/generated/patient/patient_must_support_test.rb +57 -0
- data/lib/us_core_test_kit/generated/patient/patient_name_search_test.rb +39 -0
- data/lib/us_core_test_kit/generated/patient/patient_provenance_revinclude_search_test.rb +49 -0
- data/lib/us_core_test_kit/generated/patient/patient_read_test.rb +24 -0
- data/lib/us_core_test_kit/generated/patient/patient_reference_resolution_test.rb +28 -0
- data/lib/us_core_test_kit/generated/patient/patient_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/patient_group.rb +99 -0
- data/lib/us_core_test_kit/generated/pediatric_bmi_for_age/pediatric_bmi_for_age_must_support_test.rb +49 -0
- data/lib/us_core_test_kit/generated/pediatric_bmi_for_age/pediatric_bmi_for_age_patient_category_date_search_test.rb +46 -0
- data/lib/us_core_test_kit/generated/pediatric_bmi_for_age/pediatric_bmi_for_age_patient_category_search_test.rb +45 -0
- data/lib/us_core_test_kit/generated/pediatric_bmi_for_age/pediatric_bmi_for_age_patient_category_status_search_test.rb +47 -0
- data/lib/us_core_test_kit/generated/pediatric_bmi_for_age/pediatric_bmi_for_age_patient_code_date_search_test.rb +48 -0
- data/lib/us_core_test_kit/generated/pediatric_bmi_for_age/pediatric_bmi_for_age_patient_code_search_test.rb +62 -0
- data/lib/us_core_test_kit/generated/pediatric_bmi_for_age/pediatric_bmi_for_age_provenance_revinclude_search_test.rb +51 -0
- data/lib/us_core_test_kit/generated/pediatric_bmi_for_age/pediatric_bmi_for_age_read_test.rb +24 -0
- data/lib/us_core_test_kit/generated/pediatric_bmi_for_age/pediatric_bmi_for_age_reference_resolution_test.rb +28 -0
- data/lib/us_core_test_kit/generated/pediatric_bmi_for_age/pediatric_bmi_for_age_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/pediatric_bmi_for_age_group.rb +93 -0
- data/lib/us_core_test_kit/generated/pediatric_weight_for_height/pediatric_weight_for_height_must_support_test.rb +49 -0
- data/lib/us_core_test_kit/generated/pediatric_weight_for_height/pediatric_weight_for_height_patient_category_date_search_test.rb +46 -0
- data/lib/us_core_test_kit/generated/pediatric_weight_for_height/pediatric_weight_for_height_patient_category_search_test.rb +45 -0
- data/lib/us_core_test_kit/generated/pediatric_weight_for_height/pediatric_weight_for_height_patient_category_status_search_test.rb +47 -0
- data/lib/us_core_test_kit/generated/pediatric_weight_for_height/pediatric_weight_for_height_patient_code_date_search_test.rb +48 -0
- data/lib/us_core_test_kit/generated/pediatric_weight_for_height/pediatric_weight_for_height_patient_code_search_test.rb +62 -0
- data/lib/us_core_test_kit/generated/pediatric_weight_for_height/pediatric_weight_for_height_provenance_revinclude_search_test.rb +51 -0
- data/lib/us_core_test_kit/generated/pediatric_weight_for_height/pediatric_weight_for_height_read_test.rb +24 -0
- data/lib/us_core_test_kit/generated/pediatric_weight_for_height/pediatric_weight_for_height_reference_resolution_test.rb +28 -0
- data/lib/us_core_test_kit/generated/pediatric_weight_for_height/pediatric_weight_for_height_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/pediatric_weight_for_height_group.rb +93 -0
- data/lib/us_core_test_kit/generated/practitioner/practitioner_identifier_search_test.rb +40 -0
- data/lib/us_core_test_kit/generated/practitioner/practitioner_must_support_test.rb +40 -0
- data/lib/us_core_test_kit/generated/practitioner/practitioner_name_search_test.rb +49 -0
- data/lib/us_core_test_kit/generated/practitioner/practitioner_read_test.rb +24 -0
- data/lib/us_core_test_kit/generated/practitioner/practitioner_reference_resolution_test.rb +28 -0
- data/lib/us_core_test_kit/generated/practitioner/practitioner_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/practitioner_group.rb +84 -0
- data/lib/us_core_test_kit/generated/procedure/procedure_must_support_test.rb +38 -0
- data/lib/us_core_test_kit/generated/procedure/procedure_patient_code_date_search_test.rb +48 -0
- data/lib/us_core_test_kit/generated/procedure/procedure_patient_date_search_test.rb +45 -0
- data/lib/us_core_test_kit/generated/procedure/procedure_patient_search_test.rb +60 -0
- data/lib/us_core_test_kit/generated/procedure/procedure_patient_status_search_test.rb +46 -0
- data/lib/us_core_test_kit/generated/procedure/procedure_provenance_revinclude_search_test.rb +50 -0
- data/lib/us_core_test_kit/generated/procedure/procedure_read_test.rb +24 -0
- data/lib/us_core_test_kit/generated/procedure/procedure_reference_resolution_test.rb +28 -0
- data/lib/us_core_test_kit/generated/procedure/procedure_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/procedure_group.rb +90 -0
- data/lib/us_core_test_kit/generated/provenance/provenance_must_support_test.rb +44 -0
- data/lib/us_core_test_kit/generated/provenance/provenance_read_test.rb +24 -0
- data/lib/us_core_test_kit/generated/provenance/provenance_reference_resolution_test.rb +28 -0
- data/lib/us_core_test_kit/generated/provenance/provenance_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/provenance_group.rb +56 -0
- data/lib/us_core_test_kit/generated/pulse_oximetry/pulse_oximetry_must_support_test.rb +65 -0
- data/lib/us_core_test_kit/generated/pulse_oximetry/pulse_oximetry_patient_category_date_search_test.rb +46 -0
- data/lib/us_core_test_kit/generated/pulse_oximetry/pulse_oximetry_patient_category_search_test.rb +45 -0
- data/lib/us_core_test_kit/generated/pulse_oximetry/pulse_oximetry_patient_category_status_search_test.rb +47 -0
- data/lib/us_core_test_kit/generated/pulse_oximetry/pulse_oximetry_patient_code_date_search_test.rb +48 -0
- data/lib/us_core_test_kit/generated/pulse_oximetry/pulse_oximetry_patient_code_search_test.rb +62 -0
- data/lib/us_core_test_kit/generated/pulse_oximetry/pulse_oximetry_provenance_revinclude_search_test.rb +51 -0
- data/lib/us_core_test_kit/generated/pulse_oximetry/pulse_oximetry_read_test.rb +24 -0
- data/lib/us_core_test_kit/generated/pulse_oximetry/pulse_oximetry_reference_resolution_test.rb +28 -0
- data/lib/us_core_test_kit/generated/pulse_oximetry/pulse_oximetry_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/pulse_oximetry_group.rb +93 -0
- data/lib/us_core_test_kit/generated/resource_list.rb +26 -0
- data/lib/us_core_test_kit/generated/resprate/resprate_must_support_test.rb +49 -0
- data/lib/us_core_test_kit/generated/resprate/resprate_patient_category_date_search_test.rb +46 -0
- data/lib/us_core_test_kit/generated/resprate/resprate_patient_category_search_test.rb +45 -0
- data/lib/us_core_test_kit/generated/resprate/resprate_patient_category_status_search_test.rb +47 -0
- data/lib/us_core_test_kit/generated/resprate/resprate_patient_code_date_search_test.rb +48 -0
- data/lib/us_core_test_kit/generated/resprate/resprate_patient_code_search_test.rb +62 -0
- data/lib/us_core_test_kit/generated/resprate/resprate_provenance_revinclude_search_test.rb +51 -0
- data/lib/us_core_test_kit/generated/resprate/resprate_read_test.rb +24 -0
- data/lib/us_core_test_kit/generated/resprate/resprate_reference_resolution_test.rb +28 -0
- data/lib/us_core_test_kit/generated/resprate/resprate_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/resprate_group.rb +93 -0
- data/lib/us_core_test_kit/generated/smokingstatus/smokingstatus_must_support_test.rb +39 -0
- data/lib/us_core_test_kit/generated/smokingstatus/smokingstatus_patient_category_date_search_test.rb +48 -0
- data/lib/us_core_test_kit/generated/smokingstatus/smokingstatus_patient_category_search_test.rb +47 -0
- data/lib/us_core_test_kit/generated/smokingstatus/smokingstatus_patient_category_status_search_test.rb +47 -0
- data/lib/us_core_test_kit/generated/smokingstatus/smokingstatus_patient_code_date_search_test.rb +48 -0
- data/lib/us_core_test_kit/generated/smokingstatus/smokingstatus_patient_code_search_test.rb +62 -0
- data/lib/us_core_test_kit/generated/smokingstatus/smokingstatus_provenance_revinclude_search_test.rb +51 -0
- data/lib/us_core_test_kit/generated/smokingstatus/smokingstatus_read_test.rb +24 -0
- data/lib/us_core_test_kit/generated/smokingstatus/smokingstatus_reference_resolution_test.rb +28 -0
- data/lib/us_core_test_kit/generated/smokingstatus/smokingstatus_validation_test.rb +34 -0
- data/lib/us_core_test_kit/generated/smokingstatus_group.rb +93 -0
- data/lib/us_core_test_kit/generated/us_core_test_suite.rb +110 -0
- data/lib/us_core_test_kit/generator/group_generator.rb +171 -0
- data/lib/us_core_test_kit/generator/group_metadata.rb +98 -0
- data/lib/us_core_test_kit/generator/group_metadata_extractor.rb +281 -0
- data/lib/us_core_test_kit/generator/ig_loader.rb +63 -0
- data/lib/us_core_test_kit/generator/ig_metadata.rb +49 -0
- data/lib/us_core_test_kit/generator/ig_metadata_extractor.rb +56 -0
- data/lib/us_core_test_kit/generator/ig_resources.rb +48 -0
- data/lib/us_core_test_kit/generator/must_support_metadata_extractor.rb +221 -0
- data/lib/us_core_test_kit/generator/must_support_test_generator.rb +86 -0
- data/lib/us_core_test_kit/generator/naming.rb +58 -0
- data/lib/us_core_test_kit/generator/provenance_revinclude_search_test_generator.rb +186 -0
- data/lib/us_core_test_kit/generator/read_test_generator.rb +89 -0
- data/lib/us_core_test_kit/generator/reference_resolution_test_generator.rb +72 -0
- data/lib/us_core_test_kit/generator/resource_list_generator.rb +46 -0
- data/lib/us_core_test_kit/generator/search_definition_metadata_extractor.rb +181 -0
- data/lib/us_core_test_kit/generator/search_metadata_extractor.rb +74 -0
- data/lib/us_core_test_kit/generator/search_test_generator.rb +280 -0
- data/lib/us_core_test_kit/generator/special_cases.rb +17 -0
- data/lib/us_core_test_kit/generator/suite_generator.rb +67 -0
- data/lib/us_core_test_kit/generator/terminology_binding_metadata_extractor.rb +105 -0
- data/lib/us_core_test_kit/generator/validation_test_generator.rb +124 -0
- data/lib/us_core_test_kit/generator.rb +86 -0
- data/lib/us_core_test_kit/igs/StructureDefinition-bodyheight.json +3772 -0
- data/lib/us_core_test_kit/igs/StructureDefinition-bodytemp.json +3772 -0
- data/lib/us_core_test_kit/igs/StructureDefinition-bodyweight.json +3772 -0
- data/lib/us_core_test_kit/igs/StructureDefinition-bp.json +6034 -0
- data/lib/us_core_test_kit/igs/StructureDefinition-heartrate.json +3756 -0
- data/lib/us_core_test_kit/igs/StructureDefinition-resprate.json +3756 -0
- data/lib/us_core_test_kit/igs/package.tgz +0 -0
- data/lib/us_core_test_kit/must_support_test.rb +146 -0
- data/lib/us_core_test_kit/read_test.rb +62 -0
- data/lib/us_core_test_kit/reference_resolution_test.rb +111 -0
- data/lib/us_core_test_kit/request_logger.rb +46 -0
- data/lib/us_core_test_kit/search_test.rb +686 -0
- data/lib/us_core_test_kit/search_test_properties.rb +56 -0
- data/lib/us_core_test_kit/validation_test.rb +48 -0
- data/lib/us_core_test_kit/version.rb +3 -0
- data/lib/us_core_test_kit.rb +2 -0
- metadata +477 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
module USCoreTestKit
|
|
2
|
+
class DataAbsentReasonGroup < Inferno::TestGroup
|
|
3
|
+
id :us_core_311_data_absent_reason
|
|
4
|
+
title 'Missing Data Tests'
|
|
5
|
+
short_description 'Verify that the server is capable of representing missing data.'
|
|
6
|
+
|
|
7
|
+
description %(
|
|
8
|
+
The [US Core Missing Data
|
|
9
|
+
Guidance](http://hl7.org/fhir/us/core/STU3.1.1/general-guidance.html#missing-data)
|
|
10
|
+
gives instructions on how to represent various types of missing data.
|
|
11
|
+
|
|
12
|
+
In the previous resource tests, each resource returned from the server was
|
|
13
|
+
checked for the presence of missing data. These tests will pass if the
|
|
14
|
+
specified method of representing missing data was observed in the earlier
|
|
15
|
+
tests.
|
|
16
|
+
)
|
|
17
|
+
run_as_group
|
|
18
|
+
|
|
19
|
+
test do
|
|
20
|
+
title 'Server represents missing data with the DataAbsentReason Extension'
|
|
21
|
+
id :us_core_311_data_absent_reason_extension
|
|
22
|
+
description %(
|
|
23
|
+
For non-coded data elements, servers SHALL use the DataAbsentReason
|
|
24
|
+
Extension to represent missing data in a required field
|
|
25
|
+
)
|
|
26
|
+
input :dar_extension_found,
|
|
27
|
+
title: 'Data Absent Reason Extension Found',
|
|
28
|
+
locked: true,
|
|
29
|
+
optional: true,
|
|
30
|
+
default: 'false'
|
|
31
|
+
|
|
32
|
+
run do
|
|
33
|
+
assert dar_extension_found == 'true',
|
|
34
|
+
'No resources using the DataAbsentReason Extension have been found'
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
test do
|
|
39
|
+
title 'Server represents missing data with the DataAbsentReason CodeSystem'
|
|
40
|
+
id :us_core_311_data_absent_reason_code_system
|
|
41
|
+
description %(
|
|
42
|
+
For coded data elements with example, preferred, or extensible binding
|
|
43
|
+
strengths to ValueSets which do not include an appropriate "unknown"
|
|
44
|
+
code, servers SHALL use the "unknown" code from the DataAbsentReason
|
|
45
|
+
CodeSystem.
|
|
46
|
+
)
|
|
47
|
+
input :dar_code_found,
|
|
48
|
+
title: 'Data Absent Reason Extension Found',
|
|
49
|
+
locked: true,
|
|
50
|
+
optional: true,
|
|
51
|
+
default: 'false'
|
|
52
|
+
|
|
53
|
+
run do
|
|
54
|
+
assert dar_code_found == 'true',
|
|
55
|
+
'No resources using the DataAbsentReason CodeSystem have been found'
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module USCoreTestKit
|
|
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)
|
|
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]
|
|
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]
|
|
50
|
+
when 'ge'
|
|
51
|
+
fhir_date_comparer(search_range, target_range, 'gt') || fhir_date_comparer(search_range, target_range, 'eq')
|
|
52
|
+
when 'le'
|
|
53
|
+
fhir_date_comparer(search_range, target_range, 'lt') || 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_range = get_fhir_datetime_range(search_value)
|
|
85
|
+
target_range = get_fhir_datetime_range(target_value)
|
|
86
|
+
fhir_date_comparer(search_range, target_range, comparator)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def validate_period_search(search_value, target_value)
|
|
90
|
+
comparator = search_value[0..1]
|
|
91
|
+
if ['eq', 'ge', 'gt', 'le', 'lt', 'ne', 'sa', 'eb', 'ap'].include? comparator
|
|
92
|
+
search_value = search_value[2..-1]
|
|
93
|
+
else
|
|
94
|
+
comparator = 'eq'
|
|
95
|
+
end
|
|
96
|
+
search_range = get_fhir_datetime_range(search_value)
|
|
97
|
+
target_range = get_fhir_period_range(target_value)
|
|
98
|
+
fhir_date_comparer(search_range, target_range, comparator)
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
require 'json'
|
|
2
|
+
|
|
3
|
+
# Extension to FHIR::Model. Prepending this into FHIR::Model (done below)
|
|
4
|
+
# allows us to call super() on initialize when we overriding it,
|
|
5
|
+
# while also defining new methods and attributes
|
|
6
|
+
module InfernoFHIRModelExtensions
|
|
7
|
+
attr_accessor :source_hash, :source_text
|
|
8
|
+
|
|
9
|
+
def initialize(hash = {})
|
|
10
|
+
super(hash)
|
|
11
|
+
@source_hash = hash
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def source_contents
|
|
15
|
+
@source_text || JSON.generate(@source_hash)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
module FHIR
|
|
20
|
+
class Model
|
|
21
|
+
prepend ::InfernoFHIRModelExtensions
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Extension to FHIR::Json. Prepending this into FHIR::Json (done below)
|
|
26
|
+
# allows us to call super() on from_json
|
|
27
|
+
module InfernoJson
|
|
28
|
+
def from_json(json)
|
|
29
|
+
resource = super(json)
|
|
30
|
+
resource.source_text = json
|
|
31
|
+
resource
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Extension to FHIR::Xml. Prepending this into FHIR::Xml (done below)
|
|
36
|
+
# allows us to call super() on from_xml
|
|
37
|
+
module InfernoXml
|
|
38
|
+
def from_xml(xml)
|
|
39
|
+
resource = super(xml)
|
|
40
|
+
resource.source_text = xml
|
|
41
|
+
resource
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
module FHIR
|
|
46
|
+
module Json
|
|
47
|
+
class << self
|
|
48
|
+
prepend InfernoJson
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
module FHIR
|
|
54
|
+
module Xml
|
|
55
|
+
class << self
|
|
56
|
+
prepend InfernoXml
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
module USCoreTestKit
|
|
2
|
+
module FHIRResourceNavigation
|
|
3
|
+
def resolve_path(elements, path)
|
|
4
|
+
elements = Array.wrap(elements)
|
|
5
|
+
return elements if path.blank?
|
|
6
|
+
|
|
7
|
+
paths = path.split('.')
|
|
8
|
+
segment = paths.first
|
|
9
|
+
remaining_path = paths.drop(1).join('.')
|
|
10
|
+
|
|
11
|
+
elements.flat_map do |element|
|
|
12
|
+
child = get_next_value(element, segment)
|
|
13
|
+
resolve_path(child, remaining_path)
|
|
14
|
+
end.compact
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def find_a_value_at(element, path)
|
|
18
|
+
return nil if element.nil?
|
|
19
|
+
|
|
20
|
+
elements = Array.wrap(element)
|
|
21
|
+
|
|
22
|
+
if path.empty?
|
|
23
|
+
return elements.find { |el| yield(el) } if block_given?
|
|
24
|
+
|
|
25
|
+
return elements.first
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
path_segments = path.split('.')
|
|
29
|
+
segment = path_segments.shift.delete_suffix('[x]').to_sym
|
|
30
|
+
|
|
31
|
+
no_elements_present =
|
|
32
|
+
elements.none? do |element|
|
|
33
|
+
child = get_next_value(element, segment)
|
|
34
|
+
|
|
35
|
+
child.present? || child == false
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
return nil if no_elements_present
|
|
39
|
+
|
|
40
|
+
remaining_path = path_segments.join('.')
|
|
41
|
+
|
|
42
|
+
elements.each do |element|
|
|
43
|
+
child = get_next_value(element, segment)
|
|
44
|
+
element_found =
|
|
45
|
+
if block_given?
|
|
46
|
+
find_a_value_at(child, remaining_path) { |value_found| yield(value_found) }
|
|
47
|
+
else
|
|
48
|
+
find_a_value_at(child, remaining_path)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
return element_found if element_found.present? || element_found == false
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
nil
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def get_next_value(element, property)
|
|
58
|
+
element.send(property)
|
|
59
|
+
rescue NoMethodError
|
|
60
|
+
nil
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
data/lib/us_core_test_kit/generated/allergy_intolerance/allergy_intolerance_must_support_test.rb
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require_relative '../../must_support_test'
|
|
2
|
+
|
|
3
|
+
module USCoreTestKit
|
|
4
|
+
class AllergyIntoleranceMustSupportTest < Inferno::Test
|
|
5
|
+
include USCoreTestKit::MustSupportTest
|
|
6
|
+
|
|
7
|
+
title 'All must support elements are provided in the AllergyIntolerance resources returned'
|
|
8
|
+
description %(
|
|
9
|
+
US Core Responders SHALL be capable of populating all data elements as
|
|
10
|
+
part of the query results as specified by the US Core Server Capability
|
|
11
|
+
Statement. This test will look through the AllergyIntolerance resources
|
|
12
|
+
found previously for the following must support elements:
|
|
13
|
+
|
|
14
|
+
* AllergyIntolerance.clinicalStatus
|
|
15
|
+
* AllergyIntolerance.code
|
|
16
|
+
* AllergyIntolerance.patient
|
|
17
|
+
* AllergyIntolerance.reaction
|
|
18
|
+
* AllergyIntolerance.reaction.manifestation
|
|
19
|
+
* AllergyIntolerance.verificationStatus
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
id :us_core_311_allergy_intolerance_must_support_test
|
|
23
|
+
|
|
24
|
+
def resource_type
|
|
25
|
+
'AllergyIntolerance'
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.metadata
|
|
29
|
+
@metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml')))
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def scratch_resources
|
|
33
|
+
scratch[:allergy_intolerance_resources] ||= {}
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
run do
|
|
37
|
+
perform_must_support_test(all_scratch_resources)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
require_relative '../../search_test'
|
|
2
|
+
require_relative '../../generator/group_metadata'
|
|
3
|
+
|
|
4
|
+
module USCoreTestKit
|
|
5
|
+
class AllergyIntolerancePatientClinicalStatusSearchTest < Inferno::Test
|
|
6
|
+
include USCoreTestKit::SearchTest
|
|
7
|
+
|
|
8
|
+
title 'Server returns valid results for AllergyIntolerance search by patient + clinical-status'
|
|
9
|
+
description %(
|
|
10
|
+
A server SHOULD support searching by
|
|
11
|
+
patient + clinical-status on the AllergyIntolerance resource. This test
|
|
12
|
+
will pass if resources are returned and match the search criteria. If
|
|
13
|
+
none are returned, the test is skipped.
|
|
14
|
+
|
|
15
|
+
[US Core Server CapabilityStatement](http://hl7.org/fhir/us/core/STU3.1.1/CapabilityStatement-us-core-server.html)
|
|
16
|
+
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
id :us_core_311_allergy_intolerance_patient_clinical_status_search_test
|
|
20
|
+
optional
|
|
21
|
+
|
|
22
|
+
input :patient_ids,
|
|
23
|
+
title: 'Patient IDs',
|
|
24
|
+
description: 'Comma separated list of patient IDs that in sum contain all MUST SUPPORT elements'
|
|
25
|
+
|
|
26
|
+
def self.properties
|
|
27
|
+
@properties ||= SearchTestProperties.new(
|
|
28
|
+
resource_type: 'AllergyIntolerance',
|
|
29
|
+
search_param_names: ['patient', 'clinical-status'],
|
|
30
|
+
token_search_params: ['clinical-status']
|
|
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 scratch_resources
|
|
39
|
+
scratch[:allergy_intolerance_resources] ||= {}
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
run do
|
|
43
|
+
run_search_test
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
data/lib/us_core_test_kit/generated/allergy_intolerance/allergy_intolerance_patient_search_test.rb
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
require_relative '../../search_test'
|
|
2
|
+
require_relative '../../generator/group_metadata'
|
|
3
|
+
|
|
4
|
+
module USCoreTestKit
|
|
5
|
+
class AllergyIntolerancePatientSearchTest < Inferno::Test
|
|
6
|
+
include USCoreTestKit::SearchTest
|
|
7
|
+
|
|
8
|
+
title 'Server returns valid results for AllergyIntolerance search by patient'
|
|
9
|
+
description %(
|
|
10
|
+
A server SHALL support searching by
|
|
11
|
+
patient on the AllergyIntolerance resource. This test
|
|
12
|
+
will pass if resources are returned and match the search criteria. If
|
|
13
|
+
none are returned, the test is skipped.
|
|
14
|
+
|
|
15
|
+
This test verifies that the server supports searching by reference using
|
|
16
|
+
the form `patient=[id]` as well as `patient=Patient/[id]`. The two
|
|
17
|
+
different forms are expected to return the same number of results. US
|
|
18
|
+
Core requires that both forms are supported by US Core responders.
|
|
19
|
+
|
|
20
|
+
Because this is the first search of the sequence, resources in the
|
|
21
|
+
response will be used for subsequent tests.
|
|
22
|
+
|
|
23
|
+
Additionally, this test will check that GET and POST search methods
|
|
24
|
+
return the same number of results. Search by POST is required by the
|
|
25
|
+
FHIR R4 specification, and these tests interpret search by GET as a
|
|
26
|
+
requirement of US Core v3.1.1.
|
|
27
|
+
|
|
28
|
+
[US Core Server CapabilityStatement](http://hl7.org/fhir/us/core/STU3.1.1/CapabilityStatement-us-core-server.html)
|
|
29
|
+
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
id :us_core_311_allergy_intolerance_patient_search_test
|
|
33
|
+
input :patient_ids,
|
|
34
|
+
title: 'Patient IDs',
|
|
35
|
+
description: 'Comma separated list of patient IDs that in sum contain all MUST SUPPORT elements'
|
|
36
|
+
|
|
37
|
+
def self.properties
|
|
38
|
+
@properties ||= SearchTestProperties.new(
|
|
39
|
+
first_search: true,
|
|
40
|
+
resource_type: 'AllergyIntolerance',
|
|
41
|
+
search_param_names: ['patient'],
|
|
42
|
+
possible_status_search: true,
|
|
43
|
+
test_reference_variants: true,
|
|
44
|
+
test_post_search: true
|
|
45
|
+
)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def self.metadata
|
|
49
|
+
@metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml')))
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def scratch_resources
|
|
53
|
+
scratch[:allergy_intolerance_resources] ||= {}
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
run do
|
|
57
|
+
run_search_test
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require_relative '../../search_test'
|
|
2
|
+
require_relative '../../generator/group_metadata'
|
|
3
|
+
|
|
4
|
+
module USCoreTestKit
|
|
5
|
+
class AllergyIntoleranceProvenanceRevincludeSearchTest < Inferno::Test
|
|
6
|
+
include USCoreTestKit::SearchTest
|
|
7
|
+
|
|
8
|
+
title 'Server returns Provenance resources from AllergyIntolerance search by patient + revInclude:Provenance:target'
|
|
9
|
+
description %(
|
|
10
|
+
A server SHALL be capable of supporting _revIncludes:Provenance:target.
|
|
11
|
+
|
|
12
|
+
This test will perform a search by patient + revInclude:Provenance:target and
|
|
13
|
+
will pass if a Provenance resource is found in the response.
|
|
14
|
+
%)
|
|
15
|
+
|
|
16
|
+
id :us_core_311_allergy_intolerance_provenance_revinclude_search_test
|
|
17
|
+
|
|
18
|
+
input :patient_ids,
|
|
19
|
+
title: 'Patient IDs',
|
|
20
|
+
description: 'Comma separated list of patient IDs that in sum contain all MUST SUPPORT elements'
|
|
21
|
+
|
|
22
|
+
def properties
|
|
23
|
+
@properties ||= SearchTestProperties.new(
|
|
24
|
+
resource_type: 'AllergyIntolerance',
|
|
25
|
+
search_param_names: ['patient']
|
|
26
|
+
)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def self.metadata
|
|
30
|
+
@metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml')))
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def self.provenance_metadata
|
|
34
|
+
@provenance_metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, '..', 'provenance', 'metadata.yml')))
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def scratch_resources
|
|
38
|
+
scratch[:allergy_intolerance_resources] ||= {}
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def scratch_provenance_resources
|
|
42
|
+
scratch[:provenance_resources] ||= {}
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
run do
|
|
46
|
+
run_provenance_revinclude_search_test
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require_relative '../../read_test'
|
|
2
|
+
|
|
3
|
+
module USCoreTestKit
|
|
4
|
+
class AllergyIntoleranceReadTest < Inferno::Test
|
|
5
|
+
include USCoreTestKit::ReadTest
|
|
6
|
+
|
|
7
|
+
title 'Server returns correct AllergyIntolerance resource from AllergyIntolerance read interaction'
|
|
8
|
+
description 'A server SHALL support the AllergyIntolerance read interaction.'
|
|
9
|
+
|
|
10
|
+
id :us_core_311_allergy_intolerance_read_test
|
|
11
|
+
|
|
12
|
+
def resource_type
|
|
13
|
+
'AllergyIntolerance'
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def scratch_resources
|
|
17
|
+
scratch[:allergy_intolerance_resources] ||= {}
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
run do
|
|
21
|
+
perform_read_test(all_scratch_resources)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require_relative '../../reference_resolution_test'
|
|
2
|
+
|
|
3
|
+
module USCoreTestKit
|
|
4
|
+
class AllergyIntoleranceReferenceResolutionTest < Inferno::Test
|
|
5
|
+
include USCoreTestKit::ReferenceResolutionTest
|
|
6
|
+
|
|
7
|
+
title 'Every reference within AllergyIntolerance resources can be read'
|
|
8
|
+
description %(
|
|
9
|
+
This test will attempt to read the first 50 references found in the
|
|
10
|
+
resources from the first search. The test will fail if Inferno fails to
|
|
11
|
+
read any of those references.
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
id :us_core_311_allergy_intolerance_reference_resolution_test
|
|
15
|
+
|
|
16
|
+
def resource_type
|
|
17
|
+
'AllergyIntolerance'
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def scratch_resources
|
|
21
|
+
scratch[:allergy_intolerance_resources] ||= {}
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
run do
|
|
25
|
+
perform_reference_resolution_test(scratch_resources[:all])
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
data/lib/us_core_test_kit/generated/allergy_intolerance/allergy_intolerance_validation_test.rb
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require_relative '../../validation_test'
|
|
2
|
+
|
|
3
|
+
module USCoreTestKit
|
|
4
|
+
class AllergyIntoleranceValidationTest < Inferno::Test
|
|
5
|
+
include USCoreTestKit::ValidationTest
|
|
6
|
+
|
|
7
|
+
id :us_core_311_allergy_intolerance_validation_test
|
|
8
|
+
title 'AllergyIntolerance resources returned during previous tests conform to the US Core AllergyIntolerance Profile'
|
|
9
|
+
description %(
|
|
10
|
+
This test verifies resources returned from the first search conform to
|
|
11
|
+
the [US Core AllergyIntolerance Profile](http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance).
|
|
12
|
+
|
|
13
|
+
It verifies the presence of mandatory elements and that elements with
|
|
14
|
+
required bindings contain appropriate values. CodeableConcept element
|
|
15
|
+
bindings will fail if none of their codings have a code/system belonging
|
|
16
|
+
to the bound ValueSet. Quantity, Coding, and code element bindings will
|
|
17
|
+
fail if their code/system are not found in the valueset.
|
|
18
|
+
|
|
19
|
+
)
|
|
20
|
+
output :dar_code_found, :dar_extension_found
|
|
21
|
+
|
|
22
|
+
def resource_type
|
|
23
|
+
'AllergyIntolerance'
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def scratch_resources
|
|
27
|
+
scratch[:allergy_intolerance_resources] ||= {}
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
run do
|
|
31
|
+
perform_validation_test(scratch_resources[:all] || [], 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance')
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
require_relative 'allergy_intolerance/allergy_intolerance_patient_search_test'
|
|
2
|
+
require_relative 'allergy_intolerance/allergy_intolerance_patient_clinical_status_search_test'
|
|
3
|
+
require_relative 'allergy_intolerance/allergy_intolerance_read_test'
|
|
4
|
+
require_relative 'allergy_intolerance/allergy_intolerance_provenance_revinclude_search_test'
|
|
5
|
+
require_relative 'allergy_intolerance/allergy_intolerance_validation_test'
|
|
6
|
+
require_relative 'allergy_intolerance/allergy_intolerance_must_support_test'
|
|
7
|
+
require_relative 'allergy_intolerance/allergy_intolerance_reference_resolution_test'
|
|
8
|
+
|
|
9
|
+
module USCoreTestKit
|
|
10
|
+
class AllergyIntoleranceGroup < Inferno::TestGroup
|
|
11
|
+
title 'AllergyIntolerance Tests'
|
|
12
|
+
short_description 'Verify support for the server capabilities required by the US Core AllergyIntolerance Profile.'
|
|
13
|
+
description %(
|
|
14
|
+
# Background
|
|
15
|
+
|
|
16
|
+
The US Core AllergyIntolerance sequence verifies that the system under test is
|
|
17
|
+
able to provide correct responses for AllergyIntolerance queries. These queries
|
|
18
|
+
must contain resources conforming to the US Core AllergyIntolerance Profile as
|
|
19
|
+
specified in the US Core v3.1.1 Implementation Guide.
|
|
20
|
+
|
|
21
|
+
# Testing Methodology
|
|
22
|
+
## Searching
|
|
23
|
+
This test sequence will first perform each required search associated
|
|
24
|
+
with this resource. This sequence will perform searches with the
|
|
25
|
+
following parameters:
|
|
26
|
+
|
|
27
|
+
* patient
|
|
28
|
+
|
|
29
|
+
### Search Parameters
|
|
30
|
+
The first search uses the selected patient(s) from the prior launch
|
|
31
|
+
sequence. Any subsequent searches will look for its parameter values
|
|
32
|
+
from the results of the first search. For example, the `identifier`
|
|
33
|
+
search in the patient sequence is performed by looking for an existing
|
|
34
|
+
`Patient.identifier` from any of the resources returned in the `_id`
|
|
35
|
+
search. If a value cannot be found this way, the search is skipped.
|
|
36
|
+
|
|
37
|
+
### Search Validation
|
|
38
|
+
Inferno will retrieve up to the first 20 bundle pages of the reply for
|
|
39
|
+
AllergyIntolerance resources and save them for subsequent tests. Each of
|
|
40
|
+
these resources is then checked to see if it matches the searched
|
|
41
|
+
parameters in accordance with [FHIR search
|
|
42
|
+
guidelines](https://www.hl7.org/fhir/search.html). The test will fail,
|
|
43
|
+
for example, if a Patient search for `gender=male` returns a `female`
|
|
44
|
+
patient.
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
## Must Support
|
|
48
|
+
Each profile contains elements marked as "must support". This test
|
|
49
|
+
sequence expects to see each of these elements at least once. If at
|
|
50
|
+
least one cannot be found, the test will fail. The test will look
|
|
51
|
+
through the AllergyIntolerance resources found in the first test for these
|
|
52
|
+
elements.
|
|
53
|
+
|
|
54
|
+
## Profile Validation
|
|
55
|
+
Each resource returned from the first search is expected to conform to
|
|
56
|
+
the [US Core AllergyIntolerance Profile](http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance). Each element is checked against
|
|
57
|
+
teminology binding and cardinality requirements.
|
|
58
|
+
|
|
59
|
+
Elements with a required binding are validated against their bound
|
|
60
|
+
ValueSet. If the code/system in the element is not part of the ValueSet,
|
|
61
|
+
then the test will fail.
|
|
62
|
+
|
|
63
|
+
## Reference Validation
|
|
64
|
+
Each reference within the resources found from the previous tests must
|
|
65
|
+
resolve. The test will attempt to read each reference found and will
|
|
66
|
+
fail if any attempted read fails.
|
|
67
|
+
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
id :us_core_311_allergy_intolerance
|
|
71
|
+
run_as_group
|
|
72
|
+
|
|
73
|
+
def self.metadata
|
|
74
|
+
@metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'allergy_intolerance', 'metadata.yml')))
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
test from: :us_core_311_allergy_intolerance_patient_search_test
|
|
78
|
+
test from: :us_core_311_allergy_intolerance_patient_clinical_status_search_test
|
|
79
|
+
test from: :us_core_311_allergy_intolerance_read_test
|
|
80
|
+
test from: :us_core_311_allergy_intolerance_provenance_revinclude_search_test
|
|
81
|
+
test from: :us_core_311_allergy_intolerance_validation_test
|
|
82
|
+
test from: :us_core_311_allergy_intolerance_must_support_test
|
|
83
|
+
test from: :us_core_311_allergy_intolerance_reference_resolution_test
|
|
84
|
+
end
|
|
85
|
+
end
|