Sha256: 6dcfc7b643fcf9a551613e49160e99fd01c042ad25f8a21fd4756d16a5cfa2eb

Contents?: true

Size: 1.82 KB

Versions: 10

Compression:

Stored size: 1.82 KB

Contents

module HealthDataStandards
  module Import
    module CDA
      class MedicalEquipmentImporter < SectionImporter
        def initialize(entry_finder=EntryFinder.new("//cda:section[cda:templateId/@root='2.16.840.1.113883.3.88.11.83.128']/cda:entry/cda:supply"))
          super(entry_finder)
          @code_xpath = "./cda:participant/cda:participantRole/cda:playingDevice/cda:code"
          @anatomical_xpath = "./cda:targetSiteCode"
          @entry_class = MedicalEquipment
        end

        def create_entry(entry_element, nrh = NarrativeReferenceHandler.new)
          medical_equipment = super
          extract_manufacturer(entry_element, medical_equipment)
          extract_anatomical_structure(entry_element, medical_equipment)
          extract_removal_time(entry_element, medical_equipment)
          medical_equipment
        end

        def extract_manufacturer(entry_element, entry)
          manufacturer = entry_element.at_xpath("./cda:participant/cda:participantRole/cda:scopingEntity/cda:desc").try(:inner_text)
          entry.manufacturer = manufacturer.strip if manufacturer
        end

        def extract_removal_time(entry_element, entry)
          if entry_element.at_xpath("cda:effectiveTime/cda:high")
            entry.removal_time = HL7Helper.timestamp_to_integer(entry_element.at_xpath("cda:effectiveTime/cda:high")['value'])
          end
        end

        def extract_anatomical_structure(entry_element, entry)
          site = entry_element.at_xpath(@anatomical_xpath)
          if site
            entry.anatomical_structure = {"code" => site['code'], "code_system" => CodeSystemHelper.code_system_for(site['codeSystem']), "codeSystemName" => CodeSystemHelper.code_system_for(site['codeSystem']), CodeSystemHelper.code_system_for(site['codeSystem']) => [site['code']]}
          end
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
health-data-standards-3.6.1 lib/health-data-standards/import/cda/medical_equipment_importer.rb
health-data-standards-3.5.3 lib/health-data-standards/import/cda/medical_equipment_importer.rb
health-data-standards-3.5.2 lib/health-data-standards/import/cda/medical_equipment_importer.rb
health-data-standards-3.5.1 lib/health-data-standards/import/cda/medical_equipment_importer.rb
health-data-standards-3.5.0 lib/health-data-standards/import/cda/medical_equipment_importer.rb
health-data-standards-3.4.6 lib/health-data-standards/import/cda/medical_equipment_importer.rb
health-data-standards-3.4.5 lib/health-data-standards/import/cda/medical_equipment_importer.rb
health-data-standards-3.4.4 lib/health-data-standards/import/cda/medical_equipment_importer.rb
health-data-standards-3.4.3 lib/health-data-standards/import/cda/medical_equipment_importer.rb
health-data-standards-3.4.2 lib/health-data-standards/import/cda/medical_equipment_importer.rb