最終更新: a few seconds ago Remove 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 パッケージを使う。
multi-integer-range: https://www.npmjs.com/package/multi-integer-range
リポジトリはアプリケーションの起動時などに 1 回だけ作り、dependency injection すること。
DicomFileRepository の使用場所
DicomFileRepository は以下の場所で使われる。
- CIRCUS DB/CS: 画像のアップロードやアクセスに使う。
- CIRCUS RS: サーバ側が画像をホストするのに使う。
- CIRCUS CS Core: ジョブ実行対象となるシリーズにアクセスする。
StaticDicomFileRepository
StaticDicomFileRepository は DicomFileRepository の実装のひとつであり、
fs を通じて普通にアクセス可能なファイルシステムに DICOM 画像を保存する。