Capture A-ABORT PDU
See original GitHub issueI’m attempting to handle various problem situations with C-MOVE (as an SCU).
If I make a C-MOVE request to a local Orthanc server where I have deliberately used a move destination that is not configured in Orthanc, instead of returning a friendly 0xA801
response we get an A-ABORT PDU instead.
Currently, all I can do is wait for the association to time-out; I’d like to act on the ABORT instead.
PYNETDICOM logging:
[2020-01-16 22:58:57,148: WARNING/ForkPoolWorker-3] D: ========================== OUTGOING DIMSE MESSAGE ==========================
[2020-01-16 22:58:57,144: DEBUG/ForkPoolWorker-3] ========================== OUTGOING DIMSE MESSAGE ==========================
[2020-01-16 22:58:57,148: WARNING/ForkPoolWorker-3] D: Message Type : C-MOVE RQ
[2020-01-16 22:58:57,148: DEBUG/ForkPoolWorker-3] Message Type : C-MOVE RQ
[2020-01-16 22:58:57,149: WARNING/ForkPoolWorker-3] D: Message ID : 1
[2020-01-16 22:58:57,149: DEBUG/ForkPoolWorker-3] Message ID : 1
[2020-01-16 22:58:57,149: WARNING/ForkPoolWorker-3] D: Affected SOP Class UID : Study Root Query/Retrieve Information Model - MOVE
[2020-01-16 22:58:57,149: DEBUG/ForkPoolWorker-3] Affected SOP Class UID : Study Root Query/Retrieve Information Model - MOVE
[2020-01-16 22:58:57,150: WARNING/ForkPoolWorker-3] D: Move Destination : PYNETDICOM
[2020-01-16 22:58:57,150: DEBUG/ForkPoolWorker-3] Move Destination : PYNETDICOM
[2020-01-16 22:58:57,150: WARNING/ForkPoolWorker-3] D: Identifier : Present
[2020-01-16 22:58:57,150: DEBUG/ForkPoolWorker-3] Identifier : Present
[2020-01-16 22:58:57,151: WARNING/ForkPoolWorker-3] D: Priority : Low
[2020-01-16 22:58:57,150: DEBUG/ForkPoolWorker-3] Priority : Low
[2020-01-16 22:58:57,151: WARNING/ForkPoolWorker-3] D: ============================ END DIMSE MESSAGE =============================
[2020-01-16 22:58:57,151: DEBUG/ForkPoolWorker-3] ============================ END DIMSE MESSAGE =============================
[2020-01-16 22:58:57,214: WARNING/ForkPoolWorker-3] D: Abort Parameters:
[2020-01-16 22:58:57,213: DEBUG/ForkPoolWorker-3] Abort Parameters:
[2020-01-16 22:58:57,214: WARNING/ForkPoolWorker-3] D: ============================ BEGIN A-ABORT PDU =============================
[2020-01-16 22:58:57,214: DEBUG/ForkPoolWorker-3] ============================ BEGIN A-ABORT PDU =============================
[2020-01-16 22:58:57,214: WARNING/ForkPoolWorker-3] D: Abort Source: DUL service-user
[2020-01-16 22:58:57,214: DEBUG/ForkPoolWorker-3] Abort Source: DUL service-user
[2020-01-16 22:58:57,214: WARNING/ForkPoolWorker-3] D: Abort Reason: No reason given
[2020-01-16 22:58:57,214: DEBUG/ForkPoolWorker-3] Abort Reason: No reason given
[2020-01-16 22:58:57,214: WARNING/ForkPoolWorker-3] D: ============================= END A-ABORT PDU ==============================
[2020-01-16 22:58:57,214: DEBUG/ForkPoolWorker-3] ============================= END A-ABORT PDU ==============================
[2020-01-16 22:59:27,154: WARNING/ForkPoolWorker-3] E: Connection closed or timed-out
[2020-01-16 22:59:27,154: ERROR/ForkPoolWorker-3] Connection closed or timed-out
[2020-01-16 22:59:27,155: WARNING/ForkPoolWorker-3] I: Aborting Association
[2020-01-16 22:59:27,155: INFO/ForkPoolWorker-3] Aborting Association
[2020-01-16 22:59:27,160: WARNING/ForkPoolWorker-3] I: Association Aborted
[2020-01-16 22:59:27,159: INFO/ForkPoolWorker-3] Association Aborted
Extract of logging from development version of OpenREM:
[16/Jan/2020 22:58:57] DEBUG [remapp.netdicom.qrscu:1255] Query_id 1f99f27d-fed5-480f-864d-67aec08f73cf: Requesting move association
[16/Jan/2020 22:58:57] INFO [remapp.netdicom.qrscu:1258] Query_id 1f99f27d-fed5-480f-864d-67aec08f73cf: Move association requested
[16/Jan/2020 22:58:57] INFO [remapp.netdicom.qrscu:1262] Query_id 1f99f27d-fed5-480f-864d-67aec08f73cf: Preparing to start move request
[16/Jan/2020 22:58:57] INFO [remapp.netdicom.qrscu:1267] Query_id 1f99f27d-fed5-480f-864d-67aec08f73cf: Requesting move of 3 studies
[16/Jan/2020 22:58:57] DEBUG [remapp.netdicom.qrscu:1270] Mv 00924055-9afc-41b3-94cd-976ff1f0348b Association with ORTHANC is established.
[16/Jan/2020 22:58:57] DEBUG [remapp.netdicom.qrscu:1274] Mv: study_no 1
[16/Jan/2020 22:58:57] DEBUG [remapp.netdicom.qrscu:1278] Mv: study no 1 series no 1
[16/Jan/2020 22:58:57] INFO [remapp.netdicom.qrscu:1293] Requesting move: modality MG, study 1 (of 3) series 1 (of 1). Series contains 1 objects
[16/Jan/2020 22:58:57] DEBUG [remapp.netdicom.qrscu:1296] _move_req launched
[16/Jan/2020 22:58:57] DEBUG [remapp.netdicom.qrscu:1304] Series-level move - d is: (0008, 0052) Query/Retrieve Level CS: 'SERIES'
(0020, 000d) Study Instance UID UI: 1.3.6.1.4.1.5962.99.1.693088767.1633245212.1473866904063.3.0
(0020, 000e) Series Instance UID UI: 1.3.6.1.4.1.5962.99.1.693088767.1633245212.1473866904063.4.0
[16/Jan/2020 22:59:27] INFO [remapp.netdicom.qrscu:1200] Move of study 1, series 1: Connection timed out, was aborted without reason given or received an invalid response. Check remote server logs Sub-ops completed: 0, failed: 0, warning: 0.
Logging from Orthanc:
W0116 22:58:57.152389 OrthancInitialization.cpp:845] Modality "PYNETDICOM" is not listed in the "DicomModalities" configuration option
W0116 22:58:57.152414 CommandDispatcher.cpp:812] Rejected Move request from remote DICOM modality with AET "PYNETDICOM" and hostname "127.0.0.1"
How can I act on the A-ABORT PDU?
Thanks
Ed
Issue Analytics
- State:
- Created 4 years ago
- Comments:5 (5 by maintainers)
Top Results From Across the Web
9.3.8 A-ABORT PDU Structure
An A-ABORT PDU shall be made of a sequence of mandatory fields. ... field has the value (2) "DICOM UL service-provider", it shall...
Read more >Abort Method - Medical Connections Ltd
An A-ABORT request is sent, and the association is then terminated. The full meanings of the parameters are defined in DICOM part 8,...
Read more >ZRPDU CREATE–Create exclusion table and start PDU - IBM
Use this command to create the pool directory update (PDU) exclusion table and to start PDU processing. PDU processing returns released and lost...
Read more >8 Network Communication Support for Message Exchange
A-ABORT PDU Structure ... Association Abort Related Actions; 9-10. ... The Presentation Context Definition Result List parameter shall take the form of a ......
Read more >DICOM PS3.8 2016b - Network Communication Support for ...
A-ABORT PDU Structure . ... H. Index of Item and PDU Types (Informative) . ... Definition Result List parameter shall take the form...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
Usually
assoc.is_aborted
will be what you look for, but while in DIMSE message exchange (i.e. aassoc.send_*
method has been called) that won’t get updated until messaging is finished soacse.is_aborted()
is your best bet when that’s the case.Thanks for the explanation, much appreciated.