class Qrda3R21

Constants

PAYER_MAP

Public Class Methods

new(aggregate_results, measures, options = {}) click to toggle source
# File lib/qrda-export/catIII-r2-1/qrda3_r21.rb, line 11
def initialize(aggregate_results, measures, options = {})
  @aggregate_results = aggregate_results
  @measures = measures
  @measure_result_hash = {}
  @measures.each do |measure|
    @measure_result_hash[measure.hqmf_id] = { population_sets: measure.population_sets, hqmf_id: measure.hqmf_id, hqmf_set_id: measure.hqmf_set_id, description: measure.description, measure_data: [], aggregate_count: [] }
  end
  @aggregate_results.each do |hqmf_id, measure_aggregate_result|
    measure_aggregate_result.each do |_key, aggregate_result|
      @measure_result_hash[hqmf_id].measure_data << aggregate_result
    end
  end
  @measure_result_hash.each do |key, hash|
    @measure_result_hash[key][:aggregate_count] = agg_results(key, hash.measure_data, hash.population_sets)
  end
  @provider = options[:provider]
  @performance_period_start = options[:start_time]
  @performance_period_end = options[:end_time]
  @submission_program = options[:submission_program]
  @ry2022_submission = options[:ry2022_submission]
end

Public Instance Methods

agg_results(measure_id, cache_entries, population_sets) click to toggle source
# File lib/qrda-export/catIII-r2-1/qrda3_r21.rb, line 33
def agg_results(measure_id, cache_entries, population_sets)
  aggregate_count = Qrda::Export::Helper::AggregateCount.new(measure_id)
  cache_entries.each do |cache_entry|
    aggregate_count.add_entry(cache_entry, population_sets)
  end
  aggregate_count
end
cms_payer_code() click to toggle source
# File lib/qrda-export/catIII-r2-1/qrda3_r21.rb, line 83
def cms_payer_code
  PAYER_MAP[self['code'][0]] || 'D'
end
cpcplus?() click to toggle source
# File lib/qrda-export/catIII-r2-1/qrda3_r21.rb, line 87
def cpcplus?
  @submission_program == 'CPCPLUS'
end
measure_results() click to toggle source
# File lib/qrda-export/catIII-r2-1/qrda3_r21.rb, line 41
def measure_results
  @measure_result_hash.values.as_json
end
msrpopl?() click to toggle source
# File lib/qrda-export/catIII-r2-1/qrda3_r21.rb, line 53
def msrpopl?
  self['type'] == 'MSRPOPL'
end
not_observ?() click to toggle source
# File lib/qrda-export/catIII-r2-1/qrda3_r21.rb, line 57
def not_observ?
  self['type'] != 'OBSERV'
end
payer_code?() click to toggle source
# File lib/qrda-export/catIII-r2-1/qrda3_r21.rb, line 95
def payer_code?
  self['type'] == 'PAYER'
end
population_observation() click to toggle source
# File lib/qrda-export/catIII-r2-1/qrda3_r21.rb, line 65
def population_observation
  self['observation']
end
population_supplemental_data() click to toggle source
# File lib/qrda-export/catIII-r2-1/qrda3_r21.rb, line 129
def population_supplemental_data
  reformat_supplemental_data(self['supplemental_data'])
end
population_type() click to toggle source
# File lib/qrda-export/catIII-r2-1/qrda3_r21.rb, line 45
def population_type
  self['type'] == 'IPP' ? 'IPOP' : self['type']
end
population_value() click to toggle source
# File lib/qrda-export/catIII-r2-1/qrda3_r21.rb, line 49
def population_value
  self['value'].round
end
reformat_supplemental_data(supplemental_data) click to toggle source
# File lib/qrda-export/catIII-r2-1/qrda3_r21.rb, line 133
def reformat_supplemental_data(supplemental_data)
  supplemental_data_array = []
  supplemental_data.each do |supplemental_data_key, counts|
    counts.each do |key, value|
      supplemental_data_count = { code: key, value: value, type: supplemental_data_key }
      supplemental_data_array << supplemental_data_count
    end
  end
  supplemental_data_array
end
ry2022_submission?() click to toggle source
# File lib/qrda-export/catIII-r2-1/qrda3_r21.rb, line 91
def ry2022_submission?
  @ry2022_submission
end
stratification_observation() click to toggle source
# File lib/qrda-export/catIII-r2-1/qrda3_r21.rb, line 61
def stratification_observation
  self['observation']
end
supplemental_data_code() click to toggle source
# File lib/qrda-export/catIII-r2-1/qrda3_r21.rb, line 99
def supplemental_data_code
  case self['type']
  when 'RACE'
    [{ supplemental_data_code: '72826-1', supplemental_data_code_system: '2.16.840.1.113883.6.1' }]
  when 'ETHNICITY'
    [{ supplemental_data_code: '69490-1', supplemental_data_code_system: '2.16.840.1.113883.6.1' }]
  when 'SEX'
    [{ supplemental_data_code: '76689-9', supplemental_data_code_system: '2.16.840.1.113883.6.1' }]
  when 'PAYER'
    [{ supplemental_data_code: '48768-6', supplemental_data_code_system: '2.16.840.1.113883.6.1' }]
  end
end
supplemental_data_value_code_system() click to toggle source
# File lib/qrda-export/catIII-r2-1/qrda3_r21.rb, line 112
def supplemental_data_value_code_system
  case self['type']
  when 'RACE'
    '2.16.840.1.113883.6.238'
  when 'ETHNICITY'
    '2.16.840.1.113883.6.238'
  when 'SEX'
    '2.16.840.1.113883.5.1'
  when 'PAYER'
    '2.16.840.1.113883.3.221.5'
  end
end
supplemental_template_ids() click to toggle source
# File lib/qrda-export/catIII-r2-1/qrda3_r21.rb, line 69
def supplemental_template_ids
  case self['type']
  when 'RACE'
    [{ tid: '2.16.840.1.113883.10.20.27.3.8', extension: '2016-09-01' }]
  when 'ETHNICITY'
    [{ tid: '2.16.840.1.113883.10.20.27.3.7', extension: '2016-09-01' }]
  when 'SEX'
    [{ tid: '2.16.840.1.113883.10.20.27.3.6', extension: '2016-09-01' }]
  when 'PAYER'
    [{ tid: '2.16.840.1.113883.10.20.27.3.9', extension: '2016-02-01' },
     { tid: '2.16.840.1.113883.10.20.27.3.18', extension: '2018-05-01' }]
  end
end
unknown_supplemental_value?() click to toggle source
# File lib/qrda-export/catIII-r2-1/qrda3_r21.rb, line 125
def unknown_supplemental_value?
  self['code'] == "" || self['code'] == "UNK"
end