Place chicken, water, bay leaves, and peppercorns in a large pot. Bring to a boil, then simmer for 35-45 minutes until tender. Skim off foam. Remove chicken, discard bay leaves and peppercorns, and reserve broth.
Cool chicken for 10-15 minutes, then shred the meat with two forks or your fingers. Discard bones, skin, and cartilage. Set shredded chicken aside.
In a large pot, heat butter and oil over medium heat. Sauté onion, garlic, celery, and carrots for 5-7 minutes until onion is translucent and carrots begin to soften.
Add shredded chicken and sliced hot dogs to the pot. Cook for 2-3 minutes until hot dogs are heated through and slightly colored at the edges.
Pour the reserved chicken broth back into the pot. Bring to a boil, then add fish sauce. Reduce heat to medium-low, cover partially, and simmer for 10 minutes.
Add uncooked macaroni to the simmering soup. Cook for 8-10 minutes, stirring frequently to prevent sticking, until pasta is just tender but still al dente.
Stir in the chopped cabbage and cook for 2-3 minutes until wilted and tender but still with texture.
Pour in the evaporated milk and stir gently. Bring to a gentle simmer over medium-low heat (do not boil). Season with salt, pepper, or additional fish sauce to taste.
Ladle hot sopas into bowls and garnish with sliced green onions. Serve immediately.