Git Product home page Git Product logo

tastyterm's Introduction

TastyTerm: FHIR Terminology Client

The TastyTerm is web-based frontend for FHIR terminology services. When run in standalone mode it will automatically connect to the HSPC terminology service. When launched in SMART-on-FHIR mode, it will use an authorization service and FHIR backend of your choice.

Developer Quick Start

This is an Angular project using ANGULAR CLI as the build system, pug for HTML templates, SASS for CSS and Bootstrap for layout. npm is the package manager. Assuming you already have node installed via brew install node or similar:

npm install -g @angular/cli
npm install # to install project development dependencies

To run in development mode, just:

ng serve # to serve the project and automatically recompile on file changes

Visit http://localhost:4200 and do your thang. :)

Building for Production

First, build:

ng build # to build your local copy with any local changes

Then, assuming you've already familiar with Docker awesomeness and have it installed, plop the build into a wicked-fast nginx web server container using the including Dockerfile with:

docker build -t p3000/tastyterm:latest . # though you probably want your own repo and tag strings :)
docker push p3000/tastyterm:latest # upload it to your repository

Production Deployment

This app respects the NODE_ENV environment variable when compiling the front-end. Be sure to set this appropriately. If not set, it defaults to development.

Deployment is extremely easy in your existing Dockerized hosting environment by pointing it at your TastyTerm installation. Just:

docker run -d -p 4200:80 --restart unless-stopped p3000/tastyterm:latest # or any official tag

In order to use Smart on FHIR mode, you must set your OAuth Client ID in a system environment variable named TASTYTERM_OAUTH_CLIENT_ID like this:

On Windows:

cmd /C "set "TASTYTERM_OAUTH_CLIENT_ID=[your client id]" && set"

On OSX/UNIX/LINUX:

export TASTYTERM_OAUTH_CLIENT_ID=[your client id]

And you're done. Jedi's may use your existing Kubernetes, Open Shift etc installations as you see fit. :)

License

Apache 2.0

tastyterm's People

Contributors

angular-cli avatar preston avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

tastyterm's Issues

Read OAuth client ID from env var somehow, instead.

This is a public client ID for OAuth authorization purposes, but the value is currently hardcoded to a development ID, which obviously won't work for others. This value needs to sanely set by a "TASTYTERM_OAUTH_CLIENT_ID" environment variable somehow, because that's how the deploying organization will expect to set it when running the app via the official Docker image.

var clientId = "42d354e7-2a17-4c19-8142-757934b40994";

Handle expired OAuth token renewal correctly.

Expired tokens aren't currently handled. After application launch, we just assume that it's always valid. :). The code needs be refactored slightly to move the authentication code into a proper service, with events that trigger for expiry. There are existing examples on the web, if needed.

It's important to not hack this, because the code will need to be reused in other projects.

Implement full-screen 3D navigation.

This borrows from a conceptual design of a prior work of mine. Will take an hour or so to explain the concept, and a little experimentation both to settle on the 3D library and figure out the best way to integrate it with Angular.

Finish implementing 2D web navigation.

I previously went down a few paths, but everything always felt lame. The 2D graph navigation should be intuitive to use, interactive, and fast to load related resources.

Need a permalinking mechanism.

As a user I'd like to get a permalink to the select code, so I can send a link to the same view to colleagues via email, chat apps, Word etc.

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.