Our custom OHIF Viewer.
Go to file
Alireza 7f0ad6f84d
feat(cli): Ohif cli for modes and extensions modification (#2696)
* feat: Add initial cli tool structure

* feat: add copying template files

* feat: Add mode template and command

* feat: Add readme template generation

* feat: Add documentation to extension template

* feat: Enhance documentation of the template mode

* fix: cli module type

* feat: Add config-based mode and extension registration (#2660)

* feat: Add ohif cli add/remove extension/mode (#2661)

* Basic working CLI for add-extension and remove-extension

* Basic cli for add/remove extension/mode, lots more to do.

* Cleanup and harden]

* feat: Add list of tasks to add-mode

Co-authored-by: Alireza <ar.sedghi@gmail.com>

* feat: Add git initialization for the mode or extension template (#2662)

* fix: package json file to include templates

* feat: Add git initialization for the mode or extension template

* feat: Add more checks of git and target dir

* feat: refactore library utilities

* feat: Add the list command to print extensions and modes (#2664)

* feat: Add the list command to print extensions and modes

* Add todo

* Feat/ohif cli validation + auto install (#2671)

* WIP

* Working mode keyword verification

* Validation

* auto install extensions based on modes

* WIP remove unused extensions on removeMove

* Working add-mode, remove-mode automatic extension management.

* If extension is in used by a mode, don't allow the CLI to uninstall it

* Cleanup addExtension

* cleanup removeExtension and addMode

* Cleanup removeMode

* Update existing extensions with the needed keywords/peer deps

* Fix broken config

* Feat/cli search (#2677)

* feat: refactor pretty print for console

* feat: add search for modes and extensions

* fix: ugly colors

* Feat/ohif cli error handling publishing (#2679)

* WIP

* fix: webpack imports

* wip

* fix: react router dom private routes

* from last commit

* wip

* fix: webpack prod builds

* WIP

* Working regsitration with new IDs

* Stable

Co-authored-by: Alireza <ar.sedghi@gmail.com>

* verify extensions when constructing modes. (#2681)

* verify extensions when constructing modes.

* Add version to unit tests so it conforms to schema

* Update ohif utils exposed via @ohif/core

* Fix import

* fix tests

* feat: ohif-cli link local modes/extensions for development (#2682)

* feat: enable cli to work with project root

* feat: add initial link package

* feat: add link and unlink extension

* feat: add link and unlink mode

* erro handling for link-package

* feat: add comment on ohif-cli linking for development (#2686)

* Docs/ohif cli (#2687)

* feat: Add documentation for templates

* feat: Add more documentation

* Fix/core publish (#2685)

* versions

* wip

* remove webpack clean output

* fix publish

* use next as dist tag for v3 for now

* fix webpack pro recipe for output

* fix: lerna publish next

* fix(cli): fix issues when trying to link an extension or a mode (#2725)

The generated package.json doesn't contain keywords property which is
required by the linkPackage function. The module apth wasn't correclty
handled too, and when there is no pluginOptions, it fails while reading
the file or while generating a default configuration.

* make dicom pdf and video work after cli merge

* add axios dependency

* comment out the chdir for now

* create id and version based on user inputs

* customizable path for extension and modes

* fix template to make the template mode load

* fix the questions to loop if path is not desirable

* fix templates

* correct package json order

* unify the package creation for extension and mode

* bump versions for each package

* bump extension versions to 3.0

* add gitignore to templates

* fix version requirements when ^

* update docs

* update docs and fix tests

* try to fix the tests

* bump node version

* remove the version from extensions

* remove the version from modes

* remove version from extensionManager

* fix eslint

* revert husky version

* fix eslint

* fix node version for new eslint

* fix documentatoin removing version

* fix cicle ci image version

* fix circle ci node image

* fix circle ci node image

* add back the video and pdf

Co-authored-by: Matthis Duclos <matthis.duclos@gmail.com>
Co-authored-by: James A. Petts <jamesapetts@gmail.com>
2022-04-06 13:28:42 -04:00
.circleci feat(cli): Ohif cli for modes and extensions modification (#2696) 2022-04-06 13:28:42 -04:00
.docker feat: Support for OpenID Connect (#2431) 2021-06-23 20:41:27 +02:00
.github update stale.yml to not close IDC related issues (#1573) 2020-03-29 16:10:11 -04:00
.netlify feat(cli): Ohif cli for modes and extensions modification (#2696) 2022-04-06 13:28:42 -04:00
.scripts fix(Studies): Qidosupportsincludefield should be true by default (#801) 2019-08-26 09:46:25 -04:00
.vscode fix(tailwind): Missed some changes when upgrading to tailwind 2.x 2021-07-29 15:51:53 +02:00
.webpack feat(cli): Ohif cli for modes and extensions modification (#2696) 2022-04-06 13:28:42 -04:00
extensions feat(cli): Ohif cli for modes and extensions modification (#2696) 2022-04-06 13:28:42 -04:00
modes/longitudinal feat(cli): Ohif cli for modes and extensions modification (#2696) 2022-04-06 13:28:42 -04:00
platform feat(cli): Ohif cli for modes and extensions modification (#2696) 2022-04-06 13:28:42 -04:00
testdata@1bca96aa2a Updating testdata, no functional change 2022-03-04 14:25:27 -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
.eslintignore feat(cli): Ohif cli for modes and extensions modification (#2696) 2022-04-06 13:28:42 -04:00
.eslintrc.json feat(cli): Ohif cli for modes and extensions modification (#2696) 2022-04-06 13:28:42 -04:00
.gitignore feat(cli): Ohif cli for modes and extensions modification (#2696) 2022-04-06 13:28:42 -04:00
.gitmodules feat(OHIFv3):Add static e2e data (#2665) 2022-01-31 14:29:20 -05:00
.node-version feat(OHIFv3):Add static e2e data (#2665) 2022-01-31 14:29:20 -05:00
.prettierignore feat(cli): Ohif cli for modes and extensions modification (#2696) 2022-04-06 13:28:42 -04: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 chore: Clean up unused files, imports, and work on getting end-to-end tests and unit tests running (#2272) 2021-03-01 16:52:54 +01: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 feat: Support for OpenID Connect (#2431) 2021-06-23 20:41:27 +02:00
eslintAliasesResolver.js Chore/kill yalc with fire (#629) 2019-08-13 15:36:46 -04:00
jest.config.base.js chore: Clean up unused files, imports, and work on getting end-to-end tests and unit tests running (#2272) 2021-03-01 16:52:54 +01:00
jest.config.js chore: Clean up unused files, imports, and work on getting end-to-end tests and unit tests running (#2272) 2021-03-01 16:52:54 +01:00
lerna.json add modes 2020-05-15 13:00:05 +01:00
LICENSE Chore/kill yalc with fire (#629) 2019-08-13 15:36:46 -04:00
netlify-lerna-cache.sh fix: Use same config for branch deploys as for deploy previews (#1893) 2020-07-22 19:41:10 +02:00
netlify-lerna-restore.sh fix: Use same config for branch deploys as for deploy previews (#1893) 2020-07-22 19:41:10 +02:00
package.json feat(cli): Ohif cli for modes and extensions modification (#2696) 2022-04-06 13:28:42 -04:00
postcss.config.js fix: measurementsAPI issue caused by production build (#842) 2019-09-04 13:53:13 -04:00
README.md docs: Remove UI components for now, we will use Storybook instead later. Clean up links and introduction. (#2520) 2021-08-24 17:53:03 -04:00
runtime.txt feat(OHIFv3):Add static e2e data (#2665) 2022-01-31 14:29:20 -05:00
yarn.lock feat(cli): Ohif cli for modes and extensions modification (#2696) 2022-04-06 13:28:42 -04: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 collaborations, 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

* - 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
│   ├── default              #
│   ├── cornerstone          # 2D images w/ Cornerstone.js
│   ├── dicom-sr             #
│   └── measurement-tracking #
│
├── modes                    #
│   ├── _example             # Skeleton of example mode
│   └── longitudinal         #
│
├── 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-cornerstone 2D image viewing, annotation, and segementation tools NPM

Acknowledgments

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

Open Health Imaging Foundation Viewer: An Extensible Open-Source Framework for Building Web-Based Imaging Applications to Support Cancer Research

Erik Ziegler, Trinity Urban, Danny Brown, James Petts, Steve D. Pieper, Rob Lewis, Chris Hafey, and Gordon J. Harris

JCO Clinical Cancer Informatics, no. 4 (2020), 336-345, DOI: 10.1200/CCI.19.00131

Open-Access on Pubmed Central: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7259879/

or, for v1, 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