def get_terms_complete(self) -> pd.DataFrame:
        ''' Gets complete entity data like term/view '''
        if not self.terms_complete.empty:
            return self.terms_complete
        if self.from_backup:
            self.terms_complete = open_pickle(TERMS_COMPLETE_BACKUP_PATH)
            return self.terms_complete
        ilx2synonyms = self.get_ilx2synonyms()
        ilx2existing_ids = self.get_ilx2existing_ids()
        ilx2annotations = self.get_ilx2annotations()
        ilx2superclass = self.get_ilx2superclass()
        ilx_complete = []
        header = ['Index'] + list(self.fetch_terms().columns)
        for row in self.fetch_terms().itertuples():
            row = {header[i]:val for i, val in enumerate(row)}
            row['synonyms'] = ilx2synonyms.get(row['ilx'])
            row['existing_ids'] = ilx2existing_ids[row['ilx']] # if breaks we have worse problems
            row['annotations'] = ilx2annotations.get(row['ilx'])
            row['superclass'] = ilx2superclass.get(row['ilx'])
            ilx_complete.append(row)
        terms_complete = pd.DataFrame(ilx_complete)
        create_pickle(terms_complete, TERMS_COMPLETE_BACKUP_PATH)
        return terms_complete