IHTSDO / snowstorm

Scalable SNOMED CT Terminology Server using Elasticsearch
Other
208 stars 83 forks source link

Ancestors endpoint not the same as others #316

Closed Eneuman closed 3 years ago

Eneuman commented 3 years ago

Calling this URL works: http://localhost:8080/MAIN/SNOMEDCT-SE/concepts?language=sv&activeFilter=True&termActive=True&ecl=%3C%20106076001%20%7C%20fynd%20som%20r%C3%B6r%20huden%20%7C&term=hud&offset=0&limit=50

and calling this URL also works: http://localhost:8080/browser/MAIN/SNOMEDCT-SE/concepts/772997003/ancestors?form=inferred

but this does not http://localhost:8080/MAIN/SNOMEDCT-SE/concepts/772997003/ancestors?form=inferred

When calling "ancestors" I need to add "/browser/" to the begining of the URL for it to work.

Is this by design or is "ancestors" missing a endpoint?

kaicode commented 3 years ago

Hi @Eneuman, thanks for your question.

The endpoints without /browser in the URI are low level endpoints that are generally faster. These include GET /{branch}/concepts/{conceptId}/descendants but no explicit endpoint for fetching parents / ancestors. This can be achieved using ECL as per your first example.

The endpoints with /browser were built specifically to support the SNOMED CT public browser. These often include result summaries or aggregations and offer slightly different filtering options. These include GET /browser/{branch}/concepts/{conceptId}/ancestors and GET /browser/{branch}/concepts/{conceptId}/children which is equivalent to the low level descendants endpoint but also allows fetching counts of all descendants.

We do not have a low level ancestors endpoint so yes, please using the '/browser' ancestors one. These endpoints have really just evolved out of necessity. We have tried to avoid duplicating functionality where possible although the descendants and children endpoints are very close!

I hope that answers your question. Kind regards, Kai Kewley

Eneuman commented 3 years ago

Thank you for that excellent answer!

Now I know it's by design :) We are moving away from using our custom built Snomed Server and instead use snowstorm with kubernetes, so we haven't worked a lot with the Snowstorm APIs yet.

kaicode commented 3 years ago

Nice to hear that you think Snowstorm has potential for your use-case. Best of luck. We are here to answer your questions!