PDQ Deploy on it's own is just used to push the software. The logic you'd have to build within PDQ inventory, which is monitoring the machines.
For my own packages, i'll build a deployment package, and then set up a dynamic list in Inventory monitoring for that package.
I.e. "package x not installed or not up to date"
The logic within that list would be:
software x not installed
software x installed
software x version less than y
Then my PDQ deploy package would be set to deploy on heartbeat or daily to the inventory "package x not installed or not up to date" list that is monitoring for those out of date conditions.
When i update a application then, i'll change the installer on the pdq deploy package to the new version, and change the monitoring version number (y) on the inventory list.