式参照 V2

現在

式を作成して Vault でさまざまなタスクを行なうことができます。Vault は、日付や文字のほか、数字を計算できる関数や演算子を含む Excel™ のような式言語を使用します。

エクスプレッションエンジンのバージョン: 以下の内容は、2019年4月に 19R1 でリリースされたアップデートされた式の文法 (エクスプレッションエンジン V2) を参照しています。19R1 以前に作成された治験のルールの式を記述するには、式リファレンス (V1) を参照してください。

概念

これらの概念をご確認いただき、Vault における式の機能内容について習熟してください。

式とは

とは、目的の結果を生み出すための一連の指示です。例: 化学式 (2 つの H と 1 つの O で H2O ができます)。水素と酸素は水と「等しくない」という意味でこれは方程式ではありませんが、これらを使用して水を生み出すことができます。場合によっては、式は異なる変数間の関係を示す特殊なタイプの方程式にもなり得ます。この場合、式は (解を出さずに) 変数に値を代入して評価するものになります。

式の評価後は、値または True/False が返されます。

式の使用場所

式は、Vault CDMS 内のいくつかの場所で使用されます:

  • データ検証ルール
  • 派生項目
  • 単位変換
  • ビューの派生列
  • 式フィールド
  • フィールドのデフォルト値

式の要素

式は、1つ以上の数式と引数で構成されます。各数式には、結果を算出するための値、関数、演算子、参照、変数が含まれています。引数は、演算子または関数の式の結果に作用します。

条件 定義
表現 数式とは、値、変数、演算子、関数などで構成される方程式または式の一部分です。式は、1 つ以上の数式を含むことができます。
機能 関数は、式の中で作用します。式内の数式や値に対してタスクを実行して結果を出力します。
演算子 演算子は、式の中で作用します。式内の数式や値に対してタスクを実行して結果を出力します。
引数 引数は、関数内の式で使用されます。この関数は式の結果に作用します。
変数 変数は式内のプレースホルダー値で、評価する際に実際の値に置き換わります。例えば、ルール式でデータコレクション項目値を参照する場合、このデータコレクション項目値は変数になります。その項目のルールの Vault による評価時に項目変数が収集されたデータに置き換えられます。
参照 参照は、式内のプレースホルダー値で、Vault が式を評価するオブジェクトに関連するオブジェクトフィールドを指します。
評価 Vault が式を評価すると、すべての変数がその実行値に置き換えられ、式内の数式と引数の結果が算出されます。式の評価後は、値または True/False が返されます。
True 式が true を返す場合、Vault が式に変数の値を入れた際に、その結果の計算で式内のアクションが正常に通過したことになります。例えば、フィールド 1 が 10 未満 ($field1.value__v < 10) であるとことを確認する場合、この式はフィールド 1 の値が 6 のときに true を返します。
False 式が false を返す場合、Vault が式に変数の値を入れた際に、その結果の計算で式内のアクションが通過しなかったことになります。例えば、フィールド 1 が 10 未満 ($field1.value__v < 10) であるとことを確認する場合、この式はフィールド 1 の値が 15 のときに false を返します。

演算子と関数

演算子と関数は、式の中で作用します。式内の数式や値に対してタスクを実行して結果を出力します。

「演算子」と「関数」の違いは?

