Module: Measures::HQMFMeasureLoader

Defined in:
lib/measure-loader/hqmf_measure_loader.rb

Class Method Summary collapse

Class Method Details

.add_fields_from_hqmf_model_hash(measure, hqmf_model_hash) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/measure-loader/hqmf_measure_loader.rb', line 33

def add_fields_from_hqmf_model_hash(measure, hqmf_model_hash)
  measure.measure_attributes = hqmf_model_hash[:attributes]
  measure.measure_period = hqmf_model_hash[:measure_period]
  measure.population_criteria = hqmf_model_hash[:population_criteria]

  # add observation info, note population_sets needs to have been added to the measure by now
  (hqmf_model_hash[:observations] || []).each do |observation|
    observation = CQM::Observation.new(
      hqmf_id: observation[:function_hqmf_oid],
      aggregation_type: observation[:function_aggregation_type],
      observation_function: CQM::StatementReference.new(
        library_name: hqmf_model_hash[:cql_measure_library],
        statement_name: observation[:function_name],
        hqmf_id: observation[:function_hqmf_oid]
      ),
      observation_parameter: CQM::StatementReference.new(
        library_name: hqmf_model_hash[:cql_measure_library],
        statement_name: observation[:parameter],
        hqmf_id: observation[:function_hqmf_oid]
      )
    )
    # add observation to each population set
    measure.population_sets.each { |population_set| population_set.observations << observation }
  end
end

.extract_fields(hqmf_xml) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/measure-loader/hqmf_measure_loader.rb', line 7

def extract_fields(hqmf_xml)
  qmd = hqmf_xml.at_css('/QualityMeasureDocument')
  hqmf_id = qmd.at_css('/id')['root'].upcase
  hqmf_set_id = qmd.at_css('/setId')['root'].upcase
  title = qmd.at_css('/title')['value']
  description = qmd.at_css('/text')['value']
  cms_identifier = extract_cms_identifier(qmd)
  hqmf_version_number = qmd.at_css('/versionNumber')['value']
  cms_id = "CMS#{cms_identifier}v#{hqmf_version_number.to_i}"
  main_cql_library = qmd.at_css('/component/populationCriteriaSection/component/initialPopulationCriteria/*/*/id')['extension'].split('.').first
  measure_scoring = extract_measure_scoring(qmd)
  population_sets = extract_population_set_models(qmd, measure_scoring)

  return {
    hqmf_id: hqmf_id,
    hqmf_set_id: hqmf_set_id,
    title: title,
    description: description,
    main_cql_library: main_cql_library,
    hqmf_version_number: hqmf_version_number,
    cms_id: cms_id,
    measure_scoring: measure_scoring,
    population_sets: population_sets
  }
end