diff --git a/docs/I-want-to/add-a-tool-to-the-viewer.md b/docs/I-want-to/add-a-tool-to-the-viewer.md new file mode 100644 index 000000000..a55a32628 --- /dev/null +++ b/docs/I-want-to/add-a-tool-to-the-viewer.md @@ -0,0 +1,22 @@ +# Add a Tool to the Viewer + +To add a tool to the Viewer there are a few steps: + +1. Add the tool itself to the repository. + + If you're using something from Cornerstone Tools you can skip this step. + + Some examples of custom tools can be found in the lesion tracker: https://github.com/OHIF/Viewers/tree/master/Packages/ohif-lesiontracker/client/compatibility + +2. Add the toolbar button itself to the array of tools in the Toolbar: + https://github.com/OHIF/Viewers/blob/574a6d02b090b8b2f020430c5919f8377b8316c6/OHIFViewer/client/components/toolbarSection/toolbarSection.js + +3. **A:** Add it to the toolManager (if it's a tool, such as length / angle): + + https://github.com/OHIF/Viewers/blob/574a6d02b090b8b2f020430c5919f8377b8316c6/Packages/lesiontracker/client/tools.js#L2 + + ** --- OR --- ** + + **B:** Add it to the functionList if it's a command (e.g. toggle CINE play, or Invert the current viewport): + + https://github.com/OHIF/Viewers/blob/574a6d02b090b8b2f020430c5919f8377b8316c6/OHIFViewer/client/components/viewer/viewer.js#L12 diff --git a/docs/README.md b/docs/README.md index f8a898044..68a425db9 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1 +1,26 @@ -{% include "./SUMMARY.md" %} +# Introduction + +The [Open Health Imaging Foundation](https://www.ohif.org) is developing an open source framework for constructing web-based medical imaging applications. The application framework is built using modern HTML / CSS / JavaScript and uses [Cornerstone](https://cornerstonejs.org/) at its core to display and manipulate medical images. It is built with Meteor, a Node.js-based full-stack JavaScript platform. + +This documentation concerns the OHIF framework itself and its three example applications: the OHIF Viewer, Lesion Tracker, and the Standalone Viewer. + +## The **OHIF Viewer**: A general purpose DICOM Viewer ([demo](http://viewer.ohif.org/)) + +![OHIF Viewer Screenshot](../assets/img/viewer.png) + +The Open Health Imaging Foundation intends to provide a simple general purpose DICOM Viewer which can be easily extended for specific uses. The primary purpose of the OHIF Viewer is to serve as a testing ground for the underlying packages and the [Cornerstone](https://cornerstonejs.org/) family of libraries. + +## **Lesion Tracker**: An oncology-focused imaging application ([demo](http://lesiontracker.ohif.org/)) + +![Lesion Tracker Screenshot](../assets/img/lesionTracker.png) + +The Lesion Tracker is designed to facilitate quantitative assessments of tumour burden over time. It is similar in scope to the ePAD Imaging Platform (https://epad.stanford.edu/), developed at Stanford Medicine. + +## Study List & DICOM Connectivity +![Study List Screenshot](../assets/img/worklist.png) + +The solution provides a study list and other resources for connecting to PACS and other Image Archives through standard communication approaches (DICOM Web, DICOM Messages). + +## Standalone Viewer ([demo](ohif-viewer.s3-website.eu-central-1.amazonaws.com/?url=https://raw.githubusercontent.com/OHIF/Viewers/master/StandaloneViewer/etc/sampleDICOM.json)) + +The Standalone Viewer offers only the client-side portions of the OHIF Viewer with the Study List pages removed. This single-page viewer can be hosted as a static site (e.g. on Amazon S3, Azure Blob Storage, or Github Pages), and easily integrated with existing back-end DICOM storage systems. Alternative [Cornerstone](https://cornerstonejs.org/) Image Loaders can be included to allow your viewer to support non-DICOM objects (e.g. PNG, JPEG). diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md index e830cf2d8..731564c1e 100644 --- a/docs/SUMMARY.md +++ b/docs/SUMMARY.md @@ -1,6 +1,59 @@ # OHIF Viewers -- [Installation](installation.md) - Essentials + - [Installation](essentials/installation.md) - [Getting Started](essentials/getting-started.md) + - [Architecture](essentials/architecture.md) + - [Configuration](essentials/configuration.md) + - [Troubleshooting](essentials/troubleshooting.md) +- Connecting to Image Archives + - [What are my options?](connecting-to-image-archives/options.md) + - [DICOM Web](connecting-to-image-archives/dicomweb.md) + - [DICOM Message Service Element](connecting-to-image-archives/dimse.md) + - Examples + - [dcm4chee w/ Docker](connecting-to-image-archives/dcm4chee-with-docker.md) + - [Orthanc w/ Docker](connecting-to-image-archives/orthanc-with-docker.md) + - [Osirix](connecting-to-image-archives/osirix.md) +- Data Organization + - [Data Hierarchy](data/data-hierarchy.md) + - [Image Viewport](data/image-viewport.md) +- Viewport Layout + - [Layout Management](layout/layout-management.md) + - [Hanging Protocols](layout/hanging-protocols.md) +- Packages + - [Measurements Package (ohif-measurements)](packages/measurements.md) +- Deployment + - [Building for Production](deployment/building-for-production.md) + - [Security](deployment/security.md) +- I Want To... + - [Add a Tool to the Viewer](I-want-to/add-a-tool-to-the-viewer.md) +---- + +- Example Applications + - [OHIF Viewer](example-applications/ohif-viewer.md) + - [Lesion Tracker](example-applications/lesion-tracker.md) + - [Standalone Viewer](example-applications/standalone-viewer.md) + +---- +- Standalone Viewer Integration + - [Usage](standalone-viewer/usage.md) + +---- +- Lesion Tracker + - [User Manual](lesion-tracker/user-manual.md) + - [Installation on Windows](lesion-tracker/installation-on-windows.md) + - [Manage Studies in Orthanc](lesion-tracker/manage-studies-in-orthanc.md) + - [User Accounts](lesion-tracker/user-accounts.md) + - [Study and Timepoint Management](lesion-tracker/study-and-timepoint-management.md) + - [Using the Viewer](lesion-tracker/using-the-viewer.md) + - [User Preferences](lesion-tracker/user-preferences.md) + - [Server Management](lesion-tracker/server-management.md) + - [Audit Trail](lesion-tracker/audit-trail.md) + +---- +- FAQ + - [General](faq/general.md) + - [Technical](faq/technical.md) + +---- - [Contributing](contributing.md) diff --git a/docs/assets/img/LesionTracker/LT_Assessment_Progress.png b/docs/assets/img/LesionTracker/LT_Assessment_Progress.png new file mode 100644 index 000000000..7d4021cf7 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Assessment_Progress.png differ diff --git a/docs/assets/img/LesionTracker/LT_Association_Dialog.png b/docs/assets/img/LesionTracker/LT_Association_Dialog.png new file mode 100644 index 000000000..ec21eea3b Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Association_Dialog.png differ diff --git a/docs/assets/img/LesionTracker/LT_Audit_Trails.png b/docs/assets/img/LesionTracker/LT_Audit_Trails.png new file mode 100644 index 000000000..2296825b3 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Audit_Trails.png differ diff --git a/docs/assets/img/LesionTracker/LT_CINE.png b/docs/assets/img/LesionTracker/LT_CINE.png new file mode 100644 index 000000000..612898adb Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_CINE.png differ diff --git a/docs/assets/img/LesionTracker/LT_Change_Password.png b/docs/assets/img/LesionTracker/LT_Change_Password.png new file mode 100644 index 000000000..ac7f7cff2 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Change_Password.png differ diff --git a/docs/assets/img/LesionTracker/LT_CompareMode.png b/docs/assets/img/LesionTracker/LT_CompareMode.png new file mode 100644 index 000000000..d46678e07 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_CompareMode.png differ diff --git a/docs/assets/img/LesionTracker/LT_Comparison.png b/docs/assets/img/LesionTracker/LT_Comparison.png new file mode 100644 index 000000000..c9c91b914 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Comparison.png differ diff --git a/docs/assets/img/LesionTracker/LT_Configuration_Menu.png b/docs/assets/img/LesionTracker/LT_Configuration_Menu.png new file mode 100644 index 000000000..8aaac07ac Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Configuration_Menu.png differ diff --git a/docs/assets/img/LesionTracker/LT_Conformance_Check.png b/docs/assets/img/LesionTracker/LT_Conformance_Check.png new file mode 100644 index 000000000..409ddf5a2 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Conformance_Check.png differ diff --git a/docs/assets/img/LesionTracker/LT_Download.png b/docs/assets/img/LesionTracker/LT_Download.png new file mode 100644 index 000000000..5ee99d709 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Download.png differ diff --git a/docs/assets/img/LesionTracker/LT_Ellipse.png b/docs/assets/img/LesionTracker/LT_Ellipse.png new file mode 100644 index 000000000..cd21fe816 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Ellipse.png differ diff --git a/docs/assets/img/LesionTracker/LT_FlipH.png b/docs/assets/img/LesionTracker/LT_FlipH.png new file mode 100644 index 000000000..e79adb120 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_FlipH.png differ diff --git a/docs/assets/img/LesionTracker/LT_FlipV.png b/docs/assets/img/LesionTracker/LT_FlipV.png new file mode 100644 index 000000000..99404b9ae Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_FlipV.png differ diff --git a/docs/assets/img/LesionTracker/LT_Forgot_Password.png b/docs/assets/img/LesionTracker/LT_Forgot_Password.png new file mode 100644 index 000000000..4114d898f Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Forgot_Password.png differ diff --git a/docs/assets/img/LesionTracker/LT_Generate_Report.png b/docs/assets/img/LesionTracker/LT_Generate_Report.png new file mode 100644 index 000000000..b224172b2 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Generate_Report.png differ diff --git a/docs/assets/img/LesionTracker/LT_HUD_Panel.png b/docs/assets/img/LesionTracker/LT_HUD_Panel.png new file mode 100644 index 000000000..ca8d6aa4b Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_HUD_Panel.png differ diff --git a/docs/assets/img/LesionTracker/LT_Image_Viewer.png b/docs/assets/img/LesionTracker/LT_Image_Viewer.png new file mode 100644 index 000000000..37d8a8201 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Image_Viewer.png differ diff --git a/docs/assets/img/LesionTracker/LT_Installer_After_Prerequisites.png b/docs/assets/img/LesionTracker/LT_Installer_After_Prerequisites.png new file mode 100644 index 000000000..d0e808ea2 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Installer_After_Prerequisites.png differ diff --git a/docs/assets/img/LesionTracker/LT_Installer_Desktop_Shortcuts.png b/docs/assets/img/LesionTracker/LT_Installer_Desktop_Shortcuts.png new file mode 100644 index 000000000..c5fb9c3f3 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Installer_Desktop_Shortcuts.png differ diff --git a/docs/assets/img/LesionTracker/LT_Installer_Final.png b/docs/assets/img/LesionTracker/LT_Installer_Final.png new file mode 100644 index 000000000..720f532ea Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Installer_Final.png differ diff --git a/docs/assets/img/LesionTracker/LT_Installer_Finish.png b/docs/assets/img/LesionTracker/LT_Installer_Finish.png new file mode 100644 index 000000000..5656990eb Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Installer_Finish.png differ diff --git a/docs/assets/img/LesionTracker/LT_Installer_Initial.png b/docs/assets/img/LesionTracker/LT_Installer_Initial.png new file mode 100644 index 000000000..90457fa2b Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Installer_Initial.png differ diff --git a/docs/assets/img/LesionTracker/LT_Installer_Launch_Installation.png b/docs/assets/img/LesionTracker/LT_Installer_Launch_Installation.png new file mode 100644 index 000000000..78fa9d246 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Installer_Launch_Installation.png differ diff --git a/docs/assets/img/LesionTracker/LT_Installer_Launch_Uninstall.png b/docs/assets/img/LesionTracker/LT_Installer_Launch_Uninstall.png new file mode 100644 index 000000000..2935db087 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Installer_Launch_Uninstall.png differ diff --git a/docs/assets/img/LesionTracker/LT_Installer_License_Aggrement.png b/docs/assets/img/LesionTracker/LT_Installer_License_Aggrement.png new file mode 100644 index 000000000..db2e2465e Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Installer_License_Aggrement.png differ diff --git a/docs/assets/img/LesionTracker/LT_Installer_Prerequisites.png b/docs/assets/img/LesionTracker/LT_Installer_Prerequisites.png new file mode 100644 index 000000000..b0fbe2ed4 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Installer_Prerequisites.png differ diff --git a/docs/assets/img/LesionTracker/LT_Installer_Select_Location.png b/docs/assets/img/LesionTracker/LT_Installer_Select_Location.png new file mode 100644 index 000000000..9d216e655 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Installer_Select_Location.png differ diff --git a/docs/assets/img/LesionTracker/LT_Installer_Services.png b/docs/assets/img/LesionTracker/LT_Installer_Services.png new file mode 100644 index 000000000..cef807778 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Installer_Services.png differ diff --git a/docs/assets/img/LesionTracker/LT_Installer_Successful.png b/docs/assets/img/LesionTracker/LT_Installer_Successful.png new file mode 100644 index 000000000..15d9a9da9 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Installer_Successful.png differ diff --git a/docs/assets/img/LesionTracker/LT_Installer_Uninstall.png b/docs/assets/img/LesionTracker/LT_Installer_Uninstall.png new file mode 100644 index 000000000..4d9060f82 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Installer_Uninstall.png differ diff --git a/docs/assets/img/LesionTracker/LT_Invert.png b/docs/assets/img/LesionTracker/LT_Invert.png new file mode 100644 index 000000000..e4f2e81d5 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Invert.png differ diff --git a/docs/assets/img/LesionTracker/LT_Key_Timepoints.png b/docs/assets/img/LesionTracker/LT_Key_Timepoints.png new file mode 100644 index 000000000..79b02e63a Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Key_Timepoints.png differ diff --git a/docs/assets/img/LesionTracker/LT_Keyboard_Shortcuts.png b/docs/assets/img/LesionTracker/LT_Keyboard_Shortcuts.png new file mode 100644 index 000000000..ae00ff995 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Keyboard_Shortcuts.png differ diff --git a/docs/assets/img/LesionTracker/LT_Login.png b/docs/assets/img/LesionTracker/LT_Login.png new file mode 100644 index 000000000..58250b654 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Login.png differ diff --git a/docs/assets/img/LesionTracker/LT_Logout.png b/docs/assets/img/LesionTracker/LT_Logout.png new file mode 100644 index 000000000..04c488fa6 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Logout.png differ diff --git a/docs/assets/img/LesionTracker/LT_Magnify.png b/docs/assets/img/LesionTracker/LT_Magnify.png new file mode 100644 index 000000000..c96db713d Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Magnify.png differ diff --git a/docs/assets/img/LesionTracker/LT_Measurements.png b/docs/assets/img/LesionTracker/LT_Measurements.png new file mode 100644 index 000000000..a9f0ba537 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Measurements.png differ diff --git a/docs/assets/img/LesionTracker/LT_Need_Account.png b/docs/assets/img/LesionTracker/LT_Need_Account.png new file mode 100644 index 000000000..3493b4d6c Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Need_Account.png differ diff --git a/docs/assets/img/LesionTracker/LT_NonTarget_Select_Location.png b/docs/assets/img/LesionTracker/LT_NonTarget_Select_Location.png new file mode 100644 index 000000000..7eaa3e932 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_NonTarget_Select_Location.png differ diff --git a/docs/assets/img/LesionTracker/LT_NonTarget_Tool.png b/docs/assets/img/LesionTracker/LT_NonTarget_Tool.png new file mode 100644 index 000000000..7c2951246 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_NonTarget_Tool.png differ diff --git a/docs/assets/img/LesionTracker/LT_Orthanc_Delete_Select_Patient.png b/docs/assets/img/LesionTracker/LT_Orthanc_Delete_Select_Patient.png new file mode 100644 index 000000000..13d38194b Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Orthanc_Delete_Select_Patient.png differ diff --git a/docs/assets/img/LesionTracker/LT_Orthanc_Delete_Select_Study.png b/docs/assets/img/LesionTracker/LT_Orthanc_Delete_Select_Study.png new file mode 100644 index 000000000..c2a7071e9 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Orthanc_Delete_Select_Study.png differ diff --git a/docs/assets/img/LesionTracker/LT_Orthanc_Delete_Study.png b/docs/assets/img/LesionTracker/LT_Orthanc_Delete_Study.png new file mode 100644 index 000000000..b302d28eb Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Orthanc_Delete_Study.png differ diff --git a/docs/assets/img/LesionTracker/LT_Orthanc_Drag_and_Drop.png b/docs/assets/img/LesionTracker/LT_Orthanc_Drag_and_Drop.png new file mode 100644 index 000000000..3cbc0c96d Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Orthanc_Drag_and_Drop.png differ diff --git a/docs/assets/img/LesionTracker/LT_Orthanc_Start_Upload.png b/docs/assets/img/LesionTracker/LT_Orthanc_Start_Upload.png new file mode 100644 index 000000000..2fa7850d6 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Orthanc_Start_Upload.png differ diff --git a/docs/assets/img/LesionTracker/LT_Orthanc_Upload.png b/docs/assets/img/LesionTracker/LT_Orthanc_Upload.png new file mode 100644 index 000000000..b6f34a910 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Orthanc_Upload.png differ diff --git a/docs/assets/img/LesionTracker/LT_Orthanc_Upload_Result.png b/docs/assets/img/LesionTracker/LT_Orthanc_Upload_Result.png new file mode 100644 index 000000000..b545b1c69 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Orthanc_Upload_Result.png differ diff --git a/docs/assets/img/LesionTracker/LT_Pan.png b/docs/assets/img/LesionTracker/LT_Pan.png new file mode 100644 index 000000000..161a4f17a Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Pan.png differ diff --git a/docs/assets/img/LesionTracker/LT_Quick_Switch_Tool.png b/docs/assets/img/LesionTracker/LT_Quick_Switch_Tool.png new file mode 100644 index 000000000..478369c0e Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Quick_Switch_Tool.png differ diff --git a/docs/assets/img/LesionTracker/LT_Remove_Associate.png b/docs/assets/img/LesionTracker/LT_Remove_Associate.png new file mode 100644 index 000000000..4d3f580c6 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Remove_Associate.png differ diff --git a/docs/assets/img/LesionTracker/LT_Report_PDF.png b/docs/assets/img/LesionTracker/LT_Report_PDF.png new file mode 100644 index 000000000..cb65fd0c3 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Report_PDF.png differ diff --git a/docs/assets/img/LesionTracker/LT_Reset.png b/docs/assets/img/LesionTracker/LT_Reset.png new file mode 100644 index 000000000..e1e94fed2 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Reset.png differ diff --git a/docs/assets/img/LesionTracker/LT_Response_Criteria.png b/docs/assets/img/LesionTracker/LT_Response_Criteria.png new file mode 100644 index 000000000..01662fe12 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Response_Criteria.png differ diff --git a/docs/assets/img/LesionTracker/LT_Rotate_Right.png b/docs/assets/img/LesionTracker/LT_Rotate_Right.png new file mode 100644 index 000000000..246d3862a Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Rotate_Right.png differ diff --git a/docs/assets/img/LesionTracker/LT_Save1.png b/docs/assets/img/LesionTracker/LT_Save1.png new file mode 100644 index 000000000..040617fd0 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Save1.png differ diff --git a/docs/assets/img/LesionTracker/LT_Save2.png b/docs/assets/img/LesionTracker/LT_Save2.png new file mode 100644 index 000000000..615156f4c Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Save2.png differ diff --git a/docs/assets/img/LesionTracker/LT_Scroll.png b/docs/assets/img/LesionTracker/LT_Scroll.png new file mode 100644 index 000000000..f8e0e3e54 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Scroll.png differ diff --git a/docs/assets/img/LesionTracker/LT_Select_Associate.png b/docs/assets/img/LesionTracker/LT_Select_Associate.png new file mode 100644 index 000000000..8916b0876 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Select_Associate.png differ diff --git a/docs/assets/img/LesionTracker/LT_Server_Info.png b/docs/assets/img/LesionTracker/LT_Server_Info.png new file mode 100644 index 000000000..4944121aa Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Server_Info.png differ diff --git a/docs/assets/img/LesionTracker/LT_StackScroll_Multiple.png b/docs/assets/img/LesionTracker/LT_StackScroll_Multiple.png new file mode 100644 index 000000000..6a0f757f6 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_StackScroll_Multiple.png differ diff --git a/docs/assets/img/LesionTracker/LT_StackScroll_Single.png b/docs/assets/img/LesionTracker/LT_StackScroll_Single.png new file mode 100644 index 000000000..a9ee8eace Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_StackScroll_Single.png differ diff --git a/docs/assets/img/LesionTracker/LT_Studies_Panel.png b/docs/assets/img/LesionTracker/LT_Studies_Panel.png new file mode 100644 index 000000000..ad170a732 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Studies_Panel.png differ diff --git a/docs/assets/img/LesionTracker/LT_StudyList.png b/docs/assets/img/LesionTracker/LT_StudyList.png new file mode 100644 index 000000000..3f126c784 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_StudyList.png differ diff --git a/docs/assets/img/LesionTracker/LT_Target.png b/docs/assets/img/LesionTracker/LT_Target.png new file mode 100644 index 000000000..24fc066fc Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Target.png differ diff --git a/docs/assets/img/LesionTracker/LT_Target_CR.png b/docs/assets/img/LesionTracker/LT_Target_CR.png new file mode 100644 index 000000000..f760cfaf7 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Target_CR.png differ diff --git a/docs/assets/img/LesionTracker/LT_Target_Delete.png b/docs/assets/img/LesionTracker/LT_Target_Delete.png new file mode 100644 index 000000000..dafbadb5c Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Target_Delete.png differ diff --git a/docs/assets/img/LesionTracker/LT_Target_Label.png b/docs/assets/img/LesionTracker/LT_Target_Label.png new file mode 100644 index 000000000..5c9a9fe30 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Target_Label.png differ diff --git a/docs/assets/img/LesionTracker/LT_Target_Rename.png b/docs/assets/img/LesionTracker/LT_Target_Rename.png new file mode 100644 index 000000000..4d71bf308 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Target_Rename.png differ diff --git a/docs/assets/img/LesionTracker/LT_Target_UN.png b/docs/assets/img/LesionTracker/LT_Target_UN.png new file mode 100644 index 000000000..e311ea0c3 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Target_UN.png differ diff --git a/docs/assets/img/LesionTracker/LT_Temp_Tool.png b/docs/assets/img/LesionTracker/LT_Temp_Tool.png new file mode 100644 index 000000000..8f92b2ead Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Temp_Tool.png differ diff --git a/docs/assets/img/LesionTracker/LT_Themes.png b/docs/assets/img/LesionTracker/LT_Themes.png new file mode 100644 index 000000000..5ae104f43 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Themes.png differ diff --git a/docs/assets/img/LesionTracker/LT_View_Lesion.png b/docs/assets/img/LesionTracker/LT_View_Lesion.png new file mode 100644 index 000000000..aa4a026ed Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_View_Lesion.png differ diff --git a/docs/assets/img/LesionTracker/LT_View_Series_Details.png b/docs/assets/img/LesionTracker/LT_View_Series_Details.png new file mode 100644 index 000000000..4bac8b1ec Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_View_Series_Details.png differ diff --git a/docs/assets/img/LesionTracker/LT_View_Study.png b/docs/assets/img/LesionTracker/LT_View_Study.png new file mode 100644 index 000000000..dc546b153 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_View_Study.png differ diff --git a/docs/assets/img/LesionTracker/LT_Viewer.png b/docs/assets/img/LesionTracker/LT_Viewer.png new file mode 100644 index 000000000..effc7da90 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Viewer.png differ diff --git a/docs/assets/img/LesionTracker/LT_WL.png b/docs/assets/img/LesionTracker/LT_WL.png new file mode 100644 index 000000000..d703e8b20 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_WL.png differ diff --git a/docs/assets/img/LesionTracker/LT_WL_Presets.png b/docs/assets/img/LesionTracker/LT_WL_Presets.png new file mode 100644 index 000000000..464912753 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_WL_Presets.png differ diff --git a/docs/assets/img/LesionTracker/LT_Zoom.png b/docs/assets/img/LesionTracker/LT_Zoom.png new file mode 100644 index 000000000..bdca718f1 Binary files /dev/null and b/docs/assets/img/LesionTracker/LT_Zoom.png differ diff --git a/docs/assets/img/lesionTracker.png b/docs/assets/img/lesionTracker.png new file mode 100644 index 000000000..effc7da90 Binary files /dev/null and b/docs/assets/img/lesionTracker.png differ diff --git a/docs/assets/img/viewer.png b/docs/assets/img/viewer.png new file mode 100644 index 000000000..21eacd59a Binary files /dev/null and b/docs/assets/img/viewer.png differ diff --git a/docs/assets/img/worklist.png b/docs/assets/img/worklist.png new file mode 100644 index 000000000..3f126c784 Binary files /dev/null and b/docs/assets/img/worklist.png differ diff --git a/docs/connecting-to-image-archives/dcm4chee-with-docker.md b/docs/connecting-to-image-archives/dcm4chee-with-docker.md new file mode 100644 index 000000000..64f5fb65b --- /dev/null +++ b/docs/connecting-to-image-archives/dcm4chee-with-docker.md @@ -0,0 +1,41 @@ +# DCM4CHEE with Docker + +1. Install Docker (https://www.docker.com/) +2. Follow the DCM4CHEE Guidelines for Running on Docker. + + The easiest path is to use Docker-Compose which will start and stop multiple containers for you. There are excellent instructions provided by the DCM4CHEE team on the 'light archive' repository: + + https://github.com/dcm4che/dcm4chee-arc-light/wiki/Running-on-Docker#use-docker-compose + + * Create docker-compose.yml and docker-compose.env files + * Start the containers: + + ```` bash + docker-compose start + ```` + + **Note:** If you are running this on Mac OSX you will probably need to change the default docker-compose.yml file slightly. Specifically, the paths that refer to /var/local/ will likely need to be changed to /opt/ + +3. Run the OHIF Viewer or Lesion Tracker using the dcm4cheeDIMSE.json configuration file + +````bash +cd OHIFViewer +PACKAGE_DIRS="../Packages" meteor --settings ../config/dcm4cheeDIMSE.json +```` + +## Web Service URLs from DCM4CHEE: +Original source here: https://github.com/dcm4che/dcm4chee-arc-light/wiki/Running-on-Docker#web-service-urls + +> - Archive UI: - if secured, login with + +> Username | Password | Role +> --- | --- | --- +> `user` | `user` | `user` +> `admin` | `admin` | `user` + `admin` +> - Keycloak Administration Console: , login with Username: `admin`, Password: `admin`. +> - Wildfly Administration Console: , login with Username: `admin`, Password: `admin`. +> - Kibana UI: +> - DICOM QIDO-RS Base URL: +> - DICOM STOW-RS Base URL: +> - DICOM WADO-RS Base URL: +> - DICOM WADO-URI: diff --git a/docs/connecting-to-image-archives/dicomweb.md b/docs/connecting-to-image-archives/dicomweb.md new file mode 100644 index 000000000..a2c2ec201 --- /dev/null +++ b/docs/connecting-to-image-archives/dicomweb.md @@ -0,0 +1,3 @@ +# DICOM Web + +[DICOMWeb](https://en.wikipedia.org/wiki/DICOMweb) refers to RESTful DICOM Services and is a recently standardized set of guidelines for exchanging medical images and imaging metadata over the internet. Not all archives fully support it yet, but it is gaining wider adoption. diff --git a/docs/connecting-to-image-archives/dimse.md b/docs/connecting-to-image-archives/dimse.md new file mode 100644 index 000000000..478bc1a5d --- /dev/null +++ b/docs/connecting-to-image-archives/dimse.md @@ -0,0 +1,3 @@ +# DICOM Message Service Element + +DIMSE Stands for [DICOM Message Service Element](http://dicom.nema.org/medical/dicom/current/output/chtml/part07/chapter_7.html) and is the standard method through which DICOM archives communicate. We support this messaging standard for the retrieval of study, series, and instance metadata because it is widely support. For certain PACS systems, it also (currently) provides faster query results than DICOMWeb. diff --git a/docs/connecting-to-image-archives/options.md b/docs/connecting-to-image-archives/options.md new file mode 100644 index 000000000..638e547dd --- /dev/null +++ b/docs/connecting-to-image-archives/options.md @@ -0,0 +1,3 @@ +# Connecting to Image Archives + +We support DIMSE and DICOMWeb. Which one to use is up to you and depends on your PACS system. DICOMWeb requires no setup on the PACS-side whatsoever, whereas DIMSE may require you to add the 'OHIFDCM' aeTitle to the known DICOM Modalities of your Archive. This is the case for Orthanc, for example (See https://github.com/OHIF/Viewers/wiki/Orthanc-with-DIMSE). diff --git a/docs/connecting-to-image-archives/orthanc-with-docker.md b/docs/connecting-to-image-archives/orthanc-with-docker.md new file mode 100644 index 000000000..0cd40fca1 --- /dev/null +++ b/docs/connecting-to-image-archives/orthanc-with-docker.md @@ -0,0 +1,33 @@ +# Orthanc with Docker + +Depending on whether or not you want uploaded studies to persist in Orthanc after Docker has been closed, there are two different methods for starting the Docker image: + +## Temporary data storage +This command will start an instance of the jodogne/orthanc-plugins Docker image. *All data will be removed when the instance is stopped!* + +```` +docker run --rm -p 4242:4242 -p 8042:8042 jodogne/orthanc-plugins +```` + +## Persistent data storage +In order to allow your data to persist after the instance is stopped, you first need to create an image and attached data volume with Docker. The steps are as follows: + +1. Create a persistent data volume for Orthanc to use + + ```` + docker create --name sampledata -v /sampledata jodogne/orthanc-plugins + ```` + + **Note: On Windows, you need to use an absolute path for the data volume, like so:** + + ```` + docker create --name sampledata -v '//C/Users/erik/sampledata' jodogne/orthanc-plugins + ```` + +2. Run Orthanc from Docker with the data volume attached + + ```` + docker run --volumes-from sampledata -p 4242:4242 -p 8042:8042 jodogne/orthanc-plugins + ```` + +3. Upload your data and it will be persisted diff --git a/docs/connecting-to-image-archives/osirix.md b/docs/connecting-to-image-archives/osirix.md new file mode 100644 index 000000000..d7ebd0e29 --- /dev/null +++ b/docs/connecting-to-image-archives/osirix.md @@ -0,0 +1,3 @@ +# Example: Osirix + +... diff --git a/docs/contributing.md b/docs/contributing.md index 378f7e2d3..f54408db4 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -1,3 +1,16 @@ # Contributing -... +### I would like to contribute code - how do I do this? + +Fork the repository, make your change and submit a pull request. + +### Any guidance on submitting changes? + +While we do appreciate code contributions, triaging and integrating contributed code changes can be very time consuming. Please consider the following tips when working on your pull requests: + +- Functionality is appropriate for the repository. Consider posting on the forum if you are not sure. +- Code quality is acceptable. We don't have coding standards defined, but make sure it passes ESLint and looks like the rest of the code in the repository. +- Quality of design is acceptable. This is a bit subjective so you should consider posting on the forum for specific guidance. +- The scope of the pull request is not too large. Please consider separate pull requests for each feature as big pull requests are very time consuming to understand. + +We will provide feedback on your pull requests as soon as possible. Following the tips above will help ensure your changes are reviewed. diff --git a/docs/data/data-hierarchy.md b/docs/data/data-hierarchy.md new file mode 100644 index 000000000..ceaee45b9 --- /dev/null +++ b/docs/data/data-hierarchy.md @@ -0,0 +1,5 @@ +# Data Hierarchy + +## Studies, Series, Instances, Frames + +## Display Sets diff --git a/docs/data/image-viewport.md b/docs/data/image-viewport.md new file mode 100644 index 000000000..9d480566c --- /dev/null +++ b/docs/data/image-viewport.md @@ -0,0 +1,5 @@ +# Image Viewport + +### Main Viewport Component + +The [imageViewerViewport](https://github.com/OHIF/Viewers/tree/master/Packages/ohif-viewerbase/client/components/viewer/imageViewerViewport) component diff --git a/docs/data/measurements-and-annotations.md b/docs/data/measurements-and-annotations.md new file mode 100644 index 000000000..574f11845 --- /dev/null +++ b/docs/data/measurements-and-annotations.md @@ -0,0 +1 @@ +# Measurements and Annotations diff --git a/docs/data/tool-management.md b/docs/data/tool-management.md new file mode 100644 index 000000000..399b04c8b --- /dev/null +++ b/docs/data/tool-management.md @@ -0,0 +1 @@ +# Tool Management diff --git a/docs/deployment/building-for-production.md b/docs/deployment/building-for-production.md new file mode 100644 index 000000000..d09a49f46 --- /dev/null +++ b/docs/deployment/building-for-production.md @@ -0,0 +1,152 @@ +# Building for Production + +**This tutorial considers the current folder as `OHIFViewer/`**. + +### Dependencies + +First, you need to have installed: + +- [Node.js](https://nodejs.org/) and [NPM](https://www.npmjs.com/) +- [Meteor](https://www.meteor.com/) +- [MongoDB](https://www.mongodb.com/) + +**MongoDB** is actually **not required** if you have a **remote MongoDB**. If your database is **local** then you need to have it running. + +### Check your packages + +Inside of the viewer folder make sure NPM packages are updated for production: + +```bash +npm install --production +``` + +### Building + +There are two ways of building OHIF Viewer for a specific DICOM server: **Automatically** or **Manually**. + +For both, we use the `meteor build` (check it's [docs](https://guide.meteor.com/deployment.html#custom-deployment)) app and **Orthanc Dicom Web Server**. + +For `meteor build` it's necessary to inform an output folder `myOutputFolder`. +**Remember to change `myOutputFolder` to your folder location.** + +OHIF Viewer will be built using **Orthanc DICOM Web server** configuration file `../config/orthancDICOMWeb.json` to set `METEOR_SETTINGS` environment var. + +*To run with another server, just point to the corresponding `.json` located in `config` folder or create your own.* + +#### Build automatically + +After this step, go directly to [Prepare to run production build](#prepare-to-run-production-build). + +##### Non-windows users + +```bash +METEOR_PACKAGE_DIRS="../Packages" METEOR_SETTINGS=$(cat ../config/orthancDICOMWeb.json) meteor build --directory myOutputFolder +``` + +##### Windows users + +Since there is no `cat` command in Windows `cmd`, use Windows `PowerShell` (at least version 3.0) instead. + +In `PowerShell`, open a new shell as an `admin`: + +```bash +Start-Process powershell -Verb runAs +``` + +Then: + +**Remember to change `OHIFViewerFolderLocation` to OHIFViewer's folder location.** + + ```bash +cd OHIFViewerFolderLocation +$settings = Get-Content ..\config\orthancDICOMWeb.json -Raw +$settings = $settings -replace "`n","" -replace "`r","" -replace " ","" +[Environment]::SetEnvironmentVariable("METEOR_SETTINGS", $settings, "Machine") +SET METEOR_PACKAGE_DIRS="../Packages" +meteor build --directory myOutputFolder +``` + +#### Build manually + +OHIF Viewer will be built normally, but with no DICOM Server information, which needs to be added when running the build. This is described in [Manually adding DICOM Server to the Viewer](#manually-adding-dicom-server-to-the-viewer). + +##### Non-windows users + +```bash +METEOR_PACKAGE_DIRS="../Packages" meteor build --directory myOutputFolder +``` + +##### Windows users in `cmd` + +```bash +SET METEOR_PACKAGE_DIRS="../Packages" +meteor build --directory myOutputFolder +``` + +### Prepare to run production build + +If everything went ok, `meteor build` created a `bundle` folder inside `myOutputFolder`. + +**Remember to change `myOutputFolder` to your folder location.** + +Go to that folder: + +```bash +cd myOutputFolder/bundle +``` + +Now install the **NPM dependencies**: + +```bash +cd programs/server +npm install +``` + +### To run production build + +Go back to the `bundle` folder: + +```bash +cd ../.. +``` +or (**Remember to change `myOutputFolder` to your folder location.**): + +```bash +cd myOutputFolder/bundle +``` + +3 environment variables are set before running Node.js: +- `MONGO_URL`: is the url to MongoDB. If it's **local**, you need to have it running +- `ROOT_URL`: the hostname where you can access your Viewer in the browser +- `PORT`: the port the Viewer will run + +This way, the Viewer can be accessed in `http://localhost:3000`, with MongoDB running locally using 27017 port (it's default). + +##### Non-windows users + +```bash +MONGO_URL=mongodb://localhost:27017/myapp ROOT_URL=http://localhost PORT=3000 node main.js +``` + +##### Windows users in `cmd` + +```bash +SET MONGO_URL=mongodb://localhost:27017/myapp +SET ROOT_URL=http://localhost +SET PORT=3000 +node main.js +``` + +### Manually adding DICOM Server to the Viewer + +If DICOM Server was configured automatically during the building process, skip this step. + +Access the viewer `http://localhost:3000` and toggle the **Options** menu, located at top right corner. Select **Server Information** option. + +In **Server Information** dialog click on **Add a new server** button and fill the fields accordingly to the DICOM Server to be added. + +In case of doubts about any field in this dialog, use `config/orthancDICOMWeb.json` as reference. + +After filling the form, click on the **Save** button and the new server will be listed. Make sure to activate it by clicking on the left most button (a checkbox button) in the **Actions** column. + +Refresh the page and Viewer will be connected to the DICOM Server. diff --git a/docs/deployment/security.md b/docs/deployment/security.md new file mode 100644 index 000000000..8dbb2f9bc --- /dev/null +++ b/docs/deployment/security.md @@ -0,0 +1 @@ +# Security diff --git a/docs/essentials/architecture.md b/docs/essentials/architecture.md new file mode 100644 index 000000000..5d6864465 --- /dev/null +++ b/docs/essentials/architecture.md @@ -0,0 +1,15 @@ +# Architecture + +## Meteor +[Meteor](https://www.meteor.com/) is built on top of [Node.js](https://nodejs.org/en/), adding reactive templates ([Blaze](https://guide.meteor.com/blaze.html)), a [publish/subscribe](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern) mechanism (via [WebSockets](https://en.wikipedia.org/wiki/WebSocket) and the [Distributed Data Protocol](https://blog.meteor.com/introducing-ddp-6b40c6aff27d), and a fully integrated client-server [MongoDB](https://www.mongodb.com/) making it easy to create reactive data elements in the UI. + +## Structure of an OHIF Application +The OHIF Framework is built as a set of small Meteor packages which can be included as necessary in the final application. Since the logic and templates are largely pushed into packages, the actual application-specific code for each Viewer is relatively short. + +In brief, to create a new Viewer application, you need to: +* Define the existing pages and the routes which will lead to them +* Define the overall application layout +* Include child templates from the OHIF Packages into your application layout +* Specify desired template options as necessary (e.g. which tools should appear in the toolbar) + +User interface components for your application can be defined in any View layer supported by Meteor (Officially: [Angular](https://www.meteor.com/tutorials/angular/creating-an-app), [React](https://www.meteor.com/tutorials/react/creating-an-app), [Blaze](https://www.meteor.com/tutorials/blaze/creating-an-app), Unofficially: [Vue](https://github.com/meteor-vue/vue-meteor)). diff --git a/docs/essentials/configuration.md b/docs/essentials/configuration.md new file mode 100644 index 000000000..de5f00eb6 --- /dev/null +++ b/docs/essentials/configuration.md @@ -0,0 +1,11 @@ +# Configurations + +There are a few pre-defined settings files that you can find in [config](https://github.com/OHIF/Viewers/tree/master/config) folder. These are Meteor files and all settings can be accessed as showed on [Meteor Website](https://docs.meteor.com/api/core.html#Meteor-settings). UI settings are also available as OHIF.uiSettings. See the [schema](https://github.com/OHIF/Viewers/blob/131d64854cb2eceff056a15ccb12c34b9e2baaa7/Packages/ohif-servers/both/schema/servers.js) for more information. + +## Server settings + +* `dropCollections (boolean)`: the server will drop all Mongo collections when it's set to `true` as soon as it has finished starting. This is useful for demo and development environments. + +## UI Settings + +* `studyListDateFilterNumDays (integer)`: define the default date filter (range) on study list. If it's 02/15/2017 and this config is set to 5 then it will search for studies between `02/10/2017` and `02/15/2017`. diff --git a/docs/essentials/installation.md b/docs/essentials/installation.md new file mode 100644 index 000000000..028ead7ed --- /dev/null +++ b/docs/essentials/installation.md @@ -0,0 +1,58 @@ +# Installation + +## Getting the Code + +Either clone the repository using Git: + +````bash +git clone git@github.com:OHIF/Viewers.git +```` + +or [Download the latest Master as a ZIP File](https://github.com/OHIF/Viewers/archive/master.zip). + +## Set up a DICOM server + +1. Choose and install an Image Archive +2. Upload some data into your archive (e.g. with DCMTK's [storescu](http://support.dcmtk.org/docs/storescu.html) or your archive's web interface) +3. Keep the server running + +#### Open Source DICOM Image Archive Options + +Archive | Installation +-------------------------------------------| +[DCM4CHEE Archive 5.x](https://github.com/dcm4che/dcm4chee-arc-light) | [Installation with Docker](https://github.com/dcm4che/dcm4chee-arc-light/wiki/Running-on-Docker) +[Orthanc](https://www.orthanc-server.com/) | [Installation with Docker](http://book.orthanc-server.com/users/docker.html) +[DICOMcloud](https://github.com/DICOMcloud/DICOMcloud) (**DICOM Web only**)| [Installation](https://github.com/DICOMcloud/DICOMcloud#running-the-code) +[OsiriX](http://www.osirix-viewer.com/) (**Mac OSX only**) | +[Horos](https://www.horosproject.org/) (**Mac OSX only**) | + +*Feel free to make a Pull Request if you want to add to this list.* + +## Set up and test the OHIF Viewer (or LesionTracker) application: +1. [Install Meteor](https://www.meteor.com/install) +2. Open a new terminal tab in one of the Application directories (OHIFViewer or LesionTracker) +3. Instruct Meteor to install all dependent NPM Packages + + ````bash + METEOR_PACKAGE_DIRS="../Packages" meteor npm install + ```` + +4. Run Meteor using one of the available configuration files. + + ````bash + METEOR_PACKAGE_DIRS="../Packages" meteor --settings ../config/orthancDICOMWeb.json + ```` + + **Note:** On Windows, you may need to set PACKAGE_DIRS="../Packages" in your Environment Variables in your operating system settings. + +5. Launch the OHIF Viewer / Lesion Tracker Study List by visiting [http://localhost:3000/](http://localhost:3000/) in a web browser. + + **If everything is working correctly, you should see the Study List from your archive when you visit the Study List.** + +6. Double-click on a Study in the Study List to launch it in the Viewer + + **If everything is working correctly, you should see your study load into the Viewer.** + +#### Troubleshooting +* If you receive a *"No Studies Found"* message and do not see your studies, try changing the Study Date filters to a wider range. +* If you see any errors in your server console, check the [Troubleshooting](../troubleshooting.md) page for more in depth advice. diff --git a/docs/essentials/meteor-packages.md b/docs/essentials/meteor-packages.md new file mode 100644 index 000000000..e172aba86 --- /dev/null +++ b/docs/essentials/meteor-packages.md @@ -0,0 +1,60 @@ +# Meteor Packages + +### Commands (*ohif-commands*) +### Core (*ohif-core*) + +## Cornerstone Package (*ohif-cornerstone*) + +This package contains a number of front-end libraries that help us build web-based medical imaging applications. + +These are: +- [dicomParser](https://github.com/cornerstonejs/dicomParser): +A lightweight JavaScript library for parsing DICOM P10 byte streams in modern web browsers (IE10+), Node.js, and Meteor. + +- [Cornerstone Core](https://github.com/cornerstonejs/cornerstone): +A lightweight JavaScript library for displaying medical images in modern web browsers that support the HTML5 canvas element. + +- [Cornerstone Tools](https://github.com/cornerstonejs/cornerstoneTools): +A library built on top of cornerstone that provides a set of common tools needed in medical imaging to work with images and stacks of images + +- [Cornerstone Math](https://github.com/cornerstonejs/cornerstoneMath): +Math and computational geometry functionality for Cornerstone + +- [Cornerstone WADO Image Loader](https://github.com/cornerstonejs/cornerstoneWADOImageLoader): +A Cornerstone Image Loader for DICOM P10 instances over HTTP. This can be used to integrate cornerstone with WADO-URI servers or any other HTTP based server that returns DICOM P10 instances (e.g. Orthanc or custom servers). + +- [Hammer.js](https://github.com/hammerjs/hammer.js): +A JavaScript library for multi-touch gestures + +### Design (*ohif-design*) +### DICOM Services (*ohif-dicom-services*) +It contains a number of helper functions for retrieving common value types (e.g. JSON, patient name, image frame) from a DICOM image. This package is for server-side usage. + +### Hanging Protocols (*ohif-hanging-protocols*) +### Header (*ohif-header*) +### Hotkeys (*ohif-hotkeys*) + +### Lesion Tracker (*ohif-lesiontracker*) +This package stores all of the oncology-specific tools and functions developed for the Lesion Tracker application. Here we store, for example, the Target measurement and Non-target pointer tools that are used to monitor tumour burden over time. + +This package also stores Meteor components for the interactive lesion table used in the Lesion Tracker, and dialog boxes for the callbacks attached to the Target and Non-target tools. + +### Logging (*ohif-log*) +### Logging (*ohif-measurements*) +### Metadata (*ohif-metadata*) +### Polyfilling Functionality (*ohif-polyfill*) + +### Select Tree UI (*ohif-select-tree*) +### Server Settings UI (*ohif-servers*) +### Studies (*ohif-studies*) +### Study List UI (*ohif-study-list*) +### Common Themes (*ohif-themes-common*) +### Theming (*ohif-themes*) +### User Management (*ohif-user-management*) +### User (*ohif-user*) + +### Basic Viewer Components (*ohif-viewerbase*) +This is the largest package in the repository. It holds a large number of re-usable Meteor components that are used to build both the OHIF Viewer and Lesion Tracker. + +### WADO Proxy (*ohif-wadoproxy*) +Proxy for CORS diff --git a/docs/essentials/troubleshooting.md b/docs/essentials/troubleshooting.md new file mode 100644 index 000000000..20380caee --- /dev/null +++ b/docs/essentials/troubleshooting.md @@ -0,0 +1,20 @@ +# Troubleshooting + +## Common Problems + +Problem | Most Common Reasons +--------|-------------------- +** Can't retrieve Study List over DICOMWeb** | 1. QIDO root URL is incorrect
2. DICOM Web is not enabled on PACS +** Can't retrieve Study List over DIMSE** | 1. PACS is not configured to allow connections from OHIF Meteor Server +** Can't retrieve images** | 1. WADO Root URL is incorrect
2. DICOM Web is not enabled on PACS
3. HTTP Basic Authentication username and password are incorrect or not provided. + +## Debugging Steps +### Can't retrieve Study List over DICOMWeb + +1. Check that you can query your PACS using an alternative DICOM Web client (e.g. cURL, or a Web Browser). If you cannot, then your PACS is configured incorrectly. Refer to the documentation of the image archive. +2. + + +### Can't retrieve Study List over DIMSE + +### Can't retrieve images diff --git a/docs/example-applications/lesion-tracker.md b/docs/example-applications/lesion-tracker.md new file mode 100644 index 000000000..11fe6b818 --- /dev/null +++ b/docs/example-applications/lesion-tracker.md @@ -0,0 +1 @@ +# Lesion Tracker diff --git a/docs/example-applications/ohif-viewer.md b/docs/example-applications/ohif-viewer.md new file mode 100644 index 000000000..e6c0db4cb --- /dev/null +++ b/docs/example-applications/ohif-viewer.md @@ -0,0 +1 @@ +# OHIF Viewer diff --git a/docs/example-applications/standalone-viewer.md b/docs/example-applications/standalone-viewer.md new file mode 100644 index 000000000..2ff802c4f --- /dev/null +++ b/docs/example-applications/standalone-viewer.md @@ -0,0 +1 @@ +# Standalone Viewer diff --git a/docs/faq/general.md b/docs/faq/general.md new file mode 100644 index 000000000..853e8c7fa --- /dev/null +++ b/docs/faq/general.md @@ -0,0 +1,47 @@ +# Frequently Asked Questions - General +### How do I file a bug? +We accept and triage bug reports through Github primarily. +1. [Create a Github account](https://github.com/join) +2. Search the current [Issue List](https://github.com/OHIF/Viewers/issues) to ensure you are not creating a duplicate issue. + + If your issue already exists, post a comment to show us that this issue also affects you. + +3. If no prior issue exists, [Create a New Issue](https://github.com/OHIF/Viewers/issues/new) on the repository. + +Some tips for filing a new issue: +* **Make sure your issue is reproducible**: If we try to reproduce your issue given your provided steps and we cannot reproduce it, we will not be able to fix it. *Nobody wants to spend time guessing how to reproduce your issue!* Before filing, please reproduce your issue more than once and clearly describe the steps taken. +* **If you are reporting a user interface issue, provide screenshots**: A picture is worth a thousand words. If your issue concerns the UI, screenshots will help us identify the issue dramatically faster since it can be extremely challenging to describe UI bugs with text. *You should still clearly describe the steps that you took to produce the issue*. +* **Include platform & environment**: Your operating system, web browser, and web browser version are highly relevant for many bugs. Please provide these with all bug reports. +* **Include expected and actual result**: Tell us what you expected to happen, and what actually happened. If you don't do this, we might not consider it a bug. + +### How can I request a new feature? + +At the moment we are in the process of defining our roadmap and will do our best to communicate this to the community. If your requested feature is on the roadmap, then it will most likely be built at some point. If it is not, you are welcome to build it yourself and [contribute it](../contributing.md). If you have resources and would like to fund the development of a feature, please [contact us](http://www.ohif.org). + +### Who should I contact about Academic Collaborations? + +[Gordon J. Harris](http://www.dfhcc.harvard.edu/insider/member-detail/member/gordon-j-harris-phd/) at Massachusetts General Hospital is the primary contact for any academic collaborators. We are always happy to hear about new groups interested in using the OHIF framework, and may be able to provide development support if the proposed collaboration has an impact on cancer research. + +### Do you offer commercial support? + +The Open Health Imaging Foundation does not offer commercial support, however, some community members do offer consulting services. The following contacts may be useful: + +* Rob Lewis ([Radical Imaging](http://radicalimaging.com/)) + +**Please file a Pull Request if you wish to add your name or organization to this list.** + +### I emailed my question to you directly and you did not respond. Why not? + +Emailing developers directly is not a shortcut to faster support. Please file your issues and questions on Github so that everyone can benefit from the discussion and solutions. + +### Do your Viewers have [510(k) Clearance](https://www.fda.gov/MedicalDevices/DeviceRegulationandGuidance/HowtoMarketYourDevice/PremarketSubmissions/PremarketNotification510k/) from the U.S. F.D.A or [CE Marking](https://ec.europa.eu/growth/single-market/ce-marking_en) from the European Commission? + +**NO.** The OHIF Viewer, Lesion Tracker, and Standalone Viewer, **NOT** F.D.A. cleared or CE Marked. It is the users responsibility to ensure compliance with applicable rules and regulations. The [License](https://github.com/OHIF/Viewers/blob/master/LICENSE) for the OHIF Framework does not prevent your company or group from seeking F.D.A. clearance for a product built using the framework. + +If you have gone this route (or are going there), please let us know because we would be interested to hear about your experience. + +### Are your Viewers [HIPAA](https://en.wikipedia.org/wiki/Health_Insurance_Portability_and_Accountability_Act) Compliant? + +**NO.** The OHIF Viewer, Lesion Tracker, and Standalone Viewer **DO NOT** fulfill all of the criteria to become HIPAA Compliant. It is the users responsibility to ensure compliance with applicable rules and regulations. + +The Lesion Tracker application demonstrates some available components and features (e.g. [Audit Trail](../lesion-tracker/audit-trail.md), automatic logoff, and unique user identification for [User Accounts](../lesion-tracker/user-accounts.md)) which could be used by third parties seeking HIPAA compliance. diff --git a/docs/faq/technical.md b/docs/faq/technical.md new file mode 100644 index 000000000..c6bd24333 --- /dev/null +++ b/docs/faq/technical.md @@ -0,0 +1,8 @@ +# Frequently Asked Questions - Technical +## Why is your framework built with Meteor? + +At the time of project conception, Meteor was a simple way to begin using bleeding edge web technologies without putting significant effort into configuration and build processes. Although Meteor does have some drawbacks, it remains a simple all-in-one solution. + +## Do you have any plans to stop using Meteor? + +We have considered migrating templates from Blaze (http://blazejs.org/) to React (https://reactjs.org/) or Vue (https://vuejs.org/), simply because these decouple the view layer from the remainder of the application. Blaze currently lacks [Stand-alone Support](http://blazejs.org/#Better-Stand-alone-Support) which means that our templates are not re-usable outside of a Meteor application. This is certainly a downside, but the resource cost to migrate every template is significant. diff --git a/docs/installation.md b/docs/installation.md deleted file mode 100644 index 8cb9149a0..000000000 --- a/docs/installation.md +++ /dev/null @@ -1,3 +0,0 @@ -# Installation - -... \ No newline at end of file diff --git a/docs/layout/hanging-protocols.md b/docs/layout/hanging-protocols.md new file mode 100644 index 000000000..319bda35f --- /dev/null +++ b/docs/layout/hanging-protocols.md @@ -0,0 +1 @@ +# Hanging Protocols diff --git a/docs/layout/layout-management.md b/docs/layout/layout-management.md new file mode 100644 index 000000000..3756edd1c --- /dev/null +++ b/docs/layout/layout-management.md @@ -0,0 +1 @@ +# Layout Management diff --git a/docs/lesion-tracker/audit-trail.md b/docs/lesion-tracker/audit-trail.md new file mode 100644 index 000000000..fcb34e00b --- /dev/null +++ b/docs/lesion-tracker/audit-trail.md @@ -0,0 +1,6 @@ +# Lesion Tracker - Audit Trail + +1. To view Audit Trails, select **View Audit Log** on the Configuration menu. +2. To filter audit logs for a column or multiple columns, type or select in the related column or columns. + +![Audit Trails](../assets/img/LesionTracker/LT_Audit_Trails.png) diff --git a/docs/lesion-tracker/installation-on-windows.md b/docs/lesion-tracker/installation-on-windows.md new file mode 100644 index 000000000..29b639e21 --- /dev/null +++ b/docs/lesion-tracker/installation-on-windows.md @@ -0,0 +1,85 @@ +# Lesion Tracker - Installation on Windows +On Windows, the easiest way to install LesionTracker is using the provided Windows Installer. You can download the latest version of LesionTracker installer from [OHIF](ohif.org) + +## Install + +1. After you have obtained the latest version of LesionTracker installer, double-click the installer to install the application. +2. When you start the installer, setup wizard will pop up. + + ![Installer Initial](../assets/img/LesionTracker/LT_Installer_Initial.png) + +3. Click **Install** to start the installation. +4. LesionTracker will install prerequisites if they do not exist before installing the application. + + ![Prerequisites](../assets/img/LesionTracker/LT_Installer_Prerequisites.png) + +5. Click the **Next** if you accept the installation. + + ![After Prerequisites](../assets/img/LesionTracker/LT_Installer_After_Prerequisites.png) + +6. Read the license agreement, and if you agree, click **I accept the terms in the License Agreement** and then click the **Next**. + + ![License Aggrement](../assets/img/LesionTracker/LT_Installer_License_Aggrement.png) + +7. Select a location to install LesionTracker and click the **Next** to continue. + + ![Select Location](../assets/img/LesionTracker/LT_Installer_Select_Location.png) + +8. Click the **Install** to start the installation and the installation will be started. + + ![Launch Installation](../assets/img/LesionTracker/LT_Installer_Launch_Installation.png) + +9. Click **Finish** to complete the installation. + + ![Finish](../assets/img/LesionTracker/LT_Installer_Finish.png) + +10. When the installation is done, +* You will see the final dialog which gives the URLs in order to connect to LesionTracker Viewer and Orthanc Server. + + * It will launch computer's default browser and display LesionTracker Viewer if you click 'http://localhost:3000' + * It will launch computer's default browser and enables to upload studies to Orthanc Server if you click 'http://localhost:8042' + + ![Final](../assets/img/LesionTracker/LT_Installer_Final.png) + +* Also, LesionTracker installer will create two shortcuts named LesionTracker and Orthanc Server on the Desktop. + + * It will launch computer's default browser and display LesionTracker image viewer if you click LesionTracker application on the Desktop. + * It will launch computer's default browser and enables to upload studies to Orthanc Server if you click Orthanc Server application. + + ![Desktop Shortcuts](../assets/img/LesionTracker/LT_Installer_Desktop_Shortcuts.png) + +11. Click the **Done** and **Close** to close the installation window. + + ![Installation Successful](../assets/img/LesionTracker/LT_Installer_Successful.png) + +12. After the installation is completed, +* You can find the project folder in C:\Program Files\OHIF\LesionTracker if you use the default installation location. +* You will find 4 program executables which eases managing the services in the project folder: + + * **Start Services.exe:** Starts LesionTracker, MongoDB and Orthanc services manually. + * **Stop Services.exe:** Stops LesionTracker, MongoDB and Orthanc services manually. + * **Turn Off Auto Services.exe:** Configures not to start LesionTracker, MongoDB and Orthanc services automatically when Windows starts up. + * **Turn On Auto Services.exe:** Configures to start LesionTracker, MongoDB and Orthanc services automatically when Windows starts up. + + ![Services](../assets/img/LesionTracker/LT_Installer_Services.png) + +## Uninstall + +1. Open the Start Menu. +2. Click **Settings**. +3. Click **Apps** on the Settings menu. +4. Select **Apps & features** from the left panel. +5. Find the LesionTracker in programs list and click LesionTracker, then click the **Uninstall**. + + ![Uninstall](../assets/img/LesionTracker/LT_Installer_Uninstall.png) + +6. Click **Uninstall** from the LesionTracker Setup dialog. + + ![Launch Uninstall](../assets/img/LesionTracker/LT_Installer_Launch_Uninstall.png) + +When the uninstallation is done, the uninstallation will remove; + +* Prerequisites: MongoDB, nodejs and Orthanc Server +* The project folder, OHIF, from C:\Program Files +* Background Services: LesionTracker Server, MongoDB and Orthanc services +* Shortcuts: LesionTracker and Orthanc Server shortcuts on the Desktop diff --git a/docs/lesion-tracker/manage-studies-in-orthanc.md b/docs/lesion-tracker/manage-studies-in-orthanc.md new file mode 100644 index 000000000..b712a2875 --- /dev/null +++ b/docs/lesion-tracker/manage-studies-in-orthanc.md @@ -0,0 +1,34 @@ +# Lesion Tracker - Manage Studies in Orthanc +Orthanc is an open-source, simple and powerful standalone DICOM server which eases DICOM scripting and data management for clinical routine and medical research. LesionTracker installer installs Orthanc as a service and runs automatically in the background. Orthanc serves a web interface, Orthanc Explorer, and it can be accessed through http://localhost:8042 in your web browser or the Orthanc Server shortcut which is created by LesionTracker installer and loads http://localhost:8042 in your default browser. + +## Upload a study into Orthanc using Orthanc Explorer + +1. Click **Upload** button at the top-right of Orthanc Explorer and you will be brought to the upload page. + + ![Upload](../assets/img/LesionTracker/LT_Orthanc_Upload.png) + +2. Select the DICOM files and drag those files into Orthanc Explorer. + + ![Drag and Drop Studies](../assets/img/LesionTracker/LT_Orthanc_Drag_and_Drop.png) + +3. Click **Start the upload** and wait until the upload is complete. + + ![Start the Upload](../assets/img/LesionTracker/LT_Orthanc_Start_Upload.png) + +4. Click **Patients** to view the uploaded study. + + ![Upload Result](../assets/img/LesionTracker/LT_Orthanc_Upload_Result.png) + +## Delete a study from Orthanc using Orthanc Explorer + +1. Select a patient from Patients list. + + ![Select Patient](../assets/img/LesionTracker/LT_Orthanc_Delete_Select_Patient.png) + +2. Select a study of the patient. + + ![Select Study](../assets/img/LesionTracker/LT_Orthanc_Delete_Select_Study.png) + +3. Select **Delete this study** in the Interact menu. + + ![Delete Study](../assets/img/LesionTracker/LT_Orthanc_Delete_Study.png) diff --git a/docs/lesion-tracker/server-management.md b/docs/lesion-tracker/server-management.md new file mode 100644 index 000000000..438719b04 --- /dev/null +++ b/docs/lesion-tracker/server-management.md @@ -0,0 +1,5 @@ +# Lesion Tracker - Server Management + +LesionTracker supports configuration of multiple servers and allows to switch between them. To configure the servers, click **Server Information** on the Configuration Menu. + +![Server Information](../assets/img/LesionTracker/LT_Server_Info.png) diff --git a/docs/lesion-tracker/study-and-timepoint-management.md b/docs/lesion-tracker/study-and-timepoint-management.md new file mode 100644 index 000000000..d9b293487 --- /dev/null +++ b/docs/lesion-tracker/study-and-timepoint-management.md @@ -0,0 +1,51 @@ +# Lesion Tracker - Study and Timepoint Management + +![Study List](../assets/img/LesionTracker/LT_StudyList.png) + +1. Study List allows to sort each column. To sort studies, click the desired column header. +2. Study List is filterable for each column and you can filter by more than one column by typing in the column field. To filter a column, type the text in the desired column header field and press Enter. +3. Pagination is provided for the Study List at the bottom of the page. You can change the number of rows per page or the current page. + +## Study List Context Menu + +When you right-click on the study row, Study Context Menu will pop up. Study Context Menu includes operations at the study level. + +There are a couple of ways to view a study: + +* Simply double-click on the study row. +* Select **View** option on the Study Context Menu, then you will be redirected to Viewer page. + +![View Study](../assets/img/LesionTracker/LT_View_Study.png) + +### Timepoint Association + +1. To link a study with a timepoint, right-click on the study row and select **Associate** option on the Study Context Menu. You will see Study Association dialog. +2. To link multiple studies at the same time, hold Shift key and select studies you would like to associate, then right-click and select Associate on the Study Context Menu + +![Select Associate](../assets/img/LesionTracker/LT_Select_Associate.png) + +The Study Association dialog allows you to select and unselect Timepoint Type for the selected study or studies. Also, it will include all studies within 14 days of your selected studies, in case you forgot to select a study. After you identify timepoints for the selected study or studies, click **Save** to save the association. + +![Association Dialog](../assets/img/LesionTracker/LT_Association_Dialog.png) + +### Remove Timepoint Association +To unlink a timepoint association with a study, right-click on the study row and select **Remove Association** option on the Study Context Menu. Remove Association will be disabled if the study is already dissociated. + +![Remove Associate](../assets/img/LesionTracker/LT_Remove_Associate.png) + +### View Series Details +To view details of related series, right-click on the study row and select **View Series Details** option on the Study Context Menu, then Series Details dialog will pop up. Series Details dialog gives a summary of the selected study. + +![View Series Details](../assets/img/LesionTracker/LT_View_Series_Details.png) + +### Anonymize (Under Development) +... + +### Send (Under Development) +... + +### Export (Under Development) +... + +### Delete (Under Development) +... diff --git a/docs/lesion-tracker/user-accounts.md b/docs/lesion-tracker/user-accounts.md new file mode 100644 index 000000000..7378eccb9 --- /dev/null +++ b/docs/lesion-tracker/user-accounts.md @@ -0,0 +1,37 @@ +# Lesion Tracker - User Accounts + +## Sign In + +LesionTracker requires authentication to access the viewer. +If you are already a registered user, enter Your Email and Password and click **Sign In** + +![Login](../assets/img/LesionTracker/LT_Login.png) + +## Register An Account + +If you are a new user, click **Need An Account** and fill the all fields and click **Join Now** + +![Need Account](../assets/img/LesionTracker/LT_Need_Account.png) + +Note: There is a Test Drive button on the top-right of Login page. Test Drive is used to skip registration process and allows to use LesionTracker with a test account. This will be removed in the next versions. + +## Forgot Password + +To reset the password, enter Your Email and click **Send Reminder**. An email that includes a link to reset your password will be sent to your email address. + +![Forgot Password](../assets/img/LesionTracker/LT_Forgot_Password.png) + +## Change Password + +To change password: + +1. Click Configuration menu icon at the top-right of the workspace then select **Change Password** +2. Enter your password and click **Change Password** + +![Change Password](../assets/img/LesionTracker/LT_Change_Password.png) + +## Logout + +To logout, click **Logout** on the Configuration menu. + +![Logout](../assets/img/LesionTracker/LT_Logout.png) diff --git a/docs/lesion-tracker/user-manual.md b/docs/lesion-tracker/user-manual.md new file mode 100644 index 000000000..34c2fc086 --- /dev/null +++ b/docs/lesion-tracker/user-manual.md @@ -0,0 +1,10 @@ +# Lesion Tracker - User Manual + +1. [Installation on Windows](../installation-on-windows.md) +2. [Manage Studies in Orthanc](../manage-studies-in-orthanc.md) +3. [User Accounts](../user-accounts.md) +4. [Study and Timepoint Management](../study-and-timepoint-management.md) +5. [Lesion Tracking](../lesion-tracking.md) +6. [User Preferences](../user-preferences.md) +7. [Server Management](../server-management.md) +8. [Audit Trail](../audit-trail.md) diff --git a/docs/lesion-tracker/user-preferences.md b/docs/lesion-tracker/user-preferences.md new file mode 100644 index 000000000..45cf8433c --- /dev/null +++ b/docs/lesion-tracker/user-preferences.md @@ -0,0 +1,21 @@ +# Lesion Tracker - User Preferences +To view User Preferences dialog, select **Preferences** on the Configuration menu. User Preferences dialog includes a couple of tabs: + +![Configuration Menu](../assets/img/LesionTracker/LT_Configuration_Menu.png) + +#### Keyboard Shortcuts +There are a number of default shortcuts for the defined tools. To change the shortcut for the tool, type the desired key into the tool field. + +![Keyboard Shortcuts](../assets/img/LesionTracker/LT_Keyboard_Shortcuts.png) + +#### Window Width & Level Presets +There are a number of default Window Width/Level settings in the Window W/L tab. To create a new setting, enter the desired column field. + +![Window W/L](../assets/img/LesionTracker/LT_WL_Presets.png) + +## Color Themes + +1. To modify the colors in the viewer, select **Themes** from Configuration menu. +2. Select a theme then click **Apply theme** to change the theme. + +![Themes](../assets/img/LesionTracker/LT_Themes.png) diff --git a/docs/lesion-tracker/using-the-viewer.md b/docs/lesion-tracker/using-the-viewer.md new file mode 100644 index 000000000..1f4056c25 --- /dev/null +++ b/docs/lesion-tracker/using-the-viewer.md @@ -0,0 +1,270 @@ +# Lesion Tracker - Using the Viewer + +After you double-click a study, the Lesion Tracking imaging application will be launched. The basic patient and study data is displayed in the Image Viewer. + +![Viewer](../assets/img/LesionTracker/LT_Viewer.png) + +### Switching Studies and Series +There are two methods to switch studies and series inside each viewport: + +#### Studies Panel + +Studies Panel at the left side of the workspace allows you to change studies and series. Click **Studies** button to toggle Studies Panel. You can view images in two ways: + +1. Double-click the desired series thumbnail. +2. Drag and drop the desired series thumbnail on the image viewer. + +![Studies Panel](../assets/img/LesionTracker/LT_Studies_Panel.png) + +#### Quick Switch Tool + +Quick Switch Tool in the top-middle of the workspace allows you to switch studies and series for the active image viewer easily. Selected series will be colored by the theme colors. + +![Quick Switch Tool](../assets/img/LesionTracker/LT_Quick_Switch_Tool.png) + +## Image Manipulation Tools +Image Manipulation Tools are available in the toolbar at the top of the workspace. + +### Zoom Tool + +There are a couple of ways to zoom the image: + +1. Select **Zoom Tool** and down on the image with the left mouse button. +2. Down on the image the right mouse button without selecting Zoom Tool. + +![Zoom](../assets/img/LesionTracker/LT_Studies_Panel.png) + +### Window Width & Level + +There are a couple of ways to change the window/level of the image: + +1. Select **Levels Tool** and drag on the image with the left mouse button. Dragging up decreases the level and dragging left decreases the window width. + + ![Window W/L](../assets/img/LesionTracker/LT_WL.png) + +2. Alternatively, you can use default Window/Level Presets which are defined in User Preferences dialog or create your window level values. + + ![Window W/L Presets](../assets/img/LesionTracker/LT_WL_Presets.png) + +### Pan Tool + +There are a couple of ways to pan the image: +1. Select **Pan Tool** and move the image around the screen with the left mouse button. +2. Move the image around the screen with the middle mouse button without selecting Pan Tool. + +![Pan Tool](../assets/img/LesionTracker/LT_Pan.png) + +### Stack Scroll Tool + +There are a number of ways to scroll images: +1. Scroll up and down the mouse wheel. +2. Drag the scroll bar at the right side of the image viewer. +3. Use Up and Down buttons on the keyboard. + +![Scroll Tool](../assets/img/LesionTracker/LT_Scroll.png) + +## Lesion Tracking Basics +### View Case Response Criteria + +LesionTracker supports Conformance Checks for RECIST 1.1 and click **Trial** to view Response Criteria details. + +_Note:_ Trial button is available if the study is associated with a timepoint. + +![Response Criteria](../assets/img/LesionTracker/LT_Response_Criteria.png) + +### Measurements Table + +To view measurements and manipulate the lesions, click **Measurements** button at the top-right of the workspace. The Measurements table will be displayed at the right side of the workspace. To hide the Measurements the table, click Measurements button. + +_Note:_ Measurements button is available if the study is associated with a timepoint. + +![Measurements](../assets/img/LesionTracker/LT_Measurements.png) + +### Target Tool + +1. To create a target, select **Target Tool** and click on the image. +2. Hold, drag and release the mouse button to create the target. + + ![Target Tool](../assets/img/LesionTracker/LT_Target.png) + +3. To label the target, click **Add Label** button. + + ![Target Label](../assets/img/LesionTracker/LT_Target_Label.png) + +4. To resize the measurement, hover the mouse over the end points of the target then click and drag. +5. To rename the lesion, click the lesion number in the Measurements table then click **Rename** + + ![Rename Target](../assets/img/LesionTracker/LT_Target_Rename.png) + +6. To delete the lesion, click the lesion number in the Measurements table then click **Delete**. It will delete the lesion from the Measurements table and the image. + + ![Delete Target](../assets/img/LesionTracker/LT_Target_Delete.png) + +#### Completely Resolved (CR) Target Tool +To make a lesion completely resolved, click Target Tool and select **CR Target** from Target Tool pop up. + +![CR Target Tool](../assets/img/LesionTracker/LT_Target_CR.png) + +#### Unknown (UN) Target Tool +To mark a lesion as unknown, click Target Tool and select ** UN Target** from Target Tool pop up. + +![UN Target Tool](../assets/img/LesionTracker/LT_Target_UN.png) + +### Non-Target Tool + +1. To create a non-target, select **Non-Target Tool** and click on the image. +2. Hold, drag and release the mouse button to create a non-target. + + ![Non-Target Tool](../assets/img/LesionTracker/LT_NonTarget_Tool.png) + +3. Select Lesion Location and Lesion Location Response then click **Confirm**. + + ![Non-Target Select Location](../assets/img/LesionTracker/LT_NonTarget_Select_Location.png) + +4. To resize the measurement, hover the mouse over the end points of the non-target then click and drag. +5. To rename the lesion, click the lesion number in the Measurements table then click **Rename** +6. To delete the lesion, click the lesion number in the Measurements table then click **Delete**. It will delete the lesion from the Measurements table and the image. + +### View Lesion + +To view the lesion on the image, click the measurement record in the Measurements table then the image which includes the lesion will be displayed by activating the selected lesion. + +![View Lesion](../assets/img/LesionTracker/LT_View_Lesion.png) + +### Conformance Checks + +Any lesion that will conflict with Response Criteria for RECIST 1.1 will be flagged in the Measurements table. To view criteria non-conformities, click the icon at the left of the lesion record in the Measurements table. + +![Conformance Check](../assets/img/LesionTracker/LT_Conformance_Check.png) + +### Generating PDF Reports + +1. To generate reports of measurements, click **Generate Report** button at the bottom of the Measurements table. + +![Generate PDF](../assets/img/LesionTracker/LT_Generate_Report.png) + +2. A PDF file which includes target and non-target measurements with annotated image snapshots will be created. + +![Report PDF](../assets/img/LesionTracker/LT_Report_PDF.png) + +### Saving Measurements + +There a couple of ways to save changes: +1. Click **Save** button at the top-right of the workspace. + + ![Save](../assets/img/LesionTracker/LT_Save1.png) + +2. Click **Study list** to save changes and go back to Study List. + + ![Save](../assets/img/LesionTracker/LT_Save2.png) + +### Timepoint Comparison + +LesionTracker allows to compare time points and manipulate the measurements on the timepoint images. To launch the compare mode: + +1. Associate a study with Follow-up timepoint then double-click Follow-up study. Follow-up and Baseline studies will be displayed in 1x2 layout and Baseline study will show the image which includes the first target measurement as default. +2. Measurements in the Follow-up must be created in the same order as they were on Baseline. + + ![Compare Mode](../assets/img/LesionTracker/LT_CompareMode.png) + +#### Comparison + +    **Comparison** tab in the Measurements table allows you to display lesions in the timepoint compared. + +![Comparison](../assets/img/LesionTracker/LT_Comparison.png) + +#### Key Timepoints + +**Key Timepoints** tab in the Measurements table allows you to display the lesions by the timepoints at the same time. + +![Key Timepoints](../assets/img/LesionTracker/LT_Key_Timepoints.png) + +#### Image Review + +To compare the lesions in Baseline and Follow-up, click the lesion record in the Measurements table. The recorded lesions will be displayed on the Baseline and Follow-up images + +#### Stack Scroll Tool** + +To scroll between two series synchronously, click More button and select **Stack Scroll Tool**. + +![Stack Scroll](../assets/img/LesionTracker/LT_StackScroll_Multiple.png) + +#### Case Progress + +Case Progress icon displays the progress of target and non-target lesions which are assessed out of total lesions. Number in the middle of the icon shows the number of lesions which are not assessed. + +![Assessment Progress](../assets/img/LesionTracker/LT_Assessment_Progress.png) + +#### Heads Up Display (HUD) Panel + +To have a quick view of the Measurements table, click **HUD** button at the top-right of the workspace. You can easily move and resize the HUD Panel on the workspace. + +![HUD Panel](../assets/img/LesionTracker/LT_HUD_Panel.png) + +Note: HUD button is only available if the study is associated with a timepoint. + +### Additional Tools +#### Temporary Length Measurement +To check the size of a lesion without adding to the Measurements table, select **Temp Tool**. +![Temp Tool](../assets/img/LesionTracker/LT_Temp_Tool.png) + +#### Stack Scroll Tool +To scroll images: + +1. Click More button and select **Stack Scroll Tool**. +2. Drag down and up on the image viewer with the left mouse button. + +![Stack Scroll](../assets/img/LesionTracker/LT_StackScroll_Single.png) + +#### Reset Image Tool +To reset the geometric orientation, position and magnification of the image in the active image viewer, click More button and select **Reset Tool**. +![Reset](../assets/img/LesionTracker/LT_Reset.png) + +#### Rotate Right Tool +To rotate the image in the active image viewer 90 degree clockwise, click More button and select **Rotate Right Tool**. +![Rotate Right](../assets/img/LesionTracker/LT_Rotate_Right.png) + +#### Flip H Tool +To flip the image in the active image viewer horizontally, click More button and select **Flip H Tool**. +![FlipH](../assets/img/LesionTracker/LT_FlipH.png) + +#### Flip V Tool +To flip the image in the active image viewer vertically, click More button and select **Flip V Tool**. +![FlipV](../assets/img/LesionTracker/LT_FlipV.png) + +#### Invert Tool +To invert the image in the active image viewer, click More button and select **Invert Tool**. +![Invert](../assets/img/LesionTracker/LT_Invert.png) + +#### Magnify Tool +Magnify Tool allows to zoom in a part of the image without changing zoom level of the whole image. + +1. Click More button and select **Magnify Tool**. +2. Click and drag around the image with the left mouse button. + +![Magnify](../assets/img/LesionTracker/LT_Magnify.png) + +#### 3.7.9. Ellipse Tool +Ellipse Tool allows you to draw elliptical annotation with mean and standard deviation values. + +1. Click More button and select **Ellipse Tool** then click on the image. +2. Hold, move and release the mouse button to create the annotation. + +![Ellipse](../assets/img/LesionTracker/LT_Ellipse.png) + +#### Save Screenshot +To save a screenshot of the current active viewport: + +1. Click More button and click **Save Screenshot**. +2. Set image name and sizes and click Download. + +![Download](../assets/img/LesionTracker/LT_Download.png) + +#### CINE Tool +CINE Tool allows to play through stacks of images in the active viewport. + +1. Click More button and click **CINE Tool**. The CINE dialog will pop up. +2. Click the desired media options from the CINE dialog. +3. To close CINE dialog, click **CINE Tool**. + +![CINE](../assets/img/LesionTracker/LT_CINE.png) diff --git a/docs/packages/measurements.md b/docs/packages/measurements.md new file mode 100644 index 000000000..4ac6f667f --- /dev/null +++ b/docs/packages/measurements.md @@ -0,0 +1,15 @@ +# Measurements Package (ohif-measurements) + +## Package design + +## Usage + +## How to define a Measurement tool + +## How to validate Measurements + +## Data exchange concepts + +## Longitudinal Measurements + +## Timepoints diff --git a/docs/standalone-viewer/usage.md b/docs/standalone-viewer/usage.md new file mode 100644 index 000000000..7caf439aa --- /dev/null +++ b/docs/standalone-viewer/usage.md @@ -0,0 +1,90 @@ +# Standalone Viewer + +## Quick Start + +Install dependencies: + +```bash +meteor npm install +``` + +Run the application: + +```bash +METEOR_PACKAGE_DIRS="../../Packages" ROOT_URL=http://localhost:3000 meteor +``` + +Open your web browser and navigate to one of the following URLs to test the standalone viewer application: + +```bash +http://localhost:3000/testId +``` + +Or, to load DICOMs: +```bash +http://localhost:3000/testDICOMs +``` + +### To Build for the Client + +It is possible to build this standalone viewer to run as a client-only bundle of HTML, JavaScript, and CSS. + +1. First, install [meteor-build-client](https://github.com/frozeman/meteor-build-client). + + ```bash + sudo npm install -g meteor-build-client + ```` + +2. Next, build the client bundle into an output folder ("myOutputFolder") with a base URL ("localhost:3000"). In production, this would be the URL where the Viewer is available. + + ```` + METEOR_PACKAGE_DIRS="../../Packages" meteor-build-client ../myOutputFolder -u localhost:3000 + ```` + + +3. Test the bundled client-side package locally. + + Note: You will need to have Python installed to run the test server for this case. It is not a typical simple HTTP server. The bundled script redirects all URLs following the base URL to index.html. It will then use the routes defined in your application to handle the URL parameters. + + In our case, this means it will request a JSON file at baseURL/api/[id parameter]. + + So if you navigate to http://localhost:3000/sampleJPEG.json the application will retrieve the JSON from http://localhost:3000/api/sampleJPEG.json and use it to populate the viewer. If something appears to be broken, make sure you retrieve a JSON file at the /api URL. + + + Create the api folder for your data + + ````bash + cd myOutputFolder + mkdir api + ```` + + Copy your data into the folder + + ````bash + cp ../etc/sample* api/ + ```` + + Run the server + + ```` bash + python ../etc/redirectingSimpleServer.py + ```` + + Open your web browser and navigate to http://localhost:3000/sampleJPEG.json or http://localhost:3000/sampleDICOM.json + + Note: Right now there is a bug in meteor-build-client (https://github.com/frozeman/meteor-build-client/issues/34) which produces two CSS files instead of one. Since this second CSS file is not included properly, the page will appear broken. To fix this, all you have to do is open index.html and add the following at the top of the page. + + ````html + + ```` + + +### Testing the Sample client-only build +For the sake of simplicity we have also included a pre-built client-only version of the standalone viewer, which can be found in the SampleClientOnlyBuild folder. + +You can test this with: + + ```` bash + cd SampleClientOnlyBuild + python ../etc/redirectingSimpleServer.py + ```` diff --git a/img/lesionTracker.png b/img/lesionTracker.png index 18d459578..effc7da90 100644 Binary files a/img/lesionTracker.png and b/img/lesionTracker.png differ