Module: USCoreTestKit::ReadTest

Included in:
USCoreV311::AllergyIntoleranceReadTest, USCoreV311::BodyheightReadTest, USCoreV311::BodytempReadTest, USCoreV311::BodyweightReadTest, USCoreV311::BpReadTest, USCoreV311::CarePlanReadTest, USCoreV311::CareTeamReadTest, USCoreV311::ConditionReadTest, USCoreV311::DeviceReadTest, USCoreV311::DiagnosticReportLabReadTest, USCoreV311::DiagnosticReportNoteReadTest, USCoreV311::DocumentReferenceReadTest, USCoreV311::EncounterReadTest, USCoreV311::GoalReadTest, USCoreV311::HeadCircumferenceReadTest, USCoreV311::HeartrateReadTest, USCoreV311::ImmunizationReadTest, USCoreV311::MedicationRequestReadTest, USCoreV311::ObservationLabReadTest, USCoreV311::OrganizationReadTest, USCoreV311::PatientReadTest, USCoreV311::PediatricBmiForAgeReadTest, USCoreV311::PediatricWeightForHeightReadTest, USCoreV311::PractitionerReadTest, USCoreV311::ProcedureReadTest, USCoreV311::ProvenanceReadTest, USCoreV311::PulseOximetryReadTest, USCoreV311::ResprateReadTest, USCoreV311::SmokingstatusReadTest, USCoreV400::AllergyIntoleranceReadTest, USCoreV400::BloodPressureReadTest, USCoreV400::BmiReadTest, USCoreV400::BodyHeightReadTest, USCoreV400::BodyTemperatureReadTest, USCoreV400::BodyWeightReadTest, USCoreV400::CarePlanReadTest, USCoreV400::CareTeamReadTest, USCoreV400::ConditionReadTest, USCoreV400::DeviceReadTest, USCoreV400::DiagnosticReportLabReadTest, USCoreV400::DiagnosticReportNoteReadTest, USCoreV400::DocumentReferenceReadTest, USCoreV400::EncounterReadTest, USCoreV400::GoalReadTest, USCoreV400::HeadCircumferencePercentileReadTest, USCoreV400::HeadCircumferenceReadTest, USCoreV400::HeartRateReadTest, USCoreV400::ImmunizationReadTest, USCoreV400::MedicationRequestReadTest, USCoreV400::ObservationLabReadTest, USCoreV400::OrganizationReadTest, USCoreV400::PatientReadTest, USCoreV400::PediatricBmiForAgeReadTest, USCoreV400::PediatricWeightForHeightReadTest, USCoreV400::PractitionerReadTest, USCoreV400::ProcedureReadTest, USCoreV400::ProvenanceReadTest, USCoreV400::PulseOximetryReadTest, USCoreV400::RespiratoryRateReadTest, USCoreV400::SmokingstatusReadTest, USCoreV501::AllergyIntoleranceReadTest, USCoreV501::BloodPressureReadTest, USCoreV501::BmiReadTest, USCoreV501::BodyHeightReadTest, USCoreV501::BodyTemperatureReadTest, USCoreV501::BodyWeightReadTest, USCoreV501::CarePlanReadTest, USCoreV501::CareTeamReadTest, USCoreV501::ConditionEncounterDiagnosisReadTest, USCoreV501::ConditionProblemsHealthConcernsReadTest, USCoreV501::DeviceReadTest, USCoreV501::DiagnosticReportLabReadTest, USCoreV501::DiagnosticReportNoteReadTest, USCoreV501::DocumentReferenceReadTest, USCoreV501::EncounterReadTest, USCoreV501::GoalReadTest, USCoreV501::HeadCircumferencePercentileReadTest, USCoreV501::HeadCircumferenceReadTest, USCoreV501::HeartRateReadTest, USCoreV501::ImmunizationReadTest, USCoreV501::MedicationRequestReadTest, USCoreV501::ObservationClinicalTestReadTest, USCoreV501::ObservationImagingReadTest, USCoreV501::ObservationLabReadTest, USCoreV501::ObservationSdohAssessmentReadTest, USCoreV501::ObservationSexualOrientationReadTest, USCoreV501::ObservationSocialHistoryReadTest, USCoreV501::OrganizationReadTest, USCoreV501::PatientReadTest, USCoreV501::PediatricBmiForAgeReadTest, USCoreV501::PediatricWeightForHeightReadTest, USCoreV501::PractitionerReadTest, USCoreV501::PractitionerRoleReadTest, USCoreV501::ProcedureReadTest, USCoreV501::ProvenanceReadTest, USCoreV501::PulseOximetryReadTest, USCoreV501::QuestionnaireResponseReadTest, USCoreV501::RelatedPersonReadTest, USCoreV501::RespiratoryRateReadTest, USCoreV501::ServiceRequestReadTest, USCoreV501::SmokingstatusReadTest, USCoreV610::AllergyIntoleranceReadTest, USCoreV610::BloodPressureReadTest, USCoreV610::BmiReadTest, USCoreV610::BodyHeightReadTest, USCoreV610::BodyTemperatureReadTest, USCoreV610::BodyWeightReadTest, USCoreV610::CarePlanReadTest, USCoreV610::CareTeamReadTest, USCoreV610::ConditionEncounterDiagnosisReadTest, USCoreV610::ConditionProblemsHealthConcernsReadTest, USCoreV610::CoverageReadTest, USCoreV610::DeviceReadTest, USCoreV610::DiagnosticReportLabReadTest, USCoreV610::DiagnosticReportNoteReadTest, USCoreV610::DocumentReferenceReadTest, USCoreV610::EncounterReadTest, USCoreV610::GoalReadTest, USCoreV610::HeadCircumferencePercentileReadTest, USCoreV610::HeadCircumferenceReadTest, USCoreV610::HeartRateReadTest, USCoreV610::ImmunizationReadTest, USCoreV610::MedicationDispenseReadTest, USCoreV610::MedicationRequestReadTest, USCoreV610::ObservationClinicalResultReadTest, USCoreV610::ObservationLabReadTest, USCoreV610::ObservationOccupationReadTest, USCoreV610::ObservationPregnancyintentReadTest, USCoreV610::ObservationPregnancystatusReadTest, USCoreV610::ObservationScreeningAssessmentReadTest, USCoreV610::ObservationSexualOrientationReadTest, USCoreV610::OrganizationReadTest, USCoreV610::PatientReadTest, USCoreV610::PediatricBmiForAgeReadTest, USCoreV610::PediatricWeightForHeightReadTest, USCoreV610::PractitionerReadTest, USCoreV610::PractitionerRoleReadTest, USCoreV610::ProcedureReadTest, USCoreV610::ProvenanceReadTest, USCoreV610::PulseOximetryReadTest, USCoreV610::QuestionnaireResponseReadTest, USCoreV610::RelatedPersonReadTest, USCoreV610::RespiratoryRateReadTest, USCoreV610::ServiceRequestReadTest, USCoreV610::SimpleObservationReadTest, USCoreV610::SmokingstatusReadTest, USCoreV610::SpecimenReadTest, USCoreV700::AllergyIntoleranceReadTest, USCoreV700::AverageBloodPressureReadTest, USCoreV700::BloodPressureReadTest, USCoreV700::BmiReadTest, USCoreV700::BodyHeightReadTest, USCoreV700::BodyTemperatureReadTest, USCoreV700::BodyWeightReadTest, USCoreV700::CareExperiencePreferenceReadTest, USCoreV700::CarePlanReadTest, USCoreV700::CareTeamReadTest, USCoreV700::ConditionEncounterDiagnosisReadTest, USCoreV700::ConditionProblemsHealthConcernsReadTest, USCoreV700::CoverageReadTest, USCoreV700::DeviceReadTest, USCoreV700::DiagnosticReportLabReadTest, USCoreV700::DiagnosticReportNoteReadTest, USCoreV700::DocumentReferenceReadTest, USCoreV700::EncounterReadTest, USCoreV700::GoalReadTest, USCoreV700::HeadCircumferencePercentileReadTest, USCoreV700::HeadCircumferenceReadTest, USCoreV700::HeartRateReadTest, USCoreV700::ImmunizationReadTest, USCoreV700::LocationReadTest, USCoreV700::MedicationDispenseReadTest, USCoreV700::MedicationRequestReadTest, USCoreV700::ObservationClinicalResultReadTest, USCoreV700::ObservationLabReadTest, USCoreV700::ObservationOccupationReadTest, USCoreV700::ObservationPregnancyintentReadTest, USCoreV700::ObservationPregnancystatusReadTest, USCoreV700::ObservationScreeningAssessmentReadTest, USCoreV700::ObservationSexualOrientationReadTest, USCoreV700::OrganizationReadTest, USCoreV700::PatientReadTest, USCoreV700::PediatricBmiForAgeReadTest, USCoreV700::PediatricWeightForHeightReadTest, USCoreV700::PractitionerReadTest, USCoreV700::PractitionerRoleReadTest, USCoreV700::ProcedureReadTest, USCoreV700::ProvenanceReadTest, USCoreV700::PulseOximetryReadTest, USCoreV700::QuestionnaireResponseReadTest, USCoreV700::RelatedPersonReadTest, USCoreV700::RespiratoryRateReadTest, USCoreV700::ServiceRequestReadTest, USCoreV700::SimpleObservationReadTest, USCoreV700::SmokingstatusReadTest, USCoreV700::SpecimenReadTest, USCoreV700::TreatmentInterventionPreferenceReadTest, USCoreV800::AdiDocumentReferenceReadTest, USCoreV800::AllergyIntoleranceReadTest, USCoreV800::AverageBloodPressureReadTest, USCoreV800::BloodPressureReadTest, USCoreV800::BmiReadTest, USCoreV800::BodyHeightReadTest, USCoreV800::BodyTemperatureReadTest, USCoreV800::BodyWeightReadTest, USCoreV800::CareExperiencePreferenceReadTest, USCoreV800::CarePlanReadTest, USCoreV800::CareTeamReadTest, USCoreV800::ConditionEncounterDiagnosisReadTest, USCoreV800::ConditionProblemsHealthConcernsReadTest, USCoreV800::CoverageReadTest, USCoreV800::DeviceReadTest, USCoreV800::DiagnosticReportLabReadTest, USCoreV800::DiagnosticReportNoteReadTest, USCoreV800::DocumentReferenceReadTest, USCoreV800::EncounterReadTest, USCoreV800::GoalReadTest, USCoreV800::HeadCircumferencePercentileReadTest, USCoreV800::HeadCircumferenceReadTest, USCoreV800::HeartRateReadTest, USCoreV800::ImmunizationReadTest, USCoreV800::LocationReadTest, USCoreV800::MedicationDispenseReadTest, USCoreV800::MedicationRequestReadTest, USCoreV800::ObservationAdiDocumentationReadTest, USCoreV800::ObservationClinicalResultReadTest, USCoreV800::ObservationLabReadTest, USCoreV800::ObservationOccupationReadTest, USCoreV800::ObservationPregnancyintentReadTest, USCoreV800::ObservationPregnancystatusReadTest, USCoreV800::ObservationScreeningAssessmentReadTest, USCoreV800::ObservationSexualOrientationReadTest, USCoreV800::OrganizationReadTest, USCoreV800::PatientReadTest, USCoreV800::PediatricBmiForAgeReadTest, USCoreV800::PediatricWeightForHeightReadTest, USCoreV800::PractitionerReadTest, USCoreV800::PractitionerRoleReadTest, USCoreV800::ProcedureReadTest, USCoreV800::ProvenanceReadTest, USCoreV800::PulseOximetryReadTest, USCoreV800::QuestionnaireResponseReadTest, USCoreV800::RelatedPersonReadTest, USCoreV800::RespiratoryRateReadTest, USCoreV800::ServiceRequestReadTest, USCoreV800::SimpleObservationReadTest, USCoreV800::SmokingstatusReadTest, USCoreV800::SpecimenReadTest, USCoreV800::TreatmentInterventionPreferenceReadTest
Defined in:
lib/us_core_test_kit/read_test.rb

