Skip to content

Commit 5c242d0

Browse files
Merge pull request #224589 from mmitrik/mmitrik/conformance-mis
Updates DICOM conformance statement with recent changes.
2 parents 183759e + f939489 commit 5c242d0

File tree

1 file changed

+29
-14
lines changed

1 file changed

+29
-14
lines changed

articles/healthcare-apis/dicom/dicom-services-conformance-statement.md

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ You'll find example requests for supported transactions in the [Postman collecti
4242

4343
## Preamble Sanitization
4444

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

4747
## Studies Service
4848

@@ -94,12 +94,12 @@ Only transfer syntaxes with explicit Value Representations are accepted.
9494
| `202 (Accepted)` | Some instances in the request have been stored but others have failed. |
9595
| `204 (No Content)` | No content was provided in the store transaction request. |
9696
| `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. |
9898
| `403 (Forbidden)` | The user isn't authorized. |
9999
| `406 (Not Acceptable)` | The specified `Accept` header isn't supported. |
100100
| `409 (Conflict)` | None of the instances in the store transaction request have been stored. |
101101
| `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. |
103103

104104
### Store response payload
105105

@@ -118,6 +118,7 @@ Each dataset in the `FailedSOPSequence` will have the following elements (if the
118118
| (0008, 1150) | `ReferencedSOPClassUID` | The SOP class unique identifier of the instance that failed to store. |
119119
| (0008, 1155) | `ReferencedSOPInstanceUID` | The SOP instance unique identifier of the instance that failed to store. |
120120
| (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. |
121122

122123
Each dataset in the `ReferencedSOPSequence` will have the following elements:
123124

@@ -192,6 +193,17 @@ An example response with `Accept` header `application/dicom+json`:
192193
| `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. |
193194
| `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. |
194195

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+
195207
### Retrieve (WADO-RS)
196208

197209
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
290302
| `403 (Forbidden)` | The user isn't authorized. |
291303
| `404 (Not Found)` | The specified DICOM resource couldn't be found. |
292304
| `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. |
294306

295307
### Search (QIDO-RS)
296308

@@ -319,7 +331,7 @@ The following parameters for each query are supported:
319331
| Key | Support Value(s) | Allowed Count | Description |
320332
| :----- | :----- | :------------ | :---------- |
321333
| `{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`. |
323335
| `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. |
324336
| `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. |
325337
| `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.
338350
| `ReferringPhysicianName` | X | X | X |
339351
| `StudyDate` | X | X | X |
340352
| `StudyDescription` | X | X | X |
353+
| `ModalitiesInStudy` | X | X | X |
341354
| `SeriesInstanceUID` | | X | X |
342355
| `Modality` | | X | X |
343356
| `PerformedProcedureStepStartDate` | | X | X |
@@ -355,7 +368,7 @@ We support the following matching types.
355368

356369
#### Attribute ID
357370

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:
359372

360373
| Value | Example |
361374
| :--------------- | :--------------- |
@@ -450,6 +463,8 @@ Along with those below attributes are returned:
450463
* If the target resource is `All Series`, then `Study` level attributes are also returned.
451464
* If the target resource is `All Instances`, then `Study` and `Series` level attributes are also returned.
452465
* 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`.
453468

454469
### Search response codes
455470

@@ -462,7 +477,7 @@ The query API returns one of the following status codes in the response:
462477
| `400 (Bad Request)` | The server was unable to perform the query because the query component was invalid. Response body contains details of the failure. |
463478
| `401 (Unauthorized)` | The client isn't authenticated. |
464479
| `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. |
466481

467482
### Additional notes
468483

@@ -500,7 +515,7 @@ There are no restrictions on the request's `Accept` header, `Content-Type` heade
500515
| `401 (Unauthorized)` | The client isn't authenticated. |
501516
| `403 (Forbidden)` | The user isn't authorized. |
502517
| `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. |
504519

505520
### Delete response payload
506521

@@ -540,7 +555,7 @@ If not specified in the URI, the payload dataset must contain the Workitem in th
540555

541556
The `Accept` and `Content-Type` headers are required in the request, and must both have the value `application/dicom+json`.
542557

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).
544559

545560
Notes on dataset attributes:
546561

@@ -557,7 +572,7 @@ Notes on dataset attributes:
557572
|`403 (Forbidden)` | The user isn't authorized. |
558573
|`409 (Conflict)` |The Workitem already exists.
559574
|`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.|
561576

562577
#### Create Response Payload
563578

@@ -576,7 +591,7 @@ There are [four valid Workitem states](https://dicom.nema.org/medical/dicom/curr
576591
* `CANCELED`
577592
* `COMPLETED`
578593

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

581596
|Method |Path| Description|
582597
|:---|:---|:---|
@@ -699,7 +714,7 @@ The request payload shall contain the Change UPS State Data Elements. These data
699714
|Code| Description|
700715
|:---|:---|
701716
|`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|
703718
|`401 (Unauthorized)` |The client isn't authenticated.|
704719
|`403 (Forbidden)` | The user isn't authorized. |
705720
|`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
785800
* 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
786801
* 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
787802
* 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
789804

790805
#### Search Response Codes
791806

@@ -799,7 +814,7 @@ The query API will return one of the following status codes in the response:
799814
|`400 (Bad Request)`| The was a problem with the request. For example, invalid Query Parameter syntax. The Response body contains details of the failure.|
800815
|`401 (Unauthorized)`| The client isn't authenticated.|
801816
|`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.|
803818

804819
#### Additional Notes
805820

0 commit comments

Comments
 (0)