分析ワークロードでの DICOM データの使用を開始する
この記事では、Azure Data Factory と Microsoft Fabric を使用して分析ワークロードで DICOM® データを使用して作業を開始する方法について説明します。
前提条件
作業を開始する前に、次の手順を実行します。
- 階層型名前空間を有効にし、Azure Data Lake Storage Gen2 機能が有効になっているストレージ アカウントを作成します。
- DICOM メタデータを格納するコンテナー (名前付き
dicom
など) を作成します。
- DICOM メタデータを格納するコンテナー (名前付き
- DICOM サービスのインスタンスをデプロイします。
- (省略可能) Azure Data Lake Storage を使用して DICOM サービスをデプロイし、DICOM ファイルへの直接アクセスを有効にします。
- Data Factory インスタンスを作成します。
- システム割り当てマネージド ID を有効にします。
- ファブリックにレイクハウスを作成します。
- DICOM サービスと Data Lake Storage Gen2 ストレージ アカウントの Data Factory システム割り当てマネージド ID にロールの割り当てを追加します。
- DICOM データ閲覧者ロールを追加して、DICOM サービスにアクセス許可を付与します。
- ストレージ BLOB データ共同作成者ロールを追加して、Data Lake Storage Gen2 アカウントにアクセス許可を付与します。
DICOM サービスの Data Factory パイプラインを構成する
この例では、Data Factory パイプラインを使用して、インスタンス、系列、および調査の DICOM 属性を、Delta テーブル形式でストレージ アカウントに書き込みます。
Azure portal から Data Factory インスタンスを開き、[スタジオの起動] を選択して開始します。
リンクされたサービスを作成します
Data Factory パイプラインは、データ ソースから読み取り、通常他の Azure サービスであるデータ シンクに書き込みます。 他のサービスへのこれらの接続は、リンク サービスとして管理されます。
この例のパイプラインは、DICOM サービスからデータを読み取り、その出力をストレージ アカウントに書き込むので、両方用にリンクされたサービスを作成する必要があります。
DICOM サービスのリンク サービスを作成する
Azure Data Factory Studio で、左側のメニューから [管理] を選択します。 [接続] で [リンク サービス] を選択して、[新規] を選択します。
[新規のリンクされたサービス] ウィンドウで、REST を検索します。 REST タイルを選択し、[続行] を選択します。
リンク サービスの名前と説明を入力します。
[ベース URL] フィールドに、DICOM サービスのサービス URL を入力します。 たとえば、
contosohealth
ワークスペースのcontosoclinic
という名前の DICOM サービスには、サービス URLhttps://contosohealth-contosoclinic.dicom.azurehealthcareapis.com
があります。[認証の種類] で、[システム割り当てマネージド ID] を選択します。
[AAD リソース] に、「
https://dicom.healthcareapis.azure.com
」と入力します。 この URL は、すべての DICOM サービス インスタンスで同じです。必須フィールドに入力した後、[テスト接続] を選択して、ID のロールが正しく構成されていることを確認します。
接続テストが成功したら、[作成] を選択します
Azure Data Lake Storage Gen2 のリンク サービスを作成する
Data Factory Studio で、左側のメニューから [管理] を選択します。 [接続] で [リンク サービス] を選択して、[新規] を選択します。
[新しいリンクされたサービス] ウィンドウで、Azure Data Lake Storage Gen2 を検索します。 [Azure Data Lake Storage Gen2] タイルを選択し、[続行] を選択します。
リンク サービスの名前と説明を入力します。
[認証の種類] で、[システム割り当てマネージド ID] を選択します。
ストレージ アカウントの URL を手動で入力して、ストレージ アカウントの詳細を入力します。 または、ドロップダウンから Azure サブスクリプションとストレージ アカウントを選択することもできます。
必須フィールドに入力した後、[テスト接続] を選択して、ID のロールが正しく構成されていることを確認します。
接続テストが成功したら、[作成] を選択します
DICOM データのパイプラインを作成する
Data Factory パイプラインは、DICOM メタデータの Delta テーブルへのコピーなどのタスクを実行するアクティビティのコレクションです。 このセクションでは、DICOM サービスのデータの追加、更新、および 削除に応じて、DICOM データを Delta テーブルに定期的に同期するパイプラインの作成について詳しく説明します。
左側のメニューから [作成者] を選択します。 ファクトリ リソース ペインのプラス記号 (+) アイコンを選択して、新しいリソースを追加します。 [パイプライン] を選択し、メニューから [テンプレート ギャラリー] を選択します。
[テンプレート ギャラリー] で、DICOM を検索します。 [Copy DICOM Metadata Changes to ADLS Gen2 in Delta Format] (差分形式で DICOM メタデータの変更を ADLS Gen2 にコピーする) タイルを選択し、[続行] を選択します。
[入力] セクションで、DICOM サービスと Data Lake Storage Gen2 アカウント用に以前に作成したリンク サービスを選択します。
[このテンプレートを使用] を選択して新しいパイプラインを作成します。
DICOM データのパイプラインを作成する
テンプレート ギャラリーのテンプレートを使用するのではなく、Azure Data Lake Storage で DICOM サービスを作成した場合は、カスタム テンプレートを使用してメタデータ パイプラインに新しい fileName
パラメーターを含める必要があります。 パイプラインを構成するには、次の手順のようにします。
GitHub からテンプレートをダウンロードします。 テンプレート ファイルは圧縮 (zip 形式) フォルダーです。 ファイルは既に圧縮形式でアップロードされているため、抽出する必要はありません。
Azure Data Factory で、左側のメニューから [作成者] を選択します。 [ファクトリのリソース] ペインのプラス記号 (+) アイコンを選択して、新しいリソースを追加します。 [パイプライン] を選択し、[パイプライン テンプレートからインポートする] を選択します。
[開く] ウィンドウで、ダウンロードしたテンプレートを選択します。 [Open (開く)] を選択します。
[入力] セクションで、DICOM サービスと Azure Data Lake Storage Gen2 アカウント用に作成したリンク サービスを選択します。
[このテンプレートを使用] を選択して新しいパイプラインを作成します。
パイプラインのスケジュール設定
パイプラインは、トリガーによってスケジュール設定されます。 トリガーにはさまざまな種類があります。 "スケジュール トリガー" を使用すると、パイプラインを 1 時間ごとや毎日午前 0 時など、特定の時刻に実行することができます。 手動トリガーでは、必要に応じてパイプラインをトリガーします。つまり、実行したいときにいつでも実行されます。
この例では、タンブリング ウィンドウ トリガーを使用して、指定された開始点と一定の時間間隔でパイプラインを定期的に実行します。 トリガーの詳細については、「Azure Data Factory または Azure Synapse Analytics でのパイプラインの実行とトリガー」を参照してください。
新しいタンブリング ウィンドウ トリガーを作成する
左側のメニューから [作成者] を選択します。 DICOM サービスのパイプラインを選択し、メニュー バーから [トリガー の追加] を選択し、[新規作成/編集] を選択します。
[トリガーの追加] ウィンドウで、[Choose trigger] (トリガーの選択) を選択し、[新規] を選択します。
トリガーの名前と説明を入力します。
[タイプ] として [タンブリングウィンドウ] を選択します。
1 時間ごとに実行されるパイプラインを構成するには、[繰り返し] を [1 時間] に設定します。
[詳細] セクションを展開し、[遅延] に「15 分」と入力します。 この設定により、1 時間の最後に保留中の操作を完了してから処理を実行できます。
テーブル間の一貫性を確保するために、[最大コンカレンシー] を 1 に設定します。
[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 |
[トリガーの実行パラメーター] ペインで、前提条件で作成したストレージ コンテナーの名前と一致する ContainerName 値を入力します。
StartTime には、次のシステム変数を使用します。
@formatDateTime(trigger().outputs.windowStartTime)
EndTime には、次のシステム変数を使用します。
@formatDateTime(trigger().outputs.windowEndTime)
Note
タンブリング ウィンドウ トリガーのみが次のシステム変数をサポートします。
@trigger().outputs.windowStartTime
、および@trigger().outputs.windowEndTime
スケジュール トリガーでは、異なるシステム変数が使用されます。
@trigger().scheduledTime
、および@trigger().startTime
トリガーの種類に関する詳細情報を参照してください。
[保存] を選んで新しいトリガーを作成します。 [発行] を選択して、定義されたスケジュールでのトリガーの実行を開始します。
トリガーが発行された後は、[Trigger Now](今すぐトリガー) オプションを使用して手動でトリガーできます。 開始時間が過去の値に設定されている場合、パイプラインはすぐに開始されます。
パイプラインの実行を監視する
[監視] タブでトリガーされた実行とそれらに関連付けられたパイプラインの実行を監視することができます。ここでは、各パイプラインが実行される時間と実行にかかった時間を参照できます。 また、発生した問題をデバッグすることもできます。
Microsoft Fabric
Fabric は、Microsoft OneLake の上に配置されたオールインワン分析ソリューションです。 ファブリック レイクハウスを使用すると、OneLake のデータを 1 か所で管理、構造化、分析できます。 Data Lake Storage Gen2 に書き込まれた OneLake の外部のデータは、ショートカットを使用して OneLake に接続し、Fabric の一連のツールを利用できます。
メタデータ テーブルへのショートカットの作成
前提条件で作成されたレイクハウスに移動します。 エクスプローラー ビューで、Tables フォルダーの横にある省略記号メニュー (...) を選択します。
[新しいショートカット] を選択して、DICOM 分析データを含むストレージ アカウントへの新しいショートカットを作成します。
ショートカットのソースとして Azure Data Lake Storage Gen2 を選択します。
[接続設定] で、[リンク サービス] セクションで使用した URL を入力します。
既存の接続を選択するか、使用する認証の種類を選択して、新しい接続を作成します。
Note
Data Lake Storage Gen2 と Fabric の間の認証には、いくつかのオプションがあります。 組織アカウントまたはサービス プリンシパルを使用できます。 アカウント キーまたは Shared Access Signature トークンを使用することはお勧めしません。
[次へ] を選択します。
Data Factory パイプラインによって作成されたデータを表すショートカット名を入力します。 たとえば、
instance
Delta テーブルの場合、ショートカット名は instance にする必要があります。実行パラメーター構成の
ContainerName
パラメーターと一致するサブ パスとショートカットのテーブルの名前を入力します。 たとえば、dicom
コンテナー内のパスinstance
を持つ Delta テーブルの場合は/dicom/instance
を使用します。[作成] を選択して、ショートカットを作成します。
手順 2 から 9 を繰り返して、ストレージ アカウント内の他の Delta テーブル (たとえば
series
とstudy
) に残りのショートカットを追加します。
ショートカットを作成したら、テーブルを展開して列の名前と型を表示します。
ファイルへのショートカットの作成
Azure Data Lake Storage を使用した DICOM サービスを使用している場合は、データ レイクに格納されている DICOM ファイル データへのショートカットを追加で作成できます。
前提条件で作成されたレイクハウスに移動します。 エクスプローラー ビューで、[ファイル] フォルダーの横にある省略記号メニュー (...) を選択します。
[新しいショートカット] を選択して、DICOM データを含むストレージ アカウントへの新しいショートカットを作成します。
ショートカットのソースとして Azure Data Lake Storage Gen2 を選択します。
[接続設定] で、[リンク サービス] セクションで使用した URL を入力します。
既存の接続を選択するか、使用する認証の種類を選択して、新しい接続を作成します。
[次へ] を選択します。
DICOM データを説明するショートカット名を入力します。 たとえば、contoso-dicom-files です。
DICOM サービスによって使用されるストレージ コンテナーとフォルダーの名前と一致するサブ パスを入力します。 たとえば、ルート フォルダーにリンクする場合、サブ パスは /dicom/AHDS になります。 ルート フォルダーは常に
AHDS
ですが、必要に応じて、特定のワークスペースまたは DICOM サービス インスタンスの子フォルダーにリンクできます。[作成] を選択して、ショートカットを作成します。
ノートブックを実行する
レイクハウスでテーブルが作成されたら、ファブリック ノートブックからクエリを実行します。 メニュー バーから [ノートブックを開く] を選択することで、レイクハウスから直接ノートブックを作成できます。
[ノートブック] ページでは、新しく追加されたテーブルを含めて、レイクハウスの内容を左側に表示できます。 ページの上部で、ノートブックの言語を選択します。 言語は、個々のセルに対して構成することもできます。 次の例では、Spark を使用します。
Spark SQL を使用してテーブルにクエリを実行する
セル エディターで、SELECT
ステートメントのような Spark SQL クエリを入力します。
SELECT * from instance
このクエリでは、instance
テーブルからすべてのコンテンツが選択されます。 準備ができたら、[セルの実行] を選択してクエリを実行します。
数秒後に、次に示す例のように、クエリの結果がセルの下のテーブルに表示されます。 この Spark クエリがセッションの最初のクエリである場合、Spark コンテキストを初期化する必要があるため、この時間が長くなる可能性があります。
ノートブック内の DICOM ファイル データへのアクセス
テンプレートを使用してパイプラインを作成し、DICOM ファイル データへのショートカットを作成した場合は、instance
テーブル内の filePath
列を使用して、インスタンス メタデータをファイル データに関連付けることができます。
SELECT sopInstanceUid, filePath from instance
まとめ
この記事で学習した内容は次のとおりです。
- Data Factory テンプレートを使用して、DICOM サービスから Data Lake Storage Gen2 アカウントへのパイプラインを作成します。
- 1 時間ごとのスケジュールで DICOM メタデータを抽出するようにトリガーを構成します。
- ショートカットを使用して、ストレージ アカウント内の DICOM データをファブリック レイクハウスに接続します。
- ノートブックを使用して、レイクハウス内の DICOM データのクエリを実行します。
次のステップ
Note
DICOM® は、医療情報のデジタル通信に関する標準出版物に関する米国電機工業会 (National Electrical Manufacturers Association) の登録商標です。