DICOM 適合性宣言書v2
Note
API バージョン 2 は最新の API バージョンです。 v2 と v1 の変更点のリストについては、DICOM サービス API v2 の変更 を参照してください
Medical Imaging Server for DICOMは、DICOMweb Standard のサブセットをサポートしています。 サポートは次のとおりです:
さらに、次の非標準 API がサポートされています。
このサービスでは、REST API のバージョン管理が使用されます。 REST API のバージョンは、次の例のように、ベース URL のパーツとして明示的に指定する必要があります:
https://<service_url>/v<version>/studies
このバージョンの準拠ステートメントは、REST API の v2
バージョンに対応しています。
要求を行うときにバージョンを指定する方法の詳細については、 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
は引き続き必須のタグであり、値を null として入力できます。 PatientID
は、その LO
VR
型に基づいて検証されます。
保存される各ファイルには、 StudyInstanceUID
、 SeriesInstanceUID
、および SopInstanceUID
の一意の組み合わせが必要です。 同じ識別子を持つファイルが既に存在する場合は、警告コード 45070
が返されます。
明示的なValue Representationsを持つ転送構文のみが受け入れられます。
Note
要求は 4 GB に制限されます。 単一の DICOM ファイルまたはファイルの組み合わせがこの制限を超える可能性はありません。
v1 からの変更を保存する
以前のバージョンでは、 必要な または検索可能な属性 検証に失敗した場合、Microsoft Store要求は失敗します。 v2 以降、要求は、必要な属性 検証に失敗した場合にのみ失敗します。
API で不要な属性の検証に失敗すると、ファイルが警告と共に保存されます。 インスタンスごとに失敗した各属性に関する警告が表示されます。 シーケンスに検証に失敗する属性が含まれている場合、または 1 つの属性に複数イシューがある場合は、最初に失敗した属性の理由のみが示されます。
属性が null 値で埋め込まれている場合、属性は検索可能なときにインデックスを付加され、dicom+json メタデータにそのまま保存されます。 検証の警告は表示されません。
格納の応答状態コード
コード | 説明 |
---|---|
200 (OK) |
要求内のすべての SOP インスタンスが格納されました。 |
202 (Accepted) |
配信元サーバーには、一部のインスタンスが格納され、その他のインスタンスが失敗したか、警告が返されました。 このエラーに関する追加情報は、応答メッセージ本文にあります。 |
204 (No Content) |
格納トランザクション要求で、コンテンツが指定されませんでした。 |
400 (Bad Request) |
要求の形式が正しくありませんでした。 たとえば、指定されたスタディ インスタンス識別子が、想定される UID 形式に準拠していません。 |
401 (Unauthorized) |
クライアントが認証されていません。 |
406 (Not Acceptable) |
指定した Accept ヘッダーはサポートされていません。 |
409 (Conflict) |
ストア トランザクション要求内のインスタンスは格納されませんでした。 |
415 (Unsupported Media Type) |
指定された Content-Type はサポートされていません。 |
424 (Failed Dependency) |
DICOM サービスは、この要求を完了するために依存するリソースにアクセスできません。 たとえば、接続されている Data Lake ストア、またはカスタマー マネージド キー暗号化をサポートするためのキー コンテナーにアクセスできない場合があります。 |
500 (Internal Server Error) |
サーバーで不明な内部エラーが発生しました。 後でもう一度試してみてください。 |
503 (Service Unavailable) |
サービスが利用できないか、ビジー状態です。 後でもう一度試してみてください。 |
格納の応答ペイロード
応答ペイロードは、DICOM データセットに次の要素を設定します:
Tag | 名前 | 説明 |
---|---|---|
(0008, 1190) | RetrieveURL |
検査の取得 URL (格納要求で StudyInstanceUID が指定され、少なくとも 1 つのインスタンスが正常に格納された場合)。 |
(0008, 1198) | FailedSOPSequence |
格納できなかったインスタンスのシーケンス。 |
(0008, 1199) | ReferencedSOPSequence |
格納されたインスタンスのシーケンス。 |
FailedSOPSequence
内の各データセットには、次の要素があります (保存しようとしている DICOM ファイルを読み取ることができる場合):
Tag | 名前 | 説明 |
---|---|---|
(0008, 1150) | ReferencedSOPClassUID |
格納できなかったインスタンスの SOP クラスの一意の識別子。 |
(0008, 1155) | ReferencedSOPInstanceUID |
格納できなかったインスタンスの SOP インスタンスの一意の識別子。 |
(0008, 1197) | FailureReason |
このインスタンスの格納の失敗に関する理由コード。 |
(0008, 1196) | WarningReason |
WarningReason は、検出されたが、保存操作を失敗させるほど重大ではなかった検証イシューを示します。 |
(0074, 1048) | FailedAttributesSequence |
失敗した各属性の理由を含む ErrorComment のシーケンス。 |
ReferencedSOPSequence
内の各データセットには、次の要素があります:
Tag | 名前 | 説明 |
---|---|---|
(0008, 1150) | ReferencedSOPClassUID |
保存できなかったインスタンスの SOP クラスの一意識別子。 |
(0008, 1155) | ReferencedSOPInstanceUID |
保存されたインスタンスの SOP インスタンスの一意識別子。 |
(0008, 1190) | RetrieveURL |
DICOM サーバー上のこのインスタンスの取得 URL。 |
ReferencedSOPSequence で FailedAttributesSequence なしで 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"]
}
}]
}
}
ReferencedSOPSequence で FailedAttributesSequence でAccept
ヘッダー application/dicom+json
を持つ応答の例:
{
"00081190":
{
"vr":"UR",
"Value":["http://localhost/studies/d09e8215-e1e1-4c7a-8496-b4f6641ed232"]
},
"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"]
},
"00081196": {
"vr": "US",
"Value": [
1
]
},
"00741048": {
"vr": "SQ",
"Value": [
{
"00000902": {
"vr": "LO",
"Value": [
"DICOM100: (0008,0020) - Content \"NotAValidDate\" does not validate VR DA: one of the date values does not match the pattern YYYYMMDD"
]
}
},
{
"00000902": {
"vr": "LO",
"Value": [
"DICOM100: (0008,002a) - Content \"NotAValidDate\" does not validate VR DT: value does not mach pattern YYYY[MM[DD[HH[MM[SS[.F{1-6}]]]]]]"
]
}
}
]
}
}]
}
}
格納エラーの理由コード
コード | 説明 |
---|---|
272 |
保存トランザクションで、操作のプロセス中に一般的なエラーが発生したため、インスタンスが保存されませんでした。 |
43264 |
DICOM インスタンスが検証に失敗しました。 |
43265 |
指定されたインスタンス StudyInstanceUID が、ストア要求で指定された StudyInstanceUID と一致しませんでした。 |
45070 |
同じ StudyInstanceUID 、 SeriesInstanceUID 、および SopInstanceUID を持つ DICOM インスタンスが既に格納されています。 コンテンツを更新する場合は、最初にこのインスタンスを削除します。 |
45071 |
DICOM インスタンスが別のプロセスによって作成されているか、以前の作成の試行が失敗し、クリーンアップ プロセスが完了していません。 まずインスタンスを削除してから、もう一度作成してみてください。 |
警告理由コードを保存する
コード | 説明 |
---|---|
45063 |
DICOM インスタンス データ セットが SOP クラスと一致しません。 スタディ Microsoft Store トランザクション (セクション 10.5) では、データ セットがインスタンスのストレージ中に SOP クラスの制約と一致しなかったことが確認されました。 |
1 |
スタディ ストア トランザクション (セクション 10.5) では、データセットが検証済みであることを確認しました |
エラー コードを保存する
コード | 説明 |
---|---|
100 |
指定されたインスタンス属性が検証条件を満たしませんでした。 |
取得 (WADO-RS)
このトランザクションの取得では、保存されているスタディ、シリーズ、インスタンス、フレームを参照渡しで取得するサポートをします。
Method | 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
- 単一フレーム取得のための
application/octet-stream; transfer-syntax=*
*/*
(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 |
取得されたメタデータには、属性が null 値 で埋め込まれ、そのまま保存されたときの null 文字が含まれます。
メタデータ キャッシュの検証を取得する (調査、シリーズ、またはインスタンス用)
キャッシュの検証は、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
になります。
元のバージョンを取得する
bulk 更新操作を使用すると、スタディ、シリーズ、またはインスタンスの元のバージョンまたは最新バージョンを取得できます。 スタディ、系列、またはインスタンスの最新バージョンは、常に既定で返されます。 msdicom-request-original
ヘッダーを true
に設定すると、元のバージョンが返される場合があります。 次が要求の例です。
GET ../studies/{study}/series/{series}/instances/{instance}
Accept: multipart/related; type="application/dicom"; transfer-syntax=*
msdicom-request-original: true
Content-Type: application/dicom
取得の応答状態コード
コード | 説明 |
---|---|
200 (OK) |
要求されたすべてのデータが取得されました。 |
304 (Not Modified) |
要求されたデータは、最後の要求以降は変更されません。 このようなケースでは、応答本文にコンテンツは追加されません。 詳細については、前のセクション Retrieve メタデータ キャッシュ検証 (スタディ、シリーズ、またはインスタンス) を参照してください。 |
400 (Bad Request) |
要求の形式が正しくありませんでした。 たとえば、指定されたスタディ インスタンス識別子が想定される UID 形式に準拠していなかったり、要求された転送構文エンコードがサポートされていません。 |
401 (Unauthorized) |
クライアントが認証されていません。 |
403 (Forbidden) |
ユーザーが承認されていません。 |
404 (Not Found) |
指定した DICOM リソースが見つかりませんでした。または、レンダリングされた要求に対して、インスタンスにピクセル データが含まれませんでした。 |
406 (Not Acceptable) |
指定した Accept ヘッダーはサポートされていません。または、要求されたファイルが大きすぎる要求をレンダリングしてトランスコードします。 |
424 (Failed Dependency) |
DICOM サービスは、この要求を完了するために依存するリソースにアクセスできません。 たとえば、接続されている Data Lake ストア、またはカスタマー マネージド キー暗号化をサポートするためのキー コンテナーにアクセスできない場合があります。 |
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
v1 からの変更を検索する
v1 API で v2 に続き、の既存のクエリ タグに、インデックスを作成できないタグ値が 1 つ以上存在したためにエラーが発生した場合、拡張クエリ タグを含む後続の検索クエリは、documentation で詳しく説明されているようにerroneous-dicom-attributes
返します。 ただし、STOW-RSからの検証の警告があるタグ (属性とも呼ばれます) は、このヘッダーに含まれません。 ストア要求の結果、 インスタンスが に保存された時点で 検索可能な属性の検証警告が発生した場合、それらの属性を使用して保存されたインスタンスを検索できないことがあります。 ただし、検証に失敗した 検索可能な属性 は、失敗した後に格納されている同じスタディまたは系列内のインスタンスによって値が上書きされた場合、または値が以前のインスタンスによって既に正しく格納されている場合に結果を返すことができます。 属性値が上書きされない場合、検索結果は生成されません。
属性は、次の方法で修正できます。
- 保存されているインスタンスを削除し、修正されたデータを含む新しいインスタンスをアップロードします
- 修正されたデータを含む同じスタディ/シリーズに新しいインスタンスをアップロードする
サポートされている検索パラメーター
各クエリに対して以下のパラメーターがサポートされています。
キー | サポート値 | 許可される数 | 説明 |
---|---|---|---|
{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 (コンテンツなし) の応答が返されます。 |
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 |
Note
空の文字列を使用した属性の検索はサポートされていません。
検索の一致
以下の一致の種類がサポートされています。
検索の種類 | サポートされている属性 | 例 |
---|---|---|
範囲クエリ | StudyDate /PatientBirthDate |
{attributeID}={value1}-{value2} . 日付/時刻値の場合、タグの包括範囲がサポートされます。 この範囲は、 attributeID >= {value1} AND attributeID <= {value2} にマップされます。 {value1} が指定されていない場合は、前の日付/時刻と、{value2} を含むすべての出現回数が一致します。 同様に、 {value2} が指定されていない場合は、 {value1} の出現、または以降のすべての日付/時刻が照合されます。 ただし、これらの値の 1 つが存在する必要があります。 {attributeID}={value1}- と {attributeID}=-{value2} は有効ですが、 {attributeID}=- は無効です。 |
完全な一致 | サポートされているすべての属性 | {attributeID}={value1} |
あいまい一致 | PatientName , ReferringPhysicianName |
値で始まる名前の任意のコンポーネントと一致します |
UID リストの一致 | StudyInstanceUID |
リストに指定された値によって識別されるスタディと一致します。 有効な区切り記号としてコンマ (,) または円記号 (\) をサポートします。 {attributeID}=1.2.3,5.6.7,8.9.0 は、存在する場合、すべてのスタディに関連付けられている詳細を返します。 |
属性 ID
タグは、クエリ パラメータに対していくつかの方法でエンコードできます。 PS3.18 6.7.1.1.1.1 で定義されている標準を部分的に実装。 タグの次のエンコードがサポートされています。
値 | 例 |
---|---|
{group}{element} |
0020000D |
{dicomKeyword} |
StudyInstanceUID |
インスタンスを検索するクエリの例:
../instances?Modality=CT&00280011=512&includefield=00280010&limit=5&offset=0
検索の応答
応答は、DICOM データセットの配列です。 リソースに応じて、 既定では 次の属性が返されます。
デフォルトの検査タグ
Tag | 属性名 |
---|---|
(0008, 0020) | StudyDate |
(0008, 0050) | AccessionNumber |
(0008, 1030) | StudyDescription |
(0009, 0090) | ReferringPhysicianName |
(0010, 0010) | PatientName |
(0010, 0020) | PatientID |
(0010, 0030) | PatientBirthDate |
(0020, 000D) | StudyInstanceUID |
デフォルトのシリーズ タグ
Tag | 属性名 |
---|---|
(0008, 0060) | Modality |
(0008, 1090) | ManufacturerModelName |
(0020, 000E) | SeriesInstanceUID |
(0040, 0244) | PerformedProcedureStepStartDate |
デフォルトのインスタンス タグ
Tag | 属性名 |
---|---|
(0008, 0018) | SOPInstanceUID |
includefield=all
場合、これらの属性は既定の属性と共に含まれます。 この一覧には、既定の属性と共に、各リソース レベルでサポートされている属性の完全な一覧が含まれています。
その他の検査タグ
Tag | 属性名 |
---|---|
(0008, 0005) | SpecificCharacterSet |
(0008, 0030) | StudyTime |
(0008, 0056) | InstanceAvailability |
(0008, 0201) | TimezoneOffsetFromUTC |
(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 |
(0010, 0040) | PatientSex |
(0020, 0010) | StudyID |
その他のシリーズ タグ
Tag | 属性名 |
---|---|
(0008, 0005) | SpecificCharacterSet |
(0008, 0201) | TimezoneOffsetFromUTC |
(0020, 0011) | SeriesNumber |
(0020, 0060) | Laterality |
(0008, 0021) | SeriesDate |
(0008, 0031) | SeriesTime |
(0008, 103E) | SeriesDescription |
(0040, 0245) | PerformedProcedureStepStartTime |
(0040, 0275) | RequestAttributesSequence |
その他のインスタンス タグ
Tag | 属性名 |
---|---|
(0008, 0005) | SpecificCharacterSet |
(0008, 0016) | SOPClassUID |
(0008, 0056) | InstanceAvailability |
(0008, 0201) | TimezoneOffsetFromUTC |
(0020, 0013) | InstanceNumber |
(0028, 0010) | 行数 |
(0028, 0011) | 列 |
(0028, 0100) | BitsAllocated |
(0028, 0008) | NumberOfFrames |
次の属性が返されます。
- リソース 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) |
ユーザーが承認されていません。 |
414 (URI Too Long) |
URI がサポートされている最大長の 8192 文字を超えました。 |
424 (Failed Dependency) |
DICOM サービスは、この要求を完了するために依存するリソースにアクセスできません。 たとえば、接続されている Data Lake ストア、またはカスタマー マネージド キー暗号化をサポートするためのキー コンテナーにアクセスできない場合があります。 |
503 (Service Unavailable) |
サービスが利用できないか、ビジー状態です。 後でもう一度試してみてください。 |
メモ
TimezoneOffsetFromUTC (00080201)
を使用したクエリ実行はサポートされていません。- クエリ API は
413 (request entity too large)
を返しません。 要求されたクエリ応答の制限が許容範囲外の場合は、無効な要求が返されます。 許容範囲内で要求された内容は解決されます。 - ターゲット リソースが Study/Series の場合、複数のインスタンス間で一貫性のない調査/系列レベルのメタデータが存在する可能性があります。 たとえば、2 つのインスタンスの
patientName
が異なる場合があります。 このケースでは、最新のデータが優先され、最新のデータでのみ検索できます。 - ページングされた結果は、一致した 最新 インスタンスを最初に返すように最適化されています。クエリに一致する新しいデータが追加された場合、後続のページでレコードが重複する可能性があります。
- 一致は大文字と小文字は区別されません。PN VR の種類ではアクセントは区別されません。
- 一致は大文字と小文字は区別されません、他の文字列 VR 型ではアクセントが区別されます。
- 最初の値のみが、複数の値を誤って持つ単一の値データ要素のインデックスが付加されます。
- デフォルトの属性を使用するか、要求された結果の数を制限すると、パフォーマンスが最大化されます。
- 属性が null 値 埋め込みを使用して保存された場合、URI エンコードで null 値埋め込みの有無にかかわらず検索できます。 取得された結果は、null 値 埋め込みの有無にかかわらず保存される属性に対して行われます。
削除
このトランザクションは、公式の DICOMweb 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) |
指定したシリーズがスタディ内で見つからなかった場合、または指定したインスタンスがシリーズ内で見つからなかった場合。 |
424 (Failed Dependency) |
DICOM サービスは、この要求を完了するために依存するリソースにアクセスできません。 たとえば、接続されている Data Lake ストア、またはカスタマー マネージド キー暗号化をサポートするためのキー コンテナーにアクセスできない場合があります。 |
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 | 作業項目を作成します。 |
投稿 | ../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 はサポートされていません。 |
424 (Failed Dependency) |
DICOM サービスは、この要求を完了するために依存するリソースにアクセスできません。 たとえば、接続されている Data Lake ストア、またはカスタマー マネージド キー暗号化をサポートするためのキー コンテナーにアクセスできない場合があります。 |
503 (Service Unavailable) |
サービスが利用できないか、ビジー状態です。 後でもう一度試してみてください。 |
応答ペイロードを作成する
成功した応答にはペイロードがありません。 Location
および Content-Location
応答ヘッダーには、作成された 作業項目 への URI 参照が含まれています。
エラー応答ペイロードには、失敗を説明するメッセージが含まれています。
キャンセルの要求
このトランザクションにより、ユーザーは所有していない Workitem の取り消しを要求できます。
4 つの有効な 作業項目 状態 があります:
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 はサポートされていません。 |
424 (Failed Dependency) |
DICOM サービスは、この要求を完了するために依存するリソースにアクセスできません。 たとえば、接続されている Data Lake ストア、またはカスタマー マネージド キー暗号化をサポートするためのキー コンテナーにアクセスできない場合があります。 |
503 (Service Unavailable) |
サービスが利用できないか、ビジー状態です。 後でもう一度試してみてください。 |
キャンセル応答ペイロードの要求
成功した応答にはペイロードがなく、失敗した応答ペイロードには失敗を説明するメッセージが含まれています。
作業項目 インスタンスが既に取り消された状態の場合、応答には次の 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 (見つかりません) | ターゲット作業項目が見つかりませんでした。 |
424 (失敗した依存関係) | DICOM サービスは、この要求を完了するために依存するリソースにアクセスできません。 たとえば、接続されている Data Lake ストア、またはカスタマー マネージド キー暗号化をサポートするためのキー コンテナーにアクセスできない場合があります。 |
503 (サービスを利用できません) | サービスが利用できないか、ビジー状態です。 後でもう一度試してみてください。 |
作業項目 応答ペイロードを取得する
- 成功した応答には、選択したメディアタイプで要求された 作業項目 を含む 1 つのパーツのペイロードがあります。
- 返される 作業項目 には、作業項目 の Transaction UID (0008, 1195) 属性は含まれません。これは所有者のみが認識する必要があるためです。
作業項目を更新する
このトランザクションは、既存の 作業項目 の属性を変更します。 これは UPS DIMSE N-GET 操作に対応します。
参照先: https://dicom.nema.org/medical/dicom/current/output/html/part18.html#sect_11.6
現在 SCHEDULED
状態の 作業項目 を更新するには、 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 はサポートされていません。 |
424 (Failed Dependency) |
DICOM サービスは、この要求を完了するために依存するリソースにアクセスできません。 たとえば、接続されている Data Lake ストア、またはカスタマー マネージド キー暗号化をサポートするためのキー コンテナーにアクセスできない場合があります。 |
503 (Service Unavailable) |
サービスが利用できないか、ビジー状態です。 後でもう一度試してみてください。 |
作業項目 トランザクション応答ペイロードを更新する
配信元サーバーは、 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) 属性は含まれません。 これは、ここに記載されているように、属性のロールをアクセス ロックとして保持 必要です。
メソッド | 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) |
作業項目 インスタンスが正常に取得されました。 |
400 (Bad Request) |
要求は、次のいずれかの理由で実行できません。(1) ターゲットワークアイテムの現在の状態が指定された場合、要求は有効ではありません。 (2) トランザクション UID がありません。 (3) トランザクション UID が正しくありません |
401 (Unauthorized) |
クライアントが認証されていません。 |
403 (Forbidden) |
ユーザーが承認されていません。 |
404 (Not Found) |
ターゲット作業項目が見つかりませんでした。 |
409 (Conflict) |
要求がターゲット 作業項目 の現在の状態と矛盾しています。 |
424 (Failed Dependency) |
DICOM サービスは、この要求を完了するために依存するリソースにアクセスできません。 たとえば、接続されている Data Lake ストア、またはカスタマー マネージド キー暗号化をサポートするためのキー コンテナーにアクセスできない場合があります。 |
503 (Service Unavailable) |
サービスが利用できないか、ビジー状態です。 後でもう一度試してみてください。 |
作業項目 状態の応答ペイロードを変更する
- 応答には、セクション 11.7.3.2 で指定ヘッダー フィールドが含まれます。
- 成功した応答にはペイロードがありません。
- エラー応答ペイロードには、失敗、警告、またはその他の有用な情報を説明する状態レポートが含まれている場合があります。
作業項目の検索
このトランザクションを使用すると、属性で 作業項目 を検索できます。
Method | Path | 説明 |
---|---|---|
GET | ../workitems? | 作業項目 を検索する |
検索では、次の Accept
ヘッダーがサポートされています。
application/dicom+json
サポートされている検索パラメータ
各クエリに対して以下のパラメーターがサポートされています。
キー | サポート値 | 許可される数 | 説明 |
---|---|---|---|
{attributeID}= |
{value} |
0...N | クエリで属性/値の一致を検索します。 |
includefield= |
{attributeID} all |
0...N | 応答で返されるその他の属性。 最上位レベルの属性のみを含めることができます。シーケンスの一部である属性は含めません。 パブリック タグとプライベート タグの両方がサポートされています。 all を指定した場合。 クエリの種類ごとに返される属性の詳細については、「 Search Response 」を参照してください。 {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 |
Note
空の文字列を使用した属性の検索はサポートされていません。
検索の一致
以下の一致の種類がサポートされています。
検索の種類 | サポートされている属性 | 例 |
---|---|---|
範囲クエリ | ScheduledProcedureStepStartDateTime |
{attributeID}={value1}-{value2} . 日付/時刻値の場合、タグの包括範囲がサポートされます。 この範囲は、 attributeID >= {value1} AND attributeID <= {value2} にマップされます。 {value1} が指定されていない場合、{value2} を含む、以前のすべての日付/時刻が一致します。 同様に、 {value2} が指定されていない場合は、 {value1} の出現、または以降のすべての日付/時刻が照合されます。 ただし、これらの値のいずれかが存在する必要があります。 {attributeID}={value1}- {attributeID}=-{value2} は有効ですが、{attributeID}=- は無効です。 |
完全な一致 | サポートされているすべての属性 | {attributeID}={value1} |
あいまい一致 | PatientName |
値で始まる名前の任意のコンポーネントと一致します。 |
WildCard Match | PatientID , ReferencedRequestSequence.AccessionNumber , ReferencedRequestSequence.RequestedProcedureID , ProcedureStepState , ScheduledStationNameCodeSequence.CodeValue , ScheduledStationClassCodeSequence.CodeValue , ScheduledStationGeographicLocationCodeSequence.CodeValue |
次のワイルドカード文字がサポートされています。* - 0 個以上の文字に一致します。 たとえば、 {attributeID}={val*} は "val"、"valid"、"value" と一致しますが、"evaluate" には一致しません。 ? - 1 文字に一致します。 たとえば、 {attributeID}={valu?} は "value"、"valu1" と一致しますが、"valued" または "valu" には一致しません |
Note
完全なシーケンス 一致はサポートされていませんが、シーケンスに含まれる属性に対して完全一致がサポートされます。
属性 ID
タグは、クエリ パラメーターのためにさまざまな方法でエンコードできます。 PS3.18 6.7.1.1.1.1 で定義されている標準を部分的に実装。 タグの次のエンコードがサポートされています。
値 | 例 |
---|---|
{group}{element} |
00100010 |
{dicomKeyword} |
PatientName |
クエリの例 :
../workitems?PatientID=K123&0040A370.00080050=1423JS&includefield=00404005&limit=5&offset=0
検索の応答
応答は、次の属性が返 0...N
DICOM データセットの配列です。
- 1 または 2 の返却キータイプをもつDICOM PowerShell 3.4 Table CC.2.5-3 のすべての属性
- 条件要件を満たす 1C の返却キータイプをもつ DICOM PowerShell 3.4 Table CC.2.5-3 のすべての属性
- 一致パラメータとして渡されるその他すべての 作業項目 属性
includefield
パラメータ値として渡されるその他のすべての 作業項目 属性
応答コードの検索
クエリ API は、応答で以下のいずれかの状態コードを返します。
コード | 説明 |
---|---|
200 (OK) |
応答ペイロードには、一致するすべてのリソースが含まれます。 |
206 (Partial Content) |
応答ペイロードには検索結果の一部のみが含まれており、残りは適切な要求を通じて要求できます。 |
204 (No Content) |
検索は正常に完了しましたが、結果は返されませんでした。 |
400 (Bad Request) |
要求に問題が発生しました。 たとえば、クエリ パラメータ構文が無効です。 応答本文に、失敗の詳細が含まれています。 |
401 (Unauthorized) |
クライアントが認証されていません。 |
403 (Forbidden) |
ユーザーが承認されていません。 |
424 (Failed Dependency) |
DICOM サービスは、この要求を完了するために依存するリソースにアクセスできません。 たとえば、接続されている Data Lake ストア、またはカスタマー マネージド キー暗号化をサポートするためのキー コンテナーにアクセスできない場合があります。 |
503 (Service Unavailable) |
サービスが利用できないか、ビジー状態です。 後でもう一度試してみてください。 |
追加メモ
クエリ API は 413 (request entity too large)
を返しません。 要求されたクエリ応答の制限が許容範囲外の場合は、無効な要求が返されます。 許容範囲内で要求された内容は解決されます。
- ページングされた結果は、一致した最新のインスタンスを最初に返すように最適化されています。クエリに一致する新しいデータが追加された場合、後続のページでレコードが重複する可能性があります。
- PN VR 型では、照合では大文字と小文字が区別されず、アクセントは区別されません。
- 他の文字列 VR型では、一致で大文字と小文字が区別されず、アクセントが区別されます。
- Workitem を取り消し、同じクエリを同時に実行するシナリオがある場合は、更新される Workitem が除外され、応答コードが
206 (Partial Content)
される可能性が最も高くなります。
Note
DICOM® は、医療情報のデジタル通信に関する標準出版物に関する米国電機工業会 (National Electrical Manufacturers Association) の登録商標です。