getscu(1)
๐ NAME ๐
okay bestie, welcome to getscu(1) โ the OFFIS DCMTK manual page for the DICOM retrieve (C-GET) SCU, and yes, she is that girl ๐
getscu โ DICOM retrieve (C-GET) SCU โจ
๐ธ SYNOPSIS ๐ธ
getscu [options] peer port [dcmfile-in...]
๐ฆ DESCRIPTION ๐ฆ
The getscu application implements an SCU for the Query/Retrieve Service Class. getscu supports retrieve functionality using the C-GET message. It sends query keys to an SCP and waits for responses with images or other DICOM objects sent via C-STORE.
As the DICOM service demands, C-GET and the accompanying C-STORE messages are handled on the same association. This is the whole vibe. Therefore, objects can only be received by getscu itself and cannot be sent to a third party โ movescu would be the right tool for this task, no cap.
๐ bestie, this is not a "forward it to your friend" situation. getscu receives the objects itself, periodt.
๐ PARAMETERS ๐
- peer โ hostname of DICOM peer ๐
- port โ tcp/ip port number of peer ๐
- dcmfile-in โ DICOM query file(s) ๐
โจ OPTIONS โจ
๐ general options ๐
-h,--helpโ print this help text and exit ๐ซถ--versionโ print version information and exit โญ--argumentsโ print expanded command line arguments ๐ง-q,--quietโ quiet mode, print no warnings and errors ๐คซ-v,--verboseโ verbose mode, print processing details ๐-d,--debugโ debug mode, print debug information ๐-ll,--log-levelโ[l]evel: string constant(fatal,error,warn,info,debug,trace): use level l for the logger ๐ชต-lc,--log-configโ[f]ilename: string: use config file f for the logger โ๏ธ+v,--verbose-pcโ show presentation contexts in verbose mode ๐ผ๏ธ
๐ network options ๐
๐ override matching keys:
-k,--keyโ[k]ey: gggg,eeee="str", path or dictionary name="str": override matching key ๐
๐ง query information model:
-P,--patientโ use patient root information model (default) ๐-S,--studyโ use study root information model ๐-O,--psonlyโ use patient/study only information model ๐ฑ
๐ IP protocol version:
-i4,--ipv4โ use IPv4 only (default) ๐ข-i6,--ipv6โ use IPv6 only ๐ต-i0,--ip-autoโ use DNS lookup to determine IP protocol ๐งญ
๐ชช application entity titles:
-aet,--aetitleโ[a]etitle: string: set my calling AE title (default:GETSCU) ๐-aec,--callโ[a]etitle: string: set called AE title of peer (default:ANY-SCP) ๐
๐ผ๏ธ preferred storage transfer syntaxes (incoming associations):
+x=,--prefer-uncomprโ prefer explicit VR local byte order (default) ๐+xe,--prefer-littleโ prefer explicit VR little endian TS ๐+xb,--prefer-bigโ prefer explicit VR big endian TS ๐+xs,--prefer-losslessโ prefer default JPEG lossless TS ๐+xy,--prefer-jpeg8โ prefer default JPEG lossy TS for 8 bit data ๐ธ+xx,--prefer-jpeg12โ prefer default JPEG lossy TS for 12 bit data ๐ธ+xv,--prefer-j2k-losslessโ prefer JPEG 2000 lossless TS ๐ฆ+xw,--prefer-j2k-lossyโ prefer JPEG 2000 lossy TS ๐ฆ+xt,--prefer-jls-losslessโ prefer JPEG-LS lossless TS ๐+xu,--prefer-jls-lossyโ prefer JPEG-LS lossy TS ๐+xm,--prefer-mpeg2โ prefer MPEG2 Main Profile @ Main Level TS ๐ฌ+xh,--prefer-mpeg2-highโ prefer MPEG2 Main Profile @ High Level TS ๐ฌ+xn,--prefer-mpeg4โ prefer MPEG4 AVC/H.264 HP / Level 4.1 TS ๐น+xl,--prefer-mpeg4-bdโ prefer MPEG4 AVC/H.264 BD-compatible HP / Level 4.1 TS ๐น+x2,--prefer-mpeg4-2-2dโ prefer MPEG4 AVC/H.264 HP / Level 4.2 TS for 2D Videos ๐ฅ+x3,--prefer-mpeg4-2-3dโ prefer MPEG4 AVC/H.264 HP / Level 4.2 TS for 3D Videos ๐ฅ+xo,--prefer-mpeg4-2-stโ prefer MPEG4 AVC/H.264 Stereo HP / Level 4.2 TS ๐ฅฝ+x4,--prefer-hevcโ prefer HEVC/H.265 Main Profile / Level 5.1 TS ๐ฅ+x5,--prefer-hevc10โ prefer HEVC/H.265 Main 10 Profile / Level 5.1 TS ๐ฅ+xr,--prefer-rleโ prefer RLE lossless TS ๐งฉ+xd,--prefer-deflatedโ prefer deflated explicit VR little endian TS ๐ซง+xi,--implicitโ accept implicit VR little endian TS only ๐ซ
๐ค proposed retrieve transfer syntaxes (outgoing associations):
-x=,--propose-uncomprโ propose all uncompressed TS, explicit VR with local byte ordering first (default) ๐-xe,--propose-littleโ propose all uncompressed TS, explicit VR little endian first ๐-xb,--propose-bigโ propose all uncompressed TS, explicit VR big endian first ๐-xd,--propose-deflatedโ propose deflated explicit VR little endian TS and all uncompressed transfer syntaxes ๐ซง-xi,--propose-implicitโ propose implicit VR little endian TS only ๐ซ
๐ฐ๏ธ other network options:
-to,--timeoutโ[s]econds: integer(default: unlimited): timeout for connection requests โณ-ta,--acse-timeoutโ[s]econds: integer(default:30): timeout for ACSE messages โฑ๏ธ-td,--dimse-timeoutโ[s]econds: integer(default: unlimited): timeout for DIMSE messages โณ-pdu,--max-pduโ[n]umber of bytes: integer (4096..131072): set max receive pdu to n bytes (default:16384) ๐ฆ--repeatโ[n]umber: integer: repeat n times ๐--abortโ abort association instead of releasing it ๐ฅ
๐ transport layer security (TLS) options ๐
๐งต transport protocol stack:
-tls,--disable-tlsโ use normal TCP/IP connection (default) ๐+tls,--enable-tlsโ[p]rivate key file, [c]ertificate file: string: use authenticated secure TLS connection ๐+tla,--anonymous-tlsโ use secure TLS connection without certificate ๐ต๏ธ
๐ private key password (only with --enable-tls):
+ps,--std-passwdโ prompt user to type password on stdin (default) โจ๏ธ+pw,--use-passwdโ[p]assword: string: use specified password ๐-pw,--null-passwdโ use empty string as password ๐ซฅ
๐ key and certificate file format:
-pem,--pem-keysโ read keys and certificates as PEM file (default) ๐-der,--der-keysโ read keys and certificates as DER file ๐
๐๏ธ certification authority:
+cf,--add-cert-fileโ[f]ilename: string: add certificate file to list of certificates ๐งพ+cd,--add-cert-dirโ[d]irectory: string: add certificates in d to list of certificates ๐+crl,--add-crl-fileโ[f]ilename: string: add certificate revocation list file (implies--enable-crl-vfy) ๐ซ+crv,--enable-crl-vfyโ enable leaf CRL verification ๐+cra,--enable-crl-allโ enable full chain CRL verification โ๏ธ
๐ก๏ธ security profile:
+ph,--list-profilesโ list supported TLS profiles and exit ๐+pg,--profile-8996โ BCP 195 RFC 8996 TLS Profile (default) ๐+pm,--profile-8996-modโ Modified BCP 195 RFC 8996 TLS Profile ๐ธ
# only available if underlying TLS library supports all TLS features required for this profile
+py,--profile-bcp195-ndโ Non-downgrading BCP 195 TLS Profile (retired) ๐ชฆ+px,--profile-bcp195โ BCP 195 TLS Profile (retired) ๐ชฆ+pz,--profile-bcp195-exโ Extended BCP 195 TLS Profile (retired) ๐ชฆ+pb,--profile-basicโ Basic TLS Secure Transport Connection Profile (retired) ๐ชฆ
# only available if underlying TLS library supports 3DES
+pa,--profile-aesโ AES TLS Secure Transport Connection Profile (retired) ๐ชฆ+pn,--profile-nullโ Authenticated unencrypted communication (retired, was used in IHE ATNA) ๐ชฆ
๐ ciphersuite:
+cc,--list-ciphersโ list supported TLS ciphersuites and exit ๐+cs,--cipherโ[c]iphersuite name: string: add ciphersuite to list of negotiated suites ๐งฉ
๐ท๏ธ server name indication:
--no-sniโ do not use SNI (default) ๐ซ--request-sniโ[s]erver name: string: request server name s ๐
๐ฒ pseudo random generator:
+rs,--seedโ[f]ilename: string: seed random generator with contents of f ๐ฑ+ws,--write-seedโ write back modified seed (only with--seed) ๐พ+wf,--write-seed-fileโ[f]ilename: string(only with--seed): write modified seed to file f ๐
๐ชช peer authentication:
-rc,--require-peer-certโ verify peer certificate, fail if absent (default) โ-ic,--ignore-peer-certโ don't verify peer certificate ๐
๐ฆ output options ๐ฆ
๐๏ธ general:
-od,--output-directoryโ[d]irectory: string(default:"."): write received objects to existing directory d ๐
๐พ storage mode:
-B,--normalโ receive in memory, then write to disk (default) ๐ง+B,--bit-preservingโ receive directly to disk ๐ฝ--ignoreโ ignore store data, receive but do not store ๐ฎ
๐ NOTES ๐
Each file supplied on the command line will be sent to the SCP as part of a C-GET request. The query file must be a valid DICOM data set containing the dataset part of a C-GET-RQ message. The query file could, for instance, be created with the dump2dcm utility from a script like the following example:
# request all images for the patient with ID=PAT001
(0008,0052) CS [PATIENT] # QueryRetrieveLevel
(0010,0020) LO [PAT001] # PatientID
Another possibility is to use the dcmodify tool to create a file from scratch using the option --create-file with successive calls to the --insert option. Individual attributes can be modified or supplemented using the -k (or --key) option. For example the command:
getscu -k "0010,0020=PAT002" caesar 5678 patqry.dcm
will, when sent to the SCP caesar at TCP/IP port 5678, cause any PatientID attribute in patqry.dcm to have the value 'PAT002'. If such an attribute is present it will be replaced, if absent it will be inserted. The -k option can be present more than once. The value part (after the '=') may be absent causing the attribute to be sent with zero length. It is also possible to specify sequences, items and nested attributes using the -k option. In these cases, a special "path" notation has to be used. Details can be found in the dcmodify documentation.
If no file is specified on the command line, the query must be specified completely with one or more -k options. If multiple query files are provided, getscu will send multiple C-GET requests to the SCP. ๐
๐ Known Problems ๐
getscu is intended to be used as a testing tool for DICOM software developers. The query keys file must be created by hand based upon the contents of the SCP. ๐ซ
no cap, bestie: this is a developer testing-tool situation, and the query keys file is a handmade thing based on what the SCP has. ๐
- C-GET? yeah, not every Query/Retrieve SCP is gonna play nice with it ๐ the C-MOVE protocol โ which is what the
movescutool implements โ is way more common out there in the wild. iykyk. - also real talk:
getscumakes no attempt to stop you from sending a bad query. none. zero. it will absolutely let you cook ๐ฅ in particular, the query keys of a C-MOVE request should only contain theQueryRetrieveLevelattribute and one or more of the so-called "unique key attributes" (PatientID,StudyInstanceUID,SeriesInstanceUIDandSOPInstanceUID). that's the whole guest list, bestie โ nobody else gets in ๐
๐ DICOM Conformance ๐
โจ SCU Conformance โจ
okay so here's the tea on what getscu can do as an SCU โ it supports these SOP Classes, periodt:
GETPatientRootQueryRetrieveInformationModelโ1.2.840.10008.5.1.4.1.2.1.3GETStudyRootQueryRetrieveInformationModelโ1.2.840.10008.5.1.4.1.2.2.3GETPatientStudyOnlyQueryRetrieveInformationModelโ1.2.840.10008.5.1.4.1.2.3.3
the getscu application will propose presentation contexts for one of the abovementioned supported SOP Classes depending on your command line options (-P, -S, or -O). your flags, your fate ๐ฆ
for outgoing associations, these transfer syntaxes are supported:
LittleEndianImplicitTransferSyntaxโ1.2.840.10008.1.2LittleEndianExplicitTransferSyntaxโ1.2.840.10008.1.2.1DeflatedExplicitVRLittleEndianTransferSyntaxโ1.2.840.10008.1.2.1.99(*)BigEndianExplicitTransferSyntaxโ1.2.840.10008.1.2.2
(*) only if it was compiled with zlib support enabled ๐ check the --version output to find out. no zlib, no deflate, that's the rule ๐
which transfer syntaxes actually get proposed, and in what order, is fully up to you โ you specify that with the --propose options. main character energy, honestly ๐
๐ Storage Conformance ๐
and when getscu is out here being an SCP, it supports this one:
VerificationSOPClassโ1.2.840.10008.1.1
just the vibe check class, and honestly? she slays it ๐
...still going, bestie, the guest list is long but every single one of these is getting an invite ๐ Here's the rest of the SOP Class lineup โ name on the left, UID on the right, and yeah you need both, that's the whole point:
RETIRED_StoredPrintStorage 1.2.840.10008.5.1.1.27
RETIRED_HardcopyGrayscaleImageStorage 1.2.840.10008.5.1.1.29
RETIRED_HardcopyColorImageStorage 1.2.840.10008.5.1.1.30
ComputedRadiographyImageStorage 1.2.840.10008.5.1.4.1.1.1
DigitalXRayImageStorageForPresentation 1.2.840.10008.5.1.4.1.1.1.1
DigitalXRayImageStorageForProcessing 1.2.840.10008.5.1.4.1.1.1.1.1
DigitalMammographyXRayImageStorageForPresentation 1.2.840.10008.5.1.4.1.1.1.2
DigitalMammographyXRayImageStorageForProcessing 1.2.840.10008.5.1.4.1.1.1.2.1
DigitalIntraOralXRayImageStorageForPresentation 1.2.840.10008.5.1.4.1.1.1.3
DigitalIntraOralXRayImageStorageForProcessing 1.2.840.10008.5.1.4.1.1.1.3.1
CTImageStorage 1.2.840.10008.5.1.4.1.1.2
EnhancedCTImageStorage 1.2.840.10008.5.1.4.1.1.2.1
LegacyConvertedEnhancedCTImageStorage 1.2.840.10008.5.1.4.1.1.2.2
RETIRED_UltrasoundMultiframeImageStorage 1.2.840.10008.5.1.4.1.1.3
UltrasoundMultiframeImageStorage 1.2.840.10008.5.1.4.1.1.3.1
MRImageStorage 1.2.840.10008.5.1.4.1.1.4
EnhancedMRImageStorage 1.2.840.10008.5.1.4.1.1.4.1
MRSpectroscopyStorage 1.2.840.10008.5.1.4.1.1.4.2
EnhancedMRColorImageStorage 1.2.840.10008.5.1.4.1.1.4.3
LegacyConvertedEnhancedMRImageStorage 1.2.840.10008.5.1.4.1.1.4.4
RETIRED_NuclearMedicineImageStorage 1.2.840.10008.5.1.4.1.1.5
RETIRED_UltrasoundImageStorage 1.2.840.10008.5.1.4.1.1.6
UltrasoundImageStorage 1.2.840.10008.5.1.4.1.1.6.1
EnhancedUSVolumeStorage 1.2.840.10008.5.1.4.1.1.6.2
SecondaryCaptureImageStorage 1.2.840.10008.5.1.4.1.1.7
MultiframeSingleBitSecondaryCaptureImageStorage 1.2.840.10008.5.1.4.1.1.7.1
MultiframeGrayscaleByteSecondaryCaptureImageStorage 1.2.840.10008.5.1.4.1.1.7.2
MultiframeGrayscaleWordSecondaryCaptureImageStorage 1.2.840.10008.5.1.4.1.1.7.3
MultiframeTrueColorSecondaryCaptureImageStorage 1.2.840.10008.5.1.4.1.1.7.4
RETIRED_StandaloneOverlayStorage 1.2.840.10008.5.1.4.1.1.8
RETIRED_StandaloneCurveStorage 1.2.840.10008.5.1.4.1.1.9
TwelveLeadECGWaveformStorage 1.2.840.10008.5.1.4.1.1.9.1.1
GeneralECGWaveformStorage 1.2.840.10008.5.1.4.1.1.9.1.2
AmbulatoryECGWaveformStorage 1.2.840.10008.5.1.4.1.1.9.1.3
HemodynamicWaveformStorage 1.2.840.10008.5.1.4.1.1.9.2.1
CardiacElectrophysiologyWaveformStorage 1.2.840.10008.5.1.4.1.1.9.3.1
BasicVoiceAudioWaveformStorage 1.2.840.10008.5.1.4.1.1.9.4.1
GeneralAudioWaveformStorage 1.2.840.10008.5.1.4.1.1.9.4.2
ArterialPulseWaveformStorage 1.2.840.10008.5.1.4.1.1.9.5.1
RespiratoryWaveformStorage 1.2.840.10008.5.1.4.1.1.9.6.1
RETIRED_StandaloneModalityLUTStorage 1.2.840.10008.5.1.4.1.1.10
RETIRED_StandaloneVOILUTStorage 1.2.840.10008.5.1.4.1.1.11
GrayscaleSoftcopyPresentationStateStorage 1.2.840.10008.5.1.4.1.1.11.1
ColorSoftcopyPresentationStateStorage 1.2.840.10008.5.1.4.1.1.11.2
PseudoColorSoftcopyPresentationStateStorage 1.2.840.10008.5.1.4.1.1.11.3
BlendingSoftcopyPresentationStateStorage 1.2.840.10008.5.1.4.1.1.11.4
XAXRFGrayscaleSoftcopyPresentationStateStorage 1.2.840.10008.5.1.4.1.1.11.5
XRayAngiographicImageStorage 1.2.840.10008.5.1.4.1.1.12.1
EnhancedXAImageStorage 1.2.840.10008.5.1.4.1.1.12.1.1
XRayRadiofluoroscopicImageStorage 1.2.840.10008.5.1.4.1.1.12.2
EnhancedXRFImageStorage 1.2.840.10008.5.1.4.1.1.12.2.1
RETIRED_XRayAngiographicBiPlaneImageStorage 1.2.840.10008.5.1.4.1.1.12.3
XRay3DAngiographicImageStorage 1.2.840.10008.5.1.4.1.1.13.1.1
XRay3DCraniofacialImageStorage 1.2.840.10008.5.1.4.1.1.13.1.2
BreastTomosynthesisImageStorage 1.2.840.10008.5.1.4.1.1.13.1.3
IntravascularOpt.Coh.Tom.ImageStorageForPresentation 1.2.840.10008.5.1.4.1.1.14.1
IntravascularOpt.Coh.Tom.ImageStorageForProcessing 1.2.840.10008.5.1.4.1.1.14.2
NuclearMedicineImageStorage 1.2.840.10008.5.1.4.1.1.20
RawDataStorage 1.2.840.10008.5.1.4.1.1.66
SpatialRegistrationStorage 1.2.840.10008.5.1.4.1.1.66.1
SpatialFiducialsStorage 1.2.840.10008.5.1.4.1.1.66.2
DeformableSpatialRegistrationStorage 1.2.840.10008.5.1.4.1.1.66.3
SegmentationStorage 1.2.840.10008.5.1.4.1.1.66.4
SurfaceSegmentationStorage 1.2.840.10008.5.1.4.1.1.66.5
RealWorldValueMappingStorage 1.2.840.10008.5.1.4.1.1.67
SurfaceScanMeshStorage 1.2.840.10008.5.1.4.1.1.68.1
SurfaceScanPointCloudStorage 1.2.840.10008.5.1.4.1.1.68.2
RETIRED_VLImageStorage 1.2.840.10008.5.1.4.1.1.77.1
VLEndoscopicImageStorage 1.2.840.10008.5.1.4.1.1.77.1.1
VideoEndoscopicImageStorage 1.2.840.10008.5.1.4.1.1.77.1.1.1
VLMicroscopicImageStorage 1.2.840.10008.5.1.4.1.1.77.1.2
VideoMicroscopicImageStorage 1.2.840.10008.5.1.4.1.1.77.1.2.1
VLSlideCoordinatesMicroscopicImageStorage 1.2.840.10008.5.1.4.1.1.77.1.3
VLPhotographicImageStorage 1.2.840.10008.5.1.4.1.1.77.1.4
VideoPhotographicImageStorage 1.2.840.10008.5.1.4.1.1.77.1.4.1
OphthalmicPhotography8BitImageStorage 1.2.840.10008.5.1.4.1.1.77.1.5.1
OphthalmicPhotography16BitImageStorage 1.2.840.10008.5.1.4.1.1.77.1.5.2
StereometricRelationshipStorage 1.2.840.10008.5.1.4.1.1.77.1.5.3
OphthalmicTomographyImageStorage 1.2.840.10008.5.1.4.1.1.77.1.5.4
VLWholeSlideMicroscopyImageStorage 1.2.840.10008.5.1.4.1.1.77.1.6
RETIRED_VLMultiframeImageStorage 1.2.840.10008.5.1.4.1.1.77.2
LensometryMeasurementsStorage 1.2.840.10008.5.1.4.1.1.78.1
AutorefractionMeasurementsStorage 1.2.840.10008.5.1.4.1.1.78.2
KeratometryMeasurementsStorage 1.2.840.10008.5.1.4.1.1.78.3
SubjectiveRefractionMeasurementsStorage 1.2.840.10008.5.1.4.1.1.78.4
VisualAcuityMeasurementsStorage 1.2.840.10008.5.1.4.1.1.78.5
SpectaclePrescriptionReportStorage 1.2.840.10008.5.1.4.1.1.78.6
OphthalmicAxialMeasurementsStorage 1.2.840.10008.5.1.4.1.1.78.7
IntraocularLensCalculationsStorage 1.2.840.10008.5.1.4.1.1.78.8
MacularGridThicknessAndVolumeReportStorage 1.2.840.10008.5.1.4.1.1.79.1
OphthalmicVisualFieldStaticPerimetryMeasurementsSt. 1.2.840.10008.5.1.4.1.1.80.1
OphthalmicThicknessMapStorage 1.2.840.10008.5.1.4.1.1.81.1
BasicTextSRStorage 1.2.840.10008.5.1.4.1.1.88.11
EnhancedSRStorage 1.2.840.10008.5.1.4.1.1.88.22
ComprehensiveSRStorage 1.2.840.10008.5.1.4.1.1.88.33
Comprehensive3DSRStorage 1.2.840.10008.5.1.4.1.1.88.34
ProcedureLogStorage 1.2.840.10008.5.1.4.1.1.88.40
MammographyCADSRStorage 1.2.840.10008.5.1.4.1.1.88.50
KeyObjectSelectionDocumentStorage 1.2.840.10008.5.1.4.1.1.88.59
ChestCADSRStorage 1.2.840.10008.5.1.4.1.1.88.65
XRayRadiationDoseSRStorage 1.2.840.10008.5.1.4.1.1.88.67
ColonCADSRStorage 1.2.840.10008.5.1.4.1.1.88.69
ImplantationPlanSRStorage 1.2.840.10008.5.1.4.1.1.88.70
EncapsulatedPDFStorage 1.2.840.10008.5.1.4.1.1.104.1
EncapsulatedCDAStorage 1.2.840.10008.5.1.4.1.1.104.2
PositronEmissionTomographyImageStorage 1.2.840.10008.5.1.4.1.1.128
LegacyConvertedEnhancedPETImageStorage 1.2.840.10008.5.1.4.1.1.128.1
RETIRED_StandalonePETCurveStorage 1.2.840.10008.5.1.4.1.1.129
EnhancedPETImageStorage 1.2.840.10008.5.1.4.1.1.130
BasicStructuredDisplayStorage 1.2.840.10008.5.1.4.1.1.131
RTImageStorage 1.2.840.10008.5.1.4.1.1.481.1
RTDoseStorage 1.2.840.10008.5.1.4.1.1.481.2
RTStructureSetStorage 1.2.840.10008.5.1.4.1.1.481.3
RTBeamsTreatmentRecordStorage 1.2.840.10008.5.1.4.1.1.481.4
RTPlanStorage 1.2.840.10008.5.1.4.1.1.481.5
RTBrachyTreatmentRecordStorage 1.2.840.10008.5.1.4.1.1.481.6
RTTreatmentSummaryRecordStorage 1.2.840.10008.5.1.4.1.1.481.7
RTIonPlanStorage 1.2.840.10008.5.1.4.1.1.481.8
RTIonBeamsTreatmentRecordStorage 1.2.840.10008.5.1.4.1.1.481.9
RTBeamsDeliveryInstructionStorage 1.2.840.10008.5.1.4.34.7
Okay phew, that's the whole roster ๐ซถ Now for the actual tea: getscu will usually accept presentation contexts for all of the SOP Classes we just listed up there, using any of these transfer syntaxes:
LittleEndianImplicitTransferSyntax 1.2.840.10008.1.2
LittleEndianExplicitTransferSyntax 1.2.840.10008.1.2.1
BigEndianExplicitTransferSyntax 1.2.840.10008.1.2.2
And here's where it gets a lil opinionated ๐ When it's acting as a storage SCP, getscu prefers transfer syntaxes that have an explicit encoding over the default implicit transfer syntax โ it's just built different, no cap. And if getscu happens to be running on big-endian hardware, it'll prefer BigEndianExplicit over LittleEndianExplicit (and the other way around on little-endian, duh). You can absolutely change all of this with the --prefer options, which are up above if you skipped 'em (go back, bestie, they're important ๐). And depending on which --prefer option you actually ended up using, a combination of the following transfer syntaxes is supported:
LittleEndianImplicitTransferSyntaxโ1.2.840.10008.1.2LittleEndianExplicitTransferSyntaxโ1.2.840.10008.1.2.1DeflatedExplicitVRLittleEndianTransferSyntaxโ1.2.840.10008.1.2.1.99(*)BigEndianExplicitTransferSyntaxโ1.2.840.10008.1.2.2JPEGProcess1TransferSyntaxโ1.2.840.10008.1.2.4.50JPEGProcess2_4TransferSyntaxโ1.2.840.10008.1.2.4.51JPEGProcess14SV1TransferSyntaxโ1.2.840.10008.1.2.4.70JPEGLSLosslessTransferSyntaxโ1.2.840.10008.1.2.4.80JPEGLSLossyTransferSyntaxโ1.2.840.10008.1.2.4.81JPEG2000LosslessOnlyTransferSyntaxโ1.2.840.10008.1.2.4.90JPEG2000TransferSyntaxโ1.2.840.10008.1.2.4.91MPEG2MainProfileAtMainLevelTransferSyntaxโ1.2.840.10008.1.2.4.100MPEG2MainProfileAtHighLevelTransferSyntaxโ1.2.840.10008.1.2.4.101MPEG4HighProfileLevel4_1TransferSyntaxโ1.2.840.10008.1.2.4.102MPEG4BDcompatibleHighProfileLevel4_1TransferSyntaxโ1.2.840.10008.1.2.4.103MPEG4HighProfileLevel4_2_For2DVideoTransferSyntaxโ1.2.840.10008.1.2.4.104MPEG4HighProfileLevel4_2_For3DVideoTransferSyntaxโ1.2.840.10008.1.2.4.105MPEG4StereoHighProfileLevel4_2TransferSyntaxโ1.2.840.10008.1.2.4.106HEVCMainProfileLevel5_1TransferSyntaxโ1.2.840.10008.1.2.4.107HEVCMain10ProfileLevel5_1TransferSyntaxโ1.2.840.10008.1.2.4.108RLELosslessTransferSyntaxโ1.2.840.10008.1.2.5
(*) only if it was compiled with zlib support enabled โ peep the --version output to check, bestie ๐ซถ
Also, huge heads-up: getscu does not support extended negotiation. That's just how it is, no notes ๐
๐ EXAMPLES ๐
okay so watch this:
getscu --patient --call ARCHIVE caesar 104 q.dcm
That sends the attributes contained in the DICOM file q.dcm as part of a C-GET request to the application entity ARCHIVE on the host caesar at port 104, using the Patient Root query model. And getscu itself? It rolls with the default AE title GETSCU. main character energy โจ
Now here's the little plot twist you need to know about โ in contrast to C-MOVE-based Query/Retrieve SOP Classes, the C-GET-based SOP Classes that getscu uses only permit retrieving the desired objects on the same connection, i.e. getscu will receive the objects itself. So no, you can't tell the SCP to yeet the objects over to a third party. ๐ญ And that's literally not getscu's fault โ it's a limitation of the DICOM protocol itself, not of the getscu tool. fr fr.
๐ LOGGING ๐
So the level of logging output of the various command line tools and underlying libraries? That's up to you, bestie โ user's choice. By default, only errors and warnings get written to the standard error stream. Basic but valid.
Wanna see more? --verbose also reports informational messages like processing details. ๐ And --debug gets you more details on the internal activity, e.g. for debugging purposes โ perfect when you're being a little detective ๐
Other logging levels can be selected using --log-level. And in --quiet mode? Only fatal errors are reported. In those very severe error events, the application will usually terminate ๐ like okay dramatic but fair.
For more details on the different logging levels, see the documentation of module "oflog".
Now, if you want that logging output written to a file (optionally with logfile rotation ๐ซ), to syslog (Unix) or to the event log (Windows), use --log-config. This configuration file also allows for directing only certain messages to a particular output stream and for filtering certain messages based on the module or application where they're generated. An example configuration file is provided in <etcdir>/logger.cfg โ go look, it's giving helpful ๐
๐ COMMAND LINE ๐
All command line tools use the following notation for parameters: square brackets enclose optional values (0-1), three trailing dots indicate that multiple values are allowed (1-n), and a combination of both means 0 to n values. Little syntax cheat sheet, love that for us ๐
Command line options are distinguished from parameters by a leading '+' or '-' sign, respectively. Usually, order and position of command line options are arbitrary (i.e. they can appear anywhere). However, if options are mutually exclusive, the rightmost appearance is used. This behavior conforms to the standard evaluation rules of common Unix shells. So the rightmost one wins, no cap ๐
In addition, one or more command files can be specified using an '@' sign as a prefix to the filename (e.g. @command.txt). Such a command argument is replaced by the content of the corresponding text file (multiple whitespaces are treated as a single separator unless they appear between two quotation marks) prior to any further evaluation.
โ ๏ธ Please note that a command file cannot contain another command file. No inception, sorry ๐
This simple but effective approach allows one to summarize common combinations of options/parameters and avoids longish and confusing command lines (an example is provided in file <datadir>/dumppat.txt). iconic honestly โจ
๐ฆ ENVIRONMENT ๐ฆ
The getscu utility will attempt to load DICOM data dictionaries specified in the DCMDICTPATH environment variable. By default, i.e. if the DCMDICTPATH environment variable is not set, the file <datadir>/dicom.dic will be loaded โ unless the dictionary is built into the application (default for Windows). ๐ช
The default behavior should be preferred, and the DCMDICTPATH environment variable only used when alternative data dictionaries are required. Like, don't touch it unless you gotta ๐
The DCMDICTPATH environment variable has the same format as the Unix shell PATH variable in that a colon (":") separates entries. On Windows systems, a semicolon (";") is used as a separator. The data dictionary code will attempt to load each file specified in the DCMDICTPATH environment variable. And it is an error if no data dictionary can be loaded. ๐
๐ธ SEE ALSO ๐ธ
Go read these too, they're the friend group:
๐ COPYRIGHT ๐
Copyright (C) 2011-2026 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
okay that's the whole page bestie, you're officially fluent ๐ this was Version 3.7.1, dated Sat Oct 17 2026 09:34:01 โ go query something and slay โจ๐๐ฆ
๐ฆ where this page comes from
- arch rolling: dcmtk 3.7.1-1 ยท BSD-3-Clause
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms