次の方法で共有


分析ワークロードでの DICOM データの使用を開始する

この記事では、Azure Data Factory と Microsoft Fabric を使用して分析ワークロードで DICOM® データを使用して作業を開始する方法について説明します。

前提条件

作業を開始する前に、次の手順を実行します。

DICOM サービスの Data Factory パイプラインを構成する

この例では、Data Factory パイプラインを使用して、インスタンス、系列、および調査の DICOM 属性を、Delta テーブル形式でストレージ アカウントに書き込みます。

Azure portal から Data Factory インスタンスを開き、[スタジオの起動] を選択して開始します。

Azure portal の [Studio を起動する] ボタンを示すスクリーンショット

リンクされたサービスを作成します

Data Factory パイプラインは、データ ソースから読み取り、通常他の Azure サービスであるデータ シンクに書き込みます。 他のサービスへのこれらの接続は、リンク サービスとして管理されます。

この例のパイプラインは、DICOM サービスからデータを読み取り、その出力をストレージ アカウントに書き込むので、両方用にリンクされたサービスを作成する必要があります。

DICOM サービスのリンク サービスを作成する

  1. Azure Data Factory Studio で、左側のメニューから [管理] を選択します。 [接続][リンク サービス] を選択して、[新規] を選択します。

    Data Factory の [リンク サービス] 画面を示すスクリーンショット。

  2. [新規のリンクされたサービス] ウィンドウで、REST を検索します。 REST タイルを選択し、[続行] を選択します。

    [REST] タイルが選択されている [新しいリンク サービス] ペインを示すスクリーンショット。

  3. リンク サービスの名前説明を入力します。

    DICOM サービスの詳細が表示されている [新しいリンク サービス] ペインを示すスクリーンショット。

  4. [ベース URL] フィールドに、DICOM サービスのサービス URL を入力します。 たとえば、contosohealth ワークスペースの contosoclinic という名前の DICOM サービスには、サービス URL https://contosohealth-contosoclinic.dicom.azurehealthcareapis.com があります。

  5. [認証の種類] で、[システム割り当てマネージド ID] を選択します。

  6. [AAD リソース] に、「https://dicom.healthcareapis.azure.com」と入力します。 この URL は、すべての DICOM サービス インスタンスで同じです。

  7. 必須フィールドに入力した後、[テスト接続] を選択して、ID のロールが正しく構成されていることを確認します。

  8. 接続テストが成功したら、[作成] を選択します

Azure Data Lake Storage Gen2 のリンク サービスを作成する

  1. Data Factory Studio で、左側のメニューから [管理] を選択します。 [接続][リンク サービス] を選択して、[新規] を選択します。

  2. [新しいリンクされたサービス] ウィンドウで、Azure Data Lake Storage Gen2 を検索します。 [Azure Data Lake Storage Gen2] タイルを選択し、[続行] を選択します。

    [Azure Data Lake Storage Gen2] タイルが選択されている [新しいリンク サービス] ペインを示すスクリーンショット。

  3. リンク サービスの名前説明を入力します。

    Data Lake Storage Gen2 の詳細が表示されている [新しいリンク サービス] ペインを示すスクリーンショット。

  4. [認証の種類] で、[システム割り当てマネージド ID] を選択します。

  5. ストレージ アカウントの URL を手動で入力して、ストレージ アカウントの詳細を入力します。 または、ドロップダウンから Azure サブスクリプションとストレージ アカウントを選択することもできます。

  6. 必須フィールドに入力した後、[テスト接続] を選択して、ID のロールが正しく構成されていることを確認します。

  7. 接続テストが成功したら、[作成] を選択します

DICOM データのパイプラインを作成する

Data Factory パイプラインは、DICOM メタデータの Delta テーブルへのコピーなどのタスクを実行するアクティビティのコレクションです。 このセクションでは、DICOM サービスのデータの追加、更新、および 削除に応じて、DICOM データを Delta テーブルに定期的に同期するパイプラインの作成について詳しく説明します。

  1. 左側のメニューから [作成者] を選択します。 ファクトリ リソース ペインのプラス記号 (+) アイコンを選択して、新しいリソースを追加します。 [パイプライン] を選択し、メニューから [テンプレート ギャラリー] を選択します。

    [パイプライン] で [テンプレート ギャラリー] が選択されているところを示すスクリーンショット。

  2. [テンプレート ギャラリー] で、DICOM を検索します。 [Copy DICOM Metadata Changes to ADLS Gen2 in Delta Format] (差分形式で DICOM メタデータの変更を ADLS Gen2 にコピーする) タイルを選択し、[続行] を選択します。

    [テンプレート ギャラリー] で選択されている DICOM のテンプレートを示すスクリーンショット。

  3. [入力] セクションで、DICOM サービスと Data Lake Storage Gen2 アカウント用に以前に作成したリンク サービスを選択します。

    リンク サービスが選択された [入力] セクションを示すスクリーンショット。

  4. [このテンプレートを使用] を選択して新しいパイプラインを作成します。

