FHIR Chat · Updating a standalone service to 1.5.x · cql

Stream: cql

Topic: Updating a standalone service to 1.5.x


view this post on Zulip Michael Riley (Oct 18 2021 at 17:56):

Hi CQL team, GTRI is still on a modified cql 1.2 engine, which doesn't have R4 support. We really should modernize; the 1.4 and 1.5 engine work is really strong and supports R4.

However we need to have cql as a seperate service from the data provider, and unless I'm misunderstanding the CQF-Ruler component, CQF-Ruler only resolves scripts on resources within it's own hapi fhir. I want a service that you can configure the base fhir data provider to point towards.

The cql-execution-service does this well, but it hasn't been updated in 2 years and is on CQL engine 1.3.10. Should I stay with the execution-service, or move to CQF-ruler, or is there another component I'm missing? Thank you for the help.

view this post on Zulip JP (Oct 18 2021 at 21:14):

There's WIP to support such a scenario on the cqf-ruler. The Library $evaluate operation supports this, Measure evaluate does not as of yet:
https://github.com/DBCG/cqf-ruler/blob/master/r4/src/main/java/org/opencds/cqf/r4/providers/LibraryOperationsProvider.java#L192

view this post on Zulip JP (Oct 18 2021 at 21:14):

Basically, you pass an extra parameter that's the "dataEndpoint".

view this post on Zulip JP (Oct 18 2021 at 21:22):

I try to update the cql-execution-service when I'm able, but obviously I haven't gotten to it in quite a while... :frown:

view this post on Zulip Michael Riley (Oct 19 2021 at 00:09):

Thank you! We have an instance of cqf ruler deployed in our local environment, I did not realized that the evaluate option allowed for external data sources, and we could probably just use this as our workflow. We'll test and let you know, and if the intention is to not support cql-execution-service then it should be our imputes to move to, imo.

view this post on Zulip Michael Riley (Oct 20 2021 at 16:36):

@JP So my team has been able to load some scripts up in CQF-ruler, and use both Basic authentication in an endpoint definition loaded in CQF and bearer authentication passed in at runtime in the $evaluate request itself to evaluate some CQL so that's great! I have a few other questions though.

1) Where are the FHIRHelper libraries loaded? I could not find where they were defined in CQF-ruler or how the libraryloader can reference them.
2) In our previous workflow, we added an Oauth token refreshing capability where we passed an access token to the service, and then if the FHIRDataProvider had a 401 because of token timeouts, we could automatically refresh the access token from a defined endpoint. Would there be similar kind of support for Smart-On-Fhir/Oauth workflow in the future?

view this post on Zulip JP (Oct 20 2021 at 16:39):

  1. The ruler uses some FHIRHelpers libraries that are embedded in the cql-translator binaries. We want to change that or make it configurable, but have not yet done so.
  2. I think at some point we'd like to support smart-on-fhir/oauth. There's some code in the upstream HAPI FHIR server to make some of that easier, but it's also not yet implemented. You have to refresh the token as needed when you pass in the Endpoint for now.

view this post on Zulip JP (Oct 20 2021 at 18:08):

Also, there's currently some work underway to bring the Library $evaluate operation closer in line with the CPG spec. The current implementation is based on an older draft. Just as a heads up.


Last updated: Apr 12 2022 at 19:14 UTC