O problema está aqui:
$q->where('vaccine_id','ILIKE','%' . $vaccine_id)
parece que vacina_id é inteiro, e você não pode usar o operador ILIKE para inteiro. Tente apenas '='
Se você quiser usar LIKE, ILIKE ou outro operador de texto, você deve converter seus dados em texto. No SQL deve ficar assim:
WHERE "vaccine_id"::text ILIKE val
em vez de
WHERE "vaccine_id" ILIKE val