/// <summary>
 /// Overload that takes a machine scorer confidence level threshold under which the item is to be hand-scored.
 /// No score info or confidence level will result in an item being counted as requiring hand-scores if machineScoreConfLevelThreshold is supplied
 /// </summary>
 /// <param name="opStatus"></param>
 /// <param name="excludeDropped"></param>
 /// <param name="selectedOnly"></param>
 /// <param name="machineScoreConfLevelThreshold"></param>
 /// <returns></returns>
 public bool HasItemsRequiringHandscores(ItemOperationalStatus opStatus, bool excludeDropped, bool selectedOnly, bool excludeNotForScoring, double?machineScoreConfLevelThreshold = null)
 {
     return(ItemResponses.Exists(ir =>
                                 Routing.ItemScoring.ItemScoringConfigManager.Instance.ScoreItem(ir) &&
                                 (!excludeDropped || !ir.Dropped) &&
                                 (!selectedOnly || ir.IsSelected) &&
                                 (!excludeNotForScoring || (ir.TestItem != null && ir.TestItem.IsScored)) &&
                                 (opStatus == ItemOperationalStatus.Any ||
                                  (opStatus == ItemOperationalStatus.FieldTest && ir.Operational == 0) ||
                                  (opStatus == ItemOperationalStatus.Operational && ir.Operational == 1)) &&
                                 (machineScoreConfLevelThreshold == null || ir.ScoreInfo == null || ir.ScoreInfo.ConfLevel == null || ir.ScoreInfo.ConfLevel.Value.CompareTo(machineScoreConfLevelThreshold) < 0)));
 }
 /// <summary>
 /// Returns whether or not the test opp has items requiring hand-scoring.
 /// </summary>
 /// <param name="excludeDropped"></param>
 /// <param name="selectedOnly"></param>
 /// <param name="opStatus"></param>
 /// <returns></returns>
 public bool HasItemsRequiringHandscores(ItemOperationalStatus opStatus, bool excludeDropped, bool selectedOnly)
 {
     return(HasItemsRequiringHandscores(opStatus, excludeDropped, selectedOnly, false));
 }