From 0dbb93f3abf0ceb62e9154001d9d8ffe537e3c93 Mon Sep 17 00:00:00 2001 From: Masroor Ehsan Date: Sun, 26 Jan 2025 22:38:37 +0600 Subject: [PATCH] imported --- .env | 38 ++++++ config/nginx_ohif.conf | 28 +++++ config/ohif.js | 144 +++++++++++++++++++++++ config/orthanc.json | 261 +++++++++++++++++++++++++++++++++++++++++ config/orthanc_ohif.js | 256 ++++++++++++++++++++++++++++++++++++++++ config/stone.json | 154 ++++++++++++++++++++++++ docker-compose.yml | 56 +++++++++ logo.png | Bin 0 -> 73053 bytes 8 files changed, 937 insertions(+) create mode 100644 .env create mode 100644 config/nginx_ohif.conf create mode 100644 config/ohif.js create mode 100644 config/orthanc.json create mode 100644 config/orthanc_ohif.js create mode 100644 config/stone.json create mode 100644 docker-compose.yml create mode 100644 logo.png diff --git a/.env b/.env new file mode 100644 index 0000000..05362f2 --- /dev/null +++ b/.env @@ -0,0 +1,38 @@ +# docker-compose environment file +# +# When you set the same environment variable in multiple files, +# here’s the priority used by Compose to choose which value to use: +# +# 1. Compose file +# 2. Shell environment variables +# 3. Environment file +# 4. Dockerfile +# 5. Variable is not defined + +# +# Nginx configuration +# +NGINX_DEFAULT_CONF=./config/nginx_ohif.conf + +# +# OHIF Viewer +# +VIEWER_CONFIG=./config/ohif.js + +# +# Orthanc core with plugins +# +ORTHANC_CONFIG=./config/orthanc.json +ORTHANC_OHIF=./config/orthanc_ohif.js +ORTHANC_DB_MNT=./orthanc_db + +# +# PostgreSQL database - default values should not be used in production +# +POSTGRES_DATA_MNT=./pg_sql +PGDATA=/var/lib/postgresql/data + +POSTGRES_DB=orthanc +POSTGRES_PORT=5432 +POSTGRES_USER=postgres +POSTGRES_PASSWORD=pgpassword \ No newline at end of file diff --git a/config/nginx_ohif.conf b/config/nginx_ohif.conf new file mode 100644 index 0000000..1cc63a4 --- /dev/null +++ b/config/nginx_ohif.conf @@ -0,0 +1,28 @@ +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; + add_header 'Access-Control-Allow-Credentials' 'true'; + add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'; + add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; + add_header 'Access-Control-Allow-Origin' '*'; + } +} diff --git a/config/ohif.js b/config/ohif.js new file mode 100644 index 0000000..2adea9e --- /dev/null +++ b/config/ohif.js @@ -0,0 +1,144 @@ +window.config = { + // default: '/' + routerBasename: "/", + extensions: [], + showStudyList: false, + 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: {}, + + investigationalUseDialog: { + option: 'never', + }, + // studyListFunctionsEnabled is set to true to enable DICOM uploading + studyListFunctionsEnabled: false, +}; diff --git a/config/orthanc.json b/config/orthanc.json new file mode 100644 index 0000000..aaff7ea --- /dev/null +++ b/config/orthanc.json @@ -0,0 +1,261 @@ +{ + "Name": "CHEVRON", + "StorageDirectory": "/var/lib/orthanc/db", + "IndexDirectory": "/var/lib/orthanc/db", + "StorageCompression": true, + "MaximumStorageSize": 0, + "MaximumPatientCount": 0, + "MaximumStorageCacheSize": 128, + "LuaScripts": [], + "Plugins": [ + "/usr/share/orthanc/plugins", + "/usr/local/share/orthanc/plugins" + ], + "OHIF": { + "UserConfiguration": "/usr/local/share/orthanc/ohif.js" + }, + "ExtraMainDicomTags": { + "Instance": [ + "Rows", + "Columns", + "ImageType", + "SOPClassUID", + "ContentDate", + "ContentTime", + "FrameOfReferenceUID", + "PixelSpacing", + "SpecificCharacterSet", + "BitsAllocated", + "BitsStored", + "RescaleSlope", + "RescaleIntercept", + "SliceThickness", + "WindowCenter", + "WindowWidth", + "PhotometricInterpretation", + "BFSenderID", + "PixelRepresentation" + ], + "Series": [ + "TimezoneOffsetFromUTC", + "BodyPartExamined", + "PerformedProcedureStepStartDate", + "PerformedProcedureStepStartTime", + "RequestAttributesSequence" + ], + "Study": [ + "OtherPatientNames", + "OtherPatientIDs", + "TimezoneOffsetFromUTC", + "AcquisitionUID", + "AcquisitionDate", + "AcquisitionDeviceProcessingDescription", + "AcquisitionTime", + "BodyPartExamined", + "InstitutionAddress", + "Manufacturer", + "ManufacturerModelName", + "Modality", + "OperatorsName", + "ProtocolName", + "SeriesDescription", + "SoftwareVersions", + "ReferringPhysicianName", + "ReferringPhysicianIdentificationSequence", + "ConsultingPhysicianName", + "ConsultingPhysicianIdentificationSequence", + "RequestingPhysician", + "BFSenderID", + "StationName" + ], + "Patient": [ + "OtherPatientNames", + "OtherPatientIDs" + ] + }, + "ConcurrentJobs": 8, + "HttpServerEnabled": true, + "OrthancExplorerEnabled": true, + "HttpPort": 8042, + "HttpDescribeErrors": true, + "HttpCompressionEnabled": true, + "WebDavEnabled": true, + "WebDavDeleteAllowed": false, + "WebDavUploadAllowed": true, + "DicomServerEnabled": true, + "DicomAet": "CHEVRON", + "DicomCheckCalledAet": true, + "DicomPort": 4242, + "DefaultEncoding": "Latin1", + "AcceptedTransferSyntaxes": [ + "1.2.840.10008.1.*" + ], + "UnknownSopClassAccepted": false, + "DicomScpTimeout": 30, + "RemoteAccessAllowed": true, + "SslEnabled": false, + "SslCertificate": "certificate.pem", + "SslMinimumProtocolVersion": 4, + "SslVerifyPeers": false, + "SslTrustedClientCertificates": "trustedClientCertificates.pem", + "AuthenticationEnabled": false, + "RegisteredUsers": { + "dicom": "letmein" + }, + "DicomTlsEnabled": false, + "DicomTlsRemoteCertificateRequired": true, + "DicomAlwaysAllowEcho": true, + "DicomAlwaysAllowStore": true, + "DicomAlwaysAllowFind": false, + "DicomAlwaysAllowFindWorklist": false, + "DicomAlwaysAllowGet": false, + "DicomAlwaysAllowMove": false, + "DicomCheckModalityHost": false, + "DicomModalities": { + // "MAPDRX" : [ "MAPDR", "127.0.0.1", 11112] + }, + "DicomModalitiesInDatabase": false, + "DicomEchoChecksFind": false, + "DicomScuTimeout": 10, + "DicomScuPreferredTransferSyntax": "1.2.840.10008.1.2.1", + "DicomThreadsCount": 4, + "OrthancPeers": {}, + "OrthancPeersInDatabase": false, + "HttpProxy": "", + "HttpVerbose": false, + "HttpTimeout": 60, + "HttpsVerifyPeers": true, + "HttpsCACertificates": "/etc/ssl/certs/ca-certificates.crt", + "UserMetadata": { + // "Sample" : 1024 + }, + "UserContentType": { + // "sample" : 1024 + // "sample2" : [ 1025, "application/pdf" ] + }, + "StableAge": 60, + "StrictAetComparison": false, + "StoreMD5ForAttachments": true, + "LimitFindResults": 0, + "LimitFindInstances": 0, + "LogExportedResources": false, + "KeepAlive": true, + "TcpNoDelay": true, + "HttpThreadsCount": 50, + "StoreDicom": true, + "DicomAssociationCloseDelay": 5, + "QueryRetrieveSize": 100, + "CaseSensitivePN": false, + "LoadPrivateDictionary": true, + "Dictionary" : { + "0011,1060" : [ "LO", "InnowaveUploaderID", 1, 1, "InowavePrivateGroup"], + "1971,1020" : [ "LO", "BFSenderID", 1, 1, "BlackFish"] + }, + "SynchronousCMove": true, + "JobsHistorySize": 10, + "SaveJobs": true, + "OverwriteInstances": false, + "MediaArchiveSize": 1, + "StorageAccessOnFind": "Always", + "MetricsEnabled": true, + "ExecuteLuaEnabled": false, + "HttpRequestTimeout": 30, + "DefaultPrivateCreator": "", + "StorageCommitmentReportsSize": 100, + "TranscodeDicomProtocol": true, + "BuiltinDecoderTranscoderOrder": "After", + "IngestTranscoding": "1.2.840.10008.1.2.4.91", + "IngestTranscodingOfUncompressed": true, + "IngestTranscodingOfCompressed": true, + "DicomLossyTranscodingQuality": 90, + "SyncStorageArea": true, + "MallocArenaMax": 5, + "DeidentifyLogs": true, + "DeidentifyLogsDicomVersion": "2021b", + "MaximumPduLength": 16384, + "CheckRevisions": false, + "SynchronousZipStream": true, + "ZipLoaderThreads": 0, + "Warnings": { + "W001_TagsBeingReadFromStorage": true, + "W002_InconsistentDicomTagsInDb": true + }, + "StoneWebViewer": { + /** + * Enables/disables the print button. + **/ + "PrintEnabled": false, + /** + * Enables/disables the button to download a screenshot of the + * active viewport as a JPEG file. + **/ + "DownloadAsJpegEnabled": false, + /** + * Enables/disables the button to download the display study. + * Only used if "OrthancApiRoot" is properly set. + **/ + "DownloadStudyEnabled": false, + /** + * If option "DownloadDicomDir" is set to "true", the Stone Web + * viewer will create DICOMDIR media archives (as generated by the + * route "/studies/{id}/media" of Orthanc), instead of archives + * containing a human-readable hierarchy of folders (as generated + * by the route "/studies/{id}/archive"). + **/ + "DownloadDicomDir": true, + /** + * By setting option "InstitutionLogo" to an URL containing an + * image, this logo will be displayed at the bottom-left of the + * Stone Web viewer. + **/ + "InstitutionLogo": "http://pacs.mylabctg.com:8042/stone-webviewer/img/orthanc.png", + /** + * Whether to display the info panel at startup. Allowed values: + * "Always", "Never", "User". With "User", the user can decide to + * show or not the info panel in the user preferences panel (this + * is implemented using a cookie). (New in Stone Web viewer 2.4) + **/ + "ShowInfoPanelAtStartup": "Never", + /** + * Whether to give access to the user preferences window. (New in + * Stone Web viewer 2.4) + **/ + "ShowUserPreferencesButton": true, + /** + * Display a "not for diagnostic usage" disclaimer above the list + * of studies/series. (New in Stone Web viewer 2.4) + **/ + "ShowNotForDiagnosticUsageDisclaimer": false + }, + "DicomWeb": { + "Enable": true, + "Root": "/dicom-web/", + "PublicRoot": "/dicom-web/", + "EnableWado": true, + "WadoRoot": "/wado", + "Ssl": false, + "Servers": { + "main": [ + "http://pacs.mylabctg.com:8042/dicom-web/" + ] + }, + "QidoCaseSensitive": true, + "MetadataWorkerThreadsCount": 10, + "EnableMetadataCache": true, + "StudiesMetadata": "Full", + "SeriesMetadata": "Full" + }, + "OrthancExplorer2": { + "Enable": true, + "IsDefaultOrthancUI": true + }, + "PostgreSQL": { + "EnableIndex": true, + "EnableStorage": false, // DICOM files are stored in the Orthanc container in /var/lib/orthanc/db/ + "Host": "postgres", // the name of the PostgreSQL container + "Port": 5432, + "Database": "orthanc", // default database name in PostgreSQL container (no need to create it) + "Username": "postgres", // default user name in PostgreSQL container (no need to create it) + "Password": "pgpassword" + } +} \ No newline at end of file diff --git a/config/orthanc_ohif.js b/config/orthanc_ohif.js new file mode 100644 index 0000000..5f8ed19 --- /dev/null +++ b/config/orthanc_ohif.js @@ -0,0 +1,256 @@ +/** + * SPDX-FileCopyrightText: 2023-2024 Sebastien Jodogne, UCLouvain, Belgium, + * and 2018-2024 Open Health Imaging Foundation + * SPDX-License-Identifier: MIT + */ + +window.config = { + extensions: [], + modes: [], + customizationService: { + // Shows a custom route -access via http://localhost:3000/custom + // helloPage: '@ohif/extension-default.customizationModule.helloPage', + }, + + showStudyList: false, + investigationalUseDialog: { + option: 'never', + }, + + 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", + }, + }); + }, + }, + + customizationService: { + cornerstoneOverlayTopLeft: { + id: 'cornerstoneOverlayTopLeft', + items: [ + { + id: 'WindowLevel', + customizationType: 'ohif.overlayItem.windowLevel', + }, + { + id: 'PatientName', + customizationType: 'ohif.overlayItem', + label: 'Pt:', + color: 'white', + condition: ({ instance }) => + instance && + instance.PatientName && + instance.PatientName.Alphabetic, + contentF: ({ instance, formatters: { formatPN } }) => { + if (instance && instance.PatientName && instance.PatientName.Alphabetic) { + return formatPN(instance.PatientName.Alphabetic) + ' ' + (instance.PatientSex ? '(' + instance.PatientSex + ')' : ''); + } else { + return 'N/A'; + } + }, + }, + { + id: 'PatientAge', + customizationType: 'ohif.overlayItem', + label: 'Age:', + color: 'white', + title: "Patient's Age", + condition: ({ instance }) => instance && instance.PatientAge, + contentF: ({ instance }) => instance.PatientAge, + }, + { + id: 'ID', + customizationType: 'ohif.overlayItem', + label: 'ID:', + color: 'white', + title: 'Patient PID', + condition: ({ instance }) => instance && instance.PatientID, + contentF: ({ instance }) => instance.PatientID, + }, + ], + }, + }, + + // some windows systems have issues with more than 3 web workers + maxNumberOfWebWorkers: 3, + // below flag is for performance reasons, but it might not work for all servers + omitQuotationForMultipartRequest: true, + showWarningMessageForCrossOrigin: true, + showCPUFallbackMessage: true, + showLoadingIndicator: true, + strictZSpacingForVolumeViewport: true, + maxNumRequests: { + interaction: 100, + thumbnail: 75, + // Prefetch number is dependent on the http protocol. For http 2 or + // above, the number of requests can be go a lot higher. + prefetch: 25, + }, + // filterQueryParam: false, + httpErrorHandler: error => { + // This is 429 when rejected from the public idc sandbox too often. + if (error.status) { + console.warn(error.status); + } else { + console.warn(error); + } + }, + hotkeys: [ + { + commandName: 'incrementActiveViewport', + label: 'Next Viewport', + keys: ['right'], + }, + { + commandName: 'decrementActiveViewport', + label: 'Previous Viewport', + keys: ['left'], + }, + { commandName: 'rotateViewportCW', label: 'Rotate Right', keys: ['r'] }, + { commandName: 'rotateViewportCCW', label: 'Rotate Left', keys: ['l'] }, + { commandName: 'invertViewport', label: 'Invert', keys: ['i'] }, + { + commandName: 'flipViewportHorizontal', + label: 'Flip Horizontally', + keys: ['h'], + }, + { + commandName: 'flipViewportVertical', + 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'] }, + { commandName: 'nextImage', label: 'Next Image', keys: ['down'] }, + { commandName: 'previousImage', label: 'Previous Image', keys: ['up'] }, + // { + // commandName: 'previousViewportDisplaySet', + // label: 'Previous Series', + // keys: ['pagedown'], + // }, + // { + // commandName: 'nextViewportDisplaySet', + // label: 'Next Series', + // keys: ['pageup'], + // }, + { + commandName: 'setToolActive', + commandOptions: { toolName: 'Zoom' }, + 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'], + }, + ], +}; + +/** + * SPDX-FileCopyrightText: 2023-2024 Sebastien Jodogne, UCLouvain, Belgium, + * and 2018-2024 Open Health Imaging Foundation + * SPDX-License-Identifier: MIT + */ + +window.config.routerBasename = '/ohif/'; + +if (true) { + window.config.dataSources = [ + { + friendlyName: 'Orthanc DICOMweb', + namespace: '@ohif/extension-default.dataSourcesModule.dicomweb', + sourceName: 'dicomweb', + configuration: { + name: 'orthanc', + + wadoUriRoot: '../dicom-web', + qidoRoot: '../dicom-web', + wadoRoot: '../dicom-web', + + qidoSupportsIncludeField: false, + supportsReject: false, + imageRendering: 'wadors', + thumbnailRendering: 'wadors', + enableStudyLazyLoad: true, + supportsFuzzyMatching: false, + supportsWildcard: true, + staticWado: true, + singlepart: 'bulkdata,pdf,video', + acceptHeader: ['multipart/related; type=application/octet-stream; transfer-syntax=*'] + } + } + ]; + + window.config.defaultDataSourceName = 'dicomweb'; + +} else { + window.config.showStudyList = false; + window.config.dataSources = [ + { + friendlyName: 'Orthanc DICOM JSON', + namespace: '@ohif/extension-default.dataSourcesModule.dicomjson', + sourceName: 'dicomjson', + configuration: { + name: 'json', + }, + } + ]; + + window.config.defaultDataSourceName = 'dicomjson'; +} diff --git a/config/stone.json b/config/stone.json new file mode 100644 index 0000000..f3d2b6c --- /dev/null +++ b/config/stone.json @@ -0,0 +1,154 @@ +{ + "StoneWebViewer" : + { + /** + * Defines how dates are displayed in the UI. If this option is not + * set, the DICOM tags will be displayed as such. "DD" will be + * replaced by the day, "MM" by the month, and "YYYY" by the year. + **/ + // "DateFormat" : "DD/MM/YYYY", + + /** + * Defines how times are displayed in the UI. If this option is not + * set, the DICOM tags will be displayed as such. "hh" will be + * replaced by the hour, "mm" by the minutes, "ss" by the seconds + * and ".f" by the fractions of seconds. + **/ + // "TimeFormat" : "hh:mm:ss.f", + + + /** + * This option allows you to define windowing presets. + * For each preset, you must provide a name, the window width + * and window center. + **/ + "WindowingPresets" : [ + {"Name" : "CT Lung", "WindowCenter" : -400, "WindowWidth" : 1600}, + {"Name" : "CT Abdomen", "WindowCenter" : 60, "WindowWidth" : 400}, + {"Name" : "CT Bone", "WindowCenter" : 300, "WindowWidth" : 1500}, + {"Name" : "CT Brain", "WindowCenter" : 40, "WindowWidth" : 80}, + {"Name" : "CT Chest", "WindowCenter" : 40, "WindowWidth" : 400}, + {"Name" : "CT Angio", "WindowCenter" : 300, "WindowWidth" : 600} + ], + + /** + * Enables/disables the combined tool. This is the default mode + * for mouse interactions. The combined tool allows to access the + * windowing, zoom and pan from a single mouse configuration. The + * behaviour of the combined tool is defined in + * CombinedToolBehaviour. The available mouse actions are + * "Crosshair", "Windowing", "Pan", "Rotate", "Zoom" and + * "MagnifyingGlass". + **/ + "CombinedToolEnabled" : true, + "CombinedToolBehaviour" : { + "LeftMouseButton" : "Windowing", + "MiddleMouseButton" : "Pan", + "RightMouseButton" : "Zoom" + }, + + /** + * Enables/disables the print button. + **/ + "PrintEnabled" : false, + + /** + * Enables/disables the button to download a screenshot of the + * active viewport as a JPEG file. + **/ + "DownloadAsJpegEnabled" : false, + + /** + * Enables/disables the button to download the display study. + * Only used if "OrthancApiRoot" is properly set. + **/ + "DownloadStudyEnabled" : false, + + /** + * The allowed origin for messages corresponding to dynamic actions + * triggered by another Web page using "window.postMessage()". The + * special value "*" will allow any origin, which is an insecure + * value to be used only during development. If this option is not + * set, all the requests for dynamic actions will be rejected. + * https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage + **/ + "ExpectedMessageOrigin" : "http://localhost:8042", + + /** + * Root path of the DICOMweb server. This option is automatically + * set by the Orthanc plugin if missing. + **/ + "DicomWebRoot" : "../dicom-web", + + /** + * Set the size of the cache that stores the DICOM files. This + * size is expressed in megabytes. The default value of 128MB + * should work in most setups, except if very large multiframe + * instances are encountered, which might for instance be the case + * for mammography. Setting this parameter to zero will disable + * the cache, which should only be done for testing. + **/ + "DicomCacheSize" : 128, + + /** + * The following parameter can be set if running the Stone Web + * viewer from Orthanc, but without using the associated plugin + * (e.g. using the "Serve Folders" sample plugin). Using the + * plugin would overwrite this setting. This will enable features + * that are only available if the Orthanc REST API is accessible + * (download of studies, and playing videos). This option is + * typically used by the developers of Stone. + **/ + "OrthancApiRoot" : "..", + + /** + * If option "DownloadDicomDir" is set to "true", the Stone Web + * viewer will create DICOMDIR media archives (as generated by the + * route "/studies/{id}/media" of Orthanc), instead of archives + * containing a human-readable hierarchy of folders (as generated + * by the route "/studies/{id}/archive"). + **/ + "DownloadDicomDir" : false, + + /** + * By setting option "InstitutionLogo" to an URL containing an + * image, this logo will be displayed at the bottom-left of the + * Stone Web viewer. + **/ + "InstitutionLogo" : "", + + /** + * Define a list of modality type that the viewer will ignore. + **/ + "SkipSeriesFromModalities": ["SR", "SEG", "PR"], + + /** + * Whether to display the info panel at startup. Allowed values: + * "Always", "Never", "User". With "User", the user can decide to + * show or not the info panel in the user preferences panel (this + * is implemented using a cookie). (New in Stone Web viewer 2.4) + **/ + "ShowInfoPanelAtStartup": "User", + + /** + * Whether to give access to the user preferences window. (New in + * Stone Web viewer 2.4) + **/ + "ShowUserPreferencesButton" : true, + + /** + * Display a "not for diagnostic usage" disclaimer above the list + * of studies/series. (New in Stone Web viewer 2.4) + **/ + "ShowNotForDiagnosticUsageDisclaimer": false, + + /** + * HTTP headers to be set in each request to the DICOMweb server. + * Note that the value of the headers can be taken from the + * environment variables. + **/ + "DicomWebHttpHeaders" : { + /* "Authorization" : "Bearer ${USER}" */ + } + } +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..98e9b83 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,56 @@ +services: + postgres: + image: postgres + container_name: postgres + networks: + - pacs + volumes: + - ${POSTGRES_DATA_MNT}:${PGDATA} + environment: + - POSTGRES_USER=${POSTGRES_USER} + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + - PGDATA=${PGDATA} + - POSTGRES_DB=${POSTGRES_DB} + + pacs: + container_name: orthanc + image: jodogne/orthanc-plugins + ports: + - 8042:8042 + - 4242:4242 + volumes: + # configuration file + - ${ORTHANC_CONFIG:-./config/orthanc.json}:/etc/orthanc/orthanc.json:ro + # storage volume for raw dicoms + - ${ORTHANC_DB_MNT:-./orthanc_db}:/var/lib/orthanc/db + - ${ORTHANC_OHIF:-./config/orthanc_ohif.js}:/usr/local/share/orthanc/ohif.js:ro + environment: + VERBOSE_ENABLED: "true" + VERBOSE_STARTUP: "true" + DICOM_WEB_PLUGIN_ENABLED: "true" + OHIF_PLUGIN_ENABLED: "true" + VOLVIEW_PLUGIN_ENABLED: "true" + restart: always + networks: + - pacs + depends_on: + - postgres + + ohif: + container_name: ohif + image: ohif/viewer + ports: + - 3000:80 + environment: + - APP_CONFIG:/usr/share/nginx/html/app-config.js + volumes: + - ${NGINX_DEFAULT_CONF}:/etc/nginx/conf.d/default.conf:ro + - ${VIEWER_CONFIG}:/usr/share/nginx/html/app-config.js:ro + - ./logo.png:/usr/share/nginx/html/logo.png:ro + restart: always + networks: + - pacs + +networks: + pacs: + external: true diff --git a/logo.png b/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c58243e2814fa8706ea851967a2c531f95427e7f GIT binary patch literal 73053 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