private List<NonNumericTests> getNonNumericTests(List<ReferralItem> referralItems) {
    DictionaryDAO dictionaryDAO = new DictionaryDAOImpl();
    Set<String> testIdSet = new HashSet<String>();

    for (ReferralItem item : referralItems) {
      for (IdValuePair pair : item.getTestSelectionList()) {
        testIdSet.add(pair.getId());
      }
    }

    List<NonNumericTests> nonNumericTestList = new ArrayList<NonNumericTests>();
    TestResultDAO testResultDAO = new TestResultDAOImpl();
    for (String testId : testIdSet) {
      List<TestResult> testResultList = testResultDAO.getActiveTestResultsByTest(testId);

      if (!(testResultList == null || testResultList.isEmpty())) {
        NonNumericTests nonNumericTests = new NonNumericTests();

        nonNumericTests.testId = testId;
        nonNumericTests.testType = testResultList.get(0).getTestResultType();
        boolean isSelectList = ResultType.isDictionaryVariant(nonNumericTests.testType);

        if (isSelectList) {
          List<IdValuePair> dictionaryValues = new ArrayList<IdValuePair>();
          for (TestResult testResult : testResultList) {
            if (ResultType.isDictionaryVariant(testResult.getTestResultType())) {
              String resultName =
                  dictionaryDAO.getDictionaryById(testResult.getValue()).getLocalizedName();
              dictionaryValues.add(new IdValuePair(testResult.getValue(), resultName));
            }
          }

          nonNumericTests.dictionaryValues = dictionaryValues;
        }

        if (nonNumericTests.testType != null) {
          nonNumericTestList.add(nonNumericTests);
        }
      }
    }

    return nonNumericTestList;
  }
  private String getAppropriateResultValue(List<Result> results) {
    Result result = results.get(0);
    if (ResultType.DICTIONARY.matches(result.getResultType())) {
      Dictionary dictionary = dictionaryDAO.getDictionaryById(result.getValue());
      if (dictionary != null) {
        return dictionary.getLocalizedName();
      }
    } else if (ResultType.isMultiSelectVariant(result.getResultType())) {
      Dictionary dictionary = new Dictionary();
      StringBuilder multiResult = new StringBuilder();

      for (Result subResult : results) {
        dictionary.setId(subResult.getValue());
        dictionaryDAO.getData(dictionary);

        if (dictionary.getId() != null) {
          multiResult.append(dictionary.getLocalizedName());
          multiResult.append(", ");
        }
      }

      if (multiResult.length() > 0) {
        multiResult.setLength(multiResult.length() - 2); // remove last ", "
      }

      return multiResult.toString();
    } else {
      String resultValue =
          GenericValidator.isBlankOrNull(result.getValue()) ? "" : result.getValue();

      if (!GenericValidator.isBlankOrNull(resultValue)
          && result.getAnalysis().getTest().getUnitOfMeasure() != null) {
        resultValue += " " + result.getAnalysis().getTest().getUnitOfMeasure().getName();
      }

      return resultValue;
    }

    return "";
  }