Stream: implementers
Topic: Terminology server
Hans van Amstel (Jun 05 2020 at 11:00):
Hi I would like to create my own terminology server for our own specific codes. These codes are in FHIR codesystems/valuesets. I am looking for an open source (reference implementation of an) terminology server that I can run locally and add my own valuesets/codesystems to. Performance is for now not the main driver as it is mainly a proof of concept.
Jens Villadsen (Jun 05 2020 at 12:28):
HAPI will do the job
Hans van Amstel (Jun 08 2020 at 08:10):
Thanks this works, is there a way to have it also lookup loinc codes or ave the loinc codes lookup forwarded to the loinc terminology server.
Rob Hausam (Jun 08 2020 at 12:17):
HAPI has a loader for LOINC so that you can host the LOINC codes on your server if you wish to do that.
Kirstine Rosenbeck Gøeg (Sep 17 2020 at 13:32):
I have been working on a similar solution. Is there a way to get my implementation guide to use the CodeSystems and ValueSets specified in my 'Hapi terminology server' e.g. showing a ValueSet and expanding it correctly? The documentation for the IG publisher says that for the -tx option "default is http://tx.fhir.org/r4, which is currently the only supported option" - is there a way around this?
Rob Hausam (Sep 17 2020 at 13:44):
I haven't tested this lately. You would need to have all of the current FHIR code systems and value sets loaded on your terminology server to make it work, but that shouldn't be too difficult. Have you tried it?
Grahame Grieve (Sep 17 2020 at 19:58):
There is a general intent to allow HL7 affiliates to specify a different terminology server default for the affiliate, but that's parked until I have a time to do some more work on enhancements to the server since tx.fhir.org is running some custom modifications for the validator right now
Rob Hausam (Sep 18 2020 at 04:07):
Yes, that does make a difference.
Kirstine Rosenbeck Gøeg (Sep 18 2020 at 06:53):
Thanks. I will host the CodeSystems and ValueSets in my implementation guide for now. I will follow the work related to affiliate specific terminology servers, which seems like a good option! At some point it would be very valuable to maintain CodeSystems and ValueSets, independently, not as part of the information model. It would also be a good solution for translated (and possibly extended) content e.g. SNOMED CT, ICPC2 and ICD10 - instead of putting it all, or some of it, on tx.fhir.org.
Grahame Grieve (Sep 18 2020 at 07:38):
well, there are other options. You can publish a package containing the content, and then refer to the package. The terminology server can automatically pick up packages published like this
Grahame Grieve (Sep 18 2020 at 07:39):
there is also a way for tx.fhir.org to delegate support for specific code systems - I'm doing that now for HGVS, but I haven't generalised that yet
Kirstine Rosenbeck Gøeg (Sep 18 2020 at 08:07):
If I want to " publish a package containing the content, and then refer to the package." Can you point me to a place in the documentation describing this? I am guessing that I declare it in ImplementationGuide.dependsOn?
Grahame Grieve (Sep 22 2020 at 11:20):
getting back to this:
Grahame Grieve (Sep 22 2020 at 11:23):
yes, you declare dependency in the dependsOn. It's publishing the package itself that is more complicated. The order of actions is roughly:
- create the package (conforming to the FHIR NPM Package spec, and containing the code systems and value sets you care about)
- put it on the web somewhere
- create an RSS feed that links to it
- register the RSS feed in the IG registry
- wait for the package registries to pick it up - 1-24 hours
Grahame Grieve (Sep 22 2020 at 11:23):
If you are using simplifier, it can save you from the leg work
Ward Weistra (Sep 22 2020 at 14:19):
@Kirstine Rosenbeck Gøeg Here's documentation on how to publish a FHIR package from a FHIR project in Simplifier.net: https://docs.fire.ly/simplifier/simplifierPackages.html#publish-packages. Let me know if you have questions!
Kirstine Rosenbeck Gøeg (Sep 23 2020 at 07:26):
Thanks. Both of you.
AJ Chen (Oct 01 2020 at 19:37):
I'm using validator.jar in CCD to FHIR conversion pipeline. Help page https://confluence.hl7.org/display/FHIR/Using+the+FHIR+Validator says it can run without terminology server. How to turn off terminology server in java code? Thanks. -aj
Grahame Grieve (Oct 01 2020 at 20:29):
not quite sure what you're asking, but usually with -tx n/a
AJ Chen (Oct 01 2020 at 21:24):
Thank you Grahame. I mean in my java class to configure to skip using terminology server for code validation. We are not using CLI and so - tx switch not applicable.
Grahame Grieve (Oct 01 2020 at 21:38):
then how are you loading it? Are you using ValidationEngine?
AJ Chen (Oct 01 2020 at 21:50):
We do this:
IValidator validator = new ValidatorImpl();
ByteArrayOutputStream os = (ByteArrayOutputStream) validator.validateBundle(bundle);
AJ Chen (Oct 02 2020 at 14:52):
How to use ValidationEngine to turn off using any Terminology server in java code?
Grahame Grieve (Oct 02 2020 at 21:56):
you need to ask this on the #hapi stream since you're using the HAPI wrapper (I presume)
AJ Chen (Oct 05 2020 at 21:25):
@Grahame Grieve
we do use ValidationEngine to connect to TS:
validationEngine.connectToTSServer(tServerURL);
if no TS is connected, fhir validator will throws exception when checking code:
java.lang.NullPointerException: null
at org.hl7.fhir.dstu2.utils.BaseWorkerContext.supportsSystem(BaseWorkerContext.java:68)
at org.hl7.fhir.dstu2.validation.InstanceValidator.checkCode(InstanceValidator.java:419)
My question is: what is the correct way to turn off ValidationEngine's terminology validation? When we first convert CCD to FHIR, we only need to check FHIR format, but not medical codes.
Grahame Grieve (Oct 06 2020 at 04:55):
you're passing null to connectToTSServer? What happens if you don't call it at all?
AJ Chen (Oct 06 2020 at 16:27):
if don't call validationEngine.connectToTSServer(tServerURL), fhir validator will throws exception when checking code:
java.lang.NullPointerException: null
at org.hl7.fhir.dstu2.utils.BaseWorkerContext.supportsSystem(BaseWorkerContext.java:68)
at org.hl7.fhir.dstu2.validation.InstanceValidator.checkCode(InstanceValidator.java:419)
if passing null server, fhir validator throws URI syntax error:
java.lang.NullPointerException: null
at java.net.URISyntaxException.<init>(URISyntaxException.java:64)
at java.net.URISyntaxException.<init>(URISyntaxException.java:82)
at org.hl7.fhir.dstu2.utils.client.ResourceAddress.buildAbsoluteURI(ResourceAddress.java:230)
@Grahame Grieve is there a config setting for "not checking terminology server"?
Grahame Grieve (Oct 07 2020 at 01:00):
oh. I realised what the problem is here. You're using the r2 ValidationEngine. I stopped maintaining that years ago. You sholud always use the R5 validation engine, irrespective of what version you are working with
AJ Chen (Oct 09 2020 at 19:17):
Ah, thanks. Will try R5 validation engine.
Lin Zhang (Oct 10 2020 at 00:01):
I'm looking for a [relatively] complete/sysematic 101 guide for creating/setting up a terminology server. Anything to recommend? Thanks.
Jim Steel (Oct 20 2020 at 04:27):
Depends on what you want it for
Lin Zhang (Oct 20 2020 at 04:41):
As a start, I'm looking forward to bulk importing common classifications such as ICD-10 and its variants.
Jim Steel (Oct 20 2020 at 05:25):
It's probably going to vary quite a lot depending on which server you're deploying
Jim Steel (Oct 20 2020 at 05:32):
Unless you mean for building one from scratch
Lin Zhang (Oct 20 2020 at 06:13):
Based on HAPI
Jim Steel (Oct 20 2020 at 06:15):
Well, I'm obviously going to say "Don't build one; buy one". But I'm biased.
Lin Zhang (Oct 20 2020 at 06:38):
I wanna say "me too":big_smile:
Last updated: Apr 12 2022 at 19:14 UTC