FHIR Chat · Version Independent FHIR Client · javascript

Stream: javascript

Topic: Version Independent FHIR Client


view this post on Zulip Grahame Grieve (Jan 20 2019 at 20:09):

I'm interested in providing a R4 client in JS for US-Core/Argonaut that supports Smart App Launch and that seamlessly handles R2 -> R4 servers transparently to the app. Is anyone else interested in this?

view this post on Zulip Josh Mandel (Jan 24 2019 at 19:20):

Definitely interested -- and we should think about resources to build/support this among folks here. Always curious to hear perspectives from developers using (and perhaps struggling with) multiple version of FHIR in JS today. e.g. @nicola (RIO/SS) have you thought about this use case before?

view this post on Zulip nicola (RIO/SS) (Jan 24 2019 at 21:05):

in js this problem doesn’t look too critical because of duck-typing ;) But yes we need versions transform library for js, not sure it should be as complex and non-DRY as fhir mapping language, envision something simpler. @Grahame Grieve can you share most complicated version translation case?

view this post on Zulip nicola (RIO/SS) (Jan 24 2019 at 21:08):

and still dream about backward and forward compatible version-less FHIR in future ;)

view this post on Zulip nicola (RIO/SS) (Jan 24 2019 at 21:09):

today i updated project from java 8 to 11 and everything works - so it possible

view this post on Zulip Grahame Grieve (Jan 24 2019 at 21:14):

the version transforms use the most complicated features of the transform language - sending content to different places based on the value of another element, using terminology services to lookup data, combining information into a list with controlled order

view this post on Zulip Grahame Grieve (Jan 24 2019 at 21:14):

but I'm not sure that an implementation of the transform language is the right solution (even though it's basically simple if you have a FHIRPath implementation)

view this post on Zulip nicola (RIO/SS) (Jan 24 2019 at 21:30):

@Grahame Grieve can you give more details about this most complicated case?

view this post on Zulip Paul Lynch (Feb 08 2019 at 17:57):

An issue I ran into yesterday along these lines was trying to write a FHIR query (using the fhir.js client) to query the latest Observation without a focus. It turns out that R3 servers do know about the "focus" parameter and return an error. It would be nice if the client could do that translation for me so I could write one thing that would work with either R3 or R4 servers.

view this post on Zulip Grahame Grieve (Feb 09 2019 at 04:46):

that's the kind of thing it would do

view this post on Zulip Abbie Watson (Feb 27 2019 at 04:54):

Symptomatic has tentative R2-R4 support with Smart App Launch client (with longitudinal timeline and CCD viewer). We just added algorithm selection support to our switchboard, and will soon be providing mapping services and functionality. [Symptomatic.Switchboard.png]
(https://chat.fhir.org/user_uploads/10155/R9uL66XmdpigGOB5MkKBax5c/Symptomatic.Switchboard.png)

view this post on Zulip Grahame Grieve (Feb 27 2019 at 07:15):

Is this easily useable as a general purpose JS client outside symptomatic?

view this post on Zulip Abbie Watson (Feb 27 2019 at 16:08):

Eh... depends on what you mean by 'easy'.

The switchboard component itself uses React and Minimongo and Simpl-Schema and Material UI, which are fairly opinionated and maybe not so easy to just drop into apps that are not prepared for it.

We could certainly compile the switchboard panel into a general purpose utility that could be easily installed and used outside Symptomatic. I've been bouncing back-and-forth between deploying it as a downloadable utility versus offering it as SaaS, but the switchboard doesn't necessarily need to be shipped with the timeline and CCD viewer. So... yes? But what's the business model there?

If you're desiring an underlying javascript library without GUI to just handle data transformations, we could refactor a few things and provide a scaffold of what that would we're using. We have a MedicalRecordsImporter object that is starting to collect methods for parsing and transforming specific versions. We usually do it a CCD/Bundle at a time with custom mappings and using minimongo cursors, rather than try to do something algorithmically with JsonSchema (we're moving in that direction, but still evaluating implementation pattern).


Last updated: Apr 12 2022 at 19:14 UTC