Currently, my situation is as follows: I have a nearly full 4 TB storage unit, which is an SSD designed for I/O performance, and another SSD dedicated to the database and the Orthanc engine, along with 32 GB of RAM. This is what’s happening:
Background: I use OHIF as a viewer, which is hosted on the same web server (Windows/IIS).
Study loading has worsened considerably; response times and image loading in the viewer have been negatively affected. In this context, I have considered some alternatives, and I would greatly appreciate your valuable experience and recommendations.
Store files (DICOM) in compressed format. During my research, I found that the Orthanc engine supports compression as long as it is properly configured in the orthanc.json file, where I have already made some adjustments:
{
"Name" : "pacs-name",
"StorageDirectory" : "G:\\\\Pacs",
"StorageCompression" : false,
"MaximumStorageSize" : 0,
"MaximumPatientCount" : 0,
"MaximumStorageMode" : "Recycle",
"MaximumStorageCacheSize" : 1024,
"LuaHeartBeatPeriod" : 0,
"LuaScripts": \["Scripts\\\\SendToCharrua.lua"\],
"Plugins" : \[ "\\\\Orthanc Server\\\\Plugins"\],
"ConcurrentJobs" : 8,
"JobsEngineThreadsCount" : {
"ResourceModification": 4
},
"HttpServerEnabled" : true,
"OrthancExplorerEnabled" : true,
"HttpPort" : 8042,
"HttpDescribeErrors" : true,
"HttpCompressionEnabled" : true,
"WebDavEnabled" : true,
"WebDavDeleteAllowed" : false,
"WebDavUploadAllowed" : true,
"DicomServerEnabled" : true,
"DicomAet" : "PACS",
"DicomCheckCalledAet" : false,
"DicomPort" : 4242,
"BindAddress" : "0.0.0.0",
"DefaultEncoding" : "Latin1",
// “AcceptedTransferSyntaxes” : [ “1.2.840.10008.1.*” ],
“AcceptedTransferSyntaxes”: ["1.2.840.10008.1.2", // Implicit VR Little Endian
"1.2.840.10008.1.2.1", // Explicit VR Little Endian
"1.2.840.10008.1.2.2", // Explicit VR Big Endian
"1.2.840.10008.1.2.4.70", // JPEG Lossless
"1.2.840.10008.1.2.4.80", // JPEG-LS Lossless
"1.2.840.10008.1.2.4.90" // JPEG 2000 Lossless
],
"JpegLosslessTransferSyntaxAccepted": false, // o simplemente omítelo
"JpegTransferSyntaxAccepted": false,
"Jpeg2000TransferSyntaxAccepted": false,
"UnknownSopClassAccepted" : false,
"DicomScpTimeout" : 60,
"RemoteAccessAllowed" : true,
"SslEnabled" : false,
}
"SslCertificate" : "certificate.pem",
"SslMinimumProtocolVersion" : 4,
"SslVerifyPeers" : false,
"SslTrustedClientCertificates" : "trustedClientCertificates.pem",
"HttpBindAddress": "0.0.0.0",
"AuthenticationEnabled" : false,
"DicomTlsEnabled" : false,
"DicomTlsRemoteCertificateRequired" : true,
"DicomTlsMinimumProtocolVersion" : 0,
"DicomAlwaysAllowEcho" : true,
"DicomAlwaysAllowStore" : true,
"DicomAlwaysAllowFind" : false,
"DicomAlwaysAllowFindWorklist" : true,
"DicomAlwaysAllowGet" : false,
"DicomAlwaysAllowMove" : false,
"DicomCheckModalityHost" : false,
"DicomModalities" : {
"MAMOGRAGO": \["MAMOGRAFO","192.168.0.187",104\]
},
"DicomModalitiesInDatabase" : false,
"DicomEchoChecksFind" : false,
"DicomDefaultRetrieveMethod" : "C-MOVE",
"DicomScuTimeout" : 30,
"DicomScuPreferredTransferSyntax" : "1.2.840.10008.1.2.1",
"DicomThreadsCount" : 8,
"OrthancPeers" : {},
"OrthancPeersInDatabase" : false,
"HttpProxy" : "",
"HttpVerbose" : true,
"HttpTimeout" : 120,
"HttpsVerifyPeers" : true,
"HttpsCACertificates" : "C:\\\\Program Files\\\\Orthanc Server\\\\Configuration\\\\ca-certificates.crt",
"UserMetadata" : {
},
"UserContentType" : {
},
"StableAge" : 60,
"StrictAetComparison" : false,
"StoreMD5ForAttachments" : false,
"LimitFindResults" : 200,
"LimitFindInstances" : 200,
"LogExportedResources" : false,
"KeepAlive" : true,
"KeepAliveTimeout" : 30,
"TcpNoDelay" : true,
"HttpThreadsCount" : 50,
"StoreDicom" : true,
"DicomAssociationCloseDelay" : 2,
"QueryRetrieveSize" : 100,
"CaseSensitivePN" : false,
"LoadPrivateDictionary" : true,
"Dictionary" : {
},
"SynchronousCMove" : true,
"JobsHistorySize" : 10,
"SaveJobs" : true,
"OverwriteInstances" : false,
"MediaArchiveSize" : 1,
"StorageAccessOnFind" : "Always",
"MetricsEnabled" : true,
"RestApiWriteToFileSystemEnabled": true,
"HttpRequestTimeout" : 60,
"DefaultPrivateCreator" : "",
"StorageCommitmentReportsSize" : 100,
"TranscodeDicomProtocol" : false,
"BuiltinDecoderTranscoderOrder" : "After",
"IngestTranscodingOfUncompressed" : false,
"IngestTranscodingOfCompressed" : false,
"DicomLossyTranscodingQuality" : 90,
"SyncStorageArea" : false,
"MallocArenaMax" : 2,
"DeidentifyLogs" : true,
"DeidentifyLogsDicomVersion" : "2023b",
"MaximumPduLength" : 32768,
"CheckRevisions" : false,
"SynchronousZipStream" : true,
"ZipLoaderThreads": 4,
"Warnings" : {
"W001_TagsBeingReadFromStorage": true,
"W002_InconsistentDicomTagsInDb": true,
"W003_DecoderFailure": true,
"W004_NoMainDicomTagsSignature": true,
"W005_RequestingTagFromLowerResourceLevel": true,
"W006_RequestingTagFromMetaHeader": true,
"W007_MissingRequestedTagsNotReadFromDisk": true
},
"ReadOnly" : false,
"MaximumConcurrentDcmtkTranscoders" : 4
However, I would appreciate knowing if there is any other way to improve it. I understand that by compressing the files, first, storage space is reduced, and second, when a user requests a study, since the data will no longer be in raw format but compressed, response times will be faster. If it is necessary to provide additional information to get more details and improve your recommendations, I would be happy to share the tests.