Some strategies for finding 'if a firefight is on'.
Easier one: A script and a trigger: The script awaits a couple of Global variables (say, WestIsFiring and EastIsFiring). When both these bools are true, you've got yourself a firefight. The trigger has a radius of whatever your 'firefight zone' is and is constantly updated to the player's position. Its ctivation is Anyone Present, it adds "fired" eventhandlers for everyone in range (and some checks to make sure it doesn't run more than one per soldier), another script run by the EH checks the side of the firer. If west, set WestIsFiring true, if east set EastIsFiring True.
Harder one: Instead of the trigger, have a script which does a bunch of NearestObject checks in a grid pattern around the player, every so often. This would be more difficult to achieve, but would mean that the script works in any mission, and doesn't require the mission maker to set up a trigger themselves.
On reflection, you probably don't even need checks for each side. The AI don't (normally) fire for no reason, so it would be safe to assume that if ANY ai of ANY side is firing, there is a firefight going on.