DCM4CHEE 2.17.1 Installation Instructions
Version 2.17.1 is the latest version of the archive. It is recommended that you install this version and not an older version because of improvements and bug fixes.
You will find similar (but not as detailed) installation documentation in the
doc directory of your dcm4chee distribution.
Minimum System Requirements
JDK 5 or higher
512 MB RAM
200 MB hard disk space (additional to archive storage disk space)
400 MHz CPU
Need to install separately.
SQL Server 2000+
Hypersonic SQL (Embedded in JBoss AS) - not suitable for production use!
For image compression/decompression, dcm4chee utilizes Sun's Java Advanced Imaging Image I/O Tools 1.1.
- The binary distribution packages of dcm4chee already includes necessary JARs and native libraries for Windows and Linux i586.
- For Linux-amd64, and Solaris, you have to download the SW package from Sun here yourself and replace the Linux version of libclib_jiio.so in dcm4chee-2.17.1-xxx/bin/native from the JAI Image IO package for Linux-amd64 or Solaris. Or see this post for a more recent version.
- If you have already installed (or are installing) the JAI Image IO distribution from http://download.java.net/media/jai-imageio/builds/release/1.1/ separate from dcm4chee in a standalone or classpath fashion, you should remove the following files, or potentially suffer from version conflicts:
- For Mac OSX and 64 bit Java on Windows there is no free, native Image I/O implementation available. Because of the missing implementations you have to change a file in dcm4chee if you want to have the WADO service running. Please have a look at step 8 to see how to change the file (or modify the settings via the JMX console). See also:
- FYI - You can run on 64-bit Windows, you just need to use the 32-bit JDK! In that case you do not need to do the above steps of changing the WADO service.
Additional notes from Nicolas Roduit:
I want to clarify the big misunderstanding about the Java imageio library included in dcm4chee and Weasis. I understand that the compression issue with imageio is confusing.
The imageio lib is used for reading and writing the different image formats (image compression). It contains a pure java part (jai_imageio.jar) and a native part (set in $DCM4CHEE_HOME/bin/native/). The native part only exist for the following operating systems:
- Windows 32-bit
- Linux x86 32 and 64-bit
- Solaris (all processors)
Thanks to Sun and Oracle for this limitation, but that's not all, some encoders and decoders are exclusively available in the native part. That means NOT available in the pure java part. Here are these TSUIDs:
- 1.2.840.10008.1.2.4.51 JPEG Extended (Process 2 & 4): Default Transfer Syntax for Lossy JPEG 12 Bit Image Compression (Process 4 only)
- 1.2.840.10008.1.2.4.57 JPEG Lossless, Non-Hierarchical (Process 14)
- 1.2.840.10008.1.2.4.70 JPEG Lossless, Non-Hierarchical, First-Order Prediction (Process 14 Selection Value 1): Default Transfer Syntax for Lossless JPEG Image Compression
- 1.2.840.10008.1.2.4.80 JPEG-LS Lossless Image Compression
- 1.2.840.10008.1.2.4.81 JPEG-LS Lossy (Near-Lossless) Image Compression
And some codecs exist in the pure Java library but have a different implementation in the native library (the native implementation is used by default when available):
- 1.2.840.10008.1.2.4.50 JPEG Baseline (Process 1): Default Transfer Syntax for Lossy JPEG 8 Bit Image Compression
- 1.2.840.10008.1.2.4.90 JPEG 2000 Image Compression (Lossless Only)
- 1.2.840.10008.1.2.4.91 JPEG 2000 Image Compression
That's why it is recommended to install dcm4chee on Linux, Solaris or Windows (also with windows 64-bit but only with a 32-bit Java Runtime). Otherwise, the dcm4chee services won't be able to compress or uncompress some DICOM files. One of the mandatory requirement (WADO spec) of a WADO service is to uncompress any DICOM file. The latter requirement cannot be totally fulfilled if you install dcm4chee on OS X.
We provide on the Osirix website this document which recommends to install dcm4chee on Linux and to use the jpeg2000 compression (if you want to compress all the images stored in dcm4chee).
In the table of Platform Compatibility of DICOM Transfer Syntax you can see the compatibility related to the list above. This compatibility is true ONLY when Weasis loads files from a local storage (not WADO). When downloading images with the WADO service of dcm4chee that contain native imageio library, ALL the images can be read on ALL operating systems, because Weasis (in recent version) is able to request the WADO server for an uncompressed syntax (see WEA-73) when the syntax is not supported by the operating system running Weasis.
1. Download and extract the binary distribution package of dcm4chee:
Download the latest version of dcm4chee that is relevant to the database of your choice from the dcm4che Sourceforge site . Extract the package (e.g. dcm4chee-2.17.1-psql.zip for the PostgreSQL version). When extracting, avoid using a directory that has a name that contains spaces in order to avoid issues with running command line applications with spaces in the path name.
2. Download the binary distribution package of JBoss Application Server 4.2.3.GA:
Download the binary distribution of JBoss 4.2.3.GA from their website and extract it into a different directory.
Use neither JBoss 5 nor JBoss 6, because it is completely re-architected and is significantly different than the 4.2 line of JBoss!
If you want to use JDK 5, don't download JBoss for JDK 6 (jboss-4.2.3.GA-jdk6.zip) - use jboss-4.2.3.GA.zip!
dcm4chee requires Java Development Kit (JDK) and not just the Java Runtime Environment (JRE).
3. Copy files from JBoss to dcm4chee:
Dcm4chee consists of components that run within the JBoss application server platform. This step will copy the JBoss runtime files to the dcm4chee directory.
Go to the dcm4chee-2.17.1-xxx/bin directory and execute the install_jboss.bat or install_jboss.sh script, as appropriate for your operating system, with the path of your JBoss AS installation directory as a parameter.
4. Install the Database Software and create the DCM4CHEE Database:
If you do not already have database software running, install it now. Please follow the vendor's installation instructions to do so. Some operating systems already come with database software installed (e.g. Mac OSX and MySQL). Even in those cases though, it is helpful for you to review the database vendor's documentation. After all, the database is an extremely important part of the dcm4chee solution.
See below for links to database-specific installation notes:
5. Deploy the Audit Record Repository (ARR)
Starting with dcm4chee-2.12.0, the binary distribution package of the archive application does NOT include the dcm4chee Audit Record Repository (ARR) anymore. The ARR maintains an audit log of all transactions within the archive. This is necessary for HIPAA and IHE. Some dcm4chee deployment scenarios call for the deployment of the ARR in a standalone fashion because it acts as an ARR for more than one dcm4chee instance, or multiple applications which can take advantage of an external ARR. Commonly though it is deployed within the dcm4chee archive itself. If you are not running the ARR in a standalone fashion, you must do the following:
- Download the dcm4chee Audit Record Repository 3.0.11 (dcm4chee-arr-3.0.11) available at
http://sourceforge.net/projects/dcm4che/files/dcm4chee-arr/3.0.11/. Be sure to download the distribution package of dcm4chee-arr-3.0.11 for the database of your choice (likely the same database that you are using for the archive, but it could differ if you wish to store audit records in a completely different database).
- Go to the dcm4chee-2.17.1-xxx/bin directory and execute the install_arr.bat or install_arr.sh script, as appropriate for your operating system, with the path of the dcm4chee-arr-3.0.11 installation directory as
- Because of the growth factor of the audit database, it is recommended to store the records in it's own database. Create the audit record repository database instance: arrdb, and grant sufficient privileges to the DB user (see the datasource descriptor deploy/arr-xxx-ds.xml for user information, typically arr with pw of arr). Also see above links to DB-specific pages for tips.
6. Set environment variable JAVA_HOME to JDK location.
The dcm4chee startup/shutdown scripts depend on the
JAVA_HOME environment variable in order to find the Java executables and libraries. For example, if your JDK is installed at "C:\Program Files\Java\jdk1.5.0_22" then that is the path to JAVA_HOME
If you're not sure what an environment variable is, check with your IT staff or review this wikipedia page and/or consult the documentation for your operating system.
7. Optional: Adjust maximum allocation of heap memory:
Java programs run with a finite amount of memory allocated to them. If you anticipate high volumes of storage and retrievals, or very large datasets, you may want to increase the max (-Xmx) heap size of the Java process.
For example, in Windows see the file dcm4chee-2.17.1-xxx/bin/run.bat:
according available RAM and memory requirements of other processes on this node.
E.g.: if only 512 MB RAM are available, you should decrease the default value -Xmx512m to (e.g.) -Xmx300.
8. Mac OSX and Windows x64 specific changes for the WADO service:
Because there are no native codecs (compression/decompression) for these platforms, it is necessary to edit configuration to disable the loading of the native codecs. These platforms are not able to take advantage of compression/decompression. The only default loading of the codecs is in the WADO service. You can either edit the property within the JMX Console web user interface (see step 11), or edit the configuration files directly:
Change com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageWriter to
com.sun.image.codec.jpeg.JPEGImageEncoder for the
9. Test the installation:
To test your installation, go to the dcm4chee-2.17.1-xxx/bin directory and execute the run.bat or run.sh script, as appropriate for your operating system. Your output should look like the following and contain no error or exception messages:
10. Login into web interface:
Connect to the Web Interface at http://localhost:8080/dcm4chee-web3/ of the archive using any Web Browser (most tested are Mozilla-Firefox and Microsoft Internet Explorer v6.x). You should get the User Login Screen. Login in using default Administrator account 'admin', with password 'admin'.
11. Login to JMX Console:
Connect to JBoss's JMX Console at http://localhost:8080/jmx-console/ and login using also the Administrator account 'admin', with password 'admin'.
Follow the link "group=ONLINE_STORAGE,service=FileSystemMgt" to the configuration page for File System Management service under the "dcm4chee.archive" heading.
Invoke the operation addRWFileSystem(), with argument dirPath specifying the directory, where the archive shall store received objects/images.
If no Storage File System is configured, the archive will auto-configure dcm4chee-2.17.1-xxx/server/default/archive as Storage File System, when receiving the first object/image.
12. Optional: Change the default AE Title
Connect to JBoss's JMX Console at http://localhost:8080/jmx-console/ and login using also the Administrator account 'admin', with password 'admin'.
Follow the link "service=AE" to the configuration page for AE (Application Entity - a DICOM term for a DICOM node on the network) service under the "dcm4chee.archive" heading.
Invoke the operation updateAETitle with the old AE Title (DCM4CHEE if unchanged from the default), and new AE Title as parameters.
This will update the following configurations:
- update the retrieve AET of file systems, associated to the current retrieve AET of this node
- update retrieveAETs of all instances, series and studies that have files on these filesystems
- update the entry for the retrieve AE in the AE Configuration
- update the AE Title of all services listed by attribute OtherServiceAETitleAttributesToUpdate
13. Optional: Configure image compression:
As noted above, this is not applicable for Mac OSX or 64 bit Windows.
At default configuration, received images are stored as received - in particular, no compression is performed. Lossless compression of received uncompressed images can be activated by attribute "CompressionRules" in the configuration page for the Storage SCP Service (service=StoreScp). E.g. set it to "JLSL", to compress all type of images received from any Storage SCU using JPEG-LS Lossless codec.
14. Optional: Modify web image cache directories:
The directories used for caching generated JPEG representations of archived images requested by Web Access to DICOM Persistent Objects (WADO) can be specified by attributes "CacheDataRootDirectory" and "CacheJournalRootDirectory" in the configuration page for the WADO Service (service=WADOService).
Defaults: dcm4chee-2.17.1-xxx/server/default/wadocachedata and dcm4chee-2.17.1-xxx/server/default/wadocachejournal.
The directory used for caching generated PDF representations of archived Structured Report Documents requested by IHE Retrieve Information for Display (RID) Services can be specified by modifying BASE_DIR=docstore/rid/store in file conf/dcm4chee-docstore/dcm4chee-docstore-cfg.xml (this file will not exists before processing the first RID request).
15. Optional: Allow remote access:
Not necessary with versions 2.13.6 and newer!
By default, JBoss does not bind to anything except the local address. Use
run -b 0.0.0.0
to allow running generic access.
16. Test DICOM storage:
Send some object/images to the archive's Storage SCP, e.g. by using the send utility of the dcm4che 2.x (dicom toolkit) core package available at Sourceforge here. E.g:
Refresh the Web Interface (http://localhost:8080/dcm4chee-web3/), which shall now show the the list of received studies. You may need to click the 'binocular' icon to initiate a search.
Expand one study row to show contained series. Expand one of these series to show contained instances. In the case of images, you can follow the image icon on the right, to invoke a http WADO request for a JPEG presentation of this image, which will be displayed in a separate browser window.
17. Test object retrieval:
To test object retrieval, you need an external Storage SCP acting as Move Destination, e.g. by using the receiver utility of the dcm4che 2.x DICOM toolkit:
You also need to configure an additional Application Entity Title identifying this Move Destination. Do so in the "AE Management" tab within the Web user interface.
E.g. new AET
AE Title: DCMRCV
Switch back to the Study List ("Folder"), mark studies to retrieve using the check box on the right, select "DCMRCV" as send destination in the combo box above and click on the send button left from it.
18. Install as a service:
If running as a service or daemon on any operating system, you should disable CONSOLE logging as noted here:http://forums.dcm4che.org/jiveforums/thread.jspa?messageID=4787ኳ
After verifying that the archive works, you may want to run it as a service so that it stays running even when you log out. If still running in the console window, you may stop the archive by Ctrl+C, and
- install it as Windows service executing install_service.bat (see Running dcm4chee PACS as a Windows service or daemon)
- aditional notes:
- to adjust maximum allocation of heap memory - you need to edit install_service.bat (not run.bat)
- for 64-bit Windows download JavaService version 18.104.22.168 from http://javaservice.objectweb.org and replace file bin/JavaService.exe
- if your service fails while starting ("Service could not be started") and you are using JDK 6:
- check your your Windows Event Log - if there are messages like "The specified module could not be found.", "Failed creating java ...\jvm.dll" - continue with next step
- try to add
%JAVA_HOME%\binto the system PATH environment variable, so java could find file
mscvr71.dll(for details see https://issues.apache.org/bugzilla/show_bug.cgi?id=41538 and http://www.duckware.com/tech/java6msvcr71.html)
- many versions of Windows need to be restarted after modifying environment variables (like JAVA_HOME and PATH)
Redhat and Ubuntu Linux:
- copy the init script dcm4chee_init_redhat.sh to /etc/init.d/ and adjust it according your installation location of the archive and the JDK and under which user the archive application shall run.
- See this forum post (and others) for suggestions and startup item/plist scripts: http://forums.dcm4che.org/jiveforums/thread.jspa?threadID=593&tstart=0