Reporting clinical adverse events and concomitant medications - -.. ~ How to compress several :days work into a fewm]ilutes. Christophe VIDY,', ', ABSTRACT Reporting clinical adverse events requires complex programming due to the many,specific requirements of clinical data. This is often time oonsumingand therefore we have developed a Frame application which allows the end user to build reports with a point and click'system requiring little khowledge of SAS. The application consists of three screens. The first screen allows specific variables such as header, row and group to be defined. The second requires the user to enter the layout characteristics such as title, footnote, page-size, linesize, sort ciiteria or first page number. Once this information has been entered, the user can decide to view the report format in an out-put window or store it in a file. In addition, the macro call used to generate the report can be stored. The third screen allows the user to view the data to be reported using graphical drill down techniques. INTRODUCTION With the large amount of data recorded in today's clinical trials, there is a need to organise and summarise the information in an efficient manner which facilitates its retrieval from a database. Data is usually summarised using quantitative statistical indicators (e.g. Mean, Standard deviation, Min, Max). However qualitative measures such as counts and frequencies are used to summarise clinical safety information such as adverse events. When summarising qualitative information there are two levels of presentation which can be utilised. The first is a straight forward simple count of a number of events in the data. This can be handled by SAS using procedures such as freq or tabulate. The second level introduces constraints into the counting process. The question "How many patients have at least one adverse event? " implies that a constraint must be applied to the searching algorithm used to count the adverse events. If constraint were not applied, a simple count of adverse events would result. Although simple counts are valid, there usefulness within the context of clinical safety is limited. Within the pharmaceutical industry, counting with constraints is often used to present clinical safety and patient medical histories. This requirement has led to the development of an application using the SAS macro language and frame technology. REQUIREMENT The challenge was to build a software system which enabled users with a basic knowledge of SAS to report their clinical safety and patient medications data. We wanted the tool to be as simple as possible to use. Because of the number of parameters needed to build a table and the number of controls on, the dataset, it was necessary to provide a user friendly interface. After much discussion with end users, it was decided that the software had to deal with the following:... Splitting the header... The page skip... Splitting labels... Sorting results 11 May 1995
- Storage of the macro code generated - Storage of results in an external file In addition, it had of course to provide a way to enter table layout features such as title, footnote, header note etc. DESCRIPTION OF THE APPLICATION The requirements led us to design an application consisting of three screens. The first screen was designed to record the minimum information needed to build a table(figure 1). The second collected layout features of the table (Figure 3) an the third was built to provide a graphical overview of the data. SCREENl o Name of the SAS Dataset which contains the data Variable list for which the unique combination gives the denominator for percentages Variable to put in the vertical dimension e Variable to use as the horizontal dimension Variable to cross with the line one in the vertical dimension:.*. o Variable to cross with the Header one in the horizontal dimension. The by variable o Name of the file to store the results.. 0 Total required on the horizontal dimension 10 Onlinehelp 11 Exit button 12 Graphics button ( Figure 3) 13 Run button to visualise the result 11 May 1995 1243
14 Name of the file to store the SAS code 15 Button to call the additional features screen As shown in Figure I, the first screen is divided into three blocks:... Required information... Optional information... Action Clicking on one of the buttons prompts the user with a list box containing the different choices possible for each item. The "Dataset" button 0 allows the user to choose the data upon which the report will be based and the "Table keys" 8 button allows the users to select several variables in the dataset. Code for the "Table keys" button. ct2: link ctfic ; if fic= _blank_ then return ; dsid=open(fic) ; keypv=varlist( dsid,'a',attrn( dsid,'nvars'),'select YOUR KEY V ARIALES', 'N',",bodysull' 'libodyll"liseverll"lifiltre) ; keypid=setnitemc(keypid,keypv,'_init _',1) ; call notify('keypat','_sectexc,keypv) ; rc=close(dsid) ; call notify('scrkey','_is_hidden_',ishidden) ; if keypv ne _blank_ then if trt ne _blank_ then do ; call method('notblank.scl','keys',fic,getnitemc(keypid,'_inic,1),t:rt;r~lt,messid) ; if result= 1 then do ; keypid=setnitemc(keypid,",'_init_',i) ; keypat= _blank_ ; return ; end; end ; iflength(keypv) > 19 then do ; if ishidden= 1 then call notify ('scrkey','_unhide_') ; call notify ('scrkey','_secmax_',length(keypv)-18) ; end; else if ishidden=o then call notify('scrkey','_hide_') ; return ; If a variable name doesn't fit in the entry field, a scrollbar appears beneath. Buttons. to 6 allow only a single choice. Once a variable is selected, it is removed from the selection list SO that duplication is prevented. When the user chooses a dataset, if formats are linked to some of its variables,. a check is performed to ensure they are accessible. Checks of consistency between the other variables are also performed. 11 May 1995 1244
The final table obtained running the application with the parameters shown in Figure 1 is shown in Figure 2. By default, if there is no label for a variable, the name is used. As for "Tabulate" or "Freq" procedures, the "Fonnchar" used is the one set with the SAS "Fonnchar" option. Incldon...v... by ooot.-t body oyo"'" with r.-dod max h""'olly and eorted on the more frequent adyw'" event. In tr...,.'" A Line variable label DaI. : l1apri4 Pag.: 1 Telal pall.,1a Pallante with : Pallante without ad_o _I: TREAT A 34 32 (14.12) 2( 6.11) PLACEBO 43 40 (13.021 3(... 1 Bronohltlo Dyopn.. Eplatexle Loryngilio Apnea Bronohopulmon.. y Inteellen Hypov.,tllatlcn a Mlol. A....,I. SUparlmpo_lnlooIlon Abdominal pain Backpah Int.ellen PoIvlcpaln Flu oyndrern. 2 10 13 31.2 2 5.1 1 2.1 2 4.7 1 1 2.1 2 2 4.7 1 2.1 1 2.1 1 1 2.3 1 2.3 1 2.3 ------- 17 50.0 ------- 10 23.3 4 5 I 26.6 1 3 1 6 11.6 2 2 4 11.8 1 1 2.3 2 2 6.1 1 2 U U 1 2.' 2.3 1 2.1 2.3 1 2.1 INTENSITY: Group variable Footnote (Center) ------- 40 51.1 1 5 25-31 40.3 2 2 2.6 1 2 3 3.1 3 3 3.1 1 ------- 27 36.1 1 7 6 14 11.2 3 2 5 6.5 2 2 2.6 1 3 3.' 1 2 2.6 2 2.6 III III II m :;;11 11 1fI.~mluF!l1ll SCREEN 2 The title, footnote, header note and sort criteria are entered via the second screen as shown in Figure 3. Also shown are line size, pagesize and first page number fields. The user may modify any of these fields. The default first page number is 1 and SAS default values for pagesize and linesize are used. The footnote square is made from four "Radio box entry field" objects with an additional attribute for the entry field. Clicking on these fields using the popmenu button of the mouse allows the user to select the type of justification (left, center or right) for each line of footnote in the list box. As in the first screen, a scrollbar appears under the "Column header value for sort" combo box (Figure 3) if the value or fonnatted value doesn't fit in the entry field. The help icon calls the help frame which contains a context sensitive hypertext image similar to that shown in Figure 2. RHONE-POUf..ENC RORER 11 May 1995 1245
TREAT A 1... 1 FIRST PAGE NUMBER LINE SIZE: 180 PAGE SIZE 60 Titl,, Incidence of adverse events by costart body system with recorded max intensity and sorted on the more frequent adverse events in treatment A Footnote... INTENSITY: Mis=Missing Mil=Mild Mod=Moderate Sev=Severe Lif=Life threatening Ht,;"dr"."'It,; Project: RPXXXX Study: ZZ~~ SCREEN 3 The "graphics" button calls the screen shown in Figure 4. This screen allows users to move through the data using a drill-down technique. The graph is updated each time the user changes the level of data being looked at and is presented by either vertical or -horizontal bars, frequencies and percentages. Its layout characteristics can be accessed using the "Appearance" button which leads to the Frame provided by SAS to enter the characteristics for Graphic objects. When the number of "drill-down" levels exceeds three which is the limit for title in a graphic object, the first "drill-down" level(s) are recalled in a list box which appears under the "drill-down" arrows. \ - \ \. \,:. 11 May 1995 1246, i L
PA'III!NI' 'MTN: AD\II!RSI! I!\II!NT ax: 1.181. Freq 40.-------------------------~------~ 30 20 10 0""--- TREAT til TREftTI'IENT GROUP PLACEBO CONCLUSION The program demonstrates the power of SAS in providing a specialised application using frame and macro technology at complex levels transparent to the user. We have used the application on many clinical projects within the company and despite the speciality, it has proved to be flexible and has been applied to many clinical reporting requirements not related to clinical safety. \. \; j', ~ " :~~ Lf'..:, "~ RHONE-POU~C RORER. 11 May 1995: 1247. '.,.._.,"_~_~..~, ~ ~ ",~_,~ "_,~ ~ ~ ~ -------------------- I L