Embedded viewer docs

This commit is contained in:
dannyrb 2019-04-28 12:52:10 -04:00
parent 3b8987ecb1
commit 223d986f82
5 changed files with 134 additions and 111 deletions

View File

@ -27,7 +27,7 @@
---
- [Deployment](deployment/index.md)
- [Embed the Viewer](deployment/script-tag.md))
- [Embed the Viewer](deployment/embedded-viewer.md))
- [Connecting to Image Archives](data/index.md)
---

View File

@ -0,0 +1,4 @@
<div style="text-align: center;">
<img src="/assets/img/embedded-viewer-diagram.png" alt="Embedded Viewer Diagram" style="margin: 0 auto;" />
<div><i>embedded viewer diagram</i></div>
</div>

View File

@ -0,0 +1,109 @@
# Embedded Viewer
The quickest and easiest way to get the OHIF Viewer up and running is to embed
it into an existing web application. It allows us to forego a "build step", and
add a powerful medical imaging viewer to an existing web page using only a few
include tags. Here's how it works:
{% include "./_embedded-viewer-diagram.md" %}
1. Create a new web page or template that includes the following external
dependencies:
<ul>
<li>
<a href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<code>bootstrap@3.3.7</code>
</a>
</li>
<li>
<a href="https://fonts.googleapis.com/css?family=Sanchez">
<code>Google Font @ Sanchez</code>
</a>
</li>
<li>
<a href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
<code>fontawesome@5.7.2</code>
</a>
</li>
<li>
<a href="https://unpkg.com/react@16/umd/react.production.min.js">
<code>react@16.8.6</code>
</a>
</li>
<li>
<a href="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js">
<code>react-dom@16.8.6</code>
</a>
</li>
<li>
<a href="https://unpkg.com/ohif-viewer/dist/index.umd.js">
<code>ohif-viewer@latest</code>
</a>
</li>
</ul>
<ol start="2">
<li>the HTML <code>base</code> tag</li>
<li>The <a href="">WADO Image Loader Codecs and Web Worker source code</a>
should be accessible from your server's root</li>
<li>Create a JS Object to hold the OHIF Viewer's configuration. Here are some
example values that would allow the viewer to hit our public PACS:</li>
</ol>
```js
var props = {
// Directory your application runs in (e.g. /viewer/)
routerBasename: '/',
rootUrl: 'https://lrjoo3znxm.codesandbox.io',
servers: {
dicomWeb: [
{
name: 'DCM4CHEE',
wadoUriRoot: 'https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/wado',
qidoRoot: 'https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/rs',
wadoRoot: 'https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/rs',
qidoSupportsIncludeField: true,
imageRendering: 'wadors',
thumbnailRendering: 'wadors',
requestOptions: {
requestFromBrowser: true,
},
},
],
},
}
```
<ol start="3"><li>
Render the viewer in the web page's target <code>div</code>
</li></ol>
```js
// Made available by the `ohif-viewer` script included in step 1
var Viewer = window.OHIFStandaloneViewer.App
var app = React.createElement(Viewer, props, null)
ReactDOM.render(app, document.getElementById('ohif-viewer-target'))
```
#### Tips & Tricks
> I'm having trouble getting this to work. Where can I go for help?
First, check out this fully functional
[CodeSandbox](https://codesandbox.io/s/lrjoo3znxm) example. If you're still
having trouble, feel free to search or GitHub issues. Can't find anything
related your problem? Create a new one.
> When I include bootstrap, other styles on my page no longer work correctly.
> What can I do?
When we include `bootsrap` (and the other dependencies), they are added
globally. This has the potential of causing conflicts with other scripts and
styles on the page. To prevent this, `embed` the viewer in a new/empty web page.
Have that working? Good. Now `embed` that new page using an
[`<iframe>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe).
This should produce the expected result while also protecting your page from any
globally defined styles/scripts.

View File

@ -1,124 +1,43 @@
# Deployment
The OHIF Viewer can be embedded in other web applications via it's [packaged
script source][ohif-viewer-npm], or as a standalone PWA ([progressive web
application][pwa-url] by building and hosting a collection of static assets. In
either case, you will need to configure your instance of the Viewer so that it
can connect to your data source (the database or PACS that provides the data
script source][ohif-viewer-npm], or served up as a stand-alone PWA ([progressive
web application][pwa-url] by building and hosting a collection of static assets.
In either case, you will need to configure your instance of the Viewer so that
it can connect to your data source (the database or PACS that provides the data
your Viewer will display). Let's unpack that a little:
## Overview
The OHIF Viewer is a tool. It
Our goal is to make deployment as simple and painless as possible; however,
there is an inherent amount of complexity in customizing, optimizing, and
deploying web applications. If
## Deployment Scenarios
### Embedded Viewer
The quickest and easiest way to get the OHIF Viewer up and running is to embed
it into an existing web application.
it into an existing web application. It allows us to forego a "build step", and
add a powerful medical imaging viewer to an existing web page using only a few
include tags.
<div style="text-align: center;">
<img src="/assets/img/embedded-viewer-diagram.png" alt="Embedded Viewer Diagram" style="margin: 0 auto;" />
<i>embedded viewer diagram</i>
</div>
- Read more about it here: [Embedded Viewer](/deployment/embedded-viewer.html)
- And check out our
[live demo on CodeSandbox](https://codesandbox.io/s/lrjoo3znxm)
1. Create a new web page or template that includes the following external
dependencies:
{% include "./_embedded-viewer-diagram.md" %}
<ul>
<li>
<a href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<code>bootstrap@3.3.7</code>
</a>
</li>
<li>
<a href="https://fonts.googleapis.com/css?family=Sanchez">
<code>Google Font @ Sanchez</code>
</a>
</li>
<li>
<a href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
<code>fontawesome@5.7.2</code>
</a>
</li>
<li>
<a href="https://unpkg.com/react@16/umd/react.production.min.js">
<code>react@16.8.6</code>
</a>
</li>
<li>
<a href="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js">
<code>react-dom@16.8.6</code>
</a>
</li>
<li>
<a href="https://unpkg.com/ohif-viewer/dist/index.umd.js">
<code>ohif-viewer@latest</code>
</a>
</li>
</ul>
### Stand-alone Viewer
<ol start="2"><li>Create a JS Object to hold the OHIF Viewer's configuration. Here are some
example values that would allow the viewer to hit our public PACS:</li></ol>
Deploying the OHIF Viewer as a stand-alone web application provides many
benefits, but comes at the cost of time and complexity.
```js
var props = {
routerBasename: '/',
rootUrl: 'https://lrjoo3znxm.codesandbox.io',
servers: {
dicomWeb: [
{
name: 'DCM4CHEE',
wadoUriRoot: 'https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/wado',
qidoRoot: 'https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/rs',
wadoRoot: 'https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/rs',
qidoSupportsIncludeField: true,
imageRendering: 'wadors',
thumbnailRendering: 'wadors',
requestOptions: {
requestFromBrowser: true,
},
},
],
},
}
```
#### Hosted Static Assets
<ol start="3"><li>
Render the viewer in the web page's target <code>div</code>
</li></ol>
...
```js
// Made available by the `ohif-viewer` script included in step 1
var Viewer = window.OHIFStandaloneViewer.App
var app = React.createElement(Viewer, props, null)
ReactDOM.render(app, document.getElementById('ohif-viewer-target'))
```
#### Tips & Tricks
> I'm having trouble getting this to work. Where can I go for help?
First, check out this fully functional
[CodeSandbox](https://codesandbox.io/s/lrjoo3znxm) example. If you're still
having trouble, feel free to search or GitHub issues. Can't find anything
related your problem? Create a new one.
> When I include bootstrap, other styles on my page no longer work correctly.
> What can I do?
When we include `bootsrap` (and the other dependencies), they are added
globally. This has the potential of causing conflicts with other scripts and
styles on the page. To prevent this, `embed` the viewer in a new/empty web page.
Have that working? Good. Now `embed` that new page using an
[`<iframe>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe).
This should produce the expected result while also protecting your page from any
globally defined styles/scripts.
### PWA Built From Source
#### Docker
...

View File

@ -1,9 +0,0 @@
# Embed the viewer using a script tag
<iframe src="https://codesandbox.io/embed/lrjoo3znxm?fontsize=14" style="width:100%; height:600px; border:0; border-radius: 4px; overflow:hidden;" sandbox="allow-modals allow-forms allow-popups allow-scripts allow-same-origin"></iframe>
## Important notes:
- You must correctly specify `rootUrl` **and** the HTML `<base>` tag.
- If your application runs in a subdirectory (e.g. /viewer/), this must be specified in `routerBasename`
- Currently, the WADO Image Loader Codecs and Web Worker source code must also be server at the ROOT URL