Coder Social home page Coder Social logo

clinical-meteor / node-on-fhir Goto Github PK

View Code? Open in Web Editor NEW
88.0 6.0 12.0 62.68 MB

Tech stack for building MACRA and 21st Century Cures compliant webapps.

License: GNU Affero General Public License v3.0

CSS 0.39% HTML 0.05% JavaScript 99.56%
node fhir webapp react meteor template argonaut uscdi

node-on-fhir's Introduction

Node on FHIR

CII Best Practices StackShare
CircleCI

NodeOnFHIR-Honeycomb2

Welcome to Node on FHIR. This code repository contains a reference FHIR server and web application stack written in modern ES6/Typescript/Javascript/Node that can compile to mobile devices. We have gone through the NPM repository, and tried to pull in as many FHIR related libraries as we could in order to find the 'center' of the Javascript FHIR community.

This project is an offshoot of the Meteor on FHIR project, which developed a Javascript/Node based FHIR application stack about 4 years ago. A the time, we chose Meteor.js, a full-stack application framework that used websockets as it's transportation mechanism with pub/sub functionality, because it had good support for clinician worklists use cases with a document oriented database and good support for data visualizations. Over time, we saw some limitations with the default Meteor tech stack, particularly with the data distribution protocol and the Blaze rendering layer. However, we've been quite pleased with the Meteor compiler and its support for mobile applications.

Eventually, we decided to do a soft fork of the Meteor project, and set up our own release track, which involved publishing 100+ packages, and began replacing the websocket/data-distribution-protocol with HL7 compliant OAuth/REST interfaces. We also were tracking many of the latest developments in the Javascript community, such as the release of React and EcmaScript 6, and began migrating our codebase forward. With the help of the Meteor Development Group, we were able to upgrade the default reference build to include best practices from across the Javascript ecosystem.

This repository is set up as a GitHub template, so you can simply fork it and adjust the settings file. Included is an example plugin which can be compiled and published to NPM itself. Importantly, this repository uses isomorphic code, meaning its the same modern ES6 code pattners on the client, server, and in the plugin packages.

Supported FHIR Libraries

The following FHIR libraries from the NPM repository have been validated to work with NodeOnFHIR.

Library Vendor Description
fhirclient smarthealthit The official SMART on FHIR javascript client
fhir-kit-client Vermonster Modern FHIR client with ES6, SMART, cross-version support, etc
fhir-starter symptomatic FhirUtilities, FhirDehydrator, and template FHIR UI components.
fhir-react 1uphealth Multi use react component
json-schema-resource-validation VictorGus FHIR validator for R4
sof-scope-checker Asymmetrik Utility to check SMART on FHIR scope access
fhirpath HL7 The official FHIRPath parser
is-fhir-date HenrikJoreteg Checks if a date is FHIR compliant
ts-fhir-types Ahryman40k Typescript definitions
fhir-list-addresses careMESH Utility function for extracting addresses
hl7v2 panates HL7 v2 parser, serializer, validator and TCP client/server.
redox-hl7-v2 Redox This is Redox's battle-tested in-house HL7v2 parser/generator.

Past Projects

The FHIR appplication server in this repository is the result of 7 years of work; 100+ prototypes and pilots, the result of a million+ quality control tests, and the contributions of dozens of different organizations, ranging from big tech companies (Google Chrome, Facebook React) and javascript specific projects (Meteor, Material UI) to healthcare specific companies (HL7, Vermonster, Asymmetrik, SmartHealthIT, etc). It represents a rich combination of functionality that is difficult to be found anywhere else. It has been used to build personal health records, a longitudinal timeline that was published to the Apple App Store, patient charting software, clinical worklists, pharmacogenomics pipelines, medical imaging software, medical home hubs, and many more systems.

BuiltWithNodeOnFHIR

Quickstart

# install the meteor compiler; this will take care of node, nvm, npm, yarn, etc.
# it will also set up debugging tools, a compiler build tool, etc
npm install -g meteor

# download the node-on-fhir application
git clone https://github.com/clinical-meteor/node-on-fhir
cd node-on-fhir

# install dependencies
meteor npm install

# alternative, use yarn if you'd like a more modern package manager
meteor yarn install

# run the application in local development mode
# this will automatically launch a mongo instance
meteor run --settings configs/settings.nodeonfhir.json  

# stop the application with Ctrl-C

# add custom packages (the FHIR server)
cd packages
git clone https://github.com/clinical-meteor/vault-server
meteor add clinical:vault-server
cd ..

# now run it with a custom settings file
# does it compile?
meteor run --settings configs/settings.nodeonfhir.localhost.json

# can we get to the FHIR server yet?
open http://localhost:3000/metadata


# does it run?  can we get to the FHIR server?  To the Patient route?
open http://localhost:3000/baseR4/metadata
open http://localhost:3000/baseR4/Patient

# stop the application with Ctrl-C

# download custom packages
cd packages
git clone https://github.com/clinical-meteor/example-plugin
cd ..

# alternatively, run the config from a plugin
meteor run --settings packages/example-plugin/configs/settings.example.json  --extra-packages clinical:example-plugin

# when you're ready to deploy, you'll need to add the package to the app (meteor deploy won't accept --extra-packages)
meteor add clinical:example-plugin

# after adding the plugin, you can simply run the following
meteor run --settings packages/example-plugin/configs/settings.example.json

Important Links

Technology Stack

StackShare

References

node-on-fhir's People

Contributors

