Share via


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 は、その LOVR 型に基づいて検証されます。

保存される各ファイルには、 StudyInstanceUIDSeriesInstanceUID、および 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 検査の取得 URL (格納要求で StudyInstanceUID が指定され、少なくとも 1 つのインスタンスが正常に格納された場合)。
(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。

ヘッダーapplication/dicom+jsonを含む応答のAccept例:

{
  "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 同じ StudyInstanceUIDSeriesInstanceUID、および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 クエリ パラメータもサポートされています。 クエリ パラメータの値として、 1100 を含む整数値 (1 は最低品質、100 は最高品質) が渡される場合があります。 このパラメータは、 jpegとしてレンダリングされるイメージに使用され、 png レンダリング要求では無視されます。 指定しない場合、パラメータの既定値は 100になります。

取得の応答状態コード

コード 説明
200 (OK) 要求されたすべてのデータが取得されました。
304 (Not Modified) 要求されたデータは、前回の要求以降に変更されていません。 このようなケースでは、応答本文にコンテンツは追加されません。 詳細については、上のセクション「メタデータ キャッシュの検証を取得する (検査、シリーズ、またはインスタンス用)」を参照してください。
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 (コンテンツなし) の応答が返されます。
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 で定義されている標準は、部分的に実装されています。 タグに対して以下のエンコードがサポートされています。

{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の場合は、 StudySeriesの レベルの属性も返されます。
  • ターゲット リソースが 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)を返しません。 要求されたクエリ応答の制限が許容範囲外の場合は、無効な要求が返されます。 許容範囲内で要求された内容は解決されます。
  • ターゲット リソースが スタディ/シリーズ の場合、複数のインスタンス間で一貫性のないスタディ/シリーズレベルのメタデータが存在する可能性があります。 たとえば、2 つのインスタンスの patientName が異なる場合があります。 このケースでは、最新のデータが優先され、最新のデータでのみ検索できます。
  • ページングされた結果は、最初に一致した 最新 のインスタンスを返すように最適化されています。クエリに一致する新しいデータが追加された場合、後続のページでレコードが重複する可能性があります。
  • PN VR の種類では、一致で大文字と小文字が区別されず、アクセントが区別されません。
  • 他の文字列 VR の種類では、一致で大文字と小文字が区別されず、アクセントが区別されます。
  • 最初の値のみが、複数の値を誤って持つ単一の値データ要素のインデックスが付加されます。

削除

このトランザクションは、公式の DICOMwe Standard の一部ではありません。 DELETE メソッドを使用して、ストアからスタディ、シリーズ、およびインスタンスの表現を削除します。

Method Path 説明
DELETE ../studies/{study} 特定の検査のインスタンスをすべて削除します。
DELETE ../studies/{study}/series/{series} 検査内の特定のシリーズのインスタンスをすべて削除します。
DELETE ../studies/{study}/series/{series}/instances/{instance} シリーズ内の特定のインスタンスを削除します。

パラメータ studyseries、および instance は、それぞれ DICOM 属性 StudyInstanceUIDSeriesInstanceUID、および 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 作業項目を作成します。
投稿 ../workitems?{workitem} 指定した UID を使用して 作業項目 を作成します。

URI で指定しない場合、ペイロード データセットには、 SOPInstanceUID 属性に 作業項目が含まれている必要があります。

要求には AcceptContent-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 参照が含まれています。

エラー応答ペイロードには、失敗を説明するメッセージが含まれています。

キャンセルの要求

このトランザクションにより、ユーザーは未所有の 作業項目 の取り消しを要求できます。

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 はサポートされていません。

キャンセル応答ペイロードの要求

成功した応答にはペイロードがなく、失敗した応答ペイロードには失敗を説明するメッセージが含まれています。 作業項目 インスタンスが既に取り消された状態の場合、応答には次の 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

作業項目 が配信元サーバーに存在する場合、作業項目 は許容可能なメディアタイプで返されます。 返される 作業項目 には、トランザクション UID (0008,1195) 属性は含まれません。 これは、属性のロールをアクセス ロックとして保持するために必要です。

メソッド Path 説明
GET ../workitems/{workitem} 作業項目 の取得要求

Accept ヘッダーが必要であり、値 application/dicom+json必要です。

作業項目の応答状態コードを取得する

コード 説明
200 (OK) 作業項目 インスタンスが正常に取得されました。
400 (無効な要求) 要求に問題が発生しました。
401 (許可されていません) クライアントが認証されていません。
403 (許可されていません) ユーザーが承認されていません。
404 (見つかりません) ターゲット作業項目が見つかりませんでした。

作業項目 応答ペイロードを取得する

  • 成功した応答には、選択したメディアタイプで要求された 作業項目 を含む 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 はサポートされていません。

作業項目 トランザクション応答ペイロードを更新する

配信元サーバーは、表 11.6.3-2 の必要に応じてヘッダー フィールドをサポートする必要があります。

成功した応答には、ペイロードがないか、状態レポート ドキュメントを含むペイロードが含まれている必要があります。

エラー応答ペイロードには、失敗、警告、またはその他の有用な情報を説明する状態レポートが含まれている場合があります。

作業項目 の状態を変更する

このトランザクションは、作業項目 の状態を変更するために使用されます。 これは、UPS DIMSE N-ACTION 操作 「UPS 状態の変更」 に対応します。 状態の変更は、作業項目 の所有権の要求、完了、または取り消しに使用されます。

参照先: https://dicom.nema.org/medical/dicom/current/output/html/part18.html#sect_11.7

作業項目 が配信元サーバーに存在する場合、作業項目 は許容可能なメディアタイプで返されます。 返される 作業項目 には、トランザクション 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 PROGRESSCOMPLETED、または CANCELEDです。

作業項目 状態の応答状態コードを変更する

コード 説明
200 (OK) 作業項目 インスタンスが正常に取得されました。
400 (Bad Request) 要求は、次のいずれかの理由で実行できません。(1) ターゲットワークアイテムの現在の状態が指定された場合、要求は有効ではありません。 (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) を持つ属性に適用される場合。 これらの属性内の任意の名前パーツのプレフィックスワード一致を行います。 たとえば、 PatientNameJohn^Doeの場合、 johdojo doDoeJohn Doeがすべて一致 します。 ただし、ohn一致しません
検索可能な属性

次の属性の検索がサポートされています:

属性キーワード
PatientName
PatientID
ReferencedRequestSequence.AccessionNumber
ReferencedRequestSequence.RequestedProcedureID
ScheduledProcedureStepStartDateTime
ScheduledStationNameCodeSequence.CodeValue
ScheduledStationClassCodeSequence.CodeValue
ScheduledStationGeographicLocationCodeSequence.CodeValue
ProcedureStepState
StudyInstanceUID
検索の一致

次の一致する型がサポートされています:

検索の種類 サポートされている属性
範囲クエリ Scheduled​Procedure​Step​Start​Date​Time {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定義されている標準を部分的に実装しました。 タグに対して以下のエンコードがサポートされています。

{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) ユーザーが承認されていません。
503 (Service Unavailable) サービスが利用できないか、ビジー状態です。 後でもう一度試してみてください。

その他の注意事項

クエリ API にはありません 413 (request entity too large)。 要求されたクエリ応答の制限が許容範囲外の場合は、無効な要求が返されます。 許容範囲内で要求された内容は解決されます。

  • ページングされた結果は、一致した最新のインスタンスを最初に返すように最適化されています。クエリに一致する新しいデータが追加された場合、後続のページでレコードが重複する可能性があります。
  • PN VR 型では、照合では大文字と小文字が区別されず、アクセントは区別されません。
  • 他の文字列 VR型では、一致で大文字と小文字が区別されず、アクセントが区別されます。
  • Workitem をキャンセルして同じクエリを同時に実行するシナリオがある場合、クエリでは更新される Workitem が除外され、応答コードは除外される可能性があります 206 (Partial Content)

Note

DICOM® は、医療情報のデジタル通信に関する標準出版物に関する米国電機工業会 (National Electrical Manufacturers Association) の登録商標です。