diana-cli¶
diana-cli
provides a command-line interface to DIANA endpoints.
Parameter Types¶
- MAPPING parameters may be json or yaml format strings, or an
@/file.yaml
path to a json or yaml formatted file. - ARRAY parameters may be json or yaml format strings, or an
@/file.txt
path to a newline separated list of items. - ENDPOINT parameters must either exist in the services description, or
be a prefixed shortcut such as
path:/data/my_dir
, which would create a DcmDir withbasepath=/data/my_dir
.
Usage¶
Usage: diana-cli [OPTIONS] COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]...
Run DIANA packages using a command-line interface.
$ python3 -m diana.cli.cli --version
diana-cli, version 2.1.x
$ pip3 install python-diana
$ diana-cli --version
diana-cli, version 2.1.x
Also supports chained operations on dixels. For example, to read a
directory and put all instances in a local orthanc:
$ diana-cli dgetall path:/data/dcm oput orthanc:
Options:
--version Show the version and exit.
-v, --verbose
-s, --services MAPPING Services dict as yaml/json format string or
@file.yaml
--sessions / --no-sessions
--help Show this message and exit.
Commands:
check Check endpoint status
delete Delete items in endpoint
dgetall Get all instances from DcmDir for chaining
do Call endpoint method
fdump Convert and save chained DICOM image data in png format
findex Index items by accession number
findex-get Put indexed files in a destination node by accession number $...
get Get items from endpoint for chaining
guid Generate a GUID
ls List all services and health
mfind Find items in Montage by query for chaining
mock Generate mock DICOM traffic
ofind Find item in Orthanc by query for chaining
oget Get studies from Orthanc.
ogetm Get study-level item metadata from Orthanc
oput Put chained instances in Orthanc
oputm Set study-level item metadata in Orthanc
print Print chained items to stdout
put Put chained items in endpoint
setmeta Set metadata kvs for chained items
verify Verify DIANA source code against public gist signature
wsend Send items via Messenger endpoint
SERVICES is a required platform endpoint description in json/yaml format.
---
orthanc:
ctype: Orthanc
port: 8042
host: my_orthanc
redis:
ctype: Redis
...
check¶
Usage: diana-cli check [OPTIONS] ENDPOINT
Check endpoint status
$ crud-cli check redis
Options:
--help Show this message and exit.
delete¶
Usage: diana-cli delete [OPTIONS] SOURCE [ITEMS]
Remove items from endpoint
Options:
--help Show this message and exit.
dgetall¶
Usage: diana-cli dgetall [OPTIONS] SOURCE
Get all instances from DcmDir for chaining
Options:
-b, --binary Get binary file as well as data
--help Show this message and exit.
do¶
Usage: diana-cli do [OPTIONS] ENDPOINT METHOD
Call an arbitrary endpoint method with *args, *mapargs, and **kwargs
$ crud-cli do redis check
$ crud-cli do redis find -m '{"data":"test"}'
$ crud-cli do redis get -g my_key print
$ crud-cli do orthanc get xxxx-xxxx... -k '{"level":"series"}'
Options:
-g, --args ARRAY Arguments as comma or newline separated or @file.txt
format
-m, --mapargs MAPPING Mapping-type arguments as json or @file.yaml format
-k, --kwargs MAPPING Keyword arguments as json or @file.yaml format
--help Show this message and exit.
fdump¶
Usage: diana-cli fdump [OPTIONS] [[png]] [OUTPATH]
Convert and save chained DICOM image data in png format
/b $ diana-cli get path:/data/dcm IM0001.dcm fdump $ ls IM0001.png
Options:
--help Show this message and exit.
findex¶
Usage: diana-cli findex [OPTIONS] INDEX
Index chained files by accession number
$ diana-cli findex path:/data redis:
Options:
--help Show this message and exit.
findex-get¶
Usage: diana-cli findex-get [OPTIONS] SOURCE INDEX COLLECTION_IDS
Put indexed files in a destination node by accession number
$ diana-cli findex-get path:/data redis: all print
$ diana-cli findex-get -b path:/data redis: CT3456789 oput orthanc:
Options:
-b, --binary Get binary file as well as data
--help Show this message and exit.
get¶
Usage: diana-cli get [OPTIONS] SOURCE ITEMS
Get items from endpoint for chaining
Options:
-k, --kwargs MAPPING kwargs dict as yaml/json format string or @file.yaml,
i.e., '{"level": "series"}'
-b, --binary Get binary file as well as data
--help Show this message and exit.
guid¶
Usage: diana-cli guid [OPTIONS] NAME [[%Y-%m-%d|%Y-%m-%dT%H:%M:%S|%Y-%m-%d
%H:%M:%S]] [GENDER]
Generate a globally unique sham ID from NAME, DOB, and GENDER.
Options:
--age INTEGER Substitute age and ref date for DOB
--reference_date [%Y-%m-%d|%Y-%m-%dT%H:%M:%S|%Y-%m-%d %H:%M:%S]
Reference date for AGE
--salt TEXT Anonymization salt
--help Show this message and exit.
$ python3 diana-cli.py guid --age 40 "MERCK^DEREK^L"
Generating GUID
------------------------
WARNING:GUIDMint:Creating non-reproducible GUID using current date
{'birth_date': '19891023',
'id': 'TJEIRJJ2MK5HBVHLQCB5YDPXMU64LDPM',
'name': 'THURMER^JONAS^E',
'time_offset': '-3 days, 0:22:08'}
ls¶
Usage: diana-cli ls [OPTIONS]
List all services and health
$ crud-cli ls
Options:
-h, --health-check / -k, --skip-health-check
Skip health
--help Show this message and exit.
mfind¶
Usage: diana-cli mfind [OPTIONS] SOURCE
Find items in Montage by query for chaining.
$ diana-cli mfind -a 520xxxxx montage print
{ "AccesssionNumber": 520xxxxx, "PatientID": abcdef, ... }
$ diana-cli mfind -a @my_accessions.txt -e lungrads -e radcat montage print
jsonl > output.jsonl $ cat output.jsonl { ... lungrads='2',
current_smoker=False, pack_years=15, radcat=(3,true) ... }
Options:
-a, --accession_numbers ARRAY Requires PHI privileges on Montage
--start_date [%Y-%m-%d|%Y-%m-%dT%H:%M:%S|%Y-%m-%d %H:%M:%S]
Starting date query bound
--end_date [%Y-%m-%d|%Y-%m-%dT%H:%M:%S|%Y-%m-%d %H:%M:%S]
Ending date query bound
--today
-q, --query MAPPING Query string
-e, --extraction [radcat|lungrads]
Perform a data extraction on each report
--help Show this message and exit.
mock¶
Usage: diana-cli mock [OPTIONS] [DESC]
Generate synthetic studies on a schedule according to a site description
DESC. Studies are optionally forwarded to an endpoint DEST.
Options:
--dest ENDPOINT Destination DICOM service
--help Show this message and exit.
DESC must be a mock-site description in yaml format.
---
- name: Example Hospital
services:
- name: Main CT
modality: CT
devices: 3
studies_per_hour: 15
- name: Main MR
modality: MR
devices: 2
studies_per_hour: 4
...
ofind¶
Usage: diana-cli ofind [OPTIONS] SOURCE
Find studies matching yaml/json QUERY in SOURCE Orthanc or ProxiedDicom
service. The optional proxy DOMAIN issues a remote-find to a manually
proxied DICOM endpoint.
Options:
-a, --accession_number TEXT Requires PHI privileges on Montage
--today
-q, --query MAPPING Query string
-l, --level [studies|series|instances]
-d, --domain TEXT Remote domain for proxied query
-r, --retrieve Retrieve from remote for proxied query
--help Show this message and exit.
oget¶
Usage: diana-cli oget [OPTIONS] SOURCE [ITEMS]
Get studies from Orthanc.
$ diana-cli oget oidx-xxxx... print
$ diana-cii ofind -a 123xxx orthanc: oget orthanc: print
Options:
-m, --metakeys ARRAY Meta key(s) to retrieve
--fkey TEXT Fernet key for encrypting metadata
-k, --kwargs MAPPING kwargs dict as yaml/json format string or @file.yaml,
i.e., '{"level": "series"}'
-b, --binary Get binary file as well as data
--help Show this message and exit.
ogetm¶
Usage: diana-cli ogetm [OPTIONS] SOURCE ITEM KEY
Get study-level item metadata from Orthanc
Options:
--fkey TEXT Fernet key for decrypting metadata
--help Show this message and exit.
oput¶
Usage: diana-cli oput [OPTIONS] DEST
Put chained instances in Orthanc
Options:
-a, --anonymize Anonymize instances as they are uploaded
--anon-salt TEXT Anonymization salt
--sign MAPPING Signature key(s) and elements
--fkey TEXT Fernet key for encrypting metadata
--help Show this message and exit.
oputm¶
Usage: diana-cli oputm [OPTIONS] SOURCE ITEM UPDATES
Set study-level item metadata in Orthanc
Options:
--help Show this message and exit.
print¶
Usage: diana-cli print [OPTIONS] [[plain|jsonl|csv]]
Print chained items to stdout
Options:
--help Show this message and exit.
put¶
Usage: diana-cli put [OPTIONS] DEST
Put chained items in endpoint
Options:
-k, --kwargs MAPPING kwargs dict as yaml/json format string or @file.yaml,
i.e., '{"level": "series"}'
--help Show this message and exit.
setmeta¶
Usage: diana-cli setmeta [OPTIONS] UPDATE_DICT
Set metadata kvs for chained items
Options:
--help Show this message and exit.
verify¶
Usage: diana-cli verify [OPTIONS]
Verify DIANA source code against public gist signature.
This function is a convenience only; if the package has been altered, it
could easily be altered to return correct hashes or check the wrong gist.
The paranoid should refer to <https://github.com/derekmerck/gistsig> for
instructions on finding performing an external manual audit.
Options:
--help Show this message and exit.
wsend¶
Usage: diana-cli wsend [OPTIONS] MESSENGER
Send data or chained items via Messenger endpoint
$ wuphf-cli send -t test@example.com gmail:user:pword "msg_text: Hello 123"
Options:
--data MAPPING
-t, --target TEXT Optional target, if not using a dedicated messenger
-m, --msg_t TEXT Optional message template
--help Show this message and exit.