すべての演算子は関数であると言えますが、すべての関数が演算子であるとは言えません。演算子はすべて入力したデータ型と同じデータ型を返しますが、関数は異なるデータ型を返すことができます。Add() と関数 Value() を例に考えてみましょう。どちらも数学的に関数であると考えられます。2 つの数値を足し合わせると、式は数値を返します。Add(2, 2) は、4 を返します。Value() 関数を使用した場合、式は入力されたテキストから数値を出力します。Value(Right(“Veeofen 20”, 2) は、 20 を文字列ではなく数値で返します。

現在 Vault でサポートされているすべての演算子関数の一覧については、こちらのリファレンスを参照してください。

変数と参照

式内で、実行データのプレースホルダーとして機能する変数と参照を使用することができます。システムが数式を評価する際に、変数と参照が実際の実行値に置き換えられます。Studio でデータ検証ルールを記述する場合、データコレクション項目を呼び出すために識別子を使用する都度、変数を使用します。Vault の式で言う参照は、オブジェクトの値ではなく、関連するオブジェクトの値を指す変数です。例えば、$site__vr.status__v を使用すると、その参照はサイトオブジェクトのステータス値に置き換えられます。

演算子

式を作成するときは、次の演算子を使用します。特に指定がない限り、すべての演算子は、式を含めることができるすべての場所で使用することができます。

数学演算子

数学演算子は、数式の中で数学的な演算を行います。

演算子 説明
追加 2 つの値の合計を計算します
減算 2 つの値の差を計算します
乗算 2 つの値を掛けます
除算 2 つの値を掛けます
リマインダー もう 1 つの値で割った値の剰余
括弧 最初に括弧内の式を評価します

追加

2 つの値の合計を計算します

構文

+

使用方法

値1 + 値2

データタイプ

Add 演算子は、次のデータ型を受け付けます:

  • 数字

  • 日時と数字 (数字を日数と解釈)

  • 日付と数字 (数字を日数と解釈)

  • 日時と時刻

  • 日付と間隔

  • 日時と間隔

表現 説明
Lesion_measurement_1 + Lesion_measurement_2 数値として入力された 2 つの測定値を加算します
First_injection + 15 一回目の投与日に 15 日を加算して二回目の投与日を決定します

減算

2 つの値の差を計算します

構文

-

使用方法

値1 - 値2

データタイプ

Subtract 演算子は、次のデータ型を受け付けます:

  • 数字

  • 日付

  • 日時

  • 日時と数字 (数字を日数と解釈)

  • 日付と数字 (数字を日数と解釈)

  • 日付と日時 (日時を日付に変換)

  • 日付と間隔

  • 日時と間隔

  • 時間と時間 (差を分単位で返す)

表現 説明
Second_injection_date - First_injection_date 2 つの投与日間の日数を算出します

乗算

2 つの値を掛けます

構文

*

使用方法

値1 * 値2

データタイプ

Multiply 演算子は、次のデータ型を受け付けます:

  • 数字
表現 説明
$value__v * 2.205 重量をキログラム単位からポンド単位に変換します

除算

2 つの値を掛けます

構文

/

使用方法

値1 / 値2

データタイプ

Divide 演算子は、次のデータ型を受け付けます:

  • 数字
表現 説明
(Weight / (Height * Height)) * 703 被験者の BMI を帝国単位で算出します

リマインダー

もう 1 つの値で割った値の剰余

構文

%

使用方法

値1 % 値2

データタイプ

Remainder 演算子は、次のデータ型を受け付けます:

  • 数字
表現 説明
@EventGroup.sequence__v % 2 現在のイベントグループのシーケンス番号が偶数の場合は0、奇数の場合は1を返します

括弧

最初に括弧内の式を評価します

構文

()

使用方法

(expression1) expression2

データタイプ

Parenthesis 演算子は、次のデータ型を受け付けます:

表現 説明
(Lesion_measurement_1 + Lesion_measurement_2)/2 2 つの測定値の平均を返します

論理演算子

論理演算子は、数式の中で論理演算を行います。

演算子 説明
等しい 2 つの値が等しいかを評価します
Not Equal 2 つの値が等しくないかを評価します
次の値より小さい 1 つの値がもう 1 つの値より小さいかを評価します
次の値より小さいか等しい 1 つの値がもう 1 つの値以下かを評価します
次の値より大きい 1 つの値がもう 1 つの値より大きいかを評価します
次の値より大きいか等しい 1 つの値がもう 1 つの値以上かを評価します
および 2 つの値または式が両方 True かを評価します
または 2 つの値または式の 1 つ以上が True かを評価します

等しい

2 つの値が等しいかを評価します

構文

=

使用方法

値1 = 値2

データタイプ

Equal 演算子は、次のデータ型を受け付けます:

  • 数字

  • テキスト

  • 日付

  • 日時

  • 日時と日付 (日時を日付に変換)

  • はい/いいえ

  • 選択リスト (両方の選択リストが単一の値であること

  • 選択リストとテキスト

表現 説明
Assessment_taken = "No" 「Assessment Taken」で選択した値が「No」の場合、true を返します
メモ
  • 日付を日時と比較する場合、Vault のタイムゾーンを使用して、日時を日付に変換します。

  • 選択リストの式と演算子は、値ラベルの代わりに値の名前を評価します。例えば、選択リスト Level (level__v) には、study_level__vcountry_level__vsite_level__v という名前の 3 つの値があり、それぞれに治験施設のラベルが付いています。選択リストの値の評価には、ラベルを使用するのではなく level__v = "country_level__v" のように名前を使った式を定義します。


Not Equal

2 つの値が等しくないかを評価します

構文

!=

使用方法

値1 ! = 値2

データタイプ

Not Equal 演算子は、次のデータ型を受け付けます:

  • 数字

  • テキスト

  • 日付

  • 日時

  • 日時と日付 (日時を日付に変換)

  • はい/いいえ

  • 選択リスト (両方の選択リストが単一の値であること

  • 選択リストとテキスト

表現 説明
Assessment_date ! = Visit_date 評価日が来院日と異なる場合、true を返します
重要度 ! = "重度" 重要度の選択値が「重度」と異なる場合、true を返します
メモ
  • 日付を日時と比較する場合、Vault のタイムゾーンを使用して、日時を日付に変換します。

  • 選択リストの式と演算子は、値ラベルの代わりに値の名前を評価します。例えば、選択リスト Level (level__v) には、study_level__v、country_level__v、site_level__v という名前の 3 つの値があり、それぞれに治験、国、施設のラベルが付いています。選択リストの値の評価には、ラベルを使用するのではなく level__v = "country_level__v" のように名前を使った式を定義します。


次の値より小さい

1 つの値がもう 1 つの値より小さいかを評価します

構文

<

使用方法

値1 < 値2

データタイプ

Less Than 演算子は、次のデータ型を受け付けます:

  • 数字

  • 日付

  • 日時

  • 日付と日時 (日時を日付に変換)

表現 説明
Informed_consent_date < Birth_date 被験者の生年月日がインフォームドコンセント日より後の場合、true を返します。
Tumor_size_1 < Tumor_size_2 初回の腫瘍のサイズが 2 回目より小さい場合、true を返します。
メモ
  • 日付を日時と比較する場合、日時を日付に変換します。


次の値より小さいか等しい

1 つの値がもう 1 つの値以下かを評価します

構文

<=

使用方法

値1 <= 値2

データタイプ

Less Than または Equal To 等演算子は、次のデータ型を受け付けます:

  • 数字

  • 日付

  • 日時

  • 日付と日時 (日時を日付に変換)

表現 説明
Informed_consent_date <= Birth_date 被験者の生年月日がインフォームドコンセント日より後、または等しい場合、true を返します。
Tumor_size_1 <= Tumor_size_2 初回の腫瘍のサイズが 2 回目より小さい、または等しい場合、true を返します。
メモ
  • 日付を日時と比較する場合、日時を日付に変換します。


次の値より大きい

1 つの値がもう 1 つの値より大きいかを評価します

構文

>

使用方法

値1 > 値2

データタイプ

Greater Than 演算子は、次のデータ型を受け付けます:

  • 数字

  • 日付

  • 日時

  • 日付と日時 (日時を日付に変換)

表現 説明
Tumor_size_1 > Tumor_size_2 初回の腫瘍のサイズが 2 回目より大きい場合、true を返します。
Informed_consent_date > Birth_date 被験者の生年月日がインフォームドコンセント日より前の場合、true を返します。
メモ
  • 日付を日時と比較する場合、日時を日付に変換します。


次の値より大きいか等しい

1 つの値がもう 1 つの値以上かを評価します

構文

>=

使用方法

値1 >= 値2

データタイプ

Greater Than または Equal To 等演算子は、次のデータ型を受け付けます:

  • 数字

  • 日付

  • 日時

  • 日付と日時 (日時を日付に変換)

表現 説明
Tumor_size_1 > Tumor_size_2 初回の腫瘍のサイズが 2 回目より大きい、または等しい場合、true を返します。
Informed_consent_date > Birth_date 被験者の生年月日がインフォームドコンセント日より前、または等しい場合、true を返します。
メモ
  • 日付を日時と比較する場合、日時を日付に変換します。


および

2 つの値または式が両方 True かを評価します

構文

&&

&& の代わりに And() を使用することもできます。

使用方法

(expression) && (expression)

データタイプ

And 演算子は、次のデータ型を受け付けます:

表現 説明
Adverse_Event = "Other" && IsBlank(Other_Specify) 選択された有害事象が「その他」かつ「その他の指定」が空白の場合、trueを返します。

または

2 つの値または式の 1 つ以上が True かを評価します

構文

||

|| の代わりに Or() を使用することもできます。

使用方法

(式) || (式)

データタイプ

Or 演算子は、次のデータ型を受け付けます:

表現 説明
100 > Weight || Weight > 200 被験者の体重が 100 未満または 200 より大きい場合、true を返します。

テキスト演算子

テキスト演算子は、数式の中でテキスト演算を行います。

演算子 説明
連結 2 つまたは複数のテキスト文字列を接続します

連結

2 つまたは複数のテキスト文字列を接続します

構文

&

& の代わりに Concat() を使用することもできます。

使用方法

text & text

データタイプ

Concatenate 演算子は、次のデータ型を受け付けます:

表現 説明
"Study: " & @Study.name__v テキスト文字列 "Study: " (治験) が現在の治験の名前と結合して返されます

関数

式を作成するときは、次の関数を使用します。特に指定がない限り、すべての関数は、式を含めることができるすべての場所で使用することができます。

演算機能

数学関数は、数式の中で数学関数を実行します。

機能 説明
Abs

数字の絶対値を計算します

平均

与えられた数値の平均を計算します

Ceiling

値の次に大きい整数を返します

Floor

値の次に小さい整数を返します

最高

集合から最大の数を返します

中央

引数の中央値を算出します。この関数は、NUMBER データ型の引数を受け付けます。

最低

集合から最小の数を返します

べき乗

他の数値 (指数) をべき乗した数値を算出します。

四捨五入

値を定義された小数位で四捨五入します

Sqrt

数字の平方根を返します

合計

与えられた数値の合計を計算します

数字としてテキスト文字を返します

Abs

数字の絶対値を計算します

構文

Abs()

使用方法

Abs(数字)

表現 説明
Abs(Lesion_measurement_1 - Lesion_measurement_2)

双方の測定値の大小に関わらず、1 つ目の病変測定値と 2 つ目の病変測定値の差を正の値で返します。


平均

与えられた数値の平均を計算します

構文

平均()

使用方法

平均 (数値、数値、数値...)

表現 説明
平均 (lesion_measurement_1、lesion_measurement_2、legion_measurement_3)

3 つの病変測定値の平均を、数値で返します。


Ceiling

値の次に大きい整数を返します

構文

Ceiling()

使用方法

Ceiling(数字)

表現 説明
Ceiling(14.2)

15 (14.2 を最も近い整数に切り上げ) を返します

Ceiling(-14.2)

-14 (-14.2 を最も近い整数に切り上げ) を返します


Floor

値の次に小さい整数を返します

構文

Floor()

使用方法

Floor(数字)

表現 説明
Floor(14.2)

14 (14.2 を最も近い整数に切り下げ) を返します

Ceiling(-14.2)

-15 (-14.2 を最も近い整数に切り下げ) を返します


最高

集合から最大の数を返します

構文

最高()

使用方法

Max(number, number...)

表現 説明
Max(Lesion_measurement_1, Lesion_measurement_2) > 5

2 つの病変測定値の間の最高値が 5 より大きい場合、true 返します

メモ
  • この関数は、数値、日付、日時データ型で使用できます。単一の Max() リクエストにデータ型を混在させることはできません。日付と日時を混在させる必要がある場合、DateValue を使用して日時を日付に変換します。

中央

引数の中央値を算出します。この関数は、NUMBER データ型の引数を受け付けます。

構文

中央()

使用方法

Median(数値, 数値...)

表現 説明
Median(@EventGroup[*].e_visit.measurements.ig_measurements.lesion_size)

治療来院繰り返しイベントグループの病変サイズ項目の全インスタンスの中央値を返します。


最低

集合から最小の数を返します

構文

最低()

使用方法

Min(number, number...)

表現 説明
Min(Lesion_measurement_1, Lesion_measurement_2) < 5

2 つの病変測定値の間の最低値が 5 より大きい場合、true 返します

メモ
  • この関数は、数値、日付、日時データ型で使用できます。単一の Min() リクエストにデータ型を混在させることはできません。日付と日時を混在させる必要がある場合、DateValue を使用して日時を日付に変換します。

べき乗

他の数値 (指数) をべき乗した数値を算出します。

構文

べき乗()

使用方法

Power(数字, 数字)

表現 説明
(8.22 * Power(pulse_period, 0.3558)) > 440

被験者の QT 間隔 (pulse_period 項目から算出) が 440 より大きい場合、true を返します

QT / (Power(RR, 1/3))

CDMS では Power 関数は一般的に Fridericia 補正式 (QTcF) である QTcF = QT/ (RR^1/3) を使用して QTcF 間隔値の算出に使用されます


四捨五入

値を定義された小数位で四捨五入します

構文

四捨五入()

使用方法

Round(数値, 小数点以下の桁数)

表現 説明
Round(5.5, 0)

6 (5.5 を小数点以下 0 桁に切り上げ) を返します

Round(5.54, 1)

5.5 (5.54 を小数点以下 1 桁に切り上げ) を返します

Round(-5.5, 0)

-6 (-5.5 を小数点以下 0 桁に切り下げ) を返します

メモ
  • 小数点以下の数値を基に数値が丸められます。この数値が 5 より大きい場合、切り上げを行います。この数値が 5 より小さい場合、切り下げを行います。

Sqrt

数字の平方根を返します

構文

Sqrt()

使用方法

Sqrt(数字)

表現 説明
Sqrt(25)

数字 5 を返します

メモ
  • 数字は正数である必要があります。

合計

与えられた数値の合計を計算します

構文

合計()

使用方法

Sum(数値,数値, 数値...)

表現 説明
Sum(morning_dose_amount, evening_dose_amount)

朝と夕方の投薬量の合計を返します


数字としてテキスト文字を返します

構文

値()

使用方法

Value(テキスト)

表現 説明
Value(Right("S1234", 4))

数字 1234 を返します

メモ
  • Value 関数に、数値に解決できない Text を入力すると、エラーが表示されます。

論理関数

論理関数は、数式の中で論理関数を実行します。

機能 説明
および

すべての式が True の場合に True を返します

症例

式の値を各ケース値と比較して対の結果を返します。一致する値がない場合、この関数は最後の引数を返します。

if 文

式が true か false かを判断します。true の場合は任意の値を、false の場合は別の値を返します.

次を含む

選択リストに、定義された文字列または単一の値の選択リストに一致する名前が含まれる場合に True を返します

IsBlank

値が空白の場合に True を返します

IsNumber

値が数字の場合に True を返します

条件反転

式が False の場合に True を、式が True の場合に False を返します

または

条件のいずれかが true の場合に true を返します

および

すべての式が True の場合に True を返します

構文

および()

And() の代わりに && を使用することもできます。

使用方法

And(expression, expression)

表現 説明
And(Adverse_Event = "その他", IsBlank(Other_Specify))

選択された有害事象が「その他」かつ「その他の指定」フィールドが空白の場合、true を返します。


症例

式の値を各ケース値と比較して対の結果を返します。一致する値がない場合、この関数は最後の引数を返します。

構文

症例()

使用方法

Case(expression1, value1, result1, value2, result2, else_result)

データタイプ

Case 関数は、次のデータ型を受け付けます:

  • 数字

  • テキスト

  • はい/いいえ

  • 選択リスト

表現 説明
Case(Severity, "中", "確認不要", "中程度", "無作為抽出検査が必要", "重度", "確認必須", "回答なし")

入力された重要度に応じて確認が必須かどうかを返します

メモ
  • 選択リストフィールド (picklist__c など) を使用する場合、フィールドは値ラベル (Study) ではなく値名 (study__v) を返します

if 文

式が true か false かを判断します。true の場合は任意の値を、false の場合は別の値を返します.

構文

if 文()

使用方法

If(数式 1, 値 1, 値 2)

表現 説明
If(Diabetes = "2 型", Measurement_1 * 2, Measurement_2 *2)

糖尿病の種類に「2 型」が選択された場合、測定値 1に 2 を掛けた値を返し、それ以外の場合は測定値 2 に 2 を掛けた値を返します


次を含む

選択リストに、定義された文字列または単一の値の選択リストに一致する名前が含まれる場合に True を返します

構文

次を含む()

使用方法

Includes (文字列/選択リストの値)

表現 説明
Includes(cl_colors, 'RED')

定義された文字列または単一値の選択リストの色フィールドで選択された値の 1 つが [赤] の場合に true を返します

メモ
  • 複数値の選択リストは、Vault Platform で使用できます。CDMS の場合、FindValue() 関数を使用して、選択リストで選択した値を検索します。

IsBlank

値が空白の場合に True を返します

構文

IsBlank()

使用方法

IsBlank(式)

表現 説明
IsBlank(Assessment_taken) && IsBlank(Assessment_date)

Assessment Taken と Assessment Date の両方に値が入力されていない場合、true を返します


IsNumber

値が数字の場合に True を返します

構文

IsNumber()

使用方法

IsNumber(テキスト)

表現 説明
If(IsNumber(Measurement_1), Measurement_1/100, 0)

測定値 1 が数字の場合、100 で割った測定値 1 を返します。


条件反転

式が False の場合に True を、式が True の場合に False を返します

構文

条件反転()

使用方法

Not(式)

表現 説明
Not(IsBlank(Assessment_date))

評価日が空白でない場合、true を返します


または

条件のいずれかが true の場合に true を返します

構文

または()

使用方法

Or(式, 式)

表現 説明
Or(100 > Weight, Weight > 200)

被験者の体重が 100 未満または 200 より大きい場合、true を返します


テキスト関数

論理関数は、数式の中で論理関数を実行します。

機能 説明
Concat

2 つまたは複数のテキスト文字列を接続します

検索

テキストの文字列内の文字列の位置を返します

テキスト文字列の始まりから指定された文字数を返します

長さ

指定されたテキスト文字列の文字数を返します

Lower

指定された文字列のすべての文字を小文字に変換します

ミドルネーム

2 つの指定された位置間のテキスト文字数を返します

テキスト文字列の終わりから指定された文字数を返します

Substitute

文字列の古いテキストを新しいテキストに置き換えます

テキスト

指定された形式に基づいて値をテキストに変換します

Trim

テキスト文字列の始まりと終わりのスペースとタブをすべて削除します

Upper

指定されたテキスト文字列のすべての文字を大文字に変換します

Concat

2 つまたは複数のテキスト文字列を接続します

構文

Concat()

Concat() の代わりに & を使用することもできます。

使用方法

Concat(テキスト, テキスト...)

表現 説明
Concat("治験: ", @Study.name__v)

テキスト文字列「治験: 」と現在の治験の名前が結合して返されます


検索

テキストの文字列内の文字列の位置を返します

構文

検索()

使用方法

Find(find_text, within_text)

表現 説明
Find(" ", "4280 Hacienda Dr, Pleasanton, CA")

住所の最初のスペースの位置である 5 を返します


テキスト文字列の始まりから指定された文字数を返します

構文

左()

使用方法

Left(テキスト, 数字)

表現 説明
Left(name__v, 5) & "-" & abbvreviation__v

製品の名前の最初の 5 文字とその略称を連結して返します


長さ

指定されたテキスト文字列の文字数を返します

構文

長さ()

使用方法

Length(テキスト)


Lower

指定された文字列のすべての文字を小文字に変換します

構文

Lower()

使用方法

Lower(テキスト)

表現 説明
Lower("Company A")

テキスト文字列 、「company a」を返します


ミドルネーム

2 つの指定された位置間のテキスト文字数を返します

構文

ミドルネーム()

使用方法

Middle(text, start_position, count)

表現 説明
Middle("4280 Hacienda Dr, Pleasanton, CA", 6, 13)

提供されたテキストの 6 文字目から 13 文字目までのテキスト文字列「Hacienda」を返します


テキスト文字列の終わりから指定された文字数を返します

構文

右()

使用方法

Right(テキスト, 数字)

表現 説明
Value(Right("S1234", 4))

数字 1234 を返します


Substitute

文字列の古いテキストを新しいテキストに置き換えます

構文

Substitute()

使用方法

Substitute(テキスト, old_text, new_text)

表現 説明
Substitute(ConMed_date, "UN", "15")

日付不明の部分「UN」を「15」に置き換えます


テキスト

指定された形式に基づいて値をテキストに変換します

構文

テキスト()

使用方法

Text(値, "フォーマット")

表現 説明
"最小スクリーニング日は" & Text(MinDate(Screening_Date), "yyyy-mm-dd")

テキスト「最小スクリーニング日は」を返し、その後にスクリーニング日を yyyy-mm-dd の形式で返します

メモ
  • d 1 (その月の 1 桁の日付)

  • dd 01 (その月の 2 桁の日付)

  • ddd Thu (3 桁の曜日名)

  • dddd Thursday (完全な曜日名)

  • mm 03 (2 桁の月)

  • mmm Mar (3 文字の月)

  • mmmm March (完全な月)

  • yy 17 (2 桁の年)

  • yyyy 2017 (4 桁の月)

  • dd-mm-yyyy 31-03-2017

  • yyyymmdd 20170331

  • dd.mmm.yyyy 30.Mar.2017

  • yyyy-mm-dd 2017-03-30

  • mmmm yyyy March 2017

  • dddd dd/mm/yy Thursday 31/03/17


Trim

テキスト文字列の始まりと終わりのスペースとタブをすべて削除します

構文

Trim()

使用方法

Trim(テキスト)

表現 説明
Trim(" Phase III ")

文字列の前後のスペースを削除したテキスト文字列「Phase III」を返します


Upper

指定されたテキスト文字列のすべての文字を大文字に変換します

構文

Upper()

使用方法

Upper(テキスト)

表現 説明
Upper("Company A")

文字列 “COMPANY A” を返します


集計関数

集計関数は、式内の集計識別子の値に対して関数を実行します。これらの集計関数の一部は、任意の識別子の型と使用することもできますが、ここでは集約識別子で利用可能な関数の完全なリストを提供するためにそれらも記載しています。

機能 説明
AllEqual

集約識別子のすべての値が等しいかどうかをチェックします。値が等しい場合は true を、値が等しくない場合は false を返します。

平均

集約識別子からのすべての値の平均を返します。

カウント

集約識別子のインスタンス数 (例えば、識別された繰り返しフォームのインスタンス数) を返します。

CountIf

指定された値が、指定されたすべての識別子で見つかった回数を返します。

FindValue

与えられた値が、数式中の識別子の値の少なくとも 1 つに存在するかどうかを確認します.

第一週

集約識別子の最初の値 (最小のシーケンス番号による) を返します.

GetAllMatches

値 (第一パラメータ) が第二パラメータある同じインスタンスの第三パラメータから値のアレイを返します。 渡される両方の識別子の値の数は、同じである必要があります。そのため、両方の識別子は同じ集約パスを使用する必要があります。

HasDuplicates

2 つ以上の配列が、その中のすべての識別子の値が等しい場合に TRUE を返します。重複が null 値または空白値の場合は true を返しません。既定では、Null 値または空白値は無視されます。

IsBlank

配列が空白の場合に True を返します。配列に少なくとも 1 つの値がある場合、その値が null でも false を返します。

IsAnyBlank

識別子の値が空白かどうかを確認します。空白がある場合、true を返します。

集約識別子の最後の値 (最大のシーケンス番号による) を返します

最高

集約識別子から値の最大値を返します。

中央

引数の中央値を算出します。この関数は、NUMBER データ型の引数を受け付けます。

最低

集約識別子からの値の最大値を返します。

NoBlanks

Null 値が削除された値のアレイを返します.この関数は、渡された値の元の順序を保持します。

合計

集約識別子からのすべての値の合計を返します。

AllEqual

集約識別子のすべての値が等しいかどうかをチェックします。値が等しい場合は true を、値が等しくない場合は false を返します。

構文

AllEqual()

使用方法

AllEqual(識別子, 識別子, ...)

表現 説明
AllEqual(@EventGroup[*].e_visit.measurements.ig_measurements.lesion_size)

病変サイズのすべての値が治療来院繰り返しイベントグループのすべてのインスタンスで等しい場合、true を返します。


平均

集約識別子からのすべての値の平均を返します。

構文

平均()

使用方法

Average(識別子), Average(識別子, 識別子)

表現 説明
Average($Visit1.Visit1.Measurements[*].Lesion.LesionSize)

繰り返し測定フォームのすべてのインスタンスにわたる病変サイズ項目のすべての値の平均を返します。


カウント

集約識別子のインスタンス数 (例えば、識別された繰り返しフォームのインスタンス数) を返します。

構文

カウント()

使用方法

Count(識別子, 識別子, ...)

表現 説明
Count($eg_common.e_common.adverse_event[*].AE.AETERM)

ケースブックの繰り返し有害事象フォームのAETERM項目のインスタンス数を返します。

メモ
  • この関数は空白 (または null) 値を含みます。項目が空白のままになっていたり、意図的な空白としてマークされている場合、その項目はカウントに含まれます。null 値を削除するには、NoBlank 関数を使用します。

CountIf

指定された値が、指定されたすべての識別子で見つかった回数を返します。

構文

CountIf()

使用方法

CountIf(値, 識別子, 識別子)

表現 説明
CountIf("Y", $eg_common.e_common.adverse_event[*].ig_ae.AESER)

ケースブック内の有害事象フォームのすべてのインスタンスで、有害事象は重篤かの項目がはい (「Y」) に設定されている個数を返します。


FindValue

与えられた値が、数式中の識別子の値の少なくとも 1 つに存在するかどうかを確認します.

構文

FindValue()

使用方法

FindValue(値, 識別子)

表現 説明
FindValue("SERIOUS", $Logs.Logs.Adverse_event[*].AE_Details.AESER)

有害事象フォームのいずれかのインスタンスのAE の深刻度項目のいずれかの値内に値 「重篤」 がある場合、true を返します。


第一週

集約識別子の最初の値 (最小のシーケンス番号による) を返します.

構文

第一週()

使用方法

First(識別子)

表現 説明
First($Visit1.Visit1.Measurements.Lesion[*].LesionSize) > Last($Visit1.Visit1.Measurements.Lesion[*].LesionSize)

訪問 1 の繰り返し項目グループ病変の最初の病変サイズエントリと、 訪問 1 の最後の病変サイズエントリを比較します。


GetAllMatches

値 (第一パラメータ) が第二パラメータある同じインスタンスの第三パラメータから値のアレイを返します。 渡される両方の識別子の値の数は、同じである必要があります。そのため、両方の識別子は同じ集約パスを使用する必要があります。

構文

GetAllMatches()

使用方法

GetAllMatches(値, 識別子, 識別子)

表現 説明
GetAllMatches(10, @Form.measurement[*].lesion_size, @Form.measurement[*].date

病変サイズ項目の値が 10 である測定項目グループのすべてのインスタンスの日付項目の値を返します。

メモ
  • 集約パス:
    • 最初の識別子が $EG[*].EV.F.IG.IT の場合、2 つ目の識別子は $EG[*] から始まる必要があります。
    • 最初の識別子が $EG.EV.F[*].IG.IT の場合、2 つ目の識別子は $EG.EV.F[*] から始まる必要があります。
    • 最初の識別子が $EG.EV.F.IG[*].IT の場合、2 つ目の識別子は $EG.EV.F.IG[*] から始まる必要があります。
    • 最初の識別子が $EG[*].EV.F[*].IG[*].IT の場合、2 つ目の識別子は $EG[*].EV.F[*].IG[*] から始まる必要があります。
    • 最初の識別子が $EG[*].EV.F[*].IG.IT の場合、2 つ目の識別子は $EG[*].EV.F[*] から始まる必要があります。
    • 最初の識別子が $EG[*].EV.F.IG[*].IT の場合、2 つ目の識別子は $EG[*].EV.F.IG[*] から始まる必要があります。
    • 最初の識別子が $EG.EV.F[*].IG[*].IT の場合、2 つ目の識別子は $EG.EV.F[*].IG[*] から始まる必要があります。

HasDuplicates

2 つ以上の配列が、その中のすべての識別子の値が等しい場合に TRUE を返します。重複が null 値または空白値の場合は true を返しません。既定では、Null 値または空白値は無視されます。

構文

HasDuplicates()

使用方法

HasDuplicates (識別子 1、識別子 2、識別子 3)

表現 説明
HasDuplicates($EG.EV.AE[*].AEIG.AEITEM)

有害事象項目 の値が有害事象フォーム間で等しい場合に TRUE を返します。

HasDuplicates($EG.EV.AE[*].AEIG.AEITEM, $EG.EV.AE[*].AEIG.AESTARTDATE)

有害事象項目および有害事象開始日の値が有害事象フォーム間で等しい場合に TRUE を返します。

HasDuplicates($EG.EV.AE[*].AEIG.AEITEM, $EG.EV.AE[*].AEIG.AESTARTDATE, $EG.EV.AE[*].AEIG.AEENDDATE, $EG.EV.AE[*].AEIG.SERIOUS)

有害事象項目有害事象開始日、および有害事象終了日の値が、フォーム間等しく、かつ [深刻] である場合に TRUE を返します。


IsBlank

配列が空白の場合に True を返します。配列に少なくとも 1 つの値がある場合、その値が null でも false を返します。

構文

IsAnyBlank()

使用方法

IsBlank(式)

表現 説明
IsBlank(@Form.ig_physexam[*].specify_abnormalities)

診察繰り返し項目グループのすべてのインスタンスで特定異常項目が空白の場合、true を返します。


IsAnyBlank

識別子の値が空白かどうかを確認します。空白がある場合、true を返します。

構文

IsAnyBlank()

使用方法

IsAnyBlank(識別子, 識別子, ...)

表現 説明
IsAnyBlank(@Form.ig_phsexam[*].specify_abnormalities)

診察繰り返し項目グループのいずれかのインスタンスで特定異常項目が空白の場合、true を返します。


集約識別子の最後の値 (最大のシーケンス番号による) を返します

構文

姓()

使用方法

Last(識別子)

表現 説明
Last($Visit1.Visit1.Measurements.Lesion[*].DATE) > First($Visit1.Visit1.Measurements.Lesion[*].DATE)

訪問 1 の繰り返し項目グループ病変の最後の病変サイズエントリと、 訪問 1の最初の病変サイズを比較します。


最高

集約識別子から値の最大値を返します。

構文

最高()

使用方法

Max(識別子), Max(識別子, 識別子)

表現 説明
Max($Visit1.Visit1.Measurements[*].Lesion.LesionSize) $Screening.Screening.InitialMeasurement.Lesion.InitialLesionSize)

初回測定フォームと測定フォームのすべてのインスタンスの両方の病変サイズ項目値から最大値を返します。。


中央

引数の中央値を算出します。この関数は、NUMBER データ型の引数を受け付けます。

構文

中央()

使用方法

Median(数値, 数値...)

表現 説明
Median(@EventGroup[*].e_visit.measurements.ig_measurements.lesion_size)

治療来院繰り返しイベントグループの病変サイズ項目の全インスタンスの中央値を返します。


最低

集約識別子からの値の最大値を返します。

構文

最低()

使用方法

Min(識別子), Min(識別子, 識別子)

表現 説明
Min($Visit1.Visit1.Measurements[*].Lesion.LesionSize, $Screening.Screening.InitialMeasurement.Lesion.InitialLesionSize)

初回測定フォームと測定フォームのすべてのインスタンスの両方の病変サイズ項目値から最小値を返します。。


NoBlanks

Null 値が削除された値のアレイを返します.この関数は、渡された値の元の順序を保持します。

構文

NoBlanks()

使用方法

NoBlanks(識別子, 識別子, ....)

表現 説明
NoBlanks(@Form.ig_physexam[*].specify_abnormalities)

診察繰り返し項目グループのすべてのインスタンスで、null 値を削除した特定異常項目の値を返します。


合計

集約識別子からのすべての値の合計を返します。

構文

合計()

使用方法

Sum(識別子)

表現 説明
Sum($Screening.Screening.Measurements[*].Lesion.LesionSize)

繰り返し測定フォームのすべてのインスタンスにわたる病変サイズ項目のすべての値の合計を返します。


日付および日時の関数

日付と DateTime 関数は、式中で Date 関数と DateTime 関数を実行します。

機能 説明
日付

年、月および日の値から日付値を返します

DateValue

日次の日付部分を返します

月の日付を返します

間隔として指定された日数を返します

Hour

現在の時間を 0 ~ 23 で返します

時間

間隔として指定された時間数を返します

Minute

現在の分を 0 ~ 59 で返します。

間隔として指定された分数を返します

日付から月を返します

間隔として指定された月数を返します

NetWorkdays

2 つの日付/日時の間にある就業日数を返します。この関数は、日付と日時を混在して使用することができます。日時を使用する際は、タイムゾーンに注意してください。この機能では、週末および祝日のスケジュールの任意のパラメータも許可されます。管理者は、企業管理者 > 祝日のスケジュールから祝日を設定することができます。

Now

現在の日時を返します

第2週

現在の秒を 0 ~ 59 で返します

StartOfDay

指定されたタイムゾーンの日の始まりに相当する UTC の日時を返します

時間

指定された時間、分、秒に基づいた時間を返します

Today

ユーザにとっての現在の日付を返します。オプションの「timezone」パラメータを含めると、特定のタイムゾーンにおける現在の日付を返します。

Weekday

日付また日時から、曜日を 1~7 の数字で返します

Workday

週末および (任意で) 祝日を差し引いた、与えられた日数後の日付を返します。この機能では、週末および祝日のスケジュールの任意のパラメータも許可されます。管理者は、企業管理者 > 祝日のスケジュールから祝日を設定することができます。

与えられた日付または日時から年を返します。日付または日時を指定しなかった場合は、現在の年を返します。

間隔として指定された年数を返します

MaxDate

日付の不明部分を最大可能値に置き換えます

MinDate

日付の不明部分を最小可能値に置き換えます

MaxDateTime

日時の不明部分を最大可能値に置き換えます

MinDateTime

日時の不明部分を最小可能値に置き換えます

InWindow

日付が基準日付に基づいて指定された期間内にある場合は TRUE を返します

SiteDateTime

施設のタイムゾーンで日付項目および時間項目から自動的に日付時刻を作成します。

SiteDateValue

日付時刻項目から日付を返し、それを自動的に施設のタイムゾーンにします。

日付

年、月および日の値から日付値を返します

構文

日付()

使用方法

日付(年, 月, 日)

表現 説明
Date(2018, 3, 14)

03-14-2018 の日付を返します

Date(year(today), month(today()) + 1, day(today()))

現在の日付から 1 ヶ月後の日付を返します

Date(year(today()), month(today()), day(today())) + Time(12,0,0)

本日の正午を表す日時を返します


DateValue

日次の日付部分を返します

構文

DateValue()

使用方法

DateValue(datetime)

表現 説明
DateValue(Vitals_exam_date)

タイムゾーンへの変換に対応したバイタル試験の時刻なしの日付を返します

If(Right(VSDTC , 4) = "UNKZ", DateValue(MinDateTime(VSDTC), UTC), DateValue(MinDateTime(VSDTC), @Site.timezone__v))

この例では、SiteDateValue() を使用した式を示しています。不明な日時項目はこの式で処理する必要があります


月の日付を返します

構文

日()

使用方法

日(日付)

表現 説明
Day(Injection_date)

投与が実施された月の日を返します


間隔として指定された日数を返します

構文

日()

使用方法

Days(数字)

表現 説明
Injection_date + Days(10)

投与日から 10 日後の日付を返します


Hour

現在の時間を 0 ~ 23 で返します

構文

Hour()

使用方法

Hour()

表現 説明
Hour()

ユーザにとっての現在の時間を返します


時間

間隔として指定された時間数を返します

構文

時間()

使用方法

Hours(数字)

表現 説明
InWindow(Vitals_time, Injection_time, Hours(2), Hours(5), false, false)

バイタル収集時刻が投与時刻から 2~5 時間の場合、true を返します

メモ
  • 現在のリリースでは、この関数は InInWindow() 関数内で時間間隔を定義する場合にのみ使用できます。

  • この関数は、日付時刻または時刻項目から時間を返しません。

  • 小数点以下の桁数でこの関数を使用しないでください。その代わりに、例えば Hours(0.5) の場合は Minutes(30) のように、Minutes() 関数を同等の分数にして使用します。


Minute

現在の分を 0 ~ 59 で返します。

構文

Minute()

使用方法

Minute()

表現 説明
Minute()

ユーザにとっての現在の分を返します


間隔として指定された分数を返します

構文

分()

使用方法

Minutes(数字)

表現 説明
InWindow(Vitals_time, Injection_time, Minutes(30), Minutes(45), false, false)

バイタル収集時刻が投与時刻から 30~45 分の場合、true を返します

メモ
  • 現在のリリースでは、この関数は InInWindow() 関数内で時間間隔を定義する場合にのみ使用できます。

日付から月を返します

構文

月()

使用方法

Month(date), Month(datetime)

表現 説明
Month(Injection_date)

投与が実施された月を数値で返します


間隔として指定された月数を返します

構文

月()

使用方法

Months(数字)

表現 説明
Injection_date + Months(2)

監査開始日から 6 ヶ月後の日付を返します


NetWorkdays

2 つの日付/日時の間にある就業日数を返します。この関数は、日付と日時を混在して使用することができます。日時を使用する際は、タイムゾーンに注意してください。この機能では、週末および祝日のスケジュールの任意のパラメータも許可されます。管理者は、企業管理者 > 祝日のスケジュールから祝日を設定することができます。

構文

NetWorkdays()

使用方法

NetWorkdays(start_date/datetime, number_of_days, weekend_number, holiday_schedule)

表現 説明
NetWorkdays($screening.screening_visit.event_date__v, $baseline.baseline_visit.event_date__v,1, "United States")

スクリーニング来院日 ($screening.screening_visit.event_date__v) とベースライン来院日 ($baseline.baseline_visit.event_date__v) の間の米国の休日に基づいた営業日の日数を返します


Now

現在の日時を返します

構文

Now()

使用方法

Now(), Now(Timezone)

表現 説明
Round((Now() - Birth_Date)/365, 0)

現在の日付での被験者の年齢を返します

メモ
  • Now() にタイムゾーンパラメータを指定しない場合、UTC での現在の日時を返します。

  • 現在の日時を返すタイムゾーンを指定するには、タイムゾーンパラメータを使用します。入力フォーマットについてはこちらのリストを参照してください。

  • サイトのタイムゾーンで現在の日付を返すには、DateValue(Now(), @Site.timezone__v) を使用します。


第2週

現在の秒を 0 ~ 59 で返します

構文

第2週()

使用方法

第2週()

表現 説明
第2週()

ユーザにとっての現在の秒を返します


StartOfDay

指定されたタイムゾーンの日の始まりに相当する UTC の日時を返します

構文

StartOfDay()

使用方法

StartOfDay(day, "タイムゾーン")

表現 説明
StartOfDay(event_date, "Europe/Oslo")

ヨーロッパ/オスロのタイムゾーンで、イベント日の開始時刻に相当する UTC の日時を返します


時間

指定された時間、分、秒に基づいた時間を返します

構文

時間()

使用方法

Time(時間, 分, 秒)

表現 説明
Time(hour(now()), minute(now()), second(now()) - Time(12,30,0)

2 つの時間の差を分で返します

Date(year(today()), month(today()), day(today())) + Time(12,0,0)

本日の正午を表す日時を返します


Today

ユーザにとっての現在の日付を返します。オプションの「timezone」パラメータを含めると、特定のタイムゾーンにおける現在の日付を返します。

構文

Today()

使用方法

Today(), Today("タイムゾーン")

表現 説明
Today() = Sample_collection_date

サンプル収集日がユーザのタイムゾーンで現在の日付と等しい場合に True を返します


Weekday

日付また日時から、曜日を 1~7 の数字で返します

構文

Weekday()

使用方法

Weekday(日付), Weekday(日時)

表現 説明
If((Weekday(@Event.event_date__v) = 1) || (Weekday(@Event.event_date__v) = 7)), “イベント日は週末です”, “イベント日は週末ではありません”)

Workday

週末および (任意で) 祝日を差し引いた、与えられた日数後の日付を返します。この機能では、週末および祝日のスケジュールの任意のパラメータも許可されます。管理者は、企業管理者 > 祝日のスケジュールから祝日を設定することができます。

構文

Workday()

使用方法

Workday(start_date/datetime, number_of_days, weekend_number, holiday_schedule)

表現 説明
Workday($Screening, Screening_visit.event_date__v,1,"米国")

スクリーニング来院日から 10 営業日 (週末や米国の休日を除く) 後の日付を返します。


与えられた日付または日時から年を返します。日付または日時を指定しなかった場合は、現在の年を返します。

構文

年()

使用方法

年(日付)

表現 説明
Year($Screening.Screening_Visit.Demographics.Creation_Criteria.DOB)

日付項目から年を返します。


間隔として指定された年数を返します

構文

年()

使用方法

Years(数)

表現 説明
Today() + Years(1)

翌年の現在の日付と同じ日を返します


MaxDate

日付の不明部分を最大可能値に置き換えます

構文

MaxDate()

使用方法

MaxDate(unknown date), MaxDate(unknown date, timezone)

表現 説明
MaxDate(2018-07-UN)

2018-07-31 を返します

MaxDate(2018-UN-UN)

2018/12/31 を返します

メモ
  • 数式で使用するために、MaxDate() を使用して不明な日付を囲みます。

  • 不明な個所がない日付に MaxDate() を使用すると、そのままの日付が返されます

  • 現在の日付を返すタイムゾーンを指定するには、タイムゾーンパラメータを使用します。入力フォーマットについてはこちらのリストを参照してください。


MinDate

日付の不明部分を最小可能値に置き換えます

構文

MinDate()

使用方法

MinDate(unknown date), , MinDate(unknown date, timezone)

表現 説明
MinDate(2018-07-UN)

2018/07/01 を返します

MinDate(2018-UN-UN)

2018/01/01 を返します

メモ
  • 数式で使用するために、MinDate() を使用して不明な日付を囲みます。

  • 不明な個所がない日付に MinDate() を使用すると、そのままの日付が返されます

  • 現在の日付を返すタイムゾーンを指定するには、タイムゾーンパラメータを使用します。入力フォーマットについてはこちらのリストを参照してください。


MaxDateTime

日時の不明部分を最大可能値に置き換えます

構文

MaxDateTime()

使用方法

MaxDateTime(unknown date), MaxDateTime(unknown date, timezone)

表現 説明
MaxDateTime(2018-07-UNT14:00)

2018-07-31T14:00 を返します

MaxDateTime(2018-12-UNTUN:UN)

2018-12-31T23:59 を返します

メモ
  • 不明な個所がない日時に MaxDateTime() を使用すると、そのままの日時が返されます

  • 時間が不明な場合、時間を 23、分を 59 (23:59) で返します。

  • MaxDateTime() は、正規化された値を取得するために適用される UTC 時間への変換の影響を受けるため、項目の値を設定するための単独の関数としては使用しないでください。代わりに、この関数は、評価が必要な既知の日時の計算や比較を行うために使用します。

  • 現在の日時を返すタイムゾーンを指定するには、タイムゾーンパラメータを使用します。入力フォーマットについてはこちらのリストを参照してください。


MinDateTime

日時の不明部分を最小可能値に置き換えます

構文

MinDateTime()

使用方法

MinDateTime(unknown date), MinDateTime(unknown date, timezone)

表現 説明
MinDateTime(2018-07-UNT14:00)

2018-07-01T14:00 を返します

MinDateTime(2018-12-UNTUN:UN)

2018-12-01T00:00 を返します

メモ
  • 不明な個所がない日時に MinDateTime() を使用すると、そのままの日時が返されます

  • 時間が不明な場合、時・分ともに 00 (00:00) を返します。

  • MinDateTime() は、正規化された値を取得するために適用される UTC 時間への変換の影響を受けるため、項目の値を設定するための単独の関数としては使用しないでください。代わりに、この関数は、評価が必要な既知の日時の計算や比較を行うために使用します。

  • 現在の日時を返すタイムゾーンを指定するには、タイムゾーンパラメータを使用します。入力フォーマットについてはこちらのリストを参照してください。


InWindow

日付が基準日付に基づいて指定された期間内にある場合は TRUE を返します

構文

InWindow()

使用方法

InWindow(date, date, interval, interval, boolean, boolean)

データタイプ

InWindow 関数は、次のデータ型を受け付けます:

  • 日付

  • 日時

  • 時間

表現 説明
InWindow(TestTime, ProcedureTime, Hours(1), Hours(3), false, false)

テスト時刻が検査時刻から 1~3 時間の場合、true を返します

InWindow(ControlDate, TestDate, Days(3), Days(7), true, false)

管理日がテスト日の 4~7 日後の場合、true を返します。

メモ
  • 比較は、同じデータ型 (Date と Date、DateTime と DateTime、Time と Time) のオブジェクトのみ可能です。

  • 時間間隔の定義には、Minutes()、Hours()、Days()、Months()、Years() 関数を使用することができます。

  • 2 つのブーリアン引数は、下側の境界 (第 1 引数) と上側の境界 (第 2 引数) が全体の範囲に含まれるかどうかを示します。true は境界を除外し、false は境界を含むことを意味します。


SiteDateTime

施設のタイムゾーンで日付項目および時間項目から自動的に日付時刻を作成します。

構文

SiteDateTime()

使用方法

SiteDateTime(date, time)

データタイプ

SiteDateTime 関数は、次のデータ型を受け付けます:

  • 日付

  • 時間

表現 説明
SiteDateTime(VSDate, VSTime)

バイタルサイン日付およびバイタルサイン時刻を返します。


SiteDateValue

日付時刻項目から日付を返し、それを自動的に施設のタイムゾーンにします。

構文

SiteDateValue()

使用方法

SiteDateValue(datetime)

データタイプ

SiteDateValue 関数は、次のデータ型を受け付けます:

  • 日時
表現 説明
SiteDateValue(2021, 6, 15, Injection_time)

施設のタイムゾーンにおける日付 06-15-2021 の投与時間を返します。

メモ
  • 日付部分が不明な場合、この関数で MinDateTime と MaxDateTime を使用することはできません。

廃止された関数

次の関数は、新しい数式の文法では使用できなくなりました。

連結

2 つまたは複数のテキスト文字列を接続します.この関数は、エクスプレッションエンジン V1 を使用した治験でのみ利用可能です。V2 で使用する関数については、「代替使用」を参照してください。

構文

Concatenate(テキスト, テキスト)

代替使用

Concat()&


DateAdd

開始日 (date) からのオフセット (間隔) に基づいて日付を返します。この関数は、エクスプレッションエンジン V1 を使用した治験でのみ利用可能です。V2 で使用する関数については、「代替使用」を参照してください。

構文

DateAdd(日付, 間隔)

代替使用

日付 + 数字と日付 + 間隔


DateDiff

2 つの日付の差を日数で返します。この関数は、エクスプレッションエンジン V1 を使用した治験でのみ利用可能です。V2 で使用する関数については、「代替使用」を参照してください。

構文

DateDiff(終了, 開始)

代替使用

日付 - 日付


DateTimeAdd

開始 DateTime (datetime) からのオフセット (interval) に基づいて DateTime 値を返します。この関数は、エクスプレッションエンジン V1 を使用した治験でのみ利用可能です。V2 で使用する関数については、「代替使用」を参照してください。

構文

DateTimeAdd(日時, 間隔)

代替使用

日時 + 数字と日時 + 間隔


DateTimeDiff

2 つの DateTime 値の差を日数、時間数、および分数で返します。この関数は、エクスプレッションエンジン V1 を使用した治験でのみ利用可能です。V2 で使用する関数については、「代替使用」を参照してください。

構文

DateTimeDiff(終了, 開始)

代替使用

日時 - 日時


IfBlank

第 1 引数が空白の場合、第 2 引数を返します。空白でない場合、この関数は最初の引数を返します。この関数は、エクスプレッションエンジン V1 を使用した治験でのみ利用可能です。V2 で使用する関数については、「代替使用」を参照してください。

構文

IfBlank(数式, 数式)

代替使用

If(IsBlank())


IfNull

第 1 引数が null の場合、第 2 引数を返します。Null でない場合、この関数は最初の引数を返します。この関数は、エクスプレッションエンジン V1 を使用した治験でのみ利用可能です。V2 で使用する関数については、「代替使用」を参照してください。

構文

IfNull(数式, 数式)

代替使用

If(IsBlank())


IsNull

値が Null の場合に True を返します。この関数は、エクスプレッションエンジン V1 を使用した治験でのみ利用可能です。V2 で使用する関数については、「代替使用」を参照してください。

構文

IsNull(数式, 数式)

代替使用

If(IsBlank())


NumberEquals

両方の引数 (数値) が等しい場合、true を返します。この関数は、エクスプレッションエンジン V1 を使用した治験でのみ利用可能です。V2 で使用する関数については、「代替使用」を参照してください。

構文

NumberEquals(数字, 数字)

代替使用

=


PicklistEquals

選択リスト値のベースラベルと既存のグローバル選択リスト値のベースラベルを比較した結果を、true または false で返します。この関数は、エクスプレッションエンジン V1 を使用した治験でのみ利用可能です。V2 で使用する関数については、「代替使用」を参照してください。

構文

PicklistEquals(, picklist_value__v)

代替使用

=


TextEquals

両方のテキスト文字列が等しい場合、true を返します。この関数は、エクスプレッションエンジン V1 を使用した治験でのみ利用可能です。V2 で使用する関数については、「代替使用」を参照してください。

構文

TextEquals(テキスト, テキスト)

代替使用

=


TimeDiff

2 つの時間の差を分数で返します。この関数は、終了時刻 (end) から開始時刻 (start) を減算します。この関数は、エクスプレッションエンジン V1 を使用した治験でのみ利用可能です。V2 で使用する関数については、「代替使用」を参照してください。

構文

TimeDiff(終了, 開始)

代替使用

時間 - 時間


日付形式

次の表は、使用可能な日付フォーマットの一覧です:

フォーマット 説明
HH:ii 11:30 時および分
d 1 1 桁の月の日付
dd 1 2 桁の月の日付
ddd Thu 3 桁の曜日名
dddd 木曜日 完全な曜日名
mm 3 2 桁の月
mmm 3 月 3 文字の月名
mmmm 3 月 完全な月名
yy 17 2 桁の年
yyyy 2017 完全な年
dd-mm-yyyy 31-03-2017 2 桁の日、2 桁の月、4 桁の年
yyyymmdd 20170331 4 桁の年、2 桁の月、2 桁の日 (スペースなし)
dd.mm.yyyy 30.03.2017 2 桁の日、2 桁の月、4 桁の年、区切り文字にピリオド (.) を使用
yyyy-mm-dd 2017-03-30 4 桁の年、2 桁の月、2 桁の日
mmmm yy March 2017 完全な月名、4 桁の年
dddd dd/mm/yy Thursday 31/03/2017 完全な曜日名、2 桁の日、2桁の月、4 桁の年、区切り文字にスラッシュを使用

番号形式

次の表は、使用可能な数字フォーマットの一覧です:

フォーマット 入力例 出力例 説明
0 10.1 10 そのままの数、小数点以下なし
# 10.10 10 そのままの数、小数点以下なし、ゼロなし
0.00 10.2531 10.25 小数点第二位で四捨五入した数字
#.## 10.2501 10.25 小数点第二位で四捨五入した数字、ゼロなし
$# 100 $100 通貨形式の数字
#,### 1104 1,104 左から 3 桁のコンマ付きの数字 (コンマは複数使用可)
- 10 -10 数式にマイナス記号を追加
% 9 %90 数値に 10 を掛けてパーセンテージで表示
E 12345 1.234E4 有効桁数である仮数部と指数部を指数表記で分離

システム変数

システム変数は、値を格納するシステム定義の動的オブジェクトで、1 つ以上の Vault アプリケーションからの参照が可能です。これらは、使用されるコンテキストに応じて値が変化することから動的です。例えば、@User は現在ログインしているユーザのプロファイルを指し示すシステム変数で、ユーザのステータスやメールなど、複数のプロパティにアクセスすることができます。

Vault プラットフォームのシステム変数

現在のリリースでは、Vault EDC でサポートされている Vault プラットフォームシステム変数は 1 つ (@User) です。ルールの記述時にこの変数を参照することができます。

変数 説明
@ユーザ 現在ログインしているユーザを参照

@ユーザ

現在ログインしているユーザを参照

プロパティの例
  • @User.name__v: 現在のユーザ名を返します

  • @User.status__v: 現在のユーザのステータスを返します

  • @User.name__v: 現在のユーザのメールアドレスを返します

  • @User.securityProfile__v: 現在のユーザのセキュリティプロファイルを返します

  • @User.language__v: 現在のユーザの言語を返します

  • @User.timezone__v: 現在のユーザのタイムゾーンを返します

使用例
表現 説明
Case(@User.department__c, "人事", "hr@sponsor.com", "臨床プログラマー", "clinical_programming@company.com", "other@company.com") 現在のユーザの所属部門に基づいてメールアドレスを返します

Vault EDC のシステム変数

EDC には、ルールを記述する際に使用できるいくつかの特定のシステム変数があります。これらの変数を使用すると、治験またはケースブック階層内のオブジェクトにすばやくアクセスすることができます。

システム変数に使用するために、Vault EDC で次のオブジェクトとフィールドを使用することができます:

治験

治験 (study__v) オブジェクトの次のフィールドは、システム参照および変数で使用できます:

フィールド名 フィールドラベル 説明 ルール式の例
locked__v ロック済み 治験のロック済みステータスを返します @Study.locked__v
name__v 名前 治験の名前を返します @Study.name__v
oid__v 外部 ID 治験の外部 ID を返します @Study.oid__v

治験実施国

治験実施国 (study_country__v) オブジェクトの次のフィールドは、システム参照および変数で使用できます:

フィールド名 フィールドラベル 説明 ルール式の例
name__v 名前 関連付けられた施設の治験実施国を返します @StudyCountry.name__v
country_abbreviation__v 国略称 治験実施国の国略称を返します @StudyCountry.country_abbreviation__v

施設

施設 (site__v) オブジェクトの次のフィールドは、システム参照および変数で使用できます:

フィールド名 フィールドラベル 説明 ルール式の例
locked__v ロック済み 施設のロック済みステータスを返します @Site.locked__v
name__v 名前 施設の治験実施施設番号を返します @Site.name__v
oid__v 外部 ID 施設の外部 ID を返します @Site.oid__v
principal_investigator__v 治験責任医師 施設の治験責任医師を返します @Site.principal_investigator__v
status__v ステータス 施設のステータスを返します @Site.status__v
timezone__v 時間帯 施設のタイムゾーンを返します @Site.timezone__v
メモ
  • 施設の場合、name__v はその施設レコードの治験実施施設番号フィールド値を返します。治験実施施設番号は、name__v フィールドのラベルです。

ケースブック

ケースブック (casebook__v) オブジェクトの次のフィールドは、システム参照および変数で使用できます:

フィールド名 フィールドラベル 説明 ルール式の例
version__v バージョン ケースブックのバージョンを返します @Casebook.version__v
subject_status__v 症例ステータス (ケースブック定義に基づいた) ケースブックの症例ステータスを返します @Casebook.subject_status__v
current_sdv_plan__v 現在の SDV 計画 現在、被験者 (ケースブック) に割り当てられている SDV レビュー計画を返します @Casebook.current_sdv_plan__v
current_dmr_plan__v 現在の DMR 計画 現在、被験者 (ケースブック) に割り当てられている DMR レビュー計画を返します @Casebook.current_dmr_plan__v
subject_name__v 症例 ID ケースブックの被験者の被験者 ID を返します @Casebook.subject_name__v
var 変数 治験のために定義されたケースブック変数を表す識別子として使用することができます。 @Var.enrolled_date

事象グループ

イベントグループ (event_group__v) オブジェクトの次のフィールドは、システム参照および変数で使用できます:

フィールド名 フィールドラベル 説明 ルール式の例
name__v 名前 イベントグループの名前を返します @EventGroup.name__v
sequence__v シーケンス イベントグループのシーケンス番号を返します (繰り返しイベントグループ) @EventGroup.sequence__v

事象

イベント (event__v) オブジェクトの次のフィールドは、システム参照および変数で使用できます:

フィールド名 フィールドラベル 説明 ルール式の例
change_reason__v 変更理由 イベントの変更理由を返します @Event.change_reason__v
did_not_occur__v 未実施 イベントが発生しなかった場合、true を返します @Event.did_not_occur__v
event_date__v イベント日 イベントのイベント日を返します タイトルを見る
name__v 名前 イベントの名前を返します @Event.name__v
sequence__v シーケンス イベントのシーケンス番号を返します (繰り返しイベントグループ内のイベント) @Event.sequence__v
メモ
  • イベント日付を参照する場合、必ずイベントを定義してください。@Event.event_date__v は使用しないでください。完全修飾識別子の場合、$EG.EVENT.event_date__v を使用してください。

フォーム

フォーム (form__v) オブジェクトの次のフィールドは、システム参照および変数で使用できます:

フィールド名 フィールドラベル 説明 ルール式の例
change_reason__v 変更理由 フォームの変更理由を返します @Form.change_reason__v
form_status__v フォームステータス フォームのステータスを返します。オプション: submitted__v、planned__v、blank__v、in_progress__v、in_progress_post_submit__v @Form.form_status__v
intentionally_left_blank__v 未実施 フォームが意図的に空白としてマークされていた場合、true を返します @Form.intentionally_left_blank__v
name__v 名前 フォームの名前を返します @Form.name__v
sequence__v シーケンス フォームのシーケンス番号を返します (繰り返しフォームの場合) @Form.sequence__v
submit_counter__v 送信カウンター フォームが送信された回数を返します @Form.submit_counter__v
メモ
  • 完全修飾識別子のフォーマット例として、$EG.EVENT.FORM.intentionally_left_blank を使用します。

  • 24R2 リリースで、in_progress_post_submit__v フォームステータスのラベルが進捗中送信後から編集中に変更されました。変数は変更されず、in_progress_post_submit__v のままです。

項目

項目 (item__v) オブジェクトの次のフィールドは、システム参照および変数で使用できます:

フィールド名 フィールドラベル 説明 ルール式の例
change_reason__v 変更理由 項目の変更理由を返します @Item.change_reason__v
has_value_changed__v 値変更の有無 ルールを最後に実行した後に値が変更された場合、true を返します。これは、メール送信ルールの @Form 識別子にのみ使用できます。 @Item.has_value_changed__v
intentionally_left_blank__v 未実施 項目が意図的に空白としてマークされていた場合、true を返します @Item.intentionally_left_blank__v
lab_modifier__v 臨床検査機関修飾子 項目の臨床検査機関修飾子を返します @Item.lab_modifier__v
previous_submit_value__v 前回の送信値 前回の送信値からの項目の値を返します @Item.previous_submit_value__v
translated_unit__v 変換済み単位 単位タイプ項目の単位に割り当てられている標準単位の名前を返します @Item.translated_unit__v
unit__v 単位 単位タイプ項目に割り当てられている単位の名前を返します @Item.unit__v
value__v 項目の値を返します @Item.value__v
value_normalized__v 値が正規化されました 項目の正規化された値を返します Item.value_normalized__v
value_translated__v 値が変換されました 値を標準単位に変換します Item.value_translated__v
メモ
  • 日付データ型の項目には、value___v を使用しないでください。デフォルトでは、日付型の項目はすべての計算に value_normalized__v を使用し、value__v を強制的に使用すると実行エラーが発生します。

  • 完全修飾識別子のフォーマット例として、$EG.EVENT.FORM.IG.ITEM.change_reason__v を使用します。

  • 数学的関数は、単位項目タイプで使用することができます。

  • Vault は、単位項目である識別子の値を自動的に標準単位に変換します。例えば、@Form.IG.UNITITEM.value_translated__v. {{@Form.IG.UNITITEM.value__v }} を使用して、入力された数値を単位なしで返すことができます。

注: ルール式では、部分的に定義されたパスもサポートします。例: @EventGroup.EVENT.field__v、@EventGroup.EVENT.FORM.field__v、@EventGroup.EVENT.FORM.IG.ITEM.field__v、@Event.FORM.field__v、@Event.FORM.IG.ITEM.field__v

システム参照

Vault の式で言う参照は、オブジェクトの値ではなく、関連するオブジェクトの値を指す変数です。例えば、$study__vr.phase__v を使用すると、その参照は、現在の施設に関連付けられている治験オブジェクトのフェーズの値に置き換えられます。

Vault プラットフォームのシステム参照

以下のシステム参照は、Vault プラットフォームの一部として提供されているため、数式が利用可能なアプリケーションのどの領域にも使用することができます:

コンテキスト内の現在のオブジェクトに関連するオブジェクトのプロパティに、数式がアクセスできるようにします。

使用方法

relationship__vr.name__vr

principal_investigator__vr.research_and_focus_areas__v = "黄斑変性"

現在の施設 (オブジェクト) の治験責任医師黄斑変性を研究対象としている場合、True を返します。

Vault EDC のシステム参照

以下のシステム参照は、Vault EDC の一部として利用できるため、EDC の一部として数式が受け入れられるアプリケーションの領域 (データ検証ルール、単位変換など) でのみ使用することができます。

EDC 治験階層内のオブジェクトは次の順序に従います:

治験 → 施設 → ケースブック → イベントグループ → イベント → フォーム → 項目グループ → 項目

EDC の式は、治験階層内の複数の異なるオブジェクトとそのプロパティを参照することができます。これらのオブジェクトを参照するには、治験階層内のアクセスパスを特定の構文で記述する必要があります。

すべての参照は $ 記号または @ 記号で始まり、オブジェクトとプロパティをピリオド (.) で区切る必要があります。

システム参照とシステム変数に使用するために、Vault EDC で次のオブジェクトとフィールドを使用することができます:

治験

治験 (study__v) オブジェクトの次のフィールドは、システム参照および変数で使用できます:

フィールド名 フィールドラベル 説明
locked__v ロック済み 治験のロック済みステータスを返します
name__v 名前 治験の名前を返します
oid__v 外部 ID 治験の外部 ID を返します

治験実施国

治験実施国 (study_country__v) オブジェクトの次のフィールドは、システム参照および変数で使用できます:

フィールド名 フィールドラベル 説明
name__v 名前 関連付けられた施設の治験実施国を返します
country_abbreviation__v 国略称 治験実施国の国略称を返します

施設

施設 (site__v) オブジェクトの次のフィールドは、システム参照および変数で使用できます:

フィールド名 フィールドラベル 説明
locked__v ロック済み 施設のロック済みステータスを返します
name__v 名前 施設の治験実施施設番号を返します
oid__v 外部 ID 施設の外部 ID を返します
principal_investigator__v 治験責任医師 施設の治験責任医師を返します
status__v ステータス 施設のステータスを返します
timezone__v 時間帯 施設のタイムゾーンを返します
メモ
  • 施設の場合、name__v はその施設レコードの治験実施施設番号フィールド値を返します。治験実施施設番号は、name__v フィールドのラベルです。

ケースブック

ケースブック (casebook__v) オブジェクトの次のフィールドは、システム参照および変数で使用できます:

フィールド名 フィールドラベル 説明
version__v バージョン ケースブックのバージョンを返します
subject_status__v 症例ステータス (ケースブック定義に基づいた) ケースブックの症例ステータスを返します
current_sdv_plan__v 現在の SDV 計画 現在、被験者 (ケースブック) に割り当てられている SDV レビュー計画を返します
current_dmr_plan__v 現在の DMR 計画 現在、被験者 (ケースブック) に割り当てられている DMR レビュー計画を返します
subject_name__v 症例 ID ケースブックの被験者の被験者 ID を返します
var 変数 治験のために定義されたケースブック変数を表す識別子として使用することができます。

事象グループ

イベントグループ (event_group__v) オブジェクトの次のフィールドは、システム参照および変数で使用できます:

フィールド名 フィールドラベル 説明
name__v 名前 イベントグループの名前を返します
sequence__v シーケンス イベントグループのシーケンス番号を返します (繰り返しイベントグループ)

事象

イベント (event__v) オブジェクトの次のフィールドは、システム参照および変数で使用できます:

フィールド名 フィールドラベル 説明
change_reason__v 変更理由 イベントの変更理由を返します
did_not_occur__v 未実施 イベントが発生しなかった場合、true を返します
event_date__v イベント日 イベントのイベント日を返します
name__v 名前 イベントの名前を返します
sequence__v シーケンス イベントのシーケンス番号を返します (繰り返しイベントグループ内のイベント)
メモ
  • イベント日付を参照する場合、必ずイベントを定義してください。@Event.event_date__v は使用しないでください。完全修飾識別子の場合、$EG.EVENT.event_date__v を使用してください。

フォーム

フォーム (form__v) オブジェクトの次のフィールドは、システム参照および変数で使用できます:

フィールド名 フィールドラベル 説明
change_reason__v 変更理由 フォームの変更理由を返します
form_status__v フォームステータス フォームのステータスを返します。オプション: submitted__v、planned__v、blank__v、in_progress__v、in_progress_post_submit__v
intentionally_left_blank__v 未実施 フォームが意図的に空白としてマークされていた場合、true を返します
name__v 名前 フォームの名前を返します
sequence__v シーケンス フォームのシーケンス番号を返します (繰り返しフォームの場合)
submit_counter__v 送信カウンター フォームが送信された回数を返します
メモ
  • 完全修飾識別子のフォーマット例として、$EG.EVENT.FORM.intentionally_left_blank を使用します。

  • 24R2 リリースで、in_progress_post_submit__v フォームステータスのラベルが進捗中送信後から編集中に変更されました。変数は変更されず、in_progress_post_submit__v のままです。

項目

項目 (item__v) オブジェクトの次のフィールドは、システム参照および変数で使用できます:

フィールド名 フィールドラベル 説明
change_reason__v 変更理由 項目の変更理由を返します
has_value_changed__v 値変更の有無 ルールを最後に実行した後に値が変更された場合、true を返します。これは、メール送信ルールの @Form 識別子にのみ使用できます。
intentionally_left_blank__v 未実施 項目が意図的に空白としてマークされていた場合、true を返します
lab_modifier__v 臨床検査機関修飾子 項目の臨床検査機関修飾子を返します
previous_submit_value__v 前回の送信値 前回の送信値からの項目の値を返します
translated_unit__v 変換済み単位 単位タイプ項目の単位に割り当てられている標準単位の名前を返します
unit__v 単位 単位タイプ項目に割り当てられている単位の名前を返します
value__v 項目の値を返します
value_normalized__v 値が正規化されました 項目の正規化された値を返します
value_translated__v 値が変換されました 値を標準単位に変換します
メモ
  • 日付データ型の項目には、value___v を使用しないでください。デフォルトでは、日付型の項目はすべての計算に value_normalized__v を使用し、value__v を強制的に使用すると実行エラーが発生します。

  • 完全修飾識別子のフォーマット例として、$EG.EVENT.FORM.IG.ITEM.change_reason__v を使用します。

  • 数学的関数は、単位項目タイプで使用することができます。

  • Vault は、単位項目である識別子の値を自動的に標準単位に変換します。例えば、@Form.IG.UNITITEM.value_translated__v. {{@Form.IG.UNITITEM.value__v }} を使用して、入力された数値を単位なしで返すことができます。

: 以下の例では、オブジェクトとレコードのサンプル名を使用しています。これらの参照を使用するには、名前を独自の治験の値に置き換える必要があります。

例えば、治験の終了時にバイタルサインが収集された日付にアクセスするには、以下を使用します (EDC Studioでの治験の構築方法とオブジェクトの名前によって異なります):

$End_of_Study.End_of_Study_Visit.Vital_Signs.General_Information.Date.value__v

この参照は、治験の終了時にバイタルサインを収集した日付 (日付項目、全般情報項目グループ、バイタルサインフォーム、治験終了来院イベント、治験終了イベント) にアクセスします。

このようなオブジェクトの参照方法は、システム変数でも機能します。

例えば、式がバイタルサインのフォーム (現在のフォームとみなされる) で評価される場合、次のように使用することができます:
@Form.General_Information.Date.value__v

イベントフォームなどの他のレベルのプロパティにもアクセスすることができます。

$Cohort_A.Visit_1.event_date__v

この参照は、Cohort A イベントグループの最初の訪問 (Visit 1イベント) のイベント日にアクセスします。

短いパスの定義

式中のすべてのオブジェクトにアクセスするためのフルパスを指定すると、長く煩雑になる可能性があるため、#define 文を使用して、式中で頻繁に使用するフォームまたは項目グループ (またはその他のオブジェクト) を参照するために短いパスを定義することができます。

#Define 文の一部として、システム参照とシステム変数の両方を使用することができます。

短いパスを定義するための構文は次のとおりです:

#define vitals_info “$End_of_Study.Vital_Signs.General_Information”

実行後は、オブジェクト vitals_info を使用して、関連するオブジェクトやプロパティにアクセスすることができます。

前のセクションの例:

$End_of_Study.End_of_Study_Visit.Vital_Signs.General_Information.Date.value__v

次のようになります:

vitals_info.Date.value__v

式の作成

使用できる式エディタの機能は、Vault のどこで式を使用しているかによって異なります。機能領域別の具体的な式については、以下を参照してください:

有効なフィールド & データタイプ

式を定義する際には、式の演算子、関数、フィールドおよび値をフィールドのデータタイプに一致させてください。例えば、変換するためのテキスト関数を使用せずに、式に日付フィールドを使用してテキストフィールドを更新することはできません。

Vault は、式に使用される場合に以下のデータタイプを自動的に変換します:

  • オブジェクト参照 → テキスト
  • 選択リスト → テキスト (オブジェクトまたはフィールドのデフォルトの数式フィールドを除く)
  • 日時 → 日付 (オブジェクトまたはフィールドのデフォルトの数式フィールドを除く)

Vault は、データタイプの変換に使用できる機能を提供します:

  • 日付 → テキスト: Text(date, format)
  • 数字 → 間隔: Days(数字)Months(数字)Years(数字)Hours(数字)Minutes(数字)
  • テキスト → 数字: Value(text)

識別子

ルールまたはビューで使用する式を作成する場合、識別子を使用して治験データを参照することができます (フォーム上の特定の項目など)。

識別子は一意になるまで階層的に定義し、識別子をピリオド (.)で区切ります。

$Event_group.Event.Form.Item_group.Item

その後、項目オブジェクトのフィールドを使用して、収集された値を参照することができます:

$Event_group.Event.Form.Item_group.Item.value__v

Studio のルールエディタでは、識別子、変数、演算子、関数の入力にオートコンプリート機能を使用することができます。Ctrl + スペースを押すと、オートコンプリートのオプションのドロップダウンリストが表示されます。識別子の入力を開始する前に Ctrl+スペースを押すと、すべての有効な識別子がドロップダウンに一覧表示されます。

例えば、複数のフォームにまたがって項目を使用するなど、複数の場所でデザイン定義を使用する場合、@ を使用して、その定義のすべてのインスタンスを対象にするよう指定することができます。

例えば、ある項目を複数のフォームで評価する場合、 @Form.Item_group.Item とします。これは、イベントグループイベントフォームの各レベルで使用することができます。

Disable および Set Item Value ルールには、@Form 識別子のみを使用することができます (@EventGroup@Event@ItemGroup は使用できません)。

#Define 文

#Define 文を使用して識別子の変数を定義しておくことで、数式で識別子を参照するたびに変数を書き換える必要がなくなります。

例えば、拡張期血圧項目の短縮名を定義するには、以下のようにします:

#define diastolic @Form.Vitals.Diastolic_blood_pressure.value__v

こうすることで、式で diastolic を使用するたびに、Vault は自動的に #define 文の識別子として読み取ります。

  • 式の先頭に #define 文を各行に 1 つずつ配置します。
  • 個々の式ごとに #define 文を含める必要があります。これらの変数はルールのコンテキストで定義されるため、単一の #define 文を複数のルールをまたいで使用することはできません。

コメント

コメントを使用して、式中にメモを残すことができます。例えば、特定の式の簡単な説明を追加することで、後でその式がどのように機能するかを思い出すことができます。

式にコメントを追加するには、コメントテキストを数式の先頭 (1 行目) に入力し、/**/で囲みます。

/* これはコメントです。*/

式に関するガイドライン

式を記述する際にはこれらのガイドラインを使用します:

  • お使いの Vault のロケールにかかわらず、小数点はピリオドとします。
  • 表現の最大文字数は 1,500 文字とします。
  • 式に 1 つ以上の表現が含まれる場合は、式を括弧 () で囲みます。
  • Vault CDMS は、数字を浮動として処理し、式評価の最後でそれらを解決します。

関数

関数を式表現に追加する際、以下のガイドラインを使用します。

  • 関数名は、大文字と小文字が区別されます。
  • 関数には、1 つまたは複数の引数があります。異なる関数には異なる数の因数が使用できます。
  • Vault は左から右に式を処理します。入れ子の関数の場合、Vault はサブ関数を左から右に処理してから、親関数を処理します。

演算子

演算子を式表現に追加する際、以下のガイドラインを使用します:

  • 演算子の標準の順序を適用: 括弧で括らない限り、加算および減算の前に乗算および除算が実行されます。
  • 数値と数値型フィールドの両方を加算するには、数学的な演算を使用することができます。
  • 日付フィールドタイプは演算子で使用できません。上記で説明したさまざまな日付関数を使用します。

ブーリアンフィールド

Yes/No 型のオブジェクトフィールドまたはブーリアン型の項目 (チェックボックス) を参照する式を記述する場合、はい には true を使用し、いいえ (チェックボックス未選択時) には false を使用します 。

空白の値の処理

これは、Vault が式内の空白のフィールド値をどのように処理するかを決定します。

  • As zero: 式計算を完了できるように、空白値に 0 が代入されます。
  • As null: 空白値を null として扱い、式全体で null/blank 値を返します。

次の例では、空白処理オプションの違いによってこの式の結果がどのように影響するかを示しています:

数式:

NUM1 + NUM2
空白 「As zero」の結果 「As null」の結果
両方 0 + 0 = 0 Null + Null = Null
NUM1 数字1 + 0 = 数字1 数字1 + Null = Null
NUM2 0 + 数字2 = 数字2 Null + 数字2 = Null

エラー処理

ルールの作成または更新する前に、構文エラーを解決する必要があります。条件フィールド外をクリックすると、式構文が正しくなるまで Vault は表現が無効ですと表示します。以下はよくみられる構文エラーです:

  • 戻り値の日付型が一致しない。例えば、戻り値の型が日付であるのに、表現が数字を返した場合、エラーメッセージが表示されます。
  • 式に閉じ丸括弧がない、または括弧が一致しない。
  • 関数の因数の数が正しくない。例えば、if(式, 値 1, 値 2) の関数に因数が 3 つある場合、
  • この関数のパラメータ値は正しくありません。

Migration (V1 to V2)

拡張された Vault 式では、式を使用してプラットフォームアプリケーション領域で自動的に使用可能になるため、すぐに使用を開始することができます。

EDC 固有の式を使用 (ルールおよびビュー) する場合、治験ごとに拡張された Vault 式を有効にする必要があります。

19R1 (2019年4月リリース) 以前に作成された治験は、拡張された数式言語にアップグレードすることはできません。このような治験では、ルールと派生列のマッピングに V1 数式言語 (こちらを参照) を引き続き使用する必要があります。

拡張された Vault の式を治験で有効にする方法

治験で拡張 Vault 式を有効にするには:

  1. 数式言語 V1 を使用する式が治験に含まれていないことを確認します。
  2. 管理者 > 企業管理者治験設定オブジェクトに移動します。
  3. 治験に移動して、クリックして開きます。
  4. 編集をクリックします。
  5. エクスプレッションエンジンのバージョンフィールドに、2 を入力します。
  6. 保存をクリックします。

これで治験で拡張された数式言語を使用できるようになります。

既存の設計を、拡張された Vault 式を使用している新しい治験に移動する

また、新しい治験を作成して (新しい治験ではデフォルトで拡張された Vault 式が有効になっています)、既存の設計をその新しい治験にインポートすることを選択することもできます。システム管理ルール (必須、範囲、および将来の日付検証チェック) と単位変換 (value__v$value__vに自動的に置換) はインポートされますが、カスタムルールや派生列の式はインポートされません。

このメソッドは、設計から式 (カスタムルールや派生列の式を含む) を削除します。

  1. 治験設計のエクスポート詳細はこちらをご覧ください。
  2. 新規治験を作成します。
  3. 治験設計を、新しい治験にインポートします。詳細はこちらをご覧ください。
  4. Vault はカスタムルールと派生列の式をすべて削除し、治験をインポートします。

拡張された Vault 式を使用して、ルール派生型の、単位変換用に、新しい数式表現を作成できるようになりました。

追加資料

式の使用方法に関する使用例に特化した情報を記載した、その他のヘルプ記事を用意しています: