dev(yarn link): make it possible to yarn link easily with cornerstone3D and update docs (#3563)
This commit is contained in:
parent
6d3b3d191f
commit
72207e6c78
@ -33,7 +33,11 @@ function transpileJavaScript(mode) {
|
|||||||
rootMode: 'upward',
|
rootMode: 'upward',
|
||||||
envName: mode,
|
envName: mode,
|
||||||
cacheCompression: false,
|
cacheCompression: false,
|
||||||
cacheDirectory: true,
|
// Note: This was causing a lot of issues with yarn link of the cornerstone
|
||||||
|
// only set this to true if you don't have a yarn link to external libs
|
||||||
|
// otherwise expect the lib changes not to be reflected in the dev server
|
||||||
|
// as it will be cached
|
||||||
|
cacheDirectory: false,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -79,6 +79,11 @@ module.exports = (env, argv, { SRC_DIR, ENTRY }) => {
|
|||||||
module: {
|
module: {
|
||||||
noParse: [/(codec)/, /(dicomicc)/],
|
noParse: [/(codec)/, /(dicomicc)/],
|
||||||
rules: [
|
rules: [
|
||||||
|
{
|
||||||
|
test: /\.js$/,
|
||||||
|
enforce: 'pre',
|
||||||
|
use: 'source-map-loader',
|
||||||
|
},
|
||||||
transpileJavaScriptRule(mode),
|
transpileJavaScriptRule(mode),
|
||||||
loadWebWorkersRule,
|
loadWebWorkersRule,
|
||||||
// loadShadersRule,
|
// loadShadersRule,
|
||||||
|
|||||||
@ -13,12 +13,16 @@ module.exports = {
|
|||||||
'inline-react-svg',
|
'inline-react-svg',
|
||||||
{
|
{
|
||||||
svgo: {
|
svgo: {
|
||||||
plugins: extendDefaultPlugins([
|
plugins: [
|
||||||
{
|
{
|
||||||
name: 'removeViewBox',
|
name: 'preset-default',
|
||||||
active: false,
|
params: {
|
||||||
|
overrides: {
|
||||||
|
removeViewBox: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
]),
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|||||||
@ -44,9 +44,9 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.20.13",
|
"@babel/runtime": "^7.20.13",
|
||||||
"@cornerstonejs/adapters": "^1.5.0",
|
"@cornerstonejs/adapters": "^1.7.1",
|
||||||
"@cornerstonejs/core": "^1.5.0",
|
"@cornerstonejs/core": "^1.7.1",
|
||||||
"@cornerstonejs/tools": "^1.5.0",
|
"@cornerstonejs/tools": "^1.7.1",
|
||||||
"classnames": "^2.3.2"
|
"classnames": "^2.3.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -36,7 +36,7 @@
|
|||||||
"@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2",
|
"@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2",
|
||||||
"@cornerstonejs/codec-openjpeg": "^1.2.2",
|
"@cornerstonejs/codec-openjpeg": "^1.2.2",
|
||||||
"@cornerstonejs/codec-openjph": "^2.4.2",
|
"@cornerstonejs/codec-openjph": "^2.4.2",
|
||||||
"@cornerstonejs/dicom-image-loader": "^1.4.1",
|
"@cornerstonejs/dicom-image-loader": "^1.7.1",
|
||||||
"@ohif/core": "3.7.0-beta.40",
|
"@ohif/core": "3.7.0-beta.40",
|
||||||
"@ohif/ui": "3.7.0-beta.40",
|
"@ohif/ui": "3.7.0-beta.40",
|
||||||
"dcmjs": "^0.29.6",
|
"dcmjs": "^0.29.6",
|
||||||
@ -52,10 +52,10 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.20.13",
|
"@babel/runtime": "^7.20.13",
|
||||||
"@cornerstonejs/adapters": "^1.5.0",
|
"@cornerstonejs/adapters": "^1.7.1",
|
||||||
"@cornerstonejs/core": "^1.5.0",
|
"@cornerstonejs/core": "^1.7.1",
|
||||||
"@cornerstonejs/streaming-image-volume-loader": "^1.5.0",
|
"@cornerstonejs/streaming-image-volume-loader": "^1.7.1",
|
||||||
"@cornerstonejs/tools": "^1.5.0",
|
"@cornerstonejs/tools": "^1.7.1",
|
||||||
"@kitware/vtk.js": "27.3.1",
|
"@kitware/vtk.js": "27.3.1",
|
||||||
"html2canvas": "^1.4.1",
|
"html2canvas": "^1.4.1",
|
||||||
"lodash.debounce": "4.0.8",
|
"lodash.debounce": "4.0.8",
|
||||||
|
|||||||
@ -30,8 +30,8 @@
|
|||||||
"start": "yarn run dev"
|
"start": "yarn run dev"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@cornerstonejs/core": "^1.5.0",
|
"@cornerstonejs/core": "^1.7.1",
|
||||||
"@cornerstonejs/tools": "^1.5.0",
|
"@cornerstonejs/tools": "^1.7.1",
|
||||||
"@ohif/core": "3.7.0-beta.40",
|
"@ohif/core": "3.7.0-beta.40",
|
||||||
"@ohif/extension-cornerstone-dicom-sr": "3.7.0-beta.40",
|
"@ohif/extension-cornerstone-dicom-sr": "3.7.0-beta.40",
|
||||||
"@ohif/ui": "3.7.0-beta.40",
|
"@ohif/ui": "3.7.0-beta.40",
|
||||||
@ -47,7 +47,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.20.13",
|
"@babel/runtime": "^7.20.13",
|
||||||
"@ohif/ui": "3.7.0-beta.40",
|
"@ohif/ui": "3.7.0-beta.40",
|
||||||
"@xstate/react": "^0.8.1",
|
"@xstate/react": "^3.2.2",
|
||||||
"xstate": "^4.10.0"
|
"xstate": "^4.10.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -74,6 +74,7 @@
|
|||||||
"@babel/plugin-transform-runtime": "^7.17.0",
|
"@babel/plugin-transform-runtime": "^7.17.0",
|
||||||
"@babel/plugin-transform-typescript": "^7.13.0",
|
"@babel/plugin-transform-typescript": "^7.13.0",
|
||||||
"@babel/preset-env": "^7.16.11",
|
"@babel/preset-env": "^7.16.11",
|
||||||
|
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
|
||||||
"@babel/preset-react": "^7.16.7",
|
"@babel/preset-react": "^7.16.7",
|
||||||
"@babel/preset-typescript": "^7.13.0",
|
"@babel/preset-typescript": "^7.13.0",
|
||||||
"@types/jest": "^27.5.0",
|
"@types/jest": "^27.5.0",
|
||||||
@ -124,6 +125,7 @@
|
|||||||
"semver": "^7.5.1",
|
"semver": "^7.5.1",
|
||||||
"serve": "^14.2.0",
|
"serve": "^14.2.0",
|
||||||
"shader-loader": "^1.3.1",
|
"shader-loader": "^1.3.1",
|
||||||
|
"source-map-loader": "^4.0.1",
|
||||||
"start-server-and-test": "^1.10.0",
|
"start-server-and-test": "^1.10.0",
|
||||||
"style-loader": "^1.0.0",
|
"style-loader": "^1.0.0",
|
||||||
"terser-webpack-plugin": "^5.1.4",
|
"terser-webpack-plugin": "^5.1.4",
|
||||||
|
|||||||
@ -186,8 +186,6 @@ module.exports = (env, argv) => {
|
|||||||
chunkFilename: '[id].css',
|
chunkFilename: '[id].css',
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
} else {
|
|
||||||
mergedConfig.plugins.push(new webpack.HotModuleReplacementPlugin());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return mergedConfig;
|
return mergedConfig;
|
||||||
|
|||||||
@ -51,7 +51,7 @@
|
|||||||
"@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2",
|
"@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2",
|
||||||
"@cornerstonejs/codec-openjpeg": "^1.2.2",
|
"@cornerstonejs/codec-openjpeg": "^1.2.2",
|
||||||
"@cornerstonejs/codec-openjph": "^2.4.2",
|
"@cornerstonejs/codec-openjph": "^2.4.2",
|
||||||
"@cornerstonejs/dicom-image-loader": "^1.4.4",
|
"@cornerstonejs/dicom-image-loader": "^1.7.1",
|
||||||
"@ohif/core": "3.7.0-beta.40",
|
"@ohif/core": "3.7.0-beta.40",
|
||||||
"@ohif/extension-cornerstone": "3.7.0-beta.40",
|
"@ohif/extension-cornerstone": "3.7.0-beta.40",
|
||||||
"@ohif/extension-cornerstone-dicom-rt": "3.7.0-beta.40",
|
"@ohif/extension-cornerstone-dicom-rt": "3.7.0-beta.40",
|
||||||
|
|||||||
@ -35,7 +35,7 @@
|
|||||||
"@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2",
|
"@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2",
|
||||||
"@cornerstonejs/codec-openjpeg": "^1.2.2",
|
"@cornerstonejs/codec-openjpeg": "^1.2.2",
|
||||||
"@cornerstonejs/codec-openjph": "^2.4.2",
|
"@cornerstonejs/codec-openjph": "^2.4.2",
|
||||||
"@cornerstonejs/dicom-image-loader": "^1.4.4",
|
"@cornerstonejs/dicom-image-loader": "^1.7.1",
|
||||||
"@ohif/ui": "3.7.0-beta.40",
|
"@ohif/ui": "3.7.0-beta.40",
|
||||||
"cornerstone-math": "0.1.9",
|
"cornerstone-math": "0.1.9",
|
||||||
"dicom-parser": "^1.8.21"
|
"dicom-parser": "^1.8.21"
|
||||||
|
|||||||
@ -212,7 +212,7 @@ An overview of steps for running OHIF Viewer using a local DCM4CHEE is shown
|
|||||||
below:
|
below:
|
||||||
|
|
||||||
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
||||||
<iframe src="https://player.vimeo.com/video/557570043?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
<iframe src="https://player.vimeo.com/video/843233881?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
[dcm4chee]: https://github.com/dcm4che/dcm4chee-arc-light
|
[dcm4chee]: https://github.com/dcm4che/dcm4chee-arc-light
|
||||||
|
|||||||
@ -95,7 +95,7 @@ You can see the overview of the mentioned steps:
|
|||||||
|
|
||||||
|
|
||||||
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
||||||
<iframe src="https://player.vimeo.com/video/554726410?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
<iframe src="https://player.vimeo.com/video/843233827?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- ### Setup
|
<!-- ### Setup
|
||||||
|
|||||||
@ -46,7 +46,7 @@ _Advanced_
|
|||||||
|
|
||||||
|
|
||||||
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
||||||
<iframe src="https://player.vimeo.com/video/551957463?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
<iframe src="https://player.vimeo.com/video/843233793?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -99,7 +99,7 @@ You should see the following output:
|
|||||||
### 🎉 Celebrate 🎉
|
### 🎉 Celebrate 🎉
|
||||||
|
|
||||||
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
||||||
<iframe src="https://player.vimeo.com/video/545988245?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
<iframe src="https://player.vimeo.com/video/843233770?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
### Building for Production
|
### Building for Production
|
||||||
|
|||||||
62
platform/docs/docs/development/link.md
Normal file
62
platform/docs/docs/development/link.md
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
---
|
||||||
|
sidebar_position: 8
|
||||||
|
sidebar_label: Local Linking
|
||||||
|
---
|
||||||
|
|
||||||
|
# Introduction
|
||||||
|
|
||||||
|
Local linking allows you to develop and test a library in the context of an application before it's published or when you encounter
|
||||||
|
a bug that you suspect is related to a library. With Yarn, this can be achieved through the yarn link command.
|
||||||
|
|
||||||
|
The general procedure is as follows:
|
||||||
|
|
||||||
|
|
||||||
|
Link the Library:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd /path/to/library
|
||||||
|
yarn link
|
||||||
|
```
|
||||||
|
|
||||||
|
This command will create a symlink in a global directory for the library.
|
||||||
|
|
||||||
|
|
||||||
|
Link to the Application:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd /path/to/application
|
||||||
|
yarn link "library-name"
|
||||||
|
```
|
||||||
|
|
||||||
|
Creates a symlink from the global directory to the application's node_modules.
|
||||||
|
|
||||||
|
|
||||||
|
# Tutorial for linking Cornerstone3D to OHIF
|
||||||
|
|
||||||
|
Below we demonstrate how to link Cornerstone3D to OHIF Viewer. This is useful for testing and debugging Cornerstone3D in the context of OHIF Viewer.
|
||||||
|
|
||||||
|
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
||||||
|
<iframe src="https://player.vimeo.com/video/849096279?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
::tip
|
||||||
|
Since `@cornerstonejs/tools` depends on `@cornerstonejs/core`, if you need the changes
|
||||||
|
you made in `@cornerstonejs/core` to be reflected in `@cornerstonejs/tools`, you need to
|
||||||
|
also link `@cornerstonejs/core` to `@cornerstonejs/tools`.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd /path/to/cornerstonejs-core
|
||||||
|
# for the core
|
||||||
|
yarn link
|
||||||
|
|
||||||
|
cd /path/to/cornerstonejs-tools
|
||||||
|
yarn link "@cornerstonejs/core"
|
||||||
|
|
||||||
|
# for the tools
|
||||||
|
yarn link
|
||||||
|
|
||||||
|
# inside OHIF
|
||||||
|
cd /path/to/OHIFViewer
|
||||||
|
yarn link "@cornerstonejs/core"
|
||||||
|
yarn link "@cornerstonejs/tools"
|
||||||
|
```
|
||||||
@ -61,11 +61,9 @@ You can add your custom datasource by creating the implementation using
|
|||||||
`IWebApiDataSource.create` from `@ohif/core`. This factory function creates a
|
`IWebApiDataSource.create` from `@ohif/core`. This factory function creates a
|
||||||
new "Web API" data source that fetches data over HTTP.
|
new "Web API" data source that fetches data over HTTP.
|
||||||
|
|
||||||
You need to make sure, you implement the following functions for the data
|
|
||||||
source.
|
|
||||||
|
|
||||||
```js title="platform/core/src/DataSources/IWebApiDataSource.js"
|
```js title="platform/core/src/DataSources/IWebApiDataSource.js"
|
||||||
function create({
|
function create({
|
||||||
|
initialize,
|
||||||
query,
|
query,
|
||||||
retrieve,
|
retrieve,
|
||||||
store,
|
store,
|
||||||
@ -80,7 +78,18 @@ function create({
|
|||||||
```
|
```
|
||||||
|
|
||||||
You can take a look at `dicomweb` data source implementation to get an idea
|
You can take a look at `dicomweb` data source implementation to get an idea
|
||||||
`extensions/default/src/DicomWebDataSource/index.js`
|
`extensions/default/src/DicomWebDataSource/index.js` but here here are some
|
||||||
|
important api endpoints that you need to implement:
|
||||||
|
|
||||||
|
|
||||||
|
- `initialize`: This method is called when the data source is first created in the mode.tsx, it is used to initialize the data source and set the configuration. For instance, `dicomwebDatasource` uses this method to grab the StudyInstanceUID from the URL and set it as the active study, as opposed to `dicomJSONDatasource` which uses url in the browser to fetch the data and store it in a cache
|
||||||
|
- `query.studies.search`: This is used in the study panel on the left to fetch the prior studies for the same MRN which is then used to display on the `All` tab. it is also used in the Worklist to show all the studies from the server.
|
||||||
|
- `query.series.search`: This is used to fetch the series information for a given study that is expanded in the Worklist.
|
||||||
|
- `retrieve.bulkDataURI`: used to render RTSTUCTURESET in the viewport.
|
||||||
|
- `retrieve.series.metadata`: It is a crucial end point that is used to fetch series level metadata which for hanging displaySets and displaySet creation.
|
||||||
|
- `store.dicom`: If you don't need store functionality, you can skip this method. This is used to store the data in the backend.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Static WADO Client
|
## Static WADO Client
|
||||||
|
|
||||||
|
|||||||
@ -17,7 +17,7 @@ article: ["Best Practices for Modals / Overlays / Dialog Windows"][ux-article]
|
|||||||
|
|
||||||
|
|
||||||
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
||||||
<iframe src="https://player.vimeo.com/video/549261451?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
<iframe src="https://player.vimeo.com/video/843233754?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
## Interface
|
## Interface
|
||||||
|
|||||||
@ -19,7 +19,7 @@ article: ["How To Design Notifications For Better UX"][ux-article]
|
|||||||
|
|
||||||
|
|
||||||
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
||||||
<iframe src="https://player.vimeo.com/video/549260975?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
<iframe src="https://player.vimeo.com/video/843233715?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -43,7 +43,7 @@ The Imaging Network Ontario (ImNO) is an annual symposium that brings together
|
|||||||
medical imaging researchers and scientists from across Canada to share
|
medical imaging researchers and scientists from across Canada to share
|
||||||
knowledge, ideas, and experiences.
|
knowledge, ideas, and experiences.
|
||||||
[[Slides]](https://docs.google.com/presentation/d/18XZDon4-Sitc2a70V5sFyhyUVZI_mIgfXHGtdxhZMjE/edit?usp=sharing)
|
[[Slides]](https://docs.google.com/presentation/d/18XZDon4-Sitc2a70V5sFyhyUVZI_mIgfXHGtdxhZMjE/edit?usp=sharing)
|
||||||
[[Video]](https://vimeo.com/691134870/ad7d308a44)
|
[[Video]](https://vimeo.com/843234581/ad7d308a44)
|
||||||
|
|
||||||
|
|
||||||
### [NA-MIC Project Week 36th 2022 - Remote](https://github.com/NA-MIC/ProjectWeek/blob/master/PW36_2022_Virtual/README.md)
|
### [NA-MIC Project Week 36th 2022 - Remote](https://github.com/NA-MIC/ProjectWeek/blob/master/PW36_2022_Virtual/README.md)
|
||||||
@ -81,7 +81,7 @@ Healthcare Imaging with Cloud Healthcare API
|
|||||||
|
|
||||||
OHIF pitch for Informatics Technology for Cancer Research (ITCR)
|
OHIF pitch for Informatics Technology for Cancer Research (ITCR)
|
||||||
[[Slides]](https://docs.google.com/presentation/d/1MZXnZrVAnjmhVIWqC-aRSvJOoMMRLhLddACdCa1TybM/edit?usp=sharing)
|
[[Slides]](https://docs.google.com/presentation/d/1MZXnZrVAnjmhVIWqC-aRSvJOoMMRLhLddACdCa1TybM/edit?usp=sharing)
|
||||||
[[Video]](https://vimeo.com/678769373/625bdb8793)
|
[[Video]](https://vimeo.com/843234613/625bdb8793)
|
||||||
|
|
||||||
## 2019
|
## 2019
|
||||||
|
|
||||||
|
|||||||
@ -18,5 +18,5 @@ Summary of language changing usage can be seen below:
|
|||||||
## Overview Video
|
## Overview Video
|
||||||
|
|
||||||
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
||||||
<iframe src="https://player.vimeo.com/video/559038442?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
<iframe src="https://player.vimeo.com/video/843233906?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -62,7 +62,7 @@ For instance, running the Viewer on a local DCM4CHEE:
|
|||||||
|
|
||||||
|
|
||||||
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
||||||
<iframe src="https://player.vimeo.com/video/557569965?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
<iframe src="https://player.vimeo.com/video/843233857?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
## Overview Video
|
## Overview Video
|
||||||
@ -70,5 +70,5 @@ An overview of measurement drawing and exporting can be seen below:
|
|||||||
|
|
||||||
|
|
||||||
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
||||||
<iframe src="https://player.vimeo.com/video/545986384?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
<iframe src="https://player.vimeo.com/video/843233565?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -45,7 +45,7 @@ Below, you can see different icons that appear for a tracked vs. untracked serie
|
|||||||
<!-- trackedMeasurements -->
|
<!-- trackedMeasurements -->
|
||||||
|
|
||||||
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
||||||
<iframe src="https://player.vimeo.com/video/570278865?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
<iframe src="https://player.vimeo.com/video/843234022?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
@ -55,7 +55,7 @@ Below, you can see different icons that appear for a tracked vs. untracked serie
|
|||||||
<!-- untrackedMeasurements -->
|
<!-- untrackedMeasurements -->
|
||||||
|
|
||||||
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
||||||
<iframe src="https://player.vimeo.com/video/570280036?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
<iframe src="https://player.vimeo.com/video/843234086?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
@ -84,7 +84,7 @@ The full workflow for saving measurements to SR and loading SR into the viewer i
|
|||||||
<!-- SR Restore and Yes -->
|
<!-- SR Restore and Yes -->
|
||||||
|
|
||||||
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
||||||
<iframe src="https://player.vimeo.com/video/570278845?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
<iframe src="https://player.vimeo.com/video/843233998?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<br></br>
|
<br></br>
|
||||||
@ -93,13 +93,13 @@ The full workflow for saving measurements to SR and loading SR into the viewer i
|
|||||||
<!-- SR Restore and No -->
|
<!-- SR Restore and No -->
|
||||||
<!-- SR Export and measurement restore -->
|
<!-- SR Export and measurement restore -->
|
||||||
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
||||||
<iframe src="https://player.vimeo.com/video/570278814?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
<iframe src="https://player.vimeo.com/video/843233976?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<br></br>
|
<br></br>
|
||||||
|
|
||||||
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
||||||
<iframe src="https://player.vimeo.com/video/570278799?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
<iframe src="https://player.vimeo.com/video/843233958?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
### Loading DICOM SR into an Already Tracked Series
|
### Loading DICOM SR into an Already Tracked Series
|
||||||
@ -120,5 +120,5 @@ you cannot edit the DICOM SR measurement.
|
|||||||
|
|
||||||
|
|
||||||
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
||||||
<iframe src="https://player.vimeo.com/video/570278726?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
<iframe src="https://player.vimeo.com/video/843233929?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -81,5 +81,5 @@ An overview of tool usage can been seen below:
|
|||||||
|
|
||||||
|
|
||||||
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
||||||
<iframe src="https://player.vimeo.com/video/545989422?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
<iframe src="https://player.vimeo.com/video/843233686?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -35,5 +35,5 @@ An overview of viewport layout change, and manipulation can be seen below:
|
|||||||
|
|
||||||
|
|
||||||
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
<div style={{padding:"56.25% 0 0 0", position:"relative"}}>
|
||||||
<iframe src="https://player.vimeo.com/video/545995881?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
<iframe src="https://player.vimeo.com/video/843233651?badge=0&autopause=0&player_id=0&app_id=58479" frameBorder="0" allow="autoplay; fullscreen; picture-in-picture" allowFullScreen style= {{ position:"absolute",top:0,left:0,width:"100%",height:"100%"}} title="measurement-report"></iframe>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -255,13 +255,11 @@ module.exports = {
|
|||||||
disableSwitch: false,
|
disableSwitch: false,
|
||||||
// respectPrefersColorScheme: true,
|
// respectPrefersColorScheme: true,
|
||||||
},
|
},
|
||||||
/*
|
announcementBar: {
|
||||||
announcementBar: {
|
id: 'healthimaging',
|
||||||
id: 'supportus',
|
content:
|
||||||
content:
|
'🚀 AWS has announced the general availability of <a target="_blank" rel="noopener noreferrer" href=" https://aws.amazon.com/about-aws/whats-new/2023/07/general-availability-aws-healthimaging/">HealthImaging!</a> Easily connect your OHIF to it. Learn more <a target="_blank" rel="noopener noreferrer" href="https://github.com/RadicalImaging/ohif-aws-healthimaging">Here!</a>! 🌟',
|
||||||
'⭐️ If you like Docusaurus, give it a star on <a target="_blank" rel="noopener noreferrer" href="https://github.com/OHIF/Viewers">GitHub</a>! ⭐️',
|
},
|
||||||
},
|
|
||||||
*/
|
|
||||||
prism: {
|
prism: {
|
||||||
theme: require('prism-react-renderer/themes/github'),
|
theme: require('prism-react-renderer/themes/github'),
|
||||||
darkTheme: require('prism-react-renderer/themes/dracula'),
|
darkTheme: require('prism-react-renderer/themes/dracula'),
|
||||||
|
|||||||
@ -36,6 +36,8 @@
|
|||||||
--ifm-color-warning: #e9e489;
|
--ifm-color-warning: #e9e489;
|
||||||
--ifm-alert-color: #333333;
|
--ifm-alert-color: #333333;
|
||||||
--ohif-color-border: #7bb2ce;
|
--ohif-color-border: #7bb2ce;
|
||||||
|
--site-primary-hue-saturation: 167 68%;
|
||||||
|
--site-primary-hue-saturation-light: 167 56%; /* do we really need this extra one? */
|
||||||
}
|
}
|
||||||
|
|
||||||
html[data-theme='dark'] .header-github-link:before {
|
html[data-theme='dark'] .header-github-link:before {
|
||||||
@ -286,3 +288,20 @@ html[data-theme='dark'] .docusaurus-highlight-code-line {
|
|||||||
@apply bg-red-300 text-red-500;
|
@apply bg-red-300 text-red-500;
|
||||||
@apply dark:bg-blue-900 dark:text-blue-100;
|
@apply dark:bg-blue-900 dark:text-blue-100;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
div[class^='announcementBar_'] {
|
||||||
|
--site-announcement-bar-stripe-color1: hsl(
|
||||||
|
var(--site-primary-hue-saturation) 85%
|
||||||
|
);
|
||||||
|
--site-announcement-bar-stripe-color2: hsl(
|
||||||
|
var(--site-primary-hue-saturation) 95%
|
||||||
|
);
|
||||||
|
background: repeating-linear-gradient(
|
||||||
|
35deg,
|
||||||
|
var(--site-announcement-bar-stripe-color1),
|
||||||
|
var(--site-announcement-bar-stripe-color1) 20px,
|
||||||
|
var(--site-announcement-bar-stripe-color2) 10px,
|
||||||
|
var(--site-announcement-bar-stripe-color2) 40px
|
||||||
|
);
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user