Il problema è qui:
$q->where('vaccine_id','ILIKE','%' . $vaccine_id)
sembra che id_vaccino sia intero e non puoi usare l'operatore ILIKE per integer. Prova solo '='
Se desideri utilizzare LIKE, ILIKE o un altro operatore di testo, devi trasmettere i tuoi dati al testo. In SQL deve essere simile a:
WHERE "vaccine_id"::text ILIKE val
invece
WHERE "vaccine_id" ILIKE val