Sha256: 783f779817fef4c0c10162116f00de964c7a306cbcf84ec741b7f367e15a3d80

Contents?: true

Size: 1.98 KB

Versions: 14

Compression:

Stored size: 1.98 KB

Contents

module QRDA
  module Cat1
    module DemographicsImporter
      def get_demographics(patient, doc, codes)
        patient_role_element = doc.at_xpath('/cda:ClinicalDocument/cda:recordTarget/cda:patientRole')
        patient_element = patient_role_element.at_xpath('./cda:patient')
        patient.givenNames = [patient_element.at_xpath('cda:name/cda:given').text]
        patient.familyName = patient_element.at_xpath('cda:name/cda:family').text
        patient.qdmPatient.birthDatetime = DateTime.parse(patient_element.at_xpath('cda:birthTime')['value'])
        pcbd = QDM::PatientCharacteristicBirthdate.new
        pcbd.birthDatetime = patient.qdmPatient.birthDatetime
        pcbd.dataElementCodes = [QDM::Code.new('21112-8', '2.16.840.1.113883.6.1')]
        codes.add("21112-8:2.16.840.1.113883.6.1")
        patient.qdmPatient.dataElements << pcbd

        pcs = QDM::PatientCharacteristicSex.new
        code_element = patient_element.at_xpath('cda:administrativeGenderCode')
        pcs.dataElementCodes = [code_if_present(code_element, codes)]
        patient.qdmPatient.dataElements << pcs unless pcs.dataElementCodes.compact.blank?

        pcr = QDM::PatientCharacteristicRace.new
        code_element = patient_element.at_xpath('cda:raceCode')
        pcr.dataElementCodes = [code_if_present(code_element, codes)]
        patient.qdmPatient.dataElements << pcr unless pcr.dataElementCodes.compact.blank?

        pce = QDM::PatientCharacteristicEthnicity.new
        code_element = patient_element.at_xpath('cda:ethnicGroupCode')
        pce.dataElementCodes = [code_if_present(code_element, codes)]
        patient.qdmPatient.dataElements << pce unless pce.dataElementCodes.compact.blank?
      end

      def code_if_present(code_element, codes)
        return unless code_element && code_element['code'] && code_element['codeSystem']
        codes.add("#{code_element['code']}:#{code_element['codeSystem']}")
        QDM::Code.new(code_element['code'], code_element['codeSystem'])
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
cqm-reports-4.1.3 lib/qrda-import/base-importers/demographics_importer.rb
cqm-reports-4.1.2 lib/qrda-import/base-importers/demographics_importer.rb
cqm-reports-4.1.1 lib/qrda-import/base-importers/demographics_importer.rb
cqm-reports-4.1.0 lib/qrda-import/base-importers/demographics_importer.rb
cqm-reports-4.0.1 lib/qrda-import/base-importers/demographics_importer.rb
cqm-reports-3.1.10 lib/qrda-import/base-importers/demographics_importer.rb
cqm-reports-3.1.9 lib/qrda-import/base-importers/demographics_importer.rb
cqm-reports-4.0.0 lib/qrda-import/base-importers/demographics_importer.rb
cqm-reports-3.1.8 lib/qrda-import/base-importers/demographics_importer.rb
cqm-reports-3.1.7 lib/qrda-import/base-importers/demographics_importer.rb
cqm-reports-3.1.6 lib/qrda-import/base-importers/demographics_importer.rb
cqm-reports-3.1.5 lib/qrda-import/base-importers/demographics_importer.rb
cqm-reports-3.1.4 lib/qrda-import/base-importers/demographics_importer.rb
cqm-reports-3.1.3 lib/qrda-import/base-importers/demographics_importer.rb