医薬業界で,主に臨床試験データの標準形式のCDISCに絡んだ話. xptに代わる次世代のデータフォーマットとして提案されてる中にJSON形式のファイルもあって Dataset-JSONとかって提案されてます
https://www.cdisc.org/dataset-json
👆これのspecificationのところで 例示がされてます
例えばSASでどう作るかって話で,
見る感じ,定義情報をいろいろ持たせるので,そこはdefineから持ってくるなり,他の与え方をするなりがいるんですが,それ以前に SASでJSONファイルって作れるのって人が多いと思うので,そこだけ
data DM (label="Demographics");
attrib
STUDYID label="Study Identifier " length= $5000.
DOMAIN label="Domain Abbreviation " length= $200.
USUBJID label="Unique Subject Identifier " length= $200.
AGE label="Age " length= 8.
;
STUDYID="MyStudy";USUBJID="001";DOMAIN="DM";AGE=56;output;
STUDYID="MyStudy";USUBJID="002";DOMAIN="DM";AGE=26;output;
run;
data DM_1;
attrib ITEMGROUPDATASEQ label="Record identifier" length=8.;
set DM;
ITEMGROUPDATASEQ=_N_;
run;
proc sort data=DM_1;
by STUDYID USUBJID;
run;
ods noresults;
ods output Position=Position;
ods output Sortedby=Sortedby;
proc contents data=DM_1 varnum ;
run;
data dataset_item;
length OID name label type displayFormat $200.;
set Position;
call missing(of displayFormat);
if Variable = "ITEMGROUPDATASEQ" then OID=Variable;
else OID = cats("IT.",Variable);
name=Variable;
if ^missing(displayFormat) then do;
displayFormat=format;
end;
if Type in ("数値") then type="integer";
else type="string";
keep OID name label type displayFormat;
run;
ここまでは適当な下準備なので,いいとして.
今回いいたいのは Proc JSONをつかって
writeステートメントで構造や値を直に作成でき
exportで任意のデータセットの内容を変換してJSONファイルの中に含めれるよって点.
以下は,とりあえず試してみただけで,精査してないのと items作る部分は,本来データセットの情報を取り出してつくるのではなく,定義情報から付与すべきのように思うのでそのまま使ったりしないでくださいね.あくまでproc JSONを紹介したいだけなので
proc json out = "XXXXX\dm.json" pretty;
write open object ;
write values "creationDateTime" "2023-03-22T11:53:27";
write values "datasetJSONVersion" "1.0.0";
write values "fileOID" "www.sponsor.org.project123.final";
write values "asOfDateTime" "2023-02-15T10:23:15";
write values "originator" "Sponsor SASYAMA";
write values "sourceSystem" "SAS 9.4";
write values "sourceSystemVersion" "M7";
write values "clinicalData";
write open object;
write values "studyOID" "xxx";
write values "metaDataVersionOID" "xxx";
write values "metaDataRef" "https://metadata.location.org/api.link";
write values "itemGroupData";
write open object;
write values "IG.DM";
write open object;
write values "records" 2 ;
write values "name" "DM" ;
write values "label" "Demographics" ;
write values "items" ;/* attribute array */
write open array;
export dataset_item / nosastags;
write close;
write values "itemData" ;/* record array */
write open array;
export DM_1 / nokeys nosastags;
write close;
write close;
write close;
write close;
write close;
run ;
0 件のコメント:
コメントを投稿