Tips and Techniques for Improving the Performance of Validation Procedures in Oracle Clinical Steve Rifkin, Lead Technical Analyst, Clinical Data Management & EDC Life Sciences Business Unit facebook.com/perficient twitter.com/perficient_LS linkedin.com/company/perficient
58
Embed
Tips and Techniques for Improving the Performance of Validation Procedures in Oracle Clinical
Ensuring the validity of patient data in your clinical data management and EDC system is essential. However, without a way to programmatically identify discrepancies and inconsistencies, such a task can inadvertently leave bad data in your system. Through validation procedures, an endless assortment of expressions and formulas, Oracle Clinical offers the powerful ability to clean and compare patient data.
In this slideshare, Perficient's Dr. Steve Rifkin, a leading expert in Oracle Clinical, demonstrates the structure of validation procedures, as well as provides various tips and techniques for developing procedures that improve the performance of edit checks.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Tips and Techniques for Improving the Performance of Validation Procedures in Oracle Clinical
Steve Rifkin, Lead Technical Analyst, Clinical Data Management & EDCLife Sciences Business Unit
Steve RifkinLead Technical AnalystClinical Data Management & EDCLife Sciences, Perficient
• Extensive Oracle Clinical/RDC experience– 18+ years of experience with Oracle Clinical/RDC
– Member of the team that implements, supports,
enhances and integrates Oracle Clinical/RDC solutions
– 50+ implementations and integrations
Perficient is a leading information technology consulting firm serving clients throughout
North America and Europe.
We help clients implement business-driven technology solutions that integrate business
processes, improve worker productivity, increase customer loyalty and create a more agile
enterprise to better respond to new business opportunities.
About Perficient
• Founded in 1997
• Public, NASDAQ: PRFT
• 2013 revenue ~$373 million
• Major market locations throughout North America• Atlanta, Boston, Charlotte, Chicago, Cincinnati, Cleveland,
Columbus, Dallas, Denver, Detroit, Fairfax, Houston, Indianapolis, Los Angeles, Minneapolis, New Orleans, New York City, Northern California, Philadelphia, Southern California, St. Louis, Toronto and Washington, D.C.
• Global delivery centers in China, Europe and India
• >2,100 colleagues
• Dedicated solution practices
• ~85% repeat business rate
• Alliance partnerships with major technology vendors
• Multiple vendor/industry technology and growth awards
Perficient Profile
BUSINESS SOLUTIONSBusiness IntelligenceBusiness Process ManagementCustomer Experience and CRMEnterprise Performance ManagementEnterprise Resource PlanningExperience Design (XD)Management Consulting
Clinical Data WarehousingOracle Life Sciences Data Hub
Clinical Data AnalyticsOracle Clinical Development Analytics
JReview
Data Review and CleansingOracle Data Management Workbench
Clients
Agenda
• What is an Oracle Clinical Procedure• Review of PL/SQL Concepts
– Cursors and Package Structure• Oracle Clinical Cursors• Structure of Oracle Clinical MAIN Procedure• Retrieval Techniques
– Correlations– Qualifying Expressions– WHERE clause extension– Visit Limitations
• Performance Considerations
What is an Oracle Clinical Procedure?
Definition => Validation Procs => Procedures
Definition => Validation Procs => Procedures
It’s a program!
What is an Oracle Clinical Procedure?
• Procedure templates are completed • Procedure is “generated” and
What is an Oracle Clinical Procedure?
A PL/SQL Program is created!
To get the most out of OC procedures, you need to understand the structure of the program you create.
Review of PL/SQL Concepts
• Detailed knowledge of PL/SQL syntax is not required for understanding the overall program structure.– However, knowledge of PL/SQL cursors and of the
PL/SQL Package structure is required.
PL/SQL Cursors
In SQL*Plus, a “select statement” retrieves an entire set of records:
Cursors also retrieve of a set of records; but unlike SQL*Plus, cursors allow access to one record at a time for procedural operations on data within the record.
• Cursors are objects in a PL/SQL program• To use, cursors must be
1. Declared (to define the set of results)2. Opened (to initialize)3. Fetched (to retrieve one row for operations)4. Closed (to release)
PL/SQL Cursors
• Cursor declaration defines the set of records to be retrieved from the database:
• Like a “file” a cursor must be opened before it can be used:
CURSOR cHeight IS SELECT height, height_unitFROM height_table WHERE patient=‘100’ ORDER BY visit_number;
OPEN cHeight;
PL/SQL Cursors
PL/SQL Cursors
• A “fetch” on the cursor retrieves a single row from the set of selected records and places the result into program variables:
FETCH cHeight INTO height_var, height_unit_var;
CLOSE cHeight;
• Cursors are closed to release memory and perform internal cleanup:
PL/SQL Cursors
• Cursors are often fetched in a “loop” which processes the record:
LOOP FETCH cHeight INTO height_var, height_unit_var ; IF cHeight%NOTFOUND THEN
EXIT LOOP; ELSE
<process current height_var, height_unit_var> END IF;
END LOOP;
PAT_LOOP FETCH cPatient_data into patient_var;
IF cPatient_data%FOUND THEN
ELSE EXIT PAT_LOOP;
END IF; END PAT_LOOP;
HEIGHT_LOOP FETCH cHeight INTO height_var, height_unit_var ;
IF cHeight%FOUND THEN<process patient_var, height_var, height_unit_var>
ELSE EXIT HEIGHT_LOOP;
END IF; END HEIGHT_LOOP
Nesting PL/SQL Cursors
Cursors used by Oracle Clinical
• Patient Information Cursor– Retrieves a record with all the information recorded for a
single patient• DCM Cursor(s)
– A DCM cursor for each “alias” listed on the procedure question group form
– Retrieves the DCM responses (for the questions on the procedure question screen) and DCM header information
Inner loop will fetch records only if the values of the responses to the two pairs of questions are the same!
Outer LoopOuter LoopInner Loop
Correlating Questions
Correlations
• Can correlate on Events– Inner cursor retrieves only a visit retrieved by the outer correlated cursor
• Can correlate on Qualifying Questions– Inner cursor only retrieves DCMs which have the same value for the DCM
Qualifying Question
• Can correlate on Questions– Inner cursor fetches only if a question’s value is equal to a question’s value
in the outer cursor
Correlation limits the fetches for inner cursors based on data obtained by a fetch in a more outer cursor
Effect of Correlation on Event
ACTUAL_EVENT_ID is retrieved as part of the standard cursor variables in the outer cursor
…….
Outer Cursor Definition
Cursor variable i_actual_event_id specified when cursor is opened
used in the where clause
…….
Inner Cursor Definition
Effect of Correlation on Event
Call to open inner (CM) cursor uses the actual_event_id retrieved by the outer_cursor
Fetch on the outer (AE) cursor retrieves a value of actual_event_id
);
Effect of Correlation on Event
Effect of Qualifying Question Value and Question Value Correlation
• Other types of correlation (on qualifying question value or question values) work in the same way– When procedure compiled using these techniques, the
procedure question group cursors are restricted– Opening of cursors in the MAIN procedure use cursor
variables
Qualifying Expressions
• Allow selection of records based on any information retrieved by the current or any more outer cursor– Can join values between cursors in the qualifying
expression
Continue only if medication on the AE form is not null
Qualifying Expressions
• Allow selection of records based on any information retrieved by the current or any more outer cursor– Can join values between cursors in the qualifying expression
Continue only if Medication on the AE form is not null
Patient Record Loop
Details
Fetch Qualify Loop
Inner CM Cursor Loop
Outer AE Cursor Loop
Effect of Qualifying Expressions
Fetch an AE record
Exit AE Fetch Qualify loop if no more AEs
Exit AE Fetch Qualify loop if fetch qualifies
Process inner loops/details or exit the cursor loop
Effect of Qualifying Expressions
• Limit cursor fetch with SQL expression comprised of key DCM fields– An LOV is available for fields which can be used in the
Extension– With caution, can use other variables in the
RECEIVED_DCMS and RESPONSES tables, but only for the current cursor
• One way to limit retrievals to specific visits
WHERE Clause Extension
Can join only fields from the current cursor
WHERE Clause Extension
• Limit cursor fetch with SQL expression comprised of key DCM fields– An LOV is available for fields which can be used in the
Extension– With caution, can use other variables in the
RECEIVED_DCMS and RESPONSES tables, but only for the current cursor
• One way to limit retrievals to specific visits
WHERE Clause Extension …
Extension of “where visit_number=1”
Added to the default cursor definition
Effect of Where Clause Extensions
• Can limit to a range of visits fetched by providing the names of the first and last visits on the procedure question group form
By default, all patient visits will be retrieved by the DCM cursor