FHIR Chat · TerminologyCapabilities · terminology

Stream: terminology

Topic: TerminologyCapabilities


view this post on Zulip Yunwei Wang (May 02 2018 at 20:47):

When responding metadata request, should a terminology server returns CapabilityStatement or TerminologyCapabilities or both?

view this post on Zulip Peter Jordan (May 02 2018 at 20:53):

The CapabilityStatement.

view this post on Zulip Yunwei Wang (May 02 2018 at 20:54):

Then what is the usage of TerminologyCapabilities resource?
I though that is a replacement of CapabilityStatement.

view this post on Zulip Robert McClure (May 02 2018 at 21:02):

I thought the idea was both

view this post on Zulip Peter Jordan (May 02 2018 at 21:09):

Every FHIR server is required to provide a CapabilityStatement in response to a metadata request. The TerminologyCapabilities resource is intended to provide additional information specific to Terminology Servers - e.g. which properties are supported for individual Code Systems. Support for the TerminologyCapabilities resource, where applicable, is declared in the Capability Statement. Expecting a Terminology Server to include a TerminologyCapabilities resource in its response to the a metadata request would require a breaking change in the specification.

view this post on Zulip Robert McClure (May 02 2018 at 21:10):

So you are saying it is an additional request to get the TerminologyCapabilities? What would the request be?

view this post on Zulip Rob Hausam (May 02 2018 at 21:10):

We've been discussing having an additional metadata endpoint specifically for the terminology service, but haven't made a decision on how to do that yet.

view this post on Zulip Peter Jordan (May 02 2018 at 21:16):

Same as other resources - GET with optional search parameters. The following request will return the (trial) TerminologyCapabilities resource from my server...
GET http://its.patientsfirst.org.nz/RestService.svc/Terminz/TerminologyCapabilities

view this post on Zulip Rob Hausam (May 02 2018 at 21:27):

Yes, you can do that with CapabilityStatement (and, as you said, any other resource), too. But 'metadata' is a designated endpoint for retrieving the single instance (in case there is more than one instance on the server) of the CapabilityStatement which declares the capabilities for this server (at that particular base endpoint). I think we likely want a similar "terminology metadata" endpoint for the terminology service (particularly because some servers may provide both general server capabilities and also specific terminology services).

view this post on Zulip Rob Hausam (May 02 2018 at 21:32):

here is a link to the prior discussion https://chat.fhir.org/#narrow/stream/48-terminology/subject/Accessing.20the.20server.20terminology.20capability.20statement, and to further work to be done for GF#14539

view this post on Zulip Peter Jordan (May 02 2018 at 21:35):

I guess there's a case for returning all the capabilities of a Terminology Server in a single request - and that would also need include all the OperationDefinition resources where a server doesn't support all the in/out parameters in the specification for a particular operation. On the other hand, given the large and unwieldy nature of what might be returned (particularly from an all-purpose server) there is also merit in continuing the approach where the ConformanceStatement provides references to additional capability and conformance related resources.

view this post on Zulip Grahame Grieve (May 05 2018 at 04:39):

It has to be possible to ask a server what it's own terminology capabilities are. It must also be possible for a server to host a list of terminology capability statements

view this post on Zulip Grahame Grieve (May 05 2018 at 04:39):

I lean towards adding an element or extension to the capability statement to refer to the the terminology capabilities rather than adding to the API

view this post on Zulip Michael Lawley (May 05 2018 at 04:55):

@Peter Jordan wouldn't [base]/TerminologyCapabilities return a Bundle containing all the TerminologyCapabilities stored on the server?

view this post on Zulip Michael Lawley (May 05 2018 at 05:04):

@Grahame Grieve I agree with @Rob Hausam - it would be very preferable to be able to get to a server's own terminology capabilities statement in a single request rather than having to first get the /metadata (this is already very slow on some systems).

view this post on Zulip Grahame Grieve (May 05 2018 at 05:11):

well, we won't solve the slowness problem by making it bigger

view this post on Zulip Peter Jordan (May 05 2018 at 05:29):

@Michael Lawley You're right. Mine currently just sends a single resource, but I'll correct that to place it in a bundle in the next release of my server.

view this post on Zulip Michael Lawley (May 05 2018 at 05:42):

No, I'd rather have a well-known endpoint like /terminologymetadata or /metadata/terminology or similar.
The alternative (which would make it bigger and which I also dislike) would be to have the terminology capabilities be returned from /metadata as a contained resource

view this post on Zulip Rob Hausam (May 05 2018 at 12:32):

I think it probably would be best to include a reference (not a contained resource) to the additional terminology (and any other applicable service) capabilities within CapabilityStatement and also provide known endpoint(s) where they are returned directly.

view this post on Zulip Yunwei Wang (May 06 2018 at 20:13):

why are there more than one TerminologyCapabilities instance on a server? Is that one for each coding system?

view this post on Zulip Peter Jordan (May 06 2018 at 21:21):

Not sure, but TerminologyCapabilities.codeSystem is 0...* and (interestingly) each codeSystem has a canonical uri element.

view this post on Zulip David Hay (May 07 2018 at 02:53):

Can you assume that GET [server]/TerminologyCapabilities actually refers to the terminology capabilities of THAT server? It's not the case for CapabilityStatement...

view this post on Zulip Rob Hausam (May 07 2018 at 03:00):

