MSK Blaze FHIR Server Documentation

Clinical trials attempt to answer questions. To help do this effectively, it’s important to leverage best in class technology to rapidly increase the speed with which research data can be shared and tear down barriers that impede this process. Sharing research data faster can lead to better outcomes for patients, less time spent on manual coding and redundant data mapping, and reduced costs typically associated with new drug or therapy development. By leveraging the HL7 FHIR standard (Fast Healthcare Interoperability Resources), academic sites and clinical trial sponsors can unite to achieve these shared goals.

To this end, Memorial Sloan Kettering (MSK) has developed a FHIR server for clinical research data. This server is named “Blaze.”

Core Features

  • Complaince with FHIR version 4.0.0
  • OAuth (client_credentials) authentication flow
  • Coverage of the following FHIR Resources:
    • Observation (e.g. Laboratory Results)

Guide

Introduction

Assumptions

This documentation assumes that the reader has a familiarity with the HL7 FHIR specification, as well as a basic understanding of RESTful Web Service concepts.

MSK Blaze conforms to the eSource Consortium CR Implementation Guide, located here: https://esource-consortium.github.io/fhir-clinical-research/

Getting Started

API Reference

The MSK Blaze API is organized around REST. Each FHIR resource type currently supports read and basic search capabilities.

Authentication

In order to make use of Blaze, you’ll need to be set up as an MSK “partner” so that you can consume clinical research data. If you would like to request access to data for a research study at MSK, please send a request to rtmcritds@mskcc.org.

Authentication is based on the Client Credentials grant. This means that clients will need to generate an access token and supply it in the headers of each request being made. Once you are established as a partner, you’ll be given a client_id and a client_secret, which you will use for generating tokens and using them to make authenticated requests to the server.

Generating Tokens

To generate access tokens, partners need to make a POST request to the appropriate endpoint using their client_id and client_secret:

Base URL (Test)
https://webapit.mskcc.org/
Base URL (Production)
Coming Soon...

Request

POST /auth/oauth/v2/token
Content-Type: application/x-www-form-urlencoded
client_id=YYYY
client_secret=XXXX
grant_type=client_credentials
scope=oob

Response

{
    "access_token": "7ef1949a-fab1-4600-89ca-fbeb499ef68f",
    "token_type": "Bearer",
    "expires_in": 3600,
    "scope": "oob"
}

Making Requests

To make requests, include the bearer token you generated in your requests as a part of the Authorization header. Consider the following request for retrieving observations for a research study:

Request

GET /api360/v2/clinical/observations?researchstudy=TEST&category=laboratory&_count=5
-H Authorization: Bearer {access_token}

Response (some attributes omitted for brevity)

{
    "resourceType": "Bundle",
    "identifier": {
        "system": "https://datapedia.mskcc.org/index.php/IDB.PROTOCOL",
        "value": "TEST"
    },
    "type": "searchset",
    "total": 20,
}

Authorization

All data access is restricted on a per protocol basis. It is assumed that incoming requests to Blaze always contain a researchstudy parameter, which identifies what research study the client is requesting data for.

Your client_id determines what research studies you have access to at MSK. This information is used in combination with the researchstudy parameter to authorize requests. If a partner has sufficient authority to access protocol data, the request will proceed - otherwise they will get an error message.

Core Resources

Observations

Observations are a central element in healthcare, used to support diagnosis, monitor progress, determine baselines and patterns and even capture demographic characteristics.

Laboratory

Representative of laboratory results, such as blood glucose, or an estimated GFR.

Endpoint

GET /api360/v2/clinical/observations?researchstudy={id}&category=laboratory

Please see the implementation guide for more example RESTful FHIR interactions related to observations.

Indices and tables