AWS HealthImaging で医療画像データをインポートする手順を確認してみた
はじめに
AWS HealthImaging に医療画像データ(DICOM)を保存する手順を確認してみた結果を共有します。
事前準備
検証データについて
医療画像データの DICOM データは以下の記事で紹介した方法で取得しました。
2 つのS3バケット
HealthImging に DICOM データをインポート時に S3 バケットの指定が 2 回あります。便宜上分けて 2 つの S3 バケットを用意してください。
- DICOM データをアップロード先の S3 バケット
- HealthImging のインポートジョブ実行結果が出力先される S3 バケット
医療画像データをアップロードまでの手順
S3 バケットへデータ転送
事前に S3 バケットへ DICOM データをアップロードが必要です。データの保存先の注意事項は S3 バケット直下に保存すると、HealthImging へインポートジョブが失敗します。そのため、なにかしらのプレフィックス(今回は test-data/)の配下へ保存してください。
$ s5cmd cp . s3://healthimaging-input-images/test-data/
インポートエラーの例
データストア作成
ここからは HealthImging の操作になります。まず、データストアを作成します。DICOM データの管理する単位のことです。
名前を決めて作成するだけです。
インポート
S3 バケットに保存した DICOM データを先程作成したデータストアに取り込みます。
アップロードした S3 バケット名とプレフィックスを指定します。実行結果の保存先として S3 バケットも指定します。サービスロールは今回はじめてのため新規作成としました。
インポートジョブを実行します。
ファイル数と容量に依りますが 5 分ほど待ちインポートジョブが成功しました。
結果確認
データセットに登録されたデータが確認できます。今回検証に使用した NCI Imaging Data Commons から取得した DICOM データなのですが、患者名など個人を特定できるデータはマスキングがされています。患者名はダミーとなっていますが、メタデータも確認できますね。
1 つのデータを開いてみると JSON 形式のメタデータを確認できました。ダウンロードボタンを押してみると同じ JSON ファイルがダウンロードされました。
インポートジョブの実行結果
インポートジョブの実行結果は S3 バケットに以下の階層で出力されました。
$ s3-tree healthimaging-import-results
healthimaging-import-results
└── 773d6afe418c4667a23a24531186ddf9-DicomImport-07a7343eea780139687f98e8ed154ed8
├── FAILURE
│ └── failure.ndjson
├── SUCCESS
│ └── success.ndjson
└── job-output-manifest.json
成功した結果のログを確認してみると、ファイル毎の情報が載っていました。
{"inputFile":"test-data/02b75a22-2b25-4311-bc19-8ffcf2b65df5.dcm","importResponse":{"imageSetId":"9014a03fae2db79848ba32e64f599e21","imageSetVersion":1,"isPrimary":true}}
{"inputFile":"test-data/4da174ae-c274-4dd3-8188-a77ae73e3144.dcm","importResponse":{"imageSetId":"9014a03fae2db79848ba32e64f599e21","imageSetVersion":1,"isPrimary":true}}
{"inputFile":"test-data/e6008435-39c3-4144-b052-aa3eff45f08c.dcm","importResponse":{"imageSetId":"9014a03fae2db79848ba32e64f599e21","imageSetVersion":1,"isPrimary":true}}
{"inputFile":"test-data/a98060ae-8e73-45ac-8566-f80e96df4d38.dcm","importResponse":{"imageSetId":"9014a03fae2db79848ba32e64f599e21","imageSetVersion":1,"isPrimary":true}}
{"inputFile":"test-data/58b19a07-df0b-4ab2-9826-2a6ec72b9d06.dcm","importResponse":{"imageSetId":"9014a03fae2db79848ba32e64f599e21","imageSetVersion":1,"isPrimary":true}}
まとめ
S3 バケットに DICOM データをアップロードさえできれば、HealthImging へのインポートは非常に簡単です。
おわりに
s5cmd コマンドを利用して日本からオレゴンの S3 バケットへデータを転送しました。今回はじめて s5cmd コマンドでアップロードしてみたのですが、約 2000 ファイル、合計 1.1GB のファイルを数分で転送できました。海外への転送でも並列転送が効いてのか非常に早かったです。今度 AWS CLI との転送速度比較してみたいと思います。