Orthanc Image Preview shows empty image

Good day to you all, (relatively) new Orthanc user here.

We got Siemens CT Dose screens in dicom format from our PACS (from a SOMATOM Drive, software version Syngo CT VB10A). Using Orthanc (via docker, jodogne/orthanc-plugins image) preview tool (weither to the instance level or with Orthanc Web viewer at the series level) shows a black image, which is unexpected. I searched to the best of my ability, but couldn’t find anything on the documentation, web or this forum. Any leads?

Importantly, all images are JPEG Lossless, Non-Hierarchical, First-Order Prediction (Process 14 [Selection Value 1]), which should be supported by pydicom (via libjpeg) and GDCM (I think?). Maybe my problem is related to this? Couldn’t find anything conclusive though.

Results with anonymized minimal example (given below)

anonymized_minimal_example.dcm (65.5 KB)

Observed result (example from the instance preview):

Expected result (visible with MicroDicom in this case):

Restarted the container in verbose mode, re-imported the example dicom (given below) and tried both preview methods. The relevant log is also given below. No relevant output since restart (maybe verbose mode wasn’t correctly setup). Logs from before restart do have these lines which could be related:

W1208 16:31:30.717393 PluginsManager.cpp:157] Cannot decode image using GDCM: Bad file format
E1208 16:31:30.721227 PluginsManager.cpp:188] Exception while invoking plugin service 6014: Not implemented yet
E1208 16:31:30.721474 PluginsManager.cpp:153] Trying to access a NULL image

But I’m not sure it’s about the dose screens and I couldn’t reproduce these calls.

Orthanc log

