Есть ли способ отправить данные DICOM в определенные каталоги на удаленном сервере PACS? - PullRequest
0 голосов
/ 04 июня 2018

У меня возникает связь между SCU и SCP для серверов и изображений DICOM.Я использую сервер ClearCanas PACS и имею доступ к веб-интерфейсу.Используя следующий код, я могу отправить DICOM dt из SCU (мой компьютер) на SCP (удаленный сервер)

import sys
import argparse
from netdicom import AE
from netdicom.SOPclass import StorageSOPClass, VerificationSOPClass
from dicom.UID import ExplicitVRLittleEndian, ImplicitVRLittleEndian, \
    ExplicitVRBigEndian
from dicom import read_file


# parse commandline
parser = argparse.ArgumentParser(description='storage SCU example')
parser.add_argument('remotehost')
parser.add_argument('remoteport', type=int)
parser.add_argument('file', nargs='+')
parser.add_argument('-aet', help='calling AE title', default='PYNETDICOM')
parser.add_argument('-aec', help='called AE title', default='REMOTESCU')
parser.add_argument('-implicit', action='store_true',
                    help='negociate implicit transfer syntax only',
                    default=False)
parser.add_argument('-explicit', action='store_true',
                    help='negociate explicit transfer syntax only',
                    default=False)

args = parser.parse_args()

if args.implicit:
    ts = [ImplicitVRLittleEndian]
elif args.explicit:
    ts = [ExplicitVRLittleEndian]
else:
    ts = [
        ExplicitVRLittleEndian,
        ImplicitVRLittleEndian,
        ExplicitVRBigEndian
    ]

# call back


def OnAssociateResponse(association):
    print "Association response received"

# create application entity
MyAE = AE(args.aet, 0, [StorageSOPClass,  VerificationSOPClass], [], ts)
MyAE.OnAssociateResponse = OnAssociateResponse

# remote application entity
RemoteAE = dict(Address=args.remotehost, Port=args.remoteport, AET=args.aec)

# create association with remote AE
print "Request association"
assoc = MyAE.RequestAssociation(RemoteAE)

if not assoc:
    print "Could not establish association"
    sys.exit(1)
# perform a DICOM ECHO, just to make sure remote AE is listening
print "DICOM Echo ... ",
st = assoc.VerificationSOPClass.SCU(1)
print 'done with status "%s"' % st

# create some dataset
for ii in args.file:
    print
    print ii
    d = read_file(ii)
    print "DICOM StoreSCU ... ",
    try:
        st = assoc.SCU(d, 1)
        print 'done with status "%s"' % st
    except:
        raise
        print "problem", d.SOPClassUID
print "Release association"
assoc.Release(0)

# done
MyAE.Quit

Мой вопрос заключается в том, есть ли способ отправить объекты в разные каталоги насервер / сделать каталоги удаленно на сервере и отправить данные в разные каталоги?

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Короткий ответ - Нет

Более длинный ответ - стандарт DICOM не заботится ни о каком виде или форме, как файлы хранятся на сервере PACS, это оставлено на усмотрение реализации,Сервер PACS может использовать роботизированный инструмент для вырезания, чтобы гравировать их на каменных табличках и считывать с помощью OCR, если он все еще может получать и отправлять их в соответствии со стандартом.Поэтому невозможно повлиять на такие детали через интерфейс DICOM.

С точки зрения стандарта - все уже аккуратно организовано иерархически в масштабе «Пациент - Исследование - Серия - Экземпляр», где каждый уровень имеет свой единственный уникальныйID-ы.Эти идентификаторы хранятся в каждом файле DICOM в соответствующих тегах DICOM, и большинство серверов PACS отслеживают эти идентификаторы, используя базу данных для облегчения быстрого поиска.Фактическое расположение файла DICOM на диске также хранится в базе данных, но это внутренние детали реализации и не раскрывается через интерфейс DICOM.

И, честно говоря, я не вижу, в чем смысл использованиядля этого требования в любом случае?Организация уже существует, и вы можете запросить по этим атрибутам, используя интерфейс DICOM.

0 голосов
/ 04 июня 2018

Обычно нет.Вы не можете указать SCP, где в его файловой системе хранить данные из вашего SCU.

...