Medidata Rave® Custom Functions Webinar Implementing the Rave Custom Functions Best Suited to your Clinical Study Requirements Thursday, June 23rd 2011 Clinovo 1208 E. Arques Avenue, Suite 114 Sunnyvale, CA 94085 contact@clinovo.com +1 800 987 6007 www.clinovo.com Today’s Speakers Marc Desgrousilliers – Vice President of Operations at Clinovo Experience: 20 years experience in software and engineering Venkat Sungishala - Sr. Manager of EDC at Clinovo Experience: 5+ years experience of extensive clinical programming & study build using Medidata Rave® Specialties: Medidata certified “Rave 5.6.3/5.6.4 Study Builder” Rave Custom Functions June 23rd 2011 Proprietary and confidential 2 Today’s Agenda Study Build in Rave® Edit Checks and Derivations Benefits of Custom Functions Best Practices around the use of Custom Functions Q&A Rave Custom Functions June 23rd 2011 Proprietary and confidential 3 Study Build in Rave® - Streamlining your Clinical Trial Process - Rave Custom Functions June 23rd 2011 Proprietary and confidential 4 Study Configuration in Rave® Study in Rave® is a collection of eCRFs, folders/visits, matrices and approved user role permissions which satisfies the study protocol Configuration is simple and can be done with good training As you configure the study, you are building standard based global libraries. These will enable you to reduce the overall development time and validation cost Carry out the clinical trial in a structured and timely manner Rave Custom Functions June 23rd 2011 Proprietary and confidential 5 What is configurable in Rave®? UI and solid workflow configuration eCRF/folder/matrix design Controlled access to eCRFs/data entry Edit checks to run the business logic Derivations to calculate values Custom functions to handle dynamic requirements Global library set-up to reuse standard architect elements Example: eCRFs, fields, variables or matrices… Reports configuration adapted to your needs Example : audit trial report, query detail report and monitor visit report… Rave Custom Functions June 23rd 2011 Proprietary and confidential 6 Edit Checks and Derivations - Improved Data Cleaning, Faster Clinical Trial - Rave Custom Functions June 23rd 2011 Proprietary and confidential 7 Edit Checks and Derivations What are Edit checks? Rule/logic applied on a field in a CRF Catching errors earlier in the clinical trial process & improve your data accuracy Example : If the VISITDT is empty then fire a Query with message: The visit date should not be blank What are Derivations? Calculation that derives a value based on the business logic Less data entry & automatic calculation Example : If BIRTHDT and SCRNDT are NotEmpty then Derive AGE field Rave Custom Functions June 23rd 2011 Proprietary and confidential 8 Limitations of Edit Checks and Derivations Edit Checks Derivations Do not support: Do not support: Dynamic folders Complex mathematical algorithms Form inactivation Data in different forms/folders Dynamic subject calendar Email with specific fields data Specific derivations on variables shared across multiple forms Dynamic queries … Auto number generation Chronological order of dates edit checks Dynamic search list … Rave Custom Functions June 23rd 2011 Proprietary and confidential 9 Limitations of Editchecks and Derivations Example: Requirement: Derive ‘DaysDiff’ field in derivation form with difference between SCRNDT in screening form and VISITDT in corresponding Day 1, Day 8 and Day 15 folders Given: Cycle is repeated in folder: Cycle 1, Cycle 2, …, Cycle n Day 1, Day 8 and Day 15 are the folders & exist in all cycles Derivation is a form & exists in Day 1, Day 8 and Day 15 folders Enter: Rave Custom Functions June 23rd 2011 Proprietary and confidential SCRNDT = 01 JAN 2011 Cycle 1>Day 1>VISITDT = 05 JAN 2011 then DaysDiff is derived with 4 Cycle 2>Day 1>VISITDT = 21 JAN 2011 then DaysDiff will be derived with 20 in Cycle 2>Day 1 and also affect the value in Cycle 1>Day 1 folders 10 Custom Functions - Solutions adapted to your Complex Study Protocol Requirements - Rave Custom Functions June 23rd 2011 Proprietary and confidential 11 Basic Concepts of Custom Functions What is a custom function in Rave®? Custom Function defines the business logic implemented on an eCRF It can be a C#, Visual Basic or SQL piece of code developed outside of Rave® and injected into the system to perform an intended action What experience is needed to develop custom functions? Study build experience with Rave® Good knowledge in object oriented programming concepts Good knowledge of C# and SQL programming Rave Custom Functions June 23rd 2011 Proprietary and confidential 12 Benefits of Custom Functions Configuration of dynamic protocol requirements: Dynamic query messages and search lists Configurable AE/SAE emails Role/user based emails Adding/inactivating of forms/folders/matrices Copying data Adding required number of records Visible/invisible fields Data comparisons/validations Standard CFs can be reused for future study builds … Faster Study Build Improved Data Accuracy Flexibility allowing more Customization Rave Custom Functions June 23rd 2011 Proprietary and confidential 13 Categories of Custom Functions Custom Functions (CFs)can be categorized into: Simple CFs Moderate CFs Complex CFs Rave Custom Functions June 23rd 2011 Proprietary and confidential 14 Categories of Custom Functions Simple custom functions Very simple business logic Applied on a single form Example: Add a form in the same folder A few more examples: Populate or derive data into a field in the same form Verify the fields data is in a pre-defined format Display query message or place a sticky within a single form Visible/invisible fields in the same form Adding log records into a form … Rave Custom Functions June 23rd 2011 Proprietary and confidential 15 Categories of Custom Functions Moderate Custom Functions Comparison of multiple forms Example: Display query message or place a sticky based on data from multiple forms A few more examples: Adding log records and populating data into a form Adding a form in the different folder Adding folder and adding matrices dynamically Populate or derive data based on the data in multiple forms Data comparisons and checking for the chronological order … Rave Custom Functions June 23rd 2011 Proprietary and confidential 16 Categories of Custom Functions Complex Custom Functions Comparison of multiple forms Requires SQL script Example: Generating sequential patient or randomization numbers A few more examples: Subject calendar for the visits SAE emails based on roles Checking for uniqueness of the entered data Dynamic search list Multiple matrices Nested folders … Rave Custom Functions June 23rd 2011 Proprietary and confidential 17 Best Practices - Around the use of Custom Functions - Rave Custom Functions June 23rd 2011 Proprietary and confidential 18 Best Practices Use header below to identify and trouble shoot a CF: Check for NULL objects Check Active status of all objects Avoid using try-catches because Rave does it for you Rave Custom Functions June 23rd 2011 Proprietary and confidential 19 Best Practices Keep the code simple and readable… but if you want to improve system performance: Use OIDs rather than names Avoid using foreach Avoid writing nested for loops Loop handling: Avoid sending emails in a loop Remember to breakout the loop when search is completed Email Handling: Check the environments before sending an email Avoid using same email ID for different environments Stored Procedure Handling: Use SQL stored procedures instead of dynamic SQL Avoid stored procedures for updates or deletions Rave Custom Functions June 23rd 2011 Proprietary and confidential 20 Q&A Rave Custom Functions June 23rd 2011 Proprietary and confidential 21 Thank You for your Attention ! Visit our website for upcoming webinars: www.clinovo.com Rave Custom Functions June 23rd 2011 Proprietary and confidential 22 Contact Clinovo 1208 E Arques Ave. Suite 114 Sunnyvale, CA 94085 www.clinovo.com Marc Desgrousilliers, VP of Operations marc@clinovo.com 408 773 6253 Venkat Sungishala, Sr. Manager of EDC venkat@clinovo.com 408 845 0862 Rave Custom Functions June 23rd 2011 Proprietary and confidential 23