Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Asymmetrik to BlueHalo Naming Updates #351

Merged
merged 6 commits into from
Sep 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
# Core team members for FHIR at Asymmetrik
# Core team members for FHIR at BlueHalo

* @Robert-W @jonterrylee @zeevosec @luan-dev
* @jonterrylee @zeevosec @luan-dev @otchetbluehalo @ekdeveloper @reblace
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@

**What are the steps to reproduce?**

**What OS are you using and what version of node.js and @asymmetrik/node-fhir-server-core are you running?**
**What OS are you using and what version of node.js and @bluehalo/node-fhir-server-core are you running?**
6 changes: 3 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ First off, Contributions are always welcome and we appreciate any help you can o

## Before you begin

Below are some general guidelines we try to stick to on all of our FHIR related repositories. When contributing to `@asymmetrik/node-fhir-server-core`, we do ask that you do your best to follow these guidelines.
Below are some general guidelines we try to stick to on all of our FHIR related repositories. When contributing to `@bluehalo/node-fhir-server-core`, we do ask that you do your best to follow these guidelines.

### Branch Organization

Expand Down Expand Up @@ -80,8 +80,8 @@ When cutting a release, the following steps need to be performed.

## Resources

For more information about how things are designed and how they work, please consult our [wiki](https://github.com/Asymmetrik/node-fhir-server-core/wiki).
For more information about how things are designed and how they work, please consult our [wiki](https://github.com/bluehalo/node-fhir-server-core/wiki).

## Issues

Please file your issues [here](https://github.com/Asymmetrik/node-fhir-server-core/issues) and try to provide as much information in the template as possible/relevant.
Please file your issues [here](https://github.com/bluehalo/node-fhir-server-core/issues) and try to provide as much information in the template as possible/relevant.
20 changes: 10 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
# Asymmetrik FHIR API Server
# BlueHalo FHIR API Server

> A Secure Rest implementation for the [HL7 FHIR Specification](https://www.hl7.org/fhir/). For API documentation, please see [our documents](https://github.com/Asymmetrik/node-fhir-server-core/tree/master/docs).
> A Secure Rest implementation for the [HL7 FHIR Specification](https://www.hl7.org/fhir/). For API documentation, please see [our documents](https://github.com/bluehalo/node-fhir-server-core/tree/master/docs).

[![Build Status](https://travis-ci.org/Asymmetrik/node-fhir-server-core.svg?branch=develop)](https://travis-ci.org/Asymmetrik/node-fhir-server-core)
[![Build Status](https://travis-ci.org/bluehalo/node-fhir-server-core.svg?branch=develop)](https://travis-ci.org/bluehalo/node-fhir-server-core)

The Asymmetrik Extensible Server Framework for Healthcare allows organizations to build secure, interoperable solutions that can aggregate and expose healthcare resources via a common HL7® FHIR®-compatible REST API. This server framework currently supports **DSTU2** (1.0.2), **STU3** (3.0.1), and **R4** (4.0.0) simultaneously. You can decide to support all three or just one by editing the configuration.
The BlueHalo Extensible Server Framework for Healthcare allows organizations to build secure, interoperable solutions that can aggregate and expose healthcare resources via a common HL7® FHIR®-compatible REST API. This server framework currently supports **DSTU2** (1.0.2), **STU3** (3.0.1), and **R4** (4.0.0) simultaneously. You can decide to support all three or just one by editing the configuration.

The framework defines a core server, `node-fhir-server-core`, a simple, secure Node.js module built according to the FHIR specification and compliant with the [US Core](http://www.hl7.org/fhir/us/core/) implementation.

For an example implementation using MongoDB, please refer to our Github repository that we used for the ONC FHIR Secure API Server Showdown Challenge: [https://github.com/Asymmetrik/node-fhir-server-mongo](https://github.com/Asymmetrik/node-fhir-server-mongo).
For an example implementation using MongoDB, please refer to our Github repository that we used for the ONC FHIR Secure API Server Showdown Challenge: [https://github.com/bluehalo/node-fhir-server-mongo](https://github.com/bluehalo/node-fhir-server-mongo).

<img src="https://www.asymmetrik.com/wp-content/uploads/2018/01/FHIR-Server-Architecture_Update.png" width="800">

## node-fhir-server-core@2.0.0

Please view the [Migration Guide](https://github.com/Asymmetrik/node-fhir-server-core/blob/master/docs/MIGRATION_2.0.0.md) for version `2.0.0`. We **will absolutely** continue supporting previous versions but **will prioritize** new features going to `2.0.0` unless we receive requests to retrofit them to older versions.
Please view the [Migration Guide](https://github.com/bluehalo/node-fhir-server-core/blob/master/docs/MIGRATION_2.0.0.md) for version `2.0.0`. We **will absolutely** continue supporting previous versions but **will prioritize** new features going to `2.0.0` unless we receive requests to retrofit them to older versions.

## Prerequisites

Expand All @@ -37,20 +37,20 @@ Please see our [Getting Started](./docs/GettingStarted.md) guide for a walkthrou

Our project vision is to build an easy to use FHIR server that supports all resource profiles defined in the [US Core implementation guide](http://www.hl7.org/fhir/us/core/) and is built with security in mind from the ground up. We decided to use a plugin style architecture so implementors could focus on writing queries and not worry about all the other technical difficulties of securing the server. As this project matures, we plan to support more resources, custom extensions, versions, write capabilities, etc.

We believe in establishing a robust security, especially when it comes to health information. Part of the ONC Secure API Server Challenge was to stand up a server and let penetration testers have a go at it (you can see their results [here](https://github.com/Asymmetrik/node-fhir-server-core/issues?utf8=%E2%9C%93&q=label%3A%22ONC+FHIR+Challenge+Vulnerability%22+)). We are committed to continuing this practice and we will continue fixing any vulnerabilities discovered so we can do our best to make this server as secure as possible. For authentication, we are actively working on methods for simplifying integration with [SMART on FHIR](http://docs.smarthealthit.org/).
We believe in establishing a robust security, especially when it comes to health information. Part of the ONC Secure API Server Challenge was to stand up a server and let penetration testers have a go at it (you can see their results [here](https://github.com/bluehalo/node-fhir-server-core/issues?utf8=%E2%9C%93&q=label%3A%22ONC+FHIR+Challenge+Vulnerability%22+)). We are committed to continuing this practice and we will continue fixing any vulnerabilities discovered so we can do our best to make this server as secure as possible. For authentication, we are actively working on methods for simplifying integration with [SMART on FHIR](http://docs.smarthealthit.org/).

## Contributing

Please see [CONTRIBUTING.md](https://github.com/Asymmetrik/node-fhir-server-core/blob/master/CONTRIBUTING.md) for more details regarding contributing issues or code.
Please see [CONTRIBUTING.md](https://github.com/bluehalo/node-fhir-server-core/blob/master/CONTRIBUTING.md) for more details regarding contributing issues or code.

## Questions

If you are experiencing a bug, please feel free to file an [issue](https://github.com/Asymmetrik/node-fhir-server-core/issues). For general questions, please post them to [StackOverflow](https://stackoverflow.com/) with the tag `node-fhir-server-core` or `javascript-fhir`.
If you are experiencing a bug, please feel free to file an [issue](https://github.com/bluehalo/node-fhir-server-core/issues). For general questions, please post them to [StackOverflow](https://stackoverflow.com/) with the tag `node-fhir-server-core` or `javascript-fhir`.

## Attention

This library makes use of node's path module. This is potentially exploitable in node version `8.5`, see [here](https://nodejs.org/en/blog/vulnerability/september-2017-path-validation/). When deploying this, you need to deploy with a node version later than `>7.6` but **NOT** `8.5`.

## License

`@asymmetrik/node-fhir-server-core` is [MIT licensed](https://github.com/Asymmetrik/node-fhir-server-core/blob/master/LICENSE).
`@bluehalo/node-fhir-server-core` is [MIT licensed](https://github.com/bluehalo/node-fhir-server-core/blob/master/LICENSE).
16 changes: 8 additions & 8 deletions docs/AccessControl.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ We have built-in support if you are using [SMART on FHIR](http://docs.smarthealt
When setting up your FHIR server, add the following config entries to your current configuration:

```javascript
const FHIRServer = require('@asymmetrik/node-fhir-server-core');
const FHIRServer = require('@bluehalo/node-fhir-server-core');

let server = FHIRServer.initialize({
auth: {
Expand All @@ -34,10 +34,10 @@ And that is all that is needed as far as config goes, but let's take a look at h

#### Step Two: Define a service

If you are not familiar with writing passport strategies, you can use [`@asymmetrik/sof-strategy`](https://github.com/Asymmetrik/node-fhir-server-core/tree/master/packages/sof-strategy). To use this, create a file that looks like this:
If you are not familiar with writing passport strategies, you can use [`@bluehalo/sof-strategy`](https://github.com/bluehalo/node-fhir-server-core/tree/master/packages/sof-strategy). To use this, create a file that looks like this:

```javascript
const smartBearerStrategy = require('@asymmetrik/sof-strategy');
const smartBearerStrategy = require('@bluehalo/sof-strategy');

module.exports.strategy = smartBearerStrategy({
introspectionUrl: process.env.INTROSPECTION_URL,
Expand All @@ -46,10 +46,10 @@ module.exports.strategy = smartBearerStrategy({
});
```

You will also need to add `@asymmetrik/sof-strategy` as a dependency by running:
You will also need to add `@bluehalo/sof-strategy` as a dependency by running:

```shell
yarn add @asymmetrik/sof-strategy
yarn add @bluehalo/sof-strategy
```

And define these environment variables: `INTROSPECTION_URL`, `CLIENT_ID`, and `CLIENT_SECRET`.
Expand Down Expand Up @@ -102,15 +102,15 @@ There are also more advanced ways to set up the server. By default, if you do no
In our [Getting Started](GettingStarted.md) section, we showed you how to create a FHIR server by calling `initialize` and giving it some config, like so:

```javascript
const FHIRServer = require('@asymmetrik/node-fhir-server-core');
const FHIRServer = require('@bluehalo/node-fhir-server-core');

let server = FHIRServer.initialize({ ...someConfig });
```

What initialize is actually doing is just calling several internal methods. You can replicate the initialize method by doing the following:

```javascript
const { Server } = require('@asymmetrik/node-fhir-server-core');
const { Server } = require('@bluehalo/node-fhir-server-core');

let server = new Server(config)
.configureMiddleware()
Expand All @@ -127,7 +127,7 @@ let server = new Server(config)
You can `initialize` a server with your own express app if you need further customization.

```javascript
const { initialize, loggers, constants } = require('@asymmetrik/node-fhir-server-core');
const { initialize, loggers, constants } = require('@bluehalo/node-fhir-server-core');
const express = require('express');

let config = {};
Expand Down
28 changes: 14 additions & 14 deletions docs/ConfiguringProfiles.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ A [profile](https://www.hl7.org/fhir/profilelist.html) corresponds to a queryabl

### Supported Profiles

To find a list of all supported profiles, please go to [src/server/resources/base_version/parameters](https://github.com/Asymmetrik/node-fhir-server-core/tree/master/packages/node-fhir-server-core/src/server/resources/4_0_0/parameters) for your corresponding FHIR version (this links to version `4.0.0`).
To find a list of all supported profiles, please go to [src/server/resources/base_version/parameters](https://github.com/bluehalo/node-fhir-server-core/tree/master/packages/node-fhir-server-core/src/server/resources/4_0_0/parameters) for your corresponding FHIR version (this links to version `4.0.0`).

Profiles have the following configuration options:

Expand All @@ -30,14 +30,14 @@ Profiles have the following configuration options:
#### `versions`

- **Type:** `Array<string>`
- **Description:** An array of strings containing the versions you intend to support. You cannot add anything you want here, only valid versions supported in core will be used. See [`exports.VERSIONS`](https://github.com/Asymmetrik/node-fhir-server-core/blob/master/packages/node-fhir-server-core/src/constants.js) in the constants file.
- **Description:** An array of strings containing the versions you intend to support. You cannot add anything you want here, only valid versions supported in core will be used. See [`exports.VERSIONS`](https://github.com/bluehalo/node-fhir-server-core/blob/master/packages/node-fhir-server-core/src/constants.js) in the constants file.
- **Required:** `Yes`
- **Default:** `none`

#### `corsOptions`

- **Type:** `object`
- **Description:** Set profile specific cors options. These will override the default `corsOptions` set in the server config. Please see [https://github.com/expressjs/cors#configuration-options](https://github.com/expressjs/cors#configuration-options) for details. The `methods` configuration will not be honored if specified here. This is controlled by `@asymmetrik/node-fhir-server-core` and cannot be overridden.
- **Description:** Set profile specific cors options. These will override the default `corsOptions` set in the server config. Please see [https://github.com/expressjs/cors#configuration-options](https://github.com/expressjs/cors#configuration-options) for details. The `methods` configuration will not be honored if specified here. This is controlled by `@bluehalo/node-fhir-server-core` and cannot be overridden.
- **Required:** `No`
- **Default:** `none`

Expand All @@ -51,7 +51,7 @@ Each profile has a pre-defined set of methods it can implement. If you do not wa
**NOTE** - We used to pass the logger in as an argument. We have made several changes to loggers in general to make them more flexible and less annoying to pass around. You now need to load them yourselves from the core library. You also need to load the schemas and return the objects explicitly as we no longer do the casting ourselves. A service will commonly at least have the following setup:

```javascript
const { loggers, resolveSchema } = require('@asymmetrik/node-fhir-server-core');
const { loggers, resolveSchema } = require('@bluehalo/node-fhir-server-core');
const logger = loggers.get('default');
```

Expand All @@ -69,7 +69,7 @@ const logger = loggers.get('default');
- **Example:**

```javascript
const { resolveSchema } = require('@asymmetrik/node-fhir-server-core');
const { resolveSchema } = require('@bluehalo/node-fhir-server-core');
// In patient service
module.exports.search = async (args, context) => {
let BundleEntry = resolveSchema(args.base_version, 'bundleentry');
Expand All @@ -93,7 +93,7 @@ module.exports.search = async (args, context) => {
- **Example:**

```javascript
const { resolveSchema } = require('@asymmetrik/node-fhir-server-core');
const { resolveSchema } = require('@bluehalo/node-fhir-server-core');
// In patient service
module.exports.searchById = async (args, context) => {
let Patient = resolveSchema(args.base_version, 'patient');
Expand All @@ -111,7 +111,7 @@ module.exports.searchById = async (args, context) => {
- **Example:**

```javascript
const { resolveSchema } = require('@asymmetrik/node-fhir-server-core');
const { resolveSchema } = require('@bluehalo/node-fhir-server-core');
// In patient service
module.exports.searchByVersionId = async (args, context) => {
let Patient = resolveSchema(args.base_version, 'patient');
Expand All @@ -129,7 +129,7 @@ module.exports.searchByVersionId = async (args, context) => {
- **Example:**

```javascript
const { resolveSchema } = require('@asymmetrik/node-fhir-server-core');
const { resolveSchema } = require('@bluehalo/node-fhir-server-core');
// In patient service
module.exports.history = async (args, context) => {
let BundleEntry = resolveSchema(args.base_version, 'bundleentry');
Expand All @@ -154,7 +154,7 @@ module.exports.history = async (args, context) => {
- **Example:**

```javascript
const { resolveSchema } = require('@asymmetrik/node-fhir-server-core');
const { resolveSchema } = require('@bluehalo/node-fhir-server-core');
// In patient service
module.exports.historyById = async (args, context) => {
let Patient = resolveSchema(args.base_version, 'patient');
Expand All @@ -172,7 +172,7 @@ module.exports.historyById = async (args, context) => {
- **Example:**

```javascript
const { resolveSchema } = require('@asymmetrik/node-fhir-server-core');
const { resolveSchema } = require('@bluehalo/node-fhir-server-core');
// In patient service
module.exports.create = async (args, context) => {
let Patient = resolveSchema(args.base_version, 'patient');
Expand All @@ -196,7 +196,7 @@ module.exports.create = async (args, context) => {
- **Example:**

```javascript
const { resolveSchema } = require('@asymmetrik/node-fhir-server-core');
const { resolveSchema } = require('@bluehalo/node-fhir-server-core');
// In patient service
module.exports.update = async (args, context) => {
let Patient = resolveSchema(args.base_version, 'patient');
Expand Down Expand Up @@ -224,7 +224,7 @@ module.exports.update = async (args, context) => {
- **Example:**

```javascript
const { resolveSchema } = require('@asymmetrik/node-fhir-server-core');
const { resolveSchema } = require('@bluehalo/node-fhir-server-core');
// In patient service
module.exports.patch = async (args, context) => {
let Patient = resolveSchema(args.base_version, 'patient');
Expand Down Expand Up @@ -255,7 +255,7 @@ module.exports.patch = async (args, context) => {
- **Example:**

```javascript
const { ServerError } = require('@asymmetrik/node-fhir-server-core');
const { ServerError } = require('@bluehalo/node-fhir-server-core');
// In patient service
module.exports.remove = async (args, context) => {
try {
Expand Down Expand Up @@ -285,4 +285,4 @@ module.exports.remove = async (args, context) => {

## Arguments

Each resource supports the arguments defined by the specification for its own version. You can either review the official FHIR documentation, or you can look in the [resources](https://github.com/Asymmetrik/node-fhir-server-core/blob/master/packages/node-fhir-server-core/src/server/resources) directory of this project. Each `version` folder represents a version we support, and in each version folder there is a `parameters` folder which defines the parameters for each resource. When an API endpoint is hit, each resource will allow its own arguments and any inherited arguments from parent resources.
Each resource supports the arguments defined by the specification for its own version. You can either review the official FHIR documentation, or you can look in the [resources](https://github.com/bluehalo/node-fhir-server-core/blob/master/packages/node-fhir-server-core/src/server/resources) directory of this project. Each `version` folder represents a version we support, and in each version folder there is a `parameters` folder which defines the parameters for each resource. When an API endpoint is hit, each resource will allow its own arguments and any inherited arguments from parent resources.
Loading
Loading