DICOM データのパイプラインを作成する

テンプレート ギャラリーのテンプレートを使用するのではなく、Azure Data Lake Storage で DICOM サービスを作成した場合は、カスタム テンプレートを使用してメタデータ パイプラインに新しい fileName パラメーターを含める必要があります。 パイプラインを構成するには、次の手順のようにします。

  1. GitHub からテンプレートをダウンロードします。 テンプレート ファイルは圧縮 (zip 形式) フォルダーです。 ファイルは既に圧縮形式でアップロードされているため、抽出する必要はありません。

  2. Azure Data Factory で、左側のメニューから [作成者] を選択します。 [ファクトリのリソース] ペインのプラス記号 (+) アイコンを選択して、新しいリソースを追加します。 [パイプライン] を選択し、[パイプライン テンプレートからインポートする] を選択します。

  3. [開く] ウィンドウで、ダウンロードしたテンプレートを選択します。 [Open (開く)] を選択します。

  4. [入力] セクションで、DICOM サービスと Azure Data Lake Storage Gen2 アカウント用に作成したリンク サービスを選択します。

    リンク サービスが選択されている [入力] セクションを示すスクリーンショット。

  5. [このテンプレートを使用] を選択して新しいパイプラインを作成します。

パイプラインのスケジュール設定

パイプラインは、トリガーによってスケジュール設定されます。 トリガーにはさまざまな種類があります。 "スケジュール トリガー" を使用すると、パイプラインを 1 時間ごとや毎日午前 0 時など、特定の時刻に実行することができます。 手動トリガーでは、必要に応じてパイプラインをトリガーします。つまり、実行したいときにいつでも実行されます。

この例では、タンブリング ウィンドウ トリガーを使用して、指定された開始点と一定の時間間隔でパイプラインを定期的に実行します。 トリガーの詳細については、「Azure Data Factory または Azure Synapse Analytics でのパイプラインの実行とトリガー」を参照してください。

新しいタンブリング ウィンドウ トリガーを作成する

  1. 左側のメニューから [作成者] を選択します。 DICOM サービスのパイプラインを選択し、メニュー バーから [トリガー の追加] を選択し、[新規作成/編集] を選択します。

    メニュー バーの [トリガーの追加] ボタンが選択されている Data Factory Studio のパイプライン ビューを示すスクリーンショット。

  2. [トリガーの追加] ウィンドウで、[Choose trigger] (トリガーの選択) を選択し、[新規] を選択します。

  3. トリガーの名前説明を入力します。

    [名前]、[説明]、[種類]、[日付]、[繰り返し] フィールドを含む [新しいトリガー] ウィンドウが表示されているスクリーンショット。

  4. [タイプ] として [タンブリングウィンドウ] を選択します。

  5. 1 時間ごとに実行されるパイプラインを構成するには、[繰り返し][1 時間] に設定します。

  6. [詳細] セクションを展開し、[遅延] に「15 分」と入力します。 この設定により、1 時間の最後に保留中の操作を完了してから処理を実行できます。

  7. テーブル間の一貫性を確保するために、[最大コンカレンシー]1 に設定します。

  8. [OK] 選択して、トリガー実行パラメーターの構成を続行します。

トリガー実行パラメーターを構成する

トリガーは、パイプラインを実行するタイミングを定義します。 また、パイプラインの実行に渡されるパラメーターも含まれます。 [DICOM メタデータの変更を Delta にコピーする] テンプレートでは、次の表に示すパラメーターを定義します。 構成中に値が指定されない場合は、一覧に表示されている既定値が各パラメーターに使用されます。

