2013年11月18日月曜日

CDISCプロシジャの入り口。


SDTMに準拠したデータセットか、CDISCプロシジャでざっくりチェック出来る。



SDTM準拠かチェックするCDISCプロシジャ構文


proc cdisc model=SDTM;
 sdtm sdtmversion = "SDTMのバージョン";
 domaindata  data      = チェックするデータセット
                   domain   = 対象のドメイン名
                   category = 対象のドメインのカテゴリ
 ;
run;



とりあえず、被験者情報を格納するドメイン「DM」について書いてみる。

proc cdisc model=SDTM;
 sdtm sdtmversion = "3.1";
 domaindata  data      = WORK.DM
                   domain   = DM
                   category = SPECIAL
 ;
run;

・「sdtmversion=」は適宜最新のに。
・「category=」はドメイン毎にカテゴリが決まってるので、SDTMの仕様(SDTM IG)とかSASのヘルプなどを見て入力。



どこまでチェックしてくれるのか??

色々なデータセットを作成し、上記CDISCプロシジャを実行したときの動きを見てみる。


*** STEP① 変数のないデータセットを作った場合 **********;

data DM;
run;


ログ

ERROR: Required parameters not contained on DOMAINDATA(Domain=DM) statement.
Required parameter STUDYID not present.
Required parameter DOMAIN not present.
Required parameter USUBJID not present.
Required parameter SUBJID not present.
Required parameter RFSTDTC not present.
Required parameter RFENDTC not present.
Required parameter SITEID not present.
Required parameter SEX not present.
Required parameter ARMCD not present.
Required parameter ARM not present.
Required parameter COUNTRY not present.
NOTE: エラーが発生したため、このステップの処理を中止しました。


解説
ERROR  ドメインDMのRequired変数「STUDYID」~「COUNTRY」がデータセットにない。
「Required変数」とは必ず定義し値を入れなければならない変数。

…まずはRequire変数の存在チェックが行われる模様。





*** STEP② 数値型でRequired変数のみを作った場合 *******;
data DM;
   length STUDYID DOMAIN USUBJID SUBJID RFSTDTC
            RFENDTC SITEID SEX ARMCD ARM COUNTRY 8.;
run;

ログ

ERROR: Variable STUDYID is defined as character type in domain, but data is numeric.
ERROR: Variable DOMAIN is defined as character type in domain, but data is numeric.
ERROR: Variable USUBJID is defined as character type in domain, but data is numeric.
ERROR: Variable SUBJID is defined as character type in domain, but data is numeric.
ERROR: Variable RFSTDTC is defined as character type in domain, but data is numeric.
ERROR: Variable RFENDTC is defined as character type in domain, but data is numeric.
ERROR: Variable SITEID is defined as character type in domain, but data is numeric.
ERROR: Variable SEX is defined as character type in domain, but data is numeric.
ERROR: Variable ARMCD is defined as character type in domain, but data is numeric.
ERROR: Variable ARM is defined as character type in domain, but data is numeric.
ERROR: Variable COUNTRY is defined as character type in domain, but data is numeric.
WARNING: Variable AGE is expected in this domain(DM), but is not present.
WARNING: Variable AGEU is expected in this domain(DM), but is not present.
WARNING: Variable RACE is expected in this domain(DM), but is not present.
NOTE: Variable INVID is permitted in this domain(DM), but is not present.
NOTE: Variable INVNAM is permitted in this domain(DM), but is not present.
NOTE: Variable BRTHDTC is permitted in this domain(DM), but is not present.
NOTE: Variable ETHNIC is permitted in this domain(DM), but is not present.
NOTE: Variable DMDTC is permitted in this domain(DM), but is not present.
NOTE: Variable DMDY is permitted in this domain(DM), but is not present.
NOTE: エラーが発生したため、このステップの処理を中止しました。


解説
ERROR「STUDYID」~「COUNTRY」は文字型として定義すべきなのに数値型になっている。

WARNINGドメインDMのExpected変数「AGE」~「RACE」がデータセットにない。
「Expected変数」とは必須かつ、なるべく値を入れる、入れられない時は欠損値にする変数のこと。

NOTEドメインDMのPermissible変数「INVID」~「DMDY」がデータセットにない。
「Permissible変数」とは、必要に応じ作成する変数のこと。
必須じゃないのでとりあえず放置。