Instance Method Summary collapse

Instance Method Details

#all_scratch_resourcesObject



3
4
5
# File 'lib/us_core_test_kit/read_test.rb', line 3

def all_scratch_resources
  scratch_resources[:all] ||= []
end

#bad_resource_id_message(expected_id) ⇒ Object



95
96
97
# File 'lib/us_core_test_kit/read_test.rb', line 95

def bad_resource_id_message(expected_id)
  "Expected resource to have id: `#{expected_id.inspect}`, but found `#{resource.id.inspect}`"
end

#no_resources_skip_messageObject



90
91
92
93
# File 'lib/us_core_test_kit/read_test.rb', line 90

def no_resources_skip_message
  "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



7
8
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
# File 'lib/us_core_test_kit/read_test.rb', line 7

def perform_read_test(resources, reply_handler = nil, delayed_reference: false)
  skip_if resources.blank?, no_resources_skip_message

  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.options[: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



72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/us_core_test_kit/read_test.rb', line 72

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, bad_resource_id_message(id)

  return unless resource_to_read.is_a? FHIR::Reference

  all_scratch_resources << resource
end

#readable_references(resources) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/us_core_test_kit/read_test.rb', line 51

def readable_references(resources)
  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
    .uniq { |resource| resource[:reference].reference.split('/').last }
end

#readable_resources(resources) ⇒ Object



64
65
66
67
68
69
70
# File 'lib/us_core_test_kit/read_test.rb', line 64

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



45
46
47
48
49
# File 'lib/us_core_test_kit/read_test.rb', line 45

def referencing_resources(readable_resources)
  readable_resources
    .map { |resource| resource[:referencing_resource] }
    .join(', ')
end

#resource_classObject



99
100
101
# File 'lib/us_core_test_kit/read_test.rb', line 99

def resource_class
  FHIR.const_get(resource_type)
end

#resource_id(resource) ⇒ Object



86
87
88
# File 'lib/us_core_test_kit/read_test.rb', line 86

def resource_id(resource)
  resource.is_a?(FHIR::Reference) ? resource.reference.split('/').last : resource.id
end