public ProjectPatientMap getProjectPatientMap( String i2b2User, String i2b2Token, String i2b2Url, String i2b2Domain, String i2b2Project) throws FhirServerException { if (status.isComplete(i2b2Project)) { return getProjectPatientMapLocking(i2b2Project); } if (!(status.isProcessing(i2b2Project) || status.isComplete(i2b2Project))) { fetchPatientList(i2b2User, i2b2Token, i2b2Url, i2b2Domain, i2b2Project); } while (status.isProcessing(i2b2Project)) { logger.info("waiting on complete status"); try { Thread.sleep(1000); } catch (InterruptedException e) { logger.error(e.getMessage(), e); } } return getProjectPatientMap(i2b2User, i2b2Token, i2b2Url, i2b2Domain, i2b2Project); }