最終更新: a few seconds agoRemove Netlify-related code from main (grafted, HEAD)

DICOM File Repository

概要

永続的な DICOM ファイル (*.dcm) 置き場の抽象化である小さなパッケージ。直接 fs.readFile などでファイルシステムを扱うのではなく、DICOM ファイルにはこれを経由してアクセスするようにする。将来的に Amazon S3 などのファイルシステムではないストレージに DICOM ファイルを保存する場合の布石。

以下のインターフェースを定義/実装している。

export interface SeriesAccessor {
  load: (image: number) => Promise<ArrayBuffer>;
  save: (image: number, buffer: ArrayBuffer) => Promise<void>;
  readonly images: string;
}

export default interface DicomFileRepository {
  getSeries(seriesUid: string): Promise<SeriesAccessor>;
}

使い方は以下のようになる。

const repository = new StaticDicomFileRepository({ path: '/var/dicom-data/' });

// 1.2.3.4.5 というシリーズのイメージ 5 を取得
const accessor = await repository('1.2.3.4.5');
const image = await accessor(5);

images"1-230,232-303" のような、シリーズ内に含まれるイメージ番号の一覧を表す文字列。この文字列の処理には multi-integer-range NPM パッケージを使う。

リポジトリはアプリケーションの起動時などに 1 回だけ作り、dependency injection すること。

DicomFileRepository の使用場所

DicomFileRepository は以下の場所で使われる。

  • CIRCUS DB/CS: 画像のアップロードやアクセスに使う。
  • CIRCUS RS: サーバ側が画像をホストするのに使う。
  • CIRCUS CS Core: ジョブ実行対象となるシリーズにアクセスする。

StaticDicomFileRepository

StaticDicomFileRepositoryDicomFileRepository の実装のひとつであり、 fs を通じて普通にアクセス可能なファイルシステムに DICOM 画像を保存する。