Package: dicom-client-python
Dicom Client V1Build Status(Currently Private Build Badges)Main:Dev:API IntroductionThere 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:classDicomClientInterface(ABC):@abstractmethoddef__init__(self,base_url,token_cache):pass@abstractmethoddefupload_dicom_folder(self,folder_name):pass@abstractmethoddefupload_dicom_file(self,file_name):pass@abstractmethoddefdelete_dicom(self,study_id,series_id=None,instance_id=None):pass@abstractmethoddefdownload_dicom(self,output_folder,study_id,series_id=None,instance_id=None):pass@abstractmethoddefget_patient_study_ids(self,patient_id):passTo 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'}"importastimportosfromdicom_clientimport(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-serverFor contributors:Pre-reqsProvision a dicom serverGet credentials for dicom server string valuesExport 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 TestsComplete 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 testsMake sure you've followed the prerequisites for running the tests locally and validated your dicom server host and exported the correct credentials. SeeREADME.mdfor more details or raise an issue for DICOM server support.Unit testsTo run most of the unit tests (optionally with code coverage reporting), simply run:$ pytest tests/unit [--cov=handler --cov-report=html:htmlcov]Please seeconftest.pyfor more information on these test parameters as they can be found with environment variables instead of arguments for development environments.PylintPylint provides static code analysis for python and uses our./.pylintrcfile for managing the configuration of the linter. We run pylint in our integration tests to ensure python coding standards. See more info about pylinthere.To run pylint locally:pylint handler --output-format=colorized --rcfile=".pylintrc"Formatting with BlackBlack 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 foundhere.To run black locally:black --check --line-length 100 .
black --line-length 100 .