I thought my approach was pretty damn cool, lots of code though.
I drive my BT prints from BAQs. The BAQ pulls the desired data, controls the labels, determines the format to use, etc
Call the BAQ, parse the results to make the data for a BT API call.