Melt the butter in a large saucepan, add the onion and cook gently over a medium heat for 5 minutes until softened but not browned.
Stir in the cinnamon stick, turmeric, cardamom pods and bay leaf then cook for 1 minute.
Tip in the rice and stir until it is well coated.
Pour in the stock, add the salt and bring to the boil. Stir once to release any rice from the bottom of the pan. Cover with a close-fitting lid, reduce the heat and leave to cook gently for 12 minutes.
Lightly sauté the tomatoes in a small pan then keep warm over a low heat.
Meanwhile, bring some water to the boil in a large shallow pan. Add the smoked haddock and simmer for 4 minutes until the fish is just cooked. Lift out onto a plate and leave until cool enough to handle.
Boil the eggs for 8 minutes, drain, cool slightly then peel and cut in half.
Uncover the rice and remove the bay leaves, cinnamon stick and cardamom pods. Place a spoonful of rice in a bowl, add the smoked haddock, eggs and tomatoes and sprinkle with the sliced spring onion and fresh parsley.