Mercurial > hg > orthanc
view Resources/DicomConformanceStatement.txt @ 2248:69b0f4e8a49b
Escape multipart type parameter value in Content-Type header
## Summary
Multipart responses do not quote/escape the value of their type
parameter (the subtype) even though it always contains at least one
special character (the slash "/"), which confuses standard-compliant
HTTP clients.
## Details
The Content-Type header in HTTP is in RFC 7231, Section 3.1.1.5:
https://tools.ietf.org/html/rfc7231#section-3.1.1.5
The section defers to the media type section (3.1.1.1) for the syntax of
the media type:
https://tools.ietf.org/html/rfc7231#section-3.1.1.1
This states that a parameter value can be quoted:
parameter = token "=" ( token / quoted-string )
A parameter value that matches the token production can be transmitted
either as a token or within a quoted-string. The quoted and unquoted
values are equivalent.
Tokens are defined in RFC 7230, Section 3.2.6 (via RFC 7231, appendix
C):
https://tools.ietf.org/html/rfc7231#appendix-C
https://tools.ietf.org/html/rfc7230#section-3.2.6
Here we observe that tokens cannot contain a slash "/" character:
token = 1*tchar
tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*"
/ "+" / "-" / "." / "^" / "_" / "`" / "|" / "~"
/ DIGIT / ALPHA
; any VCHAR, except delimiters
Delimiters are chosen from the set of US-ASCII visual characters not
allowed in a token (DQUOTE and "(),/:;<=>?@[\]{}").
However, the current implementation does not quote/escape the value of
the type parameter:
multipart/related; type=application/dicom
Instead, it should be:
multipart/related; type="application/dicom"
All of this also seems to apply to the MIME Content-Type header
definition, even though it is a little different:
https://www.iana.org/assignments/message-headers
https://tools.ietf.org/html/rfc2045#section-5.1
https://tools.ietf.org/html/rfc2387
author | Thibault Nélis <tn@osimis.io> |
---|---|
date | Mon, 16 Jan 2017 13:07:11 +0100 |
parents | 7219cdce7bba |
children | c9c34bb50f0a |
line wrap: on
line source
====================================== DICOM Conformance Statement of Orthanc ====================================== --------------------- Echo SCP Conformance --------------------- Orthanc supports the following SOP Classes as an SCP for C-Echo: VerificationSOPClass | 1.2.840.10008.1.1 --------------------- Store SCP Conformance --------------------- Orthanc supports the following SOP Classes as an SCP for C-Store: AmbulatoryECGWaveformStorage | 1.2.840.10008.5.1.4.1.1.9.1.3 ArterialPulseWaveformStorage | 1.2.840.10008.5.1.4.1.1.9.5.1 AutorefractionMeasurementsStorage | 1.2.840.10008.5.1.4.1.1.78.2 BasicStructuredDisplayStorage | 1.2.840.10008.5.1.4.1.1.131 BasicTextSRStorage | 1.2.840.10008.5.1.4.1.1.88.11 BasicVoiceAudioWaveformStorage | 1.2.840.10008.5.1.4.1.1.9.4.1 BlendingSoftcopyPresentationStateStorage | 1.2.840.10008.5.1.4.1.1.11.4 BreastTomosynthesisImageStorage | 1.2.840.10008.5.1.4.1.1.13.1.3 CardiacElectrophysiologyWaveformStorage | 1.2.840.10008.5.1.4.1.1.9.3.1 ChestCADSRStorage | 1.2.840.10008.5.1.4.1.1.88.65 ColonCADSRStorage | 1.2.840.10008.5.1.4.1.1.88.69 ColorSoftcopyPresentationStateStorage | 1.2.840.10008.5.1.4.1.1.11.2 ComprehensiveSRStorage | 1.2.840.10008.5.1.4.1.1.88.33 ComputedRadiographyImageStorage | 1.2.840.10008.5.1.4.1.1.1 CTImageStorage | 1.2.840.10008.5.1.4.1.1.2 DeformableSpatialRegistrationStorage | 1.2.840.10008.5.1.4.1.1.66.3 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 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 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 EncapsulatedCDAStorage | 1.2.840.10008.5.1.4.1.1.104.2 EncapsulatedPDFStorage | 1.2.840.10008.5.1.4.1.1.104.1 EnhancedCTImageStorage | 1.2.840.10008.5.1.4.1.1.2.1 EnhancedMRColorImageStorage | 1.2.840.10008.5.1.4.1.1.4.3 EnhancedMRImageStorage | 1.2.840.10008.5.1.4.1.1.4.1 EnhancedPETImageStorage | 1.2.840.10008.5.1.4.1.1.130 EnhancedSRStorage | 1.2.840.10008.5.1.4.1.1.88.22 EnhancedUSVolumeStorage | 1.2.840.10008.5.1.4.1.1.6.2 EnhancedXAImageStorage | 1.2.840.10008.5.1.4.1.1.12.1.1 EnhancedXRFImageStorage | 1.2.840.10008.5.1.4.1.1.12.2.1 GeneralAudioWaveformStorage | 1.2.840.10008.5.1.4.1.1.9.4.2 GeneralECGWaveformStorage | 1.2.840.10008.5.1.4.1.1.9.1.2 GenericImplantTemplateStorage | 1.2.840.10008.5.1.4.43.1 GrayscaleSoftcopyPresentationStateStorage | 1.2.840.10008.5.1.4.1.1.11.1 HemodynamicWaveformStorage | 1.2.840.10008.5.1.4.1.1.9.2.1 ImplantAssemblyTemplateStorage | 1.2.840.10008.5.1.4.44.1 ImplantationPlanSRDocumentStorage | 1.2.840.10008.5.1.4.1.1.88.70 ImplantTemplateGroupStorage | 1.2.840.10008.5.1.4.45.1 IntraocularLensCalculationsStorage | 1.2.840.10008.5.1.4.1.1.78.8 KeratometryMeasurementsStorage | 1.2.840.10008.5.1.4.1.1.78.3 KeyObjectSelectionDocumentStorage | 1.2.840.10008.5.1.4.1.1.88.59 LensometryMeasurementsStorage | 1.2.840.10008.5.1.4.1.1.78.1 MacularGridThicknessAndVolumeReportStorage | 1.2.840.10008.5.1.4.1.1.79.1 MammographyCADSRStorage | 1.2.840.10008.5.1.4.1.1.88.50 MRImageStorage | 1.2.840.10008.5.1.4.1.1.4 MRSpectroscopyStorage | 1.2.840.10008.5.1.4.1.1.4.2 MultiframeGrayscaleByteSecondaryCaptureImageStorage | 1.2.840.10008.5.1.4.1.1.7.2 MultiframeGrayscaleWordSecondaryCaptureImageStorage | 1.2.840.10008.5.1.4.1.1.7.3 MultiframeSingleBitSecondaryCaptureImageStorage | 1.2.840.10008.5.1.4.1.1.7.1 MultiframeTrueColorSecondaryCaptureImageStorage | 1.2.840.10008.5.1.4.1.1.7.4 NuclearMedicineImageStorage | 1.2.840.10008.5.1.4.1.1.20 OphthalmicAxialMeasurementsStorage | 1.2.840.10008.5.1.4.1.1.78.7 OphthalmicPhotography16BitImageStorage | 1.2.840.10008.5.1.4.1.1.77.1.5.2 OphthalmicPhotography8BitImageStorage | 1.2.840.10008.5.1.4.1.1.77.1.5.1 OphthalmicTomographyImageStorage | 1.2.840.10008.5.1.4.1.1.77.1.5.4 OphthalmicVisualFieldStaticPerimetryMeasurementsStorage | 1.2.840.10008.5.1.4.1.1.80.1 PositronEmissionTomographyImageStorage | 1.2.840.10008.5.1.4.1.1.128 ProcedureLogStorage | 1.2.840.10008.5.1.4.1.1.88.40 PseudoColorSoftcopyPresentationStateStorage | 1.2.840.10008.5.1.4.1.1.11.3 RawDataStorage | 1.2.840.10008.5.1.4.1.1.66 RealWorldValueMappingStorage | 1.2.840.10008.5.1.4.1.1.67 RespiratoryWaveformStorage | 1.2.840.10008.5.1.4.1.1.9.6.1 RTBeamsTreatmentRecordStorage | 1.2.840.10008.5.1.4.1.1.481.4 RTBrachyTreatmentRecordStorage | 1.2.840.10008.5.1.4.1.1.481.6 RTDoseStorage | 1.2.840.10008.5.1.4.1.1.481.2 RTImageStorage | 1.2.840.10008.5.1.4.1.1.481.1 RTIonBeamsTreatmentRecordStorage | 1.2.840.10008.5.1.4.1.1.481.9 RTIonPlanStorage | 1.2.840.10008.5.1.4.1.1.481.8 RTPlanStorage | 1.2.840.10008.5.1.4.1.1.481.5 RTStructureSetStorage | 1.2.840.10008.5.1.4.1.1.481.3 RTTreatmentSummaryRecordStorage | 1.2.840.10008.5.1.4.1.1.481.7 SecondaryCaptureImageStorage | 1.2.840.10008.5.1.4.1.1.7 SegmentationStorage | 1.2.840.10008.5.1.4.1.1.66.4 SpatialFiducialsStorage | 1.2.840.10008.5.1.4.1.1.66.2 SpatialRegistrationStorage | 1.2.840.10008.5.1.4.1.1.66.1 SpectaclePrescriptionReportStorage | 1.2.840.10008.5.1.4.1.1.78.6 StereometricRelationshipStorage | 1.2.840.10008.5.1.4.1.1.77.1.5.3 SubjectiveRefractionMeasurementsStorage | 1.2.840.10008.5.1.4.1.1.78.4 SurfaceSegmentationStorage | 1.2.840.10008.5.1.4.1.1.66.5 TwelveLeadECGWaveformStorage | 1.2.840.10008.5.1.4.1.1.9.1.1 UltrasoundImageStorage | 1.2.840.10008.5.1.4.1.1.6.1 UltrasoundMultiframeImageStorage | 1.2.840.10008.5.1.4.1.1.3.1 VideoEndoscopicImageStorage | 1.2.840.10008.5.1.4.1.1.77.1.1.1 VideoMicroscopicImageStorage | 1.2.840.10008.5.1.4.1.1.77.1.2.1 VideoPhotographicImageStorage | 1.2.840.10008.5.1.4.1.1.77.1.4.1 VisualAcuityMeasurementsStorage | 1.2.840.10008.5.1.4.1.1.78.5 VLEndoscopicImageStorage | 1.2.840.10008.5.1.4.1.1.77.1.1 VLMicroscopicImageStorage | 1.2.840.10008.5.1.4.1.1.77.1.2 VLPhotographicImageStorage | 1.2.840.10008.5.1.4.1.1.77.1.4 VLSlideCoordinatesMicroscopicImageStorage | 1.2.840.10008.5.1.4.1.1.77.1.3 VLWholeSlideMicroscopyImageStorage | 1.2.840.10008.5.1.4.1.1.77.1.6 XAXRFGrayscaleSoftcopyPresentationStateStorage | 1.2.840.10008.5.1.4.1.1.11.5 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 XRayAngiographicImageStorage | 1.2.840.10008.5.1.4.1.1.12.1 XRayRadiationDoseSRStorage | 1.2.840.10008.5.1.4.1.1.88.67 XRayRadiofluoroscopicImageStorage | 1.2.840.10008.5.1.4.1.1.12.2 RETIRED_HardcopyColorImageStorage | 1.2.840.10008.5.1.1.30 RETIRED_HardcopyGrayscaleImageStorage | 1.2.840.10008.5.1.1.29 RETIRED_NuclearMedicineImageStorage | 1.2.840.10008.5.1.4.1.1.5 RETIRED_StandaloneCurveStorage | 1.2.840.10008.5.1.4.1.1.9 RETIRED_StandaloneModalityLUTStorage | 1.2.840.10008.5.1.4.1.1.10 RETIRED_StandaloneOverlayStorage | 1.2.840.10008.5.1.4.1.1.8 RETIRED_StandalonePETCurveStorage | 1.2.840.10008.5.1.4.1.1.129 RETIRED_StandaloneVOILUTStorage | 1.2.840.10008.5.1.4.1.1.11 RETIRED_StoredPrintStorage | 1.2.840.10008.5.1.1.27 RETIRED_UltrasoundImageStorage | 1.2.840.10008.5.1.4.1.1.6 RETIRED_UltrasoundMultiframeImageStorage | 1.2.840.10008.5.1.4.1.1.3 RETIRED_VLImageStorage | 1.2.840.10008.5.1.4.1.1.77.1 RETIRED_VLMultiFrameImageStorage | 1.2.840.10008.5.1.4.1.1.77.2 RETIRED_XRayAngiographicBiPlaneImageStorage | 1.2.840.10008.5.1.4.1.1.12.3 DRAFT_SRAudioStorage | 1.2.840.10008.5.1.4.1.1.88.2 DRAFT_SRComprehensiveStorage | 1.2.840.10008.5.1.4.1.1.88.4 DRAFT_SRDetailStorage | 1.2.840.10008.5.1.4.1.1.88.3 DRAFT_SRTextStorage | 1.2.840.10008.5.1.4.1.1.88.1 DRAFT_WaveformStorage | 1.2.840.10008.5.1.4.1.1.9.1 DRAFT_RTBeamsDeliveryInstructionStorage | 1.2.840.10008.5.1.4.34.1 -------------------- Find SCP Conformance -------------------- Orthanc supports the following SOP Classes as an SCP for C-Find: FINDPatientRootQueryRetrieveInformationModel | 1.2.840.10008.5.1.4.1.2.1.1 FINDStudyRootQueryRetrieveInformationModel | 1.2.840.10008.5.1.4.1.2.2.1 FINDModalityWorklistInformationModel | 1.2.840.10008.5.1.4.31 -------------------- Move SCP Conformance -------------------- Orthanc supports the following SOP Classes as an SCP for C-Move: MOVEPatientRootQueryRetrieveInformationModel | 1.2.840.10008.5.1.4.1.2.1.2 MOVEStudyRootQueryRetrieveInformationModel | 1.2.840.10008.5.1.4.1.2.2.2 --------------------- Echo SCU Conformance --------------------- Orthanc supports the following SOP Classes as an SCU for C-Echo: VerificationSOPClass | 1.2.840.10008.1.1 --------------------- Store SCU Conformance --------------------- All the SOP Classes that are listed in the "Store SCP Conformance" (see above) section are available as an SCU for C-Store. -------------------- Find SCU Conformance -------------------- Orthanc supports the following SOP Classes as an SCU for C-Find: FINDPatientRootQueryRetrieveInformationModel | 1.2.840.10008.5.1.4.1.2.1.1 FINDStudyRootQueryRetrieveInformationModel | 1.2.840.10008.5.1.4.1.2.2.1 -------------------- Move SCU Conformance -------------------- Orthanc supports the following SOP Classes as an SCU for C-Move: MOVEPatientRootQueryRetrieveInformationModel | 1.2.840.10008.5.1.4.1.2.1.2 MOVEStudyRootQueryRetrieveInformationModel | 1.2.840.10008.5.1.4.1.2.2.2 ----------------- Transfer Syntaxes ----------------- Orthanc will accept and negotiate presentation contexts for all of the abovementioned supported SOP Classes using any of the following 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 DeflatedExplicitVRLittleEndianTransferSyntax | 1.2.840.10008.1.2.1.99 JPEGProcess1TransferSyntax | 1.2.840.10008.1.2.4.50 JPEGProcess2_4TransferSyntax | 1.2.840.10008.1.2.4.51 JPEGProcess3_5TransferSyntax | 1.2.840.10008.1.2.4.52 JPEGProcess6_8TransferSyntax | 1.2.840.10008.1.2.4.53 JPEGProcess7_9TransferSyntax | 1.2.840.10008.1.2.4.54 JPEGProcess10_12TransferSyntax | 1.2.840.10008.1.2.4.55 JPEGProcess11_13TransferSyntax | 1.2.840.10008.1.2.4.56 JPEGProcess14TransferSyntax | 1.2.840.10008.1.2.4.57 JPEGProcess15TransferSyntax | 1.2.840.10008.1.2.4.58 JPEGProcess16_18TransferSyntax | 1.2.840.10008.1.2.4.59 JPEGProcess17_19TransferSyntax | 1.2.840.10008.1.2.4.60 JPEGProcess20_22TransferSyntax | 1.2.840.10008.1.2.4.61 JPEGProcess21_23TransferSyntax | 1.2.840.10008.1.2.4.62 JPEGProcess24_26TransferSyntax | 1.2.840.10008.1.2.4.63 JPEGProcess25_27TransferSyntax | 1.2.840.10008.1.2.4.64 JPEGProcess28TransferSyntax | 1.2.840.10008.1.2.4.65 JPEGProcess29TransferSyntax | 1.2.840.10008.1.2.4.66 JPEGProcess14SV1TransferSyntax | 1.2.840.10008.1.2.4.70 JPEGLSLosslessTransferSyntax | 1.2.840.10008.1.2.4.80 JPEGLSLossyTransferSyntax | 1.2.840.10008.1.2.4.81 JPEG2000LosslessOnlyTransferSyntax | 1.2.840.10008.1.2.4.90 JPEG2000TransferSyntax | 1.2.840.10008.1.2.4.91 JPEG2000Part2MulticomponentImageCompressionLosslessOnlyTransferSyntax | 1.2.840.10008.1.2.4.92 JPEG2000Part2MulticomponentImageCompressionTransferSyntax | 1.2.840.10008.1.2.4.93 JPIPReferencedTransferSyntax | 1.2.840.10008.1.2.4.94 JPIPReferencedDeflateTransferSyntax | 1.2.840.10008.1.2.4.95 MPEG2MainProfileAtMainLevelTransferSyntax | 1.2.840.10008.1.2.4.100 MPEG2MainProfileAtHighLevelTransferSyntax | 1.2.840.10008.1.2.4.101 RLELosslessTransferSyntax | 1.2.840.10008.1.2.5 It is possible to disable a subset of these transfer syntaxes thanks to the "*TransferSyntaxAccepted" options in the Orthanc configuration file. When possible, Orthanc will prefer the LittleEndianImplicitTransferSyntax transfer syntax (1.2.840.10008.1.2). Orthanc does not support extended negotiation. -------------------- Implementation notes -------------------- The information above about the SCP support is readily extracted from the function "Orthanc::Internals::AcceptAssociation()" from file "OrthancServer/Internals/CommandDispatcher.cpp". The information above about the SCU support is derived from the class "Orthanc::DicomUserConnection" from file "OrthancServer/DicomProtocol/DicomUserConnection.cpp".