W0316 18:57:06.811533 main.cpp:2034] Orthanc version: mainline (20230830T022237)
W0316 18:57:06.811676 OrthancConfiguration.cpp:108] Scanning folder “/etc/orthanc/” for configuration files
W0316 18:57:06.811725 OrthancConfiguration.cpp:57] Reading the configuration from: “/etc/orthanc/orthanc.json”
W0316 18:57:07.000419 main.cpp:911] Loading plugin(s) from: /usr/share/orthanc/plugins
E0316 18:57:07.000449 PluginsManager.cpp:234] Inexistent path to plugins: /usr/share/orthanc/plugins
W0316 18:57:07.000454 main.cpp:911] Loading plugin(s) from: /usr/local/share/orthanc/plugins
W0316 18:57:07.004928 PluginsManager.cpp:261] Registering plugin ‘connectivity-checks’ (version mainline)
W0316 18:57:07.014821 PluginsManager.cpp:261] Registering plugin ‘delayed-deletion’ (version mainline)
W0316 18:57:07.015084 PluginsManager.cpp:157] DelayedDeletion - plugin is loaded but not enabled (no “DelayedDeletion” section found in configuration)
W0316 18:57:07.019291 PluginsManager.cpp:261] Registering plugin ‘housekeeper’ (version mainline)
W0316 18:57:07.019324 PluginsManager.cpp:157] Housekeeper plugin is initializing
W0316 18:57:07.019665 PluginsManager.cpp:157] Housekeeper plugin is disabled by the configuration file
W0316 18:57:07.023662 PluginsManager.cpp:261] Registering plugin ‘worklists’ (version mainline)
W0316 18:57:07.023693 PluginsManager.cpp:157] Sample worklist plugin is initializing
W0316 18:57:07.024024 PluginsManager.cpp:157] Worklist server is disabled by the configuration file
W0316 18:57:07.036529 PluginsManager.cpp:261] Registering plugin ‘multitenant-dicom’ (version mainline)
W0316 18:57:07.046350 PluginsManager.cpp:261] Registering plugin ‘serve-folders’ (version mainline)
W0316 18:57:07.046810 PluginsManager.cpp:157] ServeFolders: Empty configuration file: No additional folder will be served!
W0316 18:57:07.047352 PluginsManager.cpp:261] Registering plugin ‘authorization’ (version mainline)
W0316 18:57:07.047374 PluginsManager.cpp:157] Initializing the authorization plugin
W0316 18:57:07.047764 PluginsManager.cpp:157] No section “Authorization” in the configuration file, the authorization plugin is disabled
W0316 18:57:07.048356 PluginsManager.cpp:261] Registering plugin ‘dicom-web’ (version mainline)
W0316 18:57:07.048715 PluginsManager.cpp:157] URI to the DICOMweb REST API: /dicom-web/
W0316 18:57:07.048955 PluginsManager.cpp:157] DICOMWeb PublicRoot: /dicom-web/
W0316 18:57:07.048966 PluginsManager.cpp:157] URI to the WADO-URI API: /wado
W0316 18:57:07.049317 PluginsManager.cpp:261] Registering plugin ‘orthanc-explorer-2’ (version mainline)
W0316 18:57:07.049602 PluginsManager.cpp:157] Root URI to the Orthanc-Explorer 2 application: /ui/
W0316 18:57:07.059768 PluginsManager.cpp:261] Registering plugin ‘gdcm’ (version 1.5)
W0316 18:57:07.060032 PluginsManager.cpp:157] Version of GDCM: 3.0.10
W0316 18:57:07.060045 PluginsManager.cpp:157] GDCM throttling is disabled
W0316 18:57:07.060462 PluginsManager.cpp:261] Registering plugin ‘indexer’ (version mainline)
W0316 18:57:07.060818 PluginsManager.cpp:157] OrthancIndexer is disabled
W0316 18:57:07.067655 PluginsManager.cpp:261] Registering plugin ‘mysql-index’ (version mainline)
W0316 18:57:07.068216 PluginsManager.cpp:157] No available configuration for the MySQL index plugin
W0316 18:57:07.077607 PluginsManager.cpp:261] Registering plugin ‘mysql-storage’ (version mainline)
W0316 18:57:07.078205 PluginsManager.cpp:157] No available configuration for the MySQL storage area plugin
W0316 18:57:07.083531 PluginsManager.cpp:261] Registering plugin ‘neuro’ (version mainline)
W0316 18:57:07.087626 PluginsManager.cpp:261] Registering plugin ‘ohif’ (version mainline)
W0316 18:57:07.093375 PluginsManager.cpp:261] Registering plugin ‘odbc-index’ (version mainline)
W0316 18:57:07.093633 PluginsManager.cpp:157] No available configuration for the ODBC index plugin
W0316 18:57:07.093942 PluginsManager.cpp:261] Registering plugin ‘odbc-storage’ (version mainline)
W0316 18:57:07.094176 PluginsManager.cpp:157] No available configuration for the ODBC storage area plugin
W0316 18:57:07.094930 PluginsManager.cpp:261] Registering plugin ‘postgresql-index’ (version mainline)
W0316 18:57:07.095158 PluginsManager.cpp:157] No available configuration for the PostgreSQL index plugin
W0316 18:57:07.095791 PluginsManager.cpp:261] Registering plugin ‘postgresql-storage’ (version mainline)
W0316 18:57:07.096013 PluginsManager.cpp:157] No available configuration for the PostgreSQL storage area plugin
W0316 18:57:07.096367 PluginsManager.cpp:261] Registering plugin ‘tcia’ (version mainline)W0316 18:57:07.096566 PluginsManager.cpp:157] No available configuration for the TCIA plugin, disabling it
W0316 18:57:07.096916 PluginsManager.cpp:261] Registering plugin ‘transfers’ (version mainline)
W0316 18:57:07.097535 PluginsManager.cpp:261] Registering plugin ‘volview’ (version mainline)
W0316 18:57:07.097933 PluginsManager.cpp:261] Registering plugin ‘wsi’ (version mainline)
W0316 18:57:07.098000 PluginsManager.cpp:157] The whole-slide imaging plugin will use at most 4 threads to transcode the tiles
W0316 18:57:07.098430 PluginsManager.cpp:157] Support of IIIF is enabled in the whole-slide imaging plugin
W0316 18:57:07.098962 PluginsManager.cpp:261] Registering plugin ‘web-viewer’ (version mainline)
W0316 18:57:07.098990 PluginsManager.cpp:157] Initializing the Web viewer
W0316 18:57:07.099205 PluginsManager.cpp:157] Web viewer using 2 threads for the decoding of the DICOM images
W0316 18:57:07.099215 PluginsManager.cpp:157] Storing the cache of the Web viewer in folder: /var/lib/orthanc/db/WebViewerCache
W0316 18:57:07.099950 PluginsManager.cpp:157] Web viewer using a cache of 100 MB
W0316 18:57:07.106743 PluginsManager.cpp:261] Registering plugin ‘stone-rtviewer’ (version mainline)
W0316 18:57:07.107118 PluginsManager.cpp:261] Registering plugin ‘stone-webviewer’ (version mainline)
W0316 18:57:07.107204 OrthancInitialization.cpp:426] SQLite index directory: “/var/lib/orthanc/db”
W0316 18:57:07.107435 OrthancInitialization.cpp:525] Storage directory: “/var/lib/orthanc/db”
W0316 18:57:07.109015 HttpClient.cpp:1194] HTTPS will use the CA certificates from this file: /etc/ssl/certs/ca-certificates.crt
W0316 18:57:07.096566 PluginsManager.cpp:157] No available configuration for the TCIA plugin, disabling it
W0316 18:57:07.096916 PluginsManager.cpp:261] Registering plugin ‘transfers’ (version mainline)
W0316 18:57:07.097535 PluginsManager.cpp:261] Registering plugin ‘volview’ (version mainline)
W0316 18:57:07.097933 PluginsManager.cpp:261] Registering plugin ‘wsi’ (version mainline)
W0316 18:57:07.098000 PluginsManager.cpp:157] The whole-slide imaging plugin will use at most 4 threads to transcode the tiles
W0316 18:57:07.098430 PluginsManager.cpp:157] Support of IIIF is enabled in the whole-slide imaging plugin
W0316 18:57:07.098962 PluginsManager.cpp:261] Registering plugin ‘web-viewer’ (version mainline)
W0316 18:57:07.098990 PluginsManager.cpp:157] Initializing the Web viewer
W0316 18:57:07.099205 PluginsManager.cpp:157] Web viewer using 2 threads for the decoding of the DICOM images
W0316 18:57:07.099215 PluginsManager.cpp:157] Storing the cache of the Web viewer in folder: /var/lib/orthanc/db/WebViewerCache
W0316 18:57:07.099950 PluginsManager.cpp:157] Web viewer using a cache of 100 MB
W0316 18:57:07.106743 PluginsManager.cpp:261] Registering plugin ‘stone-rtviewer’ (version mainline)
W0316 18:57:07.107118 PluginsManager.cpp:261] Registering plugin ‘stone-webviewer’ (version mainline)
W0316 18:57:07.107204 OrthancInitialization.cpp:426] SQLite index directory: “/var/lib/orthanc/db”
W0316 18:57:07.107435 OrthancInitialization.cpp:525] Storage directory: “/var/lib/orthanc/db”
W0316 18:57:07.109015 HttpClient.cpp:1194] HTTPS will use the CA certificates from this file: /etc/ssl/certs/ca-certificates.crt
W0316 18:57:07.109407 LuaContext.cpp:94] Lua says: Lua toolbox installed
W0316 18:57:07.109575 LuaContext.cpp:94] Lua says: Lua toolbox installed
W0316 18:57:07.109812 ServerContext.cpp:527] Disk compression is disabled
W0316 18:57:07.109826 ServerIndex.cpp:381] No limit on the number of stored patients
W0316 18:57:07.109831 ServerIndex.cpp:405] At most 35000MB will be used for the storage area
W0316 18:57:07.109872 ServerIndex.cpp:420] Maximum Storage mode: Recycle
W0316 18:57:07.111003 JobsEngine.cpp:272] The jobs engine has started with 1 threads
W0316 18:57:07.111064 main.cpp:310] Security risk in DICOM SCP: C-MOOVE requests are always allowed, even from unknown modalities
W0316 18:57:07.111080 main.cpp:1311] The DICOM port is privileged (104 is below 1024), make sure you run Orthanc as root/administrator
W0316 18:57:07.111699 main.cpp:1317] DICOM server listening with AET PDR_ORTHANC on port: 104
W0316 18:57:07.111724 HttpServer.cpp:2036] HTTP compression is disabled
W0316 18:57:07.111736 main.cpp:1172] Remote LUA script execution is disabled
W0316 18:57:07.111742 main.cpp:1184] REST API cannot write to the file system.
W0316 18:57:07.113396 HttpServer.cpp:1794] HTTP server listening on port: 8042 (HTTPS encryption is disabled, remote access is allowed)
W0316 18:57:07.113417 main.cpp:923] Orthanc has started
W0316 18:57:07.113750 PluginsManager.cpp:157] When using OE2 and the authorization plugin together, you must set ‘Authorization.CheckedLevel’ to ‘studies’. Unless you are usi$

dciodvfy output for example dicom given (no errors, but warnings related to the anonymization)

Warning - Missing attribute or value that would be needed to build DICOMDIR - Patient ID
Warning - Missing attribute or value that would be needed to build DICOMDIR - Study Date
Warning - Missing attribute or value that would be needed to build DICOMDIR - Study Time
Warning - Missing attribute or value that would be needed to build DICOMDIR - Study ID
Warning - Retired attribute - (0x0010,0x1000) LO Other Patient IDs
Warning - Retired attribute - (0x0032,0x000a) CS Study Status ID
Warning - Retired attribute - (0x0032,0x000c) CS Study Priority ID
Warning - Retired attribute - (0x0032,0x4000) LT Study Comments
Warning - Dicom dataset contains retired attributes
SCImage
Warning - Attribute is not present in standard DICOM IOD - (0x0010,0x1000) LO Other Patient IDs
Warning - Attribute is not present in standard DICOM IOD - (0x0010,0x1040) LO Patient’s Address
Warning - Attribute is not present in standard DICOM IOD - (0x0010,0x1060) PN Patient’s Mother’s Birth Name
Warning - Attribute is not present in standard DICOM IOD - (0x0010,0x1080) LO Military Rank
Warning - Attribute is not present in standard DICOM IOD - (0x0010,0x2154) SH Patient’s Telephone Numbers
Warning - Attribute is not present in standard DICOM IOD - (0x0032,0x000a) CS Study Status ID
Warning - Attribute is not present in standard DICOM IOD - (0x0032,0x000c) CS Study Priority ID
Warning - Attribute is not present in standard DICOM IOD - (0x0032,0x1032) PN Requesting Physician
Warning - Attribute is not present in standard DICOM IOD - (0x0032,0x1033) LO Requesting Service
Warning - Attribute is not present in standard DICOM IOD - (0x0032,0x1060) LO Requested Procedure Description
Warning - Attribute is not present in standard DICOM IOD - (0x0032,0x4000) LT Study Comments
Warning - Attribute is not present in standard DICOM IOD - (0x0038,0x0300) LO Current Patient Location
Warning - Attribute is not present in standard DICOM IOD - (0x0040,0x1001) SH Requested Procedure ID
Warning - Attribute is not present in standard DICOM IOD - (0x0040,0x1008) LO Confidentiality Code
Warning - Attribute is not present in standard DICOM IOD - (0x6000,0x0015) IS Number of Frames in Overlay
Warning - Attribute is not present in standard DICOM IOD - (0x6000,0x0051) US Image Frame Origin
Warning - Dicom dataset contains attributes not present in standard DICOM IOD - this is a Standard Extended SOP Class

