Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Dicom Client V1

PyPi Distribution Python Versions

API Introduction

There are four core methods that make up DICOM-Client. An interface has been defined to simplify interaction with DicomClient(). The purpose of these methods is to upload, download, and delete DCM files from DICOM Server:

class DicomClientInterface(ABC):
    @abstractmethod
    def __init__(self, base_url, token_cache):
        pass
    @abstractmethod
    def upload_dicom_folder(self, folder_name):
        pass
    @abstractmethod
    def upload_dicom_file(self, file_name):
        pass
    @abstractmethod
    def delete_dicom(self, study_id, series_id=None, instance_id=None):
        pass
    @abstractmethod
    def download_dicom(self, output_folder, study_id, series_id=None, instance_id=None):
        pass
    @abstractmethod
    def get_patient_study_ids(self, patient_id):
        pass

To use:

$ pip install dicom_client
$ export AUTH_CONNECTION_INFO="{'authority': 'https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47', 'client_id': '9cfb139d-d05d-4f5c-a10c-54e0ec338f53', 'client_secret': 'D.oD1q9SHc77syVRD-8vKi8UhbDXYoi~n~', 'oauth_resource': 'api://9cfb139d-d05d-4f5c-a10c-54e0ec338f53'}"
import ast 
import os 
from dicom_client import (
    DicomClient,
    TokenCache,
    make_get_token_func,
)

base_url = "https://tonydicom.azurewebsites.net"

auth = ast.literal_eval(os.environ["AUTH_CONNECTION_INFO"])

token_cache = TokenCache(make_get_token_func(auth))
dicom_client = DicomClient(base_url, token_cache)

dicom_client.upload_dicom_folder("folder_name")
dicom_client.upload_dicom_file("file_name")
dicom_client.delete_dicom("study_id", "series_id", "instance_id")
dicom_client.download_dicom("output_folder", "study_id", "series_id", "instance_id")
dicom_client.get_patient_study_ids("patient_id")

This script can be used to validate your DICOM server deployment.

See Microsoft Dicom Server here: https://github.com/microsoft/dicom-server

For contributors:

Pre-reqs

  • Provision a dicom server
  • Get credentials for dicom server string values
  • Export them as environment variables for your debugging environment.

Our .vscode/settings.json point to a .env file:

"python.envFile": "${workspaceFolder}/.vscode/dev.env",

Our dev.env file needs these values in this format:

AUTH_CONNECTION_INFO="{'authority': 'https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47', 'client_id': '5bef631a-c4cd-4feb-aaf2-78ff5f7d7347', 'client_secret': 'REPLACE_WITH_YOUR_SECRET_mrpc.lgXK~C0.g146Gu3PcDG.W6Eg0d0I', 'oauth_resource': 'api://REPLACE_WITH_YOUR_RESOURCE_ID5bef631a-c4cd-4feb-aaf2-78ff5f7d7347'}"

Running Tests

Complete the pre-reqs and set the AUTH_CONNECTION_INFO environment variable, then:

$ git clone our_git_url
$ python3 -m venv .venv
$ pip install -r requirements.txt 
$ pytest tests

Make sure you've followed the prerequisites for running the tests locally and validated your dicom server host and exported the correct credentials. See README.md for more details or raise an issue for DICOM server support.

Unit tests

To run most of the unit tests (optionally with code coverage reporting), simply run:

$ pytest tests/unit [--cov=handler --cov-report=html:htmlcov]

Please see conftest.py for more information on these test parameters as they can be found with environment variables instead of arguments for development environments.

Pylint

Pylint provides static code analysis for python and uses our ./.pylintrc file for managing the configuration of the linter. We run pylint in our integration tests to ensure python coding standards. See more info about pylint here.

To run pylint locally:

pylint handler --output-format=colorized --rcfile=".pylintrc"

Formatting with Black

Black is an auto-formatting tool and checker for python that provides further code analysis, it to is run in our integration tests and is helpful to run locally to maintain code clarity and conform to team standards. More info can be found here.

To run black locally:

black --check --line-length 100 .
black --line-length 100 .

Metadata

Release files for dicom-client-python 0.3.0.dev497

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dicom-client-python 0.3.0.dev497
File Size Uploaded Provenance
dicom-client-python-0.3.0.dev497.tar.gz 18.6 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for dicom-client-python 0.3.0.dev497
File Interpreter ABI Platform
dicom_client_python-0.3.0.dev497-py3-none-any.whl Python 3 none any Details

Total release size: 32.0 kB

Release files / dicom-client-python-0.3.0.dev497.tar.gz

Download URL dicom-client-python-0.3.0.dev497.tar.gz
Size 18.6 kB
Tags Source
SHA-256 checksum
How to use checksums
baaaa73fc9e424e8ba19ed769b92453646e9490799b80138e823c57d34d5808a
BLAKE2b-256 checksum
How to use checksums
88a1573a0f820eab5cebfcb7b585a857748c7a1be6306d4946087aa493158c04
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.0 requests/2.25.0 setuptools/52.0.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.8.6

Release files / dicom_client_python-0.3.0.dev497-py3-none-any.whl

Download URL dicom_client_python-0.3.0.dev497-py3-none-any.whl
Size 13.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0f0a502a94f1034f4820f5b19ed330172db9eabb89667afb6de6470e5bc7131b
BLAKE2b-256 checksum
How to use checksums
6a52a95b9c279d7c0dcedd7ebd6d0a3bb0a5511ccc2748c82bb984650422a03c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.0 requests/2.25.0 setuptools/52.0.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.8.6

Security for dicom-client-python 0.3.0.dev497

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page