Cook pasta Bring a large pot of water to a boil and cook elbow macaroni to al dente, according to package directions. Carefully remove from heat and drain, then set aside.
Heat milk and broth. While the pasta cooks, combine evaporated milk and chicken broth in a small saucepan or medium-sized bowl. Cover and microwave the liquid for 2-3 minutes or warm it in a saucepan over medium heat, stirring occasionally.
Start roux. On medium-low heat, melt butter in a large pot or Dutch oven and stir in flour until combined. Cook, stirring for an additional 2-3 minutes. Gradually add the heated milk mixture a little at a time and whisk together until the roux thickens.
Add seasonings. Add in Parmesan cheese, Dijon mustard, smoked paprika, ½ teaspoon of salt, and ½ teaspoon of pepper. Whisk until Parmesan cheese is melted and incorporated.
Add cheese. Off the heat, add in shredded cheddar and mozzarella cheese a handful at a time, whisking until melted.
Mix in pasta and ham. Stir in pasta and diced ham. Add additional salt and pepper to taste if desired. Serve immediately.