versioned docs v1, and moved docs v2
@ -1,54 +0,0 @@
|
|||||||
<div class='row'>
|
|
||||||
<div class='column' style='text-align: right; padding: 0 20px'>
|
|
||||||
<strong>Looking for a Live Demo?</strong>
|
|
||||||
<a href="http://viewer.ohif.org/">Preview The OHIF Viewer</a>
|
|
||||||
</div>
|
|
||||||
<div class='column' style='text-align: left; padding: 0 20px'>
|
|
||||||
<a href="https://www.netlify.com">
|
|
||||||
<img src="https://www.netlify.com/img/global/badges/netlify-color-bg.svg"/>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
> ATTENTION! You are looking at the docs for the `React` version of the OHIF
|
|
||||||
> Viewer. If you're looking for the `Meteor` version's documentation (now
|
|
||||||
> deprecated), select it's version from the dropdown box in the top left corner
|
|
||||||
> of this page.
|
|
||||||
|
|
||||||
# Introduction
|
|
||||||
|
|
||||||
The [Open Health Imaging Foundation][ohif-org] (OHIF) Viewer is an open source,
|
|
||||||
web-based, medical imaging viewer. It can be configured to connect to Image
|
|
||||||
Archives that support [DicomWeb][dicom-web], and offers support for mapping to
|
|
||||||
proprietary API formats. OHIF maintained extensions add support for viewing,
|
|
||||||
annotating, and reporting on DICOM images in 2D (slices) and 3D (volumes).
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
<center><i>The <strong>OHIF Viewer</strong>: A general purpose DICOM Viewer (<a href="http://viewer.ohif.org/">Live Demo</a>)</center>
|
|
||||||
|
|
||||||
The Open Health Imaging Foundation intends to provide a simple general purpose
|
|
||||||
DICOM Viewer which can be easily extended for specific uses. If you find
|
|
||||||
yourself unable to extend the viewer for your purposes, please reach out via our
|
|
||||||
[GitHub issues][gh-issues]. We are actively seeking feedback on ways to improve
|
|
||||||
our integration and extension points.
|
|
||||||
|
|
||||||
## Where to next?
|
|
||||||
|
|
||||||
Check out these helpful links:
|
|
||||||
|
|
||||||
- Ready to dive into some code? Check out our
|
|
||||||
[Getting Started Guide](./development/getting-started.md).
|
|
||||||
- We're an active, vibrant community.
|
|
||||||
[Learn how you can be more involved.](./development/contributing.md)
|
|
||||||
- Feeling lost? Read our [help page](./help.md).
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Links
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
|
||||||
[ohif-org]: http://www.ohif.org
|
|
||||||
[dicom-web]: https://en.wikipedia.org/wiki/DICOMweb
|
|
||||||
[gh-issues]: https://github.com/OHIF/Viewers/issues
|
|
||||||
<!-- prettier-ignore-end -->
|
|
||||||
@ -1,61 +0,0 @@
|
|||||||
# OHIF Viewers
|
|
||||||
|
|
||||||
- [Our Process](our-process.md)
|
|
||||||
- Development
|
|
||||||
- [Getting Started](development/getting-started.md)
|
|
||||||
- [Contributing](development/contributing.md)
|
|
||||||
- [Continuous Integration](development/continous-integration.md)
|
|
||||||
- [Testing](development/testing.md)
|
|
||||||
- [Configuring](configuring/index.md)
|
|
||||||
- [Data Source](configuring/data-source.md)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
- [Architecture](architecture/index.md)
|
|
||||||
- [Viewer](viewer/index.md)
|
|
||||||
- [Configuration](viewer/configuration.md)
|
|
||||||
- [Themeing](viewer/themeing.md)
|
|
||||||
- [Internationalization](viewer/internationalization.md)
|
|
||||||
- [Extensions](extensions/index.md)
|
|
||||||
- [Registering](extensions/index.md#registering-an-extension)
|
|
||||||
- [Lifecycle Hooks](extensions/index.md#lifecycle-hooks)
|
|
||||||
- [preRegistration](extensions/lifecycle/pre-registration.md)
|
|
||||||
- [Modules](extensions/index.md#modules)
|
|
||||||
- [Commands](extensions/modules/commands.md)
|
|
||||||
- [Panel](extensions/modules/panel.md)
|
|
||||||
- [SOP Class Handler](extensions/modules/sop-class-handler.md)
|
|
||||||
- [Toolbar](extensions/modules/toolbar.md)
|
|
||||||
- [Viewport](extensions/modules/viewport.md)
|
|
||||||
- [Contexts](extensions/index.md#contexts)
|
|
||||||
- [ExtensionManager](extensions/index.md#extensionmanager)
|
|
||||||
- [OHIF Maintained](extensions/index.md#maintained-extensions)
|
|
||||||
- [Services](services/index.md)
|
|
||||||
- [Default](services/default/index.md)
|
|
||||||
- [UI](services/ui/index.md)
|
|
||||||
- [Dialog Service](services/ui/ui-dialog-service.md)
|
|
||||||
- [Modal Service](services/ui/ui-modal-service.md)
|
|
||||||
- [Notification Service](services/ui/ui-notification-service.md)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
- [Deployment](deployment/index.md)
|
|
||||||
- [Embedded](deployment/index.md#embedded-viewer)
|
|
||||||
- [Stand-alone](deployment/index.md#stand-alone-viewer)
|
|
||||||
- [Data](deployment/index.md#data)
|
|
||||||
- Recipes
|
|
||||||
- Script Include
|
|
||||||
- [Embedding the Viewer](deployment/recipes/embedded-viewer.md)
|
|
||||||
- Stand-Alone
|
|
||||||
- [Build for Production](deployment/recipes/build-for-production.md)
|
|
||||||
- [Static](deployment/recipes/static-assets.md)
|
|
||||||
- [Nginx + Image Archive](deployment/recipes/nginx--image-archive.md)
|
|
||||||
- [User Account Control](deployment/recipes/user-account-control.md)
|
|
||||||
- [Google Cloud Healthcare](connecting-to-image-archives/google-cloud-healthcare.md)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
- [FAQ](faq/index.md)
|
|
||||||
- [Scope of Project](faq/scope-of-project.md)
|
|
||||||
- [Browser Support](faq/browser-support.md)
|
|
||||||
- [PWA vs Packaged](faq/pwa-vs-packaged.md)
|
|
||||||
- [Help](help.md)
|
|
||||||
@ -1,54 +0,0 @@
|
|||||||
{
|
|
||||||
"title": "OHIF",
|
|
||||||
"description": "Documentation for the OHIF framework",
|
|
||||||
"gitbook": ">3.0.0",
|
|
||||||
"plugins": [
|
|
||||||
"edit-link",
|
|
||||||
"theme-cornerstone",
|
|
||||||
"-fontsettings",
|
|
||||||
"github",
|
|
||||||
"ga",
|
|
||||||
"sitemap",
|
|
||||||
"anchors",
|
|
||||||
"versions"
|
|
||||||
],
|
|
||||||
"pluginsConfig": {
|
|
||||||
"edit-link": {
|
|
||||||
"base": "https://github.com/OHIF/Viewers/edit/master/docs",
|
|
||||||
"label": "Edit This Page"
|
|
||||||
},
|
|
||||||
"github": {
|
|
||||||
"url": "https://github.com/OHIF/Viewers"
|
|
||||||
},
|
|
||||||
"ga": {
|
|
||||||
"token": "UA-110573590-2"
|
|
||||||
},
|
|
||||||
"sitemap": {
|
|
||||||
"hostname": "https://docs.ohif.org"
|
|
||||||
},
|
|
||||||
"versions": {
|
|
||||||
"gitbookConfigURL": "https://raw.githubusercontent.com/OHIF/Viewers/master/docs/book.json",
|
|
||||||
"options": [
|
|
||||||
{
|
|
||||||
"value": "https://docs.ohif.org/history/v1/",
|
|
||||||
"text": "Version 1.0.0 (Meteor)"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"value": "https://docs.ohif.org/history/v2/",
|
|
||||||
"text": "Version 2.0.0",
|
|
||||||
"selected": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"value": "https://docs.ohif.org/",
|
|
||||||
"text": "Version 3.0.0"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"links": {
|
|
||||||
"sharing": {
|
|
||||||
"facebook": false,
|
|
||||||
"twitter": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,71 +0,0 @@
|
|||||||
# Google Cloud Healthcare
|
|
||||||
|
|
||||||
> The [Google Cloud Healthcare API](https://cloud.google.com/healthcare/) is a
|
|
||||||
> powerful option for storing medical imaging data in the cloud.
|
|
||||||
|
|
||||||
An alternative to deploying your own PACS is to use a software-as-a-service
|
|
||||||
provider such as Google Cloud. The Cloud Healthcare API promises to be a
|
|
||||||
scalable, secure, cost effective image storage solution for those willing to
|
|
||||||
store their data in the cloud. It offers an
|
|
||||||
[almost-entirely complete DICOMWeb API](https://cloud.google.com/healthcare/docs/dicom)
|
|
||||||
which requires tokens generated via the
|
|
||||||
[OAuth 2.0 Sign In flow](https://developers.google.com/identity/sign-in/web/sign-in).
|
|
||||||
Images can even be transcoded on the fly if this is desired.
|
|
||||||
|
|
||||||
## Setup a Google Cloud Healthcare Project
|
|
||||||
|
|
||||||
- Create a Google Cloud account
|
|
||||||
- Create a project in Google Cloud
|
|
||||||
- Enable the [Cloud Healthcare API](https://cloud.google.com/healthcare/) for
|
|
||||||
your project.
|
|
||||||
- (Optional): Create a Dataset and Data Store for storing your DICOM data
|
|
||||||
- Enable the
|
|
||||||
[Cloud Resource Manager API](https://cloud.google.com/resource-manager/) for
|
|
||||||
your project.
|
|
||||||
- _Note:_ If you are having trouble finding the APIs, use the search box at
|
|
||||||
the top of the Cloud console.
|
|
||||||
- Go to APIs & Services > Credentials to create an OAuth Consent screen and fill
|
|
||||||
in your application details.
|
|
||||||
- Under Scopes for Google APIs, click "manually paste scopes".
|
|
||||||
- Add the following scopes:
|
|
||||||
- `https://www.googleapis.com/auth/cloudplatformprojects.readonly`
|
|
||||||
- `https://www.googleapis.com/auth/cloud-healthcare`
|
|
||||||
- Go to APIs & Services > Credentials to create a new set of credentials:
|
|
||||||
|
|
||||||
- Choose the "Web Application" type
|
|
||||||
- Set up an
|
|
||||||
[OAuth 2.0 Client ID](https://support.google.com/cloud/answer/6158849?hl=en)
|
|
||||||
- Add your domain (e.g. `http://localhost:3000`) to Authorized JavaScript
|
|
||||||
origins.
|
|
||||||
- Add your domain, plus `callback` (e.g. `http://localhost:3000/callback`) to
|
|
||||||
Authorized Redirect URIs.
|
|
||||||
- Save your Client ID for later.
|
|
||||||
|
|
||||||
- (Optional): Enable Public Datasets that are being hosted by Google:
|
|
||||||
https://cloud.google.com/healthcare/docs/resources/public-datasets/
|
|
||||||
|
|
||||||
## Run the viewer with your OAuth Client ID
|
|
||||||
|
|
||||||
1. Open the `config/google.js` file and change `YOURCLIENTID` to your Client ID
|
|
||||||
value.
|
|
||||||
1. Run the OHIF Viewer using the config/google.js configuration file
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd OHIFViewer
|
|
||||||
yarn install
|
|
||||||
APP_CONFIG=config/google.js yarn run dev
|
|
||||||
```
|
|
||||||
|
|
||||||
## Running via Docker
|
|
||||||
|
|
||||||
The OHIF Viewer Docker container can be connected to Google Cloud Healthcare by
|
|
||||||
providing a Client ID at runtime. This is a very simple method to get up and
|
|
||||||
running.
|
|
||||||
|
|
||||||
1. Install Docker (https://www.docker.com/)
|
|
||||||
1. Run the Docker container, providing a Client ID as an environment variable.
|
|
||||||
Client IDs look like `xyz.apps.googleusercontent.com`.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker run --env CLIENT_ID=$CLIENT_ID --publish 5000:80 ohif/viewer:latest
|
|
||||||
```
|
|
||||||
@ -1,44 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "ohif-viewer-latest-docs",
|
|
||||||
"version": "2.0.0",
|
|
||||||
"description": "Open Health Imaging Foundation Viewers Metarepo for documentation",
|
|
||||||
"main": ".eslintrc.js",
|
|
||||||
"directories": {
|
|
||||||
"doc": "docs"
|
|
||||||
},
|
|
||||||
"scripts": {
|
|
||||||
"docs": "gitbook install && gitbook serve"
|
|
||||||
},
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "git+https://github.com/OHIF/Viewers.git"
|
|
||||||
},
|
|
||||||
"keywords": [
|
|
||||||
"dicom",
|
|
||||||
"cornerstone",
|
|
||||||
"OHIF",
|
|
||||||
"zero",
|
|
||||||
"footprint",
|
|
||||||
"medical",
|
|
||||||
"imaging",
|
|
||||||
"viewer"
|
|
||||||
],
|
|
||||||
"author": "Open Health Imaging Foundation",
|
|
||||||
"license": "MIT",
|
|
||||||
"bugs": {
|
|
||||||
"url": "https://github.com/OHIF/Viewers/issues"
|
|
||||||
},
|
|
||||||
"homepage": "https://github.com/OHIF/Viewers#readme",
|
|
||||||
"dependencies": {
|
|
||||||
"gitbook-plugin-anchors": "^0.7.1",
|
|
||||||
"gitbook-plugin-edit-link": "^2.0.2",
|
|
||||||
"gitbook-plugin-ga": "^2.0.0",
|
|
||||||
"gitbook-plugin-github": "^3.0.0",
|
|
||||||
"gitbook-plugin-sitemap": "^1.2.0",
|
|
||||||
"gitbook-plugin-theme-cornerstone": "^1.1.4",
|
|
||||||
"gitbook-plugin-versions": "^2.1.4"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"gitbook-cli": "^2.3.2"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
3413
docs/v2/yarn.lock
@ -1,34 +1,60 @@
|
|||||||
---
|
---
|
||||||
id: OHIF-v1 Documentation
|
id: OHIF Documentation
|
||||||
slug: /
|
slug: /
|
||||||
sidebar_position: 1
|
sidebar_position: 1
|
||||||
---
|
---
|
||||||
|
|
||||||
##### Looking for your Deploy Preview? - <a onclick="function redirect() { window.location.href='/demo/'; } redirect();">Deploy Preview for Viewer</a>
|
<div class='row'>
|
||||||
|
<div class='column' style='text-align: right; padding: 0 20px'>
|
||||||
|
<strong>Looking for a Live Demo?</strong>
|
||||||
|
<a href="http://viewer.ohif.org/">Preview The OHIF Viewer</a>
|
||||||
|
</div>
|
||||||
|
<div class='column' style='text-align: left; padding: 0 20px'>
|
||||||
|
<a href="https://www.netlify.com">
|
||||||
|
<img src="https://www.netlify.com/img/global/badges/netlify-color-bg.svg"/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
> ATTENTION! You are looking at the docs for the `React` version of the OHIF
|
||||||
|
> Viewer. If you're looking for the `Meteor` version's documentation (now
|
||||||
|
> deprecated), select it's version from the dropdown box in the top left corner
|
||||||
|
> of this page.
|
||||||
|
|
||||||
# Introduction
|
# Introduction
|
||||||
|
|
||||||
The [Open Health Imaging Foundation](https://www.ohif.org) is developing an open source framework for constructing web-based medical imaging applications. The application framework is built using modern HTML / CSS / JavaScript and uses [Cornerstone](https://cornerstonejs.org/) at its core to display and manipulate medical images. It is built with Meteor, a Node.js-based full-stack JavaScript platform.
|
The [Open Health Imaging Foundation][ohif-org] (OHIF) Viewer is an open source,
|
||||||
|
web-based, medical imaging viewer. It can be configured to connect to Image
|
||||||
This documentation concerns the OHIF framework itself and its three example applications: the OHIF Viewer, Lesion Tracker, and the Standalone Viewer.
|
Archives that support [DicomWeb][dicom-web], and offers support for mapping to
|
||||||
|
proprietary API formats. OHIF maintained extensions add support for viewing,
|
||||||
## The **OHIF Viewer**: A general purpose DICOM Viewer ([demo](http://viewer.ohif.org/))
|
annotating, and reporting on DICOM images in 2D (slices) and 3D (volumes).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
The Open Health Imaging Foundation intends to provide a simple general purpose DICOM Viewer which can be easily extended for specific uses. The primary purpose of the OHIF Viewer is to serve as a testing ground for the underlying packages and the [Cornerstone](https://cornerstonejs.org/) family of libraries.
|
<center><i>The <strong>OHIF Viewer</strong>: A general purpose DICOM Viewer (<a href="http://viewer.ohif.org/">Live Demo</a>)</center>
|
||||||
|
|
||||||
## **Lesion Tracker**: An oncology-focused imaging application ([demo](http://lesiontracker.ohif.org/))
|
The Open Health Imaging Foundation intends to provide a simple general purpose
|
||||||
|
DICOM Viewer which can be easily extended for specific uses. If you find
|
||||||
|
yourself unable to extend the viewer for your purposes, please reach out via our
|
||||||
|
[GitHub issues][gh-issues]. We are actively seeking feedback on ways to improve
|
||||||
|
our integration and extension points.
|
||||||
|
|
||||||

|
## Where to next?
|
||||||
|
|
||||||
The Lesion Tracker is designed to facilitate quantitative assessments of tumour burden over time. It is similar in scope to the ePAD Imaging Platform (https://epad.stanford.edu/), developed at Stanford Medicine.
|
Check out these helpful links:
|
||||||
|
|
||||||
## Study List & DICOM Connectivity
|
- Ready to dive into some code? Check out our
|
||||||

|
[Getting Started Guide](./development/getting-started.md).
|
||||||
|
- We're an active, vibrant community.
|
||||||
|
[Learn how you can be more involved.](./development/contributing.md)
|
||||||
|
- Feeling lost? Read our [help page](./help.md).
|
||||||
|
|
||||||
The solution provides a study list and other resources for connecting to PACS and other Image Archives through standard communication approaches (DICOM Web, DICOM Messages).
|
<!--
|
||||||
|
Links
|
||||||
|
-->
|
||||||
|
|
||||||
## Standalone Viewer ([demo](ohif-viewer.s3-website.eu-central-1.amazonaws.com/?url=https://raw.githubusercontent.com/OHIF/Viewers/master/StandaloneViewer/etc/sampleDICOM.json))
|
<!-- prettier-ignore-start -->
|
||||||
|
[ohif-org]: http://www.ohif.org
|
||||||
The Standalone Viewer offers only the client-side portions of the OHIF Viewer with the Study List pages removed. This single-page viewer can be hosted as a static site (e.g. on Amazon S3, Azure Blob Storage, or Github Pages), and easily integrated with existing back-end DICOM storage systems. Alternative [Cornerstone](https://cornerstonejs.org/) Image Loaders can be included to allow your viewer to support non-DICOM objects (e.g. PNG, JPEG).
|
[dicom-web]: https://en.wikipedia.org/wiki/DICOMweb
|
||||||
|
[gh-issues]: https://github.com/OHIF/Viewers/issues
|
||||||
|
<!-- prettier-ignore-end -->
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 818 B After Width: | Height: | Size: 818 B |
|
Before Width: | Height: | Size: 473 B After Width: | Height: | Size: 473 B |
|
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 7.8 KiB |
|
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 422 KiB After Width: | Height: | Size: 422 KiB |
|
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 118 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 178 KiB After Width: | Height: | Size: 178 KiB |
|
Before Width: | Height: | Size: 137 KiB After Width: | Height: | Size: 137 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 147 KiB After Width: | Height: | Size: 147 KiB |
|
Before Width: | Height: | Size: 355 KiB After Width: | Height: | Size: 355 KiB |
|
Before Width: | Height: | Size: 169 KiB After Width: | Height: | Size: 169 KiB |
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 884 KiB After Width: | Height: | Size: 884 KiB |
|
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 59 KiB |
|
Before Width: | Height: | Size: 230 KiB After Width: | Height: | Size: 230 KiB |
|
Before Width: | Height: | Size: 994 KiB After Width: | Height: | Size: 994 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 99 KiB After Width: | Height: | Size: 99 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 371 KiB After Width: | Height: | Size: 371 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
@ -1,90 +1,71 @@
|
|||||||
---
|
|
||||||
sidebar_position: 6
|
|
||||||
---
|
|
||||||
# Google Cloud Healthcare
|
# Google Cloud Healthcare
|
||||||
|
|
||||||
> The [Google Cloud Healthcare API](https://cloud.google.com/healthcare/) is a powerful option for storing medical imaging data in the cloud.
|
> The [Google Cloud Healthcare API](https://cloud.google.com/healthcare/) is a
|
||||||
|
> powerful option for storing medical imaging data in the cloud.
|
||||||
|
|
||||||
An alternative to deploying your own PACS is to use a software-as-a-service provider such as Google Cloud. The Cloud Healthcare API promises to be a scalable, secure, cost effective image storage solution for those willing to store their data in the cloud. It offers an [almost-entirely complete DICOMWeb API](https://cloud.google.com/healthcare/docs/dicom) which requires tokens generated via the [OAuth 2.0 Sign In flow](https://developers.google.com/identity/sign-in/web/sign-in). Images can even be transcoded on the fly if this is desired. The Cloud Healthcare API is a very attractive option because it allows us to avoid deploying the Meteor server entirely. We can just deploy OHIF as a client-only static site application.
|
An alternative to deploying your own PACS is to use a software-as-a-service
|
||||||
|
provider such as Google Cloud. The Cloud Healthcare API promises to be a
|
||||||
|
scalable, secure, cost effective image storage solution for those willing to
|
||||||
|
store their data in the cloud. It offers an
|
||||||
|
[almost-entirely complete DICOMWeb API](https://cloud.google.com/healthcare/docs/dicom)
|
||||||
|
which requires tokens generated via the
|
||||||
|
[OAuth 2.0 Sign In flow](https://developers.google.com/identity/sign-in/web/sign-in).
|
||||||
|
Images can even be transcoded on the fly if this is desired.
|
||||||
|
|
||||||
## Setup a Google Cloud Healthcare Project
|
## Setup a Google Cloud Healthcare Project
|
||||||
|
|
||||||
1. Create a Google Cloud account
|
- Create a Google Cloud account
|
||||||
1. Create a project in Google Cloud
|
- Create a project in Google Cloud
|
||||||
1. Enable the [Cloud Healthcare API](https://cloud.google.com/healthcare/) for your project.
|
- Enable the [Cloud Healthcare API](https://cloud.google.com/healthcare/) for
|
||||||
1. (Optional): Create a Dataset and Data Store for storing your DICOM data
|
your project.
|
||||||
1. Enable the [Cloud Resource Manager API](https://cloud.google.com/resource-manager/) for your project.
|
- (Optional): Create a Dataset and Data Store for storing your DICOM data
|
||||||
|
- Enable the
|
||||||
|
[Cloud Resource Manager API](https://cloud.google.com/resource-manager/) for
|
||||||
|
your project.
|
||||||
|
- _Note:_ If you are having trouble finding the APIs, use the search box at
|
||||||
|
the top of the Cloud console.
|
||||||
|
- Go to APIs & Services > Credentials to create an OAuth Consent screen and fill
|
||||||
|
in your application details.
|
||||||
|
- Under Scopes for Google APIs, click "manually paste scopes".
|
||||||
|
- Add the following scopes:
|
||||||
|
- `https://www.googleapis.com/auth/cloudplatformprojects.readonly`
|
||||||
|
- `https://www.googleapis.com/auth/cloud-healthcare`
|
||||||
|
- Go to APIs & Services > Credentials to create a new set of credentials:
|
||||||
|
|
||||||
*Note:* If you are having trouble finding the APIs, use the search box at the top of the Cloud console.
|
|
||||||
|
|
||||||
1. Go to APIs & Services > Credentials to create an OAuth Consent screen and fill in your application details.
|
|
||||||
|
|
||||||
- Under Scopes for Google APIs, click "manually paste scopes".
|
|
||||||
- Add the following scopes:
|
|
||||||
- https://www.googleapis.com/auth/cloudplatformprojects.readonly
|
|
||||||
- https://www.googleapis.com/auth/cloud-healthcare
|
|
||||||
|
|
||||||
1. Go to APIs & Services > Credentials to create a new set of credentials:
|
|
||||||
- Choose the "Web Application" type
|
- Choose the "Web Application" type
|
||||||
- Set up an [OAuth 2.0 Client ID](https://support.google.com/cloud/answer/6158849?hl=en)
|
- Set up an
|
||||||
|
[OAuth 2.0 Client ID](https://support.google.com/cloud/answer/6158849?hl=en)
|
||||||
- Add your domain (e.g. ```http://localhost:3000```) to Authorized JavaScript origins.
|
- Add your domain (e.g. `http://localhost:3000`) to Authorized JavaScript
|
||||||
- Add your domain, plus `_oauth/google` (e.g. ```http://localhost:3000/_oauth/google```) to Authorized Redirect URIs.
|
origins.
|
||||||
|
- Add your domain, plus `callback` (e.g. `http://localhost:3000/callback`) to
|
||||||
|
Authorized Redirect URIs.
|
||||||
- Save your Client ID for later.
|
- Save your Client ID for later.
|
||||||
1. (Optional): Enable Public Datasets that are being hosted by Google: https://cloud.google.com/healthcare/docs/resources/public-datasets/
|
|
||||||
|
- (Optional): Enable Public Datasets that are being hosted by Google:
|
||||||
|
https://cloud.google.com/healthcare/docs/resources/public-datasets/
|
||||||
|
|
||||||
## Run the viewer with your OAuth Client ID
|
## Run the viewer with your OAuth Client ID
|
||||||
|
|
||||||
1. Open the `config/oidc-googleCloud.json` file and change `YOURCLIENTID` to your Client ID value.
|
1. Open the `config/google.js` file and change `YOURCLIENTID` to your Client ID
|
||||||
1. Run the OHIF Viewer using the oidc-googleCloud.json configuration file
|
value.
|
||||||
|
1. Run the OHIF Viewer using the config/google.js configuration file
|
||||||
|
|
||||||
````bash
|
```bash
|
||||||
cd OHIFViewer
|
cd OHIFViewer
|
||||||
METEOR_PACKAGE_DIRS="../Packages" meteor npm install
|
yarn install
|
||||||
METEOR_PACKAGE_DIRS="../Packages" meteor --settings ../config/oidc-googleCloud.json
|
APP_CONFIG=config/google.js yarn run dev
|
||||||
````
|
```
|
||||||
|
|
||||||
## Running via Docker
|
## Running via Docker
|
||||||
|
|
||||||
OHIF is also providing a Docker container which can connect to Google Cloud Healthcare with a Client ID which is provided at runtime. This is a very simple method to get up and running. Internally, the container is running [Nginx](https://nginx.org/) to serve the [Standalone Viewer](../standalone-viewer/usage.md).
|
The OHIF Viewer Docker container can be connected to Google Cloud Healthcare by
|
||||||
|
providing a Client ID at runtime. This is a very simple method to get up and
|
||||||
|
running.
|
||||||
|
|
||||||
1. Install Docker (https://www.docker.com/)
|
1. Install Docker (https://www.docker.com/)
|
||||||
1. Run the Docker container, providing a Client ID as an environment variable. Client IDs look like `xyz.apps.googleusercontent.com`.
|
1. Run the Docker container, providing a Client ID as an environment variable.
|
||||||
|
Client IDs look like `xyz.apps.googleusercontent.com`.
|
||||||
|
|
||||||
````bash
|
|
||||||
docker run --env CLIENT_ID=$CLIENT_ID --publish 3000:80 ohif/viewer-google-cloud:latest
|
|
||||||
````
|
|
||||||
|
|
||||||
## Building the ohif/viewer-google-cloud Docker Image
|
|
||||||
|
|
||||||
The [ohif/viewer-google-cloud](https://cloud.docker.com/u/ohif/repository/docker/ohif/viewer-google-cloud) Docker image is built as follows. The Dockerfile and nginx.conf are in the `/dockersupport/viewer-google-cloud` folder.
|
|
||||||
|
|
||||||
1. [Install Meteor](https://www.meteor.com/install)
|
|
||||||
1. Clone the repository
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/OHIF/Viewers.git
|
docker run --env CLIENT_ID=$CLIENT_ID --publish 5000:80 ohif/viewer:latest
|
||||||
cd Viewers
|
|
||||||
```
|
|
||||||
|
|
||||||
1. Install meteor-build-client-fixed2 so you can build the Standalone Viewer
|
|
||||||
```bash
|
|
||||||
npm install -g meteor-build-client-fixed2
|
|
||||||
```
|
|
||||||
|
|
||||||
1. Build the Standalone client-only OHIF Viewer
|
|
||||||
```bash
|
|
||||||
cd OHIFViewer/
|
|
||||||
METEOR_PACKAGE_DIRS="../Packages" meteor npm install
|
|
||||||
METEOR_PACKAGE_DIRS="../Packages" meteor-build-client-fixed2 ../dockersupport/viewer-google-cloud/build -s ../config/oidc.json
|
|
||||||
```
|
|
||||||
|
|
||||||
1. Build the Docker image
|
|
||||||
```bash
|
|
||||||
cd ../dockersupport/viewer-google-cloud
|
|
||||||
docker build -t ohif/viewer-google-cloud .
|
|
||||||
```
|
|
||||||
|
|
||||||
1. Run the Docker image using an OAuth Client ID
|
|
||||||
```bash
|
|
||||||
docker run --env CLIENT_ID={$someID}.apps.googleusercontent.com --publish 3000:80 ohif/viewer-google-cloud
|
|
||||||
```
|
```
|
||||||
|
|||||||
@ -1,103 +1,396 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
const path = require('path');
|
||||||
|
const versions = require('./versions.json');
|
||||||
|
|
||||||
|
// This probably only makes sense for the beta phase, temporary
|
||||||
|
function getNextBetaVersionName() {
|
||||||
|
const expectedPrefix = '';
|
||||||
|
|
||||||
|
const lastReleasedVersion = versions[0];
|
||||||
|
if (!lastReleasedVersion.includes(expectedPrefix)) {
|
||||||
|
throw new Error(
|
||||||
|
'this code is only meant to be used during the 2.0 beta phase.',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
const version = parseInt(lastReleasedVersion.replace(expectedPrefix, ''), 10);
|
||||||
|
return `${expectedPrefix}${version + 1}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
const allDocHomesPaths = [
|
||||||
|
'/docs/',
|
||||||
|
'/docs/next/',
|
||||||
|
...versions.slice(1).map((version) => `/docs/${version}/`),
|
||||||
|
];
|
||||||
|
|
||||||
|
const isDev = process.env.NODE_ENV === 'development';
|
||||||
|
|
||||||
|
const isDeployPreview =
|
||||||
|
process.env.NETLIFY && process.env.CONTEXT === 'deploy-preview';
|
||||||
|
|
||||||
|
const baseUrl = process.env.BASE_URL || '/';
|
||||||
|
const isBootstrapPreset = process.env.DOCUSAURUS_PRESET === 'bootstrap';
|
||||||
|
|
||||||
|
// Special deployment for staging locales until they get enough translations
|
||||||
|
// https://app.netlify.com/sites/docusaurus-i18n-staging
|
||||||
|
// https://docusaurus-i18n-staging.netlify.app/
|
||||||
|
const isI18nStaging = process.env.I18N_STAGING === 'true';
|
||||||
|
|
||||||
|
const isVersioningDisabled = !!process.env.DISABLE_VERSIONING || isI18nStaging;
|
||||||
|
|
||||||
/** @type {import('@docusaurus/types').DocusaurusConfig} */
|
/** @type {import('@docusaurus/types').DocusaurusConfig} */
|
||||||
module.exports = {
|
(module.exports = {
|
||||||
title: 'My Site',
|
title: 'Docusaurus',
|
||||||
tagline: 'Dinosaurs are cool',
|
tagline: 'Build optimized websites quickly, focus on your content',
|
||||||
url: 'https://your-docusaurus-test-site.com',
|
organizationName: 'facebook',
|
||||||
baseUrl: '/',
|
projectName: 'docusaurus',
|
||||||
onBrokenLinks: 'throw',
|
baseUrl,
|
||||||
|
baseUrlIssueBanner: true,
|
||||||
|
url: 'https://docusaurus.io',
|
||||||
|
i18n: {
|
||||||
|
defaultLocale: 'en',
|
||||||
|
locales: isDeployPreview
|
||||||
|
? // Deploy preview: keep it fast!
|
||||||
|
['en']
|
||||||
|
: isI18nStaging
|
||||||
|
? // Staging locales: https://docusaurus-i18n-staging.netlify.app/
|
||||||
|
['en', 'ja']
|
||||||
|
: // Production locales
|
||||||
|
['en', 'fr', 'ko', 'zh-CN'],
|
||||||
|
},
|
||||||
|
onBrokenLinks: 'warn',
|
||||||
onBrokenMarkdownLinks: 'warn',
|
onBrokenMarkdownLinks: 'warn',
|
||||||
favicon: 'img/favicon.ico',
|
favicon: 'img/docusaurus.ico',
|
||||||
organizationName: 'facebook', // Usually your GitHub org/user name.
|
// customFields: {
|
||||||
projectName: 'docusaurus', // Usually your repo name.
|
// description:
|
||||||
|
// 'An optimized site generator in React. Docusaurus helps you to move fast and write content. Build documentation websites, blogs, marketing pages, and more.',
|
||||||
|
// },
|
||||||
|
themes: ['@docusaurus/theme-live-codeblock'],
|
||||||
|
plugins: [
|
||||||
|
[
|
||||||
|
'@docusaurus/plugin-client-redirects',
|
||||||
|
{
|
||||||
|
fromExtensions: ['html'],
|
||||||
|
createRedirects: function (path) {
|
||||||
|
// redirect to /docs from /docs/introduction,
|
||||||
|
// as introduction has been made the home doc
|
||||||
|
if (allDocHomesPaths.includes(path)) {
|
||||||
|
return [`${path}/introduction`];
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// redirects: [
|
||||||
|
// {
|
||||||
|
// from: ['/'],
|
||||||
|
// to: '/docs',
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// from: ['/docs/support', '/docs/next/support'],
|
||||||
|
// to: '/community/support',
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// from: ['/docs/team', '/docs/next/team'],
|
||||||
|
// to: '/community/team',
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// from: ['/docs/resources', '/docs/next/resources'],
|
||||||
|
// to: '/community/resources',
|
||||||
|
// },
|
||||||
|
// ],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'@docusaurus/plugin-ideal-image',
|
||||||
|
{
|
||||||
|
quality: 70,
|
||||||
|
max: 1030, // max resized image's size.
|
||||||
|
min: 640, // min resized image's size. if original is lower, use that size.
|
||||||
|
steps: 2, // the max number of images generated between min and max (inclusive)
|
||||||
|
},
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'@docusaurus/plugin-pwa',
|
||||||
|
{
|
||||||
|
debug: isDeployPreview,
|
||||||
|
offlineModeActivationStrategies: [
|
||||||
|
'appInstalled',
|
||||||
|
'standalone',
|
||||||
|
'queryString',
|
||||||
|
],
|
||||||
|
// swRegister: false,
|
||||||
|
swCustom: path.resolve(__dirname, 'src/sw.js'),
|
||||||
|
pwaHead: [
|
||||||
|
{
|
||||||
|
tagName: 'link',
|
||||||
|
rel: 'icon',
|
||||||
|
href: 'img/docusaurus.png',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tagName: 'link',
|
||||||
|
rel: 'manifest',
|
||||||
|
href: `${baseUrl}manifest.json`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tagName: 'meta',
|
||||||
|
name: 'theme-color',
|
||||||
|
content: 'rgb(37, 194, 160)',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tagName: 'meta',
|
||||||
|
name: 'apple-mobile-web-app-capable',
|
||||||
|
content: 'yes',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tagName: 'meta',
|
||||||
|
name: 'apple-mobile-web-app-status-bar-style',
|
||||||
|
content: '#000',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tagName: 'link',
|
||||||
|
rel: 'apple-touch-icon',
|
||||||
|
href: 'img/docusaurus.png',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tagName: 'link',
|
||||||
|
rel: 'mask-icon',
|
||||||
|
href: 'img/docusaurus.svg',
|
||||||
|
color: 'rgb(62, 204, 94)',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tagName: 'meta',
|
||||||
|
name: 'msapplication-TileImage',
|
||||||
|
content: 'img/docusaurus.png',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tagName: 'meta',
|
||||||
|
name: 'msapplication-TileColor',
|
||||||
|
content: '#000',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
],
|
||||||
|
presets: [
|
||||||
|
[
|
||||||
|
isBootstrapPreset
|
||||||
|
? '@docusaurus/preset-bootstrap'
|
||||||
|
: '@docusaurus/preset-classic',
|
||||||
|
{
|
||||||
|
debug: true, // force debug plugin usage
|
||||||
|
docs: {
|
||||||
|
routeBasePath: '/',
|
||||||
|
path: 'docs',
|
||||||
|
sidebarPath: require.resolve('./sidebars.js'),
|
||||||
|
editUrl: ({ locale, docPath }) => {
|
||||||
|
if (locale !== 'en') {
|
||||||
|
return `https://crowdin.com/project/docusaurus-v2/${locale}`;
|
||||||
|
}
|
||||||
|
// We want users to submit doc updates to the upstream/next version!
|
||||||
|
// Otherwise we risk losing the update on the next release.
|
||||||
|
const nextVersionDocsDirPath = 'docs';
|
||||||
|
return `https://github.com/facebook/docusaurus/edit/master/website/${nextVersionDocsDirPath}/${docPath}`;
|
||||||
|
},
|
||||||
|
showLastUpdateAuthor: true,
|
||||||
|
showLastUpdateTime: true,
|
||||||
|
// remarkPlugins: [
|
||||||
|
// [require('@docusaurus/remark-plugin-npm2yarn'), { sync: true }],
|
||||||
|
// ],
|
||||||
|
disableVersioning: isVersioningDisabled,
|
||||||
|
lastVersion: isDev ? 'current' : undefined,
|
||||||
|
onlyIncludeVersions:
|
||||||
|
!isVersioningDisabled && (isDev || isDeployPreview)
|
||||||
|
? ['current', ...versions.slice(0, 2)]
|
||||||
|
: undefined,
|
||||||
|
versions: {
|
||||||
|
current: {
|
||||||
|
// label: `${getNextBetaVersionName()} 🚧`,
|
||||||
|
// label: `2.0 🎉`,
|
||||||
|
label: `2.0`,
|
||||||
|
path: `2.0`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
theme: {
|
||||||
|
customCss: [require.resolve('./src/css/custom.css')],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
],
|
||||||
themeConfig: {
|
themeConfig: {
|
||||||
|
liveCodeBlock: {
|
||||||
|
playgroundPosition: 'bottom',
|
||||||
|
},
|
||||||
|
hideableSidebar: true,
|
||||||
|
colorMode: {
|
||||||
|
defaultMode: 'light',
|
||||||
|
disableSwitch: false,
|
||||||
|
respectPrefersColorScheme: true,
|
||||||
|
},
|
||||||
|
// announcementBar: {
|
||||||
|
// id: 'v1-new-domain',
|
||||||
|
// content:
|
||||||
|
// '➡️ Docusaurus v1 documentation has moved to <a target="_blank" rel="noopener noreferrer" href="https://v1.docusaurus.io/">v1.docusaurus.io</a>! 🔄',
|
||||||
|
// },
|
||||||
|
/*
|
||||||
|
announcementBar: {
|
||||||
|
id: 'supportus',
|
||||||
|
content:
|
||||||
|
'⭐️ If you like Docusaurus, give it a star on <a target="_blank" rel="noopener noreferrer" href="https://github.com/facebook/docusaurus">GitHub</a>! ⭐️',
|
||||||
|
},
|
||||||
|
*/
|
||||||
|
prism: {
|
||||||
|
theme: require('prism-react-renderer/themes/github'),
|
||||||
|
darkTheme: require('prism-react-renderer/themes/dracula'),
|
||||||
|
},
|
||||||
|
image: 'img/docusaurus-soc.png',
|
||||||
|
// metadatas: [{name: 'twitter:card', content: 'summary'}],
|
||||||
|
gtag: {
|
||||||
|
trackingID: 'UA-141789564-1',
|
||||||
|
},
|
||||||
|
algolia: {
|
||||||
|
apiKey: '47ecd3b21be71c5822571b9f59e52544',
|
||||||
|
indexName: 'docusaurus-2',
|
||||||
|
contextualSearch: true,
|
||||||
|
},
|
||||||
navbar: {
|
navbar: {
|
||||||
title: 'My Site',
|
hideOnScroll: true,
|
||||||
|
title: 'OHIF',
|
||||||
logo: {
|
logo: {
|
||||||
alt: 'My Site Logo',
|
alt: 'OHIF Logo',
|
||||||
src: 'img/logo.svg',
|
src: 'img/ohif.svg',
|
||||||
|
srcDark: 'img/ohif.svg',
|
||||||
},
|
},
|
||||||
items: [
|
items: [
|
||||||
{
|
{
|
||||||
type: 'doc',
|
type: 'doc',
|
||||||
docId: 'OHIF-v1 Documentation',
|
|
||||||
position: 'left',
|
position: 'left',
|
||||||
label: 'Tutorial',
|
docId: 'OHIF Documentation',
|
||||||
|
label: 'Docs',
|
||||||
|
},
|
||||||
|
// {to: 'blog', label: 'Blog', position: 'left'},
|
||||||
|
// {to: 'showcase', label: 'Showcase', position: 'left'},
|
||||||
|
// right
|
||||||
|
{
|
||||||
|
type: 'docsVersionDropdown',
|
||||||
|
position: 'right',
|
||||||
|
dropdownActiveClassDisabled: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'localeDropdown',
|
||||||
|
position: 'right',
|
||||||
|
dropdownItemsAfter: [
|
||||||
|
{
|
||||||
|
to: 'https://github.com/facebook/docusaurus/issues/3526',
|
||||||
|
label: 'Help Us Translate',
|
||||||
|
},
|
||||||
|
],
|
||||||
},
|
},
|
||||||
// { to: '/blog', label: 'Blog', position: 'left' },
|
|
||||||
{
|
{
|
||||||
href: 'https://github.com/facebook/docusaurus',
|
href: 'https://github.com/facebook/docusaurus',
|
||||||
label: 'GitHub',
|
|
||||||
position: 'right',
|
position: 'right',
|
||||||
|
className: 'header-github-link',
|
||||||
|
'aria-label': 'GitHub repository',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
footer: {
|
footer: {
|
||||||
style: 'dark',
|
style: 'dark',
|
||||||
links: [
|
// links: [
|
||||||
{
|
// {
|
||||||
title: 'Docs',
|
// title: 'Learn',
|
||||||
items: [
|
// items: [
|
||||||
{
|
// {
|
||||||
label: 'Tutorial',
|
// label: 'Introduction',
|
||||||
to: '/docs/intro',
|
// to: 'docs',
|
||||||
},
|
// },
|
||||||
],
|
// {
|
||||||
},
|
// label: 'Installation',
|
||||||
{
|
// to: 'docs/installation',
|
||||||
title: 'Community',
|
// },
|
||||||
items: [
|
// {
|
||||||
{
|
// label: 'Migration from v1 to v2',
|
||||||
label: 'Stack Overflow',
|
// to: 'docs/migration',
|
||||||
href: 'https://stackoverflow.com/questions/tagged/docusaurus',
|
// },
|
||||||
},
|
// ],
|
||||||
{
|
// },
|
||||||
label: 'Discord',
|
// {
|
||||||
href: 'https://discordapp.com/invite/docusaurus',
|
// title: 'Community',
|
||||||
},
|
// items: [
|
||||||
{
|
// {
|
||||||
label: 'Twitter',
|
// label: 'Stack Overflow',
|
||||||
href: 'https://twitter.com/docusaurus',
|
// href: 'https://stackoverflow.com/questions/tagged/docusaurus',
|
||||||
},
|
// },
|
||||||
],
|
// {
|
||||||
},
|
// label: 'Feedback',
|
||||||
{
|
// to: 'feedback',
|
||||||
title: 'More',
|
// },
|
||||||
items: [
|
// {
|
||||||
{
|
// label: 'Discord',
|
||||||
label: 'Blog',
|
// href: 'https://discordapp.com/invite/docusaurus',
|
||||||
to: '/blog',
|
// },
|
||||||
},
|
// {
|
||||||
{
|
// label: 'Help',
|
||||||
label: 'GitHub',
|
// to: '/community/support',
|
||||||
href: 'https://github.com/facebook/docusaurus',
|
// },
|
||||||
},
|
// ],
|
||||||
],
|
// },
|
||||||
},
|
// {
|
||||||
],
|
// title: 'More',
|
||||||
copyright: `Copyright © ${new Date().getFullYear()} My Project, Inc. Built with Docusaurus.`,
|
// items: [
|
||||||
|
// {
|
||||||
|
// label: 'Blog',
|
||||||
|
// to: 'blog',
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// label: 'GitHub',
|
||||||
|
// href: 'https://github.com/facebook/docusaurus',
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// label: 'Twitter',
|
||||||
|
// href: 'https://twitter.com/docusaurus',
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// html: `
|
||||||
|
// <a href="https://www.netlify.com" target="_blank" rel="noreferrer noopener" aria-label="Deploys by Netlify">
|
||||||
|
// <img src="https://www.netlify.com/img/global/badges/netlify-color-accent.svg" alt="Deploys by Netlify" />
|
||||||
|
// </a>
|
||||||
|
// `,
|
||||||
|
// },
|
||||||
|
// ],
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// title: 'Legal',
|
||||||
|
// // Please do not remove the privacy and terms, it's a legal requirement.
|
||||||
|
// items: [
|
||||||
|
// {
|
||||||
|
// label: 'Privacy',
|
||||||
|
// href: 'https://opensource.facebook.com/legal/privacy/',
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// label: 'Terms',
|
||||||
|
// href: 'https://opensource.facebook.com/legal/terms/',
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// label: 'Data Policy',
|
||||||
|
// href: 'https://opensource.facebook.com/legal/data-policy/',
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// label: 'Cookie Policy',
|
||||||
|
// href: 'https://opensource.facebook.com/legal/cookie-policy/',
|
||||||
|
// },
|
||||||
|
// ],
|
||||||
|
// },
|
||||||
|
// ],
|
||||||
|
logo: {
|
||||||
|
alt: 'OHIF ',
|
||||||
|
src: 'img/ohif.svg',
|
||||||
|
href: 'https://ohif.org',
|
||||||
|
},
|
||||||
|
copyright: `Copyright © OHIF`,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
presets: [
|
});
|
||||||
[
|
|
||||||
'@docusaurus/preset-classic',
|
|
||||||
{
|
|
||||||
docs: {
|
|
||||||
routeBasePath: "/",
|
|
||||||
sidebarPath: require.resolve('./sidebars.js'),
|
|
||||||
// Please change this to your repo.
|
|
||||||
editUrl:
|
|
||||||
'https://github.com/facebook/docusaurus/edit/master/website/',
|
|
||||||
},
|
|
||||||
blog: {
|
|
||||||
showReadingTime: true,
|
|
||||||
// Please change this to your repo.
|
|
||||||
editUrl:
|
|
||||||
'https://github.com/facebook/docusaurus/edit/master/website/blog/',
|
|
||||||
},
|
|
||||||
theme: {
|
|
||||||
customCss: require.resolve('./src/css/custom.css'),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
],
|
|
||||||
};
|
|
||||||
|
|||||||
@ -16,7 +16,12 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@docusaurus/core": "2.0.0-beta.0",
|
"@docusaurus/core": "2.0.0-beta.0",
|
||||||
|
"@docusaurus/plugin-client-redirects": "2.0.0-beta.0",
|
||||||
|
"@docusaurus/plugin-ideal-image": "2.0.0-beta.0",
|
||||||
|
"@docusaurus/plugin-pwa": "2.0.0-beta.0",
|
||||||
"@docusaurus/preset-classic": "2.0.0-beta.0",
|
"@docusaurus/preset-classic": "2.0.0-beta.0",
|
||||||
|
"@docusaurus/remark-plugin-npm2yarn": "2.0.0-beta.0",
|
||||||
|
"@docusaurus/theme-live-codeblock": "2.0.0-beta.0",
|
||||||
"@mdx-js/react": "^1.6.21",
|
"@mdx-js/react": "^1.6.21",
|
||||||
"@svgr/webpack": "^5.5.0",
|
"@svgr/webpack": "^5.5.0",
|
||||||
"clsx": "^1.1.1",
|
"clsx": "^1.1.1",
|
||||||
|
|||||||
34
platform/docs/versioned_docs/version-1.0/README.md
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
---
|
||||||
|
id: OHIF Documentation
|
||||||
|
slug: /
|
||||||
|
sidebar_position: 1
|
||||||
|
---
|
||||||
|
|
||||||
|
##### Looking for your Deploy Preview? - <a onclick="function redirect() { window.location.href='/demo/'; } redirect();">Deploy Preview for Viewer</a>
|
||||||
|
|
||||||
|
# Introduction
|
||||||
|
|
||||||
|
The [Open Health Imaging Foundation](https://www.ohif.org) is developing an open source framework for constructing web-based medical imaging applications. The application framework is built using modern HTML / CSS / JavaScript and uses [Cornerstone](https://cornerstonejs.org/) at its core to display and manipulate medical images. It is built with Meteor, a Node.js-based full-stack JavaScript platform.
|
||||||
|
|
||||||
|
This documentation concerns the OHIF framework itself and its three example applications: the OHIF Viewer, Lesion Tracker, and the Standalone Viewer.
|
||||||
|
|
||||||
|
## The **OHIF Viewer**: A general purpose DICOM Viewer ([demo](http://viewer.ohif.org/))
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
The Open Health Imaging Foundation intends to provide a simple general purpose DICOM Viewer which can be easily extended for specific uses. The primary purpose of the OHIF Viewer is to serve as a testing ground for the underlying packages and the [Cornerstone](https://cornerstonejs.org/) family of libraries.
|
||||||
|
|
||||||
|
## **Lesion Tracker**: An oncology-focused imaging application ([demo](http://lesiontracker.ohif.org/))
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
The Lesion Tracker is designed to facilitate quantitative assessments of tumour burden over time. It is similar in scope to the ePAD Imaging Platform (https://epad.stanford.edu/), developed at Stanford Medicine.
|
||||||
|
|
||||||
|
## Study List & DICOM Connectivity
|
||||||
|

|
||||||
|
|
||||||
|
The solution provides a study list and other resources for connecting to PACS and other Image Archives through standard communication approaches (DICOM Web, DICOM Messages).
|
||||||
|
|
||||||
|
## Standalone Viewer ([demo](ohif-viewer.s3-website.eu-central-1.amazonaws.com/?url=https://raw.githubusercontent.com/OHIF/Viewers/master/StandaloneViewer/etc/sampleDICOM.json))
|
||||||
|
|
||||||
|
The Standalone Viewer offers only the client-side portions of the OHIF Viewer with the Study List pages removed. This single-page viewer can be hosted as a static site (e.g. on Amazon S3, Azure Blob Storage, or Github Pages), and easily integrated with existing back-end DICOM storage systems. Alternative [Cornerstone](https://cornerstonejs.org/) Image Loaders can be included to allow your viewer to support non-DICOM objects (e.g. PNG, JPEG).
|
||||||
|
Before Width: | Height: | Size: 585 KiB After Width: | Height: | Size: 585 KiB |
|
Before Width: | Height: | Size: 227 KiB After Width: | Height: | Size: 227 KiB |