Oracle® Clinical Remote Data Capture Classic Data Entry User's Guide Release 4.6.2 Part Number E18824-01 |
|
|
View PDF |
The Activity List window is a standard RDC Classic feature that allows users to load a workset in the RDC Spreadsheet based on the selection of a task, rather than search criteria defined in the Search window. When it is present in a session, the Activity List serves as a more intuitive alternative to the Search window that allows users to begin working on tasks immediately.
Administration of the Activity List includes configuring activities and enabling RDC Classic sessions to use the Activity List window.
You use the "Default Search Option" setting in the RDC Classic Configurations Settings to specify that the Activity List window is present when a user starts an RDC Classic session.
When Default Search Option is set to ACTIVITY, all sessions associated with the configuration use the Activity List window as the default tool to specify worksets. Users have the option to access the Search window, either from the Activity List window or the File menu.
When the parameter is set to SEARCH, all sessions associated with the configuration use the Search window to specify worksets and the Activity List window is not accessible.
When the Activity List window is open, it is positioned just above the Summary task tab in the RDC Workspace. This allows the user to view information that is displayed in the task tab.
The Summary task tab displays information that tracks with the scope of the node that is currently selected in the Navigation pane of the Activity List window. Three summary views are available, one for each scope:
Study
Site
Patient
Refer to "Summary" for details.
When you install RDC Classic, there are a set of activities that are automatically available for use in the Activity List window. In most cases, you will use these as the basis to develop a custom list of activities.
Study
Review All <xx> Active discrepancies – if there is at least one CRF in the study with an active discrepancy for the current user
Review All <xx> Other discrepancies – if there is at least one CRF in the study with an other discrepancy (and no active discrepancies) for the current user
Show all data for Study <study_name> – if there is at least one CRF entered for a patient in the study
Site
Review All <xx> Active discrepancies for Site <site_name> – if there is at least one CRF in the site with an active discrepancy for the current user
Review All <xx> Other discrepancies <site_name> – if there is at least one CRF in the site with an other discrepancy (and no active discrepancies) for the current user
Show all data for Site <site_name> – if there is at least one CRF entered for a patient in the site
Patient
Show all Data for Patient <patient_id> - if there is at least one CRF entered for the patient
Begin new Data Entry for Patient <patient_id> - if no CRFs have been entered for the patient.
This section consists of the following topics:
The Activity List consists of two major modules, one for the Navigation pane and one for the Task pane. This section consists of the following topics:
Figure 19-1 Example of the Activity List Window
The Navigation pane uses a hierarchical tree structure with three levels of organization. Each level corresponds to a scope. Each instance of a level that is displayed in the Navigation pane is referred to as a node.
Table 19-1 Scope, Number of Nodes, and Explanation
Scope | Number of Nodes | Explanation |
---|---|---|
Study |
One |
Only one study can be accessed at a time. |
Site |
1 to ? |
Based on the security settings specified for the user. This must be at least one, but is only limited by the number sites defined in the study. |
Patient |
1 to ? |
Based on the number of patient numbers that are assigned to the site. |
The Task pane lists the activities that are available to the user for the currently selected node. When a user clicks an activity, the system alters the search criteria appropriately, queries the database for the search criteria and loads the result into the RDC Spreadsheet as the workset.
Initially, the Study node is active and the Task pane lists the activities associated with that scope and user role. As the user selects nodes in other scopes, the list of activities in the Task pane changes to display the set of activities that are associated with the scope, the specific node, and the role of the user.
When the Activity List window opens as part of session initiation, the scope is set to Study and all of the activities that are available to the user's role at that scope are listed in the Task pane. As the user changes the scope by selecting other nodes, the list of activities in the Task pane changes accordingly.
Each activity is a pre-defined short cut that is displayed as a hyperlink in the Task pane. There are two types of links:
P (Procedure) — Queries all patients/CRFs within the current node that meet the criteria set out in the activity.
U (URL) — Launches a browser instance and navigates to the URL associated with the activity.
Each activity can have certain conditions placed on it. These conditions can define when the system displays the activity in the Task pane, even when its associated scope is active. If a condition is defined for an activity, the condition must evaluate to "TRUE" in order for the activity to be included in the displayed set of activities. If there are no conditions defined for an activity, the activity is always displayed for its specific scope and user roles.
When the user selects a node, the system evaluates each activity and displays those that are appropriate.
The RDC_ACTIVITY_LIST uses the values in the RDC_ACTIVITIES Table to create a URL object (object type of RDC_ACTIVITY_T) that contains the text of the hyperlink and the code that is executed when the user selects the activity. The text in this object is previously parsed and includes the values for any TAGS included in the activity text.
The primary code that processes this object resides in a function called, RDC_USER_ACTIVITY_TAGS.getActivities. This function does the following:
Creates the activity text by parsing the TEXT value to find, evaluate, and substitute appropriate strings for tags that occur within the text; for example, "%OPEN_DISCREPS% may evaluate to "23", which this function inserts in the activity text
Determines if, based on the result of the display expression (the DISPLAY_EXPR column), the activity should be included in the Task pane; if the field evaluates to FALSE, the activity is not included
If the value of ACTIVITY_TYPE is "U" (for URL), then parse the ACTIVITY_EXEC field in case the URL contains a TAG; for example, the URL may contain "%CURR_STUDY%", which returns the name of the current study and inserts it in the URL
Based on the above processing, if the activity can be included in the list of activities, it is added to the object table RDC_ACTIVITY_LIST_T. The object view, RDC_ACTIVITY_LIST, is based on this object table.
When all activities are parsed and placed into the object table RDC_ACTIVITY_LIST_T, the RDC_USER_ACTIVITY_LIST View presents all applicable activities in the Task pane.
An example is presented here to illustrate the system processing entailed in a single activity.
The following conditions are assumed for this example:
The user is part of the CRA user group.
The user has access to the HANDSON study and sites 001 and 002.
The scope of the activity is set to XSITE, that is, across sites.
The scope in the Navigation pane is STUDY, which simulates initial login and session initiation.
There are active discrepancies associated with CRFs in site 001, but not in site 002.
Note that because the scope is XSITE, the system will process each activity for every accessible site.
Table 19-2 describes the record in the RDC_ACTIVITIES table for this example.
The system processes the relevant record in the RDC_ACTIVITIES table in the following manner:
The system populates the RDC_ACTIVITY_LIST object view. The bulk of the processing occurs through the RDC_USER_ACTIVITY_TAGS.getActivities function.
For each activity listed in the RDC_ACTIVITIES table, the function getActivities(ID, SCOPE, TEXT, TYPE, EXEC, DISPL_EXPR) is processed. The record that is listed in Table 19-2, "Columns and Field Values for Example Activity" is processed:
The getActivities function calls a local procedure called lSetLink for each site to which the user has access. This occurs because the value of Activity_Scope is 'XSITE'.
The conditions of the example generate two lSetLink calls:
lSetLink('Review %OPEN_DISCREPS% active discrepancies for site %P_SITE%', 'rdc_activity_std.process_open_discreps', '001','P', '%OPEN_DISCREPS%>0', 1, myList);
lSetLink('Review %OPEN_DISCREPS% active discrepancies for site %P_SITE%', 'rdc_activity_std.process_open_discreps', '002','P', '%OPEN_DISCREPS%>0', 2, myList);
The lSetLink procedure calls a function called 'parseActivity', which evaluates the text "Review %OPEN_DISCREPS% active discrepancies for site %P_SITE%".
Also, if the ACTIVITY_TYPE is 'U', the function evaluates the ACTIVITY_EXEC value, because the URL is allowed to contain one or TAGS. However, in the example, ACTIVITY_TYPE is 'P', so the parseActivity function evaluates TEXT value.
The two calls to parseActivity are:
The parseActivity function evaluates the first call, which is displayed in Step 4, above, in the following manner:
Locates and evaluates TAGS, using the RDC_ACTIVITY_TAGS table to identify what should be executed or substituted for the tag:
%OPEN_DISCREPS% – this tag executes RDC_ACTIVITY_STD.OPEN_DISCREPS; the TAG Type is 'F' (function). The function is executed and evaluates to '3'.
%P_SITE% – this tag substitutes for SITE; the TAG Type is 'P' (parameter substitution). The parameter evaluates to '001'
Transforms the TEXT value with the TAG substitution so that it is:
Decides if the activity should be displayed in the Task pane. If the DISPLAY_EXPR is null or evaluates to TRUE, then the activity is displayed.
The value of DISPLAY_EXPR is ('%OPEN_DISCREPS%>0'). Because it is not null, it must be evaluated.
The value of %OPEN_DISCREPS% was found to be '3'. So the expression in DISPLAY_EXPR is '3 > 0'.
Because the DISPLAY_EXPR evaluates to TRUE, the process adds the item to the object table.
The second call is evaluated in a similar manner, however, in the case of site 002, the RDC_ACTIVITY_STD.OPEN_DISCREPS evaluates to '0' (that is, there are no active discrepancies for site 002), which causes the DISPLAY_EXPR to become '0 > 0', which is FALSE. Therefore, the site 002 activity is not added to the object table.
Based on the processing of the parseActivity function, one activity has been added to the object view. The URL_INFO is:
Text = Review 3 active discrepancies for site 001
Activity_Exec = RDC_ACTIVITY_STD.PROCESS_OPEN_DISCREPS
Site = 001
When the user selects an activity that is displayed in the Task pane, the initial system response is based on the ACTIVITY_TYPE.
If the ACTIVITY_TYPE is 'U', which indicates the activity is a URL, the system does the following:
Web.show_document( {value in Activity_Exec column} )
For example:
Web.show_document(1014)
where 1014 is the study ID.
This causes the client computer to start the default Internet browser and navigate to the specified URL.
If the ACTIVITY_TYPE is 'P', which indicates the activity is a procedure, the system response is more involved, as outlined in the following steps:
RDC_USER_ACTIVITY_PROCESS.CLEAR_STACK
– this clears the memory stack that the system uses to populate with the activity query.
SET_LIST.RESET_ALL
– this is an RDC Classic Form Program unit that resets all of the values in the SEL block, which comprises all of the Search window fields.
RDC_ACTIVITY_STD.PROCESS_OPEN_DISCREPS
add_to_stack('SITE','001'); – adds SITE to the memory stack
add_to_stack('DISCREP_STATUS','ACTIVE'); – adds DISCREP_STATUS to the memory stack
UTILS.PROCESS_WIZARD_SEARCH – retrieves the search parameters from the stack, sets each parameter in the Search window and executes the search, which is analogous to clicking the OK button in the Search window:
sets SITE = 001
sets DISCREP_STATUS=ACTIVE
This loads the Search window with the appropriate parameters and executes UTILS.PROCESS_SEL_OK. This is the same processing that executes when a user manually changes Search window parameters.
The result of this processing is that the workset that contains the CRFs with active discrepancies from site 001 is displayed in the RDC Spreadsheet.
This section describes the tables that are associated with the Activity List window.
Table 19-4 lists the column names and descriptions of values for the RDC_ACTIVITIES table. This table contains the setup information for all the activities that are defined in the system.
Table 19-4 Columns in the RDC_ACTIVITIES Table
Column Name | Description of Value |
---|---|
A unique key for the activity. |
|
Role names for which the Activity will be displayed. Each user logging into RDC Classic has one role associated with them. For example, when a Data Manager (role DM) logs into the system, activities with the column USER_ROLE = '%' or the column USER_ROLE contains the DM role will be displayed. The Activity may still not display if it does not PASS a criteria setup in the DISPLAY_EXPR column. Please read the notes on that column to understand how this criterion is used. This column can be one of three different role values (example value follow each in parentheses):
|
|
This value consists of the text wording of the activity in the English version of RDC Classic. It may contain TAGS that provide substitution variables. This value is always in English. |
|
The scope in which the activity is eligible for display in the Task pane. There are for possible values:
|
|
This value is either:
|
|
This value is either the procedure name, for ACTIVITY_TYPE "P", or the actual URL, for ACTIVITY_TYPE "U". |
|
This value can either be null or it may be the display expression associated with the activity. If the value is not null, the expression must evaluate to TRUE in order for the system to include the activity in the Task pane. |
The value in each TEXT column record is the actual wording that is presented to the user as an activity and any TAGs that allow for variable substitution, for example, Site Number, number of Active Discreps for a site, etc. TAGs are denoted with % signs, for example; %OPEN_DISCREPS%. When a TAG is found in the TEXT, the process locates the TAG in the RDC_ACTIVITY_TAGS Table and runs the code named in the FUNCTION_NAME of this table to produce the variable substitution for the TAG. A complete example may be as follows:
TEXT column field = Review %OPEN_DISCREPS% active discrepancies for site %P_SITE%
Activity shown - "Review 3 active discrepancies for site 001"
Currently, there are four SCOPE levels:
STUDY is the highest level and will reflect activities for all sites for which the user has access.
XSITE also displays activities at the STUDY scope level BUT will break up the activities for each SITE for which the user has access.
SITE reflects activities for the current SITE selected in the Navigation Pane.·
PATIENT reflects activities for the current PATIENT selected in the Navigation Tree.Scope levels are based on the users selection within the Navigation Tree.
Initially, the SCOPE is set to STUDY upon entering the Activity List.
There are two types of Activities:·
P for procedure, meaning the activity will start a procedure within the database named in the ACTIVITY_EXEC column of this table. For example; rdc_activity_std.process_open_discreps·
U for URL, indicates that the activity will initiate a new browser session and navigate to the URL found in the ACTIVITY_EXEC column of this table. ·
For example; http://opa-apps26.us.oracle.com/v_rsdir/study%CURR_STUDY%.htm
Note: The code that can be executed for activity type U can also contain TAGS. The procedure substitutes a value for each TAG during the creation of the activity. For example, the URL above, for a study named 'HANDSON', would be processed as: http://opa-apps26.us.oracle.com/v_rsdir/studyHANDSON.htm
This column holds the Procedure name or URL, depending on value of the ACTIVITY_TYPE = 'P' or 'U', respectively. For example: P = rdc_activity_std.process_open_discreps; U = http://opaapp.us.ora.com/v_rsdir/study%CURR_STUDY%.htm
This column contains the final display criteria for an activity. After making sure that the activity is at the correct scope level, user role matches the activity role, the DISPLAY_EXPR, possibly, will determine whether the activity is displayed or not.If a condition is present in this column then it must evaluate to TRUE to be displayed. It is mainly used to suppress activities that would yield a NO DATA FOUND error. For example, if we have an activity like: Review %OPEN_DISCREPS% active discrepancies for site %P_SITE% then a valid activity might look like: Review 0 active discrepancies for site 002. This will cause the search to retrieve NO CRFs. A valid criteria to place on this activity would be to display this activity only when the number of active discrepancies > 0, i.e. %OPEN_DISCREPS% > 0.
This table contains the tags that are defined in the system and the execution module (function name) that evaluates the tag. Table 19-5 describes the column names and values for the RDC_ACTIVITY_TAGS table.
Table 19-5 Columns in the RDC_ACTIVITY_TAGS Table
Column Name | Description of Value |
---|---|
This value contains the TAG that can be found in the RDC_ACTIVITIES Table columns: TEXT, ACTIVITY_EXEC and DISPLAY_EXPR. When each of these columns is parsed, if a TAG is found, the process searches this column to find the TAG match so that it can identify the code or substitution variable to use to display in place of the TAG. If a match is found it processes the expression found in the FUNCTION_NAME column. |
|
This value describes whether the tag is associated with a function or a parameter substitution. |
|
This value is either the name of the substitution variable or the name of the function in the system. |
Contains the TAG that can be found in the RDC_ACTIVITIES table columns: TEXT, ACTIVITY_EXEC and DISPLAY_EXPR.
The system parses each of these fields and if a TAG is identified, the process searches this field to locate the TAG match so the system can identify the code or substitution variable to use to display in place of the TAG. When a match is found, the system processes the expression found in the FUNCTION_NAME column.
Currently, there are two values for the TAG Function Type:
F (function) – executes the function located in the FUNCTION_NAME field
P (parameter) – sets the TAG to the name of a particular SITE
Depending on the FUNCTION_TYPE value, this value in this field can be one of several types.
If the FUNCTION_TYPE = F then this column holds a database function, for example: rdc_activity_std.open_discreps.If the FUNCTION_TYPE is P then this column holds the keyword SITE. The TAG gets the value of the current SITE being processed.
Table 19-6 describes the column names and values for the RDC_ACTIVITY_COLUMN table. This table lists all the columns that are currently defined for the Search window.
Table 19-6 Columns in the RDC_ACTIVITY_COLUMN Table
Column name | Description of value |
---|---|
ACTIVITY_COLUMN_ID |
This value contains unique key. |
This value contains the name of a column that is defined for the Search window. |
This column holds a list of all the COLUMN names that can be filled in to perform a search. Behind the scenes, the Activity List places values into the different search columns in the Advanced Search screen. There needs to be a valid column name in this table to perform a proper search. If the column is not found, then a search is not performed.
This section describes the views that are used to display the different activities to the RDC Classic application.
This view contains a list of activities, including multiple rows for SITE scope if the user has access to multiple clinical sites. This view is used to create the TEXT of the activities that are displayed in the Task pane. It uses the function RDC_USER_ACTIVITY_TAGS.getActivities to produce the TEXT, including all relevant TAG substitutions. An activity is only present in this view if it has been processed completely and the DISPLAY_EXPR evaluates to TRUE.
CREATE OR REPLACE FORCE VIEW RXC.RDC_ACTIVITY_LIST OF "RDC_ACTIVITIES_T" WITH OBJECT IDENTIFIER (activity_id) AS select a.activity_id, CAST(rdc_user_activity_tags.getActivities( a.activity_id, a.activity_scope, a.activity_type, a.activity_exec, a.display_expr) AS rdc_activity_list_t) FROM rdc_activities a where ( instr(','||a.user_role||',',','||rdc_user_activity_tags.getCurrRole||',') > 0 or a.user_role = '%' ) and instr(rdc_user_activity_tags.getCurrScope,','||a.activity_scope||',') > 0 order by decode(a.activity_scope,'STUDY',1,'XSITE',2,'SITE',3,'PATIENT',4,5), a.activity_id;
This view is queried within RDC Classic to produce the final list of activities that are displayed to the user. It joins the RDC_ACTIVITIES Table with the RDC_ACTIVITY_LIST.
create or replace view rdc_user_activity_list
AS select a.activity_id, a.user_role, a.activity_type, a.activity_scope, t.text, t.activity_exec, t.site
from rdc_activities a, table(select url_info from rdc_activity_list
where activity_id = a.activity_id) t;
This section describes how to define an activity. To illustrate the process, the topics in this section describe the steps to produce the following activity:
For this example activity, the function and the procedure are already coded, however, a new TAG must be constructed.
Note:
The instructions to define a new activity assume the reader has a firm understanding of the structure of Oracle Clinical databases and the SQL language.This section includes the following topics:
The first step in the process of creating a new activity is to copy the demo packages, which are shipped and installed as part of the Oracle Clinical/RDC Classic installation process.
The names you use for the copied files are irrelevant, as long as each is unique. In this section, the string, client, is inserted to make the filenames unique.
At a command prompt, type:
opa_setup <database_name> <code_env>
Change directories to RXC_INSTALL:
cd $RXC_INSTALL
Copy rdc_activity_dmo_ps.sql
to rdc_activity_client_ps.sql
Copy rdc_activity_dmo_pb.sql
to rdc_activity_client_pb.sql
After you create these two package files, you can use them for all subsequent functions and procedures that are required to create new activities.
Edit the file rdc_activity_client_ps.sql
, as follows:
Change the line:
Create or replace package rdc_activity_dmo as
Create or replace package rdc_activity_client as
Change the lines:
end rdc_activity_dmo; /show errorsgrant execute on rdc_activity_dmo to rxclin_read;exec opa_ddl.createdroppublicsynonym('rdc_activity_dmo');
end rdc_activity_client; /show errorsgrant execute on rdc_activity_client to rxclin_read;exec opa_ddl.createdroppublicsynonym('rdc_activity_client');
Change the line:
function num_unapproved return varchar2;
function num_unapp return varchar2;
Change the line:
end num_unapproved;
end num_unapp;
Change the line:
procedure process_unapproved(pSite in varchar2:=null);
procedure process_unapp(pSite in varchar2:=null);
Change the line:
end process_unapproved;
end process_unapp;
As you construct other activities, leave the balance of the information in this package specification as-is, using it as a template for your work. Remove sections as you find them unnecessary for your activities.
When you complete the preceding steps, the rdc_activity_client_ps.sql file should resemble the following code.
Rem Created by copying rdc_activity_dmo_ps.sql into this file name. Rem Create or replace package rdc_activity_client as Rem - Standard variables setup for use in local procedures defined in the body Rem - Do not erase or change Rem /* System wide variables */ vStudy clinical_studies.study%type; nStudyId clinical_studies.clinical_study_id%type; vSite ocl_sites.site%type; nSiteId ocl_sites.site_id%type; vBook dci_books.name%type; nBookId dci_books.dci_book_id%type; vPatient patient_positions.patient%type; nPatientId patient_positions.patient_position_id%type; vRole varchar2(50); vMode varchar2(1); /* Patient variables */ vSex patient_positions.reported_sex%type; /* Patient sex */ dBirth date; /* Date of birth */ vMissingPages varchar2(500); /* List of missing pages */ vPatBook dci_books.name%type; /* Default DCI book */ nCRFs pls_integer; /* Number of CRFs */ nCRFActiveDisc pls_integer; /* Number of CRFs with active discrepancies */ nCRFOtherDisc pls_integer; /* Number of CRFs with other discrep's */ nActiveDisc pls_integer; /* Number of active discrepancies */ nOtherDisc pls_integer; /* Number of other discrepancies */ nClosedDisc pls_integer; /* Number of closed discrepancies */ nCRFVerified pls_integer; /* Number of verified CRFs */ nCRFReverify pls_integer; /* Num of CRFs awaiting re-verification */ nCRFApproved pls_integer; /* Number of approved CRFs */ nCRFReapprove pls_integer; /* Number of CRFs awaiting re-approval */ vFirstVisit varchar2(20); /* First visit */ dFirstMin date; /* Earliest date of first visit */ dFirstMax date; /* Latest date of first visit */ vLastVisit varchar2(20); /* Last visit */ dLastMin date; /* Earliest date of last visit */ dLastMax date; /* Latest date of last visit */ vNextVisit varchar2(20); /* Next visit */ dNextMin date; /* Earliest date of next visit */ dNextMax date; /* Latest date of next visit */ dMinEntry date; /* Earliest data entry date */ dMaxEntry date; /* Latest data entry date */ dMaxMod date; /* Latest data modification date */ Rem - End of package variable setup Rem Rem - Clients new packages added under this comment Rem function num_unapp return varchar2; procedure process_unapp(pSite in varchar2:=null); end rdc_activity_client;/ show errors grant execute on rdc_activity_client to rxclin_read; exec opa_ddl.createdroppublicsynonym('rdc_activity_client');
Edit the rdc_activity_client_pb.sql file as follows:
Change the line:
Create or replace package body rdc_activity_dmo as
Create or replace package body rdc_activity_client as
Change the line:
end rdc_activity_dmo;
end rdc_activity_client;
Change the line:
function num_unapproved return varchar2 is
function num_unapp return varchar2 is
Change the line:
end num_unapproved;
end num_unapp;
Change the line:
procedure process_unapproved(pSite in varchar2:=null) is
procedure process_unapp(pSite in varchar2:=null) is
Change the line:
end process_unapproved;
end process_unapp;
The changes you make to the file in Steps 3 and 4 should result in code immediately before the "end rdc_activity_client;" command line that resembles the following:
function num_unapp return varchar2 is nOut pls_integer; begin begin lGet_internal_ids; if vMode = 'P' then select count(*) into nOut from received_dcis rdci where clinical_study_id=nStudyId and (site_id = nSiteid or nSiteid is null) and rdc.rdci_app_status(vMode,rdci.received_dci_id) in ('NOT APPROVED','UNDONE'); else select count(*) into nOut from received_dcisT rdci where clinical_study_id=nStudyId and (site_id = nSiteid or nSiteid is null) and rdc.rdci_app_status(vMode,rdci.received_dci_id) in ('NOT APPROVED','UNDONE'); end if; exception when no_data_found then nOut := null; end; return to_char(nOut); end num_unapp; procedure process_unapp(pSite in varchar2:=null) is begin if pSite is not null then rdc_user_activity_process.add_to_stack('SITE',pSite); end if; rdc_user_activity_process.add_to_stack('APPROVAL_STATUS','NOT APPROVED'); end process_unapp;
As you construct other activities, leave the balance of the information in this package build as-is, using it as a template for your work. Remove sections as you find them unnecessary for your activities.
You create a new tag using an insert statement for the RDC_ACTIVITY_TAGS Table.
The following table describes the columns that are referenced in the insert statement.
Column | Description |
---|---|
1st | TAG NAME |
2nd | Created when |
3rd | Created by |
4th | Function type |
5th | Function name |
6h | Modification timestamp – insert as NULL |
7th | Modified By – insert as NULL |
The form of the insert statement is:
insert into rdc_activity_tags values ('NUM_UNAPP',sysdate,user,'F','rdc_activity_client.num_unapp',to_date(NULL),NULL);
You create the new activity using an insert statement for the RDC_ACTIVITIES Table.
The following table describes the columns that are referenced in the insert statement.
Column | Description |
---|---|
1st | Activity ID – must be unique, you should specify a large number; RDC Classic ships with IDs < 1000; search for max(activity_id) in the RDC_ACTIVITIES Table to ensure you use a unique ID |
2nd | Created when |
3rd | Created by |
4th | User Role – set to CRA for this example; alternative values are '%' for all roles, or DM, CRA, INV (for multiple roles), or any non-default role defined in the database |
5th | Text of Activity – uses the TAG created in the "Create a new TAG for NUM_UNAPP" section |
6h | Activity Scope – set to SITE for this example; alternative values are: STUDY, XSITE, and PATIENT |
7th | Activity Type – set to 'P' for example; alternative is 'U' for URL |
8th | Display Expression – set for this example to an expression that only displays the activity if CRFs in the unapproved or requires re-approval statuses exist for the user (role) |
9th | Modification timestamp – insert as NULL |
10th | Modified By – insert as NULL |
11th through 14th | Insert as NULL |
The form of the insert statement is:
insert into rdc_activities values (1999000,sysdate,user,'CRA','You have %NUM_UNAPP% CRFs to Approve','SITE','P','rdc_activity_client.process_unapp','%NUM_UNAPP%>0',to_date(NULL),NULL,NULL,NULL,NULL,NULL);
To install the new code and insert the new TAG and activity:
At a command prompt, type:
opa_setup <database_name> <code_env>
Change directories to RXC_INSTALL:
cd $RXC_INSTALL
Log in to SQL*Plus as rxc.
At the SQL prompt, type the following commands:
SQL> @ rdc_activity_client_ps.sql SQL> @ rdc_activity_client_pb.sql SQL> Insert into rdc_activity_tags values ('NUM_UNAPP',sysdate,user,'F','rdc_activity_client.num_unapp',to_date(NULL),NULL); SQL> insert into rdc_activities values (1999000,sysdate,user,'CRA','You have %NUM_UNAPP% CRFs to Approve','SITE','P','rdc_activity_client.process_unapp','%NUM_UNAPP%>0',to_date(NULL),NULL,NULL,NULL,NULL,NULL); SQL> commit;
The activity is ready to be tested.