Extraction Rules のアクティビティを構成したので、field の値を検証および正規化するためにビジネス ルールを追加できます。
最初に、「Doctor ID」field のプロパティを調整します。Extraction Rules アクティビティは、Optical Character Recognition (OCR) のエラーや不要な文字を含む可能性がある事前認識結果を使用します。field の領域が見つかったら、field のプロパティで正規表現を指定して、field の値をさらに調整できます。データは再抽出され、OCR エラーは解消されます。
- Skill 名をクリックし、Fields タブに進みます。
- “Doctor” グループを展開し、その横の設定 icon をクリックして “Doctor ID” field の設定を開きます。
- field プロパティの Value セクションで、Regular expression オプションの横にある追加 icon をクリックします。
- 次の式を Regular Expression Editor に貼り付けます:
[0-9]{1}[\/.-]{1}[0-9]{5}[\/.-]{1}[0-9]{2}[\/.-]{1}[0-9]{3}
このエディターは、Extraction Rules Activity Editor で使用される表記とは異なる一般的な記法を使用します。詳細については、Regular Expression Editor の Syntax help をクリックしてください。
- Regular Expression Editor を閉じるには Save をクリックし、続いて field のプロパティを閉じるために Save をクリックします。
患者は、最初に発病してから3日以内に病欠証明書を受け取る必要があります。つまり、発行日は発病日の3日後まででなければなりません。
この条件を確認するには、スクリプト ルールを設定します。
- データ フォームの下にある追加のiconをクリックします。New Ruleダイアログが開きます。
追加のiconが表示されない場合は、ドキュメント画像上部のReferenceセクションに切り替えてください。
- Advanced Script Ruleを選択し、Nextをクリックします。
- ルール名を「Check validity」に変更します。
- fieldsの一覧で「Date」「Start Date」「End Date」のfieldを選択します。
- Nextをクリックします。
- 次のスクリプトをスクリプト エディタに貼り付けます:
// アクセスするすべてのfieldの変数を作成
var dateField = Context.GetField("Date");
var startField = Context.GetField("Start Date");
var endField = Context.GetField("End Date");
var issueDate = dateField.Value;
var startDate = startField.Value;
//「Start Date」fieldがドキュメント上で見つかったかどうかを確認
if (startDate && issueDate)
{
//発行日が開始日の3日以上後でないかを確認
if ((issueDate.getTime() - startDate.getTime()) / 3600000 / 24 > 3)
{
Context.CheckSucceeded = false;
Context.ErrorMessage = "病欠証明書の発行が遅すぎます";
}
}
- Save をクリックし、セット内のさまざまなドキュメントでルールの動作を確認します。エラー処理の挙動を確認するには、データ フォーム上の field にテスト値を手動で入力できます。field の値を変更するたびに、ルールが再適用されます。
病欠の開始日と終了日を使って病欠期間を計算します。文書に期間が指定されている場合は、その値が計算した期間と一致するかどうかを確認します。文書に期間が含まれていない場合は、計算した値を対応する field に書き込みます。
- ルールを作成するには、データ フォームの下にある追加 icon をクリックします。
- Advanced Script Rule を選択し、Next をクリックします。
- ルール名を「Check duration」に変更します。
- field の一覧で、「Start Date」「End Date」「Duration」の field を選択します。field 値を読み取るだけでなく、必要に応じて修正も行うため、両方の列で field を選択しておくことが重要です。
- Next をクリックします。
- 次のスクリプトをスクリプト エディタに貼り付けます。
// アクセスするすべてのfieldの変数を作成する
var startField = Context.GetField("Start Date") ;
var endField = Context.GetField("End Date");
var durationField = Context.GetField("Duration");
var startDate = startField.Value;
var endDate = endField.Value;
//「Start Date」と「End Date」のfieldがDocumentで見つかったか確認する
if (endField && endDate && startField && startDate)
{
//病気休暇の期間を計算する
var length = (1 + (endDate.getTime() - startDate.getTime()) / 3600000 / 24);
//期間のfieldが見つからなかった場合、または数値として解析できなかった場合、計算値をfieldに渡す
if (!durationField.Value)
durationField.Value = length;
//期間のfieldが見つかった場合、その値と計算された期間を比較する
else if (durationField.Value != length)
{
Context.CheckSucceeded = false;
Context.ErrorMessage = "\"Duration\" fieldの値が実際の病気休暇期間と一致しません";
durationField.AddSuggestion(length.toString());
}
}
- Save をクリックし、セット内のさまざまなドキュメントでルールがどのように動作するかを確認します。ルールがエラーをどのように処理するかを確認するには、データ フォーム上の field にテスト値を手動で入力します。field の値を変更するたびに、ルールが再適用されます。