…変数が存在する場合は、次に型チェックが行われている。
また、Required変数が存在してたら、次にExpected・Permissible変数の存在チェックが行われる模様。







*** STEP③ 定義にのっとった型でRequired・Expected変数を作り、値はNullの場合 ****;
data DM;
   length STUDYID DOMAIN USUBJID SUBJID RFSTDTC
            RFENDTC SITEID SEX ARMCD ARM COUNTRY AGEU RACE $10.
            AGE 8.
   ;
run;

ログ

NOTE: Variable INVID is permitted in this domain(DM), but is not present.
NOTE: Variable INVNAM is permitted in this domain(DM), but is not present.
NOTE: Variable BRTHDTC is permitted in this domain(DM), but is not present.
NOTE: Variable ETHNIC is permitted in this domain(DM), but is not present.
NOTE: Variable DMDTC is permitted in this domain(DM), but is not present.
NOTE: Variable DMDY is permitted in this domain(DM), but is not present.
ERROR: Required variable STUDYID has a MISSING value in observation 1.
ERROR: Required variable DOMAIN has a MISSING value in observation 1.
ERROR: Required variable USUBJID has a MISSING value in observation 1.
ERROR: Required variable SUBJID has a MISSING value in observation 1.
ERROR: Required variable RFSTDTC has a MISSING value in observation 1.
ERROR: Required variable RFENDTC has a MISSING value in observation 1.
ERROR: Required variable SITEID has a MISSING value in observation 1.
ERROR: Required variable SEX has a MISSING value in observation 1.
ERROR: Required variable ARMCD has a MISSING value in observation 1.
ERROR: Required variable ARM has a MISSING value in observation 1.
ERROR: Required variable COUNTRY has a MISSING value in observation 1.
ERROR: DomainData DM data content encountered prior errors.


解説
ERROR Required変数「STUDYID」~「COUNTRY」の値が欠損値。

…値必須なRequire変数はNullチェックを行ってくれる模様。







*** STEP④ 上記データセットの変数値に、適当な値をいれた場合 *******;
data DM;
   length STUDYID DOMAIN USUBJID SUBJID RFSTDTC
            RFENDTC SITEID SEX ARMCD ARM COUNTRY AGEU RACE $10.
            AGE 8.
   ;
   array  AR(*) _CHAR_;

   do i=1 to dim(AR);
       AR(i)="1";
   end;

   AGE=1;

   drop i;
run;

ログ

NOTE: Variable INVID is permitted in this domain(DM), but is not present.
NOTE: Variable INVNAM is permitted in this domain(DM), but is not present.
NOTE: Variable BRTHDTC is permitted in this domain(DM), but is not present.
NOTE: Variable ETHNIC is permitted in this domain(DM), but is not present.
NOTE: Variable DMDTC is permitted in this domain(DM), but is not present.
NOTE: Variable DMDY is permitted in this domain(DM), but is not present.
NOTE: DomainData DM data content is valid.


解説
NOTEのみとなった。

…変数の適当な値については突っ込まれず。






*** STEP⑤ 上記プログラムから「drop i;」の文を削除した場合 *******;

ログ

ERROR: Variable i is not defined in this domain (DM) and must be dropped/deleted.
ERROR: SDTM-compliant datasets may contain only variables defined in the domain (DM).
NOTE: エラーが発生したため、このステップの処理を中止しました。


解説
ERROR 変数「i」はドメインDMの定義にないはずだが、データセットに存在している。

…ドメインの定義にない変数が存在してたらERRORを吐いてくれる模様。






ということで、
  ・変数の存在チェック
  ・型チェック
  ・Nullチェック
  ・定義にない変数のチェック
と基本的なことはしてくれる模様。

まずはSDTM準拠のデータセットを作った際の一次チェックとしてCDISCプロシジャは使えそう。
(その前にCDISCプロシジャがSDTMの最新バージョンに対応してる必要がありますが。。)

また準拠チェックのツールとして、SAS社から「SAS Clinical Standards Toolkit」というのを提供してるので、使った事ないですが、最新バージョンにも対応してると思うのでそっち使う方がいいかも。

0 件のコメント:

コメントを投稿