11 releases (7 breaking)
0.8.0 | Mar 9, 2021 |
---|---|
0.6.1 | Dec 20, 2020 |
0.5.1 | Nov 16, 2020 |
#2 in #client-instance
Used in orthanc-cli
97KB
2K
SLoC
orthanc-rs
orthanc-rs is a client for the REST API of Orthanc, an open-source, lightweight DICOM server.
Compatibility
Supported Orthanc versions are 1.6.x, 1.7.x, 1.8.x, 1.9.x.
Installation
To use the crate, add the dependency to your Cargo.toml
:
[dependencies]
orthanc = "0.8.0"
Usage
Create an API client instance:
use orthanc::Client;
let client = Client::new("http://localhost:8042");
If authentication is enabled on the Orthanc instance:
client.auth("username", "password");
List patients:
client.patients();
Or in an expanded format:
client.patients_expanded();
Get all DICOM tags of an instance:
let instance_id = "0b62ebce-8ab7b938-e5ca1b05-04802ab3-42ee4307";
let tags = client.instance_tags(instance_id);
println!("{}", tags["PatientID"]);
Download a study:
let study_id = "9357491d-427a6c94-4080b6c8-1997f4aa-af658240";
let mut file = fs::File::create("/tmp/study.zip").unwrap();
client.study_dicom(study_id, &mut file).unwrap();
Even though the operation is not very efficient, Orthanc allows uploading DICOM files over REST API:
let data = fs::read("/tmp/instance.dcm").unwrap();
client.upload(&data).unwrap();
See tests
directory for more usage examples.
Tests
orthanc-rs is covered by unit as well as integration and end-to-end tests.
To run all tests execute
$ make start_services && make test
Running specific test suits separately is described below.
Unit
To run unit tests execute
$ make unit_test
Integration
To run unit tests execute
$ make integration_test
End-to-end
Install docker-compose and jq and execute
$ make start_services && make e2e_test
This will spin up all the necessary services required for integration tests, and run the tests.
During and after the test run Orthanc web UI is available at http://localhost:8028 (username: orthanc, password: orthanc).
Containers started by start_services
are left running after the test is finished. To stop them execute
$ make stop_services
TODO
- Instance images (
/instances/<id>/{preview,image-uint8,image-uint16}
) - Split/merge studies (
/studies/<id>/{split,merge}
) - Tools API (
/tools
) - Log API (
/changes
,/exports
) - Asynchronous requests (
/jobs
)
Dependencies
~4–8.5MB
~189K SLoC