WORK PRACTICE GUIDELINE

Verification Checklist

1PURPOSE/SCOPE

1.1This work practice guideline is used in Biometry to provide a method for ensuring that appropriate verification tasks are applied during the validation of SAS programs. It is intended for the verification analyst but can also be reviewed by the bionalyst and Biometry manager.

1.2The process will define the methods for handling verification of SAS programs in Biometry and does not cover programs developed in other groups.

2RESPONSIBILITY

2.1It is the responsibility of verification analyst to perform the verification of SAS programs within Biometry according to these procedures.

2.2It is the responsibility of the bioanalyst to reconcile deviations as the result of the verification process.

2.3It is the responsibility of the biostatistician to deliver specifications to the SAS programs which affect the types of tests performed.

3DEFINITIONSaND TERMINOLOGY

3.1Software – This can apply both to larger systems like the SAS System or SAS macros or single use SAS programs.

3.2Coding – In the context of adverse and concomitant coding, this is the process of matching the verbatim term to the specified preferred term.

4REFERENCES AND RELATED SOPs

4.1SOP – Verification and Testing of SAS Programs

4.2SOP - SAS program life cycle

4.3WPG - Good Programming Practice / Programming Style

4.4WPG - Programming Specifications

4.5SOP - Risk Assessment

4.6SOP - Change Control

5PROCEDURE

5.1Once the risk assessment has been performed according to the risk assessment SOP, verification tasks are to be identified by the assigned risk. The risk is assigned as either high, medium or low. If the risk is high, all the tasks are performed. If the task is medium, this includes both medium and low risk tasks. If the task is low, only low risk tasks are performed.

5.2Tasks are also grouped by the type of output which the program produces. This includes: listings, tables, analysis files and graphs. The tasks are therefore grouped in these categories as well.

6Low Risk Tasks

6.1General

6.1.1Check program header for all required elements.

6.1.2Make sure that the .log file is current, i.e., the time stamp of the .log file should be after the time stamp of the .sas program. If not, ask the Bioanalyst to rerun the program.Make sure the time stamp of the output file is the same (approximately) as that of the log file.

6.1.3Review LOG files for unusual notes and warnings.Once the Bioanalyst confirms that any change has been made, repeat the steps above rerunning the verification program as the last step.

6.1.4Complete closeout reporting tasks.

6.2Listings

6.2.1If there are any data manipulations/calculations involved in creating a variable, then compare incoming and calculated records/values to check that they are done correctly.

6.2.2Print records for a subset of random subjects and compare against the production listing.

6.2.3Check that titles and footnotes match the specifications, are clear, and have no typos.

6.2.4Check that column/row headings are clear and free of typos. Check for adequate space between each heading so that wrapped headings are readable.

6.2.5Check to ensure that variables in proc report that are not using the FLOW option are not being truncated.

6.2.6Content: check to see that all non-housekeeping variables from the CRF are included in the listing.

6.2.7Check the last page and look for "odd" observations that may have sorted last.

6.2.8Review entire listing for anything out of the ordinary - e.g. empty column, sort order.

6.2.9If a unit is printed in the column heading, make sure the data have the same unit.

6.3Tables

6.3.1Check that titles and footnotes match the specifications, are clear, and have no typos.

6.3.2Check that column/row headings are clear and free of typos. Check for adequate space between each heading so that wrapped headings are readable.

6.3.3Ensure that decimal places line up. Check handling of missing data (should have label or be blank, not the SAS "." missing value indicator).

6.4Analysis Files

6.4.1Check printouts of a subset of random subjects of each incoming data set plus output data set(s) to make sure each set of input records is handled correctly and the matching output records are correct.

6.4.2For non-derived variables, use proc compare with appropriate ID variables to check the input vs. output data sets.

6.5Graphs

6.5.1Check that titles and footnotes match the specifications, are clear, and have no typos.

6.5.2If the graph has a legend, check that it is clear and free of typos.

7Medium risk Tasks

7.1General

7.1.1Check with the Bioanalyst about the status of data. If the data is nearly final, the verifier may want to note any data issue found during verification in the comments file.

7.1.2Obtain and review specifications and other functional requirements. Check with the Bioanalyst to find out about any particular challenges faced in writing the program and plan additional checks for the verification program.

7.2Listings

7.2.1Print contiguous blocks of observations from the beginning, middle, and end of the file (using sort order to match the listing) and compare against the production listing.

7.2.2Find the records with the widest and narrowest version of each field (longest/shortest for character field, largest/smallest number in numeric fields) and confirm that values fit in the allotted space.

7.3Tables

7.3.1If there are any data manipulations/calculations involved in creating a variable, then compare the incoming and the calculated records/values to check that they are done correctly.

7.3.2If percentages are calculated, verify that the denominator is correct (i.e., is it the total patient N for a particular treatment group, or is it a subset of that?), and that the percentages total 100% where expected within a subset.

7.4Analysis Files

7.4.1If possible, compare the final number of observations in the output data set with those of the control data set.

7.4.2Check the proc contents of the programmer's output data set(s) to be sure all variables in the specifications have been created, have adequate labels and appropriate formats/lengths assigned, no extra variables were created, and the data set is sorted by criteria in specifications.

7.4.3If the program also generates other output files (such as .csv files), check the contents of such files.

7.5Graphs

7.5.1If there are any data manipulations/calculations involved in creating a variable, then compare the incoming and the calculated records/values to check that they are done correctly.

7.5.2Use proc plot to generate a 'quick and dirty' graph of all data points. Check if there is any outlier missing from the production graph.

8High Risk Tasks

8.1General

8.1.1Check that program follows the departmental standards (adequate documentation, naming conventions) and review the program code for bad merge, dead code, subset conditions that never execute.

8.2Tables

8.2.1Write code to separately generate each result in the table (use proc freq, means, etc.). Exception: for large tables, it is acceptable to check the results for the first 2 pages and the last page. However, check with the Bioanalyst whether a 100% check of the results is necessary, especially if the tables are associated with the primary endpoint analyses.

8.2.2For change from baseline tables, make sure that the criteria are clearly defined - Should observations be kept only if there is a baseline and visit observation? Write code to verify that criteria are coded as defined.

8.3Analysis Files

8.3.1For derived variables, if adequate specifications are available, write code to duplicate the derivation (without looking at how the Bioanalyst implemented the derivation). Use proc compare with appropriate ID variables to check the input vs. output data sets. If specs for a given variable are inadequate, report this as a "problem", and go on to the next variable.

8.3.2For derived variables, check for unexpected results, out of range or missing values by using proc means to get the mean, min, and max of the numeric data and using proc freq to check discrete values of the categorical variables.

8.4Graphs

8.4.1Write code to print out a sample of the points to be plotted/charted. Check each point in the printout against the graph to be sure it is plotted correctly. Use a ruler if needed to line up points with axes.

Page 1 of 4

Confidential & Proprietary (Meta-Xceed, Inc.)