awatson1978 avatar dependabot[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

node-on-fhir's Issues

Add invitation code expiration date

Need an expiration date for when an invitation code expires, so it doesn't persist indefinitely.

// server/AccountServer.js
if(get(Meteor, 'settings.private.invitationCode')){
  if(moment().now() < get(Meteor, 'settings.private.invitationExpirationDate')){
    // do some stuff
  } 
}

[DEPRECATED] [email protected]: simple-oauth2 v2 is no longer supported.

Describe the deprecation
Please provide a clear and concise description of what library has been deprecated.

The Error Message
The following error message was emcounted:

warning [email protected]: simple-oauth2 v2 is no longer supported. Please upgrade to v3 for further support
warning simple-oauth2 > [email protected]: This module has moved and is now available at @hapi/wreck. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.
warning simple-oauth2 > wreck > [email protected]: This module has moved and is now available at @hapi/bourne. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.
warning simple-oauth2 > [email protected]: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
warning simple-oauth2 > joi > [email protected]: This module has moved and is now available at @hapi/topo. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.
warning simple-oauth2 > wreck > [email protected]: This module has moved and is now available at @hapi/boom. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.
warning simple-oauth2 > wreck > [email protected]: This module has moved and is now available at @hapi/hoek. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.
warning simple-oauth2 > joi > [email protected]: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
warning simple-oauth2 > joi > topo > [email protected]: This module has moved and is now available at @hapi/hoek. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.
warning simple-oauth2 > wreck > boom > [email protected]: This module has moved and is now available at @hapi/hoek. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.

To Reproduce
Steps to reproduce the behavior:

  1. Any custom packages or plugins you may be using.
symptomatic:vault-server
  1. Identify the build pipeline(s) used when producing the error.
yarn-install

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: yarn

Additional context
Add any other context about the problem here.

Remove .pem files

These .pem files were for testing and sandbox usage only, but are causing warnings and not a best practice. Need to remove and rebase.

[DEPRECATED] material-fhir-ui > [email protected]:

Describe the deprecation
Babel presets still being used in material-fhir-ui. Need to update that build pipeline.

The Error Message
The following error message was emcounted:

warning material-fhir-ui > [email protected]: We're super ๐Ÿ˜ธ  excited that you're trying to use ES2017+ syntax, but instead of making more yearly presets ๐Ÿ˜ญ , Babel now has a better preset that we recommend you use instead: npm install babel-preset-env --save-dev. preset-env without options will compile ES2015+ down to ES5 just like using all the presets together and thus is more future proof. It also allows you to target specific browsers so that Babel can do less work and you can ship native ES2015+ to user ๐Ÿ˜Ž ! We are also in the process of releasing v7, so please give http://babeljs.io/blog/2017/09/12/planning-for-7.0 a read and help test it out in beta! Thanks so much for using Babel ๐Ÿ™, please give us a follow on Twitter @babeljs for news on Babel, join slack.babeljs.io for discussion/development and help support the project at opencollective.com/babel
warning material-fhir-ui > babel-preset-latest > [email protected]: ๐Ÿ™Œ  Thanks for using Babel: we recommend using babel-preset-env now: please read https://babeljs.io/env to update!
warning material-fhir-ui > babel-preset-latest > [email protected]: ๐Ÿ™Œ  Thanks for using Babel: we recommend using babel-preset-env now: please read https://babeljs.io/env to update!

To Reproduce
Steps to reproduce the behavior:

  1. Any custom packages or plugins you may be using.
material-fhir-ui
  1. Identify the build pipeline(s) used when producing the error.
yarn install

Error running nodeonfhir config

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Run with meteor --settings config/settings.nodeonfhir.json
Receive the following errors:

[[[[[ /usr/src/app ]]]]]

=> Started proxy.
=> Meteor 2.10.0 is available. Update this project with 'meteor update'.
=> Errors prevented startup:

   While selecting package versions:
   error: unknown package in top-level dependencies:
   mitre:space-health-registry
   unknown package in top-level dependencies: mitre:consent-engine

=> Your application has errors. Waiting for file change.

Additional context
Running in Docker using the following Dockerfile:

FROM node:14.20

ARG config="configs/settings.nodeonfhir.json"
ARG user=meteor
ARG group=meteor
ARG uid=1001
ARG gid=1001

ENV ROOT_URL="http://localhost:3000"
ENV NODE_ENV="test"

RUN curl "https://install.meteor.com/" | sh

COPY . /usr/src/app
WORKDIR /usr/src/app

RUN groupadd -g ${gid} ${group}
RUN useradd -u ${uid} -g ${group} -s /bin/sh -m ${user}
RUN chown -Rh ${uid} /usr/src/app
RUN chmod -R 700 /usr/src/app

USER ${uid}:${gid}

RUN meteor npm install

EXPOSE 3000
CMD ["meteor", "--settings", "${config}"]

Add core FHIR JSONSchema libraries to boilerplate

Is your feature request related to a problem? Please describe.
r4 and r5 JSONSchema libraries should be included in main boilerplate.

Describe the solution you'd like
Will need JSONSchema to SimpleSchema parsing.

Upgrade to Meteor v3.0

Meteor v3 (beta) has been released. Time to migrate to await/async across entire application.

Add user interface for Environment Detection (AppInfoPage)

Issue created in response to discussion in #22.

The predecessor project Meteor on FHIR eventually evolved towards including an AppInfoPage that included the About the Business card along with some environmental config info.

Screen Shot 2020-01-05 at 11 37 53 AM

We need to display environmental configs, so people understand in what state the app is running.

Must Haves

  • Meteor Accounts User ID
  • Connected Status
  • NODE Environment
  • Meteor Base URL
  • Git Release Version
  • Git Branch
  • Git Commit

Under Consideration

  • HTTP Protocol
  • Browser Timezone
  • Server Timezone
  • System Status

Any others?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.