Our custom OHIF Viewer.
Go to file
Rodrigo Antinarelli 2f30e7a821
fix: Combined Hotkeys for special characters (#1233)
* fix: Combined Hotkeys for special characters

* add record method to hotkey manager

* fix record plugin

* remove unused component

* add record to modal props

* rename record method

* replace handlers to use hotkeyRecord

* fix combined keys

* change expected result count from 18 to 17

* autoformat

* Remove duplicate test, that was testing the wrong things; fix label; update configs

* Revert "Remove duplicate test, that was testing the wrong things; fix label; update configs"

This reverts commit 4292f4fe67351962d61cae623b920dcbd87dd71d.

* Fix the record plugin's registration

* fix exposed record method usage

* adding logging for info level items

* Hotkey definitions don't need to be globally reactive; use localstorage/appconfig as sources of truth; not redux

* Tidy up test

* Remove unused code from UserPreferencesForm

* Log info when we run a command

* fix hotkey preference restore

* use application configured hotkeys if there are no user preferred

* Avoid logging circular ref

* Fix callouts

* Fix small issue with array

* Fix langua issue after refactor and merge

* Refactor on recordCurrentCombo as Rodrigo did before

* Separating components in 2 files

* WIP Refactor to simplify the user preferences and move into each form the save and controll functionalities

* Remove context

* Remove unused import

* Initial work on Field treatment

* Refactor General preferences

* Small refactor removing type from HotkeyField

* small update on style

* Refactor and layout fixed

* Make hotkeys preferences working with old hotkeys row

* Move error handling out of hotkey row/input component

* WIP custom form

* Moving validation function to component

* Exposing hotkeyRecord as it does not depend on HotkeyManager Class

* Making hotkeyField as much detached possible from parent component

* Small refactors

* Refactor on user preferences

* Clean up into the changes

* Small fix to let save working

* Style finish

* move about docs into about folder

* Fix double tap on single keys

* Style refactor

* Remove log

* Fix log issues on unit tests

* Fix unit test breaking on ohif/core index

* Fixing hotkeys unpause unit test issue

* Rename file to adopt lowercase

* Rename file to adopt lowercase

* Fixing callouts

* Big refactor miving some of the components into viewer and creating small components into ohif/ui

* Typo on folder name

* Updating ohif ui docs

* Remove comments

* Fix binding of combo keys

* Fix some cypress tests failures

* Fixing onCancel button

* Fixing e2e tests

* Small style update

* Fixing unit tests failing after fix issue

* Remove some not used code

* Remove left over after debug

* Adding prevent default on hotkeys events

* Fixinf existing hotkeys validator with 3 keys pressed

* Exposing hotkeys as root level on ohif-core

* Clean up

* Exposing all availableLanguages with labels and fixing an issue on language switcher

* Fixing e2e cypress tests

* Preveinting some simple errors

* Treating error once we try to set hotkey definitions

* Adding ui notification on setHotkeys errors

* Implementing a service queue request to hold until functions are implemented

* Making sure toFixed is only called on Numbers

Co-authored-by: Danny Brown <danny.ri.brown@gmail.com>
Co-authored-by: Gustavo André Lelis <galelis@gmail.com>
2020-02-12 15:35:04 -05:00
.circleci Fixed ci config for visual tests 2020-01-17 20:44:45 -03:00
.docker feat: Custom Healthcare API endpoint (#1367) 2020-01-14 10:22:53 -05:00
.github chore: exclude extension discussion 2020-01-28 12:46:05 -05:00
.netlify ci: Redirect site traffic to index.html if file is not resolved 2019-11-18 10:57:21 -05:00
.scripts fix(Studies): Qidosupportsincludefield should be true by default (#801) 2019-08-26 09:46:25 -04:00
.vscode feat: service worker (#1045) 2019-10-29 14:51:40 -04:00
.webpack refactor: 💡 Use env variables to set locize (#1299) 2019-12-16 09:41:41 -05:00
docs feat: 🎸 Configuration so viewer tools can nix handles (#1304) 2019-12-20 12:15:40 -05:00
extensions chore(release): publish [skip ci] 2020-02-10 20:36:28 +00:00
platform fix: Combined Hotkeys for special characters (#1233) 2020-02-12 15:35:04 -05:00
.browserslistrc fix: measurementsAPI issue caused by production build (#842) 2019-09-04 13:53:13 -04:00
.codecov.yml ci: Try to fix codecov threshold (#976) 2019-09-30 12:24:14 +02:00
.dockerignore Add modified dockerfile from previous version 2019-09-25 23:16:00 -04:00
.env.example test: percy visual testing (#1053) 2019-10-15 14:52:23 -04:00
.eslintrc.json fix: Set SR viewport as active by interaction (#1118) 2019-10-29 14:21:56 -04:00
.gitignore fix: 🐛 1241: Make Plugin switch part of ToolbarModule (#1322) 2019-12-20 15:59:36 -05:00
.prettierrc Chore/kill yalc with fire (#629) 2019-08-13 15:36:46 -04:00
aliases.config.js Chore/kill yalc with fire (#629) 2019-08-13 15:36:46 -04:00
babel.config.js fix: measurementsAPI issue caused by production build (#842) 2019-09-04 13:53:13 -04:00
build-and-publish-docs.sh ci: test docs-publish (#803) 2019-08-26 22:19:05 -04:00
CODE_OF_CONDUCT.md docs: code of conduct 2019-12-09 22:00:17 -05:00
CONTRIBUTING.md docs: contributing guidelines 2019-12-09 22:02:29 -05:00
Dockerfile ci: first attempt at adding a gated docker PR Publish (#1038) (#1041) 2019-10-22 15:53:44 -04:00
eslintAliasesResolver.js Chore/kill yalc with fire (#629) 2019-08-13 15:36:46 -04:00
jest.config.base.js Chore/kill yalc with fire (#629) 2019-08-13 15:36:46 -04:00
jest.config.js feat: 🎸 MeasurementService (#1314) 2020-02-10 14:15:05 -05:00
lerna.json Simplify lerna commands in CI 2019-08-14 08:49:19 -04:00
LICENSE Chore/kill yalc with fire (#629) 2019-08-13 15:36:46 -04:00
maintainer-notes.md fix: measurementsAPI issue caused by production build (#842) 2019-09-04 13:53:13 -04:00
netlify.toml ci: don't build our master branch (#1177) 2019-11-14 15:01:55 -05:00
package.json feat: lesion-tracker extension (#1420) 2020-02-06 14:04:18 -05:00
postcss.config.js fix: measurementsAPI issue caused by production build (#842) 2019-09-04 13:53:13 -04:00
README.md docs: swap out "always red" badge for viewer-dev.ohif.org badge 2019-12-10 08:57:03 -05:00
yarn.lock feat: lesion-tracker extension (#1420) 2020-02-06 14:04:18 -05:00

OHIF Medical Imaging Viewer

The OHIF Viewer is a zero-footprint medical image viewer provided by the Open Health Imaging Foundation (OHIF). It is a configurable and extensible progressive web application with out-of-the-box support for image archives which support DICOMweb.


NPM version NPM downloads Pulls MIT License FOSSA Status

Netlify Status CircleCI codecov This project is using Percy.io for visual regression testing. All Contributors

About

The OHIF Medical Imaging Viewer is for viewing medical images. It can retrieve and load images from most sources and formats; render sets in 2D, 3D, and reconstructed representations; allows for the manipulation, annotation, and serialization of observations; supports internationalization, OpenID Connect, offline use, hotkeys, and many more features.

Almost everything offers some degree of customization and configuration. If it doesn't support something you need, we accept pull requests and have an ever improving Extension System.

Why Choose Us

Community & Experience

The OHIF Viewer is a collaborative effort that has served as the basis for many active, production, and FDA Cleared medical imaging viewers. It benefits from our extensive community's collective experience, and from the sponsored contributions of individuals, research groups, and commercial organizations.

Built to Adapt

After more than 5-years of integrating with many companies and organizations, The OHIF Viewer has been rebuilt from the ground up to better address the varying workflow and configuration needs of its many users. All of the Viewer's core features are built using it's own extension system. The same extensibility that allows us to offer:

  • 2D and 3D medical image viewing
  • Multiplanar Reconstruction (MPR)
  • Maximum Intensity Project (MIP)
  • Whole slide microscopy viewing
  • PDF and Dicom Structured Report rendering
  • User Access Control (UAC)
  • Context specific toolbar and side panel content
  • and many others

Can be leveraged by you to customize the viewer for your workflow, and to add any new functionality you may need (and wish to maintain privately without forking).

Support

We offer support through GitHub Issues. You can:

For commercial support, academic collaberations, and answers to common questions; please read our documented FAQ.

Quick Start Deployment

This is only one of many ways to configure and deploy the OHIF Viewer. To learn more about your options, and how to choose the best one for your requirements, check out our deployment recipes and documentation.

The fastest and easiest way to get started is to include the OHIF Viewer with a script tag. In practice, this is as simple as:

  • Including the following dependencies with script tags:
  • Have an element with an ID of root on the page
  • Configure the OHIF Viewer at window.config:
window.config = {
  routerBasename: '/',
  servers: {
    dicomWeb: [
      {
        name: 'DCM4CHEE',
        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',
      },
    ],
  },
};
  • Install the viewer: window.OHIFStandaloneViewer.installViewer(window.config);

This exact setup is demonstrated in this CodeSandbox and in our Embedding The Viewer deployment recipe.

Developing

Requirements

  • Yarn 1.17.3+
  • Node 10+
  • Yarn Workspaces should be enabled on your machine:
    • yarn config set workspaces-experimental true

Getting Started

  1. Fork this repository
  2. Clone your forked repository
    • git clone https://github.com/YOUR-USERNAME/Viewers.git
  3. Navigate to the cloned project's directory
  4. Add this repo as a remote named upstream
    • git remote add upstream https://github.com/OHIF/Viewers.git
  5. yarn install to restore dependencies and link projects

To Develop

From this repository's root directory:

# Enable Yarn Workspaces
yarn config set workspaces-experimental true

# Restore dependencies
yarn install

Commands

These commands are available from the root directory. Each project directory also supports a number of commands that can be found in their respective README.md and project.json files.

Yarn Commands Description
Develop
dev or start Default development experience for Viewer
dev:project <package-name> Replace with core, ui, i18n, cornerstone, vtk, etc.
test:unit Jest multi-project test runner; overall coverage
Deploy
build* Builds production output for our PWA Viewer
build:package* Builds production commonjs output for our Viewer
build:package-all* Builds commonjs bundles for all projects

* - For more information on our different builds, check out our Deploy Docs

Projects

The OHIF Medical Image Viewing Platform is maintained as a 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:

.
├── 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               # This file

Want to better understand why and how we've structured this repository? Read more about it in our Architecture Documentation.

Platform

These projects comprise the

Name Description Links
@ohif/core Business logic and classes that model the data, services, and extensions that are framework agnostic NPM
@ohif/i18n Language files and small API for wrapping component/ui text for translations NPM
@ohif/viewer The OHIF Viewer. Where we consume and configure all platform library's and extensions NPM
@ohif/ui Reusable React components we consume and compose to build our Viewer's UI NPM

Extensions

This is a list of Extensions maintained by the OHIF Core team. It's possible to customize and configure these extensions, and you can even create your own. You can read more about extensions here.

Name Description Links
@ohif/extension-cornestone 2D image viewing, annotation, and segementation tools NPM
@ohif/extension-dicom-html Support for viewing DICOM SR as rendered HTML NPM
@ohif/extension-dicom-microscopy Whole slide microscopy viewing NPM
@ohif/extension-dicom-pdf View DICOM wrapped PDFs in a viewport NPM
@ohif/extension-vtk Volume rendering, reconstruction, and 3D visualizations NPM

Acknowledgments

To acknowledge the OHIF Viewer in an academic publication, please cite

LesionTracker: Extensible Open-Source Zero-Footprint Web Viewer for Cancer Imaging Research and Clinical Trials

Trinity Urban, Erik Ziegler, Rob Lewis, Chris Hafey, Cheryl Sadow, Annick D. Van den Abbeele and Gordon J. Harris

Cancer Research, November 1 2017 (77) (21) e119-e122 DOI: 10.1158/0008-5472.CAN-17-0334

Note: If you use or find this repository helpful, please take the time to star this repository on Github. This is an easy way for us to assess adoption and it can help us obtain future funding for the project.

This work is supported primarily by the National Institutes of Health, National Cancer Institute, Informatics Technology for Cancer Research (ITCR) program, under a grant to Dr. Gordon Harris at Massachusetts General Hospital (U24 CA199460).

License

MIT © OHIF

FOSSA Status