@Override
protected QueryTask calculateMatches(Association as, PresentationContext pc,
Attributes rq, Attributes keys) throws DicomServiceException {
QueryRetrieveLevel level = QueryRetrieveLevel.valueOf(keys, qrLevels);
level.validateQueryKeys(keys, rootLevel,
rootLevel == QueryRetrieveLevel.IMAGE || relational(as, rq));
DicomDirReader ddr = getDicomDirReader();
String availability = getInstanceAvailability();
switch(level) {
case PATIENT: