English | 日本語
Varian 社製放射線治療計画装置 Eclipse (ESAPI) 上で動作する、10,000 件規模の治療計画データマイニング・スタンドアロンアプリケーション です。
患者データベースから指定条件に合致する計画(PlanSetup / PlanSum)を横断探索し、線量品質指標 (DQP)、照射パラメータ、臨床プロトコル、最適化条件、および照射野複雑度 (Modulation Complexity Score, Edge Metric 等) を高速・安全に抽出して、正規化された CSV および機械学習用途の JSON Lines (.jsonl) 形式でストリーミング出力します。
- 🌐 標準英語 UI & 日英バイリンガルドキュメント:
- ESAPI 臨床スクリプトの国際標準に準拠した洗練された英語 UI を採用。
- 操作マニュアルおよび各種技術ドキュメントは日本語版と英語版を両方配備。
- ⚡ システム線量単位(cGy/Gy)の自動検出とリアルタイム表示:
- Eclipse TPS のネイティブ線量単位を自動検出し、DQP 設定バナー、検索サマリー、コンソールヘッダーにバッジ表示。
- DQP「Volume at Dose」等の Gy 入力値を施設運用単位に合わせて自動換算・DVH 曲線フォールバック補間により
NAを根絶。
- 🖱️ ピクセル単位の物理スクロール & マウス操作の完全安定化:
- DQP およびルールマッピンググリッドを物理ピクセルスクロール化。マウスホイールで最下行の境界まで確実にスクロール可能。
- 🚀 10,000 件規模のストリーミング出力パイプライン:
- 全データをメモリに溜め込まず、1 患者・1 プランごとにディスクへ即時フラッシュ。長時間実行時もメモリ消費を数十 MB 程度で平坦に維持。
- 🔍 輪郭事前マッピング(Pre-Scan)& エイリアス統合:
- 本検索の前に輪郭 ID を高速スキャンし、表記揺れ(
PTV_60,ptv60,PTV-60Gy等)を正規表現や部分一致で単一カラムに集約。 - マッピング設定は JSON ファイルとして永続化・再利用可能。
- 本検索の前に輪郭 ID を高速スキャンし、表記揺れ(
- 🔀 階層的 AND / OR フィルタリング & 線量有無判定:
- カンマ (
,) 区切り入力によるフィールド内 OR 検索に加え、全条件を満たす「AND」と、いずれかを満たす「OR」をワンタッチで切り替え。 - 線量計算の有無(
All/HasDose[線量あり] /NoDose[線量なし])フィルタにより、未計算プランの除外や作成中プランの絞り込みに対応。 - 範囲指定(
70-80)や不等号(>=10)による線量・分割数検索、照射パラメータ(Machine/Energy/Technique)および日付範囲フィルタ。 - 合算計画 (
PlanSum) の抽出オプション対応。
- カンマ (
- 🤖 機械学習・AI 解析向け JSON Lines (
.jsonl) 同時出力:- 階層構造(ビーム、最適化パラメータ、DVH 指標)を保持したまま、Python (Pandas / PyTorch 等) で即座に読み込めるフォーマットを出力。
- 🔒 プライバシー保護・患者データ匿名化:
- 院外研究・共同研究用途向けに、Patient ID の SHA-256 ハッシュ化および個人情報(生年月日、承認者名等)の
REDACTEDマスキングに対応。
- 院外研究・共同研究用途向けに、Patient ID の SHA-256 ハッシュ化および個人情報(生年月日、承認者名等)の
- 📏 線量単位の自動正規化 (Gy 統一):
- ESAPI の
cGy/Gy混在を自動検出し、すべてGy単位に統一換算。
- ESAPI の
- 🛡️ 堅牢な STA ワーカースレッド & メモリ安全機構:
- ESAPI の STA 制約を遵守した専用バックグラウンドワーカーにより UI フリーズを完全防止。
- 200 件ごとの定期
GC.Collect()とtry-finallyによる確実な患者解放でメモリリークを根絶。
- 📦 単一自己完結型バイナリ (Costura.Fody):
- 外部 NuGet 依存 DLL を
EclipseDataMiner.exe内に統合。Eclipse 端末への単一ファイル配布・即実行が可能。
- 外部 NuGet 依存 DLL を
- OS: Windows 10 / 11 / Windows Server (64-bit)
- 治療計画装置: Varian Eclipse v15.6 / v16.1
- ランタイム: .NET Framework 4.6.1 以上
- 実行権限: ESAPI スクリプト実行権限(Eclipse 端末または TBox 上で実行)
本ツールはスタンドアロン型実行ファイルです。
- ビルドまたは配布パッケージの取得:
release\フォルダ一式を取得します(またはrelease\EclipseDataMiner_v3.0.2.exeおよびEclipseDataMiner_v3.0.2.exe.config)。
- Eclipse 端末への配置:
- 取得した実行ファイルと構成ファイル(
EclipseDataMiner_v3.0.2.exeとEclipseDataMiner_v3.0.2.exe.config)、およびプリセットフォルダ(Presets\,Templates\)を Eclipse 端末上の任意のフォルダに配置します。 - ※ 臨床環境(病院ネットワーク・FIPS 有効端末)での安全な通信のため、
.configファイルは必ず.exeと同フォルダに配置してください。
- 取得した実行ファイルと構成ファイル(
- 起動:
EclipseDataMiner_v3.0.2.exeをダブルクリックして起動します。
メイン画面は番号付きの 4 つのタブで構成され、左から右へ直感的に設定を進めることができます:
[1- Plan Search] -> [2- Structure Mapping] -> [3- DQP 設定]
検索条件指定・プリセット 輪郭事前スキャン 線量評価指標 (D95%等)
プラン検索・一覧で選択 エイリアスマッピング
↓
[4- Options & 出力先] -> [最下部: 実行コントロール]
出力先 CSV/JSONL 指定 [▶ Run Extraction] ワンクリック抽出
複雑度・匿名化設定 リアルタイム進捗監視・中断対応
- Tab 1: 1- 📋 Plan Search:
- 上部の「🔍 計画検索・絞り込み条件 (Plan Search & Filter)」で患者・計画・線量・承認状態・装置・日付範囲を指定(またはプリセット呼び出し)。
- 「🔍 Search Plans」ボタンで合致プランを高速走査し、下部の一覧表で抽出対象プランを選択。
- Tab 2: 2- 📐 Structure Mapping:
- 「🔍 Pre-Scan Structures」で輪郭名をスキャンし、表記揺れを単一のカラム(Target Alias)へ統合。
- Tab 3: 3- 📊 Dose Quality Parameters (DQP):
- D95%, V20Gy などの線量・体積指標を追加・設定(テンプレート CSV の読込・保存対応)。
- Tab 4: 4- ⚙️ Extraction & Analysis Options:
- 出力先 CSV ファイルパスの指定(Browse... / Open Folder)。
- 照射パラメータ、プラン複雑度 (MCS/Edge Metric)、匿名化 (SHA-256)、JSONL 同時出力などのオプションを設定。
- 抽出実行(画面最下部):
- 画面最下部のコントロールバーにある 「▶ Run Extraction」 をクリックして実行。同バー内の進捗バーおよびコンソールログでリアルタイムに進捗を監視できます。
- 1 プラン = 1 行(カンマ区切り、UTF-8 with BOM)。
- 基本計画情報 (11列) + オプション情報 (最大10列) + 輪郭基本統計量 (4列/輪郭) + 動的 DQP 列で構成。全カラムの詳細解説は マニュアル第4章 (docs/MANUAL.md#4) を参照してください。
- 改行コードはスペース置換、カンマや引用符は適切にサニタイズエスケープされます。
- 欠損値や該当しない項目には
N/Aが出力されます。
| 列名(主要項目例) | 内容 | 例 |
|---|---|---|
Patient ID |
患者 ID(匿名化時は SHA-256 ハッシュ) | PT_1001 または e3b0c442... |
Course ID / Plan ID |
コース名 / 計画名 | C1, VMAT_Prostate |
DosePerFraction[Gy] |
1回処方線量 (Gy) | 2.00 |
TotalDose[Gy] |
総処方線量 (Gy) | 60.00 |
ApprovalStatus |
承認状態 | TreatmentApproved |
MU |
各ビームの MU 値 (セミコロン連結) | B1:145.2;B2:138.6 |
Machine/Energy/Tech/PlanType |
照射パラメータまとめ | TrueBeam:6X:ARC:VMAT |
PlanComplexity |
複雑度指標 (Beam:MCS,EM,LeafTravel,ArcLength) | (B1:0.28,0.12,1850.4,360.0) |
<Structure>-Volume[cc] |
輪郭体積(自動出力) | 42.50 |
<Structure>-Max dose[Gy] |
輪郭最大線量(自動出力) | 64.20 |
<Structure>-Mean dose[Gy] |
輪郭平均線量(自動出力) | 61.80 |
<Structure>-Min dose[Gy] |
輪郭最小線量(自動出力) | 58.10 |
<Structure>-D95%[Gy] |
DQP 算出線量 | 59.80 |
<Structure>-V70%[%] |
DQP 算出体積割合(処方総線量基準) | 18.50 |
- 1 プラン = 1 行の JSON オブジェクト。
- Python での読み込み:
import json with open("DataMiningOutput.csv.jsonl", "r", encoding="utf-8") as f: plans = [json.loads(line) for line in f] print(f"Loaded {len(plans)} plans.")
本リポジトリは、医療現場における品質保証および安全管理基準に準拠した包括的なドキュメント体系を配備しています:
本プロジェクトは EclipseDataMiner.Tests (MSTest) による多層自動テストを配備しており、ESAPI データベース非接続環境でもコアロジックを 100% 検証可能です。
- テスト件数: 125 件 (100% PASS)
- テストカバレッジ: 線量正規化 (
ToGy())、システム線量単位自動検出・スケーリング、文字列サニタイズ・エスケープ、患者匿名化、CSV/JSONL ストリーミング出力、階層的 AND/OR 検索フィルタ&UIトグル連動、線量有無判定フィルタ (HasDose/NoDose)、不等号・範囲数値フィルタ、日付・照射野パラメータフィルタ、プリセット管理&説明文永続化、2ペイン輪郭マッピング&リアルタイムプレビュー、特異度優先 (Exact > Contains > Regex) & 上下順序制御、JSON 永続化、照射野複雑度解析アルゴリズム(MCS, Edge Metric, Leaf Travel Length, Arc Length 文献値完全一致検証)、DVH 補間フォールバック検証、DataGrid 物理ピクセルスクロール&マウス最下端到達性検証、XAMLリソース整合性検証
本ソフトウェアは MIT License の下で公開されています。 同梱・利用しているサードパーティ製オープンソースソフトウェアの著作権情報およびライセンス条文(MIT License, BSD 3-Clause, Apache 2.0)については、サードパーティライセンス通知 (THIRD-PARTY-NOTICES.md) をご参照ください。
