def possible_responses(search_other = false)
      {}.tap do |hash|
        survey_response_answers.each do |sra|
          sa_row = (sra.row_survey_answer_id ? SurveyAnswer.find(sra.row_survey_answer_id) : nil)
          sa_col = (sra.col_survey_answer_id ? SurveyAnswer.find(sra.col_survey_answer_id) : nil)
          sa_col_choice = (sra.col_choice_survey_answer_id ? SurveyAnswer.find(sra.col_choice_survey_answer_id) : nil)

          case answer_strategy
          when "first_survey_response_answer_text"
            hash[sra.text] = sra.id unless (sra.text.nil? || hash[sra.text])
          when "answer_row_for_subquestion"
            other_text = (sra.text.nil? ? nil : "#{ (sa_row.try(:text) || "Other") }: #{ sra.text }")
            hash[other_text] = sra.id unless (other_text.nil? || hash[other_text])
          when "answer_row_for_response"
            other_text = ((!search_other || sra.text.nil?) ? nil : "#{ (sa_row.try(:text) || "Other") }: #{ sra.text }")
            hash[sa_row.text] = sra.id unless (sa_row.nil? || hash[sa_row.text])
            hash[other_text] = sra.id unless (other_text.nil? || hash[other_text])
          when "answer_row_and_column_for_response"
            main_text = "#{ sa_row.try(:text) }: #{ sa_col.try(:text) }"
            other_text = ((!search_other || sra.text.nil? || !sa_row.nil?) ? nil : "Other: #{ sra.text }")
            hash[main_text] = sra.id unless (sa_row.nil? || sa_col.nil? || hash[main_text])
            hash[other_text] = sra.id unless (other_text.nil? || hash[other_text])
          when "answer_row_column_choice_for_response"
            main_text = "#{ sa_row.try(:text) }, #{ sa_col.try(:text) }: #{ sa_col_choice.try(:text) }"
            other_text = ((!search_other || sra.text.nil? || !sa_row.nil?) ? nil : "Other: #{ sra.text }")
            hash[main_text] = sra.id unless (sa_row.nil? || sa_col.nil? || sa_col_choice.nil? || hash[main_text])
            hash[other_text] = sra.id unless (other_text.nil? || hash[other_text])
          end
        end
      end
    end
def possible_responses(search_other = false)
      {}.tap do |hash|
        survey_response_answers.each do |sra|
          sa_row = (sra.row_survey_answer_id ? SurveyAnswer.find(sra.row_survey_answer_id) : nil)
          sa_col = (sra.col_survey_answer_id ? SurveyAnswer.find(sra.col_survey_answer_id) : nil)
          sa_col_choice = (sra.col_choice_survey_answer_id ? SurveyAnswer.find(sra.col_choice_survey_answer_id) : nil)

          case answer_strategy
          when "first_survey_response_answer_text"
            hash[sra.text] = sra.id unless (sra.text.nil? || hash[sra.text])
          when "answer_row_for_subquestion"
            other_text = (sra.text.nil? ? nil : "#{ (sa_row.try(:text) || "Other") }: #{ sra.text }")
            hash[other_text] = sra.id unless (other_text.nil? || hash[other_text])
          when "answer_row_for_response"
            other_text = ((!search_other || sra.text.nil?) ? nil : "#{ (sa_row.try(:text) || "Other") }: #{ sra.text }")
            hash[sa_row.text] = sra.id unless (sa_row.nil? || hash[sa_row.text])
            hash[other_text] = sra.id unless (other_text.nil? || hash[other_text])
          when "answer_row_and_column_for_response"
            main_text = "#{ sa_row.try(:text) }: #{ sa_col.try(:text) }"
            other_text = ((!search_other || sra.text.nil? || !sa_row.nil?) ? nil : "Other: #{ sra.text }")
            hash[main_text] = sra.id unless (sa_row.nil? || sa_col.nil? || hash[main_text])
            hash[other_text] = sra.id unless (other_text.nil? || hash[other_text])
          when "answer_row_column_choice_for_response"
            main_text = "#{ sa_row.try(:text) }, #{ sa_col.try(:text) }: #{ sa_col_choice.try(:text) }"
            other_text = ((!search_other || sra.text.nil? || !sa_row.nil?) ? nil : "Other: #{ sra.text }")
            hash[main_text] = sra.id unless (sa_row.nil? || sa_col.nil? || sa_col_choice.nil? || hash[main_text])
            hash[other_text] = sra.id unless (other_text.nil? || hash[other_text])
          end
        end
      end
    end
for reference, when searching, listing all possible responses is
 logical, but it is impossible to track all survey response answers
 that match the desired answer. therefore, we only track one
 example, and later find all similar response answers based on the
 question strategy