Module: USQualityCoreTestKit::ReadTest
- Included in:
- USQualityCoreV050::AdverseEventReadTest, USQualityCoreV050::AllergyIntoleranceReadTest, USQualityCoreV050::CarePlanReadTest, USQualityCoreV050::CareTeamReadTest, USQualityCoreV050::ConditionEncounterDiagnosisReadTest, USQualityCoreV050::ConditionProblemsHealthConcernsReadTest, USQualityCoreV050::CoverageReadTest, USQualityCoreV050::DevicenotrequestedReadTest, USQualityCoreV050::DevicerequestReadTest, USQualityCoreV050::DiagnosticReportLabReadTest, USQualityCoreV050::DiagnosticReportNoteReadTest, USQualityCoreV050::DocumentReferenceReadTest, USQualityCoreV050::EncounterReadTest, USQualityCoreV050::FamilyMemberHistoryReadTest, USQualityCoreV050::GoalReadTest, USQualityCoreV050::HeadOccipitalFrontalCircumferencePercentileReadTest, USQualityCoreV050::ImmunizationReadTest, USQualityCoreV050::ImmunizationnotdoneReadTest, USQualityCoreV050::LocationReadTest, USQualityCoreV050::MedicationadministrationReadTest, USQualityCoreV050::MedicationadministrationnotdoneReadTest, USQualityCoreV050::MedicationdispenseReadTest, USQualityCoreV050::MedicationdispensedeclinedReadTest, USQualityCoreV050::MedicationnotrequestedReadTest, USQualityCoreV050::MedicationrequestReadTest, USQualityCoreV050::ObservationClinicalResultReadTest, USQualityCoreV050::ObservationLabReadTest, USQualityCoreV050::ObservationScreeningAssessmentReadTest, USQualityCoreV050::ObservationcancelledReadTest, USQualityCoreV050::OrganizationReadTest, USQualityCoreV050::PatientReadTest, USQualityCoreV050::PediatricBmiForAgeReadTest, USQualityCoreV050::PediatricWeightForHeightReadTest, USQualityCoreV050::PractitionerReadTest, USQualityCoreV050::PractitionerRoleReadTest, USQualityCoreV050::ProcedureReadTest, USQualityCoreV050::ProcedurenotdoneReadTest, USQualityCoreV050::ProvenanceReadTest, USQualityCoreV050::RelatedPersonReadTest, USQualityCoreV050::ServicenotrequestedReadTest, USQualityCoreV050::ServicerequestReadTest, USQualityCoreV050::SimpleObservationReadTest, USQualityCoreV050::SpecimenReadTest, USQualityCoreV050::TaskReadTest, USQualityCoreV050::TaskrejectedReadTest, USQualityCoreV050::UsCoreBloodPressureReadTest, USQualityCoreV050::UsCoreBmiReadTest, USQualityCoreV050::UsCoreBodyHeightReadTest, USQualityCoreV050::UsCoreBodyTemperatureReadTest, USQualityCoreV050::UsCoreBodyWeightReadTest, USQualityCoreV050::UsCoreHeartRateReadTest, USQualityCoreV050::UsCoreObservationOccupationReadTest, USQualityCoreV050::UsCoreObservationPregnancyintentReadTest, USQualityCoreV050::UsCoreObservationPregnancystatusReadTest, USQualityCoreV050::UsCorePulseOximetryReadTest, USQualityCoreV050::UsCoreRespiratoryRateReadTest, USQualityCoreV050::UsCoreSmokingstatusReadTest
- Defined in:
- lib/us_quality_core_test_kit/read_test.rb
Instance Method Summary collapse
- #all_scratch_resources ⇒ Object
- #bad_resource_id_message(expected_id) ⇒ Object
- #no_resources_skip_message ⇒ Object
- #perform_read_test(resources, _reply_handler = nil, delayed_reference: false) ⇒ Object
- #read_and_validate(resource_to_read) ⇒ Object
- #readable_references(resources) ⇒ Object
- #readable_resources(resources) ⇒ Object
- #referencing_resources(readable_resources) ⇒ Object
- #resource_class ⇒ Object
- #resource_id(resource) ⇒ Object
Instance Method Details
#all_scratch_resources ⇒ Object
5 6 7 |
# File 'lib/us_quality_core_test_kit/read_test.rb', line 5 def all_scratch_resources scratch_resources[:all] ||= [] end |
#bad_resource_id_message(expected_id) ⇒ Object
97 98 99 |
# File 'lib/us_quality_core_test_kit/read_test.rb', line 97 def (expected_id) "Expected resource to have id: `#{expected_id.inspect}`, but found `#{resource.id.inspect}`" end |
#no_resources_skip_message ⇒ Object
92 93 94 95 |
# File 'lib/us_quality_core_test_kit/read_test.rb', line 92 def "No #{resource_type} resources appear to be available. " \ 'Please use patients with more information.' end |
#perform_read_test(resources, _reply_handler = nil, delayed_reference: false) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/us_quality_core_test_kit/read_test.rb', line 9 def perform_read_test(resources, _reply_handler = nil, delayed_reference: false) skip_if resources.blank?, resources_to_read = if delayed_reference readable_references(resources) else readable_resources(resources) end assert resources_to_read.present?, "No #{resource_type} id found." if config.[:read_all_resources] if delayed_reference all_referencing_resources = referencing_resources(resources_to_read) info %( The #{resource_type} references used for this test were pulled from the following resources: #{all_referencing_resources} ) resources_to_read.map! { |resource| resource[:reference] } end resources_to_read.each do |resource| read_and_validate(resource) end else first_resource = resources_to_read.first if delayed_reference.present? info %( The #{resource_type} reference used for this test was pulled from resource #{first_resource[:referencing_resource]} ) first_resource = first_resource[:reference] end read_and_validate(first_resource) end end |
#read_and_validate(resource_to_read) ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/us_quality_core_test_kit/read_test.rb', line 74 def read_and_validate(resource_to_read) id = resource_id(resource_to_read) fhir_read resource_type, id assert_response_status(200) assert_resource_type(resource_type) assert resource.id.present? && resource.id == id, (id) return unless resource_to_read.is_a? FHIR::Reference all_scratch_resources << resource end |
#readable_references(resources) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/us_quality_core_test_kit/read_test.rb', line 53 def readable_references(resources) references = resources.filter_map do |resource| next unless resource[:reference].present? && resource[:reference].is_a?(FHIR::Reference) reference_id = resource[:reference].reference&.split('/')&.last next unless reference_id&.present? resource end references.uniq { |resource| resource[:reference].reference.split('/').last } end |
#readable_resources(resources) ⇒ Object
66 67 68 69 70 71 72 |
# File 'lib/us_quality_core_test_kit/read_test.rb', line 66 def readable_resources(resources) resources .select { |resource| resource.is_a?(resource_class) || resource.is_a?(FHIR::Reference) } .select { |resource| (resource.is_a?(FHIR::Reference) ? resource.reference.split('/').last : resource.id).present? } .compact .uniq { |resource| resource.is_a?(FHIR::Reference) ? resource.reference.split('/').last : resource.id } end |
#referencing_resources(readable_resources) ⇒ Object
47 48 49 50 51 |
# File 'lib/us_quality_core_test_kit/read_test.rb', line 47 def referencing_resources(readable_resources) readable_resources .map { |resource| resource[:referencing_resource] } .join(', ') end |
#resource_class ⇒ Object
101 102 103 |
# File 'lib/us_quality_core_test_kit/read_test.rb', line 101 def resource_class FHIR.const_get(resource_type) end |
#resource_id(resource) ⇒ Object
88 89 90 |
# File 'lib/us_quality_core_test_kit/read_test.rb', line 88 def resource_id(resource) resource.is_a?(FHIR::Reference) ? resource.reference.split('/').last : resource.id end |