From 39f9f4d9232056cca8c0e5a137bddcd7adbd34ee Mon Sep 17 00:00:00 2001 From: mozzie Date: Mon, 21 Aug 2023 13:45:07 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20ohifv3=E6=95=B4=E5=90=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 0 -> 6148 bytes .env | 1 + config/orthanc.json | 2 +- docker-compose.yml | 57 +++++++++-------- ohifv3/app-config.js | 141 +++++++++++++++++++++++++++++++++++++++++++ ohifv3/logo.png | Bin 0 -> 22335 bytes ohifv3/ohif.conf | 22 +++++++ 7 files changed, 196 insertions(+), 27 deletions(-) create mode 100644 .DS_Store create mode 100644 ohifv3/app-config.js create mode 100644 ohifv3/logo.png create mode 100644 ohifv3/ohif.conf diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..33e1aae5b8421fa16d79b946788a68ca7be42ba8 GIT binary patch literal 6148 zcmeHK%}T>S5Z<-5-BN@e6!f;>wP0c^3SL63FJMFuDm5Y124lALFNaddU0=u-@p+ut z-5i1iZz6UEcE8#A+0A^A{b7vp-aK*{Yca+IG(?Wd8bR|~*Om=Nx9{K940DU zGtpl(;kVbAVj~u_CszLck8qsC)0yLZ@~ujByH*!<(G(BPsceQGWy~CsPtHDe1nyNR$BnQ&9>{u+|9h6d03xAR(Dt!ifkyFGH5(C5l zF+dD#90T?!5Y3INoC+oeh=HFN!2Ll&L-Z`>2KCkf9bTW&UqwU#9p4g&(xPWEHwYdO zZc+hFDz{GzZqmUnZJcK@H)zrs*DJ$3cID#n!u9H4mpYtr&mi^005MQzpkjtCJpV7@ zms$JBFQ?Fm7$64z83Vl9_xn94%AT#?%EPl(LVJXUf^j)2AfT5n0WiRQWM4atU!o3i Yp2gfC&VqKG4oDXPO$c?wz%MZH1xr;+x&QzG literal 0 HcmV?d00001 diff --git a/.env b/.env index 8bf8d2c..ab7ec1f 100644 --- a/.env +++ b/.env @@ -19,3 +19,4 @@ POSTGRES_DB=orthanc POSTGRES_PORT=5432 POSTGRES_USER=orthanc POSTGRES_PASSWORD=orthanc + diff --git a/config/orthanc.json b/config/orthanc.json index 973ced5..088e9ce 100644 --- a/config/orthanc.json +++ b/config/orthanc.json @@ -2,7 +2,7 @@ "Name": "DICOM PACS", "StorageDirectory": "/var/lib/orthanc/db", "IndexDirectory": "", - "StorageCompression": true, + "StorageCompression": false, "MaximumStorageSize": 0, "MaximumPatientCount": 0, "LuaScripts": [], diff --git a/docker-compose.yml b/docker-compose.yml index 9b5fd6f..135f8ab 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,15 +1,31 @@ -version: '3.6' +version: "3.6" services: - orthanc: + postgres: + image: postgres:13.1 + container_name: postgres + restart: always + ports: + - "5432:5432" + volumes: + # postgrel->data 挂载出来 + - ${POSTGRES_DATA_MNT}:${PGDATA} + environment: + - PGDATA=${PGDATA} + - POSTGRES_DB=${POSTGRES_DB} + - POSTGRES_USER=${POSTGRES_USER} + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + - TZ=Asia/Shanghai + + pacs: image: osimis/orthanc:20.11.2 container_name: orthanc depends_on: - postgres restart: always ports: - - '8042:8042' - - '4242:4242' + - "8042:8042" + - "4242:4242" volumes: # 挂载orthanc.json配置 - ${ORTHANC_CONFIG}:/etc/orthanc/orthanc.json:ro @@ -20,29 +36,18 @@ services: - POSTGRESQL_PLUGIN_ENABLED=true - TZ=Asia/Shanghai command: /etc/orthanc/orthanc.json - logging: - driver: "json-file" - options: - max-size: "800m" - postgres: - image: postgres:13.1 - container_name: postgres + ohifv3: + image: ohif/viewer + container_name: ohif restart: always ports: - - '5432:5432' - volumes: - # postgrel->data 挂载出来 - - ${POSTGRES_DATA_MNT}:${PGDATA} + - "3000:80" environment: - - PGDATA=${PGDATA} - - POSTGRES_DB=${POSTGRES_DB} - - POSTGRES_USER=${POSTGRES_USER} - - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - - TZ=Asia/Shanghai - logging: - driver: "json-file" - options: - max-size: "800m" - - \ No newline at end of file + - APP_CONFIG:/usr/share/nginx/html/app-config.js + volumes: + - ./ohifv3/ohif.conf:/etc/nginx/conf.d/default.conf:ro + - ./ohifv3/app-config.js:/usr/share/nginx/html/app-config.js:ro + - ./ohifv3/logo.png:/usr/share/nginx/html/logo.png:ro + depends_on: + - pacs diff --git a/ohifv3/app-config.js b/ohifv3/app-config.js new file mode 100644 index 0000000..28f2e59 --- /dev/null +++ b/ohifv3/app-config.js @@ -0,0 +1,141 @@ +window.config = { + routerBasename: '/', + extensions: [], + showStudyList: true, + filterQueryParam: false, + servers: { + dicomWeb: [ + { + name: 'Orthanc', + wadoUriRoot: '/orthanc/wado', + qidoRoot: '/orthanc/dicom-web', + wadoRoot: '/orthanc/dicom-web', + qidoSupportsIncludeField: true, + imageRendering: 'wadors', + thumbnailRendering: 'wadors', + enableStudyLazyLoad: true, + supportsFuzzyMatching: true, + }, + ], + }, + whiteLabeling: { + /* Used to replace the default Logo */ + createLogoComponentFn: function (React) { + return React.createElement('a', { + target: '_self', + rel: 'noopener noreferrer', + className: 'header-brand', + href: '/', + style: { + display: 'block', + background: 'url(/logo.png)', + backgroundSize: 'contain', + backgroundRepeat: 'no-repeat', + width: '200px', + }, + }); + }, + }, + // Extensions should be able to suggest default values for these? + // Or we can require that these be explicitly set + hotkeys: [ + // ~ Global + { + commandName: 'incrementActiveViewport', + label: 'Next Viewport', + keys: ['right'], + }, + { + commandName: 'decrementActiveViewport', + label: 'Previous Viewport', + keys: ['left'], + }, + // Supported Keys: https://craig.is/killing/mice + // ~ Cornerstone Extension + { commandName: 'rotateViewportCW', label: 'Rotate Right', keys: ['r'] }, + { commandName: 'rotateViewportCCW', label: 'Rotate Left', keys: ['l'] }, + { commandName: 'invertViewport', label: 'Invert', keys: ['i'] }, + { + commandName: 'flipViewportVertical', + label: 'Flip Horizontally', + keys: ['h'], + }, + { + commandName: 'flipViewportHorizontal', + label: 'Flip Vertically', + keys: ['v'], + }, + { commandName: 'scaleUpViewport', label: 'Zoom In', keys: ['+'] }, + { commandName: 'scaleDownViewport', label: 'Zoom Out', keys: ['-'] }, + { commandName: 'fitViewportToWindow', label: 'Zoom to Fit', keys: ['='] }, + { commandName: 'resetViewport', label: 'Reset', keys: ['space'] }, + // clearAnnotations + { commandName: 'nextImage', label: 'Next Image', keys: ['down'] }, + { commandName: 'previousImage', label: 'Previous Image', keys: ['up'] }, + // firstImage + // lastImage + { + commandName: 'previousViewportDisplaySet', + label: 'Previous Series', + keys: ['pagedown'], + }, + { + commandName: 'nextViewportDisplaySet', + label: 'Next Series', + keys: ['pageup'], + }, + // ~ Cornerstone Tools + { commandName: 'setZoomTool', label: 'Zoom', keys: ['z'] }, + // ~ Window level presets + { + commandName: 'windowLevelPreset1', + label: 'W/L Preset 1', + keys: ['1'], + }, + { + commandName: 'windowLevelPreset2', + label: 'W/L Preset 2', + keys: ['2'], + }, + { + commandName: 'windowLevelPreset3', + label: 'W/L Preset 3', + keys: ['3'], + }, + { + commandName: 'windowLevelPreset4', + label: 'W/L Preset 4', + keys: ['4'], + }, + { + commandName: 'windowLevelPreset5', + label: 'W/L Preset 5', + keys: ['5'], + }, + { + commandName: 'windowLevelPreset6', + label: 'W/L Preset 6', + keys: ['6'], + }, + { + commandName: 'windowLevelPreset7', + label: 'W/L Preset 7', + keys: ['7'], + }, + { + commandName: 'windowLevelPreset8', + label: 'W/L Preset 8', + keys: ['8'], + }, + { + commandName: 'windowLevelPreset9', + label: 'W/L Preset 9', + keys: ['9'], + }, + ], + cornerstoneExtensionConfig: {}, + + // studyListFunctionsEnabled is set to true to enable DICOM uploading + studyListFunctionsEnabled: true + +}; \ No newline at end of file diff --git a/ohifv3/logo.png b/ohifv3/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..1af344bb05669e7b7e0e3f3cc7b546b39fbce4c4 GIT binary patch literal 22335 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
IuMB+=tNQ`hssc2yFOB%8%|UTH?xJV1V| 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 literal 0 HcmV?d00001 diff --git a/ohifv3/ohif.conf b/ohifv3/ohif.conf new file mode 100644 index 0000000..d25248f --- /dev/null +++ b/ohifv3/ohif.conf @@ -0,0 +1,22 @@ +server { + listen 80; + # set client body size to 500M, this is to allow uploading of DICOMs, throws '413 request entity too large nginx' error otherwise # + client_max_body_size 500M; + location / { + root /usr/share/nginx/html; + index index.html index.htm; + try_files $uri $uri/ /index.html; + } + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } + + # https://book.orthanc-server.com/faq/nginx.html#nginx + location /orthanc/ { + proxy_pass http://pacs:8042; + proxy_set_header HOST $host; + proxy_set_header X-Real-IP $remote_addr; + rewrite /orthanc(.*) $1 break; + } +} \ No newline at end of file