Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

DCM4CHEE 2.

...

17.

...

1 Installation Instructions

Version 2.1317.6 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.

...

PostgreSQL 8.1+
MySQL 4.1+
Oracle 9i/10g+
SQL Server 2000+
DB2 8.1+
Firebird 2.1+
Hypersonic SQL (Embedded in JBoss AS) - not suitable for production use!

Security Notes

See how to limit the server access.

Compression Notes

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 here is the latest Linux binaries (download it and rename to libclib_jiio.so) and replace the old libclib_jiio.so in dcm4chee-xxx-2.13.x//bin/native from the JAI Image IO package for Linux-amd64 or Solaris.
  • If you have already installed (or are installing) the JAI Image IO distribution from httpshttp://jai-imageio.devdownload.java.net/media/binaryjai-imageio/builds.html/release/1.1/ separate from dcm4chee in a standalone or classpath fashion, you should remove the following files, or potentially suffer from version conflicts:
    • $DCM4CHEE_HOME/server/default/lib/jai_imageio.jar
    • $DCM4CHEE_HOME/server/default/lib/clibwrapper_jiio.jar
    • $DCM4CHEE_HOME/bin/native/clib_jiio.dll
    • $DCM4CHEE_HOME/bin/native/clib_jiio_sse2.dll
    • $DCM4CHEE_HOME/bin/native/clib_jiio_util.dll
    • $DCM4CHEE_HOME/bin/native/libclib_jiio.so
  • 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 2 files a file in dcm4chee if you want to have RID and the WADO service running. Please have a look at step 8 to see how to change the files file (or modify the settings via the JMX console). See also:

Installation Procedure:

1. Extract the binary distribution package of dcm4chee:

Use the database of your choice. Avoid using a directory that has a name that contains spaces as installation directory.

2. Download the binary distribution package of JBoss Application Server 4.2.2.GA:

Download the binary distribution of JBoss 4.2.2 from their website and extract it into a different directory.

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.

Move to the dcm4chee-xxx-2.13.6/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.

For example:

No Format

C:\apps\dcm4chee-psql-2.13.6\bin>install_jboss.bat c:\apps\jboss-4.2.2.GA

4. Install the Database Software:

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

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:

  1. Download the dcm4chee Audit Record Repository 3.0.5 (dcm4chee-arr-3.0.5) available at http://sourceforge.net/projects/dcm4che. Be sure to download the distribution package of dcm4chee-arr-3.0.5
    for the database of your choice. - It may differ from the database used for dcm4chee archive if you wish.
  2. Move to the dcm4chee-xxx-2.13.5/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.5 installation directory as
    parameter.
    1. If the Audit Record Repository shall use a different database instance than the archive to store received Audit Records, create the audit record repository database instance: arrdb, and grant sufficient privileges to the DB user, configured in the datasource descriptor arr-xxx-ds.xml. Optionally, you may also initialize the database using create DDL script dcm4chee-arr-xxx-3.0.5/sql/dcm4chee-arr-xxx.ddl. Otherwise, the database will be initialized automatically at first startup of the application.
    2. If the Audit Record Repository shall share the database instance already used by the archive, you have to modify database name - but NOT the JNDI name! -, user and password in the datasource descriptor arr-xxx-ds.xml, to match with the values specified in the datasource descriptor pacs-xxx-ds.xml for the
      archive database. Optionally, you may update the database with dcm4chee-arr specific tables using modified create DDL script dcm4chee-arr-xxx-3.0.5/sql/dcm4chee-arr-xxx.ddl: you have to remove or comment out the creation of already exisiting 'code' table. But missing tables will be also initialized automatically at first startup of the application.

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.

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-xxx-2.13.x/bin/run.bat:

No Format

rem Sun JVM memory allocation pool parameters. Modify as appropriate.
set JAVA_OPTS=%JAVA_OPTS% \-Xms128m \-Xmx512m

Linux/Unix/OSX: dcm4chee-xxx-2.12.x/bin/run.conf

No Format

# Specify options to pass to the Java VM.
if \[ "x$JAVA_OPTS" = "x" \]; then
JAVA_OPTS="-Xms128m \-Xmx512m ..
fi

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 RID/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 and RID services. You can either edit the properties 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 ImageWriterClass:

...

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

About dcm4chee
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).

About Weasis
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.

Installation Procedure:

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.

For example:

No Format
C:\apps\dcm4chee-2.17.1-psql\bin>install_jboss.bat c:\apps\jboss-4.2.3.GA

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:

  1. 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).
  2. 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
    parameter.
    • 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:

No Format
rem Sun JVM memory allocation pool parameters. Modify as appropriate.
set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx512m -XX:MaxPermSize=128m

Linux/Unix/OSX: dcm4chee-2.17.1-xxx/bin/run.conf

No Format
# Specify options to pass to the Java VM.
if [ "x$JAVA_OPTS" = "x" ]; then
JAVA_OPTS="-Xms128m -Xmx512m -XX:MaxPermSize=128m ..
fi

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

...

and

...

for the ImageWriterClass:

No Format
$DCM4CHEE_HOME/server/default/conf/xmdesc/dcm4chee-wado-xmbean.xml:
@@ -128,7 +128122,7 @@
        +122,7 @@
<name>ImageWriterClass</name>
 
     <type>java.lang.String</type>
    
  <descriptors>
-         <value value="com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageWriter" />
+         <value value="com.sun.image.codec.jpeg.JPEGImageEncoder" />
       </descriptors>
    </attribute>

