Chapter 2. DFdiscover Study Files

Table of Contents

2.1. Introduction
2.2. DFdiscover study directories
2.3. Study File Permissions
2.4. Format used to describe files
2.5. DFdiscover Retrieval Files (DRF)
2.6. The study data directory
2.6.1. Temporary data files
2.6.2. Plate data files
2.6.3. Query data files
2.6.4. Reason for change data files
2.6.5. Newly arrived data file
2.6.6. Journal files
2.6.7. Index files
2.7. The study ecsrc directory
2.8. The study lib directory
2.9. The study lut directory
2.10. The study work directory

2.1. Introduction

This chapter describes the files maintained under each DFdiscover study directory. It starts with a brief overview of the top-level directories and then describes the files kept under each directory in detail. A similar chapter, System Administrator Guide, DFdiscover System Files, describes the files located under a DFdiscover installation directory.

2.2. DFdiscover study directories

The following directories are part of a standard DFdiscover study definition.

  • bkgd This directory holds CRF background images created by DFsetup. Three files are created for each study plate. These include the plate background used by DFsetup (plt###), the data entry screen used by DFexplore (DFbkgd###), and a background used when printing CRFs containing database values from DFprintdb or DFexplore (DFbkgd###.png).

    [Note]Note

    This directory must not be used to store any other files. Extraneous files will be deleted when CRF images are published from a development study to its production study, or when reverting a development study to the current state of its production study.

  • data This directory holds the study data files, queries data file, and journal files. The following files are described in detail later in this chapter in The study data directory:

  • dfsas This directory contains any stored SAS® jobs that were created from DFexplore.

  • dfschema This directory contains any stored DFschema files which are used to track changes to the study setup. These are used by DFaudittrace to generate records for DF_ATmods.

  • drf This directory contains any .drf files (DFdiscover Retrieval Files) created by server-side tools, including reports and the program DFmkdrf.jnl. The common .drf files created by DFdiscover reports include:

    • DupKeys.drf Lists any duplicate primary keys found in the database by the last execution of DF_XXkeys.

    • VDillegal.drf Lists any illegal visit dates found in the database by the last execution of DF_XXkeys.

    • VDincon.drf Lists any inconsistent visit dates found in the database by the last execution of DF_XXkeys.

    • DFunexpected.drf Lists any unexpected data records found in the database by the last execution of DF_QCupdate.

  • ecbin Any study specific scripts or programs that are run by edit check function dfexecute() and any Plate Arrival Trigger scripts defined in the DFsetup Plates View, must be stored in the study level ecbin directory. Executables can also be stored in the DFdiscover level ecbin directory for use in all studies. The study level ecbin directory has priority if the same program or script is stored in both locations.

  • ecsrc This directory contains the edit check files: DFedits and any other edit check source files referenced in 'include' statements. Include files can also be stored in the DFdiscover level ecsrc directory. The study level ecsrc directory has priority if the same include file is stored in both locations.

  • lib All study configuration files, created through both the DFadmin and DFsetup tools, are located in this directory. The following files are described in detail later in this chapter in The study lib directory:

    • DFccycle_map - conditional cycle mapDefines cycles that may be required, unexpected or optional, depending on specified database conditions (optional).

    • DFcenters - sites database Study sites database includes information on all clinical sites participating in the study.

    • DFcplate_map - conditional plate mapDefines plates that may be required, unexpected or optional, depending on specified database conditions (optional).

    • DFcterm_map - conditional termination mapDefines database conditions that signal termination of subject follow-up (optional).

    • DFcvisit_map - conditional visit mapDefines visits that may be required, unexpected or optional, depending on specified database conditions (optional).

    • DFCRFType_map - CRF type mapDefines categories for different CRF background types (e.g. translations) (optional).

    • DFcrfbkgd_map - CRF background mapDefines visits with CRF backgrounds used across multiple visits (optional).

    • DFedits.bin - published edit checksThe "published" equivalent of the edit checks - for use by DFexplore clients only (optional).

    • DFfile_map - file mapSpecifies each unique CRF plate used in the study.

    • DFlut_map - lookup table mapDefines and associates lookup table names with directory names of lookup tables. Also includes definition for query lookup table, if it exists (optional).

    • DFmissing_map - missing value mapMissing value codes (and labels) used in the study (optional).

    • DFpage_map - page mapUsed to specify descriptive labels to replace the visit/sequence and plate numbers that are used by default to identify problems on the Query Reports (optional).

    • DFqcsort - Query and CRF sort orderSpecifies a sort order for queries as written on Query Reports. The default is to sort by field number within plate number within visit/sequence number within subject ID (optional).

    • .DFreports.dat - reports historyPersonal file of DFdiscover report commands (and options) corresponding to reports which the user runs in the reports tool (optional).

    • DFschema - database schemaStudy database schema (or dictionary) describes all variables on all plates, as specified in the setup tool.

    • DFschema.stl - database schema stylesStudy database schema (or dictionary) describes all variable styles defined for the study in the setup tool.

    • DFserver.cf - server configurationConfiguration file for the study database server.

    • DFsetup - study definitionThis is a JSON format file maintained and used by DFsetup to record all study setup information, including all plate, style and variable definitions.

    • DFsubjectalias_map - subject alias mapUsed to specify descriptive labels to optionally replace the numeric subject ID used as an identifier throughout DataFax.

    • DFsubjectalias_map.log - subject alias change logLog all changes to the mapping of subject ID to subject alias over the course of a study.

    • DFtips - ICR tipsThis file contains the coordinates, field type and legal values for all variables defined on all plates. It is used by the ICR software to create the initial data record from new CRF pages that arrive by fax.

    • DFvisit_map - visit mapThis file describes the scheduling of subject assessments during the trial and the CRF pages expected at each assessment.

    • DFwatermark - watermarkThis file describes watermarks used for printed output assigned by role.

    • QCcovers - Query cover pagesThis file contains formatting information to be included in a Query Report cover sheet. To include a cover sheet for a Query Report, QCcovers must first be defined.

    • QCmessages - Query Report messagesThis file contains messages to be included in Query Report cover sheets. More than one message may be included in a single Query Report, however, DF_QCreports expects the cover sheet information and all messages to fit on a single page.

    • QCtitles - Query Report titlesThis file describes how the report title and each title of the 3 sections of a DFdiscover Query Report are to be customized. DF_QCreports checks for the existence of this file and will use it if it exists, otherwise standard titles will be produced.

    • DFqcproblem_map - Query category code mapThis file contains all the system-defined and user-defined query category codes.

    • DFreportstyle - DFdiscover Report styling This file contains styling "instructions" for reports, excluding Legacy reports. Styling includes font choices and colors used in graphs and charts.

  • lut This directory contains all study specific lookup tables. Lookup tables can also be stored in directory lut at the DFdiscover level. Study level files have priority if a lookup table with the same file name is stored in both locations. Lookup table file names must be associated with an edit check name in DFlut_map (found in the study /lib directory) before they can be used in edit checks.

  • pages This directory holds all standard (SD) resolution (100 dpi) CRF image and supporting document files for all CRF pages received or uploaded during the study. Each CRF page received as a fax or PDF is stored as a PNG file (Sun Rasterfile in pre-2014 DFdiscover releases), and requires about 25K bytes of disk space (i.e. 40 CRF pages per MB). Supporting documents can be audio, video, DICOM or PDF files and will be in their native format.

    DFdiscover creates subdirectories, below the study pages directory, in which to store the CRF image files. These subdirectories are named by the year and week (in yyww format) in which the CRFs arrived. For example, a study which started on January 1, 1995 would have subdirectories named: 9501, 9502, 9503, etc. through to the end of the trial.

    Within each of the yyww subdirectories, the individual CRF page files are named by the concatenation of the sequence number of the fax (starting at 0001 each week) in which they arrived during that week, and their page number within the fax. The file-naming format is ffffppp. For example, if the first fax to arrive in the week of 9501 contained 3 pages, it would be represented by the following files beneath the study pages directory: 9501/0001001, 9501/0001002, and 9501/0001003. The ffff part of the file name is a sequential value constructed from 4 characters, each character taken from the alphabet:

    0 1 2 3 4 5 6 7 8 9 B C D F G H J K L M N P Q R S T V W Y Z

    This is essentially the digits 0 through 9 followed by the uppercase letters A through Z, with the exception of the letters A, E, I, O, U, and X. This part of the file name thus lies between 0001 and ZZZZ, which allows for a total of 30x30x30x30-1 = 809,999 faxes per week. Example file names within a week include:

    • 0001005 5th page of 1st fax

    • 000B001 1st page of 10th fax

    • 000Z011 11th page of 29th fax

    • 0010002 2nd page of 30th fax

    • 01C0004 4th page of 1230th fax

  • pages_hd This directory holds all higher (HD) resolution (300 dpi) CRF images and supporting document files received or uploaded during the study. DFdiscover creates subdirectories and stores the files in the same manner as the pages directory.

  • reports It is recommended that all study specific reports, i.e. those programs which have been created specifically for a particular clinical trial, are stored in the study reports directory. This helps to standardize maintenance across studies.

    Documentation for study specific reports must also be stored in this directory in a file named .info, which uses the same format used to document the standard DFdiscover reports. The specific requirements of this file and its format are described in Writing Documentation for Study Specific Reports.

  • reports/QC This directory is used to store the standard DFdiscover Query Reports, created by DF_QCreports. The files and directories maintained under this directory are briefly described below.

    ccc-yymmdd

    The naming convention for Query Reports is a zero padded 3 digit site ID (if the site ID is greater than 999, it will be a 4 digit number), followed by a dash, and then the date on which the report was created. For example: 055-150815 would identify a Query Report created for site 55 on Aug 15, 2015. Thus you can tell from a Query Report name, both whom it was created for and when.

    Although this is helpful it does have one disadvantage, namely, it means that you cannot create more than one Query Report per day for an individual clinical site. If you do, the earlier one will be over-written. However, since Query Reports are sent to the clinical sites, and this isn't something you should do more than about once a week, and certainly not more than once a day, this approach to naming Query Reports works.

    Query Reports remain under QC until they are sent to the clinical sites. Thus any reports that you see at this level have not been transmitted to the study clinics.

    QC/sent

    Query Reports are moved to this directory after they have been successfully sent to their respective clinical sites.

    QC/internal

    DF_QCreports is also able to create named, internal Query Reports, which can include subjects from more than one site. These reports are written directly to this directory.

    QC_LOG

    This is a plain ASCII file that lists any error messages reported during the last execution of DF_QCreports.

    QC_NEW

    This is a plain ASCII file that lists the Query Reports created by the most recent execution of DF_QCreports.

    SENDFAX.log

    This is a plain ASCII file in which DF_QCfax records the success or failure of its attempts to fax Query Reports to the clinical sites.

    SENDFAX.qup

    This is a plain ASCII file that lists all Query Reports which have been queued up for transmission to the clinical sites.

    other files

    Occasionally, DF_QCreports might be halted in mid-execution, by a power failure, or some other problem. In such cases it may not have time to remove the temporary files that it creates in the process of generating the Query Reports. These files generally contain a process ID#; for example you might see files that look like this 18273_N.refax, 18273_N.qalist. These temporary files can, and should, be removed.

  • work The work directory contains temporary files, DFdiscover retrieval files and summary data files. It is important to be aware of the files that DFdiscover creates and maintains in this directory so that programmers do not inadvertently overwrite them.

    • Temporary Files.  The work directory is used for temporary files created by various reports and is the recommended location for temporary files created by study specific reports and for data files exported using DFexport.rpc. If DFexport.rpc is used to export study data files to this directory, or create temporary files here in the process of generating study specific reports, you need to be very careful in your selection of temporary file names, so that simultaneous execution of different programs does not result in temporary file name conflicts. A useful strategy is to include the process ID plus some part of the program name in all temporary file names, and also to check for and create a lock directory for any programs that should not be executed simultaneously by more than one user.

      Because the work directory is used for temporary file creation by various DFdiscover programs, you might find temporary files that were not removed because a program failed to complete due to a power failure or some other problem. Any file that is several days old, and has what looks like a process id number as part of it's name, is probably a temporary file left over when a program failed to complete successfully. Such files can be removed. This should be done periodically to clean up the study work directory.

    • Summary Files.  The work directory contains a number of summary data files created by DF_XXkeys and DF_QCupdate and used by other programs including DF_QCreports and DF_PTvisits. The following files are described in detail later in this chapter in The study work directory:

2.3. Study File Permissions

The data, pages, and pages_hd directories must be owned by user datafax, with read, write and execute permissions for owner, and read and execute permissions for group.

The bkgd, dde, frame, lib, reports, and work directories must have read, write and execute permissions set for all users of the study group (typically this will be UNIX group studies).

These permissions are set by DFadmin on those directories which it creates when the study is first registered. The utility program DFstudyPerms is available for diagnosing and correcting study permission problems. A detailed list of study files and directories checked by this program can be found at System Administrator Guide, Maintaining study filesystem permissions

2.4. Format used to describe files

Each file documented in this section is described with the following attributes:

Table 2.1. File attributes

HeadingDescription
Usual Namethe file name that is usually given to files having this format. Some files are kept at the DFdiscover directory level while others are kept separately with each study directory.
Type one of: "clear text" or "binary". Clear text files can be reviewed with any text editor.
Created By the name of the DFdiscover program(s) that create and modify this file. If you need to edit the contents of the file, use the program listed here.
Used By the name of the DFdiscover program(s) that reference or read this file.
Field Delimiter how fields within a record are delimited. Typically, the delimiter is a single character.
Record Delimiter how records within the file are delimited. Typically, the delimiter is a single character.
Comment Delimiter how comments within the file are delimited. If comments are not permitted within the file, "NA" is indicated.
Fields/Record the expected number of fields per record. If the number of fields varies across records, the minimum number is given, followed by a +.
Description a detailed description of the meaning of each field.
Example one or more example records from the file.


2.5. DFdiscover Retrieval Files (DRF)

A DFdiscover Retrieval File (DRF) is an ASCII file in which each record identifies the subject ID, visit or sequence number and CRF plate number (in that order, | delimited) and optionally the image ID corresponding to a record in the study database.

DFdiscover retrieval files are created by DFexplore, DFdiscover reports, and the DFdiscover programs DFmkdrf.jnl and DFexport.rpc.

DFdiscover retrieval files created by DFexplore and DFdiscover reports and programs reside in the study drf directory. It is also recommended that DRFs created using DFexport.rpc also be saved to the study drf directory. All DRFs must end with the .drf extension. Exercise caution when selecting DRF names to avoid conflicts with those DRF file names generated by DFdiscover applications. Below is a description of the DRF file format.

Table 2.2. Data Retrieval Files (DRF)

Usual Namefilename.drf
Typeclear text
Created ByDFexport.rpc, DFmkdrf.jnl, DFexplore
Used ByDFexplore
Field Delimiter|
Record Delimiter\n
Comment Delimiter#
Fields/Record3+
Description

Data records have the common fields and characteristics defined in Table 2.3, “DFdiscover Retrieval File field descriptions”.

Example

This is an example of a DRF listing all primary records having one or more queries attached to them. The DRF filename ext_qcs.150813.drf was created on August 13, 2015 and has the description external qc notes.150813.

99001|1|2
99001|1011|9
99002|1|2
99002|22|5
99002|1011|9
99004|1|2


Table 2.3. DFdiscover Retrieval File field descriptions

Field #ContainsDescription
1subject/case IDthis is a number in the range of 0-281474976710655 used to uniquely identify each subject/case in the study database
2visit/sequence numbera number in the range of 0-21460, that uniquely identifies each occurrence of a visit number for a subject ID
3plate numbera number in the range of 1-501 that uniquely identifies the plate to be included in the DRF.
4image identifierthe value in this optional field is the unique identifier of the CRF image identified by the keys in the first 3 fields. This field is used to identify a specific instance of a CRF when there are one or more secondaries having the same key fields.
5optional textthis field can be used to provide a short descriptive message to DFexplore users. The text is displayed in the message window at the bottom of DFexplore when the data record is selected in the DFexplore record list.

2.6.  The study data directory

The study data directory holds all study data files, including the plate files that correspond to CRF plates, the query data file and the database transaction journals. These files are managed by the study database server and should not be accessed directly. Instead the records required should be exported from the study database to another file, as described in DFexport.rpc, and then read from the exported file.

Data records should never be added to these database files without doing so through the study database server. The program DFimport.rpc is available and is the recommended method of sending new or revised data records to the study database server.

Occasionally you may need to make extensive changes to an entire database file. The typical scenario is a change to one or more of the study CRFs to add or remove fields. In this case the plate definitions originally entered in the setup tool also need to be changed to match the new structure of the corresponding data files. This is a major operation. It requires that the study server be disabled while the database and setup definitions are being changed, and that the effected data files be re-indexed before the study database server is re-enabled.

2.6.1. Temporary data files

The following sections describe data and index files ending with .dat and .idx suffixes. Very rarely, you may notice files having the same name but with .tad or .xdi suffixes. These files are temporary files created and managed by the database server. They are present while the server performs sorting and garbage collection on a particular data file. As such they should be treated in the same manner as the other data and index files - basically, do not touch them. Typically, this is not a problem because the files are present for only a second or two.

2.6.2. Plate data files

Table 2.4. plt###.dat - per plate data files

Usual Nameplt###.dat
Typeclear text
Created ByDFserver.rpc
Used ByDFserver.rpc
Field Delimiter|
Record Delimiter\n
Comment DelimiterNA
Fields/Record9+
Description

After first validation, new records are moved from to the study database files, plt###.dat. There is a separate data file for each unique CRF plate number defined for the study. For plate N, the data file is named pltN.dat, where N is leading zero-padded to 3 digits in length. Each record in one of these data files corresponds to the data entered from one CRF page with that plate number. Thus, each data file holds the data recorded for all instances of that CRF page (i.e., across all subjects and all visits).

All database records are stored in free-field format with a | delimiter and \n delimiter. All database records have 3 CRF information fields followed by 4 key fields. Within all database files for each study, the study number key should always be the same; and within each plt###.dat data file, the plate number key should always be the same.

[Warning]Do not edit data files

Data files must not be edited by conventional means. Doing so will surely corrupt the database. Each data file has a corresponding binary index file that encodes the information of the data file. Editing any data file will change the contents so that they are inconsistent with the index file.

Another reason not to read or edit the data files explicitly is that each record may appear in the database more than once. This arises because each time a record is modified, the new version is appended to the end of the database file. Only the index file knows which version of the record is the most recent. There is no indication in the data record. DFexport.rpc should always be used to read data files because it consults the index files to identify the correct version of each record to be exported. Old versions of modified records are removed by the study database server the next time the database is resorted.

Data records have the common fields and characteristics described in Table 2.5, “plt###.dat field descriptions”.

Example

Here is an example of a plate 4 data record after level 1 validation to database file plt004.dat

1|1|9145/0045001|099|4|1|0123|egb|92/01/01|high blood pressure|
Dr. Smith|92/01/10 10:23:23|92/01/10 10:23:23|

The text fields have been entered and record status has been set to final.


Table 2.5. plt###.dat field descriptions

Field #ContainsDescription
1 (DFSTATUS)record statusEnumerated value from the list 1=final, 2=incomplete, 3=pending, 4=FINAL, 5=INCOMPLETE, 6=PENDING, 0=missed
2 (DFVALID)validation levelEnumerated value from the list 1, 2, 3, 4, 5, 6, 7
3 (DFRASTER)raster name the fax image id from which this data record was derived, if there was a fax image. The image id is always in the format YYWW/FFFFPPP or YYWWRFFFFPPP, where YY is the year (minus the century) in which the image id was created, WW is the week of the year, FFFF is a sequential base 30 value, in the range 0001-ZZZZ, representing the fax arrival order within the week, and PPP is the page number within the fax (also see pages). If the image id contains a slash (/) in the 5th character position, then the image id is for a fax. Pre-pending this image id with the value of the PAGE_DIR variable for the study creates a unique pathname to the file containing the fax image. If the image id contains R in the 5th character position, then the image id is for a raw data entered record, and in fact there is no image.
4 (DFSTUDY)study numberthe DFdiscover study number (must be constant across all records for the same study). Legal limit is 1-999.
5 (DFPLATE)plate numberthe plate number as identified in the barcode of the CRF. Within each data file, this field has a constant value. Legal limit is 1-501.
6 (DFSEQ[a])visit/seq numberthe visit or sequence number of this occurrence of a plate for a subjects id. Legal limit is 0-511 if defined in the barcode, and 0-65535 if defined as the first data field on the page.
7subject IDthe subject identifier. Legal limit is 0-281474976710655. subject identifiers are composed of site # + subject ID. This limit applies to the concatenated value of the two, where the site # legal limit is 0-21460.
8 to N-3datadata fields from the corresponding CRF page
N-2 (DFSCREEN)record statusEnumerated value from the list 1=final, 2=incomplete, 3=pending. This record status mimics the status recorded in the first field except that there is no distinction between primary and secondary.
N-1 (DFCREATE)creation datethe creation date and time stamp in the format yy/mm/dd hh:mm:ss. The creation date and time stamp are added to the record the first time it is validated to a level higher than 0. It is never modified after initial addition to the record.
N (DFMODIFY)last modification datethe last modification date and time stamp in the format yy/mm/dd hh:mm:ss The initial value for this field is the same as the creation date. Each time any data within the record is modified, the modification stamp is updated. It is not updated if only the record's validation level has changed.

[a] Field 6 has this name only if the field is defined to be in the barcode; otherwise, the name is user-defined.


Table 2.6.  plt###.dat - missed records

Usual Nameplt###.dat
Typeclear text
Created ByDFserver.rpc
Used ByDFserver.rpc
Field Delimiter|
Record Delimiter\n
Comment DelimiterNA
Fields/Record11
Description

If a CRF is reported missing, and is not expected to ever arrive (e.g. because the subject missed a visit, or refused a test), it can be registered in the study database using DFexplore. These records have a status of lost and are added to the study database file with the same plate number, plt###.dat, similar to actual data records. The contents of the record fields are described in Table 2.7, “Missed record field descriptions”.

Example

Here is an example of a missed data record

0|7|000/0000000|099|4|1|0123|1|subject was on vacation|92/01/10 10:23:23|92/01/10 10:23:23|


Table 2.7. Missed record field descriptions

Field #ContainsDescription
1 (DFSTATUS)record statusEnumerated value - always contains a 0 for missed records, which is equivalent to the record status lost
2 (DFVALID)validation levelEnumerated value from the list 1, 2, 3, 4, 5, 6, 7
3 (DFRASTER)image namealways contains 0000/0000000 for missed records. This is simply a placeholder value as there is no CRF image.
4 (DFSTUDY)study numberthe DFdiscover study number (must be constant across all records for the same study)
5 (DFPLATE)plate numberthe plate number
6visit/seq numberthe visit or sequence number
7subject IDthe subject identifier
8reason codeEnumerated value - the reason that the CRF was missed, selected from the following list: 1=Subject missed visit, 2=Exam or test not performed, 3=Data not available, 4=Subject refused to continue, 5=Subject moved away, 6=Subject lost to follow-up, 7=Subject died, 8=Terminated - study illness, 9=Terminated - other illness, 10=Other reason
9reason textan additional, optional explanation as to why the CRF was missed
10 (DFCREATE)creation datethe creation date and time stamp in the format yy/mm/dd hh:mm:ss
11 (DFMODIFY)last modification datethe last modification date and time stamp will always be the same as the creation date and time stamp as missed records are never modified once created (changes, if necessary, are made by deleting the existing missed record and creating another one)

2.6.3. Query data files

Table 2.8. DFqc.dat - the Query database

Usual NameDFqc.dat
Typeclear text
Created By 
Used ByDFserver.rpc, DFexplore, DFbatch, DF_CTqcs, DF_ICqcs, DF_ICrecords, DF_PTcrfs, DF_PTqcs, DF_QCreports, DF_QCsent, DF_QCstatus, DF_QCupdate
Field Delimiter|
Record Delimiter\n
Comment DelimiterNA
Fields/Record22
Description

The query data file, DFqc.dat, is maintained by the study server in the same manner as the CRF data files, DFin.dat and plt*.dat. All query records have exactly the same format, across all DFdiscover studies. Each query record has 22 fields, of which 5 (fields 4-8) are the keys needed to uniquely identify each record. Multiple queries are permitted per field provided their category codes are unique.

As for study data files, you should always use DFexport.rpc to export the query database before using it. For this purpose, DFqc.dat has been assigned a DFdiscover reserved plate number of 511.

Table 2.9, “DFqc.dat field descriptions” describes each field in a query record.

Example

An example of a newly added query that is to be included in the next Query Report sent to the originating site (the line break is for presentation purposes only):

1|1|0000/0000000|20|10|999|2100101|6|21|000000|0||1. Sample collection date
|11/10/05|1|2|||user1 06/05/27 11:35:57|user1 06/05/27 11:35:57||1|

An example of a query that was sent out in a Query Report and has now been resolved:

5|4|0000/0000000|20|397|2030|1415412|11|14|060424|31|1|A2. Whole Blood 1ml ID #
||1|2|||brian 06/03/23 12:57:20|brian 06/03/23 12:57:20|barry 06/05/11 14:10:04|1|


Table 2.9. DFqc.dat field descriptions

Field #ContainsDescription
1 (DFSTATUS)record statuscurrent status of the query. Legal values are: 0=pending (review), 1=new, 2=in unsent report, 3=resolved NA, 4=resolved irrelevant, 5=resolved corrected, 6=in sent report, 7=pending delete
2 (DFVALID)validation levelvalidation level at which the query was created or last modified. The query validation level matches the level of the data record upon export only when the DFexport.rpc -m option is used.
3 (DFRASTER)raster namemust contain "0000/0000000". Any references to actual raster names will result in the deletion of those rasters if the referencing query is deleted.
4 (DFSTUDY)study numberthe DFdiscover study number. Again, this number is constant across all records for one study.
5 (DFPLATE)plate numberthe plate number of the record that this query is attached to
6 (DFSEQ)visit/seq numberthe visit or sequence number of the record that this query is attached to
7 (DFPID)subject IDthe subject identification number
8 (DFQCFLD)query field numberthe data entry field to which this query is attached
[Warning]Query Field Number = Database Field Number - 3

For historical reasons this number is 3 less than the database field number. For example, a query on the ID field, which is always database field 7, will have a query field number of 4.

9 (DFQCCTR)site IDthe site ID that the query was sent to or will be sent to. This is determined when the query is created. Also, it is checked, and updated if necessary to account for a subject move, each time DF_QCupdate is executed.
10 (DFQCRPT)report numberthe Query Report that the query was written to. The Query Report number is always in the format yymmdd, for the year, month, and day the report was created. If the query has not yet been written to a report, the value is 0.
11 (DFQCPAGE)page numberthe page number of the Query Report, on which the query appears, or 0 if it has not yet been written to a report.
12 (DFQCREPLY)reply to querythe reply entered by an DFexplore user in the format name yy/mm/dd hh:mm:ss reply The maximum length of this field is 500 characters. It is blank when a new query is created, or when an old query is reset to new. This field cannot be created or edited in DFexplore by users who do not have adequate permissions. When a new reply is entered, the query status is changed to pending.
13 (DFQCNAME)namea description of the data field that is referenced by this query. Although this field can be edited when the quality control report is being added, its default value is taken from the "Description" part of the variable definition entered in the Setup tool. The maximum length of this field is 150 characters, but only the first 30 appear on quality control reports.
14 (DFQCVAL)valuethe value held in the data field when the query was added. If the query is subsequently edited and the value of the data field has changed, this field is updated with the new value. The maximum length of this field is 150 characters. For overdue visit queries, this field contains a julian representation of the date on which the visit was due (expressed as the number of days since Jan 1,1900).
15 (DFQCPROB)category codethe numeric category code. Legal values are: 1=missing value, 2=illegal value, 3=inconsistent value, 4=illegible value, 5=fax noise, 6=other problem, 21=missing plate, 22=overdue visit, 23=EC missing plate, 30-99=user-defined category code.
16 (DFQCRFAX)refax coderefax request code. Should the CRF page, which this query references, be re-sent? Legal values are: 1=no (clarification query type), 2=yes (correction query type).
17 (DFQCQRY)queryany additional text needed to clarify the query to the investigator who will receive the Query Reports. The maximum length of this field is 500 characters. Note: the category code label from field 15 is included automatically and is often all that is needed.
18 (DFQCNOTE)noteany additional text needed to describe the problem when it is resolved. The maximum length is 500 characters.
19 (DFQCCRT)creation datethe creator, creation date and time stamp of the query in the format name yy/mm/dd hh:mm:ss The creation date and time stamp are added when the query is first created.
20 (DFQCMDFY)last modification datethe modifier, last modification date and time stamp in the format name yy/mm/dd hh:mm:ss The initial value for this field is the same as the creation date. Each time the query is modified, the modification stamp is updated.
21 (DFQCRSLV)resolution datethe resolver, resolution date and time stamp in the format name yy/mm/dd hh:mm:ss Until the query is resolved, this field is blank
22 (DFQCUSE)usage codeLegal values are: 1=send to site (these queries are formatted into a Query Report and sent to the appropriate study site), 2=internal use only (these queries do not appear in site Query Reports).

2.6.4. Reason for change data files

Table 2.10. DFreason.dat - reason for change records

Usual NameDFreason.dat
Typeclear text
Created ByDFserver.rpc
Used ByDFserver.rpc
Field Delimiter|
Record Delimiter\n
Comment DelimiterNA
Fields/Record12
Description

Data fields may require that a change to the value in the field be supported by a reason for the change. This reason information is recorded in . The contents of the record fields are described in Table 2.11, “Reason for data change record field descriptions”.

Example

Here is an example of a reason data record

1|3|000/0000000|254|4|1|0123|9|phone|information provided by physician over the phone|nathan 03/01/10 10:23:23|nathan 03/01/10 10:23:23

It indicates that field 9 was changed because of the reason "information provided by physician over the phone".


Table 2.11. Reason for data change record field descriptions

Field #ContainsDescription
1 (DFSTATUS)record statusvalid status codes include: 1=approved, 2=rejected, 3=pending
2 (DFVALID)validation levelEnumerated value from the list 1, 2, 3, 4, 5, 6, 7. This is the record's last validation level when the reason was created or modified.
3 (DFRASTER)image namealways contains 0000/0000000 for reason for data change records. This is simply a placeholder value as there is no CRF image.
4 (DFSTUDY)study numberthe DFdiscover study number (must be constant across all records for the same study)
5 (DFPLATE)plate numberthe plate number
6 (DFSEQ)visit/seq numberthe visit or sequence number
7 (DFPID)subject IDthe subject identifier
8 (DFRSNFLD)reason field numberthe data entry field number this reason note refers to. This numbering does not correspond directly to the DFdiscover schema numbering, but instead is offset by 3, so for example, the ID field which is always database field number 7 will always report the reason field number as 4. This is identical to the behavior of the field number reported in queries.
9 (DFRSNCDE)reason codean optional coding of the reason for data change. Although this code field contains textual data, it should be possible to use it as a categorical variable. The code will typically come from the first field of the REASON lookup table, if it is defined.
10 (DFRSNTXT)reason textrequired text that provides the reason for the data change. The maximum length of this field is 500 characters.
11 (DFRSNCRT)creation datethe creator, creation date and time stamp in the format name yy/mm/dd hh:mm:ss. This field is completed when the reason for data change is first created.
12 (DFRSNMDF)last modification datethe modifier, last modification date and time stamp in the format name yy/mm/dd hh:mm:ss. The initial value for this field is the same as the creation date. Each time the reason note is modified, the modification stamp is updated.

2.6.5. Newly arrived data file

Table 2.12. DFin.dat - the new records database

Usual NameDFin.dat
Typeclear text
Created ByDFserver.rpc
Used ByDFserver.rpc
Field Delimiter|
Record Delimiter\n
Comment DelimiterNA
Fields/Record5+
Description

Each initial data record, created by the ICR software when it scans a CRF page, is passed to the study database server which appends it to this file. These are called "new records".

All new records have the common fields and attributes identified in Table 2.13, “DFin.dat field descriptions”.

The first 5 fields are added by the process that ICRed the page. The 4th and 5th fields were read from the barcode at the top of each CRF page. Dependant upon the success of the ICR algorithm, subsequent fields in each new record may or may not be filled in. If a fax image is particularly difficult to read, it is possible that only the first five fields will appear in the new record.

The first three fields, in addition to being delimited, are also in fixed column positions. The record status begins in the first column and is one column wide. The validation level begins in the third column and is one column wide. The raster name begins in the fifth column and is 12 columns wide. Columns two and four contain the field delimiter.

Example

Here is an example of a new data record from

0|0|9145/0045001|099|4|1|0123||92/01/01|||

This record has new record status, has not yet been validated, contains the data from fax image $(PAGE_DIR)/9145/0045001, and belongs to study 99, plate 4, visit 1, and subject ID 123.


Table 2.13. DFin.dat field descriptions

FieldContainsDescription
1 (DFSTATUS)record statusEnumerated value - always contains a 0 for new records, which is equivalent to the record status new
2 (DFVALID)validation levelEnumerated value - always contains a 0 for new records, which indicates that the record has only been validated by the ICR software
3 (DFRASTER)image namethe fax image from which this data record was derived. The value for this field will always be in the format yyww/ffffppp. Prepending this name with the value of the PAGE_DIR variable for the study creates a unique pathname to the file containing the fax image
4 (DFSTUDY)study numberthe DFdiscover study number (must be constant across all records for the same study)
5 (DFPLATE)plate numberthe plate number as identified in the barcode of the CRF

2.6.6. Journal files

Table 2.14. YYMM.jnl - monthly database journal files

Usual NameYYMM.jnl
Typeclear text
Created ByDFserver.rpc
Used ByDF_ATfaxes, DF_ATmods, DF_WFcrfs, DF_WFqcs
Field Delimiter|
Record Delimiter\n
Comment DelimiterNA
Fields/Record11+
Description

The study database server adds a record to the current study database journal file, each time that a data record is written to the study database, including when:

  • a new record arrives in the study database from the incoming daemon

  • an existing record is modified in DFexplore

  • the validation level of an existing record is modified in DFexplore

  • the status of an existing record is modified in DFexplore

  • an existing record is deleted in DFexplore

  • a query is added, modified, resolved, or deleted in DFexplore

  • a record is imported into the study database using DFimport.rpc

  • the database is structured by DFsetup

Separate journal files are kept for each study, and within a study, a new journal file is created for each month. The naming scheme for journal files is YYMM.jnl where YY is the last two digits of the year (e.g. 92) and MM is the two digit month of the year, January being 01 and December being 12.

The fields within each journal record are defined as described in Table 2.15, “YYMM.jnl field descriptions”.

Example Following is an example of a complete journal record. The line breaks are for presentation purposes only.
980312|132426|valid1|d|1|1|9807/0047008|254|5|24|99001|ABC|06/07/97|
171|097|172|096|2|055.1|121.5|2||1143|00|*|*|*|1|1|*|1|1|
98/03/12 13:24:26|98/03/12 13:24:26|

Table 2.15. YYMM.jnl field descriptions

Field #ContainsDescription
1date stampA date stamp, in YYMMDD format, identifying when the data record was written to the database
2time stampa time stamp, in HHMMSS format, identifying when the data record was written to the database. Hours are reported in 24-hour notation.
3usernamethe username of the person who wrote the record to the database. This is the login name of the user who modified the record.
4record typeEnumerated value - indicates the type of the journal record. Possible values are: d for data record, q for query record, r for reason record, s for the beginning of a setup restructuring, and S for the end of a setup restructuring.
5-11record keysfields 5 through 11 contain the first 7 fields from the data record.
12+record data fieldsthe remaining data fields (8 to the end of the record) follow.

2.6.7. Index files

Table 2.16. plt###.ndx - per plate index files

Usual Nameplt###.ndx
Typebinary
Created ByDFserver.rpc
Used By, DFshowIdx
Field DelimiterNA
Record DelimiterNA
Comment DelimiterNA
Fields/RecordNA
Description

Every study data file has a corresponding index file that the study server uses to track the current status and location of each record in the data file. The index entry for a particular data record includes the value of the key fields id, plate, and visit/sequence number, the record status, the validation level, the offset of the beginning of the record into the data file, and the length of the data record. When searching for a data record by keys, it is much more efficient for the database server to search the index file for matching keys and then use the offset and length to extract the data record from the data file.

Each time an existing data record is modified or a new record is added, a new entry is made at the end of the index file for the new, modified copy of that record, and the status of the old index entry (if there was one) is changed to indicate that it has been superseded by a new entry.

Index and data files are sorted (on id and visit/sequence number) by the study database server, each time the server exits. Before sorting, an index file has M sorted entries at the top of the file, and N unsorted entries at the bottom of the file. When searching, the unsorted index entries are searched first in a linear fashion and then, if necessary, a binary search is performed on the sorted entries.

The first 32 bytes of an index file are header information, consisting of four 4-byte numbers that identify attributes of the file as a whole, as described in Table 2.17, “plt###.ndx header bits”, followed by 16 bytes of padding. Before the study database server exits, it checks this header information of each index file. If the number of unsorted entries and the number of pending deletes are both 0, then the file is already sorted and does not need further attention.

The 32 bytes of header information are followed by the actual index entries. Each index entry is 32 bytes in size and is described in Table 2.18, “plt###.ndx record bits”.

Each index entry contains 8 bytes for the subject ID, 2 bytes for the visit number, 2 bytes for the plate number, 4 bytes for the offset into the data file, 2 bytes for the record length, a status byte and 13 bytes of padding.

The status byte encodes three pieces of information: the record status (equivalent to the numeric value of the first byte of the data record), the record validation level (equivalent to the numeric value of the third byte of the data record), and the status of the index entry. This is encoded as illustrated in Figure 2.1, “Encoding for bits within the status byte”.

Figure 2.1. Encoding for bits within the status byte

Encoding for bits within the status byte

The record status contains the same values as those allowed in the record status field of the data record, namely 0 through 7 (binary 111). Similarly, the validation level will take on the same values as those allowed in the validation level of the data record, again 0 through 7. The index status contains the value 2 if this is a new index entry, 1 if the index entry has been superseded by a newer one, and 0 otherwise.

The size of all index files should always be a multiple of 32 bytes.


Table 2.17. plt###.ndx header bits

First ByteLast ByteContains
14magic number indicating that this is an index file. Should always have the fixed value 0xdf6464df.
58the number of sorted index entries
912the number of unsorted index entries
1316the number of pending deletions
1732reserved for future use

Table 2.18. plt###.ndx record bits

SizeContains
8 bytessubject ID
2 bytesvisit/sequence number
2 bytesplate number
4 bytesoffset in bytes from beginning of data file to first byte of record (0 based)
2 byteslength of record in bytes
1 bytestatus bits
13 bytesreserved for future use

2.7.  The study ecsrc directory

This directory contains the edit check source files.

Table 2.19. DFedits - edit checks

Usual NameDFedits
Typeclear text
Created ByDFsetup
Used ByDFexplore
Field DelimiterNA
Record DelimiterNA
Comment Delimiter#
Fields/RecordNA
Description

This file contains the edit checks that are defined for this study. The edit check language is fully described in Edit checks.

Example
edit SetInit()
{
    if ( dfblank( init ) && !dfblank( init[,0,1] ) )
        init = init[,0,1];
}
edit AgeOk()
{
    number      age;
    if ( !dfblank( p001v03 ) && !dfblank( p001v04 ) )
    {
        age = ( p001v03 - p001v04 ) / 365.25;
...

2.8.  The study lib directory

This directory contains the study configuration files, those files that make this study unique from every other DFdiscover study.

Table 2.20. DFcenters - sites database

Usual NameDFcenters
Typeclear text
Created ByDFsetup
Used Byall study tools and the standard reports including: DF_CTqcs, DF_CTvisits, DF_PTcrfs, DF_QCfax, DF_QCfaxlog, DF_QCreports, DF_QCupdate, DF_SScenters, DF_XXtime, and DF_qcsbyfield
Field Delimiter|
Record Delimiter\n
Comment DelimiterNA
Fields/Record11+
Description

Each DFdiscover study has a sites database that records where each participating site is located, who the contact person is, and what subject ID number ranges are covered by each site ID.

Each site typically corresponds to a different clinical site, but this is not required. If necessary, a single clinical site may be defined as 2 or more sites, each corresponding to a different participating clinical investigator at that site. The sites database consists of one record per site ID. The field definitions are described in Table 2.21, “Field definitions for DFcenters.

Each site ID must be a number in the range 0 to 21460 and uniquely identifies the site within the database. All site numbers printed on DFdiscover reports are leading zero-padded to 3 digits but they may be up to 5 digits in length if the site number is greater than 999. The contact person is required as it is the person that outgoing faxes for the site are addressed to. A primary fax is not required and may be left blank for sites that are not meant to receive Query Reports. The primary fax number, if specified, should exactly match the number, including long distance, country, and area codes, that would be dialed from a numeric keypad. Most punctuation characters are ignored so they can be used for improving readability. Valid punctuation characters include: +#*-,()0-9 For example, 1-(416)521-9800 is equivalent to 14165219800.

[Warning]Whitespace characters

Whitespace characters (space and tab) may not be used as punctuation as they are interpreted as delimiters between multiple entries.

Each comma inserts a one-second pause in the dialing sequence. This can be helpful when leaving a local PBX or waiting to dial an extension.

A valid email address may also be supplied in place of or together with a primary fax number. The email address must be specified using the notation mailto:email_address. The prefix mailto: is fixed and required while email_address must be a valid email address (there is no validity checking performed on email addresses, so be careful to enter them correctly).

If more than one email and/or fax number is specified, each must be separated by a single space. Comma separators are not permitted.

Subject ID ranges are specified in fields 11 through the end of the record. There is no limit to the number of range fields that can be given. Each range field contains a minimum subject ID and maximum subject ID separated by exactly one space character. For example,

|101 199|

indicates that subject IDs 101 through 199 inclusive are to be included for the site. Individual subject IDs that are disjoint from any range are indicated by setting both the minimum and maximum ids to the actual subject ID. For example,

|244 244|301 399|401 420|

includes subject IDs 244, 301 through 399 inclusive, and 401 through 420 inclusive.

In the event that subject IDs are incorrectly entered in data records, there should always be a 'catch-all' site listed that receives all subject IDs that do not fall into any of the other subject ID ranges. This site is indicated by the phrase ERROR MONITOR in the 11th field and no other subject ID range fields.

[Note]Note

DFcenters may be modified at any time, via DFsetup only, for an active study. However, if quality control reports are being created for the study, the DFdiscover report DF_QCupdate must always be run after DFcenters modification and prior to Query Report creation. DF_QCupdate ensures that the most up-to-date DFcenters file will be used when generating subject status and scheduling information for the Query Reports.

Example A single sites database record for a site that is responsible for subject IDs 1101 through 1149, and 1151 through 1199 inclusive.
011|Lisa Ondrejcek|DF/Net Research, Inc|140 Lakeside Avenue, Suite 310, Seattle, Washington, 98122|1-206-322-5932|country:USA;enroll:100|1-206-322-5931|Lisa Ondrejcek|1-206-322-5931||1101 1149|1151 1199

Table 2.21. Field definitions for DFcenters

Field #DescriptionRequiredMaximum Size
1site IDyes5 digits
2Contactyes30 characters
3Nameyes40 characters
4Addressno80 characters
5Faxno4096 characters
6Attributes including Start Date, End Date, Enroll Target, Protocol Effective Date (x5), Protocol Version (x5)

This field contains zero of more semi-colon ( : ) delimited pairs, where each pair is a keyword and value where the keyword is from the list country, beginDate, endDate, enroll, protocol1, protocol1Date, protocol2, protocol2Date, protocol3, protocol3Date, protocol4, protocol4Date, protocol5, protocol5Date, testSite.

no4096 characters
7Telephone (site)no30 characters
8Investigatorno30 characters
9Telephone (investigator)no30 characters
10Reply to email addressno80 characters
11+Subject ID rangesyes30 digits,1 space

Table 2.22. DFccycle_map - conditional cycle map

Usual NameDFccycle_map
Typeclear text
Created ByDFsetup
Used ByDF_QCupdate
Field Delimiter|
Record Delimiter\n
Comment Delimiter#
Fields/Record2+
Description

This table describes the conditional cycle map file structure and provides an example. It does not describe all of the syntax and rules related to this feature. Usage instructions for all 4 conditional maps is fully described in Study Setup User Guide, Conditional Maps.

The file contains one or more specifications, each consisting of a condition definition followed by one or more actions to be applied if the condition is met. Entries in the file have the general appearance of:

IF|Visit List|Plate|Field|Value
AND|Visit List|Plate|Field|Value
[+-~]|List of conditional cycles

Each condition may be followed by one or more action statements. Each of these statements begins with: '+' to indicate that the cycles are required, '-' to indicate that the cycles are unexpected, or '~' to indicate that the cycles are optional, when the condition is met.

There is no limit to the number of condition/action entries that may be included but the order in which the conditions appear may be important, because in the event of a conflict, the action specified by the last entry, applicable to each cycle, is the action that will be applied. This point is illustrated in the following example.

Example
IF|0|1|22|6
+|2,5,8
-|3,6,9
~|4,7,10

IF|0|1|22|5
AND|0|9|13|>0
AND|0|9|36|!1
+|11

IF|1|3|9|~^A
-|11

This example, consists of 3 conditional specifications. They are applied in the order in which they are defined. The first specification indicates that, if field 22 on plate 1 at visit 0 equals 6, then cycles 2, 5 and 8 are required; cycles 3, 6 and 9 are not expected; and cycles 4, 7 and 10 are optional. The second specification indicates that, if field 22 on plate 1 at visit 0 equals 5, and field 13 on plate 9 at visit 0 is greater than zero, and field 36 on plate 9 at visit 0 is not equal to 1, then cycle 11 is required. The third specification indicates that, if field 9 on plate 3 at visit 1 begins with the capital letter "A", then cycle 11 is not expected.

If both conditions 2 and 3 are met cycle 11 will be considered unexpected because, when a conflict occurs, the last condition wins.


Table 2.23. DFcvisit_map - conditional visit map

Usual NameDFcvisit_map
Typeclear text
Created ByDFsetup
Used ByDF_QCupdate
Field Delimiter|
Record Delimiter\n
Comment Delimiter#
Fields/Record2+
Description

This table describes the conditional visit map file structure and provides an example. It does not describe all of the syntax and rules related to this feature. Usage instructions for all 4 conditional maps is fully described in Study Setup User Guide, Conditional Maps.

The file contains one or more specifications, each consisting of a condition definition followed by one or more actions to be applied if the condition is met. Entries in the file have the general appearance of:

IF|Visit List|Plate|Field|Value
AND|Visit List|Plate|Field|Value
[+-~]|List of conditional visits

Each condition may be followed by one or more action statements. Each of these statements begins with: '+' to indicate that the visits are required, '-' to indicate that the visits are unexpected, or '~' to indicate that the visits are optional, when the condition is met.

There is no limit to the number of condition/action entries that may be included but the order in which the conditions appear may be important, because in the event of a conflict, the action specified by the last entry, is the action that will be applied. This point is illustrated in the following example.

Example
IF|0|1|22|6
+|10-19
-|20-29
~|30

IF|0|1|22|5
AND|0|9|13|>0
AND|0|9|36|!1
+|40

IF|1|3|9|~HIV
-|40

This example, consists of 3 conditional specifications. They are applied in the order in which they are defined. The first specification indicates that, if field 22 on plate 1 at visit 0 equals 6, then visits 10 to 19 are required, visits 20 to 29 are unexpected, and visit 30 is optional. The second specification indicates that, if field 22 on plate 1 at visit 0 equals 5, and field 13 on plate 9 at visit 0 is greater than zero, and field 36 on plate 9 at visit 0 is not equal to 1, then visit 40 is required. The third specification indicates that, if field 9 on plate 3 at visit 1 contains the literal string "HIV", then visit 40 is not expected.

If both conditions 2 and 3 are met, visit 40 will be considered unexpected because, when a conflict occurs, the last condition wins.


Table 2.24. DFcplate_map - conditional plate map

Usual NameDFcplate_map
Typeclear text
Created ByDFsetup
Used ByDF_QCupdate
Field Delimiter|
Record Delimiter\n
Comment Delimiter#
Fields/Record2+
Description

This table describes the conditional plate map file structure and provides an example. It does not describe all of the syntax and rules related to this feature. Usage instructions for all 4 conditional maps is fully described in Study Setup User Guide, Conditional Maps.

The file contains one or more specifications, each consisting of a condition definition followed by one or more actions to be applied if the condition is met. Entries in the file have the general appearance of:

IF|Visit List|Plate|Field|Value
AND|Visit List|Plate|Field|Value
[+-~]Visit List|List of conditional plates

Each condition may be followed by one or more action statements. Each of these statements begins with: '+' to indicate that the plates are required, '-' to indicate that the plates are unexpected, or '~' to indicate that the plates are optional, at the specified visits, when the condition is met.

There is no limit to the number of condition/action entries that may be included but the order in which the conditions appear may be important, because in the event of a conflict, the action specified by the last entry, applicable to each plate, is the action that will be applied. This point is illustrated in the following example.

Example
IF|0|1|22|6
+10,20|50,51
-10,20|40,41
~10,20|15

IF|0|1|22|5
AND|0|9|13|>0
AND|0|9|36|!1
+91-95|16

IF|1|3|9|yes
-91|16

This example, consists of 3 conditional specifications. They are applied in the order in which they are defined. The first specification indicates that, if field 22 on plate 1 at visit 0 equals 6, then at visits 10 and 20: plates 50 and 51 are required, plates 40 and 41 are not expected, and plate 15 is optional. The second specification indicates that, if field 22 on plate 1 at visit 0 equals 5, and field 13 on plate 9 at visit 0 is greater than zero, and field 36 on plate 9 at visit 0 is not equal to 1, then at visits 91-95 plate 16 is required. The third specification indicates that, if field 9 on plate 3 at visit 1 contains exactly the string "yes", and nothing more, then plate 16 is not expected at visit 91.

If both conditions 2 and 3 are met plate 16 will be considered unexpected at visit 91, but required at visits 92-95, because, when a conflict occurs, the last condition wins.


Table 2.25. DFcterm_map - conditional termination map

Usual NameDFcterm_map
Typeclear text
Created ByDFsetup
Used ByDF_QCupdate
Field Delimiter|
Record Delimiter\n
Comment Delimiter#
Fields/Record1+
Description

This table describes the conditional termination map file structure and provides an example. It does not describe all of the syntax and rules related to this feature. Usage instructions for all 4 conditional maps are fully specified in Study Setup User Guide, Conditional Maps.

The file contains one or more specifications, each consisting of a condition definition followed by one action to be applied if the condition is met. Entries in the file have the general appearance of:

IF|Visit List|Plate|Field|Value
AND|Visit List|Plate|Field|Value
A or E

Each condition is followed by either the letter 'A' (abort all follow-up), or 'E' (early termination of the current cycle). The termination date is defined as the visit date of the visit that triggered the condition, specifically the visit specified in the IF statement.

Example
IF|0|1|22|6
A

IF|6|1|22|5
AND|6|9|13|>0
AND|6|9|36|!1
E

This example, consists of 2 conditional specifications. The first specification indicates that, if field 22 on plate 1 at visit 0 equals 6, then all follow-up terminates as of the visit date for visit 0. Visits scheduled to occur before this date are still expected, but visits scheduled following this date are not.

The second specification indicates that, if field 22 on plate 1 at visit 6 equals 5, and field 13 on plate 9 at visit 6 is greater than zero, and field 36 on plate 9 at visit 6 is not equal to 1, then the current cycle terminates, i.e. the cycle in which visit 6 is defined; with the termination date being the visit date of visit 6. Any visits in this cycle (or in previous cycles) that were scheduled to occur before the termination date are still expected, but visit within this cycle scheduled following this date are not. On termination of a cycle, subject scheduling proceeds to the next cycle in the visit map, if there is one.


Table 2.26. DFCRFType_map - CRF type map

Usual NameDFCRFType_map
Typeclear text
Created ByDFsetup
Used ByDFbatch, DFprintdb, DFimport.rpc, DFexport.rpc, DFcmpSchema DFcmpSchema
Field Delimiter|
Record Delimiter\n
Comment DelimiterNA
Fields/Record2
Description

Each record in the CRF type map has two fields, an acronym or short form (1st field), and a descriptive label (2nd field). The CRF type acronym and label appear in the Import CRFs dialog. The CRF type label appears in the DFexplore Preferences dialog.

This file is optional. If it does not exist, CRF Types are not used for this study.

Example
PAPER|Print Version
CHINESE|Chinese
ENGLISH|English
SWEDISH|Swedish
FRENCH|French
SPANISH|Spanish

Table 2.27. DFcrfbkgd_map - CRF background map

Usual NameDFcrfbkgd_map
Typeclear text
Created ByDFsetup
Used ByDFprintdb
Field Delimiter|
Record Delimiter\n
Comment DelimiterNA
Fields/Record3
Description

Each record in the CRF background map has three fields: the visit number with the background to be repeated (1st field), the list or range of visit numbers where the background will be repeated (2nd field), and an optional comment field (3rd field).

This file is optional. If it does not exist, the default CRF will be displayed for visits not tagged during the Import CRFs step. If no default CRF has been imported, the CRF background will be blank for untagged visits.

Example
10|11,13-14,16-17,19-20|Quarterly visits
12|15,18|Annual visits
22|25,28|Annual lab work

Table 2.28. DFedits.bin - published edit checks

Usual NameDFedits.bin
Typebinary
Created ByDFsetup, DFcompiler
Used ByDFexplore
Field DelimiterNA
Record DelimiterNA
Comment DelimiterNA
Fields/RecordNA
Description

This file contains an internal, binary equivalent of the edit checks stored in the plain text DFedits file. This binary format contains no external references to other included files and is a more compact representation that can be more efficiently transmitted to and interpreted by DFexplore clients.

The DFedits.bin file is created when Publish is selected in DFsetup's edit checks dialog.

This file is the only edit checks file used by DFexplore.


Table 2.29. DFfile_map - file map

Usual NameDFfile_map
Typeclear text
Created ByDFsetup
Used ByDFserver.rpc
Field Delimiter|
Record Delimiter\n
Comment DelimiterNA
Fields/Record4
Description

The file map lists all of the unique plate numbers used in a particular study database. The study server uses this file at start-up to determine which database files it may need to initialize and allocate file descriptors for. In addition to the listed plate numbers, the study server also allocates file descriptors for the new records file () and the query data file ().

The format of this file is one record for each plate defined in the study setup. Each record has 4 fields. The first field of the record is the plate number, leading zero-padded to three digits. The second field is a textual description of the plate from the user-supplied definition in DFsetup. The textual part is displayed in the plate selection dialogs that can be found in various study tools. The third field identifies how the visit/sequence number key field is coded for that plate. A code of 1 means that the visit/sequence number is in the barcode; a code of 2 means that it is the first data field on the data entry screen for that plate. Any other code is an error. The fourth field indicates whether the arrival of this plate signals early termination of study follow-up for the subject, as would for example the arrival of a death report. A code of 1 appears if the plate signals early termination, otherwise the code is 2.

The records in the file map do not have to be sorted in increasing plate number order as the file is internally sorted by the study database server at start-up time.

Example
001|Dosage of Study Drug (DOST-2)|2|2
002|Concomitant Medication (COM)|1|2
003|Written Consent (CONS-w)|1|2
005|Diagnosis (DSM-III-R)|1|2
006|Psychiatric History (PSH)|1|2
200|Death Report|1|1

Table 2.30. DFlogo.png - study logo, for reports

Usual NameDFlogo.png
TypePNG
Created ByNA
Used ByDFexplore
Field DelimiterNA
Record DelimiterNA
Comment DelimiterNA
Fields/RecordNA
Description

A study logo is a small PNG file, maximum dimension is 64 pixels tall and 128 pixels wide. DFdiscover reports can display the study logo in the top-left corner of the report output. If no study logo is available, the study name is written to the header of each report output.

The study logo must be created outside of DFdiscover - there is no interface for creating it. Once the file is created, it must be copied to the study folder and saved as lib/DFlogo.png.


Table 2.31. DFlut_map - lookup table map

Usual NameDFlut_map
Typeclear text
Created ByDFsetup
Used ByDFexplore, DFbatch
Field Delimiter|
Record Delimiter\n
Comment DelimiterNA
Fields/Record2
Description

Lookup tables are used to select results from a list of pre-defined values and insert them into DFdiscover data fields. Lookup tables can also be defined for the query, query note, and reason fields to allow users to select pre-specified text for these fields. Lookup tables are described in Lookup tables.

A study setup may use multiple lookup tables and so the lookup table map is used to associate simple table names with more complex and lengthy full pathnames of the actual lookup tables.

Each record in the lookup table map has a lookup table name, followed by a |, and a filename containing the lookup table. DFdiscover will search for the lookup table filename first in the $(STUDY_DIR)/lut directory and if that fails in the /opt/dfdiscover/lut directory. The table name is a symbolic name that can be referenced in edit checks.

The special table names QC, QCNOTE and QCREPLY are used to associate a lookup table with the detail, note and reply fields, respectively, in the DFexplore Field > Add/Edit/Reply Query dialogs. The special table name REASON is used to associate a lookup table with the reason code and text for data changes.

Example
QC|DF_QClut
QCNOTE|DF_QCnotelut
QCREPLY|DF_QCreplylut
REASON|DF_Reasonlut
MEDS|meds.dict
COSTART|costart.dict
WHO|who.dict

Table 2.32. DFmissing_map - missing value map

Usual NameDFmissing_map
Typeclear text
Created ByDFsetup
Used ByDFbatch, DFprintdb, DFimport.rpc, DFexport.rpc, DFcmpSchema, DF_QCupdate, DF_XXkeys, DF_stats, DFsas
Field Delimiter|
Record Delimiter\n
Comment DelimiterNA
Fields/Record2
Description

Each record in the missing value map has two fields, the missing value code (1st field), and a descriptive label for the code (2nd field). The missing value code appears verbatim in any data field which has been identified as missing with that code.

The missing value map lists all missing value codes used in the study. These codes can be entered into any data field by selecting the desired code from the list available under Field > Mark Field Missing in DFexplore.

Note that the field delimiter, |, which is used in all DFdiscover databases, can not be used as a missing value code (for obvious reasons). Any other single (or multiple) character is acceptable.

This file is optional. If it does not exist, a single missing value of * (asterisk) - Not Available is available by default. If it does exist but is empty, then no missing values are permitted.

[Warning]Changes to the missing value map for an in-progress study

DFdiscover determines if each data value is a missing value code by comparing the value with each of the missing value codes in the map. If there is a match, DFdiscover handles that data value as a missing value. If there is no match, the data value is handled as a normal data value. This is important to remember because changes to the missing value map after a study has started and data has been entered can result in DFdiscover handling data values in a manner which is different from the handling when the value was originally entered. For example, defining .A as a missing value code at study start and then subsequently deleting that code from the missing value map will result in DFdiscover treating each occurrence of .A in the current database as a normal data value.

Example
*|Not Available
.|Not Applicable
-|Temporarily Unavailable
.U|Unknown

Table 2.33. DFpage_map - page map

Usual NameDFpage_map
Typeclear text
Created ByDFsetup
Used ByDF_QCreports, DFexplore
Field Delimiter|
Record Delimiter\n
Comment DelimiterNA
Fields/Record3
Description

This file is optional for a study. If defined, it must be located in $(STUDY_DIR)/lib/DFpage_map. The page map allows one to specify non-default labels, to identify visits and CRF pages, on Query Reports and in DFexplore's subject binder view. If a page map file is not defined, queries and pages in the binder are identified by the visit number and plate number keys of the CRF.

The first record in a page map contains only a single field which specifies a text label to be used as a title over the queries. The default label is:

PLATE       SEQNO

This label appears at the top of the Fax/Refax List and Question & Answer List sections of the Query Reports.

The remaining records describe the text labels to be used in place of the default plate and visit number identifiers.

The first field is the plate number, the second field is the visit/sequence number, and the third field is the substitution to be used for that plate and visit/sequence combination. The third field can contain %P and %S which are replaced with the plate number and the visit/sequence number fields from the query, respectively. It may also contain parts of the plate number and/or sequence number fields by using the notation %{n.P}, %{P.n}, %{n.S}, or %{S.n}. %{n.P} which returns the leading n digits of the plate number while %{P.n} returns the trailing n digits of the plate number. Similarly, %{n.S} and %{S.n} produce n leading and trailing digits of the sequence number. The third field may also contain the notation %# which is replaced with the value stored in field n of the data record matching the specified plate and sequence number. Additionally, when using the %# notation, and for data fields that have a data type of choice or check, it is possible to request that the reported value be decoded by using the %n:d notation. This substitutes the label associated with the value, instead of the value itself. [a]

When a Query Report is created, those queries whose plate and visit numbers match the first and second fields, will be identified on the Query Report by the label which appears in the third field.

If either the first field or second field contains a *, all values for that field that have not yet matched a previous rule will use the format in the third field.

For more information, see Study Setup User Guide, Page Map.

Example
PAGE (PLATE-SEQ)
018|001|MED VISIT1
*|001|VISIT1 (%P-%S)
025|*|TERM (%P-%S)
*|*|(%P-%S)
Note how the last rule catches all plate and visit/sequence pairs that were not previously matched.

[a] To implement %# or %n:d, the data record must be available. This is always true for Query Reports. However, in DFexplore only the currently visible data record is available at any moment. The result is that in the subject binder, for any record other than the current record, use of %# or %n:d is substituted with ???. This limits the usefulness of this notation in DFexplore.


Table 2.34. DFqcsort - Query and CRF sort order

Usual NameDFqcsort
Typeclear text
Created ByDFsetup
Used ByDF_QCreports
Field Delimiter|
Record Delimiter\n
Comment DelimiterNA
Fields/Record3
Description

A query sort order map can be specified to control the order in which queries appear on the reports created by DF_QCreports.

If DFqcsort is not defined, queries will appear on Query Reports sorted by ascending subject ID, then visit number, then plate, and finally data field number. A different sort order can be specified to reorder queries from particular visits and/or plates. For example, one might want all queries from adverse event reports to appear at the top of each subject's list. This can be done with DFqcsort.

The file contains one or more records in the following format:

plate#|visit#|sort_order#

where the sort_order# is an integer-valued sort priority such that a lower value indicates an earlier sort order. There is no minimum or maximum value for sort_order#, hence negative numbers can be used to give higher priority to sort_order#s of zero or greater. If two or more entries assign the same sort_order#, those entries are sorted in the default manner of ascending plate number within ascending visit number.

Within each record the plate number, or the visit number, can be replaced by * to signify all plates for a specified visit, or all visits for a specified plate. In such cases queries are sorted numerically on the unspecified field within the specified field. For example:

12|*|1

specifies that, for each subject, all queries on plate 12 are to be given a sort priority of 1 as compared to other queries. Since no visit number is specified, if queries appear on plate 12 at more than one visit for a given subject, they will appear on the Query Report sorted by visit/sequence number. * may also be specified for both plate and visit numbers (to catch all plate and visit combinations that were not otherwise specified), but this is not necessary as this is given the lowest sort priority by default.

Note that while sort order control is provided over plates and visits, no control is provided at the individual field level. Queries on a given plate are always sorted in field number order. Also queries and records are always sorted by ascending subject ID. Thus the control provided here does not allow for all possible sort orders. It merely provides a mechanism for controlling query ordering by plate and visit numbers.

Example
12|*|1  (1)
*|1|2   (2)
25|2|3  (3)
13|2|4  (4)
5|2|5   (5)
*|2|6   (6)
*|*|7   (7)

(1)

Queries on plate 12 of any visit appear first

(2)

Queries for visit 1 appear next (in plate number order)

(3)

Queries on plate 25 of visit 2 appear next

(4)

Queries on plate 13 of visit 2 appear next

(5)

Queries on plate 5 of visit 2 appear next

(6)

Queries on all remaining plates of visit 2 appear next

(7)

All the rest appear in the default order (i.e. plate# within visit#)


Table 2.35. DFqcproblem_map - Query category code map

Usual NameDFqcproblem_map
Typeclear text
Created ByDFsetup
Used ByDFbatch, DFprintdb, DFimport.rpc, DFexport.rpc, DFcmpSchema, DF_QCupdate, DF_XXkeys, DF_stats, DFsas, DFexport
Field Delimiter|
Record Delimiter\n
Comment DelimiterNA
Fields/Record4
Description

Each record in the Query category code map has four fields, the category code (1st field), the descriptive label (2nd field), the auto-resolve value (3rd field), and the sort value (4th field). The query category code appears verbatim in any data field which has been assigned a query with that code.

The pre-defined categories are assigned integer codes from 1-6 and 21-23 (inclusive). User-defined categories must be assigned integer codes ranging from 30-99 (inclusive). Category codes must be unique.

The problem labels must have a length ranging from 1-20 characters (inclusive), must be unique, and are case insensitive.

The auto-resolve field may be set to No (0) or Yes (1). With auto-resolve set to Yes, an outstanding query with this category code will be automatically resolved if a new reason is added to the corresponding data value.

The sort value may be set to any integer value between -2147483648 and 2147483647. Category types are sorted in ascending order by sort value, then by code.

The query category code map lists all query category codes in the study. A query with one of these types can be entered into any data field by selecting the desired type from the category code list available under Field > Add Query... in DFexplore.

When a new study is started, the file is created. By default, the file is populated with the following:

1|Missing|1|0
2|Illegal|1|0
3|Inconsistent|1|0
4|Illegible|1|0
5|Fax Noise|1|0
6|Other|1|0
21|Missing Page|0|0
22|Overdue Visit|0|0
23|EC Missing Page|0|0

Example
1|Missing|1|0
2|Illegal|1|0
3|Inconsistent|1|0
4|Illegible|1|0
5|Fax Noise|1|0
6|Other|1|0
21|Missing Page|0|0
22|Overdue Visit|0|0
23|EC Missing Page|0|0
30|Clinical QC|1|1
50|Needs Review|0|1
37|Refuted|1|2

Table 2.36. .DFreports.dat - reports history

Usual Name.DFreports.dat
Typeclear text
Created ByDFexplore
Used ByDFexplore
Field Delimiter|
Record Delimiter\n
Comment Delimiter#
Fields/Record9+
Description

Users create and save report history lists (including options) in much the same way that they create and save task lists.

The reports history list for ail study users is stored in this file in the study lib directory. Each history list is represented by a single record in this file. Each user may have more than one history list.

History lists are created in DFreport by executing the desired reports and then saving the history list. There is no text-based interface to this file or its contents.


Table 2.37. DFschema - database schema

Usual NameDFschema[a]
Typeclear text
Created ByDFsetup
Used ByDF_QCupdate, DF_ICschema, DF_ICrecords, DF_SSvars, DF_SSschema, DFcmpSchema, DFimport.rpc, DFsas, DFsqlload
Field Delimiter\n
Record Delimiter\n\n
Comment DelimiterNA
Fields/Record5+
Description

The schema, or data dictionary, is generated/updated automatically by DFsetup whenever a save is required for the study definition. Each field is composed of a key letter (with a leading % character) to indicate the field type, a space character, and the value of the field. This is essentially UNIX 'refer' format.

The defined key letters and corresponding field types are listed in the Table 2.39, “Schema codes and their meaning”.

The T code requires additional explanation. Its value is the variable type (one of choice, check, int, date, string) followed by the setup style name. If the variable type is date, the style name is followed by the variable pivot year and the date imputation method and whether the date is used for scheduling purposes or not. The pivot year represents the first possible year in those dates where the year is only 2 digits. The imputation method is one of:

0 never - no imputation is allowed
1 start - impute dates to the beginning of the month or year
2 middle - impute dates to the middle of the month or year
3 end - impute dates to the end of the month or year

The scheduling attribute is unused by most programs except for DF_QCupdate which searches the schema file for date fields which use the Visit Date attribute. These date fields are used to determine subject visit scheduling. DFsas also uses this information to determine the correct year value to include in the YEARCUTOFF option statement.

Each study schema begins, in order, with records defining values for the S, B, N, Y and then Z codes. If study is linked with another study then a and b fields are included identifying production and development study numbers. Thereafter, each new plate definition begins with a record defining values for the P, t, n, E, and R codes. This is followed by records for each variable in that plate. Each variable has a record that begins with an I field, followed by at least i, V, D, W, w, T, and A fields. The v, F, L, H, J, j, K, k, g, h, s, c, and C fields are included only if applicable.

Example
%S 254
%N 12
%B 1990
%Y 0 0
%Z 40

%P 1
%p Blood Pressure Screening Visits
%n 35
%t simple
%E 1
%R PrintCRF.shx

%I 1
%i 10
%V DFstatus1
%v DFSTATUS
%D DFdiscover Record Status
%T choice SimpleChoice
%A required
%W 1
%L 0~6
%C 0 lost
%C 1 final
%C 2 incomplete
%C 3 pending
%C 4 FINAL
%C 5 INCOMPLETE
%C 6 PENDING

%I 2
%i 11
%V DFvalid1
%v DFVALID
%D DFdiscover Validation Level

[a] This file is present for users and programs that require backwards compatibility and are not able to read the JSON study definition. This file may be removed in a future release.


Table 2.38. DFschema.stl - database schema styles

Usual Name[a]
Typeclear text
Created ByDFsetup
Used ByDFsetup
Field Delimiter\n
Record Delimiter\n\n
Comment DelimiterNA
Fields/Record2+
Description

This file is very much like the study schema, DFschema - database schema, but instead of variable definitions it simply catalogs all of the variable styles used in DFsetup to define new variables. Like DFschema the file is generated/updated automatically by DFsetup whenever a save is required for the study definition.

Note that the style schema lists only field types that are defined by the style itself. It omits those definitions that are specified at the variable level.

Example
%S 254
%N 51

%I 1
%T int SimpleNumber
%A optional

%I 2
%T date SimpleDate 1940 0
%A optional
%W 8
%F dd/mm/yy

%I 3
%T string SimpleString
%A optional

%I 4
%T choice SimpleChoice
%A optional
%L $(choices)
%l 0
%c 0

[a] This file is present for users and programs that require backwards compatibility and are not able to read the JSON study definition. This file may be removed in a future release.


Table 2.39. Schema codes and their meaning

CodeRelevanceMeaning
SStudyDFdiscover study number
aStudyproduction study number
bStudydevelopment study number
BStudyyear in which study database was defined
eStudyRun edit checks in View mode
NStudythe total number of user-defined plates in the setup (this excludes plate 0 (new records), plate 510 (reasons for data change), and plate 511 (queries). In DFschema.stl file this represents total number of styles defined in the study
UStudyDFdiscover version used to create setup
uStudyDFdiscover version used on last setup change
YStudyreason is required for data change for specified fields (0=per field), for all fields (2=always), or for no field (1=never). These values are followed by the value for the 'Only if changing a non-blank value' setting; 0=no, 1=yes.
ZStudyfield description maximum length (25 or 40)
MStudynumber of new patients to be listed in patient binder
mStudyenable Start New Subject dialog
PPlateplate number
nPlatetotal number of fields per plate; this includes the 6 DFdiscover default fields present on all records (i.e., DFstatus, DFcreate, DFmodify, etc.)
pPlateplate label
EPlateis the sequence number predefined (code 1) or is it the first data field (code 2)?
RPlateplate arrival trigger. This tag identifies an executable shell script or program, located in the study ecbin or DFdiscover ecbin directories, which is executed on plate arrival.
tPlatedoes plate trigger early termination; "simple" = plate does not trigger early termination, "term" = plate triggers early termination
IField/Stylethe field order number or the style index in the DFschema.stl file
iFieldthe number that uniquely identify fields within a study
VField/Stylealias
vField/Stylename
DField/Styledescription
gField/Stylethe minimum validation level after which any changes to the data value will require a reason. This code is optional, or may be present and have the value 0, in which case a reason for a data change is never required. If a minimum validation code between 1-7 is present, it will be followed by the value for the 'Only if changing a non-blank value' setting; 0=no, 1=yes.
hField/Stylefield visibility
LField/Stylelegal values; where $(ids) has been used as a legal range definition for patient id variables, the literal $(ids) will be reported.
AField/Stylefield optionality
FField/Styleformat
HField/Stylehelp message
WField/Stylemaximum number of stored characters
wField/Stylemaximum number of displayed characters
JField/Styleedit check(s) on field entry
KField/Styleedit check(s) on field exit
jField/Styleedit check(s) on plate entry
kField/Styleedit check(s) on plate exit
cField/Stylecode value and label definition for no choice
CField/Stylecode value and label definition
sField/Stylenumber of fields to skip and condition
TField/Stylea compound value containing, in order:
  • data type, one of string, int, date, choice, check, time

  • style name (which may contain spaces)

  • for dates only, the cutoff year

  • for dates only, the imputation method

  • for dates only, one of NonSched or VisitDate

rField/Stylefield's module name, instance number and description.
XField/Styleis field constant (0=no, 1=yes) and constant value (if constant)

Table 2.40. DFsetup - study definition

Usual NameDFsetup
TypeJSON
Created ByDFsetup
Used ByDFsetup, DFexplore, DFprintdb
Field DelimiterNA
Record DelimiterNA
Comment DelimiterNA
Fields/RecordNA
Description

The setup file contains the study definition in JSON format that can be read and written efficiently by DFsetup. It keeps the internal state of the program together with all of the information about study, page, and variable definitions. Many other study configuration files, such as the ICR tips file and study database schema, are constructed from this internal representation.

[Warning]Internal use only

This file format is intended to be written only by DFsetup only. It may be read and processed by other programs that need to determine setup information but its internal structure is subject to change without notice.


Table 2.41. DFserver.cf - server configuration

Usual NameDFserver.cf
Typeclear text
Created ByDFadmin
Used ByDFserver.rpc
Field Delimiter=
Record Delimiter\n
Comment Delimiter#
Fields/Record2
Description

Each study database server is configured by this file. The study server configuration keywords and their meanings are given in the Table 2.42, “DFserver.cf configuration keywords”.

Example
STUDY_NUMBER=254
STUDY_NAME=DFdiscover Acceptance Test Study
STUDY_DIR=/opt/studies/val254
PAGE_DIR=$(STUDY_DIR)/pages
WORKING_DIR=$(STUDY_DIR)/work
PRINTER=hp4000
THRESHOLD=500000
STUDY_URL=http://www.ourstudy.com/index.html
VERSION_STRICT=0
AUTO_LOGOUT=5|30
ADD_IDS=1||
VERIFY_IDS=0|

Table 2.42. DFserver.cf configuration keywords

KeywordMeaning
STUDY_NUMBERthe unique study number identifier. Legal values are in the range 1 to 999 inclusive.
STUDY_NAMEa descriptive name or acronym for the study. This name appears, among other places, in the toolbox frame label. Its recommended length should be no more than 20 characters.
STUDY_DIRthe study root (highest-level) directory. All other study related directories should be sub-directories of this directory and should accomplish this by referencing $(STUDY_DIR) in their value. This directory, by default, is writable by both user and group and is owned by datafax.
PAGE_DIRthe root directory for all CRF image files. This directory has sub-directories named by year and week within year. Within each of these sub-directories each CRF page image is numbered sequentially by page number within fax number. By default, this directory is defined as $(STUDY_DIR)/pages and is writable only by user datafax.
WORKING_DIRthe root directory for all study specific temporary or work files. Any temporary files created by report programs should be written in this directory. By default, this directory is defined as $(STUDY_DIR)/work and is writable only by user datafax and group.
PRINTER or PRINT_CMDdefault printer for the study.
THRESHOLDthe minimum number of Kilobytes of free disk space in the partition containing the study data directory. During normal operation, the study server will exit when the free disk space in this partition drops below the threshold value. Further connections to the study server will fail until additional disk space is made available or the threshold is reduced.
AUTO_LOGOUTa compound value expressed as two numbers delimited with a |. Both numbers represent a time interval expressed in minutes. The first number is the minimum number of minutes that any study user can choose for their auto logout interval; the second is the maximum number of minutes.
VERSION_STRICTa true (1) or false (0) value specifying whether the study server accepts client connections from the current minor release version only, or client connections with any minor release version. The major release version must always match.
STUDY_URLfor future use only, and is currently not used.
ADD_IDSfor future use only, and is currently not used.
VERIFY_IDSfor future use only, and is currently not used.

Table 2.43. DFsubjectalias_map - subject alias map

Usual NameDFsubjectalias_map
Typeclear text
Created ByDFsetup
Used ByAll DFdiscover applications, except for legacy reports
Field Delimiter|
Record Delimiter\n
Comment DelimiterNA
Fields/Record2
Description

This file is optional for a study. If defined, it must be located in $(STUDY_DIR)/lib/DFsubjectalias_map. The subjectalias map allows the specification of "aliases" (descriptive labels), each up to 30 UNICODE characters in length, that may be used in place of the standard numeric subject identifier. If a subjectalias map is defined, and has been enabled as a preference for the current user, the subject alias appears everywhere in DataFax that the numeric subject ID would normally appear. Otherwise, the numeric subject ID is displayed. [a]

The file contains zero or more rows, each row containing 2 fields and the fields are delimited by |. The value in the first field is the numeric subject ID and the value in the second field is the matching alias for that subject ID. Each subject ID must be unique and each subject alias must also be unique.

For more information, see Study Setup User Guide, Subject Alias Map.

Example
150040|T1-B-40
150041|T1-B-41
150042|T1-B-42
150043|T1-B-43
150044|T1-B-44
150045|T1-B-45
200006|T2-A-6
200007|T2-A-7
200008|T2-A-8
200009|T2-A-9
200010|T2-A-10

[a] There are a few exceptions, for example subject aliases are not implemented in any legacy reports.


Table 2.44. DFsubjectalias_map.log - subject alias change log

Usual NameDFsubjectalias_map.log
Typeclear text
Created ByDFserver.rpc;
Used ByDFserver.rpc
Field Delimiter|
Record Delimiter\n
Comment DelimiterNA
Fields/Record7
Description

This file is optional for a study. If defined, it must be located in $(STUDY_DIR)/lib/DFsubjectalias_map.log. The contents of the file are managed entirely by DFserver.rpc - it is not meant for external editing.

The file contains zero or more rows, each row containing 7 fields where the fields are delimited by |. Each row logs the addition, editing or deletion of a single, specific subject alias.

Example
200703|174748|userB|n|500003|T5-B-3|
200703|180202|userB|n|250009|T2-A-259|
200703|180219|userB|c|250009|T25-A-9|T2-A-259
200722|112345|userA|d|200004||T2-A-4
200722|112345|userA|d|200005||T2-A-5

Table 2.45. Field definitions for DFsubjectalias_map.log

Field #DescriptionRequiredMaximum Size
1Dateyes6 digits
2Timeyes6 digits
3Nameyesup to 16 characters
4Log Type (n = new alias, c = change alias, d = delete alias); for new, field 6 is required; for change, fields 6 and 7 are required; for delete, field 7 is requiredyes1 character
5Subject IDyes15 digits
6Subject Alias (new)no30 UNICODE characters
7Subject Alias (old)no30 UNICODE characters

Table 2.46. DFtips - ICR tips

Usual NameDFtips
Typeclear text
Created ByDFsetup
Used ByDFinbound.rpc
Field Delimiter\n
Record Delimiter.\n
Comment Delimiter#
Fields/Record3+
Description

The purpose of this file is to document the location, size, and type of each data field on each study plate. This information is parsed and used by during its ICR processing of each CRF image file.

The tips file begins with 4 comment lines which identify the study number, name, number of CRF plates that have been defined and the date on which the tips file was created. This is followed by the keyword DELIMITER which identifies the single character delimiter used to separate fields in data records. The current implementation of DFdiscover accepts only the | delimiter.

The above header information is followed by N plate definitions, where N is the number of unique plates defined for the study. Each plate definition begins with plate specific information followed by M variable definitions, where M is the number of variables defined on that plate. Each variable definition includes: the data field number and unique name, the data type, legal values (if any were specified), the size of the boxes, or VAS line, used to record the data field, and its location on the CRF image that was used to define the plate in DFsetup.

Each field in the tips file has a leading keyword separated from the value by a \t (TAB) character.

The plate specific keywords are listed in Table 2.47, “DFtips plate specific keywords”. The keywords recognized for variable definitions are listed in Table 2.48, “DFtips variable specific keywords”.

Example
# Study Number: 253
# Study Name: Demo Study 253
# Total Pages: 14
# Created: Wed Dec  1 12:33:29 2004
DELIMITER       |
PAGE    1
PLATE   1       # Blood Pressure Screening Visits
SEQ_CODE        1
PREOP   echo "$image $data" >> /tmp/test
DO_ICR  2
# FAX: plt001
FIELD   1 # ID001
TYPE    int
LEGAL   $(ids)
PART    106 84 2 50 25
PART    167 84 3 74 25
.
FIELD   2 # PINIT001
TYPE    string  skip
PART    380 84 3 74 25
.
FIELD   3 # AGE
TYPE    int
LEGAL   21-90
PART    79 182 2 50 25
.
FIELD   4 # SEX
TYPE    choice
LEGAL   0,1,2, blank
PART    0 0 0 0 0 # blank
PART    277 189 1 1 15 # male
PART    277 212 1 2 15 # female
.
FIELD   5 # RACE
TYPE    choice
LEGAL   0-65535
PART    0 0 0 0 0 # no choice
PART    464 188 1 1 15 # Caucasian
PART    464 213 1 2 15 # African American
PART    464 238 1 3 15 # Asian
PART    464 263 1 4 15 # Other
.
FIELD   6 # RACEOTH
TYPE    string  skip
PART    588 257 1 107 26
.
FIELD   7 # S1DATE
TYPE    date
FORMAT  dd/mm/yy
DATES   1940 0
LEGAL   01/01/01-today
PART    172 330 2 49 25
PART    232 330 2 50 25
PART    295 330 2 49 25

Table 2.47. DFtips plate specific keywords

KeywordDescription
PAGEan internal page number that simply sequences the plate definitions
PLATEthe unique plate number that is being defined
SEQ_CODEa code to indicate whether the visit/sequence number is in the barcode or the first data field. Legal values are: 1=barcoded, 2=first data field.
PREOPa shell command that is to be executed before the ICR processing for any occurrences of this plate begins. This keyword is optional.
POSTOPa shell command that is to be executed after the ICR processing for any occurrences of this plate ends. This keyword is optional.
DO_ICRa code that indicates whether or not ICR processing should be performed on occurrences of this plate. Legal values are: 1=yes perform ICR, 2=no do not perform ICR.

Table 2.48. DFtips variable specific keywords

KeywordDescription
FIELDthe data field number as it is sequenced on the form. This will not be the same number as the field number that the data value is eventually stored in. The first data field is the visit/sequence number if SEQ_CODE=2; otherwise, the first data field is the subject ID. Hence to determine the actual field number in the database record, add 5 if SEQ_CODE=2; and add 6 if SEQ_CODE=1.
TYPEdata field type. Legal values are: int=integer, string=text fields, date=date, choice=choice, check=check, vas=visual analog scale, and numeric=a rectangular box containing 2 or more digits. The numeric data type is internal to the tips file and is not used anywhere else in DFdiscover. They are defined in DFsetup as strings with pre-printed numerals, although they can also be used for hand-written numbers. The type record ends in the keyword 'skip' if the field is not to be ICRed. Strings and hidden fields (i.e. fields which do not appear on the paper CRF) will be automatically marked as ICR skips by DFsetup.
FORMATthe format, if any, that is to be applied to the ICRed value before it is added to the database record. Typical values include: mm/dd/yy (which inserts the '/' delimiters into dates), nn.n (which inserts a decimal point).
DATESthe pivot year and imputation method to be used for interpreting 2-digit years (applicable only if the current field is of type date). The imputation method is one of:
0 never - no imputation is allowed
1 start - impute dates to the beginning of the month or year
2 middle - impute dates to the middle of the month or year
3 end - impute dates to the end of the month or year
LEGALthe legal value definition for the field. This is the same definition defined in the study schema. If an ICRed value is illegal, the value for that field is left blank in the data record generated by the ICR software.
PART defines the location, size and coding for each part of the data field. String, check, numeric and VAS fields consist of just one part but choice fields have a part definition for each choice box and dates and ints may be comprised of more than one separate parts. Each part record consists of 5 or 6 space delimited components. For all field types the first 2 components are the x and y location of the field on the CRF plate, with x increasing from left to right and y increasing from top to bottom. The location is given in units corresponding to standard fax resolution (i.e. 102 units per inch horizontally and 98 units per inch vertically). For each part the x value is 8 units left of the first box or VAS line, and the y value gives the location of the middle of the box or VAS line. The meaning of the remaining components depends on the field type. For int, date, and string fields they are: the number of boxes in the part, the total length of the part (enclosing all boxes) and the height of the part. For numeric fields they are: the maximum number of digits in the data field, the total length of the rectangular box and height of the box. For VAS scales they are: the length of the scale, the minimum and maximum values at the ends of the scale, and the precision (i.e. number of decimal places) in the stored value. For check fields they are: the number of boxes (always 1), the code value to be stored in the database if the box is not check, the code if checked, and the edge dimension of the box. And for choice fields they are: the number of boxes (always 1), the code value to be stored in the database if the box is checked, and the edge dimension of the box. For check and choice fields each box is assumed to be square. Choice fields also have a special PART record in which all components are zero expect for the 4th one which specifies the code value stored in the database if none of the choice boxes are checked.

Table 2.49. DFvisit_map - visit map

Usual NameDFvisit_map
Typeclear text
Created ByDFsetup
Used ByDF_QCupdate, DF_ICvisitmap, DF_SSvisitmap
Field Delimiter|
Record Delimiter\n
Comment DelimiterNA
Fields/Record12
Description

The visit map file describes the subject assessments to be completed during the study, the timing of these assessments, and the pages of the study CRFs which must be completed at each assessment.

Each assessment is identified by a visit type. There must always be a baseline visit which is typically the date on which the subject qualified for entry to the trial and was randomized. There must also be a termination visit which ends study follow-up. Between baseline and termination there are often several scheduled visits, subject diaries, laboratory tests, and perhaps a few unscheduled visits. At each of these visits there will be a set of required (and possibly optional) forms to be completed.

Each visit is defined in a single record of the visit map. The fields in each record are described in Table 2.50, “DFvisit_map field descriptions”.

For additional information regarding visit maps, refer to Standard Reports Guide, DF_QCupdate and Study Setup User Guide, Visit Map.

Example

A simple 4-visit visitmap:

0|B|Baseline|1|9 (mm/dd/yy)|0|0| 1 2 3 4 5 6 7 8||99|3 4 1 2 5 6 8 7
10|S|One Week Followup|9|9 (mm/dd/yy)|7|0| 9 10 14||||
20|S|Two Week Followup|9|9 (mm/dd/yy)|14|0| 9 10||||
30|T|Termination Visit|9|9 (mm/dd/yy)|21|0| 11 12||||


Table 2.50. DFvisit_map field descriptions

Field #ContainsDescription
1visit numberthe unique visit number, which can be any number between 0 and 65535 inclusive. For all scheduled visits, (types P, B, S, T), the numerical value of visit numbers must correspond to the sequential ordering of the visits in time.
2visit typea 1 character code for the type of visit. Legal values are enumerated in Table 2.51, “Visit codes and their meaning”.
3visit labela short (maximum 40 character) textual description of the visit that will be used in quality control reports to identify the visit when it is overdue.
4visit date platethe plate on which the visit date can always be found. This must be one of the required plates listed in field 8. Obviously other plates will have visit dates, however, this is the one that will be used when visit dates (potentially conflicting) appear on several pages of the same visit.
5visit date field & formatthe data field number of the visit date on the plate identified in field 4 and its format. The allowable date formats include any combination of yy (year), mm (month), and dd (day) so long as each occurs exactly once. Delimiter characters are optional between the 3 parts. Note: this date field must be defined using the VisitDate attribute.
6visit due daythe number of days before/after the baseline visit that the visit is scheduled. The baseline visit must have a value of 0, and pre-baseline visits must have negative values.
7visit overdue allowancethe number of days that a scheduled visit is allowed to be late. Visits are considered overdue if they have not arrived within this number of days following the visit due day.
8required platesa space character delimited list of plate numbers for CRFs that are required to be completed on this visit (maximum 1200 characters).
9optional platesa space character delimited list of plate numbers for CRFs that may be completed on this visit, but are not required (maximum 1200 characters).
10missed visit notification platea plate number which if received, indicates that the visit number coded on that plate was missed, and hence that Query Reports should not complain that this visit is overdue, or that it has missing pages.
11termination windowfor visit type W, a termination window is required and may be one of the following forms:
on yy/mm/dd
before yy/mm/dd
after yy/mm/dd
between yy/mm/dd-yy/mm/dd fraction
In each case, the date value must use the format that is defined as the VisitDate attribute's format (and is also recorded in field 5).
12display ordera comma- or space-delimited range list of required and optional plate numbers. The order specified here determines the order in which pages within a given visit are to be displayed in the DFexplore subject binder.

Table 2.51. Visit codes and their meaning

CodeMeaningScheduledWhen Required
Ccycleno|yescycles are used to group visits. For additional information regarding cycle entries, refer to Study Setup User Guide, Cycle Specifications.
Xscreeningnoif subject enters the trial (baseline arrives)
Pscheduled pre-baseline visityesbefore arrival of baseline visit
Bbaselineyescan be scheduled from a pre-baseline visit
Sscheduled follow-upyesscheduled from the baseline visit
Ooptional follow-upnonot required
rrequired by time of next visitnobefore arrival of the next visit
Tcycle termination visityesscheduled from the baseline visit
Rrequired by time of termination visityeson termination if scheduled pre-termination
Eearly termination of current cyclenoif early termination event occurs
Aabort all cyclesnoif abort event occurs
Ffinal visit (terminates all cycles)noterminate multi-cycle visit maps
Wstudy termination windowyesabsolute date scheduling of final visit

Table 2.52. DFwatermark - watermark

Usual NameDFwatermark
Typeclear text
Created ByDFadmin
Used ByDFexplore, DFpdf, DFpdfpkg
Field Delimiter|
Record Delimiter\n
Comment DelimiterNA
Fields/Record9
Description

The DFwatermark file stores a description of the watermarks available for use in a study. The file contains zero or more records. The fields in each record are described in Table 2.53, “DFwatermark field descriptions”.

In determining which watermark to use, the records are searched in sequential order from the beginning of the file. The first record to match, based upon the current user's role and the role(s) in the record, is selected.

Example

draft|Draft watermark|DRAFT|20|255,0,0|50|1|1|unrestricted,Sites


Table 2.53. DFwatermark field descriptions

Field #ContainsDescription
1nameThe unique name for the watermark.
2description A description of how and why the watermark is used for this role.
3watermark text The text of the watermark.
4size The point size of the font.
5color The color of the watermark in RGB space in the format 0-255,0-255,0-255.
6transparency The transparency of the watermark as a percentage from 0 (opaque) to 100 (transparent).
7position The placement of the watermark on the page - 1=top, 2=center or 3=bottom.
8frame A flag to indicate if the watermark is framed (1) or not (0).
9rolesA comma delimited list of roles that may use this watermark.

Table 2.54. QCcovers - Query cover pages

Usual NameQCcovers
Typeclear text
Created Bytext editor
Used ByDF_QCreports
Field DelimiterNA
Record DelimiterNA
Comment Delimiter#
Fields/RecordNA
Description

External Quality Control report cover sheets can be included by defining them in the file QCcovers. They may then be requested by running DF_QCreports with no -i option or running DF_QCreports with -i c. If no options are specified with DF_QCreports, a full 3-part Query Report and cover sheet will be generated. If -i is used, you must also specify other report parts to be generated (e.g. s, r, q, c). The -i c option may be specified with the site selection option, -c #. This allows the user to generate cover sheets only for those site IDs specified. The -i c option by itself will generate a cover sheet and nothing else for all sites.

A cover sheet begins with a

<FOR center="#list">

tag to identify the site(s) that are to receive the cover sheet. It is legal for some sites to receive cover sheets while others do not, and for different sites to receive different cover sheets.

Cover sheets are defined using a <TEXT> block. Within <TEXT> blocks, variable substitution may be performed as described in QCtitles for customized report titles. Aside from variable substitution, all other text will appear exactly as formatted within the text block. Blank lines used to double space text will also be preserved. The default font for cover sheet text is the constant width font, fCW.

If more than one cover sheet is defined and a site ID is included in the <FOR center="#list"> for more than one cover sheet, all <TEXT> blocks from all covers sheets specified for the site ID will be added to that site's cover sheet. The <TEXT> blocks will appear in the order they appear in QCcovers, and the site will still only receive one cover sheet.

Sites not specified in either QCcovers or QCmessages do not get a cover sheet. If a site is not defined in QCcovers, but that site is named in QCmessages, a blank cover sheet is generated onto which the message(s) can be written.

[Note]Note

DF_QCreports does not perform line wrapping on cover sheets. Each text block is printed exactly as it appears in QCcovers and QCmessages. Care must be taken when choosing fonts and using variable substitutions to ensure that text lines do not exceed the width of the page.

DF_QCreports also expects that the cover sheet and all messages will fit on a single cover page for each site. It will not create automatic page breaks.

DFdiscover version 3.7-003 and earlier requires that font specifications in QCcovers include the control-P (^P) character; for example <TEXT font="^P12 fB">. DFdiscover version 3.7-004 and greater accept the ^P but it is no longer required. For example, <TEXT font="12 fB"> is a valid font specification and may be defined using the Query Covers view in DFsetup.

Example

The following is an example of an English and French version of a cover sheet for an international trial, where sites 20 to 29 inclusive use French, and all other sites use English.

<FOR centers="1~19,30~300">
<TEXT font="^P12 fB">
--------------------------------------------------------------
PLEASE DELIVER THIS FAX TO THE FITNESS STUDY COORDINATOR
TO: <WHO>
Site <CENTER>: <WHERE>
<DATE>
</TEXT>
</FOR>
<FOR centers="20~29">
<TEXT font="^P12 fB">
--------------------------------------------------------------
DONNEZ CE RAPPORT AU COORDINATOR DE RECHERCHE POUR FITNESS, S'IL VOUS PLAIT
TO: <WHO>
Site <CENTER>: <WHERE>
<DATE>
</TEXT>
</FOR>


Table 2.55. QCmessages - Query Report messages

Usual NameQCmessages
Typeclear text
Created Bytext editor
Used ByDF_QCreports
Field DelimiterNA
Record DelimiterNA
Comment Delimiter#
Fields/RecordNA
Description

Cover sheets may include messages for all or specified site IDs. Messages are stored in the file QCmessages and follow the same rules as described for QCcovers. While messages can be added to cover sheets by placing them in <TEXT> blocks in the QCcovers file, the use of a separate file for messages makes it easier to keep the fixed (probably unchanging) cover sheet header separate from the broadcast messages, which will change frequently throughout the trial.

The file QCmessages may include more than one message, and each site may receive none, some or all of them, as indicated by <FOR centers="#list"> which must appear at the beginning of each message. If a site is to receive more than one message, the messages will be printed on the cover sheet in the order in which they are defined in QCmessages.

It is unnecessary to define a cover sheet in order to use messages. If a message is specified for a site which has not been defined in QCcovers, a blank cover sheet will be created, onto which the message(s) will be printed. Cover sheets and messages must be requested by running DF_QCreports with the -i c option or by running DF_QCreports with no -i at all.

[Note]Note

DF_QCreports does not perform line wrapping on cover sheets or messages. Each text block is printed exactly as it appears in QCmessages. Care must be taken when choosing fonts and using variable substitution to ensure that text lines do not exceed the width of the page.

DF_QCreports also expects that the cover sheet and all messages will fit on a single cover page for each site. It will not create automatic page breaks.

Messages will continue to go on each report until the QCmessages file is removed. If you want to keep a message for use later on, but do not want to send it to anyone in the next batch of Query Reports, leave the site number string blank. e.g. use <FOR center="">.

DFdiscover version 3.7-003 and earlier requires that font specifications in QCmessages include the control-P (^P) character; for example <TEXT font="^P12 fB">. DFdiscover version 3.7-004 and greater accept the ^P but it is no longer required. For example, <TEXT font="12 fB"> is a valid font specification and may be defined using the Query Messages view in DFsetup.

Example

In the following example all site IDs (1 to 300 inclusive) receive the announcement of an upcoming meeting. For site IDs 1, 4, 22 to 24, and 127, this is followed by an important message regarding their lack of response to data queries.

<FOR center="1~300">
<TEXT font ="^P12 fB">
--------------------------------------------------------------
PLEASE NOTE:
</TEXT>
<TEXT font="^P10 fCW">
The next FITNESS Study investigator's meeting will be held on October 9-10,
1999 in Orlando, Florida.
Location and times will follow at a later date.
</TEXT>
</FOR>
<FOR center="1,4,22~24,127">
<TEXT font="^P12 fB">
--------------------------------------------------------------
IMPORTANT!
</TEXT>
<TEXT font="^P10 fCW">
We have not received any corrections related to the Quality Control reports we
have sent to your site over the last 2 months. Please make every attempt to
resolve the outstanding data queries as soon as possible.
By protocol and agreement with the FDA, all adverse events must be reviewed by
us within 3 days of each subject assessment.
If you are having problems of any kind, please let us know.
</TEXT>
</FOR>


Table 2.56. QCtitles - Query Report titles

Usual NameQCtitles
Typeclear text
Created Bytext editor
Used ByDF_QCreports
Field DelimiterNA
Record DelimiterNA
Comment Delimiter#
Fields/RecordNA
Description

The external or internal report title and sub-titles for each of the 3 sections (Subject Status, Refax List, Q & A List) of a DFdiscover Quality Control report may be specified in this file. DF_QCreports checks for the existence of this file and will use it if it exists, otherwise standard titles will be produced.

Title specifications must be formatted exactly as shown in the examples to follow. The opening and closing tags must appear on new lines by themselves, with no leading or trailing text outside of the tag. Anything entered outside of a tagged block is ignored. The # symbol may be used to indicate a comment line but the # is not strictly needed, and has no special meaning inside a tagged block. For example, it is legal to include a line of # as part of a title inside a tagged block.

Tags are only recognized if they begin a new line. Nothing is to precede the tag symbol '<'. No space is allowed within the opening and closing tag except before the word "font". The "font" value must be enclosed in double quotes.

Limited font specifications may be included within the opening tag as listed in Table 2.57, “QCtitles font specifications”.

The font specification is optional. By default, font ^P10 fCW is used for external and internal report titles, and font ^P10 fB is used for the 3 report section sub-titles. Note that in DFdiscover versions 3.7-003 and earlier, font specifications must include the control-P (^P) character; for example <EXTERNAL font="^P12 fB">. DFdiscover versions 3.7-004 and greater no longer require the ^P specification, but it is accepted if present. For example <EXTERNAL font="12 fB"> is a valid font specification.

The variables enumerated in Table 2.58, “Variables available for use in QCcovers, QCmessages, and QCtitles” may be included in the external and internal report titles which appear at the top of each page, but not in the sub-titles for the 3 parts of the report (status, refax and question & answer lists).

[Note]Note

DF_QCreports does not perform line wrapping on report titles. Each report title and section sub-title is printed exactly as it appears in QCtitles. Care must be taken when choosing fonts and using variable substitutions to ensure that text lines do not exceed the width of the page.

Example

Here is an example of a QCtitles file that contains formatting information for an external and internal report title and the 3 section sub-titles.

# TITLE AT THE TOP OF EACH PAGE OF AN EXTERNAL QUERY REPORT
<EXTERNAL font="^P12 fB">
FITNESS STUDY REPORT <NUM> for: <MON> <DAY>, <YEAR> at
<TIME>
TO: <WHO>, <WHERE>
</EXTERNAL>
# TITLE AT THE TOP OF EACH PAGE OF AN INTERNAL QUERY REPORT
<INTERNAL font="^P12 fB">
INTERNAL QC REPORT: <NAME> page <PAGE> created:
<YEAR>-<MON>-<DAY>
</INTERNAL>
#SUB-TITLE ABOVE THE SUBJECT STATUS LIST (Part 1 of a standard external Query Report)
<STATUSLIST font="^P10 fB">
SUBJECT VISIT SCHEDULE: Note: *identifies subjects with data queries.
</STATUSLIST>
#SUB-TITLE ABOVE REFAX LIST (Part 2 of a standard external Query Report)
<REFAXLIST font="^P10 fB">
CRF CORRECTIONS: Initial and date each correction. Refax all corrected pages without delay.
</REFAXLIST>
# SUB-TITLE ABOVE THE QUESTION AND ANSWER LIST (Part 3 of a standard external Query Report)
<QALIST font="^P10 fB">
QUERIES: Print your response below each question and fax back this page.
</QALIST>


Table 2.57. QCtitles font specifications

SymbolDescription
^Pcontrol P, not circumflex P, sets the point size (^P10 and ^P12 are recommended).
fBbold
fHHelvetica
fCWconstant width (monospace) font

Table 2.58. Variables available for use in QCcovers, QCmessages, and QCtitles

VariableUse in ExternalUse in InternalMeaning
<STUDYNAME>yesyesstudy name
<SITE> [a]yesnosite ID
<WHO>yesnoprimary site contact
<WHERE>yesnosite affiliation
<MAIL>yesnosite mailing address
<PRIMEFAX>
<FAX1>
yesnoprimary fax number (to which Query Reports are sent)
<FAX2>yesnosecondary fax number
<PHONE1>yesnoprimary contact's phone number
<PI>yesnoprincipal investigator
<PHONE2>yesnoprincipal investigator's phone number
<REPLYTO>yesnoemail address to which replies made to emailed Query Reports will be sent
<NUM>yesno external report name composed of site ID, date (yymmdd), and page, e.g. 025-080115-01.
<NAME>yesyes external report name composed of site ID and date only, e.g. 025-080115
<PAGE>yesyespage number of Query Report
<DAY>yesyestwo-digit day of month
<MON>yesyesthree-character month of year
<YEAR>yesyesfour-digit year
<WKDAY>yesyesthree-character day of week
<TIME>yesyestime of day (hh:mm:ss AM/PM), e.g. 01:12:22 PM
<DATE>yesyesdate (ddd mmm dd hh:mm:ss yyyy), e.g. Tue Jan 15 14:34:07 2018

[a] The variable <CENTER> is also supported for backwards compatibility


Table 2.59. DFreportstyle - DFdiscover Report styling

Usual NameDFreportstyle
Typeclear text
Created Bytext editor
Used ByDFdiscover reports, excluding Legacy reports
Field DelimiterNA
Record DelimiterNA
Comment DelimiterNA
Fields/RecordNA
Description

The file contains two optional sections, a script section and a style section. Both sections are optional. The script section contains an array, in JSON array notation, of colors for use in chart rendering. These values define the Palette picker. The style section contains CSS that is added to the head of the report output. This CSS can style the text and general appearance of reports.

Example

<script type="application/json" id="dfreportjson">{
"palettes": {
    "Corporate": ["#26456e", "#3a87b7", "#b4d4da", "#1c5998", "#67add4", "#1c73b1", "#7bc8e2"],
    "Diverging" : ["#000066", "#6699ff", "#ffff00", "#3333ff", "#99ccff", "#ffff99", "#cc9900",
    "# 3366ff", "#ccccff", "#ffff66", "#663300"],
    "Monochrome": ["#1a1a1a", "#666666", "#b3b3b3", "#333333", "#808080", "#cccccc", "#4d4d4d",
    "#999999", "#e6e6e6"],
    "Color blind": ["#006ba4", "#ff800e", "#595959", "#5f9ed1", "#c85200", "#898989", "#a2c8ec",
    "#ffbc79", "#cfcfcf"]
}
}</script>
<style id="dfreportcss">
/* Body font */
body {
    font: 100% arial, sans-serif;
}
/* Title font */
.contextText.reportNameText {
    font: italic bold 1.5em Helvetica, serif;
}
/* Heading font */
.c3-title {
    font: 1.2em Helvetica, serif;
}
/* Axis label font */
.c3-axis-y-label, .c3-axis-x-label {
    font: normal 1.2em Helvetica, sans-serif;
}
</style>


2.9.  The study lut directory

This directory contains all the lookup tables used in the study.

Table 2.60. Lookup tables

Usual NameNone
Typeclear text
Created Bytext editor
Used ByDFexplore, DFbatch
Field Delimiter|
Record Delimiter\n
Comment DelimiterNA
Fields/Record1+
Description

A lookup table is a simple ASCII file. If it is anything other than this, an error message will appear on the command-line upon starting DFbatch.

Each lookup table file must be associated with a symbolic table name in the lookup table map in order to be used by the dflookup function or in DFexplore. The lookup table map is described in DFlut_map - lookup table map.

Within a lookup table, each record has at least 1 field. The first field is a short acronym (the search field), and the subsequent fields are the lookup text. If the record has only one field, it is the search and the result field (this is useful for spell checking). If the record has 2 fields, the first field is the search key and the second is the return value.

An example query lookup table with two fields is illustrated below.


miss|Please provide a response.
dtformat|Date format is YYYY/MM/DD. Please review and correct this date.
dtillegal|Date provided is illegal. Legal dates are 2016/01/01-today.
dtbeforeic|Date provided is before date of informed consent.
ongo|End date is provided, but Ongoing is checked. 
enddt|End date is prior to Start date. 

Records may also have 3+ fields (e.g COSTART tables, MedDRA), where the first field is the search key and all other fields are returned as a single delimited string that can be parsed using the dfgetfield function.

Within the lookup table structure, the search field is typically short but has no maximum length. The lookup text fields have no maximum length; however, they are truncated to the maximum length of the data field into which they are inserted.

Multi-field lookup tables can also support a more flexible structure as illustrated below.


#N:LL Term|Pref Term|SOC Term|LL Code
#L:Low Level Term|Preferred Term|System Organ Class|Low Level Code
#F:1|1-4
Abdomen enlarged|Abdominal distension|Gastrointestinal
disorders|10000045
Abdomen mimicking acute|Acute abdomen|Gastrointestinal
disorders|10000047
Abdominal cramp|Abdominal pain|Gastrointestinal disorders|10000056

These lookup tables contain 3 header rows which define the structure of the table.

  • The first row begins with '#N:' followed by a short column name for each field, which appears above the scrolling list of entries in the lookup dialog displayed by an edit check.

  • The second row begins with '#L:' followed by a longer descriptive label for each field. This appears in the top section of the lookup dialog where the field values for the current row are displayed, and where the user can indicate which fields to search.

  • The third row begins with "#F:" followed by 2 fields: the 1st lists the fields to be searched by dflookup() for a match and the 2nd lists the fields to be returned when a match is found or selected by the user. If multiple return fields are specified they are returned to the edit check as a '|' delimited string, which can be parsed using dfgetfield().

If a lookup table is defined for a study data field, the defined lookup text can be retrieved in 2 ways. If the user remembers the acronym (first field) the lookup value can be entered by typing the acronym in the current data field and pressing Enter. The acronym is then replaced with the value from the matching lookup table record. Matching on the acronym is performed case-insensitive. Alternatively the user can simply press Enter without giving an acronym, to pop-up a scrolling list of all acronyms and their lookup text, and then click on the desired choice.

Example
a|before
AA|auto accident (MVA)
A&P|anterior & posterior
abd|abdomen
abg|arterial blood gases
ac|before meals
acid phos|acid phosphatase
ACLF|adult congregate living facility
ACTH|adrenocorticotrophic hormone
acute MI|acute myocardial infarction
ad|right ear
Ad|up to
Ad lib|as desired
BaE|barium enema
Ba|barium
BB|blood bank
BCP|biochemical profile
BE|barium enema
BEE|basal energy expenditure

2.10.  The study work directory

This directory contains summary files created by DF_QCupdate, DFdiscover retrieval files, and temporary files created during the execution of reports and other programs.

Table 2.61. DFX_ccycle - cycle conditions met

Usual NameDFX_ccycle
Typeclear text
Created ByDF_QCupdate
Used ByDF_PTvisits
Field Delimiter|
Record Delimiter\n
Comment DelimiterNA
Fields/Record4+
Description

This file records the conditions defined in the conditional cycle map that were met for each subject. It is updated each time DF_QCupdate is run.

Table 2.62, “DFX_ccycle conditional cycle map conditions that were met” describes the data recorded for each of these conditions.

Example

The following example shows 3 conditions (1,4 and 6), that were met for subject 11020. These conditions were met at visits 10,5 and 60 respectively, with data values 2, 98 and 0 respectively. To determine the actions triggered by these conditions we would need to consult the conditional cycle map to determine which cycles are affected by each condition.

11020|10|1|2
11020|5|4|98
11020|60|6|0


Table 2.62. DFX_ccycle conditional cycle map conditions that were met

Field #ContainsDescription
1Subject IDsubject ID number
2Visit Numbervisit or sequence number at which the condition was met, taken from the IF statement if the condition includes both IF and AND statements
3Condition Numbercondition number, from the order in which conditions are defined in the conditional cycle map
4+data value(s)the database value(s) that resulted in the condition being met, for each IF and AND statements defined in the condition (in statement order)

Table 2.63. DFX_cvisit - visit conditions met

Usual NameDFX_cvisit
Typeclear text
Created ByDF_QCupdate
Used ByDF_PTvisits
Field Delimiter|
Record Delimiter\n
Comment DelimiterNA
Fields/Record4+
Description

This file records the conditions defined in the conditional visit map that were met for each subject. It is updated each time DF_QCupdate is run.

Table 2.64, “DFX_cvisit conditional visit map conditions that were met” describes the data recorded for each of these conditions.

Example

The following example shows 3 conditions (1,4 and 6), that were met for subject 11020. These conditions were met at visits 10,5 and 60 respectively, with data values 2, 98 and 0 respectively. To determine the actions triggered by these conditions we would need to consult the conditional visit map to determine which visits are affected by each condition.

11020|10|1|2
11020|5|4|98
11020|60|6|0


Table 2.64. DFX_cvisit conditional visit map conditions that were met

Field #ContainsDescription
1Subject IDsubject ID number
2Visit Numbervisit or sequence number at which the condition was met, taken from the IF statement if the condition includes both IF and AND statements
3Condition Numbercondition number, from the order in which conditions are defined in the conditional visit map
4+data value(s)the database value(s) that resulted in the condition being met, for each IF and AND statements defined in the condition (in statement order)

Table 2.65. DFX_cplate - plate conditions met

Usual NameDFX_cplate
Typeclear text
Created ByDF_QCupdate
Used ByDF_PTvisits
Field Delimiter|
Record Delimiter\n
Comment DelimiterNA
Fields/Record4+
Description

This file records the conditions defined in the conditional plate map that were met for each subject. It is updated each time DF_QCupdate is run.

Table 2.66, “DFX_cplate conditional plate map conditions that were met” describes the data recorded for each of these conditions.

Example

The following example shows 3 conditions (1,4 and 6), that were met for subject 11020. These conditions were met at visits 10,5 and 60 respectively, with data values 2, 98 and 0 respectively. To determine the actions triggered by these conditions we would need to consult the conditional plate map to determine which plates are affected by each condition.

11020|10|1|2
11020|5|4|98
11020|60|6|0


Table 2.66. DFX_cplate conditional plate map conditions that were met

Field #ContainsDescription
1Subject IDsubject ID number
2Visit Numbervisit or sequence number at which the condition was met, taken from the IF statement if the condition includes both IF and AND statements
3Condition Numbercondition number, from the order in which conditions are defined in the conditional plate map
4+data value(s)the database value(s) that resulted in the condition being met, for each IF and AND statements defined in the condition (in statement order)

Table 2.67. DFX_cterm - termination conditions met

Usual NameDFX_cterm
Typeclear text
Created ByDF_QCupdate
Used ByDF_PTvisits
Field Delimiter|
Record Delimiter\n
Comment DelimiterNA
Fields/Record4+
Description

This file records the conditions defined in the conditional termination map that were met for each subject. It is updated each time DF_QCupdate is run.

Table 2.68, “DFX_cterm conditional termination map conditions that were met” describes the data recorded for each of these conditions.

Example

The following example shows 3 conditions (1,4 and 6), that were met for subject 11020. These conditions were met at visits 10,5 and 60 respectively, with data values 2, 98 and 0 respectively. To determine the actions triggered by these conditions we would need to consult the conditional termination map to determine which cycles are affected by each condition.

11020|10|1|2
11020|5|4|98
11020|60|6|0


Table 2.68. DFX_cterm conditional termination map conditions that were met

Field #ContainsDescription
1Subject IDsubject ID number
2Visit Numbervisit or sequence number at which the condition was met, taken from the IF statement if the condition includes both IF and AND statements
3Condition Numbercondition number, from the order in which conditions are defined in the conditional termination map
4+data value(s)the database value(s) that resulted in the condition being met, for each IF and AND statements defined in the condition (in statement order)

Table 2.69. DFX_keys - key fields for all required plates

Usual NameDFX_keys
Typeclear text
Created ByDF_XXkeys
Used ByDF_CTvisits, DF_PTcrfs, DF_QCupdate
Field Delimiter|
Record Delimiter\n
Comment DelimiterNA
Fields/Record5
Description

This file records the key fields from all required plates found in the database. It is updated each time DF_XXkeys is run.

Table 2.70, “DFX_keys key fields from all required plates” describes the data recorded for each of these conditions.

Example

The following example shows 4 records for subject 1044, for plates 3,2,1 and 2 respectively at visits 51,61,92 and 211 respectively. All plates have status 1=final and are at validation level 7.

1044|3|51|1|7
1044|2|61|1|7
1044|1|92|1|7
1044|2|211|1|7


Table 2.70. DFX_keys key fields from all required plates

Field #ContainsDescription
1Subject IDsubject ID number
2Plate numberCRF plate number
3Visit Numbervisit or sequence number
4Status1-7
5Validation level1-7

Table 2.71.  DFX_schedule - subject scheduling and visit status

Usual NameDFX_schedule
Typeclear text
Created ByDF_QCupdate
Used ByDF_QCreports, DF_PTmissing, DF_PTvisits
Field Delimiter|
Record Delimiter\n
Comment DelimiterNA
Fields/Record16 for cycle records, and 18 for visit records
Description

This file records the current scheduling and status of all cycles and visits defined in the study visit map, for each subject. It is updated each time DF_QCupdate is run.

Table 2.72, “field definitions for cycle records in DFX_schedule describes each field in the cycle records, and Table 2.73, “field definitions for visit records in DFX_schedule describes each field in the visit records.

Example

The following example shows the current status for one subject (id=1031) in a study having 3 cycle. The screening cycle consists of visits 91 and 92. The in-study cycle is required and has 8 visits beginning with pre-baseline visit 51 and ending with early termination visit 81. The end cycle contains a single abort visit (visit number 80).

1031|1|0|C|S|1|7||||||03/09/21|37884||
1031|1|0|91|X|1|7|||||||03/09/21|37884|||
1031|1|0|92|X|1|1|||||||03/09/28|37891|||
1031|1|1|C|R|1|7||||||~03/10/07|37900||
1031|1|1|51|P|1|7|||||||03/10/05|37898|03/10/05|37898|
1031|1|1|0|B|4|0|-1|10|51||||||||
1031|1|1|61|r|1|1|||||||04/01/06|37991|||
1031|1|1|3|S|2|1|||||||04/01/06|37991|||
1031|1|1|6|S|1|0|||||||04/04/07|38083|||
1031|1|1|9|S|1|0|||||||04/07/07|38174|||
1031|1|1|12|T|1|0|||||||04/10/06|38265|||
1031|1|1|81|E|3|0|||||||||||
1031|1|2|C|E|0|0||||||||||
1031|1|2|80|A|3|0|||||||||||


Table 2.72. field definitions for cycle records in DFX_schedule

Field #ContainsDescription
1Subject IDsubject ID number
2Site IDclinical site number
3Cycle Numbercycles are numbered sequentially within the visit map, using 0 for screening, if present, and starting at 1 for the first in-study cycle.
4Cthe capital letter C appears in this field to distinguish cycle records from visit records
5Cycle Typecycles are defined in the visit map as one of: S=screening, R=in-study required, O=in-study optional, C=in-study conditional, and E=end
6Cycle Needcycle need, after applying all conditional and termination rules, can be one of: 0=unknown, 1=required, 2=next required cycle, 3=optional, and 4=excluded
7Cycle Statusthe current status of the cycle (as of the date on which DF_QCupdate was last run) can be one of: 0=not done, 1=overdue, 7=done, 8=cycle has terminated, 9=cycle was aborted
8Condition needcycle need set by a condition in the conditional cycle map; one of: 0=optional, 1=required, -1=excluded
9Condition numberthe number of the condition as defined within the conditional cycle map
10Condition sequence numbervisit or sequence number at which the condition was met (from IF statement)
11Start datescheduled start date for the cycle
12Start dayscheduled start day (days since Jan 1,1900) for the cycle
13Baseline datebaseline visit date for the cycle
14Baseline daybaseline visit day (days since Jan 1,1900) for the cycle
15Termination datetermination date for the cycle
16Termination daytermination day (days since Jan 1,1900) for the cycle

Table 2.73. field definitions for visit records in DFX_schedule

Field #ContainsDescription
1Subject IDsubject ID number
2Site IDclinical site number
3Cycle Numbercycles are numbered sequentially within the visit map, using 0 for screening, if present, and starting at 1 for the first in-study cycle.
4Visit/Sequence Numbera unique subject assessment number in the range 0-65535
5Visit Typeone of the 12 supported visit types: X=screening, P=pre-baseline, B=baseline, S=scheduled follow-up, T=cycle termination, W=cycle termination windows, F=final, O=optional, E=early cycle termination, A=abort all follow-up, R=required on termination, and r=required on next scheduled visit
6Visit Needvisit need, after applying all conditional and termination rules, can be one of: 0=unknown, 1=required, 2=next required visit, 3=optional, and 4=excluded
7Visit Statusthe current status of the visit (as of the date on which DF_QCupdate was last run) can be one of: 0=not done, 1=overdue, 2=recorded as missed, 7=done, 8=done and cycle terminates, 9=done and aborts all follow-up
8Condition needvisit need set by a condition in the conditional visit map; one of: 0=optional, 1=required, -1=excluded
9Condition numberthe number of the last condition met within the conditional visit map
10Condition sequence numbervisit or sequence number at which the condition was met (from IF statement)
11Missed Visit Plateplate number of missed visit plate received for this visit
12Early Termination Plateplate number of early cycle termination plate received for this visit
13Conditional Termination Numberthe number of the last condition met in the conditional termination map
14Start datescheduled due date
15Start dayscheduled due day (days since Jan 1,1900)
16Visit dateactual date on which the visit was performed
17Visit dayactual day (days since Jan 1,1900) on which the visit was performed
18Days Post-Terminationa positive number indicates that the visit was performed this many days following termination

Table 2.74. DFX_time1 - date and time from receipt to last modification

Usual NameDFX_time1
Typeclear text
Created ByDF_XXtime
Used ByDF_CTcrfs, DF_PTqcs, DF_WFfaxes
Field Delimiter|
Record Delimiter\n
Comment DelimiterNA
Fields/Record21
Description

This file records the date and time each CRF page was processed from fax arrival to last record modification. It is updated each time DF_XXtime is run. A related file, named DFX_dfin, contains the same information as DFX_time1, for records that are still in the DFdiscover new queue. These records have not been validated and entered into the study database and thus may contain ICR errors in the key fields.

Table 2.75, “DFX_time1 timing data for each CRF page” describes the data recorded for each of these conditions.

Example

The following example shows 4 records for subject ID 1501. The first 2 records are for plate 1 at visit 0, and the second 2 records are for plate 2 at visit 1. In both cases the first record is the primary and the second is a secondary record. In all 4 records the fax arrival date is missing. This will be the case if the record was not submitted by fax or email, but instead entered using raw data entry or ASCII record import, or if the fax_log is missing or has been trimmed.

1|1501|0|1|1|6|1995160154|03/30/95||95/04/24|95/04/24|34787|0|34812|34812||09:43:37|09:43:37|0|583.61|583.61
1|1501|0|1|4|4|1995130086|03/30/95||95/03/30|95/04/24|34787|0|34787|34812||18:41:04|09:43:43|0|1121.07|583.71
1|1501|1|2|1|6|1995200106|04/12/95||95/05/19|95/05/23|34800|0|34837|34841||16:46:37|11:12:18|0|1006.62|672.3
1|1501|1|2|5|5|1995160154|04/12/95||95/04/24|95/05/19|34800|0|34812|34837||09:43:59|16:46:39|0|583.98|1006.65


Table 2.75. DFX_time1 timing data for each CRF page

Field #ContainsDescription
1Site IDclinical site number
2Subject IDsubject ID number
3Visit Numbervisit or sequence number
4Plate NumberCRF plate number
5Record Status1-6,0: 1=final, 2=incomplete, 3=pending, 4=FINAL, 5=INCOMPLETE, 6=PENDING, 0=missed
6Record Validation Level1-7
7fax nameyyyywwssss: yyyy=year, ww=week of the year, ssss=order number of fax within the week
8visit datedate the visit occurred, from DFX_visit.date, in yy/mm/dd format
9fax datedate the fax was received in yy/mm/dd format
10creation datedate the data record was created, in yy/mm/dd format
11modification datedate the data record was last modified, in yy/mm/dd format
12visit julian daydate the visit occurred, from DFX_visit.date, in days since Jan 1,1900
13fax julian daydate the fax was received in days since Jan 1,1900
14creation julian daydate the data record was created, in days since Jan 1,1900
15modification julian daydate the data record was last modified, in days since Jan 1,1900
16fax timetime the fax was received in hh:mm:ss format
17creation timetime the data record was created in hh:mm:ss format
18modification timetime the data record was last modified in hh:mm:ss format
19fax minutestime the fax was received, in number of minutes into the day (0-1440)
20creation minutestime the data record was received, in number of minutes into the day (0-1440)
21modification minutestime the data record was last modified, in number of minutes into the day (0-1440)

Table 2.76.  DFX_visit.dates - value in the database of all visit dates

Usual NameDFX_visit.dates
Typeclear text
Created ByDF_XXkeys
Used ByDF_CTvisits, DF_PTcrfs, DF_QCupdate
Field Delimiter|
Record Delimiter\n
Comment DelimiterNA
Fields/Record5
Description

This file records the value of all dates in the database that use the VisitDate attribute. Only one date using the VisitDate attribute may appear on each CRF plate, but different plates for the same visit may contain VisitDate fields, and thus it is possible to have more than one record in for each visit for any given subject. A related file, named , records the preferred visit date for each visit, as defined in the study visit map. These 2 files are updated each time DF_XXkeys is run.

Table 2.77, “DFX_visit.dates the value of all dates using the VisitDate attribute” describes the data recorded for each visit date.

Example

The following example shows 5 records for subject ID 1127, for visits 0,3,6,51. Note that there are 2 entries for visit 51, one from plate 10 and one from plate 13.

1127|0|03/08/19|37851|3
1127|3|03/11/20|37944|5
1127|6|04/02/18|38034|5
1127|51|03/08/10|37842|10
1127|51|03/08/10|37842|13


Table 2.77. DFX_visit.dates the value of all dates using the VisitDate attribute

Field #ContainsDescription
1Subject IDsubject ID number
2Visit Numbervisit or sequence number
3datethe date value in the format used by the VisitDate attribute
4julian valueThis is a modified julian value for the date, calculated as the number of says since Jan 1,1900.
5Plate NumberThe plate on which the visit date is recorded.