You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/healthcare-apis/dicom/dicom-services-conformance-statement.md
+29-14Lines changed: 29 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -42,7 +42,7 @@ You'll find example requests for supported transactions in the [Postman collecti
42
42
43
43
## Preamble Sanitization
44
44
45
-
The service ignores the 128-byte File Preamble, and replaces its contents with null characters. This ensures that no files passed through the service are vulnerable to the [malicious preamble vulnerability](https://dicom.nema.org/medical/dicom/current/output/chtml/part10/sect_7.5.html). However, this also means that [preambles used to encode dual format content](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6489422/) such as TIFF can't be used with the service.
45
+
The service ignores the 128-byte File Preamble, and replaces its contents with null characters. This behavior ensures that no files passed through the service are vulnerable to the [malicious preamble vulnerability](https://dicom.nema.org/medical/dicom/current/output/chtml/part10/sect_7.5.html). However, this also means that [preambles used to encode dual format content](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6489422/) such as TIFF can't be used with the service.
46
46
47
47
## Studies Service
48
48
@@ -94,12 +94,12 @@ Only transfer syntaxes with explicit Value Representations are accepted.
94
94
|`202 (Accepted)`| Some instances in the request have been stored but others have failed. |
95
95
|`204 (No Content)`| No content was provided in the store transaction request. |
96
96
|`400 (Bad Request)`| The request was badly formatted. For example, the provided study instance identifier didn't conform to the expected UID format. |
97
-
|`401 (Unauthorized)`| The client isnn't authenticated. |
97
+
|`401 (Unauthorized)`| The client isn't authenticated. |
98
98
|`403 (Forbidden)`| The user isn't authorized. |
99
99
|`406 (Not Acceptable)`| The specified `Accept` header isn't supported. |
100
100
|`409 (Conflict)`| None of the instances in the store transaction request have been stored. |
101
101
|`415 (Unsupported Media Type)`| The provided `Content-Type` isn't supported. |
102
-
|`503 (Service Unavailable)`| The service is unavailable or busy. Please try again later. |
102
+
|`503 (Service Unavailable)`| The service is unavailable or busy. Try again later. |
103
103
104
104
### Store response payload
105
105
@@ -118,6 +118,7 @@ Each dataset in the `FailedSOPSequence` will have the following elements (if the
118
118
| (0008, 1150) |`ReferencedSOPClassUID`| The SOP class unique identifier of the instance that failed to store. |
119
119
| (0008, 1155) |`ReferencedSOPInstanceUID`| The SOP instance unique identifier of the instance that failed to store. |
120
120
| (0008, 1197) |`FailureReason`| The reason code why this instance failed to store. |
121
+
| (0074, 1048) |`FailedAttributesSequence`| The sequence of `ErrorComment` that includes the reason for each failed attribute. |
121
122
122
123
Each dataset in the `ReferencedSOPSequence` will have the following elements:
123
124
@@ -192,6 +193,17 @@ An example response with `Accept` header `application/dicom+json`:
192
193
|`45070`| A DICOM instance with the same `StudyInstanceUID`, `SeriesInstanceUID`, and `SopInstanceUID` has already been stored. If you wish to update the contents, delete this instance first. |
193
194
|`45071`| A DICOM instance is being created by another process, or the previous attempt to create has failed and the cleanup process hasn't had chance to clean up yet. Delete the instance first before attempting to create again. |
194
195
196
+
#### Store warning reason codes
197
+
| Code | Description |
198
+
| :---- | :---------- |
199
+
|`45063`| A DICOM instance Data Set doesn't match SOP Class. The Studies Store Transaction (Section 10.5) observed that the Data Set didn't match the constraints of the SOP Class during storage of the instance. |
200
+
201
+
### Store Error Codes
202
+
203
+
| Code | Description |
204
+
| :---- | :---------- |
205
+
|`100`| The provided instance attributes didn't meet the validation criteria. |
206
+
195
207
### Retrieve (WADO-RS)
196
208
197
209
This Retrieve Transaction offers support for retrieving stored studies, series, instances, and frames by reference.
@@ -290,7 +302,7 @@ Cache validation is supported using the `ETag` mechanism. In the response to a m
290
302
|`403 (Forbidden)`| The user isn't authorized. |
291
303
|`404 (Not Found)`| The specified DICOM resource couldn't be found. |
292
304
|`406 (Not Acceptable)`| The specified `Accept` header isn't supported. |
293
-
|`503 (Service Unavailable)`| The service is unavailable or busy. Please try again later. |
305
+
|`503 (Service Unavailable)`| The service is unavailable or busy. Try again later. |
294
306
295
307
### Search (QIDO-RS)
296
308
@@ -319,7 +331,7 @@ The following parameters for each query are supported:
|`{attributeID}=`|`{value}`| 0...N | Search for attribute/ value matching in query. |
322
-
|`includefield=`|`{attributeID}`<br/>`all`| 0...N | The additional attributes to return in the response. Both, public and private tags are supported.<br/>When `all` is provided. Refer to [Search Response](#search-response) for more information about which attributes will be returned for each query type.<br/>If a mixture of `{attributeID}` and `all` is provided, the server will default to using `all`. |
334
+
|`includefield=`|`{attributeID}`<br/>`all`| 0...N | The additional attributes to return in the response. Both, public and private tags are supported.<br/>When `all` is provided, refer to [Search Response](#search-response) for more information about which attributes will be returned for each query type.<br/>If a mixture of `{attributeID}` and `all` is provided, the server will default to using `all`. |
323
335
|`limit=`|`{value}`| 0..1 | Integer value to limit the number of values returned in the response.<br/>Value can be between the range 1 >= x <= 200. Defaulted to 100. |
324
336
|`offset=`|`{value}`| 0..1 | Skip `{value}` results.<br/>If an offset is provided larger than the number of search query results, a 204 (no content) response will be returned. |
325
337
|`fuzzymatching=`|`true` / `false`| 0..1 | If true fuzzy matching is applied to PatientName attribute. It will do a prefix word match of any name part inside PatientName value. For example, if PatientName is "John^Doe", then "joh", "do", "jo do", "Doe" and "John Doe" will all match. However, "ohn" won't match. |
@@ -338,6 +350,7 @@ We support searching the following attributes and search types.
338
350
|`ReferringPhysicianName`| X | X | X |
339
351
|`StudyDate`| X | X | X |
340
352
|`StudyDescription`| X | X | X |
353
+
|`ModalitiesInStudy`| X | X | X |
341
354
|`SeriesInstanceUID`|| X | X |
342
355
|`Modality`|| X | X |
343
356
|`PerformedProcedureStepStartDate`|| X | X |
@@ -355,7 +368,7 @@ We support the following matching types.
355
368
356
369
#### Attribute ID
357
370
358
-
Tags can be encoded in a number of ways for the query parameter. We've partially implemented the standard as defined in [PS3.18 6.7.1.1.1](http://dicom.nema.org/medical/dicom/2019a/output/chtml/part18/sect_6.7.html#sect_6.7.1.1.1). The following encodings for a tag are supported:
371
+
Tags can be encoded in several ways for the query parameter. We've partially implemented the standard as defined in [PS3.18 6.7.1.1.1](http://dicom.nema.org/medical/dicom/2019a/output/chtml/part18/sect_6.7.html#sect_6.7.1.1.1). The following encodings for a tag are supported:
359
372
360
373
| Value | Example |
361
374
| :--------------- | :--------------- |
@@ -450,6 +463,8 @@ Along with those below attributes are returned:
450
463
* If the target resource is `All Series`, then `Study` level attributes are also returned.
451
464
* If the target resource is `All Instances`, then `Study` and `Series` level attributes are also returned.
452
465
* If the target resource is `Study's Instances`, then `Series` level attributes are also returned.
466
+
*`NumberOfStudyRelatedInstances` aggregated attribute is supported in `Study` level `includeField`.
467
+
*`NumberOfSeriesRelatedInstances` aggregated attribute is supported in `Series` level `includeField`.
453
468
454
469
### Search response codes
455
470
@@ -462,7 +477,7 @@ The query API returns one of the following status codes in the response:
462
477
|`400 (Bad Request)`| The server was unable to perform the query because the query component was invalid. Response body contains details of the failure. |
463
478
|`401 (Unauthorized)`| The client isn't authenticated. |
464
479
|`403 (Forbidden)`| The user isn't authorized. |
465
-
|`503 (Service Unavailable)`| The service is unavailable or busy. Please try again later. |
480
+
|`503 (Service Unavailable)`| The service is unavailable or busy. Try again later. |
466
481
467
482
### Additional notes
468
483
@@ -500,7 +515,7 @@ There are no restrictions on the request's `Accept` header, `Content-Type` heade
500
515
|`401 (Unauthorized)`| The client isn't authenticated. |
501
516
|`403 (Forbidden)`| The user isn't authorized. |
502
517
|`404 (Not Found)`| When the specified series wasn't found within a study or the specified instance wasn't found within the series. |
503
-
|`503 (Service Unavailable)`| The service is unavailable or busy. Please try again later. |
518
+
|`503 (Service Unavailable)`| The service is unavailable or busy. Try again later. |
504
519
505
520
### Delete response payload
506
521
@@ -540,7 +555,7 @@ If not specified in the URI, the payload dataset must contain the Workitem in th
540
555
541
556
The `Accept` and `Content-Type` headers are required in the request, and must both have the value `application/dicom+json`.
542
557
543
-
There are a number of requirements related to DICOM data attributes in the context of a specific transaction. Attributes may be required to be present, required to not be present, required to be empty, or required to not be empty. These requirements can be found [in this table](https://dicom.nema.org/medical/dicom/current/output/html/part04.html#table_CC.2.5-3).
558
+
There are several requirements related to DICOM data attributes in the context of a specific transaction. Attributes may be required to be present, required to not be present, required to be empty, or required to not be empty. These requirements can be found [in this table](https://dicom.nema.org/medical/dicom/current/output/html/part04.html#table_CC.2.5-3).
544
559
545
560
Notes on dataset attributes:
546
561
@@ -557,7 +572,7 @@ Notes on dataset attributes:
557
572
|`403 (Forbidden)`| The user isn't authorized. |
558
573
|`409 (Conflict)` |The Workitem already exists.
559
574
|`415 (Unsupported Media Type)`| The provided `Content-Type` isn't supported.
560
-
|`503 (Service Unavailable)`| The service is unavailable or busy. Please try again later.|
575
+
|`503 (Service Unavailable)`| The service is unavailable or busy. Try again later.|
561
576
562
577
#### Create Response Payload
563
578
@@ -576,7 +591,7 @@ There are [four valid Workitem states](https://dicom.nema.org/medical/dicom/curr
576
591
*`CANCELED`
577
592
*`COMPLETED`
578
593
579
-
This transaction will only succeed against Workitems in the `SCHEDULED` state. Any user can claim ownership of a Workitem by setting its Transaction UID and changing its state to `IN PROGRESS`. From then on, a user can only modify the Workitem by providing the correct Transaction UID. While UPS defines Watch and Event SOP classes that allow cancellation requests and other events to be forwarded, this DICOM service does not implement these classes, and so cancellation requests on workitems that are `IN PROGRESS` will return failure. An owned Workitem can be canceled via the [Change Workitem State](#change-workitem-state) transaction.
594
+
This transaction will only succeed against Workitems in the `SCHEDULED` state. Any user can claim ownership of a Workitem by setting its Transaction UID and changing its state to `IN PROGRESS`. From then on, a user can only modify the Workitem by providing the correct Transaction UID. While UPS defines Watch and Event SOP classes that allow cancellation requests and other events to be forwarded, this DICOM service doesn't implement these classes, and so cancellation requests on workitems that are `IN PROGRESS` will return failure. An owned Workitem can be canceled via the [Change Workitem State](#change-workitem-state) transaction.
580
595
581
596
|Method |Path| Description|
582
597
|:---|:---|:---|
@@ -699,7 +714,7 @@ The request payload shall contain the Change UPS State Data Elements. These data
699
714
|Code| Description|
700
715
|:---|:---|
701
716
|`200 (OK)`| Workitem Instance was successfully retrieved.|
702
-
|`400 (Bad Request)`|The request cannot be performed for one of the following reasons: (1) the request is invalid given the current state of the Target Workitem. (2) the Transaction UID is missing. (3) the Transaction UID is incorrect|
717
+
|`400 (Bad Request)`|The request can't be performed for one of the following reasons: (1) the request is invalid given the current state of the Target Workitem. (2) the Transaction UID is missing. (3) the Transaction UID is incorrect|
|`404 (Not Found)`| The Target Workitem wasn't found.|
@@ -785,7 +800,7 @@ The response will be an array of `0...N` DICOM datasets with the following attri
785
800
* All attributes in [DICOM PowerShell 3.4 Table CC.2.5-3](https://dicom.nema.org/medical/dicom/current/output/html/part04.html#table_CC.2.5-3) with a Return Key Type of 1 or 2
786
801
* All attributes in [DICOM PowerShell 3.4 Table CC.2.5-3](https://dicom.nema.org/medical/dicom/current/output/html/part04.html#table_CC.2.5-3) with a Return Key Type of 1C for which the conditional requirements are met
787
802
* All other Workitem attributes passed as match parameters
788
-
* All other Workitem attributes passed as includefield parameter values
803
+
* All other Workitem attributes passed as `includefield` parameter values
789
804
790
805
#### Search Response Codes
791
806
@@ -799,7 +814,7 @@ The query API will return one of the following status codes in the response:
799
814
|`400 (Bad Request)`| The was a problem with the request. For example, invalid Query Parameter syntax. The Response body contains details of the failure.|
800
815
|`401 (Unauthorized)`| The client isn't authenticated.|
801
816
|`403 (Forbidden)`| The user isn't authorized. |
802
-
|`503 (Service Unavailable)`| The service is unavailable or busy. Please try again later.|
817
+
|`503 (Service Unavailable)`| The service is unavailable or busy. Try again later.|
0 commit comments