SMI / SmiServices

Scale-able loading, linking and anonymisation of DICOM images for healthcare research environments (e.g. Safe Havens)
GNU General Public License v3.0
21 stars 5 forks source link

main CodeQL codecov GitHub

SMI Services

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:

Packages

This repo currently provides 2 packages:

Binaries 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.

Usage

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>

Developing

Python is required in order to use the included convenience scripts for building and testing.

SmiServices (C#)

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

CTPAnonymiser (Java)

Building the Java project requires:

The ./bin/ctp directory contains useful build scripts. You must run ./bin/ctp/installLibs.py first.

pre-commit

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