Boy, 7, raises more than $30,000 for sick friend