El problema está aquí:
$q->where('vaccine_id','ILIKE','%' . $vaccine_id)
parece que vacuna_id es un número entero, y no puede usar el operador ILIKE para un número entero. Prueba solo '='
Si desea utilizar LIKE, ILIKE u otro operador de texto, debe convertir sus datos en texto. En SQL debe parecerse a:
WHERE "vaccine_id"::text ILIKE val
en cambio
WHERE "vaccine_id" ILIKE val