简体   繁体   中英

Fo-Dicom CMove SCP good implementation

I've implemented a super fast PACS server with fo-dicom, my only real problem at this point is handling a CMove request.

The IDicomCMoveProvider has one method IEnumerable<DicomCMoveResponse> OnCMoveRequest(DicomCMoveRequest request); however the way I've implemented it looks wrong and is rather slow.

Gist of my implementation

Specifically inside the CMove method I'm creating a new CStore request that I send to the modality which has to receive the study, for each instance I create a new CStore request, a new DicomClient then I send that and wait for the response. What happens then is the slow part, each instance does the whole DICOM communication shebang, connect, associate, send instance, dissociate, disconnect and it takes ages to send a whole study.

My question is how are you supposed to implement this properly so that its opens only one connection, send all images and close. An example how this is done with fo-dicom would be ideal.

As you receive the C-MOVE-request prior to opening the C-STORE association, it is possible to:

  • determine a list of matching SOP Instances (images) affected by the request
  • Build a list of Presentation Contexts for all matching instances (ie group by SOP Class UID)
  • Negotiate all Presentation Contexts in a single Association request to the C-MOVE destination AE
  • Send each image in this association

By implementing it this way, you can get rid of the "DICOM communication shebang" for each individual image affected by the C-MOVE-request.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM