Skip to content
This repository was archived by the owner on Jan 23, 2024. It is now read-only.

Commit

Permalink
Merge pull request #425 from onc-healthit/fi-607-cache-ref-resolution
Browse files Browse the repository at this point in the history
Fi 607 cache ref resolution
  • Loading branch information
Jammjammjamm authored Jan 28, 2020
2 parents d563ade + 5c021e5 commit 938b2c5
Show file tree
Hide file tree
Showing 35 changed files with 147 additions and 35 deletions.
5 changes: 4 additions & 1 deletion generator/uscore/uscore_generator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -682,8 +682,11 @@ def create_references_resolved_test(sequence)
skip_if_known_not_supported(:#{sequence[:resource]}, [:search, :read])
#{skip_if_not_found(sequence)}
validated_resources = Set.new
max_resolutions = 50
#{resource_array}&.each do |resource|
validate_reference_resolutions(resource)
validate_reference_resolutions(resource, validated_resources, max_resolutions) if validated_resources.length < max_resolutions
end)
sequence[:tests] << test
end
Expand Down
8 changes: 7 additions & 1 deletion lib/app/models/testing_instance.rb
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,13 @@ def patient_id=(patient_id)

resource_references.destroy

self.patient_ids = patient_id
# For patient id list, don't clear it out but rather add it to the list of known
# patients to pull from.
self.patient_ids = if patient_ids.blank?
patient_id
else
patient_ids.split(',').append(patient_id).uniq.join(',')
end

ResourceReference.create(
resource_type: 'Patient',
Expand Down
9 changes: 8 additions & 1 deletion lib/app/sequence_base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -651,11 +651,15 @@ def test_resources_against_profile(resource_type, specified_profile = nil, &bloc
assert(errors.empty?, errors.join("<br/>\n"))
end

def validate_reference_resolutions(resource)
# Set max_resolutions in a single sequence to a large number by default
def validate_reference_resolutions(resource, resolved_references = Set.new, max_resolutions = 1_000_000)
problems = []

walk_resource(resource) do |value, meta, path|
next if meta['type'] != 'Reference'
next if value.reference.blank?
next if resolved_references.include?(value.reference)
break if resolved_references.length > max_resolutions

begin
# Should potentially update valid? method in fhir_dstu2_models
Expand All @@ -670,11 +674,14 @@ def validate_reference_resolutions(resource)
end
end
value.read
resolved_references.add(value.reference)
rescue ClientException => e
problems << "#{path} did not resolve: #{e}"
end
end

Inferno.logger.info "Surpassed the maximum reference resolutions: #{max_resolutions}" if resolved_references.length > max_resolutions

assert(problems.empty?, problems.join("<br/>\n"))
end

Expand Down
5 changes: 4 additions & 1 deletion lib/modules/uscore_v3.1.0/bodyheight_sequence.rb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion lib/modules/uscore_v3.1.0/bodytemp_sequence.rb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion lib/modules/uscore_v3.1.0/bodyweight_sequence.rb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion lib/modules/uscore_v3.1.0/bp_sequence.rb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion lib/modules/uscore_v3.1.0/headcircum_sequence.rb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion lib/modules/uscore_v3.1.0/heartrate_sequence.rb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion lib/modules/uscore_v3.1.0/pediatric_bmi_for_age_sequence.rb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion lib/modules/uscore_v3.1.0/resprate_sequence.rb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion lib/modules/uscore_v3.1.0/us_core_careplan_sequence.rb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion lib/modules/uscore_v3.1.0/us_core_careteam_sequence.rb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion lib/modules/uscore_v3.1.0/us_core_condition_sequence.rb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion lib/modules/uscore_v3.1.0/us_core_encounter_sequence.rb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion lib/modules/uscore_v3.1.0/us_core_goal_sequence.rb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion lib/modules/uscore_v3.1.0/us_core_immunization_sequence.rb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion lib/modules/uscore_v3.1.0/us_core_location_sequence.rb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion lib/modules/uscore_v3.1.0/us_core_medication_sequence.rb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion lib/modules/uscore_v3.1.0/us_core_organization_sequence.rb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion lib/modules/uscore_v3.1.0/us_core_patient_sequence.rb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 938b2c5

Please # to comment.