private boolean areResults(AnalysisItem item) {
   return !(isBlankOrNull(item.getResult())
           || (ResultType.DICTIONARY.matches(item.getResultType())
               && "0".equals(item.getResult())))
       || (ResultType.isMultiSelectVariant(item.getResultType())
           && !isBlankOrNull(item.getMultiSelectResultValues()));
 }
  /**
   * Move everything appropriate to the referralItem including one or more of the referralResults
   * from the given list. Note: This method removes an item from the referralResults list.
   *
   * @param referralItem The source item
   * @param referralResults The created list
   */
  private List<ReferralResult> setReferralItemForNextTest(
      IReferralResultTest referralItem, List<ReferralResult> referralResults) {

    ReferralResult nextTestFirstResult = referralResults.remove(0);
    List<ReferralResult> resultsForOtherTests = new ArrayList<ReferralResult>(referralResults);

    referralItem.setReferredTestId(nextTestFirstResult.getTestId());
    referralItem.setReferredTestIdShadow(referralItem.getReferredTestId());
    referralItem.setReferredReportDate(
        DateUtil.convertTimestampToStringDate(nextTestFirstResult.getReferralReportDate()));
    // We can not use ResultService because that assumes the result is for an analysis, not a
    // referral
    Result result = nextTestFirstResult.getResult();

    String resultType = (result != null) ? result.getResultType() : "N";
    referralItem.setReferredResultType(resultType);
    if (!ResultType.isMultiSelectVariant(resultType)) {
      if (result != null) {
        String resultValue =
            GenericValidator.isBlankOrNull(result.getValue()) ? "" : result.getValue();
        referralItem.setReferredResult(resultValue);
        referralItem.setReferredDictionaryResult(resultValue);
      }
    } else {
      ArrayList<Result> resultList = new ArrayList<Result>();
      resultList.add(nextTestFirstResult.getResult());

      for (ReferralResult referralResult : referralResults) {
        if (nextTestFirstResult.getTestId().equals(referralResult.getTestId())
            && !GenericValidator.isBlankOrNull(referralResult.getResult().getValue())) {
          resultList.add(referralResult.getResult());
          resultsForOtherTests.remove(referralResult);
        }
      }

      referralItem.setMultiSelectResultValues(
          ResultService.getJSONStringForMultiSelect(resultList));
    }

    return resultsForOtherTests;
  }
  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 "";
  }