Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Demonstrating postcoordination on SNOWSTORM-X. #9

Open
MarkHummeluhr opened this issue Sep 18, 2023 · 6 comments
Open

Demonstrating postcoordination on SNOWSTORM-X. #9

MarkHummeluhr opened this issue Sep 18, 2023 · 6 comments
Assignees
Labels
question Further information is requested

Comments

@MarkHummeluhr
Copy link

Hello,
We have a SNOWSTORM-X instance running in our environment. (for proof of concept purposes only). We have explored the specialist-API and the FHIR-API extensively and haven’t been able to resolve how to upload postcoordinations through the API’s. Can you point us in a direction on how to do this?
The ideal solution would be if we could create a codesystem, patchable through FHIR API.
Thanks
-Mark

@kaicode kaicode self-assigned this Sep 18, 2023
@kaicode kaicode added the question Further information is requested label Sep 18, 2023
@kaicode
Copy link
Member

kaicode commented Sep 18, 2023

Hi Mark.

The postcoordination functionality is available within the FHIR API of SnowstormX version 8.3.0 (and later).
Please refer to the Postman collection on the release page for that version.

These operations are the relevant ones:

Once you have created some expressions they can be included in ECL results. To achieve this use an implicit value set url starting with the URI of your CodeSystem Supplement.

For example:
ValueSet/$expand?url=http:https://snomed.info/xsct/11000003104?fhir_vs=ecl/<<125605004%7CFracture%20of%20bone%7C

This will include a mix of precoordinated and postcoordinated codes like this:
Screenshot 2023-09-18 at 14 48 59

Notes:

  • When inserting the first expression SnowstormX will need to load the SNOMED CT release archive into memory to perform classification. This will take around 90 seconds and 4g of heap space. The first request may timeout.
  • Subsequent insertions will classify in a couple of seconds. The ECL index is also updated within this time.
  • SnowstormX expects the SNOMED CT release archive in a releases directory relative to where SnowstormX was started with a archive name matching the format {module}_{effective-time}_snapshot.zip. For example for the International Edition this would be 900000000000207008_20230131_snapshot.zip. This must be the release archive of the SNOMED CT version that your expression repository supplements.
  • Please note that there is currently no way to upgrade an expression repository to a new version of SNOMED CT. This SnowstormX postcoordination feature has been created as a proof of concept for community feedback.

I hope that helps. Let me know how you get on. Please just ask if I have missed something.

Kai Kewley

@MarkHummeluhr
Copy link
Author

Thank you for the quick reply Kai!

We will try to replicate this over the following days and return with an update.

-Mark

@karoltech
Copy link

Hi Kai,
The server is now up and running and works fine with classification, with the first few predicates tested.

We now are trying to patch 30 000 items, and it seems to take some time, with no more logs after the following:
"Update ReasonerTaxonomy"

The server is still running, since other calls still produce logs and sensible responses.

Do you have guidelines for running such a bulk?

@kaicode
Copy link
Member

kaicode commented Sep 21, 2023

This solution has not been tested with a very large total amount of expressions.
Try smaller batches! Maybe start with 10 then 100, then 500 to see how the performance goes.

Check if SnowstormX is memory bound, assigning more memory may help, like:

java -Xms10g -jar snowstorm-x-8.3.0.jar

@karoltech
Copy link

@kaicode, thank you for your quick answer. We will take is as you advise, with small steps, and check how it goes.

@karoltech
Copy link

@kaicode : Hei, FYI it went real fast, i.e. on average 1.56 sec/call. Meaning we can now use 32 050 postcoordinated concepts in the terminology binding, where we had 55 precoordinated from before.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

3 participants