AnnotatedTLF

658 Views

March 29, 24

スライド概要

[第2回大阪sas勉強会] 三木 悠吾

profile-image

SAS言語を中心として,解析業務担当者・プログラマなのコミュニティを活性化したいです

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Novartisのアレを作ってみる 三木 悠吾

2.

概要 • 某製薬企業でADaM変数をTFLに記載しようと する動きが活発化 • 手書きでもいいんじゃないのって話も出たが どうやって作成するか議論 →結論としてはAnnotatedCRFと同じ技術で作成 →Adobe pdfの注釈機能を採用 →もっと何か出来ないか?

3.

SUG 2017J での Novartisの発表 • Metadata Management • Annotated CRFの作成補助ツール • Define.xmlのロジカルチェック • AnnotatedTLFでも使えるはず! – これは作るしかない!

4.

Reverse Engineering • プレゼンから判断できること – 大きく2つのマクロに別れる(Central, Project) – 出力するページを指定できる – Annotationのデータベースを持つ Reverse Engineeringとは ソフトウェアから機能仕様を再現す ること。りんごの会社が窓の会社 のGUI仕様をまるっと作ってしまっ た話が有名。 • 作成するものリスト – Central program : データベースからannotateを選択して、上手く調整して貼り付ける。 – Project program : プロジェクトのデータベースからmock等の修正に合わせて、 annotateを出現させるページを調整する。 • Central, project に対して共通でエクセルでページ指定するファイル – Annotated database : adobeのXFDFファイルをデータベース化する。 XFDFとは Adobe pdfの注釈をファイルとして 出力したもの。Novartisは FDF(adobe独自の形式)としたが、 XML形式のXFDFを採用した。

5.

Annotated Database • Novartisの発表に従って作成する – CRFページとannotationが一対一の関係 – 帳票とannotationが一対一で作成すればOK – 複数ページの場合もそのままデータベース化

6.

Config Excel File (project) Table xxx : 表の内容を記載 File_Name : Database上のXFDFのファイル名 Start_page : annotationの開始ページ End_page : annotationの終了ページ New_Start_page : 変更後の開始ページ New_End_page : 変更後の終了ページ →後はプログラム書くだけ!

7.

Technology 1 • 外部ファイルを扱うプログラムを作成 • FDF、XFDFはテキストとして扱える filename source “&sourcefile”; filename outfile “&outfile”; Data _null_; ←データは作成しないからnull指定 infile source; ←ソースデータはinfile file outfile; ←出力データはこっち length string $2000.; input string $ @@; ←データステップ中はSTRING変数に一時格納 <このあたりに処理を記載> put string; ←出力は定番のputステートメント run;

8.

Technology 2 • ページ数を変える処理 XFDFのtag「Page = “12”」のタグが対象 string = tranwrd(string, ‘Page = “12’, ‘Page = “13’); が基本なんだけど、複数ページある表は21->25にしたい場合、 21->22->23->24->25と繰り返し処理されて全部25になってしまう・・・ string = tranwrd(string, ‘Page = “12’, ‘Page = “@13’); 「@」でタグ付けしておき、 すべてのページの置換が終わったあとに string = tranwrd(string, ‘Page = “@’, ‘Page = “’); のように「@」を削除してやるプログラムを書いてやればOK

9.

Technology 3 • metadataからmacroを実行する Data _null_; set plan; call execute( ‘%trans_page(‘ || File_Name || ‘, ‘ || Start_page || … Run; Call executeでマクロを大量実行

10.

結果 • とりあえず使えるものが出来た • In-houseのADaM全般で使用予定 • DMが手作業でannotated CRF作っていたので 提供した