DICOM 準拠ステートメント v1
Note
API バージョン 2 は最新の API バージョンであり、v1 の代わりに使用する必要があります。 詳細については、 DICOM 準拠ステートメント v2 を参照してください。
Medical Imaging Server for DICOMは、DICOMweb Standard のサブセットをサポートしています。 サポートは次のとおりです:
さらに、次の非標準 API がサポートされています。
このサービスでは、REST API のバージョン管理が使用されます。 REST API のバージョンは、次の例のように、ベース URL のパーツとして明示的に指定する必要があります:
https://<service_url>/v<version>/studies
このバージョンの準拠ステートメントは、REST API の v1
バージョンに対応しています。
要求を行うときにバージョンを指定する方法については、 API のバージョン管理に関するドキュメントを参照してください。
サポートされているトランザクションの要求の例は、 Postman コレクションにあります。
プリアンブルサニタイズ
サービスは 128 バイトのファイル プリアンブルを無視し、そのコンテンツを null 文字に置き換えます。 このビヘイビアーにより、サービスを通じて渡されたファイルが、悪意のあるプリアンブル脆弱性 に対して脆弱でなくなります。 ただし、このプリアンブルサニタイズは、TIFF などの デュアルフォーマット コンテンツ のエンコードに使用されるプリアンブルをサービスで使用できないことも意味します。
スタディ サービス
スタディ サービス を使用すると、ユーザーはDICOM スタディ、シリーズ、インスタンスを保存、取得、検索できます。 完全なリソース ライフサイクルを有効にするために、非標準の Delete トランザクションを追加しました。
格納 (STOW-RS)
このトランザクションでは、POST メソッドまたは PUT メソッドを使用して、要求ペイロードに含まれるスタディ、系列、およびインスタンスの表現を格納します。
メソッド | Path | 説明 |
---|---|---|
POST | ../studies | インスタンスを格納します。 |
投稿 | ../studies/{study} | 特定の検査のインスタンスを格納します。 |
PUT | ../studies | インスタンスをアップサートします。 |
PUT | ../studies/{study} | 特定のスタディのインスタンスをアップサートします。 |
パラメーター study
は、DICOM 属性 StudyInstanceUID
に対応します。 指定した場合、提供されたスタディに属していないインスタンスは、 43265
警告コードで拒否されます。
応答の次の Accept
ヘッダーがサポートされています。
application/dicom+json
次の Content-Type
ヘッダーがサポートされています。
multipart/related; type="application/dicom"
application/dicom
Note
サーバーは、POST 要求の既存のデータと競合する属性を強制または置換しません。 すべてのデータは、指定されたとおりに格納されます。 upsert (PUT) 要求の場合、既存のデータは受信した新しいデータに置き換えられます。
必要な属性を保存する
以下の DICOM 要素は、格納しようとしているすべての DICOM ファイル内にある必要があります。
StudyInstanceUID
SeriesInstanceUID
SOPInstanceUID
SOPClassUID
PatientID
Note
すべての UID の長さは 1 ~ 64 文字で、英数字または以下の特殊文字のみを含める必要があります:.
、-
。 PatientID
は、その LO
VR
型に基づいて検証されます。
保存される各ファイルには、 StudyInstanceUID
、 SeriesInstanceUID
、および SopInstanceUID
の一意の組み合わせが必要です。 同じ識別子を持つファイルが既に存在する場合は、警告コード 45070
が返されます。
明示的なValue Representationsを持つ転送構文のみが受け入れられます。
格納の応答状態コード
コード | 説明 |
---|---|
200 (OK) |
要求内のすべての SOP インスタンスが格納されます。 |
202 (Accepted) |
要求内の一部のインスタンスは格納されますが、失敗したインスタンスもあります。 |
204 (No Content) |
格納トランザクション要求で、コンテンツが指定されませんでした。 |
400 (Bad Request) |
要求の形式が正しくありませんでした。 たとえば、指定されたスタディ インスタンス識別子が、想定される UID 形式に準拠していません。 |
401 (Unauthorized) |
クライアントが認証されていません。 |
403 (Forbidden) |
ユーザーが承認されていません。 |
406 (Not Acceptable) |
指定した Accept ヘッダーはサポートされていません。 |
409 (Conflict) |
ストア トランザクション要求内のインスタンスは格納されませんでした。 |
415 (Unsupported Media Type) |
指定された Content-Type はサポートされていません。 |
503 (Service Unavailable) |
サービスが利用できないか、ビジー状態です。 後でもう一度試してみてください。 |
格納の応答ペイロード
応答ペイロードは、DICOM データセットに次の要素を設定します。
Tag | 名前 | 説明 |
---|---|---|
(0008, 1190) | RetrieveURL |
ストア要求で StudyInstanceUID が指定され、少なくとも 1 つのインスタンスが正常に格納された場合の、調査の取得 URL |
(0008, 1198) | FailedSOPSequence |
格納に失敗したインスタンスのシーケンス |
(0008, 1199) | ReferencedSOPSequence |
格納されているインスタンスのシーケンス |
FailedSOPSequence
内の各データセットには、次の要素があります (格納しようとしている DICOM ファイルを読み取ることができる場合)。
Tag | 名前 | 説明 |
---|---|---|
(0008, 1150) | ReferencedSOPClassUID |
格納に失敗したインスタンスの SOP クラスの一意識別子 |
(0008, 1155) | ReferencedSOPInstanceUID |
格納に失敗したインスタンスの SOP インスタンス一意識別子 |
(0008, 1197) | FailureReason |
このインスタンスが格納に失敗した理由コード |
(0074, 1048) | FailedAttributesSequence |
失敗した各属性の理由を含む ErrorComment のシーケンス |
ReferencedSOPSequence
内の各データセットには、次の要素があります。
Tag | 名前 | 説明 |
---|---|---|
(0008, 1150) | ReferencedSOPClassUID |
格納に失敗したインスタンスの SOP クラスの一意識別子 |
(0008, 1155) | ReferencedSOPInstanceUID |
格納に失敗したインスタンスの SOP インスタンス一意識別子 |
(0008, 1190) | RetrieveURL |
DICOM サーバー上のこのインスタンスの取得 URL |
Accept
ヘッダーapplication/dicom+json
を含む応答の例:
{
"00081190":
{
"vr":"UR",
"Value":["http://localhost/studies/d09e8215-e1e1-4c7a-8496-b4f6641ed232"]
},
"00081198":
{
"vr":"SQ",
"Value":
[{
"00081150":
{
"vr":"UI","Value":["cd70f89a-05bc-4dab-b6b8-1f3d2fcafeec"]
},
"00081155":
{
"vr":"UI",
"Value":["22c35d16-11ce-43fa-8f86-90ceed6cf4e7"]
},
"00081197":
{
"vr":"US",
"Value":[43265]
}
}]
},
"00081199":
{
"vr":"SQ",
"Value":
[{
"00081150":
{
"vr":"UI",
"Value":["d246deb5-18c8-4336-a591-aeb6f8596664"]
},
"00081155":
{
"vr":"UI",
"Value":["4a858cbb-a71f-4c01-b9b5-85f88b031365"]
},
"00081190":
{
"vr":"UR",
"Value":["http://localhost/studies/d09e8215-e1e1-4c7a-8496-b4f6641ed232/series/8c4915f5-cc54-4e50-aa1f-9b06f6e58485/instances/4a858cbb-a71f-4c01-b9b5-85f88b031365"]
}
}]
}
}
格納エラーの理由コード
コード | 説明 |
---|---|
272 |
保存トランザクションで、操作のプロセス中に一般的なエラーが発生したため、インスタンスが保存されませんでした。 |
43264 |
DICOM インスタンスが検証に失敗しました。 |
43265 |
指定されたインスタンス StudyInstanceUID が、ストア要求で指定された StudyInstanceUID と一致しませんでした。 |
45070 |
同じ StudyInstanceUID 、 SeriesInstanceUID 、および SopInstanceUID を持つ DICOM インスタンスは既に格納されています。 コンテンツを更新する場合は、最初にこのインスタンスを削除します。 |
45071 |
DICOM インスタンスが別のプロセスによって作成されているか、以前の作成の試行が失敗し、クリーンアップ プロセスが完了していません。 まずインスタンスを削除してから、もう一度作成してみてください。 |
警告理由コードを保存する
コード | 説明 |
---|---|
45063 |
DICOM インスタンス データ セットが SOP クラスと一致しません。 スタディ Microsoft Store トランザクション (セクション 10.5) では、データ セットがインスタンスのストレージ中に SOP クラスの制約と一致しなかったことが確認されました。 |
エラー コードを保存する
コード | 説明 |
---|---|
100 |
指定されたインスタンス属性が検証条件を満たしませんでした。 |
取得 (WADO-RS)
この取得トランザクションでは、格納されている検査、シリーズ、インスタンス、およびフレームを参照で取得するためのサポートが提供されます。
メソッド | Path | 説明 |
---|---|---|
GET | ../studies/{study} | スタディ内のすべてのインスタンスを取得します。 |
GET | ../studies/{study}/metadata | スタディ内のすべてのインスタンスのメタデータを取得します |
GET | ../studies/{study}/series/{series} | 系列内のすべてのインスタンスを取得します |
GET | ../studies/{study}/series/{series}/metadata | 系列内のすべてのインスタンスのメタデータを取得します |
GET | ../studies/{study}/series/{series}/instances/{instance} | 1 つのインスタンスを取得します。 |
GET | ../studies/{study}/series/{series}/instances/{instance}/metadata | 1 つのインスタンスのメタデータを取得します |
GET | ../studies/{study}/series/{series}/instances/{instance}/rendered | イメージ形式でレンダリングされたインスタンスを取得します |
GET | ../studies/{study}/series/{series}/instances/{instance}/frames/{frames} | 1 つのインスタンスから 1 つまたは複数のフレームを取得します。複数のフレームを指定するには、返す各フレームをコンマで区切ります。 たとえば、/studies/1/series/2/instance/3/frames/4,5,6 のようにします。 |
GET | ../studies/{study}/series/{series}/instances/{instance}/frames/{frame}/rendered | イメージ形式でレンダリングされた 1 つのフレームを取得します。 |
検査またはシリーズ内のインスタンスを取得する
次の Accept
ヘッダーは、スタディまたはシリーズ内のインスタンスを取得するためにサポートされています。
multipart/related; type="application/dicom"; transfer-syntax=*
multipart/related; type="application/dicom";
(transfer-syntax が指定されていない場合、1.2.840.10008.1.2.1 がデフォルトとして使用されます)multipart/related; type="application/dicom"; transfer-syntax=1.2.840.10008.1.2.1
multipart/related; type="application/dicom"; transfer-syntax=1.2.840.10008.1.2.4.90
*/*
(transfer-syntax が指定されていない場合、*
は既定値として使用され、mediaType の既定値はapplication/dicom
)
インスタンスの取得
特定のインスタンスを取得するために、次の Accept
ヘッダーがサポートされています。
application/dicom; transfer-syntax=*
multipart/related; type="application/dicom"; transfer-syntax=*
application/dicom;
(transfer-syntax が指定されていない場合、1.2.840.10008.1.2.1
がデフォルトとして使用されます)multipart/related; type="application/dicom"
(transfer-syntax が指定されていない場合、1.2.840.10008.1.2.1
がデフォルトとして使用されます)application/dicom; transfer-syntax=1.2.840.10008.1.2.1
multipart/related; type="application/dicom"; transfer-syntax=1.2.840.10008.1.2.1
application/dicom; transfer-syntax=1.2.840.10008.1.2.4.90
multipart/related; type="application/dicom"; transfer-syntax=1.2.840.10008.1.2.4.90
*/*
(transfer-syntax が指定されていない場合、*
は既定値として使用され、mediaType の既定値はapplication/dicom
)
フレームを取得する
フレームの取得には、次の Accept
ヘッダーがサポートされています。
multipart/related; type="application/octet-stream"; transfer-syntax=*
multipart/related; type="application/octet-stream";
(transfer-syntax が指定されていない場合、1.2.840.10008.1.2.1
がデフォルトとして使用されます)multipart/related; type="application/octet-stream"; transfer-syntax=1.2.840.10008.1.2.1
multipart/related; type="image/jp2";
(transfer-syntax が指定されていない場合、1.2.840.10008.1.2.4.90
がデフォルトとして使用されます)multipart/related; type="image/jp2";transfer-syntax=1.2.840.10008.1.2.4.90
*/*
(transfer-syntax が指定されていない場合、*
は既定値として使用され、mediaType の既定値はapplication/octet-stream
)
転送構文を取得する
要求された転送構文が元のファイルと異なる場合、元のファイルは要求された転送構文にトランスコードされます。 元のファイルは、コード変換を成功させるために次のいずれかの形式である必要があります。そうしないと、コード変換が失敗する可能性があります。
- 1.2.840.10008.1.2 (暗黙的なリトル エンディアン)
- 1.2.840.10008.1.2.1 (明示的なリトル エンディアン)
- 1.2.840.10008.1.2.2 (明示的な VR ビッグ エンディアン)
- 1.2.840.10008.1.2.4.50 (JPEG ベースライン プロセス 1)
- 1.2.840.10008.1.2.4.57 (JPEG ロスレス)
- 1.2.840.10008.1.2.4.70 (JPEG ロスレス選択値 1)
- 1.2.840.10008.1.2.4.90 (JPEG 2000 ロスレスのみ)
- 1.2.840.10008.1.2.4.91 (JPEG 2000)
- 1.2.840.10008.1.2.5 (RLE ロスレス)
サポートされていない transfer-syntax
では、 406 Not Acceptable
が発生します。
メタデータを取得する (検査、シリーズ、またはインスタンス用)
次の Accept
ヘッダーは、スタディ、系列、またはインスタンスのメタデータを取得するためにサポートされています。
application/dicom+json
メタデータを取得しても、次の値表現を持つ属性は返されません。
VR 名 | 説明 |
---|---|
OB | その他の Byte |
OD | その他の Double |
OF | その他の Float |
OL | その他の Long |
OV | その他の 64-Bit Very Long |
OW | その他の Word |
UN | Unknown |
メタデータ キャッシュの検証を取得する (調査、シリーズ、またはインスタンス用)
キャッシュの検証は、ETag
メカニズムを使用してサポートされています。 メタデータ要求への応答では、ETag はヘッダーの 1 つとして返されます。 この ETag はキャッシュされ、同じメタデータに対する以降の要求で If-None-Match
ヘッダーとして追加できます。 データが存在する場合、次の 2 種類の応答が可能です。
- 最後の要求以降、データは変更されません。
HTTP 304 (Not Modified)
応答は応答本文なしで送信されます。 - 前回の要求以降にデータが変更されました。
HTTP 200 (OK)
応答は更新された ETag で送信されます。 必要なデータも本文の一部として返されます。
レンダリングされたイメージを取得する (インスタンスまたはフレームなど)
次の Accept
ヘッダーは、インスタンスまたはフレームをレンダリングされたイメージを取得するためにサポートされています。
image/jpeg
image/png
Accept
ヘッダーが指定されていない場合、サービスは既定でimage/jpeg
をレンダリングします。
このサービスでは、1 つのフレームのレンダリングのみがサポートされます。 複数のフレームを持つインスタンスに対してレンダリングが要求された場合、既定では最初のフレームのみがイメージとしてレンダリングされます。
返す特定のフレームを指定すると、フレームインデックスは 1 から始まります。
quality
クエリ パラメータもサポートされています。 クエリ パラメーターの値として、 1
から 100
(1 は最低品質、100 は最高品質) までの整数値が渡される場合があります。 このパラメータは、 jpeg
としてレンダリングされるイメージに使用され、 png
レンダリング要求では無視されます。 指定しない場合、パラメーターは既定で 100
されます。
取得の応答状態コード
コード | 説明 |
---|---|
200 (OK) |
要求されたすべてのデータが取得されました。 |
304 (Not Modified) |
要求されたデータは、前回の要求以降に変更されていません。 この場合、コンテンツは応答本文に追加されません。 詳細については、前のセクション Retrieve メタデータ キャッシュ検証 (スタディ、シリーズ、またはインスタンス) を参照してください。 |
400 (Bad Request) |
要求の形式が正しくありませんでした。 たとえば、指定されたスタディ インスタンス識別子が想定される UID 形式に準拠していなかったり、要求された転送構文エンコードがサポートされていません。 |
401 (Unauthorized) |
クライアントが認証されていません。 |
403 (Forbidden) |
ユーザーが承認されていません。 |
404 (Not Found) |
指定した DICOM リソースが見つからなかったか、レンダリングされた要求に対して、インスタンスにピクセル データが含まれませんでした。 |
406 (Not Acceptable) |
指定した Accept ヘッダーはサポートされていません。または、要求されたファイルが大きすぎる要求をレンダリングしてトランスコードします。 |
503 (Service Unavailable) |
サービスが利用できないか、ビジー状態です。 後でもう一度試してみてください。 |
検索 (QIDO-RS)
DICOM オブジェクトの ID に基づくクエリ (QIDO) を使用すると、検査、シリーズ、およびインスタンスを属性で検索できます。
Method | Path | 説明 |
---|---|---|
"検査を検索する" | ||
GET | ../studies?... | 検査を検索する |
"シリーズを検索する" | ||
GET | ../series?... | シリーズを検索する |
GET | ../studies/{study}/series?... | 検査内のシリーズを検索する |
"インスタンスを検索する" | ||
GET | ../instances?... | インスタンスを検索する |
GET | ../studies/{study}/instances?... | 検査内のインスタンスを検索する |
GET | ../studies/{study}/series/{series}/instances?... | シリーズ内のインスタンスを検索する |
検索では、次の Accept
ヘッダーがサポートされています。
application/dicom+json
サポートされている検索パラメーター
各クエリの次のパラメーターがサポートされています。
キー | サポート値 | 許可される数 | 説明 |
---|---|---|---|
{attributeID}= |
{value} |
0...N | クエリで属性/値の一致を検索する |
includefield= |
{attributeID} all |
0...N | 応答で返されるその他の属性。パブリック タグとプライベート タグの両方がサポートされています。all を指定した場合。 クエリの種類ごとに返される属性の詳細については、「 検索応答 を参照してください。{attributeID} と all の組み合わせが指定されている場合、サーバーデフォルトは all を使用します。 |
limit= |
{value} |
0..1 | 応答で返される値の数を制限する整数値。 値の範囲は 1 > = x <= 200 で、既定値は 100 です。 |
offset= |
{value} |
0..1 | 結果 {value} スキップします。検索クエリ結果の数より大きいオフセットが指定された場合は、 204 (no content) 応答が返されます。 |
fuzzymatching= |
true / false |
0..1 | True のあいまい一致が PatientName 属性に適用される場合。PatientName 値内の任意の名前部分のプレフィックス単語一致を行います。 たとえば、PatientName が「John^Doe」 の場合、「joh」、「do」、「jo do」、「Doe」、「John Doe」 がすべて一致します。 ただし、"ohn" は一致しません。 |
検索可能な属性
以下の属性と検索の種類に対する検索がサポートされています。
属性キーワード | すべてのスタディ | すべてのシリーズ | すべてのインスタンス | スタディのシリーズ | スタディのインスタンス | スタディ シリーズのインスタンス |
---|---|---|---|---|---|---|
StudyInstanceUID |
x | X | X | |||
PatientName |
X | X | X | |||
PatientID |
X | X | X | |||
PatientBirthDate |
X | X | X | |||
AccessionNumber |
X | X | X | |||
ReferringPhysicianName |
X | X | X | |||
StudyDate |
X | X | X | |||
StudyDescription |
X | X | X | |||
ModalitiesInStudy |
X | X | X | |||
SeriesInstanceUID |
X | X | X | X | ||
Modality |
X | X | X | X | ||
PerformedProcedureStepStartDate |
X | X | X | X | ||
ManufacturerModelName |
X | X | X | X | ||
SOPInstanceUID |
X | X | x |
検索の一致
以下の一致の種類がサポートされています。
検索の種類 | サポートされている属性 | 例 |
---|---|---|
範囲クエリ | StudyDate /PatientBirthDate |
{attributeID}={value1}-{value2} . 日付/時刻値の場合、タグの包括範囲がサポートされ、 attributeID >= {value1} AND attributeID <= {value2} にマップされます。 {value1} が指定されていない場合、 {value2} の前の、または含む日付/時刻のすべての出現が一致します。 同様に、 {value2} が指定されていない場合は、 {value1} の出現、または以降のすべての日付/時刻が照合されます。 ただし、これらの値の 1 つが存在する必要があります。 {attributeID}={value1}- と {attributeID}=-{value2} は有効ですが、 {attributeID}=- は無効です。 |
完全な一致 | サポートされているすべての属性 | {attributeID}={value1} |
あいまい一致 | PatientName , ReferringPhysicianName |
値で始まる名前の任意のコンポーネントと一致します。 |
属性 ID
タグは、クエリ パラメータに対していくつかの方法でエンコードできます。 PS3.18 6.7.1.1.1 で定義されている標準は、部分的に実装されています。 タグの次のエンコードがサポートされています。
Value | 例 |
---|---|
{group}{element} |
0020000D |
{dicomKeyword} |
StudyInstanceUID |
インスタンスを検索するクエリの例を次に示します。
../instances?Modality=CT&00280011=512&includefield=00280010&limit=5&offset=0
検索の応答
応答は、DICOM データセットの配列です。 リソースに応じて、 既定では 次の属性が返されます。
デフォルトの検査タグ
Tag | 属性名 |
---|---|
(0008, 0005) | SpecificCharacterSet |
(0008, 0020) | StudyDate |
(0008, 0030) | StudyTime |
(0008, 0050) | AccessionNumber |
(0008, 0056) | InstanceAvailability |
(0008, 0090) | ReferringPhysicianName |
(0008, 0201) | TimezoneOffsetFromUTC |
(0010, 0010) | PatientName |
(0010, 0020) | PatientID |
(0010, 0030) | PatientBirthDate |
(0010, 0040) | PatientSex |
(0020, 0010) | StudyID |
(0020, 000D) | StudyInstanceUID |
デフォルトのシリーズ タグ
Tag | 属性名 |
---|---|
(0008, 0005) | SpecificCharacterSet |
(0008, 0060) | Modality |
(0008, 0201) | TimezoneOffsetFromUTC |
(0008, 103E) | SeriesDescription |
(0020, 000E) | SeriesInstanceUID |
(0040, 0244) | PerformedProcedureStepStartDate |
(0040, 0245) | PerformedProcedureStepStartTime |
(0040, 0275) | RequestAttributesSequence |
デフォルトのインスタンス タグ
Tag | 属性名 |
---|---|
(0008, 0005) | SpecificCharacterSet |
(0008, 0016) | SOPClassUID |
(0008, 0018) | SOPInstanceUID |
(0008, 0056) | InstanceAvailability |
(0008, 0201) | TimezoneOffsetFromUTC |
(0020, 0013) | InstanceNumber |
(0028, 0010) | Rows |
(0028, 0011) | Columns |
(0028, 0100) | BitsAllocated |
(0028, 0008) | NumberOfFrames |
includefield=all
の場合、次の属性がデフォルトの属性と共に含まれます。 これは、既定の属性と、各リソース レベルでサポートされている属性の完全な一覧です。
追加のスタディ タグ
Tag | 属性名 |
---|---|
(0008, 1030) | Study Description |
(0008, 0063) | AnatomicRegionsInStudyCodeSequence |
(0008, 1032) | ProcedureCodeSequence |
(0008, 1060) | NameOfPhysiciansReadingStudy |
(0008, 1080) | AdmittingDiagnosesDescription |
(0008, 1110) | ReferencedStudySequence |
(0010, 1010) | PatientAge |
(0010, 1020) | PatientSize |
(0010, 1030) | PatientWeight |
(0010, 2180) | Occupation |
(0010, 21B0) | AdditionalPatientHistory |
その他のシリーズ タグ
Tag | 属性名 |
---|---|
(0020, 0011) | SeriesNumber |
(0020, 0060) | Laterality |
(0008, 0021) | SeriesDate |
(0008, 0031) | SeriesTime |
以下の属性が返されます。
- リソース URL 内のすべての一致クエリ パラメーターと UID。
IncludeField
の属性は、そのリソース レベルでサポートされます。- ターゲット リソースが
All Series
の場合は、Study
のレベルの属性も返されます。 - ターゲット リソースが
All Instances
の場合は、Study
とSeries
の レベルの属性も返されます。 - ターゲット リソースが
Study's Instances
の場合は、Series
の レベルの属性も返されます。 NumberOfStudyRelatedInstances
集計属性は、Study
レベルincludeField
でサポートされています。NumberOfSeriesRelatedInstances
集計属性は、Series
レベルincludeField
でサポートされています。
検索の応答コード
クエリ API は、応答で次のいずれかの状態コードを返します。
コード | 説明 |
---|---|
200 (OK) |
応答ペイロードには、一致するすべてのリソースが含まれます。 |
204 (No Content) |
検索は正常に完了しましたが、結果は返されませんでした。 |
400 (Bad Request) |
クエリ コンポーネントが無効だったため、サーバーがクエリを実行できませんでした。 応答本文に、失敗の詳細が含まれています。 |
401 (Unauthorized) |
クライアントが認証されていません。 |
403 (Forbidden) |
ユーザーが承認されていません。 |
503 (Service Unavailable) |
サービスが利用できないか、ビジー状態です。 後でもう一度試してみてください。 |
他の注意事項
TimezoneOffsetFromUTC (00080201)
を使用したクエリ実行はサポートされていません。- クエリ API は
413 (request entity too large)
を返しません。 要求されたクエリ応答の制限が許容範囲外の場合は、無効な要求が返されます。 許容範囲内で要求された内容は解決されます。 - ターゲット リソースが Study/Series の場合、複数のインスタンス間で一貫性のない調査/系列レベルのメタデータが存在する可能性があります。 たとえば、2 つのインスタンスの patientName が異なる場合があります。 この場合、最新のデータが優先され、最新のデータでのみ検索できます。
- ページングされた結果は、最初に一致する newest インスタンスを返すように最適化されます。クエリに一致する新しいデータが追加された場合、後続のページでレコードが重複する可能性があります。
- 一致は大文字と小文字は区別されません。PN VR の種類ではアクセントは区別されません。
- 一致は大文字と小文字は区別されません、他の文字列 VR 型ではアクセントが区別されます。
- 1 つの値を持つデータ要素に複数の値が誤って含まれている場合は、最初の値のみがインデックス付けされます。
削除
このトランザクションは、公式の DICOMwe Standard の一部ではありません。 DELETE メソッドを使用して、ストアからスタディ、シリーズ、およびインスタンスの表現を削除します。
Method | Path | 説明 |
---|---|---|
DELETE | ../studies/{study} | 特定のスタディのすべてのインスタンスを削除する |
DELETE | ../studies/{study}/series/{series} | スタディ内の特定の系列のすべてのインスタンスを削除する |
DELETE | ../studies/{study}/series/{series}/instances/{instance} | 系列内の特定のインスタンスを削除する |
パラメーター study
、 series
、および instance
は、それぞれ DICOM 属性 StudyInstanceUID
、 SeriesInstanceUID
、および SopInstanceUID
に対応します。
要求の Accept
ヘッダー、Content-Type
ヘッダー、または本文の内容に対する制限はありません。
Note
削除トランザクションの後、削除されたインスタンスは復旧できません。
応答状態コード
コード | 説明 |
---|---|
204 (No Content) |
すべての SOP インスタンスが削除されたとき |
400 (Bad Request) |
要求の形式が正しくありません |
401 (Unauthorized) |
クライアントが認証されていない |
403 (Forbidden) |
ユーザーが承認されていない |
404 (Not Found) |
指定した系列がスタディ内で見つからなかった場合、または指定したインスタンスが系列内で見つからなかった場合 |
503 (Service Unavailable) |
サービスが利用できないか、ビジー状態です。 後でもう一度試してみてください。 |
削除の応答ペイロード
応答本文は空です。 状態コードが、返される唯一の有用な情報です。
ワークリスト サービス (UPS-RS)
DICOM サービスは、 ワークリスト サービス (UPS-RS)のプッシュ SOP とプル SOP をサポートします。 ワークリスト サービスは、ワークアイテムを含む 1 つのワークリストにアクセスできます。各ワークリストは、統合プロシージャ ステップ (UPS) を表します。
全体を通して、URI テンプレートに 変数{workitem}
は 作業項目 UID を表します。
使用可能な UPS-RS エンドポイントは次のとおりです:
動詞 | パス | 説明 |
---|---|---|
POST | {s}/workitems{?AffectedSOPInstanceUID} | 作業項目の作成 |
投稿 | {s}/workitems/{instance}{?transaction} | 作業項目を更新する |
GET | {s}/workitems{?query*} | 作業項目を検索する |
GET | {s}/workitems/{instance} | 作業項目を取得する |
PUT | {s}/workitems/{instance}/状態 | 作業項目の状態を変更する |
投稿 | {s}/workitems/{instance}/要求取り消し | 作業項目の取り消し |
投稿 | {s}/作業項目s/{instance}/subscribers/{AETitle}{?deletionlock} | サブスクリプションの作成 |
投稿 | {s}/workitems/1.2.840.10008.5.1.4.34.5/ | サブスクリプションを中断 |
DELETE | {s}/workitems/{instance}/subscribers/{AETitle} | サブスクリプションを削除する |
GET | {s}/subscribers/{AETitle} | サブスクリプション チャネルを開く |
作業項目の作成
このトランザクションでは、POST メソッドを使用して新しい 作業項目 を作成します。
Method | Path | 説明 |
---|---|---|
POST | ../Workitem | Workitem を作成する |
投稿 | ../workitems?{workitem} | 指定した UID を使用して 作業項目 を作成します。 |
URI で指定しない場合、ペイロード データセットには、 SOPInstanceUID
属性に 作業項目が含まれている必要があります。
要求には Accept
と Content-Type
ヘッダーが必要であり、両方とも値 application/dicom+json
必要です。
特定のトランザクションのコンテキストでは、DICOM データ属性に関連するいくつかの要件があります。 属性は、存在する必要がある場合、存在しない必要がある場合、空である必要がある場合、または空である必要がない場合があります。 これらの要件は、この表の中に 見つけることができます。
Note
参照テーブルには SOP インスタンス UID が存在してはならないことが示されていますが、このガイダンスは DIMSE プロトコルに固有であり、DICOMWeb では異なる方法でハンドルされます。 URI にない場合は、SOP インスタンス UID がデータセットに存在する必要があります。
Note
1C と 2C を含むすべての条件付き要件コードは、省略可能として扱われます。
応答状態コードを作成する
コード | 説明 |
---|---|
201 (Created) |
ターゲットの 作業項目 が正常に作成されました。 |
400 (Bad Request) |
要求に問題が発生しました。 たとえば、要求ペイロードが要件を満たしませんでした。 |
401 (Unauthorized) |
クライアントが認証されていません。 |
403 (Forbidden) |
ユーザーが承認されていません。 |
409 (Conflict) |
作業項目 は既に存在します。 |
415 (Unsupported Media Type) |
指定された Content-Type はサポートされていません。 |
503 (Service Unavailable) |
サービスが利用できないか、ビジー状態です。 後でもう一度試してみてください。 |
応答ペイロードを作成する
成功した応答にはペイロードがありません。 Location
および Content-Location
応答ヘッダーには、作成された 作業項目 への URI 参照が含まれています。
エラー応答ペイロードには、失敗を説明するメッセージが含まれています。
キャンセルの要求
このトランザクションにより、ユーザーは未所有の 作業項目 の取り消しを要求できます。
有効な Workitem 状態 があります。
SCHEDULED
IN PROGRESS
CANCELED
COMPLETED
このトランザクションは、 SCHEDULED
状態の 作業項目 に対してのみ成功します。 どのユーザーも、トランザクション UID を設定し、その状態を IN PROGRESS
に変更することで、作業項目 の所有権を要求できます。 それ以降、ユーザーは正しいトランザクション UID を指定することによってのみ 作業項目 を変更できます。 UPS では、取り消し要求やその他のイベントを転送できる Watch および Event SOP クラスを定義していますが、この DICOM サービスはこれらのクラスを実装しないため、 IN PROGRESS
されている作業項目に対する取り消し要求は失敗を返します。 所有されている作業項目は、 作業項目状態の変更 トランザクションを使用して取り消すことができます。
Method | Path | 説明 |
---|---|---|
POST | ../workitems/{workitem}/cancelrequest | スケジュールされた 作業項目 の取り消しを要求する |
Content-Type
ヘッダーが必要であり、値 application/dicom+json
必要です。
要求ペイロードには、DICOM Standard で定義されたようなアクション情報が含まれる場合があります。
キャンセル応答の状態コードの要求
コード | 説明 |
---|---|
202 (Accepted) |
要求はサーバーによって受け入れられましたが、Target Workitem の状態は変更されません。 |
400 (Bad Request) |
要求の構文に問題が発生しました。 |
401 (Unauthorized) |
クライアントが認証されていません。 |
403 (Forbidden) |
ユーザーが承認されていません。 |
404 (Not Found) |
ターゲット作業項目が見つかりませんでした。 |
409 (Conflict) |
要求がターゲット 作業項目 の現在の状態と矛盾しています。 たとえば、ターゲット作業項目は SCHEDULED または COMPLETED 状態です。 |
415 (Unsupported Media Type) |
指定された Content-Type はサポートされていません。 |
キャンセル応答ペイロードの要求
成功した応答にはペイロードがなく、失敗した応答ペイロードには失敗を説明するメッセージが含まれています。
作業項目 インスタンスが既に取り消された状態の場合、応答には次の HTTP 警告ヘッダーが含まれます: 299: The UPS is already in the requested state of CANCELED.
作業項目を取得する
このトランザクションは、作業項目 を取得します。 これは UPS DIMSE N-GET 操作に対応します。
参照先: https://dicom.nema.org/medical/dicom/current/output/html/part18.html#sect_11.5
配信元サーバーに Workitem が存在する場合、Workitem は許容可能なメディアの種類で返されます。 返された Workitem には、Transaction UID (0008,1195) 属性は含まれません。 これは、属性のロールをアクセス ロックとして保持するために必要です。
メソッド | Path | 説明 |
---|---|---|
GET | ../workitems/{workitem} | 作業項目 の取得要求 |
Accept
ヘッダーが必要であり、値 application/dicom+json
必要です。
作業項目の応答状態コードを取得する
コード | 説明 |
---|---|
200 (OK) | 作業項目 インスタンスが正常に取得されました。 |
400 (無効な要求) | 要求に問題が発生しました。 |
401 (許可されていません) | クライアントが認証されていません。 |
403 (許可されていません) | ユーザーが承認されていません。 |
404 (見つかりません) | ターゲット作業項目が見つかりませんでした。 |
作業項目 応答ペイロードを取得する
- 成功した応答には、選択したメディアタイプで要求された 作業項目 を含む 1 つのパーツのペイロードがあります。
- 返される Workitem には、Workitem の Transaction UID (0008, 1195) 属性は含まれません。これは所有者のみが認識する必要があるためです。
作業項目を更新する
このトランザクションは、既存の 作業項目 の属性を変更します。 これは UPS DIMSE N-GET 操作に対応します。
参照先: https://dicom.nema.org/medical/dicom/current/output/html/part18.html#sect_11.6
現在 SCHEDULED
状態の Workitem を更新するには、 Transaction UID
属性が存在しないようにする必要があります。 IN PROGRESS
状態の 作業項目 の場合、要求にはクエリ パラメータとして現在の Transaction UID が含まれている必要があります。 作業項目 が既に COMPLETED
または CANCELED
状態にある場合、応答は 400 (Bad Request)
。
Method | Path | 説明 |
---|---|---|
POST | ../workitems/{workitem}?{transaction-uid} | 作業項目 トランザクションの更新 |
Content-Type
ヘッダーが必要であり、値 application/dicom+json
必要です。
要求ペイロードには、ターゲットの 作業項目 に適用される変更を含むデータセットが含まれています。 シーケンスが変更されると、要求には、変更するアイテムだけでなく、シーケンス内のすべてのアイテムを含める必要があります。 複数の属性をグループとして更新する必要がある場合は、複数の要求ではなく、1 つの要求で複数の属性として更新を行います。
特定のトランザクションのコンテキストでは、DICOM データ属性に関連する多くの要件があります。 属性は、存在する必要がある場合、存在しない必要がある場合、空である必要がある場合、または空である必要がない場合があります。 これらの要件は、この表の中に 見つけることができます。
Note
1C と 2C を含むすべての条件付き要件コードは、省略可能として扱われます。
Note
要求では、プロシージャ ステップ状態 (0074,1000) 属性の値を設定できません。 プロシージャ ステップ状態は、状態変更トランザクションまたは要求キャンセル トランザクションを使用して管理されます。
作業項目トランザクションの応答状態コードを更新する
コード | 説明 |
---|---|
200 (OK) |
ターゲット作業項目が更新されました。 |
400 (Bad Request) |
要求に問題が発生しました。 例: (1) ターゲットワークアイテムが COMPLETED または CANCELED 状態でした。 (2) トランザクション UID がありません。 (3) トランザクション UID が正しくありません。 (4) データセットが要件に準拠していません。 |
401 (Unauthorized) |
クライアントが認証されていません。 |
403 (Forbidden) |
ユーザーが承認されていません。 |
404 (Not Found) |
ターゲット作業項目が見つかりませんでした。 |
409 (Conflict) |
要求がターゲット 作業項目 の現在の状態と矛盾しています。 |
415 (Unsupported Media Type) |
指定された Content-Type はサポートされていません。 |
作業項目 トランザクション応答ペイロードを更新する
配信元サーバーは、 Table 11.6.3-2 で必要に応じてヘッダー フィールドをサポートします。
成功応答にはペイロードがないか、状態レポート ドキュメントを含むペイロードがあります。
エラー応答ペイロードには、失敗、警告、またはその他の有用な情報を説明する状態レポートが含まれている場合があります。
作業項目 の状態を変更する
このトランザクションは、作業項目 の状態を変更するために使用されます。 これは、UPS DIMSE N-ACTION 操作 「UPS 状態の変更」 に対応します。 状態の変更は、作業項目 の所有権の要求、完了、または取り消しに使用されます。
参照先: https://dicom.nema.org/medical/dicom/current/output/html/part18.html#sect_11.7
配信元サーバーに Workitem が存在する場合、Workitem は許容可能なメディアの種類で返されます。 返された Workitem には、Transaction UID (0008,1195) 属性は含まれません。 これは、ここで説明するように、この属性ロールをアクセス ロックとして保持するために必要です 。
Method | Path | 説明 |
---|---|---|
PUT | ../workitems/{workitem}/state | 作業項目 の状態を変更する |
Accept
ヘッダーが必要であり、値 application/dicom+json
必要です。
要求ペイロードには、CHANGE UPS State Data Elements が含まれています。 これらのデータ要素は次のとおりです:
- Transaction UID (0008, 1195). 要求ペイロードには、トランザクション UID が含まれています。 ユーザー エージェントは、特定の 作業項目 の
IN PROGRESS
状態への移行を要求するときに、トランザクション UID を作成します。 ユーザー エージェントは、その 作業項目 を使用して後続のトランザクションでそのトランザクション UID を提供します。 - プロシージャ ステップの状態 (0074、1000)。 有効な値は、要求された状態遷移に対応します。 これらは、
IN PROGRESS
、COMPLETED
、またはCANCELED
です。
作業項目 状態の応答状態コードを変更する
コード | 説明 |
---|---|
200 (OK) |
Workitem インスタンスが正常に取得されました。 |
400 (Bad Request) |
次のいずれかの理由で要求を実行できません。 (1) ターゲット Workitem の現在の状態が指定された場合、要求は有効ではありません。 (2) トランザクション UID がありません。 (3) トランザクション UID が正しくありません |
401 (Unauthorized) |
クライアントが認証されていません。 |
403 (Forbidden) |
ユーザーが承認されていません。 |
404 (Not Found) |
ターゲット作業項目が見つかりませんでした。 |
409 (Conflict) |
要求がターゲット 作業項目 の現在の状態と矛盾しています。 |
作業項目 状態の応答ペイロードを変更する
- 応答には、セクション 11.7.3.2 で指定ヘッダー フィールドが含まれます。
- 成功した応答にはペイロードがありません。
- エラー応答ペイロードには、失敗、警告、またはその他の有用な情報を説明する状態レポートが含まれている場合があります。
作業項目の検索
このトランザクションを使用すると、属性で 作業項目 を検索できます。
Method | Path | 説明 |
---|---|---|
GET | ../workitems? | 作業項目 を検索する |
検索では、次の Accept
ヘッダーがサポートされています。
application/dicom+json
サポートされている検索パラメータ
各クエリの次のパラメーターがサポートされています。
キー | サポート値 | 許可される数 | 説明 |
---|---|---|---|
{attributeID}= |
{value} |
0...N | クエリで属性/値の一致を検索する |
includefield= |
{attributeID} all |
0...N | 応答で返されるその他の属性。最上位レベルの属性のみを含めることができます。シーケンスの一部である属性は含めません。 パブリック タグとプライベート タグの両方がサポートされています。 all が指定されている場合、クエリの種類ごとに返される属性の詳細については、「検索応答」を参照してください。 {attributeID} と all の組み合わせが指定されている場合、サーバーは既定で 'all' を使用します。 |
limit= |
{value} |
0...1 | 応答で返される値の数を制限する整数値。値は範囲 1 >= x <= 200 の間に設定でき、既定値は 100 です。 |
offset= |
{value} |
0...1 | {value} の結果をスキップします。検索クエリ結果の数より大きいオフセットが指定された場合は、 204 (no content) 応答が返されます。 |
fuzzymatching= |
true | false |
0...1 | 真のあいまい一致が人物名 (PN) 値表現 (VR) を持つ任意の属性に適用される場合。これらの属性内の任意の名前部分のプレフィックス ワード一致が実行されます。 たとえば、 PatientName が John^Doe の場合、 joh 、 do 、 jo do 、 Doe 、 John Doe がすべて一致 します。 ただし、ohn は一致。 |
検索可能な属性
これらの属性の検索がサポートされています。
属性キーワード |
---|
PatientName |
PatientID |
ReferencedRequestSequence.AccessionNumber |
ReferencedRequestSequence.RequestedProcedureID |
ScheduledProcedureStepStartDateTime |
ScheduledStationNameCodeSequence.CodeValue |
ScheduledStationClassCodeSequence.CodeValue |
ScheduledStationGeographicLocationCodeSequence.CodeValue |
ProcedureStepState |
StudyInstanceUID |
検索の一致
これらの一致する型がサポートされています。
検索の種類 | サポートされている属性 | 例 |
---|---|---|
範囲クエリ | ScheduledProcedureStepStartDateTime |
{attributeID}={value1}-{value2} . 日付/時刻値の場合、タグの包括範囲がサポートされます。 これは attributeID >= {value1} AND attributeID <= {value2} にマップされます。 {value1} が指定されていない場合、 {value2} の前の、または含む日付/時刻のすべての出現が一致します。 同様に、 {value2} が指定されていない場合は、 {value1} の出現、または以降のすべての日付/時刻が照合されます。 ただし、これらの値のいずれかが存在する必要があります。 {attributeID}={value1}- と {attributeID}=-{value2} は有効ですが、 {attributeID}=- は無効です。 |
完全な一致 | サポートされているすべての属性 | {attributeID}={value1} |
あいまい一致 | PatientName |
値で始まる名前の任意のコンポーネントと一致します |
Note
完全なシーケンス 一致はサポートされていませんが、シーケンスに含まれる属性に対して完全一致がサポートされます。
属性 ID
タグは、クエリ パラメーターのためにさまざまな方法でエンコードできます。 PS3.18 6.7.1.1.1.1 で定義されている標準を部分的に実装。 タグの次のエンコードがサポートされています。
Value | 例 |
---|---|
{group}{element} |
00100010 |
{dicomKeyword} |
PatientName |
クエリの例 :
../workitems?PatientID=K123&0040A370.00080050=1423JS&includefield=00404005&limit=5&offset=0
検索の応答
応答は、次の属性が返された 0...N
DICOM データセットの配列です:
- DICOM PowerShell 3.4 Table CC.2.5-3 のすべての属性戻りキーの種類が 1 または 2 です。
- DICOM PowerShell 3.4 Table CC.2.5-3 のすべての属性で、条件要件が満たされる戻りキーの種類が 1C です。
- 一致パラメーターとして渡される他のすべての Workitem 属性。
- パラメーター値として渡されるその他のすべての Workitem 属性
includefield
。
応答コードの検索
クエリ API は、応答で次のいずれかの状態コードを返します。
コード | 説明 |
---|---|
200 (OK) |
応答ペイロードには、一致するすべてのリソースが含まれます。 |
206 (Partial Content) |
応答ペイロードには検索結果の一部のみが含まれており、残りは適切な要求を通じて要求できます。 |
204 (No Content) |
検索は正常に完了しましたが、結果は返されませんでした。 |
400 (Bad Request) |
要求に問題が発生しました。 たとえば、クエリ パラメータ構文が無効です。 応答本文に、失敗の詳細が含まれています。 |
401 (Unauthorized) |
クライアントが認証されていません。 |
403 (Forbidden) |
ユーザーが承認されていません。 |
503 (Service Unavailable) |
サービスが利用できないか、ビジー状態です。 後でもう一度試してみてください。 |
その他の注意事項
クエリ API は 413 (request entity too large)
を返しません。 要求されたクエリ応答の制限が許容範囲外の場合は、無効な要求が返されます。 許容範囲内で要求された内容は解決されます。
- ページングされた結果は、一致した最新のインスタンスを最初に返すように最適化されています。クエリに一致する新しいデータが追加された場合、後続のページでレコードが重複する可能性があります。
- 一致は大文字と小文字は区別されません。PN VR の種類ではアクセントは区別されません。
- 一致は大文字と小文字は区別されません、他の文字列 VR 型ではアクセントが区別されます。
- Workitem を取り消し、同じ Workitem に対してクエリを実行するシナリオが同時に発生する場合、クエリでは更新される Workitem が除外され、応答コードが
206 (Partial Content)
可能性があります。
Note
DICOM® は、医療情報のデジタル通信に関する標準出版物に関する米国電機工業会 (National Electrical Manufacturers Association) の登録商標です。