DICOM Analytics and Archive
Derek Merck derek_merck@brown.edu
Brown University and Rhode Island Hospital
Winter 2018
Source: https://www.github.com/derekmerck/DIANA
Documentation: https://diana.readthedocs.io
Hospital picture archive and communications systems (PACS) are not well suited for “big data” analysis. It is difficult to identify and extract datasets in bulk, and moreover, high resolution data is often not even stored in the clinical systems.
DIANA is a DICOM imaging informatics platform that can be attached to the clinical systems with a very small footprint, and then tuned to support a range of tasks from high-resolution image archival to cohort discovery to radiation dose monitoring. It provides DICOM services, image data indexing, REST endpoints for scripting, and user access control through an amalgamation of free and free and open source (FOSS) systems.
From pypi:
pip3 install diana_plus
From source:
$ git clone https://www.github.com/derekmerck/DIANA
$ pip install -e DIANA/packages/guidmint DIANA/packages/diana
do-star(object, func, item)
)Can also be installed independently with pip3 install guidmint
cli contains command-line interface wrappers for common diana functions such as querying endpoints and saving images
diana-worker creates a diana+ celery worker (“diana*”)
get-a-guid is a REST API for guidmint
radcatr is a simple TKL UI for basic report review and annotation
study-manager is a simple, dynanmically configured DIANA front-end web portal for uploading and accessing available imaging resources from multiple trials and studiers. A reference implementation is at http://www.central-imaging.com.
splunk-apps are apps and dashboards for informatics and data review:
See tests
A simple DIANA stack requires two basic services:
Additional services can be added:
A set of distributed “star” apis shadow the vanilla api names for building workflows with the celery async manager. In this case, two additional services are required:
A basic stack can be configured with Ansible using Vagrant and the testbench_playbook.yml
inventory.
The cirr_playbook.yml
is used with a private inventory to setup the Lifespan CIRR.
The central_im_playbook.yml
is used to configure the Central Imaging archive.
Several roles for containerized services are available on Ansible-Galaxy for these playbooks.
derekmerck.diana-docker
derekmerck.nginx-docker
derekmerck.orthanc-docker
derekmerck.pureftpd-docker
derekmerck.redis-docker
derekmerck.snappass-docker
derekmerck.splunk-docker
reDiana is a docker-compose
file for setting up a Remote Embedded DIANA instance on a single-board computer, such as a Raspberry Pi. It is particularly designed to be controlled through the Resin.io IoT platform.
Several multi-architecture Docker images are available on Docker Hub for these roles and compositions.
derekmerck/orthanc
derekmerck/conda
and derekmerck/keras-tf
derekmerck/diana
and derekmerck/diana-learn
(includes Halibut)These containers are built for both amd64
and arm32v7
architectures on travis-ci as part of testing, so they are always available from docker hub.
(Planned) Extensions supporting high-throughput 3D microscopy data and image analytics and archive
md5 hashes for the apps
and packages
directories are published on the DIANA Hashes Gist as diana_hashes.json
.
A simple hash verification utility will compare local file hashes to the public hashes:
pip install git+https://github.com/derekmerck/check-hashes
python3 check-hashes.py verify 4b0bfbca0a415655d97f36489629e1cc diana_hashes apps/cli