SMI Services is a suite of tools designed to index DICOM image metadata and create de-identified extracts at scale. Communication between services is provided through RabbitMQ.
The following workflows are supported:
This repo currently provides 2 packages:
SmiServices
- The suite of services for loading metadata and de-identifying filesCTPAnonymiser
- A service which performs de-identification. A Java runtime is required to launch thisBinaries for each package are available from the Releases page. We support Linux as our primary platform for testing, however development is also supported on both Windows and MacOS.
After downloading the required packages, you must configure a RabbitMQ server and the databases. This is currently a self-guided activity, however we are working on automated setup of this in future. For now you can use the following resources:
All SmiServices tools are available through the smi
binary. Run ./smi --help
for a list of tools.
CTPAnonymiser
is available as an "all-in-one" jar file, which can be run with java -jar <jarfile>
Python is required in order to use the included convenience scripts for building and testing.
A .NET Core SDK matching the version specified here is required.
Visual Studio is not required, but recommended. A sln
file is provided which can be used to open all projects.
The ./bin/smi
directory contains useful build scripts. You can also build the entire solution manually with dotnet build
, or individual projects by changing into the appropriate directory, e.g.:
cd src/microservices/Microservices.DicomTagReader
dotnet build
Building the Java project requires:
>= 1.8
>= 3.6
The ./bin/ctp
directory contains useful build scripts. You must run ./bin/ctp/installLibs.py
first.
This repo uses pre-commit to manage and automatically run a series of linters and code formatters. After cloning the repo and changing into the directory, run this once to setup pre-commit.
pip install --upgrade --user pre-commit
pre-commit install
Running pre-commit locally is recommended but optional. To remove the hooks from your repo, simply run:
pre-commit uninstall