最終更新: a few seconds ago Remove 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_series と job_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