init
This commit is contained in:
11
.eslintrc.js
Normal file
11
.eslintrc.js
Normal file
@@ -0,0 +1,11 @@
|
||||
/* eslint-env node */
|
||||
module.exports = {
|
||||
extends: [
|
||||
'eslint:recommended',
|
||||
'plugin:@typescript-eslint/recommended',
|
||||
'prettier',
|
||||
],
|
||||
parser: '@typescript-eslint/parser',
|
||||
plugins: ['@typescript-eslint'],
|
||||
root: true,
|
||||
};
|
||||
116
.gitignore
vendored
Normal file
116
.gitignore
vendored
Normal file
@@ -0,0 +1,116 @@
|
||||
*.dcm
|
||||
.vscode
|
||||
.node-persist
|
||||
config/development.js
|
||||
config/development.json
|
||||
config/production.js
|
||||
config/production.json
|
||||
/build
|
||||
keycloak.json
|
||||
data
|
||||
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
lerna-debug.log*
|
||||
|
||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
||||
|
||||
# Runtime data
|
||||
pids
|
||||
*.pid
|
||||
*.seed
|
||||
*.pid.lock
|
||||
*.exe
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
coverage
|
||||
*.lcov
|
||||
|
||||
# nyc test coverage
|
||||
.nyc_output
|
||||
|
||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
||||
.grunt
|
||||
|
||||
# Bower dependency directory (https://bower.io/)
|
||||
bower_components
|
||||
|
||||
# node-waf configuration
|
||||
.lock-wscript
|
||||
|
||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||
build/Release
|
||||
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
jspm_packages/
|
||||
|
||||
# TypeScript v1 declaration files
|
||||
typings/
|
||||
|
||||
# TypeScript cache
|
||||
*.tsbuildinfo
|
||||
|
||||
# Optional npm cache directory
|
||||
.npm
|
||||
|
||||
# Optional eslint cache
|
||||
.eslintcache
|
||||
|
||||
# Microbundle cache
|
||||
.rpt2_cache/
|
||||
.rts2_cache_cjs/
|
||||
.rts2_cache_es/
|
||||
.rts2_cache_umd/
|
||||
|
||||
# Optional REPL history
|
||||
.node_repl_history
|
||||
|
||||
# Output of 'npm pack'
|
||||
*.tgz
|
||||
|
||||
# Yarn Integrity file
|
||||
.yarn-integrity
|
||||
|
||||
# dotenv environment variables file
|
||||
.env
|
||||
.env.test
|
||||
|
||||
# parcel-bundler cache (https://parceljs.org/)
|
||||
.cache
|
||||
|
||||
# Next.js build output
|
||||
.next
|
||||
|
||||
# Nuxt.js build / generate output
|
||||
.nuxt
|
||||
dist
|
||||
|
||||
# Gatsby files
|
||||
.cache/
|
||||
# Comment in the public line in if your project uses Gatsby and *not* Next.js
|
||||
# https://nextjs.org/blog/next-9-1#public-directory-support
|
||||
# public
|
||||
|
||||
# vuepress build output
|
||||
.vuepress/dist
|
||||
|
||||
# Serverless directories
|
||||
.serverless/
|
||||
|
||||
# FuseBox cache
|
||||
.fusebox/
|
||||
|
||||
# DynamoDB Local files
|
||||
.dynamodb/
|
||||
|
||||
# TernJS port file
|
||||
.tern-port
|
||||
8
.prettierrc
Normal file
8
.prettierrc
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"trailingComma": "es5",
|
||||
"printWidth": 150,
|
||||
"proseWrap": "always",
|
||||
"tabWidth": 2,
|
||||
"semi": true,
|
||||
"singleQuote": true
|
||||
}
|
||||
21
LICENSE
Normal file
21
LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
© 2020 GitHub, Inc.
|
||||
82
README.md
Normal file
82
README.md
Normal file
@@ -0,0 +1,82 @@
|
||||
# dicomweb-proxy
|
||||
|
||||
A proxy to translate between [DICOMWEB](https://www.dicomstandard.org/dicomweb) and traditional DICOM [DIMSE](https://dicom.nema.org/medical/dicom/current/output/chtml/part07/sect_7.5.html) services
|
||||
|
||||
## Description
|
||||
* A nodejs tool to easily connect a DICOMWEB capable DICOM viewer to one or more legacy PACS that only know DIMSE services.
|
||||
Comes preinstalled with the popular [OHIF DICOM Web Viewer](https://github.com/OHIF/Viewers) (version 3.7.0-beta.13).
|
||||
|
||||
Note: Since OHIF 3 is still beta you can also switch back to OHIF 2 version: just remove the public directory and unzip public.zip to public
|
||||
|
||||
## What is it for?
|
||||
|
||||
* if you want to view image data from one or more legacy PACS that does not understand DICOMWEB nor come with a web-viewer
|
||||
|
||||
## How does it work?
|
||||
|
||||
* the app should be installed within the hospital intranet and configured to connect via DIMSE networking to on or more PACS (peers)
|
||||
* it hosts a default DICOMweb viewer (OHIF) which can be replaced
|
||||
* the webserver exposes the default QIDO and WADOURI/WADORS API needed for the viewer and converts on the fly between the two protocols
|
||||
* optionally: you can connect to a [DICOMWEB-WEBSOCKET-BRIDGE](https://github.com/knopkem/dicomweb-websocket-bridge) and expose the data to the public (handle with care!)
|
||||
|
||||
## Prerequisite
|
||||
|
||||
* nodejs 12 or newer
|
||||
|
||||
## Setup Instructions - npm
|
||||
|
||||
* install in empty directory:
|
||||
```npm init -y```
|
||||
```npm install dicomweb-proxy```
|
||||
|
||||
* update config file located in:
|
||||
```./node_modules/dicomweb-proxy/config```
|
||||
|
||||
* or better: create config override, see: [config](https://www.npmjs.com/package/config)
|
||||
|
||||
* start proxy:
|
||||
```npx dicomweb-proxy```
|
||||
|
||||
## Setup Instructions - source
|
||||
|
||||
* clone repository and install dependencies:
|
||||
```npm install```
|
||||
|
||||
* update config file located in:
|
||||
```./config```
|
||||
|
||||
* start proxy:
|
||||
```npm start```
|
||||
|
||||
## What to modify
|
||||
* (optional) change our port or AET
|
||||
|
||||
```
|
||||
config.source = {
|
||||
aet: "SOURCE_AET",
|
||||
ip: "SOURCE_IP",
|
||||
port: "SOURCE_PORT"
|
||||
};
|
||||
```
|
||||
|
||||
* change peer(s) to your PACS
|
||||
|
||||
```
|
||||
config.peers = [{
|
||||
aet: "TARGET_AET",
|
||||
ip: "TARGET_IP",
|
||||
port: "TARGET_PORT"
|
||||
}, { more peers here...}];
|
||||
```
|
||||
|
||||
* in case your PACS does not support C-GET, switch to C-Move:
|
||||
```config.useCget = false;```
|
||||
|
||||
* update webserver port:
|
||||
```config.webserverPort = 5000;```
|
||||
|
||||
* open webbrowser and start viewing:
|
||||
e.g. ```http://localhost:5000```
|
||||
|
||||
## License
|
||||
MIT
|
||||
18
bin/dicomweb-proxy
Normal file
18
bin/dicomweb-proxy
Normal file
@@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env node
|
||||
"use strict";
|
||||
|
||||
const os = require('os');
|
||||
|
||||
var spawn = require('child_process').spawn;
|
||||
console.log('starting dicomweb-proxy...');
|
||||
|
||||
process.chdir('./node_modules/dicomweb-proxy');
|
||||
|
||||
if (os.platform() === 'win32') {
|
||||
var cmd = 'npm.cmd'
|
||||
} else {
|
||||
var cmd = 'npm'
|
||||
}
|
||||
|
||||
spawn('npx.cmd', [ 'ts-node', 'src/app.ts'], {stdio: 'inherit'});
|
||||
|
||||
30
config/default.json
Normal file
30
config/default.json
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"source": {
|
||||
"aet": "DICOM_SAS",
|
||||
"ip": "192.168.2.4",
|
||||
"port": 21112
|
||||
},
|
||||
"peers": [
|
||||
{
|
||||
"aet": "ABPACS",
|
||||
"ip": "192.168.2.8",
|
||||
"port": 11112
|
||||
}
|
||||
],
|
||||
"transferSyntax": "1.2.840.10008.1.2.4.80",
|
||||
"mimeType": "image/dicom+jpeg",
|
||||
"lossyQuality": 60,
|
||||
"logDir": "./logs",
|
||||
"storagePath": "./data",
|
||||
"cacheRetentionMinutes": 60,
|
||||
"webserverPort": 5050,
|
||||
"useCget": true,
|
||||
"useFetchLevel": "SERIES",
|
||||
"maxAssociations": 4,
|
||||
"qidoMinChars": 0,
|
||||
"qidoAppendWildcard": true,
|
||||
"verboseLogging": false,
|
||||
"fullMeta": true,
|
||||
"websocketUrl": "",
|
||||
"websocketToken": "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e"
|
||||
}
|
||||
104777
dicom.log.1
Normal file
104777
dicom.log.1
Normal file
File diff suppressed because it is too large
Load Diff
3803
package-lock.json
generated
Normal file
3803
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
67
package.json
Normal file
67
package.json
Normal file
@@ -0,0 +1,67 @@
|
||||
{
|
||||
"name": "dicomweb-proxy",
|
||||
"version": "1.10.2",
|
||||
"description": "A proxy to translate between dicomweb and dimse",
|
||||
"bin": "./build/app.js",
|
||||
"scripts": {
|
||||
"start": "ts-node src/app.ts",
|
||||
"format": "npx prettier ./src",
|
||||
"build": "tsc --p ./tsconfig.json",
|
||||
"pkg:win": "npm run build && npx pkg --targets node16-win-x64 package.json"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/knopkem/dicomweb-proxy.git"
|
||||
},
|
||||
"keywords": [
|
||||
"DICOMWEB",
|
||||
"PROXY",
|
||||
"DIMSE",
|
||||
"DICOM"
|
||||
],
|
||||
"author": "Michael Knopke",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/knopkem/dicomweb-proxy/issues"
|
||||
},
|
||||
"homepage": "https://github.com/knopkem/dicomweb-proxy#readme",
|
||||
"dependencies": {
|
||||
"@fastify/autoload": "^5.8.0",
|
||||
"@fastify/cors": "^9.0.0",
|
||||
"@fastify/helmet": "^11.1.1",
|
||||
"@fastify/sensible": "^5.5.0",
|
||||
"@fastify/static": "^6.12.0",
|
||||
"@iwharris/dicom-data-dictionary": "^1.26.0",
|
||||
"@wearemothership/socket.io-stream": "^0.9.1",
|
||||
"close-with-grace": "^1.2.0",
|
||||
"config": "^3.3.10",
|
||||
"deepmerge": "^4.3.1",
|
||||
"dicom-dimse-native": "2.4.5",
|
||||
"dicom-parser": "^1.8.21",
|
||||
"fastify": "^4.26.0",
|
||||
"shelljs": "^0.8.5",
|
||||
"simple-node-logger": "^21.8.12",
|
||||
"socket.io-client": "^4.7.4",
|
||||
"throat": "^6.0.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/config": "^3.3.3",
|
||||
"@types/eslint": "^8.56.2",
|
||||
"@types/node": "^20.11.10",
|
||||
"@types/prettier": "^2.7.3",
|
||||
"@types/shelljs": "^0.8.15",
|
||||
"@typescript-eslint/eslint-plugin": "^6.20.0",
|
||||
"@typescript-eslint/parser": "^6.20.0",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"prettier": "^3.2.4",
|
||||
"ts-node": "^10.9.2",
|
||||
"tslib": "^2.6.2",
|
||||
"typescript": "^5.3.3"
|
||||
},
|
||||
"pkg": {
|
||||
"assets": [
|
||||
"./config/default.json",
|
||||
"./node_modules/dicom-dimse-native/build/Release/dcmtk.node"
|
||||
]
|
||||
}
|
||||
}
|
||||
2
public/12.bundle.81eef81badc8d1242199.js
Normal file
2
public/12.bundle.81eef81badc8d1242199.js
Normal file
@@ -0,0 +1,2 @@
|
||||
"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[12],{85012:(e,n,s)=>{s.r(n),s.d(n,{default:()=>u});var t=s(43001);const a=JSON.parse('{"u2":"@ohif/extension-dicom-video"}').u2,r=`${a}.sopClassHandlerModule.dicom-video`;var i=s(71771);const _={VIDEO_MICROSCOPIC_IMAGE_STORAGE:"1.2.840.10008.5.1.4.1.1.77.1.2.1",VIDEO_PHOTOGRAPHIC_IMAGE_STORAGE:"1.2.840.10008.5.1.4.1.1.77.1.4.1",VIDEO_ENDOSCOPIC_IMAGE_STORAGE:"1.2.840.10008.5.1.4.1.1.77.1.1.1",SECONDARY_CAPTURE_IMAGE_STORAGE:"1.2.840.10008.5.1.4.1.1.7",MULTIFRAME_TRUE_COLOR_SECONDARY_CAPTURE_IMAGE_STORAGE:"1.2.840.10008.5.1.4.1.1.7.4"},I=Object.values(_),E=[_.SECONDARY_CAPTURE_IMAGE_STORAGE,_.MULTIFRAME_TRUE_COLOR_SECONDARY_CAPTURE_IMAGE_STORAGE],O=Object.values({MPEG4_AVC_264_HIGH_PROFILE:"1.2.840.10008.1.2.4.102",MPEG4_AVC_264_BD_COMPATIBLE_HIGH_PROFILE:"1.2.840.10008.1.2.4.103",MPEG4_AVC_264_HIGH_PROFILE_FOR_2D_VIDEO:"1.2.840.10008.1.2.4.104",MPEG4_AVC_264_HIGH_PROFILE_FOR_3D_VIDEO:"1.2.840.10008.1.2.4.105",MPEG4_AVC_264_STEREO_HIGH_PROFILE:"1.2.840.10008.1.2.4.106",HEVC_265_MAIN_PROFILE:"1.2.840.10008.1.2.4.107",HEVC_265_MAIN_10_PROFILE:"1.2.840.10008.1.2.4.108"});function l(){return l=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var s=arguments[n];for(var t in s)Object.prototype.hasOwnProperty.call(s,t)&&(e[t]=s[t])}return e},l.apply(this,arguments)}const c=t.lazy((()=>s.e(686).then(s.bind(s,39686)))),o=e=>t.createElement(t.Suspense,{fallback:t.createElement("div",null,"Loading...")},t.createElement(c,e));const u={id:a,getViewportModule(e){let{servicesManager:n,extensionManager:s}=e;return[{name:"dicom-video",component:e=>t.createElement(o,l({servicesManager:n,extensionManager:s},e))}]},getSopClassHandlerModule:function(e){let{servicesManager:n,extensionManager:s}=e;return[{name:"dicom-video",sopClassUids:I,getDisplaySetsFromSeries:e=>((e,n,s)=>{const t=s.getActiveDataSource()[0];return e.filter((e=>{const n=e.AvailableTransferSyntaxUID||e.TransferSyntaxUID||e["00083002"];return!!O.includes(n)||e.SOPClassUID===_.VIDEO_PHOTOGRAPHIC_IMAGE_STORAGE||E.includes(e.SOPClassUID)&&e.NumberOfFrames>=90})).map((e=>{const{Modality:n,SOPInstanceUID:s,SeriesDescription:a="VIDEO"}=e,{SeriesNumber:_,SeriesDate:E,SeriesInstanceUID:O,StudyInstanceUID:l,NumberOfFrames:c}=e;return{Modality:n,displaySetInstanceUID:i.utils.guid(),SeriesDescription:a,SeriesNumber:_,SeriesDate:E,SOPInstanceUID:s,SeriesInstanceUID:O,StudyInstanceUID:l,SOPClassHandlerId:r,referencedImages:null,measurements:null,videoUrl:t.retrieve.directURL({instance:e,singlepart:"video",tag:"PixelData"}),instances:[e],thumbnailSrc:t.retrieve.directURL({instance:e,defaultPath:"/thumbnail",defaultType:"image/jpeg",tag:"Absent"}),isDerivedDisplaySet:!0,isLoaded:!1,sopClassUids:I,numImageFrames:c,instance:e}}))})(e,0,s)}]}}}}]);
|
||||
//# sourceMappingURL=12.bundle.81eef81badc8d1242199.js.map
|
||||
1
public/12.bundle.81eef81badc8d1242199.js.map
Normal file
1
public/12.bundle.81eef81badc8d1242199.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/125.bundle.629517ff1af1a958ddc9.js
Normal file
2
public/125.bundle.629517ff1af1a958ddc9.js
Normal file
@@ -0,0 +1,2 @@
|
||||
"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[125],{39125:(e,t,l)=>{l.r(t),l.d(t,{default:()=>i});var a=l(43001),s=l(3827),n=l.n(s);function r(e){let{displaySets:t}=e;const[l,s]=(0,a.useState)(null);if(t&&t.length>1)throw new Error("OHIFCornerstonePdfViewport: only one display set is supported for dicom pdf right now");const{pdfUrl:n}=t[0];return(0,a.useEffect)((()=>{(async()=>{s(await n)})()}),[n]),a.createElement("div",{className:"bg-primary-black h-full w-full text-white"},a.createElement("object",{data:l,type:"application/pdf",className:"h-full w-full"},a.createElement("div",null,"No online PDF viewer installed")))}r.propTypes={displaySets:n().arrayOf(n().object).isRequired};const i=r}}]);
|
||||
//# sourceMappingURL=125.bundle.629517ff1af1a958ddc9.js.map
|
||||
1
public/125.bundle.629517ff1af1a958ddc9.js.map
Normal file
1
public/125.bundle.629517ff1af1a958ddc9.js.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"125.bundle.629517ff1af1a958ddc9.js","mappings":"oJAGA,SAASA,EAA0BC,GAAkB,IAAjB,YAAEC,GAAaD,EACjD,MAAOE,EAAKC,IAAUC,EAAAA,EAAAA,UAAS,MAE/B,GAAIH,GAAeA,EAAYI,OAAS,EACtC,MAAM,IAAIC,MACR,yFAIJ,MAAM,OAAEC,GAAWN,EAAY,GAU/B,OARAO,EAAAA,EAAAA,YAAU,KACKC,WACXN,QAAaI,EAAO,EAGtBG,EAAM,GACL,CAACH,IAGFI,EAAAA,cAAA,OAAKC,UAAU,6CACbD,EAAAA,cAAA,UACEE,KAAMX,EACNY,KAAK,kBACLF,UAAU,iBAEVD,EAAAA,cAAA,WAAK,mCAIb,CAEAZ,EAA2BgB,UAAY,CACrCd,YAAae,IAAAA,QAAkBA,IAAAA,QAAkBC,YAGnD,S","sources":["webpack:///../../../extensions/dicom-pdf/src/viewports/OHIFCornerstonePdfViewport.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nfunction OHIFCornerstonePdfViewport({ displaySets }) {\r\n const [url, setUrl] = useState(null);\r\n\r\n if (displaySets && displaySets.length > 1) {\r\n throw new Error(\r\n 'OHIFCornerstonePdfViewport: only one display set is supported for dicom pdf right now'\r\n );\r\n }\r\n\r\n const { pdfUrl } = displaySets[0];\r\n\r\n useEffect(() => {\r\n const load = async () => {\r\n setUrl(await pdfUrl);\r\n };\r\n\r\n load();\r\n }, [pdfUrl]);\r\n\r\n return (\r\n <div className=\"bg-primary-black h-full w-full text-white\">\r\n <object\r\n data={url}\r\n type=\"application/pdf\"\r\n className=\"h-full w-full\"\r\n >\r\n <div>No online PDF viewer installed</div>\r\n </object>\r\n </div>\r\n );\r\n}\r\n\r\nOHIFCornerstonePdfViewport.propTypes = {\r\n displaySets: PropTypes.arrayOf(PropTypes.object).isRequired,\r\n};\r\n\r\nexport default OHIFCornerstonePdfViewport;\r\n"],"names":["OHIFCornerstonePdfViewport","_ref","displaySets","url","setUrl","useState","length","Error","pdfUrl","useEffect","async","load","React","className","data","type","propTypes","PropTypes","isRequired"],"sourceRoot":""}
|
||||
2
public/181.bundle.720bf11ebdae9515747b.js
Normal file
2
public/181.bundle.720bf11ebdae9515747b.js
Normal file
File diff suppressed because one or more lines are too long
1
public/181.bundle.720bf11ebdae9515747b.js.map
Normal file
1
public/181.bundle.720bf11ebdae9515747b.js.map
Normal file
File diff suppressed because one or more lines are too long
5
public/181.css
Normal file
5
public/181.css
Normal file
@@ -0,0 +1,5 @@
|
||||
.viewport-wrapper{height:100%;position:relative;width:100%}.cornerstone-viewport-element{background-color:#000;height:100%;outline:0!important;overflow:hidden;position:relative;width:100%}
|
||||
.viewport-overlay{max-width:40%}.viewport-overlay span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viewport-overlay.left-viewport{text-align:left}.viewport-overlay.right-viewport-scrollbar{text-align:right}.viewport-overlay.right-viewport-scrollbar .flex.flex-row{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}
|
||||
.ViewportOrientationMarkers{--marker-width:100px;--marker-height:100px;--scrollbar-width:20px;font-size:15px;line-height:18px;pointer-events:none}.ViewportOrientationMarkers .orientation-marker{position:absolute}.ViewportOrientationMarkers .top-mid{left:50%;top:.6rem}.ViewportOrientationMarkers .left-mid{left:5px;top:47%}.ViewportOrientationMarkers .right-mid{left:calc(100% - var(--marker-width) - var(--scrollbar-width));top:47%}.ViewportOrientationMarkers .bottom-mid{left:47%;top:calc(100% - var(--marker-height) - .6rem)}.ViewportOrientationMarkers .right-mid .orientation-marker-value{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;min-width:var(--marker-width)}.ViewportOrientationMarkers .bottom-mid .orientation-marker-value{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;min-height:var(--marker-height)}
|
||||
|
||||
/*# sourceMappingURL=181.css.map*/
|
||||
1
public/181.css.map
Normal file
1
public/181.css.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"181.css","mappings":"AAAA,kBAEE,WAAY,CACZ,iBAAkB,CAFlB,UAGF,CAEA,8BAIE,qBAAuB,CAFvB,WAAY,CAKZ,mBAAqB,CAIrB,eAAgB,CARhB,iBAAkB,CAFlB,UAWF,C;ACbA,kBACE,aACF,CACA,uBACE,cAAe,CACf,eAAgB,CAChB,sBAAuB,CACvB,kBACF,CAEA,gCACE,eACF,CAEA,2CACE,gBACF,CACA,0DACE,oBAAyB,CAAzB,iBAAyB,CAAzB,wBACF,C;ACxBA,4BACE,oBAAqB,CACrB,qBAAsB,CACtB,sBAAuB,CAEvB,cAAe,CACf,gBAAiB,CAFjB,mBAGF,CACA,gDACE,iBACF,CACA,qCAEE,QAAS,CADT,SAEF,CACA,sCAEE,QAAS,CADT,OAEF,CACA,uCAEE,8DAA+D,CAD/D,OAEF,CACA,wCAEE,QAAS,CADT,6CAEF,CACA,iEACE,mBAAa,CAAb,mBAAa,CAAb,YAAa,CACb,oBAAyB,CAAzB,iBAAyB,CAAzB,wBAAyB,CACzB,6BACF,CACA,kEACE,mBAAa,CAAb,mBAAa,CAAb,YAAa,CAGb,2BAA8B,CAA9B,6BAA8B,CAA9B,iCAA8B,CAA9B,6BAA8B,CAF9B,sBAA2B,CAA3B,mBAA2B,CAA3B,0BAA2B,CAC3B,+BAEF,C","sources":["webpack:///../../../extensions/cornerstone/src/Viewport/OHIFCornerstoneViewport.css","webpack:///../../../extensions/cornerstone/src/Viewport/Overlays/CustomizableViewportOverlay.css","webpack:///../../../extensions/cornerstone/src/Viewport/Overlays/ViewportOrientationMarkers.css"],"sourcesContent":[".viewport-wrapper {\r\n width: 100%;\r\n height: 100%; /* MUST have `height` to prevent resize infinite loop */\r\n position: relative;\r\n}\r\n\r\n.cornerstone-viewport-element {\r\n width: 100%;\r\n height: 100%;\r\n position: relative;\r\n background-color: black;\r\n\r\n /* Prevent the blue outline in Chrome when a viewport is selected */\r\n outline: 0 !important;\r\n\r\n /* Prevents the entire page from getting larger\r\n when the magnify tool is near the sides/corners of the page */\r\n overflow: hidden;\r\n}\r\n","/*\r\ncustom overlay panels: top-left, top-right, bottom-left and bottom-right\r\nIf any text to be displayed on the overlay is too long to hold on a single\r\nline, it will be truncated with ellipsis in the end.\r\n*/\r\n.viewport-overlay {\r\n max-width: 40%;\r\n}\r\n.viewport-overlay span {\r\n max-width: 100%;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n}\r\n\r\n.viewport-overlay.left-viewport {\r\n text-align: left;\r\n}\r\n\r\n.viewport-overlay.right-viewport-scrollbar {\r\n text-align: right;\r\n}\r\n.viewport-overlay.right-viewport-scrollbar .flex.flex-row {\r\n justify-content: flex-end;\r\n}\r\n",".ViewportOrientationMarkers {\r\n --marker-width: 100px;\r\n --marker-height: 100px;\r\n --scrollbar-width: 20px;\r\n pointer-events: none;\r\n font-size: 15px;\r\n line-height: 18px;\r\n}\r\n.ViewportOrientationMarkers .orientation-marker {\r\n position: absolute;\r\n}\r\n.ViewportOrientationMarkers .top-mid {\r\n top: 0.6rem;\r\n left: 50%;\r\n}\r\n.ViewportOrientationMarkers .left-mid {\r\n top: 47%;\r\n left: 5px;\r\n}\r\n.ViewportOrientationMarkers .right-mid {\r\n top: 47%;\r\n left: calc(100% - var(--marker-width) - var(--scrollbar-width));\r\n}\r\n.ViewportOrientationMarkers .bottom-mid {\r\n top: calc(100% - var(--marker-height) - 0.6rem);\r\n left: 47%;\r\n}\r\n.ViewportOrientationMarkers .right-mid .orientation-marker-value {\r\n display: flex;\r\n justify-content: flex-end;\r\n min-width: var(--marker-width);\r\n}\r\n.ViewportOrientationMarkers .bottom-mid .orientation-marker-value {\r\n display: flex;\r\n justify-content: flex-start;\r\n min-height: var(--marker-height);\r\n flex-direction: column-reverse;\r\n}\r\n"],"names":[],"sourceRoot":""}
|
||||
2
public/19.bundle.97cd1d5f412be83022cf.js
Normal file
2
public/19.bundle.97cd1d5f412be83022cf.js
Normal file
File diff suppressed because one or more lines are too long
1
public/19.bundle.97cd1d5f412be83022cf.js.map
Normal file
1
public/19.bundle.97cd1d5f412be83022cf.js.map
Normal file
File diff suppressed because one or more lines are too long
3
public/19.css
Normal file
3
public/19.css
Normal file
@@ -0,0 +1,3 @@
|
||||
.dicom-tag-browser-table{margin-left:auto;margin-right:auto}.dicom-tag-browser-table-wrapper{overflow-x:scroll}.dicom-tag-browser-table tr{border-top:1px solid #ddd;color:#fff;padding-left:10px;padding-right:10px;white-space:nowrap}.stick{overflow:clip;position:sticky}.dicom-tag-browser-content{overflow:hidden;padding-bottom:50px;width:100%}.dicom-tag-browser-instance-range .range{height:20px}.dicom-tag-browser-instance-range{padding:20px 0}.dicom-tag-browser-table td.dicom-tag-browser-table-center{text-align:center}.dicom-tag-browser-table th{color:"#20A5D6";padding-left:10px;padding-right:10px;text-align:center}.dicom-tag-browser-table th.dicom-tag-browser-table-left{text-align:left}
|
||||
|
||||
/*# sourceMappingURL=19.css.map*/
|
||||
1
public/19.css.map
Normal file
1
public/19.css.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"19.css","mappings":"AAAA,yBAEE,gBAAiB,CADjB,iBAEF,CAEA,iCAGE,iBACF,CAEA,4BAIE,yBAA0B,CAD1B,UAAc,CAFd,iBAAkB,CAClB,kBAAmB,CAGnB,kBACF,CAEA,OAEE,aAAc,CADd,eAEF,CAEA,2BACE,eAAgB,CAEhB,mBAAoB,CADpB,UAGF,CAEA,yCACE,WACF,CAEA,kCACE,cACF,CAEA,2DACE,iBACF,CAEA,4BAIE,eAAgB,CAHhB,iBAAkB,CAClB,kBAAmB,CACnB,iBAEF,CAEA,yDACE,eACF,C","sources":["webpack:///../../../extensions/default/src/DicomTagBrowser/DicomTagBrowser.css"],"sourcesContent":[".dicom-tag-browser-table {\r\n margin-right: auto;\r\n margin-left: auto;\r\n}\r\n\r\n.dicom-tag-browser-table-wrapper {\r\n /* height: 500px;*/\r\n /*overflow-y: scroll;*/\r\n overflow-x: scroll;\r\n}\r\n\r\n.dicom-tag-browser-table tr {\r\n padding-left: 10px;\r\n padding-right: 10px;\r\n color: #ffffff;\r\n border-top: 1px solid #ddd;\r\n white-space: nowrap;\r\n}\r\n\r\n.stick {\r\n position: sticky;\r\n overflow: clip;\r\n}\r\n\r\n.dicom-tag-browser-content {\r\n overflow: hidden;\r\n width: 100%;\r\n padding-bottom: 50px;\r\n /*height: 500px;*/\r\n}\r\n\r\n.dicom-tag-browser-instance-range .range {\r\n height: 20px;\r\n}\r\n\r\n.dicom-tag-browser-instance-range {\r\n padding: 20px 0 20px 0;\r\n}\r\n\r\n.dicom-tag-browser-table td.dicom-tag-browser-table-center {\r\n text-align: center;\r\n}\r\n\r\n.dicom-tag-browser-table th {\r\n padding-left: 10px;\r\n padding-right: 10px;\r\n text-align: center;\r\n color: '#20A5D6';\r\n}\r\n\r\n.dicom-tag-browser-table th.dicom-tag-browser-table-left {\r\n text-align: left;\r\n}\r\n"],"names":[],"sourceRoot":""}
|
||||
3
public/202.bundle.358aa5cd5419f9459a04.js
Normal file
3
public/202.bundle.358aa5cd5419f9459a04.js
Normal file
File diff suppressed because one or more lines are too long
6
public/202.bundle.358aa5cd5419f9459a04.js.LICENSE.txt
Normal file
6
public/202.bundle.358aa5cd5419f9459a04.js.LICENSE.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* Determine if an object is a Buffer
|
||||
*
|
||||
* @author Feross Aboukhadijeh <https://feross.org>
|
||||
* @license MIT
|
||||
*/
|
||||
1
public/202.bundle.358aa5cd5419f9459a04.js.map
Normal file
1
public/202.bundle.358aa5cd5419f9459a04.js.map
Normal file
File diff suppressed because one or more lines are too long
3
public/220.bundle.d0b0df6e3678c751fa3c.js
Normal file
3
public/220.bundle.d0b0df6e3678c751fa3c.js
Normal file
File diff suppressed because one or more lines are too long
14
public/220.bundle.d0b0df6e3678c751fa3c.js.LICENSE.txt
Normal file
14
public/220.bundle.d0b0df6e3678c751fa3c.js.LICENSE.txt
Normal file
@@ -0,0 +1,14 @@
|
||||
/**
|
||||
* @license Complex.js v2.1.1 12/05/2020
|
||||
*
|
||||
* Copyright (c) 2020, Robert Eisele (robert@xarg.org)
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
**/
|
||||
|
||||
/**
|
||||
* @license Fraction.js v4.2.0 05/03/2022
|
||||
* https://www.xarg.org/2014/03/rational-numbers-in-javascript/
|
||||
*
|
||||
* Copyright (c) 2021, Robert Eisele (robert@xarg.org)
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
**/
|
||||
1
public/220.bundle.d0b0df6e3678c751fa3c.js.map
Normal file
1
public/220.bundle.d0b0df6e3678c751fa3c.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/221.bundle.d903e046b5d45ed1fd7a.js
Normal file
2
public/221.bundle.d903e046b5d45ed1fd7a.js
Normal file
File diff suppressed because one or more lines are too long
1
public/221.bundle.d903e046b5d45ed1fd7a.js.map
Normal file
1
public/221.bundle.d903e046b5d45ed1fd7a.js.map
Normal file
File diff suppressed because one or more lines are too long
4
public/221.css
Normal file
4
public/221.css
Normal file
@@ -0,0 +1,4 @@
|
||||
.dicom-tag-browser-table{margin-left:auto;margin-right:auto}.dicom-tag-browser-table-wrapper{overflow-x:scroll}.dicom-tag-browser-table tr{border-top:1px solid #ddd;color:#fff;padding-left:10px;padding-right:10px;white-space:nowrap}.stick{overflow:clip;position:sticky}.dicom-tag-browser-content{overflow:hidden;padding-bottom:50px;width:100%}.dicom-tag-browser-instance-range .range{height:20px}.dicom-tag-browser-instance-range{padding:20px 0}.dicom-tag-browser-table td.dicom-tag-browser-table-center{text-align:center}.dicom-tag-browser-table th{color:"#20A5D6";padding-left:10px;padding-right:10px;text-align:center}.dicom-tag-browser-table th.dicom-tag-browser-table-left{text-align:left}
|
||||
.chrome-picker{background:#090c29!important}
|
||||
|
||||
/*# sourceMappingURL=221.css.map*/
|
||||
1
public/221.css.map
Normal file
1
public/221.css.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"221.css","mappings":"AAAA,yBAEE,gBAAiB,CADjB,iBAEF,CAEA,iCAGE,iBACF,CAEA,4BAIE,yBAA0B,CAD1B,UAAc,CAFd,iBAAkB,CAClB,kBAAmB,CAGnB,kBACF,CAEA,OAEE,aAAc,CADd,eAEF,CAEA,2BACE,eAAgB,CAEhB,mBAAoB,CADpB,UAGF,CAEA,yCACE,WACF,CAEA,kCACE,cACF,CAEA,2DACE,iBACF,CAEA,4BAIE,eAAgB,CAHhB,iBAAkB,CAClB,kBAAmB,CACnB,iBAEF,CAEA,yDACE,eACF,C;ACpDA,eACE,4BACF,C","sources":["webpack:///../../../extensions/default/src/DicomTagBrowser/DicomTagBrowser.css","webpack:///../../../extensions/cornerstone-dicom-seg/src/panels/colorPickerDialog.css"],"sourcesContent":[".dicom-tag-browser-table {\r\n margin-right: auto;\r\n margin-left: auto;\r\n}\r\n\r\n.dicom-tag-browser-table-wrapper {\r\n /* height: 500px;*/\r\n /*overflow-y: scroll;*/\r\n overflow-x: scroll;\r\n}\r\n\r\n.dicom-tag-browser-table tr {\r\n padding-left: 10px;\r\n padding-right: 10px;\r\n color: #ffffff;\r\n border-top: 1px solid #ddd;\r\n white-space: nowrap;\r\n}\r\n\r\n.stick {\r\n position: sticky;\r\n overflow: clip;\r\n}\r\n\r\n.dicom-tag-browser-content {\r\n overflow: hidden;\r\n width: 100%;\r\n padding-bottom: 50px;\r\n /*height: 500px;*/\r\n}\r\n\r\n.dicom-tag-browser-instance-range .range {\r\n height: 20px;\r\n}\r\n\r\n.dicom-tag-browser-instance-range {\r\n padding: 20px 0 20px 0;\r\n}\r\n\r\n.dicom-tag-browser-table td.dicom-tag-browser-table-center {\r\n text-align: center;\r\n}\r\n\r\n.dicom-tag-browser-table th {\r\n padding-left: 10px;\r\n padding-right: 10px;\r\n text-align: center;\r\n color: '#20A5D6';\r\n}\r\n\r\n.dicom-tag-browser-table th.dicom-tag-browser-table-left {\r\n text-align: left;\r\n}\r\n",".chrome-picker {\r\n background: #090c29 !important;\r\n}\r\n"],"names":[],"sourceRoot":""}
|
||||
2
public/23.bundle.8fdf916770f44e0ecae2.js
Normal file
2
public/23.bundle.8fdf916770f44e0ecae2.js
Normal file
File diff suppressed because one or more lines are too long
1
public/23.bundle.8fdf916770f44e0ecae2.js.map
Normal file
1
public/23.bundle.8fdf916770f44e0ecae2.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/236.bundle.5c7a2732831ec4bc80eb.js
Normal file
2
public/236.bundle.5c7a2732831ec4bc80eb.js
Normal file
File diff suppressed because one or more lines are too long
1
public/236.bundle.5c7a2732831ec4bc80eb.js.map
Normal file
1
public/236.bundle.5c7a2732831ec4bc80eb.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/250.bundle.a0cf445a5802ef69d2fa.js
Normal file
2
public/250.bundle.a0cf445a5802ef69d2fa.js
Normal file
File diff suppressed because one or more lines are too long
1
public/250.bundle.a0cf445a5802ef69d2fa.js.map
Normal file
1
public/250.bundle.a0cf445a5802ef69d2fa.js.map
Normal file
File diff suppressed because one or more lines are too long
5
public/250.css
Normal file
5
public/250.css
Normal file
File diff suppressed because one or more lines are too long
1
public/250.css.map
Normal file
1
public/250.css.map
Normal file
File diff suppressed because one or more lines are too long
2
public/281.bundle.17478b3e1d9df5f9a026.js
Normal file
2
public/281.bundle.17478b3e1d9df5f9a026.js
Normal file
@@ -0,0 +1,2 @@
|
||||
"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[281],{42281:(o,e,n)=>{n.r(e),n.d(e,{cornerstone:()=>m,default:()=>M});var i=n(71771);const t=JSON.parse('{"u2":"@ohif/mode-microscopy"}').u2;function s(o,e,n,i,t,s){return{id:e,icon:n,label:i,type:o,commands:t,tooltip:s}}s.bind(null,"action"),s.bind(null,"toggle");const l=s.bind(null,"tool"),a=[{id:"MeasurementTools",type:"ohif.splitButton",props:{groupId:"MeasurementTools",isRadio:!0,primary:l("line","tool-length","Line",[{commandName:"setToolActive",commandOptions:{toolName:"line"},context:"MICROSCOPY"}],"Line"),secondary:{icon:"chevron-down",label:"",isActive:!0,tooltip:"More Measure Tools"},items:[l("line","tool-length","Line",[{commandName:"setToolActive",commandOptions:{toolName:"line"},context:"MICROSCOPY"}],"Line Tool"),l("point","tool-point","Point",[{commandName:"setToolActive",commandOptions:{toolName:"point"},context:"MICROSCOPY"}],"Point Tool"),l("polygon","tool-polygon","Polygon",[{commandName:"setToolActive",commandOptions:{toolName:"polygon"},context:"MICROSCOPY"}],"Polygon Tool"),l("circle","tool-circle","Circle",[{commandName:"setToolActive",commandOptions:{toolName:"circle"},context:"MICROSCOPY"}],"Circle Tool"),l("box","tool-rectangle","Box",[{commandName:"setToolActive",commandOptions:{toolName:"box"},context:"MICROSCOPY"}],"Box Tool"),l("freehandpolygon","tool-freehand-polygon","Freehand Polygon",[{commandName:"setToolActive",commandOptions:{toolName:"freehandpolygon"},context:"MICROSCOPY"}],"Freehand Polygon Tool"),l("freehandline","tool-freehand-line","Freehand Line",[{commandName:"setToolActive",commandOptions:{toolName:"freehandline"},context:"MICROSCOPY"}],"Freehand Line Tool")]}},{id:"dragPan",type:"ohif.radioGroup",props:{type:"tool",icon:"tool-move",label:"Pan",commands:[{commandName:"setToolActive",commandOptions:{toolName:"dragPan"},context:"MICROSCOPY"}]}}],c="@ohif/extension-default.layoutTemplateModule.viewerLayout",d="@ohif/extension-default.hangingProtocolModule.default",r="@ohif/extension-default.panelModule.seriesList",m={viewport:"@ohif/extension-cornerstone.viewportModule.cornerstone"},p="@ohif/extension-dicom-video.sopClassHandlerModule.dicom-video",u="@ohif/extension-dicom-video.viewportModule.dicom-video",f="@ohif/extension-dicom-pdf.sopClassHandlerModule.dicom-pdf",h="@ohif/extension-dicom-pdf.viewportModule.dicom-pdf",y={"@ohif/extension-default":"^3.0.0","@ohif/extension-cornerstone":"^3.0.0","@ohif/extension-cornerstone-dicom-sr":"^3.0.0","@ohif/extension-dicom-pdf":"^3.0.1","@ohif/extension-dicom-video":"^3.0.1","@ohif/extension-dicom-microscopy":"^3.0.0"};const M={id:t,modeFactory:function(o){let{modeConfiguration:e}=o;return{id:t,routeName:"microscopy",displayName:"Microscopy",onModeEnter:o=>{let{servicesManager:e,extensionManager:n,commandsManager:i}=o;const{toolbarService:t}=e.services;t.init(n),t.addButtons(a),t.createButtonSection("primary",["MeasurementTools","dragPan"])},onModeExit:o=>{let{servicesManager:e}=o;const{toolbarService:n}=e.services;n.reset()},validationTags:{study:[],series:[]},isValidMode:o=>{let{modalities:e}=o;return e.split("\\").includes("SM")},routes:[{path:"microscopy",layoutTemplate:o=>{let{location:e,servicesManager:n}=o;return{id:c,props:{leftPanels:[r],leftPanelDefaultClosed:!0,rightPanelDefaultClosed:!0,rightPanels:["@ohif/extension-dicom-microscopy.panelModule.measure"],viewports:[{namespace:"@ohif/extension-dicom-microscopy.viewportModule.microscopy-dicom",displaySetsToDisplay:["@ohif/extension-dicom-microscopy.sopClassHandlerModule.DicomMicroscopySopClassHandler","@ohif/extension-dicom-microscopy.sopClassHandlerModule.DicomMicroscopySRSopClassHandler"]},{namespace:u,displaySetsToDisplay:[p]},{namespace:h,displaySetsToDisplay:[f]}]}}}}],extensions:y,hangingProtocols:[d],hangingProtocol:["default"],sopClassHandlers:["@ohif/extension-dicom-microscopy.sopClassHandlerModule.DicomMicroscopySopClassHandler","@ohif/extension-dicom-microscopy.sopClassHandlerModule.DicomMicroscopySRSopClassHandler",p,f],hotkeys:[...i.dD.defaults.hotkeyBindings],...e}},extensionDependencies:y}}}]);
|
||||
//# sourceMappingURL=281.bundle.17478b3e1d9df5f9a026.js.map
|
||||
1
public/281.bundle.17478b3e1d9df5f9a026.js.map
Normal file
1
public/281.bundle.17478b3e1d9df5f9a026.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/342.bundle.352b0a5b0103bd979889.js
Normal file
2
public/342.bundle.352b0a5b0103bd979889.js
Normal file
File diff suppressed because one or more lines are too long
1
public/342.bundle.352b0a5b0103bd979889.js.map
Normal file
1
public/342.bundle.352b0a5b0103bd979889.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/359.bundle.e32228f9015077353eac.js
Normal file
2
public/359.bundle.e32228f9015077353eac.js
Normal file
File diff suppressed because one or more lines are too long
1
public/359.bundle.e32228f9015077353eac.js.map
Normal file
1
public/359.bundle.e32228f9015077353eac.js.map
Normal file
File diff suppressed because one or more lines are too long
BIN
public/36785fbd89b0e17f6099.wasm
Normal file
BIN
public/36785fbd89b0e17f6099.wasm
Normal file
Binary file not shown.
2
public/370.bundle.42f05adb02eaf4f41567.js
Normal file
2
public/370.bundle.42f05adb02eaf4f41567.js
Normal file
File diff suppressed because one or more lines are too long
1
public/370.bundle.42f05adb02eaf4f41567.js.map
Normal file
1
public/370.bundle.42f05adb02eaf4f41567.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/410.bundle.efb50f7d564a9474c3d3.js
Normal file
2
public/410.bundle.efb50f7d564a9474c3d3.js
Normal file
File diff suppressed because one or more lines are too long
1
public/410.bundle.efb50f7d564a9474c3d3.js.map
Normal file
1
public/410.bundle.efb50f7d564a9474c3d3.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/417.bundle.0ec0dae1d39259a03193.js
Normal file
2
public/417.bundle.0ec0dae1d39259a03193.js
Normal file
File diff suppressed because one or more lines are too long
1
public/417.bundle.0ec0dae1d39259a03193.js.map
Normal file
1
public/417.bundle.0ec0dae1d39259a03193.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/451.bundle.44a0aaa91f1e65ee8fa2.js
Normal file
2
public/451.bundle.44a0aaa91f1e65ee8fa2.js
Normal file
File diff suppressed because one or more lines are too long
1
public/451.bundle.44a0aaa91f1e65ee8fa2.js.map
Normal file
1
public/451.bundle.44a0aaa91f1e65ee8fa2.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/471.bundle.bafce1ad27e0bc5c8db5.js
Normal file
2
public/471.bundle.bafce1ad27e0bc5c8db5.js
Normal file
File diff suppressed because one or more lines are too long
1
public/471.bundle.bafce1ad27e0bc5c8db5.js.map
Normal file
1
public/471.bundle.bafce1ad27e0bc5c8db5.js.map
Normal file
File diff suppressed because one or more lines are too long
BIN
public/5004fdc02f329ce53b69.wasm
Normal file
BIN
public/5004fdc02f329ce53b69.wasm
Normal file
Binary file not shown.
2
public/506.bundle.e497ce6e8958ced779c8.js
Normal file
2
public/506.bundle.e497ce6e8958ced779c8.js
Normal file
File diff suppressed because one or more lines are too long
1
public/506.bundle.e497ce6e8958ced779c8.js.map
Normal file
1
public/506.bundle.e497ce6e8958ced779c8.js.map
Normal file
File diff suppressed because one or more lines are too long
3
public/530.bundle.b5e992d674170dee581a.js
Normal file
3
public/530.bundle.b5e992d674170dee581a.js
Normal file
File diff suppressed because one or more lines are too long
34
public/530.bundle.b5e992d674170dee581a.js.LICENSE.txt
Normal file
34
public/530.bundle.b5e992d674170dee581a.js.LICENSE.txt
Normal file
@@ -0,0 +1,34 @@
|
||||
/*! *****************************************************************************
|
||||
Copyright (c) Microsoft Corporation.
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
PERFORMANCE OF THIS SOFTWARE.
|
||||
***************************************************************************** */
|
||||
|
||||
/**
|
||||
* @license React
|
||||
* use-sync-external-store-shim.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @license React
|
||||
* use-sync-external-store-shim/with-selector.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
1
public/530.bundle.b5e992d674170dee581a.js.map
Normal file
1
public/530.bundle.b5e992d674170dee581a.js.map
Normal file
File diff suppressed because one or more lines are too long
3
public/579.css
Normal file
3
public/579.css
Normal file
@@ -0,0 +1,3 @@
|
||||
.dicom-tag-browser-table{margin-left:auto;margin-right:auto}.dicom-tag-browser-table-wrapper{overflow-x:scroll}.dicom-tag-browser-table tr{border-top:1px solid #ddd;color:#fff;padding-left:10px;padding-right:10px;white-space:nowrap}.stick{overflow:clip;position:sticky}.dicom-tag-browser-content{overflow:hidden;padding-bottom:50px;width:100%}.dicom-tag-browser-instance-range .range{height:20px}.dicom-tag-browser-instance-range{padding:20px 0}.dicom-tag-browser-table td.dicom-tag-browser-table-center{text-align:center}.dicom-tag-browser-table th{color:"#20A5D6";padding-left:10px;padding-right:10px;text-align:center}.dicom-tag-browser-table th.dicom-tag-browser-table-left{text-align:left}
|
||||
|
||||
/*# sourceMappingURL=579.css.map*/
|
||||
1
public/579.css.map
Normal file
1
public/579.css.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"579.css","mappings":"AAAA,yBAEE,gBAAiB,CADjB,iBAEF,CAEA,iCAGE,iBACF,CAEA,4BAIE,yBAA0B,CAD1B,UAAc,CAFd,iBAAkB,CAClB,kBAAmB,CAGnB,kBACF,CAEA,OAEE,aAAc,CADd,eAEF,CAEA,2BACE,eAAgB,CAEhB,mBAAoB,CADpB,UAGF,CAEA,yCACE,WACF,CAEA,kCACE,cACF,CAEA,2DACE,iBACF,CAEA,4BAIE,eAAgB,CAHhB,iBAAkB,CAClB,kBAAmB,CACnB,iBAEF,CAEA,yDACE,eACF,C","sources":["webpack:///../../../extensions/default/src/DicomTagBrowser/DicomTagBrowser.css"],"sourcesContent":[".dicom-tag-browser-table {\r\n margin-right: auto;\r\n margin-left: auto;\r\n}\r\n\r\n.dicom-tag-browser-table-wrapper {\r\n /* height: 500px;*/\r\n /*overflow-y: scroll;*/\r\n overflow-x: scroll;\r\n}\r\n\r\n.dicom-tag-browser-table tr {\r\n padding-left: 10px;\r\n padding-right: 10px;\r\n color: #ffffff;\r\n border-top: 1px solid #ddd;\r\n white-space: nowrap;\r\n}\r\n\r\n.stick {\r\n position: sticky;\r\n overflow: clip;\r\n}\r\n\r\n.dicom-tag-browser-content {\r\n overflow: hidden;\r\n width: 100%;\r\n padding-bottom: 50px;\r\n /*height: 500px;*/\r\n}\r\n\r\n.dicom-tag-browser-instance-range .range {\r\n height: 20px;\r\n}\r\n\r\n.dicom-tag-browser-instance-range {\r\n padding: 20px 0 20px 0;\r\n}\r\n\r\n.dicom-tag-browser-table td.dicom-tag-browser-table-center {\r\n text-align: center;\r\n}\r\n\r\n.dicom-tag-browser-table th {\r\n padding-left: 10px;\r\n padding-right: 10px;\r\n text-align: center;\r\n color: '#20A5D6';\r\n}\r\n\r\n.dicom-tag-browser-table th.dicom-tag-browser-table-left {\r\n text-align: left;\r\n}\r\n"],"names":[],"sourceRoot":""}
|
||||
2
public/604.bundle.9477bed4d89c962cb3df.js
Normal file
2
public/604.bundle.9477bed4d89c962cb3df.js
Normal file
File diff suppressed because one or more lines are too long
1
public/604.bundle.9477bed4d89c962cb3df.js.map
Normal file
1
public/604.bundle.9477bed4d89c962cb3df.js.map
Normal file
File diff suppressed because one or more lines are too long
1
public/610.min.worker.js
Normal file
1
public/610.min.worker.js
Normal file
File diff suppressed because one or more lines are too long
1
public/610.min.worker.js.map
Normal file
1
public/610.min.worker.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/613.bundle.5804a80c89dddd4251d0.js
Normal file
2
public/613.bundle.5804a80c89dddd4251d0.js
Normal file
File diff suppressed because one or more lines are too long
1
public/613.bundle.5804a80c89dddd4251d0.js.map
Normal file
1
public/613.bundle.5804a80c89dddd4251d0.js.map
Normal file
File diff suppressed because one or more lines are too long
BIN
public/62ab5d58a2bea7b5a1dc.wasm
Normal file
BIN
public/62ab5d58a2bea7b5a1dc.wasm
Normal file
Binary file not shown.
BIN
public/65916ef3def695744bda.wasm
Normal file
BIN
public/65916ef3def695744bda.wasm
Normal file
Binary file not shown.
2
public/663.bundle.28bd520531024fa11845.js
Normal file
2
public/663.bundle.28bd520531024fa11845.js
Normal file
File diff suppressed because one or more lines are too long
1
public/663.bundle.28bd520531024fa11845.js.map
Normal file
1
public/663.bundle.28bd520531024fa11845.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/686.bundle.9b93df830edb822372a0.js
Normal file
2
public/686.bundle.9b93df830edb822372a0.js
Normal file
@@ -0,0 +1,2 @@
|
||||
"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[686],{39686:(e,t,r)=>{r.r(t),r.d(t,{default:()=>a});var o=r(43001),s=r(3827),l=r.n(s);function n(e){let{displaySets:t}=e;if(t&&t.length>1)throw new Error("OHIFCornerstoneVideoViewport: only one display set is supported for dicom video right now");const{videoUrl:r}=t[0],s="video/mp4",[l,n]=(0,o.useState)(null);return(0,o.useEffect)((()=>{(async()=>{n(await r)})()}),[r]),o.createElement("div",{className:"bg-primary-black h-full w-full"},o.createElement("video",{src:l,controls:!0,controlsList:"nodownload",preload:"auto",className:"h-full w-full",crossOrigin:"anonymous"},o.createElement("source",{src:l,type:s}),o.createElement("source",{src:l,type:s}),"Video src/type not supported:"," ",o.createElement("a",{href:l},l," of type ",s)))}n.propTypes={displaySets:l().arrayOf(l().object).isRequired};const a=n}}]);
|
||||
//# sourceMappingURL=686.bundle.9b93df830edb822372a0.js.map
|
||||
1
public/686.bundle.9b93df830edb822372a0.js.map
Normal file
1
public/686.bundle.9b93df830edb822372a0.js.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"686.bundle.9b93df830edb822372a0.js","mappings":"oJAGA,SAASA,EAA4BC,GAAkB,IAAjB,YAAEC,GAAaD,EACnD,GAAIC,GAAeA,EAAYC,OAAS,EACtC,MAAM,IAAIC,MACR,6FAIJ,MAAM,SAAEC,GAAaH,EAAY,GAC3BI,EAAW,aACVC,EAAKC,IAAUC,EAAAA,EAAAA,UAAS,MAW/B,OATAC,EAAAA,EAAAA,YAAU,KACKC,WACXH,QAAaH,EAAS,EAGxBO,EAAM,GACL,CAACP,IAIFQ,EAAAA,cAAA,OAAKC,UAAU,kCACbD,EAAAA,cAAA,SACEE,IAAKR,EACLS,UAAQ,EACRC,aAAa,aACbC,QAAQ,OACRJ,UAAU,gBACVK,YAAY,aAEZN,EAAAA,cAAA,UACEE,IAAKR,EACLa,KAAMd,IAERO,EAAAA,cAAA,UACEE,IAAKR,EACLa,KAAMd,IACN,gCAC4B,IAC9BO,EAAAA,cAAA,KAAGQ,KAAMd,GACNA,EAAI,YAAUD,IAKzB,CAEAN,EAA6BsB,UAAY,CACvCpB,YAAaqB,IAAAA,QAAkBA,IAAAA,QAAkBC,YAGnD,S","sources":["webpack:///../../../extensions/dicom-video/src/viewports/OHIFCornerstoneVideoViewport.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nfunction OHIFCornerstoneVideoViewport({ displaySets }) {\r\n if (displaySets && displaySets.length > 1) {\r\n throw new Error(\r\n 'OHIFCornerstoneVideoViewport: only one display set is supported for dicom video right now'\r\n );\r\n }\r\n\r\n const { videoUrl } = displaySets[0];\r\n const mimeType = 'video/mp4';\r\n const [url, setUrl] = useState(null);\r\n\r\n useEffect(() => {\r\n const load = async () => {\r\n setUrl(await videoUrl);\r\n };\r\n\r\n load();\r\n }, [videoUrl]);\r\n\r\n // Need to copies of the source to fix a firefox bug\r\n return (\r\n <div className=\"bg-primary-black h-full w-full\">\r\n <video\r\n src={url}\r\n controls\r\n controlsList=\"nodownload\"\r\n preload=\"auto\"\r\n className=\"h-full w-full\"\r\n crossOrigin=\"anonymous\"\r\n >\r\n <source\r\n src={url}\r\n type={mimeType}\r\n />\r\n <source\r\n src={url}\r\n type={mimeType}\r\n />\r\n Video src/type not supported:{' '}\r\n <a href={url}>\r\n {url} of type {mimeType}\r\n </a>\r\n </video>\r\n </div>\r\n );\r\n}\r\n\r\nOHIFCornerstoneVideoViewport.propTypes = {\r\n displaySets: PropTypes.arrayOf(PropTypes.object).isRequired,\r\n};\r\n\r\nexport default OHIFCornerstoneVideoViewport;\r\n"],"names":["OHIFCornerstoneVideoViewport","_ref","displaySets","length","Error","videoUrl","mimeType","url","setUrl","useState","useEffect","async","load","React","className","src","controls","controlsList","preload","crossOrigin","type","href","propTypes","PropTypes","isRequired"],"sourceRoot":""}
|
||||
2
public/687.bundle.fcd0488536d96bb682e5.js
Normal file
2
public/687.bundle.fcd0488536d96bb682e5.js
Normal file
File diff suppressed because one or more lines are too long
1
public/687.bundle.fcd0488536d96bb682e5.js.map
Normal file
1
public/687.bundle.fcd0488536d96bb682e5.js.map
Normal file
File diff suppressed because one or more lines are too long
3
public/743.bundle.58a76ef98d0f4120f602.js
Normal file
3
public/743.bundle.58a76ef98d0f4120f602.js
Normal file
File diff suppressed because one or more lines are too long
1
public/743.bundle.58a76ef98d0f4120f602.js.LICENSE.txt
Normal file
1
public/743.bundle.58a76ef98d0f4120f602.js.LICENSE.txt
Normal file
@@ -0,0 +1 @@
|
||||
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
|
||||
1
public/743.bundle.58a76ef98d0f4120f602.js.map
Normal file
1
public/743.bundle.58a76ef98d0f4120f602.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/757.bundle.26ceda521b4376726a11.js
Normal file
2
public/757.bundle.26ceda521b4376726a11.js
Normal file
File diff suppressed because one or more lines are too long
1
public/757.bundle.26ceda521b4376726a11.js.map
Normal file
1
public/757.bundle.26ceda521b4376726a11.js.map
Normal file
File diff suppressed because one or more lines are too long
BIN
public/75788f12450d4c5ed494.wasm
Normal file
BIN
public/75788f12450d4c5ed494.wasm
Normal file
Binary file not shown.
BIN
public/75a0c2dfe07b824c7d21.wasm
Normal file
BIN
public/75a0c2dfe07b824c7d21.wasm
Normal file
Binary file not shown.
3
public/774.bundle.0171646462dc3c8311f6.js
Normal file
3
public/774.bundle.0171646462dc3c8311f6.js
Normal file
File diff suppressed because one or more lines are too long
29
public/774.bundle.0171646462dc3c8311f6.js.LICENSE.txt
Normal file
29
public/774.bundle.0171646462dc3c8311f6.js.LICENSE.txt
Normal file
@@ -0,0 +1,29 @@
|
||||
/*!
|
||||
* html2canvas 1.4.1 <https://html2canvas.hertzen.com>
|
||||
* Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
|
||||
* Released under MIT License
|
||||
*/
|
||||
|
||||
/*! *****************************************************************************
|
||||
Copyright (c) Microsoft Corporation.
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
PERFORMANCE OF THIS SOFTWARE.
|
||||
***************************************************************************** */
|
||||
|
||||
/**
|
||||
* @license
|
||||
* Lodash <https://lodash.com/>
|
||||
* Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
|
||||
* Released under MIT license <https://lodash.com/license>
|
||||
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
|
||||
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
||||
*/
|
||||
1
public/774.bundle.0171646462dc3c8311f6.js.map
Normal file
1
public/774.bundle.0171646462dc3c8311f6.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/775.bundle.f8f6f70fabcf5cbbd7db.js
Normal file
2
public/775.bundle.f8f6f70fabcf5cbbd7db.js
Normal file
File diff suppressed because one or more lines are too long
1
public/775.bundle.f8f6f70fabcf5cbbd7db.js.map
Normal file
1
public/775.bundle.f8f6f70fabcf5cbbd7db.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/788.bundle.6c391afaa3d874b45c88.js
Normal file
2
public/788.bundle.6c391afaa3d874b45c88.js
Normal file
File diff suppressed because one or more lines are too long
1
public/788.bundle.6c391afaa3d874b45c88.js.map
Normal file
1
public/788.bundle.6c391afaa3d874b45c88.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/814.bundle.98cb45449347c08563de.js
Normal file
2
public/814.bundle.98cb45449347c08563de.js
Normal file
@@ -0,0 +1,2 @@
|
||||
"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[814],{92814:(e,n,t)=>{t.r(n),t.d(n,{default:()=>p});var a=t(43001);const s=JSON.parse('{"u2":"@ohif/extension-dicom-pdf"}').u2,r=`${s}.sopClassHandlerModule.dicom-pdf`;var i=t(71771);const{ImageSet:c}=i.classes,l=Object.values({ENCAPSULATED_PDF:"1.2.840.10008.5.1.4.1.1.104.1"});function d(){return d=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a])}return e},d.apply(this,arguments)}const u=a.lazy((()=>t.e(125).then(t.bind(t,39125)))),o=e=>a.createElement(a.Suspense,{fallback:a.createElement("div",null,"Loading...")},a.createElement(u,e)),p={id:s,getViewportModule(e){let{servicesManager:n,extensionManager:t}=e;return[{name:"dicom-pdf",component:e=>a.createElement(o,d({servicesManager:n,extensionManager:t},e))}]},getSopClassHandlerModule:function(e){let{servicesManager:n,extensionManager:t}=e;return[{name:"dicom-pdf",sopClassUids:l,getDisplaySetsFromSeries:e=>((e,n,t)=>{const a=t.getActiveDataSource()[0];return e.map((e=>{const{Modality:n,SOPInstanceUID:t,EncapsulatedDocument:s}=e,{SeriesDescription:c="PDF",MIMETypeOfEncapsulatedDocument:d}=e,{SeriesNumber:u,SeriesDate:o,SeriesInstanceUID:p,StudyInstanceUID:m,SOPClassUID:S}=e,g=a.retrieve.directURL({instance:e,tag:"EncapsulatedDocument",defaultType:d||"application/pdf",singlepart:"pdf"});return{Modality:n,displaySetInstanceUID:i.utils.guid(),SeriesDescription:c,SeriesNumber:u,SeriesDate:o,SOPInstanceUID:t,SeriesInstanceUID:p,StudyInstanceUID:m,SOPClassHandlerId:r,SOPClassUID:S,referencedImages:null,measurements:null,pdfUrl:g,instances:[e],thumbnailSrc:a.retrieve.directURL({instance:e,defaultPath:"/thumbnail",defaultType:"image/jpeg",tag:"Absent"}),isDerivedDisplaySet:!0,isLoaded:!1,sopClassUids:l,numImageFrames:0,numInstances:1,instance:e}}))})(e,0,t)}]}}}}]);
|
||||
//# sourceMappingURL=814.bundle.98cb45449347c08563de.js.map
|
||||
1
public/814.bundle.98cb45449347c08563de.js.map
Normal file
1
public/814.bundle.98cb45449347c08563de.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/82.bundle.7ecb6591d92092b20e6e.js
Normal file
2
public/82.bundle.7ecb6591d92092b20e6e.js
Normal file
File diff suppressed because one or more lines are too long
1
public/82.bundle.7ecb6591d92092b20e6e.js.map
Normal file
1
public/82.bundle.7ecb6591d92092b20e6e.js.map
Normal file
File diff suppressed because one or more lines are too long
3
public/82.css
Normal file
3
public/82.css
Normal file
@@ -0,0 +1,3 @@
|
||||
.dicom-upload-drop-area-border-dash{background-image:repeating-linear-gradient(90deg,#7bb2ce 0,#7bb2ce 50%,#0000 0,#0000),repeating-linear-gradient(90deg,#7bb2ce 0,#7bb2ce 50%,#0000 0,#0000),repeating-linear-gradient(180deg,#7bb2ce 0,#7bb2ce 50%,#0000 0,#0000),repeating-linear-gradient(180deg,#7bb2ce 0,#7bb2ce 50%,#0000 0,#0000);background-position:0 0,0 100%,0 0,100% 0;background-repeat:repeat-x,repeat-x,repeat-y,repeat-y;background-size:20px 3px,20px 3px,3px 20px,3px 20px}
|
||||
|
||||
/*# sourceMappingURL=82.css.map*/
|
||||
1
public/82.css.map
Normal file
1
public/82.css.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"82.css","mappings":"AAAA,oCACE,sSASkG,CAClG,yCAIW,CACX,qDAAyD,CACzD,mDAKF,C","sources":["webpack:///../../../extensions/cornerstone/src/components/DicomUpload/DicomUpload.css"],"sourcesContent":[".dicom-upload-drop-area-border-dash {\r\n background-image: repeating-linear-gradient(\r\n to right,\r\n #7bb2ce 0%,\r\n #7bb2ce 50%,\r\n transparent 50%,\r\n transparent 100%\r\n ),\r\n repeating-linear-gradient(to right, #7bb2ce 0%, #7bb2ce 50%, transparent 50%, transparent 100%),\r\n repeating-linear-gradient(to bottom, #7bb2ce 0%, #7bb2ce 50%, transparent 50%, transparent 100%),\r\n repeating-linear-gradient(to bottom, #7bb2ce 0%, #7bb2ce 50%, transparent 50%, transparent 100%);\r\n background-position:\r\n left top,\r\n left bottom,\r\n left top,\r\n right top;\r\n background-repeat: repeat-x, repeat-x, repeat-y, repeat-y;\r\n background-size:\r\n 20px 3px,\r\n 20px 3px,\r\n 3px 20px,\r\n 3px 20px;\r\n}\r\n"],"names":[],"sourceRoot":""}
|
||||
2
public/822.bundle.c7db86db8d8ed49ef794.js
Normal file
2
public/822.bundle.c7db86db8d8ed49ef794.js
Normal file
@@ -0,0 +1,2 @@
|
||||
"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[822],{86822:(e,t,n)=>{n.r(t),n.d(t,{default:()=>f});var r=n(43001),s=n(3827),a=n.n(s),i=n(71771),o=n(71783),l=n(69190),c=n(14957),u=n(41832),m=n(3743);function d(){return d=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},d.apply(this,arguments)}const{formatDate:p}=i.utils;function E(e){const{displaySets:t,viewportId:n,viewportLabel:s,servicesManager:a,extensionManager:E}=e,{t:f}=(0,l.$G)("Common"),{measurementService:S,cornerstoneViewportService:v,viewportGridService:g}=a.services,b=t[0],[w,D]=(0,u.I)(),[I,h]=(0,r.useState)(!1),[y,N]=(0,r.useState)(null),[V,x]=(0,r.useState)(null),{trackedSeries:k}=w.context,{SeriesDate:M,SeriesDescription:T,SeriesInstanceUID:U,SeriesNumber:R}=b,{PatientID:O,PatientName:A,PatientSex:C,PatientAge:P,SliceThickness:_,SpacingBetweenSlices:j,StudyDate:F,ManufacturerModelName:L}=b.images[0],W=(0,r.useCallback)((()=>{const e=v.getCornerstoneViewport(n);if(e instanceof m.BaseVolumeViewport){const t=e?.getCurrentImageId();if(!t)return void(I&&h(!1))}k.includes(U)!==I&&h(!I)}),[I,w,n,U]),q=(0,r.useCallback)((e=>{e.detail.element!==V&&(e.detail.element?.addEventListener(m.Enums.Events.VOLUME_VIEWPORT_NEW_VOLUME,W),x(e.detail.element))}),[W,V]),G=(0,r.useCallback)((()=>{V?.removeEventListener(m.Enums.Events.VOLUME_VIEWPORT_NEW_VOLUME,W)}),[W,V]);(0,r.useEffect)(W,[W]),(0,r.useEffect)((()=>{const{unsubscribe:e}=v.subscribe(v.EVENTS.VIEWPORT_DATA_CHANGED,(e=>{e.viewportId===n&&W()}));return()=>{e()}}),[W,n]),(0,r.useEffect)((()=>I?(c.annotation.config.style.setViewportToolStyles(n,{global:{lineDash:""}}),void v.getRenderingEngine().renderViewport(n)):(c.annotation.config.style.setViewportToolStyles(n,{global:{lineDash:"4,4"}}),v.getRenderingEngine().renderViewport(n),()=>{c.annotation.config.style.setViewportToolStyles(n,{})})),[I]),(0,r.useEffect)((()=>{const e=S.EVENTS.MEASUREMENT_ADDED,t=S.EVENTS.RAW_MEASUREMENT_ADDED,r=[];return[e,t].forEach((e=>{r.push(S.subscribe(e,(e=>{let{source:t,measurement:r}=e;const{activeViewportId:s}=g.getState();if(n===s){const{referenceStudyUID:e,referenceSeriesUID:t}=r;D("SET_DIRTY",{SeriesInstanceUID:t}),D("TRACK_SERIES",{viewportId:n,StudyInstanceUID:e,SeriesInstanceUID:t})}})).unsubscribe)})),()=>{r.forEach((e=>{e()}))}}),[S,D,n,g]);return r.createElement(r.Fragment,null,r.createElement(o.uY,{onDoubleClick:e=>{e.stopPropagation(),e.preventDefault()},useAltStyling:I,onArrowsClick:e=>function(e){const t=function(e,t,n,r){const{measurementService:s,viewportGridService:a}=t.services,i=s.getMeasurements(),{activeViewportId:o,viewports:l}=a.getState(),{displaySetInstanceUIDs:c}=l.get(o),{trackedSeries:u}=r.context,m=i.filter((e=>u.includes(e.referenceSeriesUID)&&c.includes(e.displaySetInstanceUID)));if(!m.length)return;const d=m.length,p=m.map((e=>e.uid));let E=p.findIndex((e=>e===n));return-1===E?E=0:"left"===e?(E--,E<0&&(E=d-1)):"right"===e&&(E++,E===d&&(E=0)),p[E]}(e,a,y,w);t&&(N(t),S.jumpToMeasurement(n,t))}(e),getStatusComponent:()=>function(e){const t=e?"status-tracked":"status-untracked";return r.createElement("div",{className:"relative"},r.createElement(o.u,{position:"bottom-left",content:r.createElement("div",{className:"flex py-2"},r.createElement("div",{className:"flex pt-1"},r.createElement(o.JO,{name:"info-link",className:"text-primary-main w-4"})),r.createElement("div",{className:"ml-4 flex"},r.createElement("span",{className:"text-common-light text-base"},e?r.createElement(r.Fragment,null,"Series is",r.createElement("span",{className:"font-bold text-white"}," tracked")," and can be viewed ",r.createElement("br",null)," ","in the measurement panel"):r.createElement(r.Fragment,null,"Measurements for",r.createElement("span",{className:"font-bold text-white"}," untracked "),"series ",r.createElement("br",null)," will not be shown in the ",r.createElement("br",null)," measurements panel"))))},r.createElement(o.JO,{name:t,className:"text-aqua-pale"})))}(I),studyData:{label:s,studyDate:p(M)||p(F)||f("NoStudyDate"),currentSeries:R,seriesDescription:T,patientInformation:{patientName:A?i.default.utils.formatPN(A):"",patientSex:C||"",patientAge:P||"",MRN:O||"",thickness:_?`${parseFloat(_).toFixed(2)}`:"",thicknessUnits:"mm",spacing:void 0!==j?`${parseFloat(j).toFixed(2)}mm`:"",scanner:L||""}}}),r.createElement("div",{className:"relative flex h-full w-full flex-row overflow-hidden"},(()=>{const{component:t}=E.getModuleEntry("@ohif/extension-cornerstone.viewportModule.cornerstone");return r.createElement(t,d({},e,{onElementEnabled:q,onElementDisabled:G}))})()))}E.propTypes={displaySets:a().arrayOf(a().object.isRequired).isRequired,viewportId:a().string.isRequired,dataSource:a().object,children:a().node,customProps:a().object},E.defaultProps={customProps:{}};const f=E}}]);
|
||||
//# sourceMappingURL=822.bundle.c7db86db8d8ed49ef794.js.map
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user