Only a workflow activity can change the workflow status of an item. In 2013 SP1 we did add an event allowing to change the approval status of an item but only when you add an item to a Bundle that is already in workflow. We are considering changing this in an upcoming release, but currently this is not possible.
So, for now your only solution would be to programmatically add the item to a workflow, and "move it" to the activity that sets the workflow status you want. If you don't actually care about keeping the item in workflow and all you want is to have the approval status, you could create multiple workflow process definitions (with a single automatic activity that sets the status you wish) and then, whenever the external system changes the status, programmatically add the item to the workflow and start it. This would then execute the automatic activity, setting the status of the item, and finish the workflow.