パラメーター名 説明 既定値
BatchSize 変更フィードから一度に取得する変更の最大数 (最大 200) 200
ApiVersion Azure DICOM サービスの API バージョン (最小 2) 2
StartTime DICOM の変更の包括開始時間 0001-01-01T00:00:00Z
EndTime DICOM の変更の排他終了時間 9999-12-31T23:59:59Z
ContainerName 結果の Delta テーブルのコンテナー名 dicom
InstanceTablePath コンテナー内の DICOM SOP インスタンスの Delta テーブルを含むパス instance
SeriesTablePath コンテナー内の DICOM シリーズの Delta テーブルを含むパス series
StudyTablePath コンテナー内の DICOM スタディの Delta テーブルを含むパス study
RetentionHours Delta テーブル内のデータの最大リテンション期間 (時間単位) 720
  1. [トリガーの実行パラメーター] ペインで、前提条件で作成したストレージ コンテナーの名前と一致する ContainerName 値を入力します。

    StartTime と EndTime の値が入力されている [トリガー実行パラメーター] ペインを示すスクリーンショット。

  2. StartTime には、次のシステム変数を使用します。@formatDateTime(trigger().outputs.windowStartTime)

  3. EndTime には、次のシステム変数を使用します。@formatDateTime(trigger().outputs.windowEndTime)

    Note

    タンブリング ウィンドウ トリガーのみが次のシステム変数をサポートします。

    • @trigger().outputs.windowStartTime、および
    • @trigger().outputs.windowEndTime

    スケジュール トリガーでは、異なるシステム変数が使用されます。

    • @trigger().scheduledTime、および
    • @trigger().startTime

    トリガーの種類に関する詳細情報を参照してください。

  4. [保存] を選んで新しいトリガーを作成します。 [発行] を選択して、定義されたスケジュールでのトリガーの実行を開始します。

    メイン メニュー バーの [発行] ボタンを示すスクリーンショット。

トリガーが発行された後は、[Trigger Now](今すぐトリガー) オプションを使用して手動でトリガーできます。 開始時間が過去の値に設定されている場合、パイプラインはすぐに開始されます。

パイプラインの実行を監視する

[監視] タブでトリガーされた実行とそれらに関連付けられたパイプラインの実行を監視することができます。ここでは、各パイプラインが実行される時間と実行にかかった時間を参照できます。 また、発生した問題をデバッグすることもできます。

パイプラインの実行の一覧を示す [監視] ビューのスクリーンショット。

Microsoft Fabric

Fabric は、Microsoft OneLake の上に配置されたオールインワン分析ソリューションです。 ファブリック レイクハウスを使用すると、OneLake のデータを 1 か所で管理、構造化、分析できます。 Data Lake Storage Gen2 に書き込まれた OneLake の外部のデータは、ショートカットを使用して OneLake に接続し、Fabric の一連のツールを利用できます。

メタデータ テーブルへのショートカットの作成

  1. 前提条件で作成されたレイクハウスに移動します。 エクスプローラー ビューで、Tables フォルダーの横にある省略記号メニュー (...) を選択します。

  2. [新しいショートカット] を選択して、DICOM 分析データを含むストレージ アカウントへの新しいショートカットを作成します。

    [エクスプローラー] ビューの [新しいショートカット] オプションを示すスクリーンショット。

  3. ショートカットのソースとして Azure Data Lake Storage Gen2 を選択します。

    [Azure Data Lake Storage Gen2] タイルが表示されている [新しいショートカット] ビューを示すスクリーンショット。

  4. [接続設定] で、[リンク サービス] セクションで使用した URL を入力します。

    Azure Data Lake Storage Gen2 アカウントの [接続の設定] を示すスクリーンショット。

  5. 既存の接続を選択するか、使用する認証の種類を選択して、新しい接続を作成します。

    Note

    Data Lake Storage Gen2 と Fabric の間の認証には、いくつかのオプションがあります。 組織アカウントまたはサービス プリンシパルを使用できます。 アカウント キーまたは Shared Access Signature トークンを使用することはお勧めしません。

  6. [次へ] を選択します。

  7. Data Factory パイプラインによって作成されたデータを表すショートカット名を入力します。 たとえば、instance Delta テーブルの場合、ショートカット名は instance にする必要があります。

  8. 実行パラメーター構成の ContainerName パラメーターと一致するサブ パスとショートカットのテーブルの名前を入力します。 たとえば、dicom コンテナー内のパス instance を持つ Delta テーブルの場合は /dicom/instance を使用します。

  9. [作成] を選択して、ショートカットを作成します。

  10. 手順 2 から 9 を繰り返して、ストレージ アカウント内の他の Delta テーブル (たとえば seriesstudy) に残りのショートカットを追加します。

