跳转到主要内容

Python中一个小型的dicom客户端

项目描述

Dicom Client V1

PyPi Distribution Python Versions

构建状态

(目前为私有构建徽章)

主要: 构建状态

开发: 构建状态

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 (18.8 kB 查看哈希)

构建分布

dicom_client_python-0.3.1-py3-none-any.whl (13.6 kB 查看哈希值)

上传时间 Python 3

由以下提供支持