Имею код:
import os from pydicom.filewriter import write_file_meta_info from pynetdicom import (AE, debug_logger, evt, AllStoragePresentationContexts, ALL_TRANSFER_SYNTAXES) debug_logger() def handle_store(event, storage_dir): """Handle EVT_C_STORE events.""" global Nam ds = event.dataset PatientName = str(ds.PatientName) PatientName = PatientName.replace(".","") PatientName = PatientName.replace(" ","_") PatientName = PatientName.replace("/","_") PatientName = PatientName.replace("*","+") PatientName = PatientName.replace(".","") PatientID = ds.PatientID PatientID = PatientID.replace("/","_") Nam = PatientName + "_" + PatientID try: os.makedirs(storage_dir, exist_ok=True) except: # Unable to create output dir, return failure status return 0xC001 # We rely on the UID from the C-STORE request instead of decoding fname = os.path.join(storage_dir, event.request.AffectedSOPInstanceUID) with open(fname, 'wb') as f: # Write the preamble, prefix and file meta information elements f.write(b'\x00' * 128) f.write(b'DICM') write_file_meta_info(f, event.file_meta) # Write the raw encoded dataset f.write(event.request.DataSet.getvalue()) return 0x0000 handlers = [(evt.EVT_C_STORE, handle_store, ["OUT"])] ae = AE(ae_title=b"MY_AE_TITLE") ae.maximum_pdu_size = 0 storage_sop_classes = [cx.abstract_syntax for cx in AllStoragePresentationContexts] for uid in storage_sop_classes: ae.add_supported_context(uid, ALL_TRANSFER_SYNTAXES) ae.start_server(('192.168.1.1', 104), evt_handlers=handlers)
Данный скрипт собирает картинки с PACS сервера , верней то что пишлет PACS сервер на устройство с конкретным AT title.
Конкретно в данном случае создается папка OUT и в нее попадают картинки с PACS сервера.
Я хочу сделать так что бы картинки попадали в отдельные папки с конкретными названиями, это реализуется вот тут:
PatientName = str(ds.PatientName) PatientName = PatientName.replace(".","") PatientName = PatientName.replace(" ","_") PatientName = PatientName.replace("/","_") PatientName = PatientName.replace("*","+") PatientName = PatientName.replace(".","") PatientID = ds.PatientID PatientID = PatientID.replace("/","_") Nam = PatientName + "_" + PatientID
Как подставить переменную Nam вместо OUT ?
Если заменить
handlers = [(evt.EVT_C_STORE, handle_store, ["OUT"])]
handlers = [(evt.EVT_C_STORE, handle_store (Nam))]
NameError: name ‘Nam’ is not defined
Даже если
handlers = [(evt.EVT_C_STORE, handle_store, ["OUT"])]
global Nam