Any help would be appreciated! Feel also free to ask for any further details (or anything really).

I overshooted the forum’s character limit. The orthanc configuration will be in a reply below!

Here is the orthanc configuration file used:

Orthanc Configuration file

{
“Name” : “Orthanc inside Docker”,

“StorageDirectory” : “/var/lib/orthanc/db”,

“IndexDirectory” : “/var/lib/orthanc/db”,

“StorageCompression” : false,

“MaximumStorageSize” : 35000,

“MaximumPatientCount” : 0,

“MaximumStorageCacheSize” : 1000,

“LuaScripts” : [
],

“Plugins” : [
“/usr/share/orthanc/plugins”, “/usr/local/share/orthanc/plugins”
],

“ConcurrentJobs” : 1,

/**

  • Configuration of the HTTP server
    **/

“HttpServerEnabled” : true,

“OrthancExplorerEnabled” : true,

“HttpPort” : 8042,

“HttpDescribeErrors” : true,

“HttpCompressionEnabled” : false,

“WebDavEnabled” : true,

“WebDavDeleteAllowed” : false,

“WebDavUploadAllowed” : true,

/**

  • Configuration of the DICOM server
    **/

“DicomServerEnabled” : true,

“DicomAet” : “PDR_ORTHANC”,

“DicomCheckCalledAet” : false,

“DicomPort” : 104,

“DefaultEncoding” : “Latin1”,

“AcceptedTransferSyntaxes” : [ “1.2.840.10008.1.*” ],

// User-friendly groups of transfer syntaxes that can be enabled or
// disabled at once. These options are applied after the main
// “AcceptedTransferSyntaxes” option has been applied (if present).
/**
“DeflatedTransferSyntaxAccepted” : true,
“JpegTransferSyntaxAccepted” : true,
“Jpeg2000TransferSyntaxAccepted” : true,
“JpegLosslessTransferSyntaxAccepted” : true,
“JpipTransferSyntaxAccepted” : true,
“Mpeg2TransferSyntaxAccepted” : true,
“RleTransferSyntaxAccepted” : true,
“Mpeg4TransferSyntaxAccepted” : true, // New in Orthanc 1.6.0
“H265TransferSyntaxAccepted” : true, // New in Orthanc 1.9.0
**/

“UnknownSopClassAccepted” : true,

“DicomScpTimeout” : 180,

/**

  • Security-related options for the HTTP server
    **/

“RemoteAccessAllowed” : true,

“SslEnabled” : false,

“SslCertificate” : “certificate.pem”,

“SslMinimumProtocolVersion” : 4,

// Set the accepted ciphers for SSL connections. The ciphers must be
// provided as a list of strings. If not set, this will default to
// FIPS 140-2 ciphers. This option is only meaningful if
// “SslEnabled” is true. (new in Orthanc 1.8.2)
/**
“SslCiphersAccepted” : [ “AES128-GCM-SHA256” ],
**/

“SslVerifyPeers” : false,

“SslTrustedClientCertificates” : “trustedClientCertificates.pem”,

 "AuthenticationEnabled" : true,

// The list of the registered users. Because Orthanc uses HTTP
// Basic Authentication, the passwords are stored as plain text.
// —REMOVED—
“RegisteredUsers” : {
“orthanc” : “dicom”
},

/**

  • Security-related options for the DICOM connections (SCU/SCP)
    **/

// Whether DICOM TLS is enabled in the Orthanc SCP (new in Orthanc 1.9.0)
“DicomTlsEnabled” : false,

/**
“DicomTlsCertificate” : “orthanc.crt”,
/
)
/

“DicomTlsPrivateKey” : “orthanc.key”,
**/

/**
“DicomTlsTrustedCertificates” : “trusted.crt”,
**/

“DicomTlsRemoteCertificateRequired” : false,

“DicomAlwaysAllowEcho” : true,

“DicomAlwaysAllowStore” : true,

“DicomAlwaysAllowFind” : false,

“DicomAlwaysAllowFindWorklist” : false,

“DicomAlwaysAllowGet” : false,

“DicomAlwaysAllowMove” : true,

“DicomCheckModalityHost” : false,

/**

  • Network topology
    **/

“DicomModalities” : {
/**
* Uncommenting the following line would enable Orthanc to
* connect to an instance of the “storescp” open-source DICOM
* store (shipped in the DCMTK distribution), as started by the
* command line “storescp 2000”. The first parameter is the
* AET of the remote modality (cannot be longer than 16
* characters), the second one is the remote network address,
* and the third one is the TCP port number corresponding
* to the DICOM protocol on the remote modality (usually 104).
**/
// “sample” : [ “STORESCP”, “127.0.0.1”, 2000 ]

/**
 * A fourth parameter is available to enable patches for
 * specific PACS manufacturers. The allowed values are currently:
 * - "Generic" (default value),
 * - "GenericNoWildcardInDates" (to replace "*" by "" in date fields
 *   in outgoing C-FIND requests originating from Orthanc),
 * - "GenericNoUniversalWildcard" (to replace "*" by "" in all fields
 *   in outgoing C-FIND SCU requests originating from Orthanc),
 * - "Vitrea",
 * - "GE" (Enterprise Archive, MRI consoles and Advantage Workstation
 *   from GE Healthcare).
 *
 * This parameter is case-sensitive.
 **/
// ---REMOVED---

/**
 * By default, the Orthanc SCP accepts all DICOM commands (C-ECHO,
 * C-STORE, C-FIND, C-MOVE, C-GET and storage commitment) issued by the
 * registered remote SCU modalities. Starting with Orthanc 1.5.0,
 * it is possible to specify which DICOM commands are allowed,
 * separately for each remote modality, using the syntax
 * below.
 *
 * The "AllowEcho" (resp.  "AllowStore") option only has an effect
 * respectively if global option "DicomAlwaysAllowEcho"
 * (resp. "DicomAlwaysAllowStore") is set to "false".
 *
 * Starting with Orthanc 1.7.0, "AllowTranscoding" can be used to
 * disable the transcoding to uncompressed transfer syntaxes if
 * this remote modality doesn't support compressed transfer
 * syntaxes. This option currently applies to Orthanc C-GET SCP
 * and to Orthanc C-STORE SCU. This option only has an effect if
 * the global option "EnableTranscoding" is set to "true".
 *
 * By default, all "Allow*" options are true.
 * "AllowStorageCommitment" is actually an alias for
 * "AllowNAction" & "AllowEventReport".
 *
 * The "UseDicomTls" option specifies whether DICOM TLS should be
 * used when opening a SCU connection from Orthanc to this remote
 * modality. By default, DICOM TLS is not enabled.
 *
 * The "LocalAet" option allows one to overwrite the global
 * "DicomAet" configuration option in order to specify another AET
 * for Orthanc when initiating an SCU to this very specific
 * modality. Similarly, "Timeout" allows one to overwrite the
 * global value "DicomScuTimeout" on a per-modality basis.
 **/
//"untrusted" : {
//  "AET" : "ORTHANC",
//  "Port" : 104,
//  "Host" : "127.0.0.1",
//  "Manufacturer" : "Generic",
//  "AllowEcho" : false,
//  "AllowFind" : false,
//  "AllowFindWorklist" : false,       // new in 1.10.0
//  "AllowGet"  : false,
//  "AllowMove" : false,
//  "AllowStore" : true,
//  "AllowStorageCommitment" : false,  // new in 1.6.0
//  "AllowTranscoding" : true,         // new in 1.7.0
//  "UseDicomTls" : false              // new in 1.9.0
//  "LocalAet" : "HELLO"               // new in 1.9.0
//  "Timeout" : 60                     // new in 1.9.1
//}

},

“DicomModalitiesInDatabase” : false,

“DicomEchoChecksFind” : false,

“DicomScuTimeout” : 600,

“DicomScuPreferredTransferSyntax” : “1.2.840.10008.1.2.1”,

“DicomThreadsCount” : 6,

“OrthancPeers” : {
/**
* Each line gives the base URL of an Orthanc peer, possibly
* followed by the username/password pair (if the password
* protection is enabled on the peer).
**/
// “peer” : [ “http://127.0.0.1:8043/”, “alice”, “alicePassword” ]
// “peer2” : [ “http://127.0.0.1:8044/” ]

/**
 * This is another, more advanced format to define Orthanc
 * peers. It notably allows one to specify HTTP headers, a HTTPS
 * client certificate in the PEM format (as in the "--cert" option
 * of curl), or to enable PKCS#11 authentication for smart cards.
 *
 * The "Timeout" option allows one to overwrite the global value
 * "HttpTimeout" on a per-peer basis.
 **/
// "peer" : {
//   "Url" : "http://127.0.0.1:8043/",
//   "Username" : "alice",
//   "Password" : "alicePassword",
//   "HttpHeaders" : { "Token" : "Hello world" },
//   "CertificateFile" : "client.crt",
//   "CertificateKeyFile" : "client.key",
//   "CertificateKeyPassword" : "certpass",
//   "Pkcs11" : false,
//   "Timeout" : 42            // New in Orthanc 1.9.1
// }

},

“OrthancPeersInDatabase” : false,

“HttpProxy” : “”,

“HttpVerbose” : false,

// Set the timeout for HTTP requests issued by Orthanc (in seconds).
“HttpTimeout” : 60,

“HttpsVerifyPeers” : true,

“HttpsCACertificates” : “/etc/ssl/certs/ca-certificates.crt”,

/**

  • Advanced options
    **/

“UserMetadata” : {
// “Sample” : 1024
},

“UserContentType” : {
// “sample” : 1024
// “sample2” : [ 1025, “application/pdf” ]
},

“StableAge” : 30,

“StrictAetComparison” : false,

“StoreMD5ForAttachments” : true,

“LimitFindResults” : 0,

“LimitFindInstances” : 0,

“LogExportedResources” : false,

“KeepAlive” : true,

“TcpNoDelay” : true,

// Number of threads that are used by the embedded HTTP server.
“HttpThreadsCount” : 50,

“StoreDicom” : true,

“DicomAssociationCloseDelay” : 30,

“QueryRetrieveSize” : 100,

“CaseSensitivePN” : false,

// Configure PKCS#11 to use hardware security modules (HSM) and
// smart cards when carrying on HTTPS client authentication.
/**
“Pkcs11” : {
“Module” : “/usr/local/lib/libbeidpkcs11.so”,
“Module” : “C:/Windows/System32/beidpkcs11.dll”,
“Pin” : “1234”,
“Verbose” : true
}
**/

“LoadPrivateDictionary” : true,

“Dictionary” : {
// “0014,1020” : [ “DA”, “ValidationExpiryDate”, 1, 1 ]
// “00e1,c2” : [ “UI”, “PET-CT Multi Modality Name”, 1, 1, “ELSCINT1” ]
// “7053,03” : [ “ST”, “Original Image Filename”, 1, 1, “Philips PET Private Group” ]
// “2001,5f” : [ “SQ”, “StackSequence”, 1, 1, “Philips Imaging DD 001” ]
},

// Load a set of external DICOM dictionaries in order to replace the
// default dictionaries. This option must contain a set of files in
// the DCMTK format. The order of the dictionaries is
// important. This option can be used to turn Orthanc into a DICONDE
// server. (new in Orthanc 1.9.4)
/**
“ExternalDictionaries” : [
“/usr/share/libdcmtk12/dicom.dic”,
“/usr/share/libdcmtk12/diconde.dic”
]
**/

“SynchronousCMove” : true,

“JobsHistorySize” : 10,

“SaveJobs” : false,

“OverwriteInstances” : false,

“MediaArchiveSize” : 1,

“StorageAccessOnFind” : “Always”,

“MetricsEnabled” : true,

“ExecuteLuaEnabled” : false,

“HttpRequestTimeout” : 30,

“DefaultPrivateCreator” : “”,

“StorageCommitmentReportsSize” : 1000,

“TranscodeDicomProtocol” : true,

“BuiltinDecoderTranscoderOrder” : “After”,

/**
“IngestTranscoding” : “1.2.840.10008.1.2”,
**/

“IngestTranscodingOfUncompressed” : true,

“IngestTranscodingOfCompressed” : true,

“DicomLossyTranscodingQuality” : 90,

“SyncStorageArea” : true,

“MallocArenaMax” : 1,

“DeidentifyLogs” : true,

“DeidentifyLogsDicomVersion” : “2021b”,

“MaximumPduLength” : 16384,

/**
“DatabaseServerIdentifier” : “Orthanc1”,
**/

“CheckRevisions” : false,

“SynchronousZipStream” : true,

“ZipLoaderThreads”: 0,

/**
“ExtraMainDicomTags” : {
“Instance” : [
“Rows”,
“Columns”,
“ImageType”,
“SOPClassUID”,
“ContentDate”,
“ContentTime”,
“FrameOfReferenceUID”,
“PixelSpacing”,
“SpecificCharacterSet”,
“BitsAllocated”
],
“Series” : ,
“Study”: ,
“Patient”:
},
*/

“Warnings” : {
// A “RequestedTags” has been read from storage which is slower than
// reading it from DB.
// You might want to store this tag in ExtraMainDicomTags to build
// the response faster.
“W001_TagsBeingReadFromStorage”: true,

// Retrieving a list of Main dicom tags from a resource that has been
// saved with another "ExtraMainDicomTags" configuration which means that
// your response might be incomplete/inconsistent.
// You should call patients|studies|series|instances/../reconstruct to rebuild
// the DB.  TODO: also check for "rebuild DB" plugin
"W002_InconsistentDicomTagsInDb": true

}

}

It is found that Stone Viewer able to display the content properly.
But, as you said, preview tool is showing black image.
The content of this DICOM is coming from the Overlay Data tag (6000,3000).
Here is a screenshot from Stone Viewer:

Thank you Alvin for the fast answer!

So I understand that Orthanc preview tool cannot access Overlay data? Nevertheless, I will consider using the Stone Web Viewer.

Thank you!

Hello,

What do you call the “Orthanc preview tool”?

If you are referring to the route /instances/.../preview in the REST API of Orthanc, it renders the pixel data. But, overlays are not part of the pixel data.

Anyway, as indicated above, the Stone Web viewer renders the overlays.

Regards,
Sébastien-