diff --git a/platform/docs/docs/Architecture.md b/platform/docs/docs/Architecture.md deleted file mode 100644 index 211b09cc0..000000000 --- a/platform/docs/docs/Architecture.md +++ /dev/null @@ -1,151 +0,0 @@ ---- -sidebar_position: 5 -title: Architecture ---- - -# Architecture - -Looking to extend your instance of the OHIF Viewer? Want learn how to reuse _a -portion_ of the Viewer in your own application? Or maybe you want to get -involved and draft or suggest a new feature? Regardless, you're in the right -place! - -The OHIF Viewer aims to be decoupled, configurable, and extensible; while this -allows our code to be used in more ways, it also increases complexity. Below, we -aim to demistify that complexity by providing insight into how our Viewer is -architected, and the role each of it's dependent libraries plays. - - - -The [OHIF Medical Image Viewing Platform][viewers-project] is maintained as a -[`monorepo`][monorepo]. This means that this repository, instead of containing a -single project, contains many projects. If you explore our project structure, -you'll see the following: - -```bash -. -├── extensions -│ ├── _example # Skeleton of example extension -│ ├── cornerstone # 2D images w/ Cornerstone.js -│ ├── dicom-html # Structured Reports as HTML in viewport -│ ├── dicom-microscopy # Whole slide microscopy viewing -│ ├── dicom-pdf # View DICOM wrapped PDFs in viewport -│ └── vtk # MPR and Volume support w/ VTK.js -│ -├── platform -│ ├── core # Business Logic -│ ├── i18n # Internationalization Support -│ ├── ui # React component library -│ └── viewer # Connects platform and extension projects -│ -├── ... # misc. shared configuration -├── lerna.json # MonoRepo (Lerna) settings -├── package.json # Shared devDependencies and commands -└── README.md -``` - -The `platform` directory contains the business logic library, component library, -and the application library that combines them to create a powerful medical -imaging viewer. - -The `extensions` directory contains many packages that can be registered with -`@ohif/core`'s `ExtensionManager` to expand an application's supported features -and functionality. - -![Architecture Diagram](./assets/img/architecture-diagram.png) - - -This diagram is a conceptual illustration of how the Viewer is architected. - -1. (optional) `extensions` can be registered with `@ohif/core`'s - `ExtensionManager` -2. `@ohif/core` provides bussiness logic and a way for `@ohif/viewer` to access - registered extensions -3. The `@ohif/viewer` composes and provides data to components from our - component library (`@ohif/ui`) -4. The `@ohif/viewer` can be built and served as a stand-alone PWA, or as an - embeddable package ([`@ohif/viewer`][viewer-npm]) - -## Business Logic - -The [`@ohif/core`][core-github] project offers pre-packaged solutions for -features common to Web-based medical imaging viewers. For example: - -- Hotkeys -- DICOM Web requests -- Hanging Protocols -- Managing a study's measurements -- Managing a study's DICOM metadata -- [A flexible pattern for extensions](./extensions/index.md) -- And many others - -It does this while remaining decoupled from any particular view library or -rendering logic. While we use it to power our React Viewer, it can be used with -Vue, React, Vanilla JS, or any number of other frameworks. - -## React Component Library - -[`@ohif/ui`][ui-github] is a React Component library that contains the reusable -components that power the OHIF Viewer. It allows us to build, compose, and test -components in isolation; easing the development process by reducing the need to -stand-up a local PACS with test case data. - -Extension authors can also use these same components when building their -extension's UI; allowing for a consistent look and feel with the rest of the -application. - -[Check out our component library!](https://react.ohif.org/) - -## Extensions & Configuration - -While OHIF maintains several high value and commonly requested features in its -own extensions, there are many instances where one may wish to further extend -the viewer. Some common use cases include: - -- Adding AI/ML tools and insights -- Custom workflows for guided diagnosis -- Collecting specific annotations for training data or reports -- Authentication and granular permissions -- Teleconsultation workflow, image comments, and tracking -- Adding surgical templating tools and reports -- and many others - -We expose common integration points via [extensions](./extensions/index.md) to -make this possible. The viewer and many of our own extensions also offer -[configuration][configuration]. For a list of extensions maintained by OHIF, -[check out this helpful table](./extensions/index.md#maintained-extensions). - -If you find yourself thinking "I wish the Viewer could do X", and you can't -accomplish it with an extension today, create a GitHub issue! We're actively -looking for ways to improve our extensibility ^\_^ - -[Click here to read more about extensions!](./extensions/index.md) - -## Common Questions - -> When should I use the packaged source `@ohif/viewer` versus building a PWA -> from the source? - -... - -> Can I create my own Viewer using Vue.js or Angular.js? - -You can, but you will not be able to leverage as much of the existing code and -components. `@ohif/core` could still be used for business logic, and to provide -a model for extensions. `@ohif/ui` would then become a guide for the components -you would need to recreate. - - - - -[monorepo]: https://github.com/OHIF/Viewers/issues/768 -[viewers-project]: https://github.com/OHIF/Viewers -[viewer-npm]: https://www.npmjs.com/package/@ohif/viewer -[pwa]: https://developers.google.com/web/progressive-web-apps/ -[configuration]: ../configuring/index.md -[extensions]: ../extensions/index.md -[core-github]: https://github.com/OHIF/viewers/platform/core -[ui-github]: https://github.com/OHIF/Viewers/tree/master/platform/ui - diff --git a/platform/docs/docs/README.md b/platform/docs/docs/README.md index e4cd6d152..6dccdd483 100644 --- a/platform/docs/docs/README.md +++ b/platform/docs/docs/README.md @@ -1,15 +1,19 @@ -
-
- Looking for a Live Demo? - Preview The OHIF Viewer -
-
- - - -
+--- +id: Introduction +slug: / +sidebar_position: 1 +--- + + + + +
+Preview The OHIF Viewer + +
+ > ATTENTION! You are looking at the docs for the `OHIF-v3` Viewer (third time is always a charm). If you're looking for the our `OHIF-v2` (React stable version) or OHIF-v1 (deprecated `Meteor` version) select it's version from the dropdown box in the top left corner > of this page. @@ -26,7 +30,7 @@ annotating, and reporting on DICOM images in 2D (slices) and 3D (volumes). ![OHIF Viewer Screenshot](./assets/img/OHIF-viewer.png) -
The OHIF Viewer v3: A general purpose DICOM Viewer (Live Demo)
+   @@ -55,7 +59,114 @@ our medical image web viewers from the start. The summary of changes include: Below, you can find the gap analysis between the `OHIF-v2` and `OHIF-v3`: -{% include "./_gap_analysis.md" %} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OHIF-v2 functionalitiesOHIF-v3Comment
Rendering of 2D images via Cornerstone
Study List
Series Browser
DICOM JSON
2D Tools via CornerstoneTools
OpenID Connect standard authentication flow for connecting to identity providers🔜In Progress
Internationalization🔜Not Started
Drag/drop DICOM data into the viewer (see https://viewer.ohif.org/local)🔜Not Started
IHE Invoke Image Display - Standard-compliant launching of the viewer (e.g. from PACS or RIS)🔜Not Started
DICOM PDF support🔜Not Started
DICOM Whole-slide imaging viewport🔜Not Started
Displaying non-renderable DICOM as HTML🔜Not Started
Segmentation support🔜Not Started
RT STRUCT support🔜Not Started
White-labelling: Easily replace the OHIF Logo with your logo🔜Not Started
DICOM upload to PACS🔜Not Started
Google Cloud adapter🔜Not Started
VTK Extension + MIP / MPR layoutOther plans
UMD Build (Embedded Viewer). The problem is that this breaks a bunch of extensions that rely on third party scripts (e.g. VTK) which have their own web worker loaders.
+ + diff --git a/platform/docs/docs/SUMMARY.md b/platform/docs/docs/SUMMARY.md deleted file mode 100644 index f9a723f74..000000000 --- a/platform/docs/docs/SUMMARY.md +++ /dev/null @@ -1,83 +0,0 @@ -# OHIF Viewers - -- [Our Process](our-process.md) -- User Manuals - - [Overview](userManuals/index.md) - - [Study List](userManuals/studyList/index.md) - - [Viewer](userManuals/viewer/index.md) - - [Study Panel](userManuals/viewer/studyPanel/study-panel.md) - - [Measurement Panel](userManuals/viewer/measurementPanel/measurement-panel.md) - - [Viewport](userManuals/viewer/viewport/viewport.md) - - [Toolbar](userManuals/viewer/toolbar/toolbar.md) - - [Hot keys](userManuals/viewer/hotkeys/hotkeys.md) - - [Language](userManuals/viewer/language/language.md) -- Development - - [Getting Started](development/getting-started.md) - - [Contributing](development/contributing.md) - - [Continuous Integration](development/continous-integration.md) - - [Testing](development/testing.md) -- [Configuring Data Source](configuring/index.md) - - [Local DICOM Server](configuring/data-source.md) - ---- - -- [Architecture](architecture/index.md) -- [Viewer](viewer/index.md) - - [Configuration](viewer/configuration.md) - - [Theming](viewer/themeing.md) - - [Internationalization](viewer/internationalization.md) -- [Extensions](extensions/index.md#Overview) - - [Registering](extensions/index.md#registering-an-extension) - - [OHIF Maintained](extensions/index.md#ohif-maintained-extensions) - - [Lifecycle Hooks](extensions/index.md#lifecycle-hooks) - - [preRegistration](extensions/lifecycle/pre-registration.md) - - [onModeEnter](extensions/lifecycle/on-mode-enter.md) - - [onModeExit](extensions/lifecycle/on-mode-exit.md) - - [Modules](extensions/index.md#modules) - - [Toolbar](extensions/modules/toolbar.md) - - [Commands](extensions/modules/commands.md) - - [DataSource](extensions/modules/data-source.md) - - [SOPClassHandler](extensions/modules/sop-class-handler.md) - - [Viewport](extensions/modules/viewport.md) - - [Panel](extensions/modules/panel.md) - - [LayoutTemplate](extensions/modules/layout-template.md) - - [HangingProtocol](extensions/modules/hpModule.md) - - [Context](extensions/index.md#contexts) - - [ExtensionManager](managers/extension.md) -- [Modes](modes/index.md) - - [LifeCycle](modes/lifeCycle.md#overview) - - [Validity](modes/validity.md#overview) - - [Routes](modes/routes.md#overview) -- [Managers](managers/index.md) - - [Extension Manager](managers/extension.md) - - [Service Manager](managers/service.md) - - [Commands Manager](managers/commands.md) - - [Hotkeys Manager](managers/hotkeys.md) -- [Services](services/index.md) - - [Data Services](services/data/index.md) - - [Dicom Metadata Store](services/data/DicomMetadataStore.md) - - [DisplaySet Service](services/data/DisplaySetService.md) - - [Hanging Protocol Service](services/data/HangingProtocolService.md) - - [Toolbar Service](services/data/ToolbarService.md) - - [Measurement Service](services/data/MeasurementService.md) - - [UI Services](services/ui/index.md) - - [UI Notification Service](services/ui/ui-notification-service.md) - - [UI Modal Service](services/ui/ui-modal-service.md) - - [UI Dialog Service](services/ui/ui-dialog-service.md) - - [UI Viewport Dialog Service](services/ui/ui-viewport-dialog-service.md) - - [Viewport Grid Service](services/ui/ViewportGridService.md) - - [Pub/Sub Pattern](services/pubsub.md) - -- [Deployment](deployment/index.md) - - [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) --> diff --git a/platform/docs/docs/_gap_analysis.md b/platform/docs/docs/_gap_analysis.md deleted file mode 100644 index f7d02d44a..000000000 --- a/platform/docs/docs/_gap_analysis.md +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
OHIF-v2 functionalitiesOHIF-v3Comment
Rendering of 2D images via Cornerstone
Study List
Series Browser
DICOM JSON
2D Tools via CornerstoneTools
OpenID Connect standard authentication flow for connecting to identity providers🔜In Progress
Internationalization🔜Not Started
Drag/drop DICOM data into the viewer (see https://viewer.ohif.org/local)🔜Not Started
IHE Invoke Image Display - Standard-compliant launching of the viewer (e.g. from PACS or RIS)🔜Not Started
DICOM PDF support🔜Not Started
DICOM Whole-slide imaging viewport🔜Not Started
Displaying non-renderable DICOM as HTML🔜Not Started
Segmentation support🔜Not Started
RT STRUCT support🔜Not Started
White-labelling: Easily replace the OHIF Logo with your logo🔜Not Started
DICOM upload to PACS🔜Not Started
Google Cloud adapter🔜Not Started
VTK Extension + MIP / MPR layoutOther plans
UMD Build (Embedded Viewer). The problem is that this breaks a bunch of extensions that rely on third party scripts (e.g. VTK) which have their own web worker loaders.
- -❌ -✅ -🔜 diff --git a/platform/docs/docs/assets/img/architecture-diagram.png b/platform/docs/docs/assets/img/architecture-diagram.png deleted file mode 100644 index 1c43d0108..000000000 Binary files a/platform/docs/docs/assets/img/architecture-diagram.png and /dev/null differ diff --git a/platform/docs/docs/assets/img/dialog-example.gif b/platform/docs/docs/assets/img/dialog-example.gif deleted file mode 100644 index b6f9754c4..000000000 Binary files a/platform/docs/docs/assets/img/dialog-example.gif and /dev/null differ diff --git a/platform/docs/docs/assets/img/extensions-diagram.png b/platform/docs/docs/assets/img/extensions-diagram.png deleted file mode 100644 index c71be8692..000000000 Binary files a/platform/docs/docs/assets/img/extensions-diagram.png and /dev/null differ diff --git a/platform/docs/docs/assets/img/extensions-panel.gif b/platform/docs/docs/assets/img/extensions-panel.gif deleted file mode 100644 index fd173bd70..000000000 Binary files a/platform/docs/docs/assets/img/extensions-panel.gif and /dev/null differ diff --git a/platform/docs/docs/assets/img/extensions-toolbar-nested.gif b/platform/docs/docs/assets/img/extensions-toolbar-nested.gif deleted file mode 100644 index d89a75ab3..000000000 Binary files a/platform/docs/docs/assets/img/extensions-toolbar-nested.gif and /dev/null differ diff --git a/platform/docs/docs/assets/img/extensions-toolbar.gif b/platform/docs/docs/assets/img/extensions-toolbar.gif deleted file mode 100644 index 88c313f3d..000000000 Binary files a/platform/docs/docs/assets/img/extensions-toolbar.gif and /dev/null differ diff --git a/platform/docs/docs/assets/img/extensions-viewport.png b/platform/docs/docs/assets/img/extensions-viewport.png deleted file mode 100644 index 0ecffda06..000000000 Binary files a/platform/docs/docs/assets/img/extensions-viewport.png and /dev/null differ diff --git a/platform/docs/docs/assets/img/homePage.png b/platform/docs/docs/assets/img/homePage.png deleted file mode 100644 index 9ae0624cc..000000000 Binary files a/platform/docs/docs/assets/img/homePage.png and /dev/null differ diff --git a/platform/docs/docs/assets/img/lesionTracker.png b/platform/docs/docs/assets/img/lesionTracker.png deleted file mode 100644 index effc7da90..000000000 Binary files a/platform/docs/docs/assets/img/lesionTracker.png and /dev/null differ diff --git a/platform/docs/docs/assets/img/modal-example.gif b/platform/docs/docs/assets/img/modal-example.gif deleted file mode 100644 index 834705de1..000000000 Binary files a/platform/docs/docs/assets/img/modal-example.gif and /dev/null differ diff --git a/platform/docs/docs/assets/img/netlify-drop.gif b/platform/docs/docs/assets/img/netlify-drop.gif deleted file mode 100644 index 98634e088..000000000 Binary files a/platform/docs/docs/assets/img/netlify-drop.gif and /dev/null differ diff --git a/platform/docs/docs/assets/img/notification-example.gif b/platform/docs/docs/assets/img/notification-example.gif deleted file mode 100644 index 34d564cb4..000000000 Binary files a/platform/docs/docs/assets/img/notification-example.gif and /dev/null differ diff --git a/platform/docs/docs/assets/img/viewer.png b/platform/docs/docs/assets/img/viewer.png deleted file mode 100644 index 21eacd59a..000000000 Binary files a/platform/docs/docs/assets/img/viewer.png and /dev/null differ diff --git a/platform/docs/docs/assets/img/worklist.png b/platform/docs/docs/assets/img/worklist.png deleted file mode 100644 index 3f126c784..000000000 Binary files a/platform/docs/docs/assets/img/worklist.png and /dev/null differ diff --git a/platform/docs/docs/book.json b/platform/docs/docs/book.json deleted file mode 100644 index b9d64c86c..000000000 --- a/platform/docs/docs/book.json +++ /dev/null @@ -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" - }, - { - "value": "https://docs.ohif.org/", - "text": "Version 3.0.0", - "selected": true - } - ] - } - }, - "links": { - "sharing": { - "facebook": false, - "twitter": false - } - } -} diff --git a/platform/docs/docs/configuring/_category_.json b/platform/docs/docs/configuring/_category_.json deleted file mode 100644 index eef358871..000000000 --- a/platform/docs/docs/configuring/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Configuring", - "position": 4 -} diff --git a/platform/docs/docs/deployment/_category_.json b/platform/docs/docs/deployment/_category_.json deleted file mode 100644 index 88be8d879..000000000 --- a/platform/docs/docs/deployment/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Deployment", - "position": 8 -} diff --git a/platform/docs/docs/deployment/recipes/_category_.json b/platform/docs/docs/deployment/recipes/_category_.json deleted file mode 100644 index 5b36cc15d..000000000 --- a/platform/docs/docs/deployment/recipes/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Recipes", - "position": 2 -} diff --git a/platform/docs/docs/deployment/recipes/embedded-viewer.md b/platform/docs/docs/deployment/recipes/embedded-viewer.md deleted file mode 100644 index 07dc7502e..000000000 --- a/platform/docs/docs/deployment/recipes/embedded-viewer.md +++ /dev/null @@ -1,174 +0,0 @@ ---- -sidebar_position: 1 ---- -# 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: - - - -
    -
  1. Create a JS Object or Function to hold the OHIF Viewer's configuration. Here are some - example values that would allow the viewer to hit our public PACS:
  2. -
- -```js -// Set before importing `ohif-viewer` (JS Object) -window.config = { - // default: '/' - routerBasename: '/', - 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', - }, - ], - }, -}; -``` - -To learn more about how you can configure the OHIF Viewer, check out our -[Configuration Guide](../../configuring/index.md). - -
  1. - Render the viewer in the web page's target div -
- -```js -// Made available by the `@ohif/viewer` script included in step 1 -var containerId = 'id-of-div-to-render-component-to'; -var componentRenderedOrUpdatedCallback = function() { - console.log('OHIF Viewer rendered/updated'); -}; -window.OHIFViewer.installViewer( - window.config, - containerId, - componentRenderedOrUpdatedCallback -); -``` - -You can see a live example of this recipe in [this CodeSandbox][code-sandbox]. - -## Add Extensions - -The UMD build of the OHIF Viewer is a "light weight" build that only contains -the core extensions required for basic 2D image viewing. It's possible to add -other extensions at runtime. - -This only requires us to include a single script tag, and add it using the -`extensions` key to our config. In this practical example, we register our -popular whole slide microscopy extension: - -```html - - - - -``` - -You can see an example of a slide microscopy study in the viewer [with the -extension enabled here][whole-slide-ext-demo] ([source code][ext-code-sandbox]) -and [without it here][whole-slide-base-demo] ([source code][code-sandbox]). - -You can read more about extensions and how to create your own in our -[extensions guide](/extensions/index.md). - -#### FAQ - -> I'm having trouble getting this to work. Where can I go for help? - -First, check out this fully functional [CodeSandbox][code-sandbox] 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. - -> My application's styles are impacting the OHIF Viewer's look and feel. What -> can I do? - -When you include stylesheets and scripts, 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 -[`