def extract_observations
      has_observation = false
      # look for observation data in separate section but create a population for it if it exists
      observation_section = @doc.xpath('/cda:QualityMeasureDocument/cda:component/cda:measureObservationSection',
                                       HQMF2::Document::NAMESPACES)
      unless observation_section.empty?
        observation_section.xpath('cda:definition', HQMF2::Document::NAMESPACES).each do |criteria_def|
          criteria_id = 'OBSERV'
          criteria = PopulationCriteria.new(criteria_def, @document, @id_generator)
          criteria.type = 'OBSERV'
          # This section constructs a human readable id.  The first IPP will be IPP, the second will be IPP_1, etc.
          # This allows the populations to be more readable.  The alternative would be to have the hqmf ids in the
          # populations, which would work, but is difficult to read the populations.
          if @ids_by_hqmf_id["#{criteria.hqmf_id}"]
            criteria.create_human_readable_id(@ids_by_hqmf_id[criteria.hqmf_id])
          else
            criteria.create_human_readable_id(population_id_with_counter(criteria_id))
            @ids_by_hqmf_id["#{criteria.hqmf_id}"] = criteria.id
          end

          @population_criteria << criteria
          has_observation = true
        end
      end
      has_observation
    end
def extract_observations
      has_observation = false
      # look for observation data in separate section but create a population for it if it exists
      observation_section = @doc.xpath('/cda:QualityMeasureDocument/cda:component/cda:measureObservationSection',
                                       HQMF2::Document::NAMESPACES)
      unless observation_section.empty?
        observation_section.xpath('cda:definition', HQMF2::Document::NAMESPACES).each do |criteria_def|
          criteria_id = 'OBSERV'
          criteria = PopulationCriteria.new(criteria_def, @document, @id_generator)
          criteria.type = 'OBSERV'
          # This section constructs a human readable id.  The first IPP will be IPP, the second will be IPP_1, etc.
          # This allows the populations to be more readable.  The alternative would be to have the hqmf ids in the
          # populations, which would work, but is difficult to read the populations.
          if @ids_by_hqmf_id["#{criteria.hqmf_id}"]
            criteria.create_human_readable_id(@ids_by_hqmf_id[criteria.hqmf_id])
          else
            criteria.create_human_readable_id(population_id_with_counter(criteria_id))
            @ids_by_hqmf_id["#{criteria.hqmf_id}"] = criteria.id
          end

          @population_criteria << criteria
          has_observation = true
        end
      end
      has_observation
    end
Extracts the measure observations, will return true if one exists