Guest User

Untitled

a guest
Jan 18th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.00 KB | None | 0 0
  1. desc 'validate output against shr profiles'
  2. task :validate_shr, [] do |_t, _args|
  3.  
  4. @profiles = {}
  5.  
  6. Dir.glob('./resources/shr_profiles/StructureDefinition-shr-*.json').each do |file|
  7. json = JSON.parse(File.read(file))
  8. @profiles[json['url']] = FHIR::StructureDefinition.new(json)
  9. end
  10.  
  11. output = Synthea::Output::Exporter.get_output_folder('fhir')
  12. files = File.join(output, '**', '*.json')
  13. Dir.glob(files).each do |file|
  14. json = File.open(file, 'r:UTF-8', &:read)
  15. bundle = FHIR.from_contents(json)
  16.  
  17. bundle.entry.each { |e| validate_by_profile(e.resource) }
  18. end
  19. end
  20.  
  21. def validate_by_profile(resource)
  22. return unless resource.meta && resource.meta.profile
  23.  
  24. resource.meta.profile.each do |profile_uri|
  25. structure_definition = @profiles[ profile_uri ]
  26. if structure_definition.nil?
  27. puts "Missing structure def: #{profile_uri}"
  28. next
  29. end
  30. errors = structure_definition.validate_resource(resource)
  31. puts errors
  32. end
  33. end
Add Comment
Please, Sign In to add comment