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".