class HealthDataStandards::Import::CDA::ProcedureImporter

Public Class Methods

new(entry_finder=EntryFinder.new("//cda:section[cda:templateId/@root!='2.16.840.1.113883.3.88.11.83.124']//cda:procedure")) click to toggle source

scoped to not look in the plan of care section so planned procedures do not end up mixed with past procedures

Calls superclass method
# File lib/health-data-standards/import/cda/procedure_importer.rb, line 8
def initialize(entry_finder=EntryFinder.new("//cda:section[cda:templateId/@root!='2.16.840.1.113883.3.88.11.83.124']//cda:procedure"))
  super(entry_finder)
  @entry_class = Procedure
  @value_xpath = "./cda:value | ./cda:entryRelationship[@typeCode='REFR']/cda:observation/cda:value"
  @ordinality_xpath = "./cda:priorityCode"
end

Public Instance Methods

create_entry(entry_element, nrh = NarrativeReferenceHandler.new) click to toggle source
Calls superclass method
# File lib/health-data-standards/import/cda/procedure_importer.rb, line 15
def create_entry(entry_element, nrh = NarrativeReferenceHandler.new)
  procedure = super
  extract_ordinality(entry_element, procedure)
  extract_performer(entry_element, procedure)
  extract_anatomical_target(entry_element, procedure)
  extract_reason_or_negation(entry_element, procedure)
  extract_scalar(entry_element, procedure)
  procedure
end

Private Instance Methods

extract_anatomical_target(parent_element, procedure) click to toggle source
# File lib/health-data-standards/import/cda/procedure_importer.rb, line 39
def extract_anatomical_target(parent_element, procedure)
  procedure.anatomical_target = extract_code(parent_element, "./cda:targetSiteCode")
end
extract_ordinality(parent_element, procedure) click to toggle source
# File lib/health-data-standards/import/cda/procedure_importer.rb, line 27
def extract_ordinality(parent_element, procedure)
  ordinality_element = parent_element.at_xpath(@ordinality_xpath)
  if ordinality_element
    procedure.ordinality = {"code" => ordinality_element['code'], "code_system" => CodeSystemHelper.code_system_for(ordinality_element['codeSystem']), "codeSystemName" => CodeSystemHelper.code_system_for(ordinality_element['codeSystem']), CodeSystemHelper.code_system_for(ordinality_element['codeSystem']) => [ordinality_element['code']]}
  end
end
extract_performer(parent_element, procedure) click to toggle source
# File lib/health-data-standards/import/cda/procedure_importer.rb, line 34
def extract_performer(parent_element, procedure)
  performer_element = parent_element.at_xpath("./cda:performer")
  procedure.performer = import_actor(performer_element) if performer_element
end
extract_scalar(parent_element, procedure) click to toggle source
# File lib/health-data-standards/import/cda/procedure_importer.rb, line 43
def extract_scalar(parent_element, procedure)
  return unless scalar_element = parent_element.at_xpath("./cda:value")
  case scalar_element["xsi:type"]
  when "PQ"
    procedure.set_value scalar_element['value'].to_i, scalar_element['unit']
  when "BL"
    procedure.set_value scalar_element['value']
  when "ST"
    procedure.set_value scalar_element.content
  end
end