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

CIRCUS CS データ構造

ジョブリスト

実行されたジョブの情報を永続的に保存しておく場所。プラグインの登録の度に作成され、一度作ったジョブのデータは削除されない。

旧 CS の executed_plugin_list に対応。

コレクション名: pluginJobs

field type description
jobId (🔑) string ジョブ ID
pluginId string プラグイン ID
environment string (プラグイン起動時に渡す追加パラメータ。本当に必要か考慮中…)
status string ステータス文字列のうちの 1 つ。finished など。
series JobSeries[] どの DICOM シリーズからどのような画像を作るかを定義する
startedAt date ジョブ開始時刻(前処理開始時刻)
finishedAt date ジョブが finished 状態になった時刻(それ以外のエラーなどの場合は未定義)
createdAt date ジョブ作成時刻(このエントリが作成された時刻)
updatedAt date ジョブ更新時刻(このドキュメントに何らかの更新があった時刻)
result any プラグインジョブの結果を保持する任意のオブジェクト
feedback Feedback[] このジョブに結びついているユーザからのフィードバック
  • ステータス文字列の一覧については CS Core 概要を参照。

Feedback:

field type description
userEmail string フィードバック登録者
isConsensual boolean true なら統合フィードバック, false なら個人フィードバック
content any フィードバックデータ本体
createdAt date フィードバック登録時間

キュー

キューは本来 CIRCUS API の一部ではなく、CS Core に属するものなのだが、実装の都合でとりあえず circus-api と同じ MongoDB のコレクションに保存している。将来的にキューの実装は何らかのクラウド互換のメッセージシステムなどに置き換わる可能性がある。なので circus-api からは(キューを作って CS Core に渡す部分以外で直接以下のコレクションを触らないこと。 あくまで cs.queue.list() 経由でアクセスする。

プラグインの処理が終わる(成功しても失敗しても)と、中身は削除される。キューに何も入っていない時はこのコレクションは空になる。旧 CS の job_queue_seriesjob_queue を組み合わせたもの。

コレクション名: pluginJobQueue

field type description
jobId (🔑) string ジョブ ID
pluginId string プラグイン ID
priority number ジョブの優先度
environment string (プラグイン起動時に渡す追加パラメータ。本当に必要か考慮中…)
pluginVersion string プラグインバージョン(semvar 準拠を推奨)
series JobSeries[] どの DICOM シリーズからどのような画像を作るかを定義する
createdAt date MongoDate
updatedAt date MongoDate

JobSeries:

field type description
seriesUid string シリーズインスタンス UID
startImgNum number ボリュームを切り出すイメージ番号(開始)
endImgNum number ボリュームを切り出すイメージ番号(終端)
imageDelta number ボリュームを切り出す際のイメージ番号の増分。通常は 1。
requiredPrivateTags string[] INI ファイルに出力が必要なプライベートタグ

startImgNum, endImgNum, imgeDelta は、指定されたシリーズ UID の DICOM シリーズの画像内から、どうやってボリュームを取り出して RAW ファイルを作るのかを指定するための数字。例えばイメージ番号が 1 ~ 200 の 200 枚の DICOM シリーズの場合、startImgNum = 1, endImgNum = 200, imageDelta = 1 となる。 "10, 12, 14, ..., 20" のように 6 枚の画像を切り出す場合、startImgNum = 10, endImgNum = 20, imageDelta = 2 となる。

プラグイン定義

ここの定義は CIRCUS-API の起動時に読み出され、

field type description
pluginId string プラグインID
pluginName string 表示用のプラグイン名
pluginVersion string 表示用のプラグインバージョン (semvar準拠)
icon Icon 表示用のプラグインアイコン
type string とりあえず CAD で固定

Icon:

field type description
glyph string グリフ。circus-web-ui/asserts/icons 以下にある b- で始まるアイコンの b- 以降の部分
color string アイコンフォアグラウンド色になる #ffffff のような文字列
backgroundColor string アイコンバックグラウンド色になる #333333 のような文字列

未定事項

  • プラグイン ID は Docker イメージの ID そのものにする? ULID のランダム文字列にする?
  • プラグイン定義(本体は MongoDB に入っている)をどうやって CS Core に渡す?

例:

- pluginId: defgh
  pluginName: MRA-CAD
  version: 1.0
  type: CAD
  dockerImage: utrad-mra-cad-1.0
- pluginId: abcde
  pluginName: Lung-CAD
  version: 2.1
  type: CAD
  dockerImage: lung-cad-2.1