Python中一个小型的dicom客户端
项目描述
Dicom Client V1
构建状态
(目前为私有构建徽章)
API介绍
DICOM-Client由四个核心方法组成。已经定义了一个接口来简化与DicomClient()的交互。这些方法的目的在于从DICOM服务器上传、下载和删除DCM文件。
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
使用方法
$ 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")
此脚本可用于验证您的DICOM服务器部署。
查看Microsoft Dicom服务器: https://github.com/microsoft/dicom-server
对于贡献者
先决条件
- 提供dicom服务器
- 获取dicom服务器字符串值的凭据
- 将它们作为环境变量导出,以便在您的调试环境中使用。
我们的 .vscode/settings.json 指向一个 .env 文件
"python.envFile": "${workspaceFolder}/.vscode/dev.env",
我们的 dev.env 文件需要以下格式的这些值
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'}"
运行测试
完成先决条件并设置 AUTH_CONNECTION_INFO 环境变量,然后
$ git clone our_git_url
$ python3 -m venv .venv
$ pip install -r requirements.txt
$ pytest tests
确保您已遵循本地运行测试的先决条件,并验证了您的 dicom 服务器主机和导出了正确的凭证。有关更多详细信息,请参阅 README.md 或为 DICOM 服务器支持提出问题。
单元测试
要运行大部分单元测试(可选带有代码覆盖率报告),只需运行
$ pytest tests/unit [--cov=handler --cov-report=html:htmlcov]
请参阅 conftest.py
了解有关这些测试参数的更多信息,因为它们可以通过环境变量而不是开发环境中的参数来找到。
Pylint
Pylint 为 Python 提供了静态代码分析,并使用我们的 ./.pylintrc
文件来管理代码分析器的配置。我们在集成测试中运行 pylint 以确保 Python 编码标准。有关 Pylint 的更多信息,请参阅 此处。
在本地运行 pylint
pylint handler --output-format=colorized --rcfile=".pylintrc"
使用 Black 格式化
Black 是一个自动格式化和检查工具,用于 Python,它提供进一步代码分析,它也在我们的集成测试中运行,并在本地运行时有助于保持代码清晰度并符合团队标准。更多信息请参阅 此处。
在本地运行 black
black --check --line-length 100 .
black --line-length 100 .
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。
源分布
构建分布
dicom-client-python-0.3.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 725af9587ab6d9348aece4aa5e41e6a67369e6798cd362f78cc9d1afd70ba214 |
|
MD5 | 6116a5ca5727bc82d310241c01e991b4 |
|
BLAKE2b-256 | 82ce5a96bf0918093696fc0b157692aa6cda18dc8758d947117b9234ae0531d8 |
dicom_client_python-0.3.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7863bc52328f6c6abdcb2cb8d4531497d1be00e7dbf490a6e5bc84a663853df7 |
|
MD5 | 1bd1f89dcb38dc7c1ad36eb50611c03e |
|
BLAKE2b-256 | 290cd1570cb08bb5cbe4ffd9f25abc8efb287c2abe4d72b8b4975d898f8684bc |