This is very easy and simple. If you want to exclude any value we use
NOT IN if they are multiple or
!= will also work.
So in your case first create set with all values which you want to exclude
set<string> appstatus = new set<string>();
then in your dynamic query
' ... where DocumentCommunication__r.Document_Status__c NOT IN: appstatus';
Also as this is a simple query so you can use static query as well
[ ... where DocumentCommunication__r.Document_Status__c NOT IN: appstatus];
From @DerekF Comments :
About the only caveat here is that using
NOT IN or != will cause the filter (something of the form field value) to not count towards making your query "selective". Query selectivity is probably not something that you need to worry about right now, but it is something to keep in mind. Generally speaking, I prefer using "positive" filters (those that use
=, IN, <, >, etc...) over negative filters
(!=, <>, NOT IN).