ショートカットを作成したら、テーブルを展開して列の名前と型を表示します。

[エクスプローラー] ビューに一覧表示されている [テーブル] 列を示すスクリーンショット。

ファイルへのショートカットの作成

Azure Data Lake Storage を使用した DICOM サービスを使用している場合は、データ レイクに格納されている DICOM ファイル データへのショートカットを追加で作成できます。

  1. 前提条件で作成されたレイクハウスに移動します。 エクスプローラー ビューで、[ファイル] フォルダーの横にある省略記号メニュー (...) を選択します。

  2. [新しいショートカット] を選択して、DICOM データを含むストレージ アカウントへの新しいショートカットを作成します。

    [エクスプローラー] ビューの [ファイル] メニューの [新しいショートカット] オプションを示すスクリーンショット。

  3. ショートカットのソースとして Azure Data Lake Storage Gen2 を選択します。

    [Azure Data Lake Storage Gen2] タイルが表示されている [新しいショートカット] ビューを示すスクリーンショット。

  4. [接続設定] で、[リンク サービス] セクションで使用した URL を入力します。

    Azure Data Lake Storage Gen2 アカウントの [接続の設定] を示すスクリーンショット。

  5. 既存の接続を選択するか、使用する認証の種類を選択して、新しい接続を作成します。

  6. [次へ] を選択します。

  7. DICOM データを説明するショートカット名を入力します。 たとえば、contoso-dicom-files です。

  8. DICOM サービスによって使用されるストレージ コンテナーとフォルダーの名前と一致するサブ パスを入力します。 たとえば、ルート フォルダーにリンクする場合、サブ パスは /dicom/AHDS になります。 ルート フォルダーは常に AHDS ですが、必要に応じて、特定のワークスペースまたは DICOM サービス インスタンスの子フォルダーにリンクできます。

  9. [作成] を選択して、ショートカットを作成します。

DICOM ファイルへのショートカットを示すスクリーンショット。

ノートブックを実行する

レイクハウスでテーブルが作成されたら、ファブリック ノートブックからクエリを実行します。 メニュー バーから [ノートブックを開く] を選択することで、レイクハウスから直接ノートブックを作成できます。

[ノートブック] ページでは、新しく追加されたテーブルを含めて、レイクハウスの内容を左側に表示できます。 ページの上部で、ノートブックの言語を選択します。 言語は、個々のセルに対して構成することもできます。 次の例では、Spark を使用します。

Spark SQL を使用してテーブルにクエリを実行する

セル エディターで、SELECT ステートメントのような Spark SQL クエリを入力します。

SELECT * from instance

このクエリでは、instance テーブルからすべてのコンテンツが選択されます。 準備ができたら、[セルの実行] を選択してクエリを実行します。

サンプルの Spark SQL クエリを含むノートブックを示すスクリーンショット。

数秒後に、次に示す例のように、クエリの結果がセルの下のテーブルに表示されます。 この Spark クエリがセッションの最初のクエリである場合、Spark コンテキストを初期化する必要があるため、この時間が長くなる可能性があります。

サンプルの Spark SQL クエリと結果を含むノートブックを示すスクリーンショット。

ノートブック内の DICOM ファイル データへのアクセス

テンプレートを使用してパイプラインを作成し、DICOM ファイル データへのショートカットを作成した場合は、instance テーブル内の filePath 列を使用して、インスタンス メタデータをファイル データに関連付けることができます。

SELECT sopInstanceUid, filePath from instance

サンプルの Spark SQL クエリと filePath を含む結果が表示されているノートブックのスクリーンショット。

まとめ

この記事で学習した内容は次のとおりです。

  • Data Factory テンプレートを使用して、DICOM サービスから Data Lake Storage Gen2 アカウントへのパイプラインを作成します。
  • 1 時間ごとのスケジュールで DICOM メタデータを抽出するようにトリガーを構成します。
  • ショートカットを使用して、ストレージ アカウント内の DICOM データをファブリック レイクハウスに接続します。
  • ノートブックを使用して、レイクハウス内の DICOM データのクエリを実行します。

次のステップ

Note

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