Place beans, ham bone and water into a large saucepan or casserole. Bring to the boil over high heat, then reduce heat to medium low, cover and simmer until the beans are tender, from 1 1/2 to 2 hours.
Once beans are nearly ready, heat olive oil in a casserole over medium heat. Stir in onion and garlic, cook until the onion has softened, about 5 minutes. Stir in tomatoes, celery, carrot, chillies and water. Bring to a simmer, then reduce heat to medium-low. Cook until the carrot has softened, about 10 minutes. Add macaroni.
While the tomato mixture simmers, remove the ham bone from the beans. Separate the meat from the bone and dice. Discard the bone.
To finish the soup, stir the beans and diced ham into the tomato mixture adding extra water if needed to make a chunky soup. Season to taste with salt and pepper then simmer until the macaroni and beans are both quite tender - 5 to 15 minutes. Stir in chopped parsley before serving.