This repo is depreciated and a new version which uses Python browser runtime is here, https://github.com/grimmer0125/embedded-pydicom-react-viewer.
Besides Chrome extension, web demo site: https://grimmer.io/dicom-web-viewer/
https://chrome.google.com/webstore/detail/dicom-image-viewer/ehppmcooahfnlfhhcflpkcjmonkoindc
Ref: https://developer.chrome.com/extensions/getstarted
Make sure you have yarn
installed first.
yarn install
.yarn build
- Open the Extension Management page by navigating to
chrome://extensions
.- The Extension Management page can also be opened by clicking on the Chrome menu, hovering over
More Tools
then selectingExtensions
.
- The Extension Management page can also be opened by clicking on the Chrome menu, hovering over
- Enable Developer Mode by clicking the toggle switch next to Developer mode.
- Click the LOAD UNPACKED button and select the
build
folder in extension directory.
- Open the Extension Management page by navigating to
chrome://extensions
. - Locate DICOM Image Viewer and click on the
DETAILS
button - Turn
Allow access to file URLs
switch on.
yarn start
- (optional) use
debugger for Chrome
ofVSCode
to debug. or open your browser and navigates tohttp://localhost:3000/
- Add
"homepage": "https://grimmer0125.github.io/dicom-web-viewer"
inpackage.json
yarn build
.yarn deploy
(which deploys to thehomepage
in package.json, change it if you need)
https://github.com/grimmer0125/dicom-web-viewer/wiki
- DICOM video format.
- some non-linear Modality LUT case
- YBR Photometric Interpretation
Reference:
- https://www.slicer.org/wiki/Coordinate_systems
- https://dicom.innolitics.com/ciods/12-lead-ecg/general-series/00102210
- https://dicom.innolitics.com/ciods/cr-image/general-image/00200020
- https://stackoverflow.com/questions/34782409/understanding-dicom-image-attributes-to-get-axial-coronal-sagittal-cuts/34783893
- https://dicom.innolitics.com/ciods/ct-image/image-plane/00200037
https://github.com/rii-mango/Daikon which lists viewable DICOM Supported Transfer Syntax.
daikon code snippet
if (hasImagePosition) {
// (0020,0032)
ordered = daikon.Series.orderByImagePosition(dg, sliceDir);
} else if (hasSliceLocation) {
// (0020,1041)
ordered = daikon.Series.orderBySliceLocation(dg);
} else if (hasImageNumber) {
// (0020, 0013)
ordered = daikon.Series.orderByImageNumber(dg);