No, I don't think you can necessarily assume that. If the server supports general REST interactions then the presence of a TerminologyCapabilities resource instance may not indicate that the server supports those capabilities (just as with CapabilityStatement). So, as we've mentioned, I think an explicit endpoint is needed - via a specific dedicated endpoint for terminology capabilities or a reference from 'metadata' or both.

view this post on Zulip Grahame Grieve (May 07 2018 at 03:49):

a server that is a terminology server would generally only carry a single TerminologyCapabilities resource. But a server that has other purposes - a repository of systems, for instance, or a conformance server - might carry multiple terminology capabilities statements that describe other systems

view this post on Zulip Lloyd McKenzie (May 07 2018 at 10:26):

I don't think you can rely on that. If you want to know for sure what terminology capabilities a system supports, there needs to be an extension that points from CapabilityStatement to the TerminlogyCapabilities. (And I'm very much not sold on TerminologyCapabilities being a separate resource.)

view this post on Zulip Yunwei Wang (May 07 2018 at 16:12):

I agree with an extension for TerminologyCapabilities instance either as a reference or as an embedded resource.

view this post on Zulip Peter Jordan (May 07 2018 at 21:29):

@Lloyd McKenzie Support for the TerminologyCapabilities resource can already be declared in a CapabilityStatement. I don't believe that requiring clients to examine extensions in order to determine what a server can do is a particularly good strategy. Whether, not, the TerminologyCapabilities resource should be merged with CapabilityStatement is a moot point - but probably doesn't satisfy the use case whereby a server may contain multiple instances of the later. However, I believe there is a good argument for adding an operation that returns a bundle containing everything a particular terminology server supports, which would include OperationDefinitions for server-specific implementations of operations such as $expand.

view this post on Zulip Lloyd McKenzie (May 07 2018 at 21:36):

There are absolutely going to be situations where you'll need to look at extensions in CapabilityStatement - not everything a system can do can be part of core. (We already have extensions on CapabilityStatement for somethings)

view this post on Zulip Lloyd McKenzie (May 07 2018 at 21:36):

A server can have lots of instances of CapabilityStatement - but it only exposes one at the metadata endpoint, which is what matters here.

view this post on Zulip Peter Jordan (May 07 2018 at 21:57):

My remarks related to the single CapabilityStatement exposed by the metadata endpoint. IMHO, the TerminologyCapabilities resource is definitely an improvement on the previous use of extensions in the CapabilityStatement to declare support for external Code Systems. We need to make it as clear and simple as possible for clients to determine what a Terminology Server can do: I'm usually asked that question at least several times at each Connectathon and my reply in Cologne will be that 3 separate queries are required.

view this post on Zulip Lloyd McKenzie (May 07 2018 at 22:12):

I understand the desire to make things simple, but creating a new resource every time a new service comes along can't scale.

view this post on Zulip Michael Lawley (May 07 2018 at 22:13):

@Peter Jordan what are your three requests?
1. CapabilityStatement - /metadata
2. TerminologyCapabilities - /???
3. OperationDefinition???

view this post on Zulip Michael Lawley (May 07 2018 at 22:27):

well @Lloyd McKenzie, a "new service that comes along" wouldn't meet the 80% rule, right? How many service types are currently needing something like TerminologyCapabilities? I could posit something for workflow, and something for events/CDS maybe, but otherwise?

view this post on Zulip Lloyd McKenzie (May 07 2018 at 22:33):

CapabilityStatement is at /metadata. The CapabilityStatement points to relevant OperationDefinitions, StructureDefinitions, SearchParameters, etc. It would need to point to TerminologyCapability too - presumably via an extension. Merely hosting a TerminologyCapability says nothing about what the system can do. (And the TerminologyCapability for a system might not even be hosted by that same system - just as the OperationDefinitions, StructureDefinitions and other resources pointed to by the "metadata" CapabilityStatement of a server don't have to be hosted by that server.

view this post on Zulip Peter Jordan (May 08 2018 at 13:19):

@Michael Lawley
2. GET [base]/TerminologyCapabilities/Terminz-Example (will also work without the resource id)
3 GET [base]/OperationDefinition will return all the operation definitions on my Server, otherwise they can be requested individually using the URLs in the CapabilityStatement.

Can confirm that the Tsunami of FHIR Services hasn't reached NZ either. Flippancy aside, I do think that terminology services probably form a very distinct module within the FHIR spec, as evidenced by highly specific, product-based implementations.

view this post on Zulip Grahame Grieve (Oct 31 2018 at 21:07):

The vocab WG needs to make a formal proposal for TerminologyCapabilities resource

view this post on Zulip Grahame Grieve (Oct 31 2018 at 21:07):

note that the build depends on this resource now - I need to get information about the code systems from the tx.fhir.org

view this post on Zulip Grahame Grieve (Oct 31 2018 at 21:08):

as does the IG publisher

view this post on Zulip Rob Hausam (Oct 31 2018 at 21:11):

You mean retroactively submit the resource proposal? Do you recall what the deadline would be for that?

view this post on Zulip Grahame Grieve (Oct 31 2018 at 21:12):

it hasn't been proposed, and needs to be. we probably have 2 weeks or so

view this post on Zulip Rob Hausam (Oct 31 2018 at 21:13):

Right. So we can approve it on the call next week, then?

view this post on Zulip Grahame Grieve (Oct 31 2018 at 21:13):

yes

view this post on Zulip Rob Hausam (Oct 31 2018 at 21:13):

ok


Last updated: Apr 12 2022 at 19:14 UTC