DicomKit.Cli
1.0.0
dotnet tool install --global DicomKit.Cli --version 1.0.0
dotnet new tool-manifest
dotnet tool install --local DicomKit.Cli --version 1.0.0
#tool dotnet:?package=DicomKit.Cli&version=1.0.0
nuke :add-package DicomKit.Cli --version 1.0.0
dicomkit
Free command-line tool built on the DicomKit DICOM toolkit for .NET: C-ECHO, C-STORE, C-FIND, C-MOVE, Modality Worklist, anonymization and file dumps from one command.
dotnet tool install -g DicomKit.Cli
dicomkit --help
Runs on .NET 8 or later.
License key
The tool itself is free. The DicomKit toolkit it runs on needs a license key, and a free Developer key (development and testing) is enough: get one at https://dicomkit.plogic.dev/DeveloperKey.
Pass the key on any command with --license-key KEY, or set it once in the DICOMKIT_LICENSE_KEY environment
variable. A short key (PLGIC-...) is activated online the first time it is used; a signed license (PLGIC1....)
works offline. Without a key every command stops with one line pointing to the Developer key page and exit code 10.
Production use needs a Pro or Enterprise plan: https://dicomkit.plogic.dev/Pricing.
export DICOMKIT_LICENSE_KEY=PLGIC-COM-XXXXX-XXXXX-XXXXX-XXXXX # bash
$env:DICOMKIT_LICENSE_KEY = "PLGIC-COM-XXXXX-XXXXX-XXXXX-XXXXX" # PowerShell
Commands
| Command | What it does |
|---|---|
echo <host> <port> |
C-ECHO ("DICOM ping"), prints the round-trip time |
store <host> <port> <file-or-folder>... |
C-STORE files and folders over one association (--recursive for sub-folders) |
find <host> <port> --level patient\|study\|series\|image |
C-FIND, Study Root (Patient Root for patient), table or --json |
move <host> <port> --dest AE --study-uid UID |
C-MOVE a study (or --series-uid) to another AE, with progress |
worklist <host> <port> |
Modality Worklist query (--date, --modality, --station-ae) |
anonymize <input> <output-folder> |
De-identify files, with a reusable salt (--salt-file) |
dump <file> |
Print every element and any parse issues |
Network commands take --called AE (the SCP's AE title, default ANY_SCP), --calling AE (ours, default
DICOMKIT_SCU) and --timeout SECONDS. dicomkit <command> --help lists every option.
Examples
$ dicomkit echo pacs.example.org 104 --called PACS
C-ECHO pacs.example.org:104 (DICOMKIT_SCU -> PACS): Success (0x0000), round trip 1.4 ms (association 12.0 ms, total 14.1 ms)
$ dicomkit store pacs.example.org 104 ./study --recursive --called PACS
0x0000 ./study/IM0001.dcm
0x0000 ./study/IM0002.dcm
skip ./study/notes.txt (not a DICOM instance)
Stored 2 of 2 in 0.1 s: 0 failed, 0 not sent, 1 skipped.
$ dicomkit find pacs.example.org 104 --called PACS --patient-name "DOE^*" --study-date 20260101-20261231
StudyDate PatientID PatientName Accession Modalities Description Series Images StudyInstanceUID
--------- --------- ----------- --------- ---------- ----------- ------ ------ ----------------
20260110 P1 DOE^JOHN ACC-P1 CT HEAD 1 2 1.2.826.0.1.3680043.2.1
1 match (STUDY level).
$ dicomkit find pacs.example.org 104 --called PACS --level series --study-uid 1.2.826.0.1.3680043.2.1 --json
$ dicomkit move pacs.example.org 104 --called PACS --dest WORKSTATION --study-uid 1.2.826.0.1.3680043.2.1
C-MOVE study 1.2.826.0.1.3680043.2.1 -> WORKSTATION
pending 0xFF00 remaining 1, completed 1, failed 0, warning 0
Success 0x0000 remaining 0, completed 2, failed 0, warning 0 in 0.3 s
$ dicomkit worklist ris.example.org 105 --called RIS --date today --modality CT
$ dicomkit anonymize ./study ./study-anon --salt-file ~/secrets/project.salt --recursive
$ dicomkit dump ./study/IM0001.dcm
The salt file used by anonymize is a secret: anyone holding it can test whether a known patient ID or UID maps to
a pseudonym. Reuse the same salt file to keep pseudonyms and new UIDs consistent across runs, and keep it out of the
folder you hand to others.
Exit codes
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | The operation failed (connection refused, association rejected, failure status, a file not stored) |
| 2 | Bad command line |
| 3 | dump: the file has parse errors |
| 10 | No valid license key |
| 130 | Cancelled with Ctrl+C (queries and moves are cancelled with C-CANCEL, other operations abort the association) |
Disclaimer
Copyright (c) 2026 PrologicSign Technology. Use is governed by the DicomKit License Agreement (LICENSE.txt in the package). Not a medical device: not certified for diagnostic or clinical use.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 117 | 10/27/2026 |