Athena icon indicating copy to clipboard operation
Athena copied to clipboard

Performance: concepts with rich hierarchy

Open Alexdavv opened this issue 4 years ago • 5 comments

The pages of concepts with rich hierarchy are extremely heavy (>10MB) and basically unresponsive:

http://athena.ohdsi.org/search-terms/terms/35626993

How we actually want to represent such long lists?

image

image

Alexdavv avatar Mar 08 '20 17:03 Alexdavv

in cases like this, we should really be implementing "lazy load", e.g loading things in chunks (50 terms, for example) as people are scrolling through the list

@olga-ganina - please add to the backlog

gklebanov avatar Mar 08 '20 19:03 gklebanov

We wanted a lazy load anyway, where the hierarchy is not pre-loaded, and gets only pulled when the user clicks on "Hierarchy". And yes, for the 10MByters we can introduce chunkwise download, with "More" on the bottom.

cgreich avatar Mar 08 '20 19:03 cgreich

Hierarchy lazy loading already implemented within OHDSI/Athena#96, but here is a different problem: Concept relationships count is really huge: 104246 and it should be rendered on a single page. Not every browser can render such a huge table and it will hardly be usable after.

I am not sure about lazy loading because the page will become irresponsive later. I think we need something like - not to render more than e.g. 5K rows. but offer a link to download the CSV file for the local explorations. We can show a message saying something like: "Concept contains too many (NUMBER) rows that cannot be rendered. Please download CSV if you want to explore whole list locally. @gklebanov @cgreich - what do you think about offline download or paging + download?

acumarav avatar Mar 09 '20 09:03 acumarav

For some of the popular concepts the page cannot be loaded at all: https://athena.ohdsi.org/search-terms/terms/40642538

Alexdavv avatar Aug 30 '22 13:08 Alexdavv

I just stumbled upon this issue as I wanted to make a feature request for pagination functionality for concepts with a high number of relationships. A usable solution (in my eyes) would be to keep displaying all distinct relationship types (relationship_id) but for each type only show a number (e.g. 10) of relationships, and providing pagination if there are more.

thisismexp avatar Dec 19 '22 10:12 thisismexp