class Crucible::Tests::ConnectathonTerminologyTrackTest

Public Class Methods

new(client1, client2=nil) click to toggle source
Calls superclass method Crucible::Tests::BaseTest::new
# File lib/tests/suites/connectathon_terminology_track.rb, line 13
def initialize(client1, client2=nil)
  super(client1, client2)
  @tags.append('connectathon')
  @category = {id: 'connectathon', title: 'Connectathon'}
end

Public Instance Methods

check_expansion_for_concepts(vs, ref) click to toggle source
# File lib/tests/suites/connectathon_terminology_track.rb, line 385
def check_expansion_for_concepts(vs, ref)
  assert(vs.expansion,'ValueSet should contain expansion.')
  assert(vs.expansion.contains,'ValueSet.expansion.contains elements are missing.')

  concepts = vs.expansion.contains.map{|c|c.code}

  expansion_missing = ref - concepts
  expansion_added = concepts - ref

  assert(expansion_missing.empty?,"ValueSet expansion is missing the following concepts: #{expansion_missing}")
  assert(expansion_added.empty?,"ValueSet expansion contained some unexpected concepts: #{expansion_added}")
end
check_response_params(contents,name,attribute,value) click to toggle source
# File lib/tests/suites/connectathon_terminology_track.rb, line 398
def check_response_params(contents,name,attribute,value)
  begin
    doc = Nokogiri::XML(contents)
    if doc.errors.empty?
      doc.root.add_namespace_definition('fhir', 'http://hl7.org/fhir')
      doc.root.add_namespace_definition('xhtml', 'http://www.w3.org/1999/xhtml')
      e = doc.root.xpath("./fhir:parameter[fhir:name[@value=\"#{name}\"]]/fhir:#{attribute}").first
      assert(e[:value]==value,"Output parameters do not contain #{name}=#{value}")
    else
      hash = JSON.parse(contents)
      params = hash['parameter']
      p = params.select{|p|p['name']==name}.first
      assert(p[attribute]==value,"Output parameters do not contain #{name}=#{value}")
    end
  rescue Exception => e
    raise AssertionException.new 'Unable to parse response parameters', e.message
  end
end
description() click to toggle source
# File lib/tests/suites/connectathon_terminology_track.rb, line 9
def description
  'Connectathon Terminology Track focuses on the $expand, $validate-code, $lookup, and $translate operations.'
end
id() click to toggle source
# File lib/tests/suites/connectathon_terminology_track.rb, line 5
def id
  'ConnectathonTerminologyTrackTest'
end
setup() click to toggle source
# File lib/tests/suites/connectathon_terminology_track.rb, line 19
def setup
  # find FHIRDefinedType valueset
  options = {
    :search => {
      :flag => false,
      :compartment => nil,
      :parameters => {
        'name' => 'FHIRDefinedType'
      }
    }
  }
  @valueset = nil
  reply = @client.search(FHIR::ValueSet, options)
  if reply.code==200 && !reply.resource.nil?
    bundle = reply.resource
    @valueset = bundle.entry[0].resource if bundle.entry.size > 0
  end

  @resources = Crucible::Generator::Resources.new

  if @valueset.nil?
    # The resource was not found, try to create it in case the server
    # dynamically calculates terminology operations based on local resources
    codesystem_types = @resources.load_fixture('terminology/codesystem-data-types.json')
    codesystem_rsrcs = @resources.load_fixture('terminology/codesystem-resource-types.json')
    valueset_defined = @resources.load_fixture('terminology/valueset-defined-types.json')
    @codesystem_types_id = @client.create(codesystem_types).id
    @codesystem_rsrcs_id = @client.create(codesystem_rsrcs).id
    @valueset_defined_id = @client.create(valueset_defined).id
    @valueset_defined.id = @valueset_defined_id
    @valueset = valueset_defined
  end

  v2_codesystem = @resources.load_fixture('terminology/v2-codesystem.json')
  v2_valueset = @resources.load_fixture('terminology/v2-valueset.json')
  @v2_codesystem_id = @client.create(v2_codesystem).id
  @v2_valueset_id = @client.create(v2_valueset).id
end
teardown() click to toggle source
# File lib/tests/suites/connectathon_terminology_track.rb, line 58
def teardown
  @client.destroy(FHIR::ValueSet, @valueset_defined_id) if @valueset_defined_id
  @client.destroy(FHIR::CodeSystem, @codesystem_types_id) if @codesystem_types_id
  @client.destroy(FHIR::CodeSystem, @codesystem_rsrcs_id) if @codesystem_rsrcs_id
  @client.destroy(FHIR::ValueSet, @v2_valueset_id) if @v2_valueset_id
  @client.destroy(FHIR::CodeSystem, @v2_codesystem_id) if @v2_codesystem_id
  # CT13 does # DELETE codesystem_simple
  # CT13 does # DELETE valueset_simple
  # CT17 does # DELETE conceptmap_created_id
end