I'm trying to setup a script using storescp as a listener to temporarily store files and grab info from DICOM metadata.
dcm4chepath='/opt/dcm4chetools/bin'
storage='/opt/dcm4chee/server/default/archive/preroute/working/AE_ARGATE'
logfile='/opt/scripts/preroute/log/server.log'
sh $dcm4chepath/storescp --filepath '{00080050}/{0020000D}/{00080018}.dcm' --directory $storage -b AE_ARGATE:11131 >> $logfile
Normally this works well, but when GE's Centricity PACS does a C-Store, I receive the following:
15:51:58,867 INFO - Accept connection Socket[addr=/123.123.123.123,port=35958,localport=11131]
15:51:58,868 DEBUG - /123.123.123.123:11131<-/123.123.123.123:35958(2): enter state: Sta2 - Transport connection open
15:51:58,871 INFO - AE_ARGATE<-GEPACS(2) >> A-ASSOCIATE-RQ
15:51:58,879 DEBUG - A-ASSOCIATE-RQ[
calledAET: AE_ARGATE
callingAET: GEPACS
applicationContext: 1.2.840.10008.3.1.1.1 - DICOM Application Context Name
implClassUID: 1.2.840.113619.6.94
implVersionName: CENTRICITY_3.0
maxPDULength: 28672
maxOpsInvoked/maxOpsPerformed: 1/1
PresentationContext[id: 25
as: 1.2.840.10008.5.1.4.1.1.1.1 - Digital X-Ray Image Storage - For Presentation
ts: 2.16.840.1.113709.1.2.2 - ?
ts: 1.2.840.10008.1.2.2 - Explicit VR Big Endian (Retired)
ts: 1.2.840.10008.1.2.1 - Explicit VR Little Endian
ts: 1.2.840.10008.1.2 - Implicit VR Little Endian
]
RoleSelection[
sopClass: 1.2.840.10008.1.20.1 - Storage Commitment Push Model SOP Class
scu: false
scp: true
]
RoleSelection[
sopClass: 1.2.840.10008.3.1.2.3.3 - Modality Performed Procedure Step SOP Class
scu: true
scp: false
]
RoleSelection[
sopClass: 1.2.840.10008.5.1.4.33 - Instance Availability Notification SOP Class
scu: true
scp: false
]
RoleSelection[
sopClass: 1.2.528.1.1001.3.1.2.3.1 - ?
scu: true
scp: false
]
15:51:58,879 DEBUG - AE_ARGATE<-GEPACS(2): enter state: Sta3 - Awaiting local A-ASSOCIATE response primitive
15:51:58,881 INFO - AE_ARGATE<-GEPACS(2) << A-ASSOCIATE-AC
15:51:58,883 DEBUG - A-ASSOCIATE-AC[
calledAET: AE_ARGATE
callingAET: GEPACS
applicationContext: 1.2.840.10008.3.1.1.1 - DICOM Application Context Name
implClassUID: 1.2.40.0.13.1.1
implVersionName: dcm4che-3.3.6
maxPDULength: 16378
maxOpsInvoked/maxOpsPerformed: 1/1
PresentationContext[id: 25
result: 0 - acceptance
ts: 2.16.840.1.113709.1.2.2 - ?
]
15:51:58,883 DEBUG - AE_ARGATE<-GEPACS(2): enter state: Sta6 - Association established and ready for data transfer
15:51:59,082 INFO - AE_ARGATE<-GEPACS(2) >> 11637:C-STORE-RQ[pcid=25, prior=0
cuid=1.2.840.10008.5.1.4.1.1.1.1 - Digital X-Ray Image Storage - For Presentation
iuid=1.2.528.1.1001.100.4.4837.3609.2074542476.20160829204042558 - ?
tsuid=2.16.840.1.113709.1.2.2 - ?
15:51:59,109 DEBUG - Command:
(0000,0002) UI [1.2.840.10008.5.1.4.1.1.1.1] AffectedSOPClassUID
(0000,0100) US [1] CommandField
(0000,0110) US [11637] MessageID
(0000,0700) US [0] Priority
(0000,0800) US [0] CommandDataSetType
(0000,1000) UI [1.2.528.1.1001.100.4.4837.3609.2074542476.20160829204042558] A
15:51:58,883 DEBUG - AE_ARGATE<-GEPACS(2): enter state: Sta6 - Association established and ready for data transfer
15:51:59,082 INFO - AE_ARGATE<-GEPACS(2) >> 11637:C-STORE-RQ[pcid=25, prior=0
cuid=1.2.840.10008.5.1.4.1.1.1.1 - Digital X-Ray Image Storage - For Presentation
iuid=1.2.528.1.1001.100.4.4837.3609.2074542476.20160829204042558 - ?
tsuid=2.16.840.1.113709.1.2.2 - ?
15:51:59,109 DEBUG - Command:
(0000,0002) UI [1.2.840.10008.5.1.4.1.1.1.1] AffectedSOPClassUID
(0000,0100) US [1] CommandField
(0000,0110) US [11637] MessageID
(0000,0700) US [0] Priority
(0000,0800) US [0] CommandDataSetType
(0000,1000) UI [1.2.528.1.1001.100.4.4837.3609.2074542476.20160829204042558] A
15:51:59,111 INFO - AE_ARGATE<-GEPACS(2): M-WRITE /opt/dcm4chee/server/default/archive/preroute/working/AE_ARGATE/1.2.528.1.1001.100.4.4837.3609.2074542476.20160829204042558.part
15:51:59,153 WARN - Unrecogniced VR code: {0}H - treat as UN
15:51:59,252 WARN - IOException during read of (2D74,616C) #1951620204 @ 2926
java.io.EOFException
at org.dcm4che3.util.StreamUtils.readFully(StreamUtils.java:63)
at org.dcm4che3.io.DicomInputStream.readFully(DicomInputStream.java:383)
at org.dcm4che3.io.DicomInputStream.readValue(DicomInputStream.java:711)
at org.dcm4che3.io.DicomInputStream.readValue(DicomInputStream.java:536)
at org.dcm4che3.io.DicomInputStream.readAttributes(DicomInputStream.java:497)
at org.dcm4che3.io.DicomInputStream.readDataset(DicomInputStream.java:425)
at org.dcm4che3.tool.storescp.StoreSCP.parse(StoreSCP.java:157)
at org.dcm4che3.tool.storescp.StoreSCP.access$400(StoreSCP.java:81)
at org.dcm4che3.tool.storescp.StoreSCP$1.store(StoreSCP.java:112)
at org.dcm4che3.net.service.BasicCStoreSCP.onDimseRQ(BasicCStoreSCP.java:72)
at org.dcm4che3.net.service.DicomServiceRegistry.onDimseRQ(DicomServiceRegistry.java:86)
at org.dcm4che3.net.ApplicationEntity.onDimseRQ(ApplicationEntity.java:461)
at org.dcm4che3.net.Association.onDimseRQ(Association.java:648)
at org.dcm4che3.net.PDUDecoder.decodeDIMSE(PDUDecoder.java:459)
at org.dcm4che3.net.Association.handlePDataTF(Association.java:632)
at org.dcm4che3.net.State$4.onPDataTF(State.java:103)
at org.dcm4che3.net.Association.onPDataTF(Association.java:628)
at org.dcm4che3.net.PDUDecoder.nextPDU(PDUDecoder.java:177)
at org.dcm4che3.net.Association$2.run(Association.java:478)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
15:51:59,273 INFO - AE_ARGATE<-GEPACS(2): M-DELETE /opt/dcm4chee/server/default/archive/preroute/working/AE_ARGATE/1.2.528.1.1001.100.4.4837.3609.2074542476.20160829204042558.part
15:51:59,273 INFO - AE_ARGATE<-GEPACS(2): processing 11637:C-STORE-RQ[pcid=25, prior=0
cuid=1.2.840.10008.5.1.4.1.1.1.1 - Digital X-Ray Image Storage - For Presentation
iuid=1.2.528.1.1001.100.4.4837.3609.2074542476.20160829204042558 - ?
tsuid=2.16.840.1.113709.1.2.2 - ? failed. Caused by:
org.dcm4che3.net.service.DicomServiceException: java.io.EOFException
at org.dcm4che3.tool.storescp.StoreSCP$1.store(StoreSCP.java:118)
at org.dcm4che3.net.service.BasicCStoreSCP.onDimseRQ(BasicCStoreSCP.java:72)
at org.dcm4che3.net.service.DicomServiceRegistry.onDimseRQ(DicomServiceRegistry.java:86)
at org.dcm4che3.net.ApplicationEntity.onDimseRQ(ApplicationEntity.java:461)
at org.dcm4che3.net.Association.onDimseRQ(Association.java:648)
at org.dcm4che3.net.PDUDecoder.decodeDIMSE(PDUDecoder.java:459)
at org.dcm4che3.net.Association.handlePDataTF(Association.java:632)
at org.dcm4che3.net.State$4.onPDataTF(State.java:103)
at org.dcm4che3.net.Association.onPDataTF(Association.java:628)
at org.dcm4che3.net.PDUDecoder.nextPDU(PDUDecoder.java:177)
at org.dcm4che3.net.Association$2.run(Association.java:478)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
What I can't figure out is why does it choose "2.16.840.1.113709.1.2.2" as the transfer syntax instead of the others offered in Presentation Context 25? It looks like this transfer syntax is a private one used by GE to transfer images between their proprietary systems?
Is there anything I can do to "Prefer Implicit VR Little Endian" or something similar?