関連インスタンスの比較

繰返しフォームで一致するインスタンスの値を確認してください。

ルールの説明:重大度(ラジオ・コントロール)は、関連する同じ有害事象(AENUM)の前のものと異なる必要があります。

ルール式

//variable declaration
var rc;                         //Radio Control - severity
var ins;                        //placeholder for Repeating Form instance 
var outc='';                    //placeholder for severity label value
var cnt=0;                      //counter variable

//function definition to identify number of instances matching the severity value
function functi(item,index)
{
	if(item.deleted===false && item.value!==null && index!==(ins-1) && index<ins-1)
	{
	
		if(item.value===aenum1val)                                    //Checks if the passed-in instance has a matching AE number value with the current instance
		{
		     if(newsev[index]!==null && sevval!==null)                    
		     {
			     outc=JSON.parse(newsev[index].value)[0].label;     //Retrieves label from severity selection made by the user in the related instance
			     if(outc===sevval)                                //Checks if the severity value in the related instance is matching in the current instance
			     {
			          cnt=cnt+1;                                 //Updates the number of identified matching instances
			     }
			     else
			     {
				    cnt=cnt;
			     }			
	            }
		     else
		     {
		          cnt=cnt;
		     }
		}
		else
		{
		     cnt=cnt;
		}
     }
     else
     {
          cnt=cnt;
     }		
}

try
{
//variable declaration
	ins = GetCurrentRFInstance();                                //Retrieves instance of the current AE form
	var aenum1val=aenum1;                                        //Adverse event number item
	var sevval=getStringFromChoice(newsev1);                    //Variable for severity item to retrieve the label for the severity choice item selected by the user
	rc=getValues('aenum','newsev');                              //Gets values entered for AE number and severity items
	if(rc===true && aenum1val!==null && sevval!==null && ins>1)     //Checks if getValues function retrieved results array, if AE number and severity values are not null and if current instance is not the first instance of the form
	{
		aenum.forEach(functi);        //Execute the function code for all AE number values entered in the form
		if(cnt>0 )
		{
			return false;          //System sends query when return false condition is met
		}
		else 
		{
			return true;
		}
	}
	else
	{
		return true;
	}
}
catch(err)
{
    setQueryMessage(err);                 //set query message to display an encountered error
    return false;                         //System sends query when return false condition is met
}

問合せ:新しい重大度は前の重大度と同じです。確認してください。

定義

newsev

ルール摘要から重要度項目の変数を作成しました。

aenum

ルール摘要の「有害事象番号」項目に対応します。

GetCurrentRFInstance( )

現在の繰返しフォームのフォーム インスタンス番号を取得します。

getStringFromChoice( )

選択要素の選択されたラベル(ドロップダウン、ラジオ・ボタンまたはチェックボックス)を文字列またはカンマ区切りの値に変換します。選択要素をパラメータとして取り込みます。

getValues( )

複数の訪問にわたって1つ以上の変数の値を、訪問順に配列形式でフェッチします。この場合、前述の aenumおよび newsev変数を取ります。

setQueryMessage( )

パラメータとして渡される動的問合せテキストを指定します。

functi(item,index)

コード内で宣言された関数。指定の重大度の値に一致するインスタンスの数を識別します。

戻り値

ブール

trueまたはfalseのいずれかを返します。return false条件が満たされると、問合せが呼び出されます。

検証ステップ

  1. テスト用のサブジェクトを使用して、確認する項目を含む特定の訪問およびフォームに移動します。この例では、指定された繰返しフォーム・インスタンスの「有害事象番号」<aenumval>および「重大度」<sevval>です。
  2. 次の表のようにフォーム・アイテムaenumvalおよびsevvalを更新し、結果がリストどおりであることを確認します。
    ステップ ノート 結果

    a。 最初の繰返しフォーム(1RF)インスタンスで、aenumvalアイテムを「1」(AE1)として入力し、sevval「等級1」として選択します。

    1つの繰返しフォーム インスタンスのみ。

    問合せがありません。

    b。 2番目の繰返しフォーム(2RF)インスタンスに移動し、aenumvalアイテムを1 (AE1)として入力し、sevval「等級1」として選択します(前のステップと同じ)。

    1RFおよび2RFでの値の照合:
    • 1RF:
      • AE1
      • 重大度等級1
    • 2RF:
      • AE1
      • 重大度等級1

    2RFで問い合せます。

    c。 2RFインスタンスのsevvalアイテムを「等級2」として更新します。

    1RFと2RFの異なる値:
    • 1RF:
      • AE1
      • 重大度等級1
    • 2RF:
      • AE1
      • 重大度等級2

    問合せなし。

    d。 2RFインスタンスのsevvalアイテムを「等級1」として更新します。

    1RFおよび2RFでの値の照合:
    • 1RF:
      • AE1
      • 重大度等級1
    • 2RF:
      • AE1
      • 重大度等級1

    2RFで問い合せます。

    e。 2RFインスタンスのaenumvalアイテムを2 (AE2)として更新します。

    1RFと2RFの異なる値:
    • 1RF:
      • AE1
      • 重大度等級1
    • 2RF:
      • AE2
      • 重大度等級1

    問合せなし。

    f。 3RF (Thrid Repeat Form)インスタンスを作成し、aenumvalアイテムを1 (AE1)として、sevvalGrade 1として入力します。

    1RFおよび3RFでの値の照合:
    • 1RF:
      • AE1
      • 重大度等級1
    • 2RF:
      • AE2
      • 重大度等級1
    • 3RF:
      • AE1
      • 重大度等級1

    3RFで問い合せます。

    g。 3RFのaenumval3 (AE3)として更新します。

    すべての繰返しフォーム・インスタンスで異なる値:
    • 1RF:
      • AE1
      • 重大度等級1
    • 2RF:
      • AE2
      • 重大度等級1
    • 3RF:
      • AE3
      • 重大度等級1

    問合せなし。

    h。 3RFのaenumvalアイテムを2 (AE2)として更新します。

    2RFと3RFの値のマッチング:
    • 1RF:
      • AE1
      • 重大度等級1
    • 2RF:
      • AE2
      • 重大度等級1
    • 3RF:
      • AE2
      • 重大度等級1

    3RFで問い合せます。

    i。 2RFのsevval項目を「等級3」として更新します。

    すべての繰返しフォーム・インスタンスで異なる値:
    • 1RF:
      • AE1
      • 重大度等級1
    • 2RF:
      • AE2
      • 重大度等級3
    • 3RF:
      • AE2
      • 重大度等級1

    問合せなし。

その他の例

例4-28治療の開始日は、同じ薬の前の処方の治療の停止日以降にする必要があります

var rc;
var ins;
var ind=-1;
var res='';
function functi(item,index)
{
	if(item.deleted===false && item.value!==null && index!==(ins-1) && index<ins-1)
	{
		if(item.value===trtname1)
		{
			if(stpdt[index]!==null && stdt[ins-1]!==null)
			{
				if(getDatesCompareResult(stdt[ins-1].value,true,stpdt[index].value,true,'>='))
				{
					ind=1;	
					
				}
				else{  ind = 0;}
			}
		}
	}
}
	ins = GetCurrentRFInstance();
	rc=getValues("trtname","stdt","stpdt");
	if(rc===true && ins!==1)
	{
		trtname.forEach(functi);
		if(ind===0)
		{			
			return false;
		}
		else { return true; }
	}
	else
	{
		return true;
	}

問合せメッセージ:開始日が前回処方の停止日より前です。修正または確認してください。