9. Test the installation:

To test your installation, move go to the dcm4chee-xxx-2.1317.61-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:

No Format

=========================================================================



JBoss Bootstrap Environment



JBOSS_HOME: /home/gunter/dcm4chee-psql-2.1317.61-psql

  JAVA: /usr/lib/j2sdk1.5-sun/bin/java

  JAVA_OPTS: -Dprogram.name=run.sh -server -Xms128m -Xmx512m

  -Dsun.rmi.dgc.client.gcInterval=3600000
  
-Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.awt.headless=true
  
-Dapp.name=dcm4chee -Djava.net.preferIPv4Stack=true
 
 -Djava.library.path=/home/gunter/dcm4chee-psql-2.1317.61-psql/bin/native



CLASSPATH: /home/gunter/dcm4chee-psql-2.1317.61-psql/bin/run.jar:
   /usr/lib/j2sdk1.5-sun/lib/tools.jar

=========================================================================

23:17:52,373 INFO  [Server] Starting JBoss (MX MicroKernel)...
23:17:52,374 INFO  [Server] Release ID: JBoss [Trinity] 4.2.23.GA (build:

SVNTag=JBoss_4_2_23_GA date=200710221139200807181439)
:
23:19:49,580 INFO  [AjpProtocol] Starting Coyote AJP/1.3 on ajp-127.0.0.1-8009
23:19:49,632 INFO  [Server] JBoss (MX MicroKernel) [4.2.23.GA (build:

SVNTag=JBoss_4_2_23_GA date=200710221139200807181439)] Started in 1m:57s:103ms

...

Connect to the Web Interface at http://localhost:8080/dcm4chee-webweb3/ 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'.

...

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 "the link "group=ONLINE_STORAGE,service=FileSystemMgt" to the configuration page for File System Management service under the "dcm4chee.archive" heading.
Invoke the operation addOnlineFileSystemaddRWFileSystem(), 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-xxx-2.1217.x1-xxx/server/default/archive as Storage File System, when receiving the first object/image.

...

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=FileSystemMgtAE" to the configuration page for File System Management AE (Application Entity - a DICOM term for a DICOM node on the network) service under the "dcm4chee.archive" heading.
Invoke the operation updateRetrieveAETitle updateAETitle with the old AE Title (DCM4CHEE if unchanged from the default), and new AE Title as parameterparameters.
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 all service attributes the AE Title of all services listed by attribute OtherServiceAETitleAttributesToUpdate

...

14. Optional: Modify web image cache directories:

The directory directories used for caching generated JPEG representations of archived images requested by Web Access to DICOM Persistent Objects (WADO) can be specified by attribute "CacheRootattributes "CacheDataRootDirectory" and "CacheJournalRootDirectory" in the configuration page for the WADO Service (service=WADOService).
Default Defaults: dcm4chee-2.17.1-xxx/server/default/wadocachedata and dcm4chee-2.1217.x1-xxx/server/default/wadocachewadocachejournal.

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 attribute "CacheRoot" in the configuration page for the RID Service (service=RIDService).
Default: dcm4chee-xxx-2.12.x/server/default/ihe_rid_cache.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 version 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.

...

Send some object/images to the archive's Storage SCP, e.g. by using the send utility of the dcm4che 2.0 x (dicom toolkit) core package available at Sourceforge here. E.g:

No Format

> dcm4che-2.0.1423/bin/dcmsnd DCM4CHEE@localhost:11112 ~/mesa/storage/modality/MR

Refresh the Web Interface (http://localhost:8080/dcm4chee-webweb3/), 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.

...

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.0 x DICOM toolkit:

No Format

> dcm4che-2.0.1423/bin/dcmrcv 11113
13:55:14,782 INFO   - Start listening on 0.0.0.0/0.0.0.0:11113
Start Server listening on port 11113

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
Hostname: localhost
Port: 11113

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:

...

 11113

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
Hostname: localhost
Port: 11113

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:

Tip
title

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&#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 in the console you have started itC, and

Windows:
  • install it as Windows service executing install_service.bat

...

or

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.

or

Mac OSX

See this forum post (and others) for suggestions and startup item/plist scripts: http://forums.dcm4che.org/jiveforums/thread.jspa?threadID=593&tstart=0

Migrate Audit Records received by DCM4CHEE Audit Record Repository 2.x to 3.x:

Audit Records received by dcm4chee-arr-2.x and stored in database table 'audit_record_old' can be migrated to dcm4chee-arr-3.x by re-emission to the new Audit Record Repository by service 'MigrateOldARR':

1. Connect to JBoss's JMX Console

at http://localhost:8080/jmx-console/ and login using the Administrator account 'admin', with password 'admin'.
Follow the link "service=MigrateOldARR" under the "dcm4chee.archive" heading.

Invoke the operation emitAuditRecords(), with argument num=1, to test the
migration on the first Audit Record in table audit_record_old.

Check in the Audit Record Repository Web Application (http://localhost:8080/dcm4chee-arr) if the record is now stored by dcm4chee-arr-3.x.

2. Determine the number of Audit Records to migrate by (e.g.) executing

SELECT count ( * ) FROM audit_record_old

using any SQL client of your database.
Estimate the migration time for all Audit Records by configured

EmissionInterval x count.

If the estimated time exeeds several hours, you may consider - to split the migration in chunks of records, and/or - decrease the configured EmissionInterval from default 100 ms (but which will increase the load for the Database during the task is running)

3. Invoke the operation emitAuditRecords():

...

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.
Mac OSX