All Projects → lantanagroup → trifolia-on-fhir

lantanagroup / trifolia-on-fhir

Licence: Apache-2.0 license
Sister product to Trifolia Workbench that has native support for FHIR resources

Programming Languages

typescript
32286 projects
HTML
75241 projects

Projects that are alternatives of or similar to trifolia-on-fhir

Fhir.js
Node.JS library for serializing/deserializing FHIR resources between JS/JSON and XML using various node.js XML libraries
Stars: ✭ 61 (+165.22%)
Mutual labels:  engineering, node-js
boilerplate
Boilerplate for @prisma-cms
Stars: ✭ 22 (-4.35%)
Mutual labels:  node-js
OutSystemsNow-Android
Create mobile applications and enhance them with native capabilities using the OutSystems native components.
Stars: ✭ 20 (-13.04%)
Mutual labels:  engineering
haykal
A Typescript MVC Framework
Stars: ✭ 24 (+4.35%)
Mutual labels:  node-js
keywordsextract
keywords-extract - Command line tool extract keywords from any web page.
Stars: ✭ 50 (+117.39%)
Mutual labels:  node-js
posthog-node
Official PostHog Node library
Stars: ✭ 18 (-21.74%)
Mutual labels:  node-js
incubator-flagon-useralejs
Apache Flagon UserALE.js is a comprehensive, thin-client behavioral logging tool
Stars: ✭ 21 (-8.7%)
Mutual labels:  node-js
content-moderation-image-api
An NSFW Image Classification REST API for effortless Content Moderation built with Node.js, Tensorflow, and Parse Server
Stars: ✭ 50 (+117.39%)
Mutual labels:  node-js
sim8085
Online 8085 simulator
Stars: ✭ 83 (+260.87%)
Mutual labels:  engineering
E-Voting-App
A simple E-voting Decentralised App using the Ethereum Blockchain, Solidity and the MERN(MongoDB, Express.js, ReactJS, Node.js) stack
Stars: ✭ 84 (+265.22%)
Mutual labels:  node-js
final-pm
Finally a good node.js process manager.
Stars: ✭ 21 (-8.7%)
Mutual labels:  node-js
airports-db
Public airports database API service based on GitHub
Stars: ✭ 17 (-26.09%)
Mutual labels:  node-js
debug
A tiny JavaScript debugging utility modelled after Node.js core's debugging technique. Works in Node.js and web browsers
Stars: ✭ 10,554 (+45786.96%)
Mutual labels:  node-js
pymae
Materials for the book "Python for Mechanical and Aerospace Engineering"
Stars: ✭ 56 (+143.48%)
Mutual labels:  engineering
range3
Range Software - Finite Element Analysis
Stars: ✭ 31 (+34.78%)
Mutual labels:  engineering
dhan-gaadi
A complete online bus reservation system (Node, React, Mongo, NextJS, ReactNative)
Stars: ✭ 207 (+800%)
Mutual labels:  node-js
teaching-nodejs-expressjs-framework-spring-2019-2020
Complete Node-Express Application
Stars: ✭ 16 (-30.43%)
Mutual labels:  node-js
nodejs-dev-vm
DEPRECATED Simple Node.js Development VM using Vagrant + VirtualBox + Ansible
Stars: ✭ 25 (+8.7%)
Mutual labels:  node-js
backend-server
📠 The backend of the Fairfield Programming Association website.
Stars: ✭ 26 (+13.04%)
Mutual labels:  node-js
winston-dev-console
Winston@3 console format aimed to improve development UX
Stars: ✭ 88 (+282.61%)
Mutual labels:  node-js

Trifolia-on-FHIR

Build Status

Requirements

  • Angular CLI (for compiling) - See note above in "Running"
  • Java - to run the ig publisher
  • Jekyll - to run the ig publisher without errors
    • Jekyll must be available to the user that is running the Node.JS server. Consider adding the Ruby installation directory to the global PATH.
  • Node.JS (version 10+)

Building/Running

