大家好

最近用到python 的pydicom來上傳dicom影像
在這邊做一個紀錄
順便給大家參考

 

import os
from pydicom.dataset import Dataset, DataElement
import pydicom
from pydicom.uid import generate_uid
from pydicom import dcmread
from pynetdicom import AE, VerificationPresentationContexts
from pynetdicom.sop_class import CTImageStorage, MRImageStorage, SecondaryCaptureImageStorage

# 新增一個連線
ae = AE()
# 設定連線內容
ae.requested_contexts = VerificationPresentationContexts
# 設定傳輸內容 需要依據dicom 本身的tag做設定
ae.add_requested_context(SecondaryCaptureImageStorage, transfer_syntax='1.2.840.10008.1.2.4.91')

PACS_MY_AE_TITLE # 自己的 AE_TITLE
PACS_UP_AE_PORT # 要上傳的PACS PORT
PACS_UP_AE_IP # 要上傳的PACS IP

# 設定 AE_TITLE
ae.ae_title = PACS_MY_AE_TITLE
# 開啟連線
assoc = ae.associate(PACS_UP_AE_IP, PACS_UP_AE_PORT)

# 成功建立
if assoc.is_established:
    # 讀取dicom 檔案
    dataset = dcmread(report_dicom)
    # 上傳
    status = assoc.send_c_store(dataset)
    # 釋放連線
    assoc.release()
    
    if not status.Status in (0xff00, 0xff01):
        # 如果有錯誤
        pass

 


重點在於
add_requested_context 中的傳輸影像類型可參考

https://pydicom.github.io/pynetdicom/dev/reference/sop_classes.html

然後影像封裝類型UID 也必須正確

https://pydicom.github.io/pydicom/stable/reference/uid.html

總之
要上傳成功跟要上傳的dicom tag資料息息相關
必須確認後在設定中新增
才可以上傳成功喔