Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- desc 'validate output against shr profiles'
- task :validate_shr, [] do |_t, _args|
- @profiles = {}
- Dir.glob('./resources/shr_profiles/StructureDefinition-shr-*.json').each do |file|
- json = JSON.parse(File.read(file))
- @profiles[json['url']] = FHIR::StructureDefinition.new(json)
- end
- output = Synthea::Output::Exporter.get_output_folder('fhir')
- files = File.join(output, '**', '*.json')
- Dir.glob(files).each do |file|
- json = File.open(file, 'r:UTF-8', &:read)
- bundle = FHIR.from_contents(json)
- bundle.entry.each { |e| validate_by_profile(e.resource) }
- end
- end
- def validate_by_profile(resource)
- return unless resource.meta && resource.meta.profile
- resource.meta.profile.each do |profile_uri|
- structure_definition = @profiles[ profile_uri ]
- if structure_definition.nil?
- puts "Missing structure def: #{profile_uri}"
- next
- end
- errors = structure_definition.validate_resource(resource)
- puts errors
- end
- end
Add Comment
Please, Sign In to add comment