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

議事録

2020-02-06

1 月以降の CIRCUS の改変

  • コードベースを全体的に TypeScript 化 (RS は元から TypeScript で記述している)

  • CI (Continuous Integration) を GitHub Actions ベースに(RS は未対応)

    • サーバ側で自動テストを走らせる
  • 設定ファイルの形式の統一(RS は未対応)

    • Cosmiconfig を使った*.js ファイルベースの設定ファイル

    • これまでは circus-cs-core が cosmiconfig、circus-rs が js を使った独自設定ファイル、circus-api が環境変数(.env)ベースになっており、複数個所に複数の形式で似たような設定をする必要があった

  • テストフレームワークを Mocha → Jest に(RS は未対応)

  • DICOM 画像(タグ情報)読み込みを JavaScript ベースに

    • 理由:画像 1 枚ごとに Docker コンテナを起動するのは遅い

    • TimeZoneOffset が指定されていない場合にデフォルト(例:+9 時間)を指定可能に

    • エンコーディング周りの検証が不足している

  • ZIP ファイルからのインポートにちゃんと対応

    • Docker を外したことで一時ファイルを作成せずに Zip からファイルを 1 つずつ取り出してインポート可能になった
  • 自作の DI (Dependency Injection) コンテナを使ってコードを簡素化(RS は未対応)

  • circus-api の MongoDB の Aggregation Framework に対応(の途中)

    • patientInfoCache と latestRevision が不要になる(予定)

    • 基本動作については大丈夫そうだが速度周り、インデックスを貼った場合のふるまいについて要検証(データが 10 万件を超えたあたりである日突然急激に遅くならないか)

  • UI 側でも job 検索について Aggregation Framework 対応完了

  • scripts (migrate, import-series, etc.) にも自動化テストを適用

新 CIRCUS システムの現状確認

  • 検索画面

    • Series 検索
    • Case 検索 (DB)
    • Plug-in job search
      • 上記 3 つの検索は可能
    • Plug-in job queue 画面が表示できない
      • 仕様検討段階 (セキュリティの観点から)
  • RS 関連 (以下をジェニュインに依頼する)

    • ボリュームデータの表示に時間を要する
    • 塗ったラベルが正しく表示されない (上/下端スライス)
    • CS 結果画面 (脳動脈瘤検出) での VR 表示の正式対応 => 3 月末までに完成
  • ジョブ実行・プラグイン関係

    • 重複処理防止機能
      • api は済 web-ui は未
    • Series ruleset 機能の実装
    • invalidate 機能の実装
      • 要;結果画面の管理者モード
    • partialVolumeDescriptor 周り
      • dicom_voxel_dumper が DICOM tag の slice location (or image position) を 調べて 頭 => 足 に自動並べ替えを行っていることとの不整合
        • ジョブ実行時に circus-api 側で 2 枚の DICOM ファイルの tag を確認して  partialVolumeDescriptor に記載する (dicom_voxel_dumper から自動並べ替え機能を外す)
  • dicom_utility の interactive モード実装

    • dump までは行えるようになったが、従来の関数の一部変更などが必要なため来週までかかる見込み
  • (近い将来) 行うべきこと

    • JavaScript 版 dicom_voxel_dumper の実装
      • Docker コンテナ (C++ アプリ) が 1 個不要になる

スケジュール管理について

  • Monorepo 化を行う (複数のパッケージを 1 つの git リポジトリにまとめて管理する)

  • CIRCUS ミーティングの議事録を Design Note に記入する