I've seen the official pynetdicom documentation but I've not got the proper event handlers (for the SCU) on receiving images.
First I've created the required .dcm files Dataset and used the C-GET command, which should actually give me the .dcm files but also I've not specified where my images are to be stored on the SCU. Do I need to use the C-MOVE command to actually get images or my code is incomplete (in a sense that no event handlers are specified for SCU onReceiveStore)?
from pydicom.dataset import Dataset
import pydicom
from pynetdicom import (
AE, evt, build_role,
PYNETDICOM_IMPLEMENTATION_UID,
PYNETDICOM_IMPLEMENTATION_VERSION
)
from pynetdicom.sop_class import (
PatientRootQueryRetrieveInformationModelGet,
CTImageStorage
)
ae = AE()
ae.add_requested_context(PatientRootQueryRetrieveInformationModelGet)
ae.add_requested_context(CTImageStorage)
role = build_role(CTImageStorage, scp_role=True)
ds = Dataset()
ds.QueryRetrieveLevel = 'SERIES'
ds.PatientID = '0009703828'
ds.StudyInstanceUID = '1.3.46.670589.5.2.10.2156913941.892665384.993397'
ds.SeriesInstanceUID = '1.3.46.670589.5.2.10.2156913941.892665339.860724'
assoc = ae.associate('127.0.0.1', 5678)
if assoc.is_established:
responses = assoc.send_c_get(ds, PatientRootQueryRetrieveInformationModelGet)
for (status,dataset) in responses:
if status:
print('C-GET query status: 0x{0:04x}'.format(status.Status))
# If the status is 'Pending' then `identifier` is the C-GET response
if status.Status in (0x0000, 0x1022):
print(dataset)
else:
print('Connection timed out, was aborted or received invalid response')
assoc.release()
else:
print('Association rejected, aborted or never connected')
I expected the .dcm be sent from the DICOM server (i.e ConQuest server in my case) ,but I'm only receving the DICOM tag confirming that this Dataset (given as a query to the ConQuest Server) is present! I want to know exactly how do I receive the images on my SCU using this Application Entity (ae)
This is the response from the ConQuest Server
[CONQUESTSRV1] UPACS THREAD 11: STARTED AT: Fri Oct 25 06:56:23 2019
[CONQUESTSRV1] Calling Application Title : "PYNETDICOM "
[CONQUESTSRV1] Called Application Title : "ANY-SCP "
[CONQUESTSRV1] Application Context : "1.2.840.10008.3.1.1.1", PDU length: 16382
[CONQUESTSRV1] Presentation Context 0 "1.2.840.10008.5.1.4.1.2.1.3" 1
[CONQUESTSRV1] Presentation Context 1 "1.2.840.10008.5.1.4.1.1.2" 1
[CONQUESTSRV1] Number of images to send: 2
[CONQUESTSRV1] Sending file : c:\users\sagar\onedrive\desktop\dicomserver1419d1\data\0009703828\1.3.46.670589.5.2.10.2156913941.892665339.860724_0001_002000_14579035620000.dcm
[CONQUESTSRV1] [recompress]: recompressed with mode = un (strip=1)
[CONQUESTSRV1] C-Get (PatientRoot)
[CONQUESTSRV1] UPACS THREAD 11: ENDED AT: Fri Oct 25 06:56:23 2019
[CONQUESTSRV1] UPACS THREAD 11: TOTAL RUNNING TIME: 0 SECONDS
The ConQuest Server is sending the file but the SCU is unable to receive it!
You need to bind a callable handler function to
evt.EVT_C_STORE
as shown in this example.