/** * Get TestTypes that support prevalence counts * * @return Collection TestTypes */ public static function supportPrevalenceCounts() { $testTypes = new Illuminate\Database\Eloquent\Collection(); // Get ALPHANUMERIC measures whose possible results (or their interpretation) can be // reduced to either Positive or Negative $measures = DB::table('measures')->select(DB::raw('measures.id, measures.name'))->join('measure_ranges', 'measures.id', '=', 'measure_ranges.measure_id')->where('measures.measure_type_id', '=', Measure::ALPHANUMERIC)->where(function ($query) { $query->where('measure_ranges.alphanumeric', '=', 'Positive')->orWhere('measure_ranges.alphanumeric', '=', 'Negative')->orWhere('measure_ranges.interpretation', '=', 'Positive')->orWhere('measure_ranges.interpretation', '=', 'Negative'); })->get(); foreach ($measures as $measure) { $measureORM = Measure::find($measure->id); $objArray = $measureORM->testTypes()->first(); if (!empty($objArray)) { foreach ($measureORM->testTypes()->get() as $tType) { if ($tType->measures()->count() == 1) { $testTypes->add($tType); } } } } return $testTypes->unique()->sortBy('name'); }