Stream: javascript
Topic: Node on FHIR
Abbie Watson (Dec 12 2019 at 04:25):
Happy Holidays! We loaded up all of the FHIR related libraries on NPM into a reference build, which we've branded simply as "Node on FHIR". Suitable for direct-to-consumer mobile apps, microservice architectures, blockchain DApp infrastructure, prototyping, and many other uses.
If you have a GitHub account, give it a star if you think it might be useful (we qualify for Open Collective crowdfunding if we get to 100 GitHub stars). And please share around. :)
https://github.com/symptomatic/node-on-fhir
https://github.com/symptomatic/node-on-fhir/blob/development/public/node-on-fhir-logo.png?raw=true
Morten Ernebjerg (Dec 12 2019 at 10:01):
Hi @Abigail Watson - nice! Does it support validation against custom profiles? (I see you use the json-schema-resource-validation
module but that seems to be only for validation against the base spec).
Abbie Watson (Dec 12 2019 at 16:12):
Does it support validation against custom profiles?
Well, I haven't personally added it in (yet). So any support for it would be through json-schema-resource-validation
; but like you say, they don't seem to be recommending custom schemas. My suggestion is that we might want to file an issue with the VictorGus/ValidationFHIR repository, as I just did with issue 3.
That being said, validation against custom profiles is certainly something we would be willing to put on the roadmap and accept pull requests for.
Morten Ernebjerg (Dec 13 2019 at 08:35):
Thanks for the "proxied" GH issue! Right now, I'm just looking around to understand the availability of (profile-specific) validation in different languages - our exact needs are not quite clear yet.
Mikael Rinnetmäki (Dec 19 2019 at 06:36):
Awesome stuff, starred!
Mikael Rinnetmäki (Dec 19 2019 at 06:38):
When reading the README, it says
There's currently three (3) javascript client libraries in the NPM repository right now. We have
and then continues to list 13 libraries. Seems a bit confusing, although someone knowledgeable may notice that the 3 first libraries are generic client libraries, others are more specific ones. Right?
Abbie Watson (Dec 19 2019 at 16:59):
Thanks! Yes, that is correct. We found ~13 FHIR libraries, 3 of which qualify as SMART on FHIR clients. We might have space to add another column to the table to clear things up.
Sean McIlvenna (Dec 19 2019 at 17:40):
Can the server be run as part of another Node.JS application? And where can I find documentation on what parameters are supported by the FHIR server? For example: is _has supported? or _include?
Abbie Watson (Dec 19 2019 at 17:48):
Yes!!! Yes, it can! One of the major upgrades from it's predecessor Meteor on FHIR.
The dependency you're looking for is @asymmetrik/node-fhir-server-core, which can be pulled into different Node apps. Importantly, you can run Node on FHIR as a server, and connect to it from a separate client; or you can use Node on FHIR as an application server and connect to another FHIR repository. It's completely decoupled, compared to the tightly coupled DDP interface we had in Meteor on FHIR. This was probably the most important reason for us doing a project rewrite and basically doing a 2.0.
Regarding _has
and _include
support, that's a question for the Asymmetrik folks. They support the operations framework, and have documentation on creating custom operations. So, it should be able to get the job done. But it's a good question, and worth tracking as an issue until we can get a confirmed answer.
https://github.com/Asymmetrik/node-fhir-server-core/blob/master/docs/CustomOperations.md
Sean McIlvenna (Dec 19 2019 at 17:50):
I have a node.js server app that gets webpacked to reduce the size of the distributable. If I were to add node-fhir-server-core as a dependency, do you think I would encounter problems during web-pack?
David Hay (Dec 19 2019 at 18:20):
BTW the links from here: https://www.npmjs.com/package/@asymmetrik/node-fhir-server-core don't seem to work...
Abbie Watson (Dec 19 2019 at 18:20):
That really depends on whether your webpack is set up for CommonJS or ES6. The Asymmetrik library appears to be written in CommonJS and uses require
statements, so... I would lean on 'yes/maybe' it will give hiccups and you'll need to edit your webpack config. At the same time, pretty sure that there's a webpack config out there in the world that would support the CommonJS, since it's an older technology. So yes on both. Yes on problems and hiccups; but also yes that it can be done.
We spent a lot of time working those details out in the Meteor community, and have upstream tech leads at the Meteor Development Group that have spent a fair bit of time trying to get ES6 and CommonJS and a dozen other technologies all working together. We also support webpack, but it's not used by default.
David Hay (Dec 19 2019 at 18:24):
'plugin settings' from here: https://github.com/symptomatic/node-on-fhir references localhost...
Abbie Watson (Dec 19 2019 at 18:28):
Ah, great catch, David. That link was meant to direct to the demo page. Submitting a patch.
http://node-on-fhir.meteorapp.com/hello-world
David Hay (Dec 19 2019 at 18:32):
np - btw right now the framework is read-only - right?
(oh, and awesome work btw - I love node :) )
Abbie Watson (Dec 19 2019 at 18:38):
What do you mean by read-only? It's set up as a GitHub template, so it's meant to be forked, and edits merged in through a GitFlow process through pull requests.
https://leanpub.com/git-flow/read
As for the default build, it's more of an application server that serves up a client application. Which might be what you're thinking of read access. But you could certainly use the fhir-kit-client
to write/POST to FHIR repositories, if that's what you wish to do.
David Hay (Dec 19 2019 at 19:03):
tx
Abbie Watson (Jan 28 2020 at 19:14):
I'm excited to announce a new release of Node on FHIR, v0.2.0
https://github.com/symptomatic/node-on-fhir/releases/tag/v0.2.1
Before we start on the Touchstone tests or start the rewrite of the PHR, I wanted to get a performance baseline. And there's a nice utility called Lighthouse that runs in Google Chrome and was readily available to help do this. This led us to implementing a number of features that I now wish we had on previous projects.... server side rendering, service workers, search engine optimization, robust accessibility support. We also slimmed the entire size down from ~9MB to around 4MB.
Anyhow, lots of improvements for anybody following this project.
Lighthouse-Audit-Performance.png
Abbie Watson (Mar 23 2020 at 04:58):
v0.3.0 released.
https://github.com/symptomatic/node-on-fhir/releases/tag/0.3.0
- HL7 FHIR Data Infrastructure refactored into a single package
- Prominent double-height header now available.
- Updates to default FhirQueryPage
- Footer, Header, and Sidebar all accept plugin components from packages
- Robust updates to PatientTable, EncounterTable, ProcedureTables, etc
- Quality Control Infrastructure
- Validation Tests (E2E Testing)
- Static Code Analysis (Linting)
Abbie Watson (Apr 22 2020 at 00:13):
Version 0.4.0 just released, with SMART on FHIR provider launch context, Patient Charting, and updated UI components in clinical:hl7-fhir-data-infrastructure
to support the SANER IG.
https://github.com/symptomatic/node-on-fhir/releases/tag/v0.4.0
v0.4.0 - Patient Charting with SMART on FHIR
- Upgraded to the official SMART on FHIR client library.
- Added provider launch context.
- Added a basic patient chart with most of the Argonaut / USCDI FHIR resources.
- Added quicklaunch functionality to pull patient chart when being launched from an EHR.
- Autoconfiguration checks Capability Statement on launch, and adjusts queries accordingly.
- No Data cards and workflows.
- Added additional Clinical Parameters to Bulk Data Fetch.
- Updated license terms to MIT, in consideration of pandemic response.
- Updated privacy policy to reflect redesigned example page.
v0.3.2 - COVID19 - Geocoding, Heatmaps, and Measure Reports
- Google Maps integration, with markers and heatmaps.
- Geocoding pipelines codes Address datatypes into Locations with Lat/Lng
- Sidebar Workflows separated from FHIR Resource links.
- Server side hospital index with 2dsphere index.
- Proximity searches on both client and server using $near operator.
- Map controls for radius, opacity, and max intensity. Toggle labels and markers on/off.
- Covid19-Reporting plugin which includes Measure and Measure Reports.
- Sample data includes grocers file, CDC measures, and hospital index file.
v0.3.1 - COVID19 - FHIR Queries
- Replaced the old example plugin with the Covid19 on FHIR plugin.
- Preliminary integration with Synthea via the Covid19 Module.
- Validated bulk data query operations with Covid19 related LOINC and SNOMED codes.
- Major updates to resource tables in the HL7 FHIR Data Infrastructure package.
Also, a project landing page update:
http://node-on-fhir.meteorapp.com/
Last updated: Apr 12 2022 at 19:14 UTC