6.2 DoseLimitのチェック

目的

プライマリリファレンスポイントに設定されているDoseLimitの値をチックします。

必要な情報

プライマリリファレンスポイントのTotal Dose Limit、Daily Dose Limit、Session Dose Limit値 プランの総線量、1回線量

与えられている引数

PlanSetupクラスのインスタンスplan

必要な情報へのアクセス方法

現在開かれているPlanのプライマリリファレンスポイントに設定されている各Limit値は以下のようにアクセスします。

1
2
3
4
5
6
7
8
//PlanのプライマリリファレンスポイントのTotal Dose Limitにアクセス
DoseValue TotalDoseLimit =plan.PrimaryReferencePoint.TotalDoseLimit;

//PlanのプライマリリファレンスポイントのDaily Dose Limitにアクセス
DoseValue DailyDoseLimit =plan.PrimaryReferencePoint.DailyDoseLimit;

//PlanのプライマリリファレンスポイントのSession Dose Limitにアクセス
DoseValue SessionDoseLimit =plan.PrimaryReferencePoint.SessionDoseLimit;

現在開かれているPlanの総線量、1回線量にアクセスするには以下のようにします。

1
2
3
4
5
//Planの総線量アクセス
DoseValue TotalDose =plan.TotalDose;

//Planの1回線量にアクセス
DoseValue DosePerFraction =plan.DosePerFraction

必要な情報の表示

Exercise_PlanCheck_Ex1.3.csを開き、関数CheckRPFunc内に以下のコードを記述します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
DoseValue TotalDose =plan.TotalDose;
DoseValue DosePerFraction =plan.DosePerFraction;
DoseValue TotalDoseLimit =plan.PrimaryReferencePoint.TotalDoseLimit;
DoseValue DailyDoseLimit =plan.PrimaryReferencePoint.DailyDoseLimit;
DoseValue SessionDoseLimit =plan.PrimaryReferencePoint.SessionDoseLimit;

string RP_info = string.Format("TotalDose:{0}" + "\n"
                             + "DosePerFraction:{1}" + "\n"
                             + "TotalDoseLimit:{2}" + "\n"
                             + "DailyDoseLimit:{3}" + "\n"
                             + "SessionDoseLimit:{4}",
                             TotalDose.ToString(),
                             DosePerFraction,
                             TotalDoseLimit,
                             DailyDoseLimit,
                             SessionDoseLimit);
MessageBox.Show(RP_info);
プランのTotalDose、DosePerFraction、 プライマリリファレンスポイントのTotalDoseLimit、DailyDoseLimit、SessionDoseLimitが表示されます。 表示されている内容に間違いがないかEclipseで確認しましょう。

実装

まずTotalDoseLimitがplanの総線量TotalDoseと一致しているかチェックし、異なる場合はTotalDoseLimitとTotalDoseを表示します。

1
2
3
4
5
6
7
8
if (plan.PrimaryReferencePoint.TotalDoseLimit == plan.TotalDose)
{
    oText += MakeFormatText(true, checkName, "");
}
else
{
    oText += MakeFormatText(false, checkName, "Total Dose Limit: " + plan.PrimaryReferencePoint.TotalDoseLimit + ",Planed Dose: " + plan.TotalDose);
}
次にSessionDoseLimitが1回線量DosePerFractionと一致しているかチェックし、異なる場合はSessionDoseLimitとDosePerFractionを表示します。
1
2
3
4
5
6
7
8
if (plan.PrimaryReferencePoint.SessionDoseLimit == plan.DosePerFraction)
{
    oText += MakeFormatText(true, checkName, "");
}
else
{
    oText += MakeFormatText(false, checkName, " Session Dose Limit: " + plan.PrimaryReferencePoint.SessionDoseLimit + ",Planed Dose: " + plan.DosePerFraction);
}

最後にDailyDoseLimitがSessionDoseLimitと一致しているかチェックし、異なっている場合はDailyDoseLimitとSessionDoseLimitが異なっている旨を表示します。

1
2
3
4
5
6
7
8
if (plan.PrimaryReferencePoint.DailyDoseLimit == plan.PrimaryReferencePoint.SessionDoseLimit)
{
    oText += MakeFormatText(true, checkName, "");
}
else
{
    oText += MakeFormatText(false, checkName, " Session: " + plan.PrimaryReferencePoint.SessionDoseLimit + "is differ form Daily: " + plan.PrimaryReferencePoint.DailyDoseLimit);
}