npm install             # install node modules
ng build client         # build the client application (output to dist/client)
ng build server         # build the server application (output to dist/server)
or alternatively npm run build-watch:all # build the client, server, and tools application concurrently (output to dist/server)
cd dist/server          # working directory should be the output of the server
node main.js            # run the server application, which also hosts the client application

Developers

ng build server --watch
ng build client --watch

Changes during development should be applied to the development branch. Once they are QA'd and approved, they are merged into the master branch and a release is made based on the master branch.

Configuration

The configuration files are in the dist/server/config directory. You may create a local.json file that overwrite default.json properties. Alternatively, you may create an environment-specific config file and use the NODE_ENV environment variable to indicate the name of the environment.

Example:

dist/server/config/production.json
NODE_ENV=production

Using NGINX as a reverse proxy for ToF

There are some rules in NGINX that are specific for WebSoocket to work properly. Specifically (proxy_http_version 1.1 & proxy_set_header Connection "Upgrade"). These are used to ensure that websocket will communicate through the proxy seemlessly to the upstream server.

Comments are in the configuration below to help illustrate the intent of each directive.

server {
        listen 80;
        server_name tof.example.com;

        location / {
                # Always return HTTPS
                return 301 https://$host$request_uri;
        }
}

server {
        listen          443 ssl;
        server_name     tof.example.com;
        error_log       /var/log/nginx/trifolia-fhir-error.log warn;
		
        location / {
                proxy_pass          http://someserver.local:49366;

                proxy_http_version  1.1;                                          # Because the WebSocket protocol uses the Upgrade header
                proxy_set_header    Host              $host;                      # Pass the proxied address to the upstream server
                proxy_set_header    X-Real-Ip         $remote_addr;               # Pass the origianl IP of the client
                proxy_set_header    X-Forwarded-For   $proxy_add_x_forwarded_for; 
                proxy_set_header    X-Forwarded-Proto $scheme;                    # Pass original protocol
                proxy_set_header    Upgrade           $http_upgrade;              # Upgrade connection if needed (needed by Websocket)
                proxy_set_header    Connection        "Upgrade";                  # Needed for WebSocket as an upgrade to HTTP protocol

                proxy_read_timeout  600s;                                         # Timeout for larger files

                proxy_buffers       16 4k;                                        # Buffers for larger files
                proxy_buffer_size   16k;

                client_max_body_size 200M;                                        # Request Entity Too Large
        }
}

Authentication

See the Wiki's Authentication page for information on how to configure authentication in ToF.

FHIR Server Requirements

  • Must be either an STU3 or R4 server
  • Must support creating resources via a PUT with an ID
  • Must support the $validate operation
  • Must support the $meta-delete operation
  • Must support ImplementationGuide search query parameters:
    • resource
    • global
  • Must support _has (reverse chaining) search criteria. For example: GET /StructureDefinition?_has:ImplementationGuide:resource:_id=<IG_ID>
  • Must support _include search criteria to get a list of all resources related to an implementation guide. For example: GET /ImplementationGuide?_id=some-ig-id&_include=ImplementationGuide:resource&ImplementationGuide:global

Features/functionality

  • FHIR Versions
    • STU3
    • R4
  • Switch between FHIR servers
  • OAuth2 Authentication
  • Person resource created for user
    • May eventually be used to auto-populate certain fields, or audit modifications to resources
  • Export
    • Create FHIR IG Package from IG
    • Execute against FHIR IG Publisher (with options)
  • Import (single resource text or multiple files)
  • Open from file system, save back to file system
  • Type-aheads for value set and code system selection
  • Selection based directly on value sets from FHIR specification

Resource UI Support

Resource Create Edit Save Validate Versions Additional Not supported Notes
ImplementationGuide X X X X DSTU3, R4
StructureDefinition X X X X DSTU3, R4 Element definitions support both DSTU3 and R4. Other properties in StructureDefinition may be different for R4.
ValueSet X X X X DSTU3, R4 $expand .compose.include.concept.designation
CodeSystem X X X X DSTU3, R4
CapabilityStatement X X X X DSTU3, R4
OperationDefinition X X X X DSTU3, R4
Questionnaire X X X X DSTU3, R4

Additional

See the WIKI and Help Documentation for more information.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].