Code Monkey home page Code Monkey logo

viewers's Introduction

ohif-viewer

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.


CircleCI codecov All Contributors code style: prettier semantic-release

NPM version NPM downloads Pulls MIT License

ATTENTION: If you are looking for Version 1 (the Meteor Version) of this repository, it lives on the v1.x branch

Why?

Building a web based medical imaging viewer from scratch is time intensive, hard to get right, and expensive. Instead of re-inventing the wheel, you can use the OHIF Viewer as a rock solid platform to build on top of. The Viewer is a React Progressive Web Application that can be embedded in existing applications via it's packaged source (ohif-viewer) or hosted stand-alone. The Viewer exposes configuration and extensions to support workflow customization and advanced functionality at common integration points.

If you're interested in using the OHIF Viewer, but you're not sure it supports your use case check out our docs. Still not sure, or you would like to propose new features? Don't hesitate to create an issue or open a pull request.

Getting Started

This readme is specific to testing and developing locally. If you're more interested in production deployment strategies, you can check out our documentation on publishing.

Want to play around before you dig in? Check out our LIVE Demo

Setup

Requirements:

Steps:

  1. Fork this repository
  2. Clone your forked repository (your origin)
  1. Add OHIF/Viewers as a remote repository (the upstream)

Developing Locally

In your cloned repository's root folder, run:

// Restore dependencies
yarn install

// Stands up local server to host Viewer.
// Viewer connects to our public cloud PACS by default
yarn start

For more advanced local development scenarios, like using your own locally hosted PACS and test data, check out our Essential: Getting Started guide.

E2E Tests

Using Cypress to create End-to-End tests and check whether the application flow is performing correctly, ensuring that the integrated components are working as expected.

Why Cypress?

Cypress is a next generation front end testing tool built for the modern web. With Cypress is easy to set up, write, run and debug tests

It allow us to write different types of tests:

  • End-to-End tests
  • Integration tests
  • Unit tets

All tests must be in ./cypress/integration folder.

Commands to run the tests:

// Open Cypress Dashboard that provides insight into what happened when your tests ran
yarn run cy

// Run all tests using Electron browser headless
yarn run cy:run

// Run all tests in CI mode
yarn run cy:run:ci

Contributing

Large portions of the Viewer's functionality are maintained in other repositories. To get a better understanding of the Viewer's architecture and "where things live", read our docs on the Viewer's architecture

It is notoriously difficult to setup multiple dependent repositories for end-to-end testing and development. That's why we recommend writing and running unit tests when adding and modifying features. This allows us to program in isolation without a complex setup, and has the added benefit of producing well-tested business logic.

  1. Clone this repository
  2. Navigate to the project directory, and yarn install
  3. To begin making changes, yarn run dev
  4. To commit changes, run yarn run cm

When creating tests, place the test file "next to" the file you're testing. For example:

// File
index.js

// Test for file
index.test.js

As you add and modify code, jest will watch for uncommitted changes and run your tests, reporting the results to your terminal. Make a pull request with your changes to master, and a core team member will review your work. If you have any questions, please don't hesitate to reach out via a GitHub issue.

Issues

Looking to contribute? Look for the Good First Issue label.

πŸ› Bugs

Please file an issue for bugs, missing documentation, or unexpected behavior.

See Bugs

πŸ’‘ Feature Requests

Please file an issue to suggest new features. Vote on feature requests by adding a πŸ‘. This helps maintainers prioritize what to work on.

See Feature Requests

❓ Questions

For questions related to using the library, please visit our support community, or file an issue on GitHub.

Google Group

Roadmap

If you want to know what's planned for the very near future, check out our roadmap. The best way to influence when and what is worked on is to contribute to the conversation by creating GitHub issues, and contributing code through pull requests. OHIF's high level priorities for the near future are:

  • Feature parity with version 1
  • Extension and configuration improvements with key integration partners
  • Continued Developer Experience Improvements
  • Segmentation Tools, and improved VTK.js support

More granular information will make it's way to the backlog as these items become scoped for development by core maintainers.

Don't hesitate to ask questions, propose features, or create pull requests. We're here, we're listening, and we're ready to build the best open source medical imaging viewer on the web.

Roadmap Generously Powered by Canny.io

Contributors

Thanks goes to these wonderful people (emoji key):

Erik Ziegler
Erik Ziegler

πŸ’» πŸš‡
Evren Ozkan
Evren Ozkan

πŸ’»
Gustavo AndrΓ© Lelis
Gustavo AndrΓ© Lelis

πŸ’»
Danny Brown
Danny Brown

πŸ’» πŸš‡
allcontributors[bot]
allcontributors[bot]

πŸ“–
Esref Durna
Esref Durna

πŸ’¬
diego0020
diego0020

πŸ’»
David Wire
David Wire

πŸ’»
JoΓ£o Felipe de Medeiros Moreira
JoΓ£o Felipe de Medeiros Moreira

⚠️
Egor Lezhnin
Egor Lezhnin

πŸ’»

This project follows the all-contributors specification. Contributions of any kind welcome!

License

MIT Β© OHIF

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).

viewers's People

Contributors

dannyrb avatar brunoalvesdefaria avatar swederik avatar evren217 avatar ayselafsar avatar eloisalgado avatar lscoder avatar emfol avatar ubaldomattos avatar galelis avatar biharck avatar lobrewis avatar romulobordezani avatar rodrigoea avatar weiwei-ohif avatar allcontributors[bot] avatar joao-f-medeiros avatar lordlinier avatar dependabot[bot] avatar maltempi avatar dlwire avatar andrebot avatar pavertomato avatar radicalrob avatar pieper avatar zaid-safadi avatar jamesapetts avatar dominionsoftware avatar flyingdeveloper avatar sandrasie avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.