The last conditional should work. Please use a stdout { codec => rubydebug } output instead of your elasticsearch output so we can see exactly what your event looks like.
But the problem here isn't that the date filter is getting told to parse an empty string, it's that Elasticsearch is given an empty string. Perhaps you should delete the PlannedCompletionDate field if it's empty?