SlideShare a Scribd company logo
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_LSlinkedin.com/company/perficient
Welcome & Introduction
Steve Rifkin
Lead Technical Analyst
Clinical Data Management & EDC
Life 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 SOLUTIONS
Business Intelligence
Business Process Management
Customer Experience and CRM
Enterprise Performance Management
Enterprise Resource Planning
Experience Design (XD)
Management Consulting
TECHNOLOGY SOLUTIONS
Business Integration/SOA
Cloud Services
Commerce
Content Management
Custom Application Development
Education
Information Management
Mobile Platforms
Platform Integration
Portal & Social
Our Solutions Expertise
Life SciencesPractices/Solutions
Implementation
Migration
Integration
Validation
Consulting
Upgrades
Managed Services
Application Development
Private Cloud Hosting
Application Support
Sub-licensing
Study Setup
Services
Deep Clinical and Pharmacovigilance Applications Expertise
Clinical Trial
Management
Clinical Trial Planning and Budgeting
Oracle ClearTrial
CTMS
Oracle Siebel CTMS / ASCEND
Mobile CRA
Clinical Data Management
& Electronic Data Capture
CDMS
Oracle Clinical
Electronic Data Capture
Oracle Remote Data Capture
Oracle InForm
Medical Coding
Oracle Thesaurus Management System
Safety &
Pharmacovigilance
Adverse Event Reporting
Oracle Argus Safety Suite
Oracle AERS / Empirica Trace
Axway Synchrony Gateway
Signal Management
Oracle Empirica Signal/Topics
Medical Coding
Oracle Thesaurus Management System
Clinical Data
Warehousing & Analytics
Clinical Data Warehousing
Oracle Life Sciences Data Hub
Clinical Data Analytics
Oracle Clinical Development Analytics
JReview
Data Review and Cleansing
Oracle 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:
SQL> select patient, patient_position_id from patient_positions;
PATIENT PATIENT_POSITION_ID
---------- -------------------
100 5001
101 5101
102 5201
103 5301
104 5401
105 5501
106 5601
107 5701
108 5801
109 5901
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_unit
FROM 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
Fields Retrieved by the Patient Cursor
• V_CLINICAL_STUDY_VERSION_ID
• V_DATA_MODIFIED_FLAG
• V_PROCEDURE_ID
• V_PROCEDURE_VERSION_SN
• V_PROCEDURE_TYPE_CODE
• V_USERNAME
• V_DEBUG
• V_LAST_BATCH_TS
• V_CURRENT_LOCATION
• V_MODE
• V_LAB_DEPENDENT_FLAG
• REPORTED_SEX
• REPORTED_BIRTH_DATE
• PATIENT_POSITION_ID
• CLINICAL_STUDY_ID
• REPORTED_DEATH_DATE
• PATIENT
• INVESTIGATOR_ID
• SITE_ID
• EARLY_TERMINATION_FLAG
• PATIENT_ENROLLMENT_DATE
• CLINICAL_SUBJECT_ID
• INCLUSION_EXCLUSION_DATE
• REPORTED_PATIENT_REFERENCE
• REPORTED_INITIALS
• REPORTED_DATE_LAST_PREGNACY
• FIRST_SCREENING_DATE
• TERMINATION_DATE
Fields Retrieved by a DCM Cursor
• ACTUAL_EVENT_ID
• CLIN_PLAN_EVE_ID
• CLIN_PLAN_EVE_NAME
• DCM_DATE
• DCM_ID
• DCM_SUBSET_SN
• DCM_TIME
• INVESTIGATOR_ID
• LAB
• LAB_ID
• LAB_RANGE_SUBSET_NUM
• QUALIFYING_VALUE
• RECEIVED_DCM_ENTRY_TS
• RECEIVED_DCM_ID
• REPEAT_SN
• SITE_ID
• SUBEVENT_NUMBER
• VISIT_NUMBER
Using Patient Cursor Fields
• To use a value for a “V_” field, prefix the field name
with “rxcpdstd.”
– e.g., rxcpdstd.v_data_modified_flag
• To use all other variables, prefix the name with
“rxcpdstd.patients_rec.”
– e.g., rxcpdstd.patients_rec.reported_birth_date
Fields retrieved in the patient information cursor can be used
to perform tests or calculations in your procedures or can be
used as arguments to custom functions you may write.
Structure of PL/SQL Packages
• Generation of an Oracle Clinical procedure results in a
PL/SQL package
• PL/SQL packages contain one or more functions
and/or procedures and have two sections
– Specification
• Lists all procedures and functions in the package
• Declares all cursors and variables to be available to all the
functions and procedures (i.e. the “common” area)
– Body
• Contains all the procedural code for the procedures and
functions listed in the specification
Package Specification in Oracle Clinical
CREATE PACKAGE rxcpd_xxx_xx as
CURSOR 1 is . . . .
CURSOR 2 is . . . .
CURSOR n is . . . .
PROCEDURE main (… … …); PROCEDURE
insert_discrepancy(… … …); PROCEDURE
exception_handling (… … …); END rxcpd_xxx_xx;
. . .
Package is named
with internal id and
version numbers
Definition and number of cursors declared
depends on the number of “aliases” on the
procedure question group form
Three PL/SQL procedures
are part of each Oracle
Clinical package
Body for a Package in Oracle Clinical
INSERT_DISCREPANCY and EXCEPTION_HANDLING procedures call Oracle
Clinical built-in packages and cannot be readily changed
CREATE PACKAGE BODY rxcpd_xxx_xx as
PROCEDURE main (… … …);
<Program Code >
END main;
PROCEDURE insert_discrepancy(… … …);
< Program Code>
END insert_discrepancy;
PROCEDURE exception_handling (… … …);
<Program Code>
END exception_handling;
END rxcpd_xxx_xx;
Program code in the MAIN
procedure depends on
options chosen on the
procedure definition forms
• MAIN procedure is a series of nested loops
• For a simple procedure, outermost loop fetches the
patient information
– Next loop fetches DCM information as defined by the
first procedure question group definition
• After fetching the innermost loop, the expression
details are evaluated
Simplified Structure of a MAIN Procedure
LOOP<Patient>
Fetch Patient cursor
LOOP <DCM1>
Fetch DCM1 Cursor
Execute Details
End <DCM1> Loop
End <Patient> Loop
Simplified Structure of a MAIN Procedure …
One DCM Procedure Question Group
LOOP<Patient>
Fetch Patient cursor
LOOP <DCM1>
Fetch DCM1 Cursor
Execute Details
End <DCM1> Loop
End <Patient> Loop
LOOP <DCM2>
Fetch DCM2 Cursor
End <DCM2> Loop
Two DCM Procedure Question Groups
Simplified Structure of a MAIN Procedure
Some Techniques to Limit Retrievals
• Correlate inner loop with a more outer loop
– On event
– On qualifying question value
– On question values
• Qualifying expressions
• WHERE clause extension
• Limit visits retrieved by the cursor
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 question values
– 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.
Fetch data for Patient 100
Fetch SYSTOLIC_BP from VITALS DCM for Visit 1, Pt 100
Correlation on Event
Retrieval with No Correlation
Fetch HYPERTENSIVE_YN from HYPERTENSION DCM for Visit 1, Pt 100
Test
Fetch SYSTOLIC_BP from VITALS DCM for Visit 2, Pt 100
Fetch HYPERTENSIVE_YN from HYPERTENSION DCM for Visit 1, Pt 100
Test
Fetch HYPERTENSIVE_YN from HYPERTENSION DCM for Visit 2, Pt 100
Test
Fetch HYPERTENSIVE_YN from HYPERTENSION DCM for Visit 2, Pt 100
Test
Fetch data for Patient 100
Fetch SYSTOLIC_BP from VITALS DCM for Visit 1, Pt 100
Correlation on Event
Retrieval with Correlation on Event
Fetch HYPERTENSIVE_YN from HYPERTENSION DCM for Visit 1, Pt 100
Test
Fetch SYSTOLIC_BP from VITALS DCM for Visit 2, Pt 100
Fetch HYPERTENSIVE_YN from HYPERTENSION DCM for Visit 2, Pt 100
Test
Fetch HYPERTENSIVE_YN from HYPERTENSION DCM for Visit 2, Pt 100
TestX
Fetch HYPERTENSIVE_YN from HYPERTENSION DCM for Visit 1, Pt 100
TestX
Correlation on Event
Definition => Validation Procs => Procedures, Press [Q-Groups]
Alias to correlate to
Inner loops use the same
event (including subevent)
as retrieved for the outer
(correlated) loop
Correlation on Qualifying Question Value
• Assume two qualified DCMs recorded at a visit
– Vitals DCM: qualified at Pre-Dose, 1 Hr Post-dose
– EKG DCM: qualified at Pre-Dose, 1 Hr Post-dose
• Correlate on both visit and qualifying question
Fetch data for Patient 100
Fetch SYSTOLIC_BP from VITALS DCM for Visit 1, Pt 100, Pre-Dose
X
Fetch EKG from EKG DCM for Visit 1, Pt 100, Pre-dose
Fetch EKG from EKG DCM for Visit 1, Pt 100, Post-dose
Fetch EKG from EKG DCM for Visit 2, Pt 100, Pre-dose
Fetch EKG from EKG DCM for Visit 2, Pt 100, Post-dose
X
X
Fetch SYSTOLIC_BP from VITALS DCM for Visit 1, Pt 100, Post-Dose
Fetch SYSTOLIC_BP from VITALS DCM for Visit 2, Pt 100, Pre-Dose
Fetch EKG from EKG DCM for Visit 1, Pt 100, Pre-dose
Fetch EKG from EKG DCM for Visit 1, Pt 100, Post-dose
Fetch EKG from EKG DCM for Visit 2, Pt 100, Pre-dose
Fetch EKG from EKG DCM for Visit 2, Pt 100, Post-dose
X
X
X
Fetch SYSTOLIC_BP from VITALS DCM for Visit 2, Pt 100, Post-Dose
X
Fetch EKG from EKG DCM for Visit 1, Pt 100, Pre-dose
Fetch EKG from EKG DCM for Visit 1, Pt 100, Post-dose
Fetch EKG from EKG DCM for Visit 2, Pt 100, Pre-dose
Fetch EKG from EKG DCM for Visit 2, Pt 100, Post-dose
X
X
X
Fetch EKG from EKG DCM for Visit 1, Pt 100, Pre-dose
Fetch EKG from EKG DCM for Visit 1, Pt 100, Post-dose
Fetch EKG from EKG DCM for Visit 2, Pt 100, Pre-dose
Fetch EKG from EKG DCM for Visit 2, Pt 100, Post-dose
X
X
Correlation on Qualifying Question Value
Correlating Questions
• Use responses to DCM questions to correlate between
outer and inner fetch loops
– May want to fetch AE records where AE description
matches the indication given for ConMed
Definition => Validation Procs => Procedures, Press [Q-Groups]
Definition => Validation Procs => Procedures, Press [Q-Groups],
[Correlating Questions]
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
Controlling Range of Visits
Definition => Validation Procs => Procedures, Press [Q-Groups]
Only DCMs recorded for visits starting at “Visit 1”
and going through “Visit 3” will be retrieved
Controlling Range of Visits
• 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
Controlling Range of Visits …
Effect of Range of Visits Control
These are passed as input when the DCM cursor is opened by the
main procedure
Performance
• Generated PL/SQL code contains a multitude of loops
– Cursors are opened, fetched and closed many times in
the internal fetch loops
• Use as much correlation as possible to improve
performance
– Some types of correlations affect performance more
than others
– Correlation may be necessary to make sure the
procedure does what is expected
Effecting Performance
Event Range In DCM Cursors Large
Correlation
Event In DCM Cursor Large
Qualifying Value In DCM Cursor Large
Correlating Questions In DCM Cursor Large
Where Clause Extension In DCM Cursor Large
Qualifying Expression Test after DCM Fetch Smaller
Where Effect on
Parameter Implemented Performance
Note: In many cases, parameters must be changed so procedure
performs correctly
Summary
• Procedure generation produces a complex PL/SQL
program
• Program makes extensive use of cursors and looping
structure
• Program performance can be changed by correct use
of many techniques available from the form templates
Tips and Techniques for Improving the Performance of Validation Procedures in Oracle Clinical
www.facebook.com/perficient
www.perficient.com
www.twitter.com/perficient_LS
Thank You!
For more information, please contact:
steve.rifkin@perficient.com
LifeSciencesInfo@perficient.com (Sales)
+44 (0) 1865 910200 (U.K. Sales)
+1 877 654 0033 (U.S. Sales)

More Related Content

PDF
How to Make Wise Post-Production Changes to Oracle Clinical/Remote Data Captu...
PDF
Tackle healthcare interoperability challenges and improve transitions of care v3
PDF
Optimize Business Performance by Moving Apps to the Microsoft Cloud
PPTX
Migrating Clinical Data in Various Formats to a Clinical Data Management System
PDF
3 Ways to Implement a Clinical Trial Management System
PPTX
The 5 Most Significant Changes in Argus Safety 8.1
PDF
Faster Data Processing for healthcare system
PPTX
SupportNet - Your Virtual Hyperion Help Desk
How to Make Wise Post-Production Changes to Oracle Clinical/Remote Data Captu...
Tackle healthcare interoperability challenges and improve transitions of care v3
Optimize Business Performance by Moving Apps to the Microsoft Cloud
Migrating Clinical Data in Various Formats to a Clinical Data Management System
3 Ways to Implement a Clinical Trial Management System
The 5 Most Significant Changes in Argus Safety 8.1
Faster Data Processing for healthcare system
SupportNet - Your Virtual Hyperion Help Desk

What's hot (20)

PDF
Cool Functionality and Workarounds to Make Your Life Easier - JD Edwards World
PDF
Merging Multiple Drug Safety and Pharmacovigilance Databases
PDF
How to Plan for a Lync Deployment on a Global Scale
PDF
Jd edwards upgrade roundtable at innovate15 empire merchants case study
PDF
Marlabs Capabilities Overview: DWBI, Analytics and Big Data Services
PPTX
Lingustic Harmony in the Tower of Babel
PDF
Informix Corporate Image and Brand (1990)
PPTX
Why ODS? The Role Of The ODS In Today’s BI World And How Oracle Technology H...
PDF
Oracle data integrator suite services
PPTX
Managing Enterprise Content: Solutions that Fit Your Unique Needs
PPT
Airavaat Technologies October 2013
PDF
LIMS Result Point Brochure
PDF
AIOUG : OTNYathra - Troubleshooting and Diagnosing Oracle Database 12.2 and O...
PPT
Williams Kirk Oracle Hosted Services Providers (OHSP 2003)
PDF
Transforming Business Intelligence Testing
PPTX
Validation and Business Considerations for Clinical Study Migrations
PDF
Mahesh Eswar, Chief Revenue Officer at Marlabs, speaks at NJTC event, 'Breakf...
PDF
Marlabs Capabilities Overview: Microsoft SharePoint Services
PDF
Marlabs Capabilities Overview: Telecom
PDF
Oracle Managed Cloud Services
Cool Functionality and Workarounds to Make Your Life Easier - JD Edwards World
Merging Multiple Drug Safety and Pharmacovigilance Databases
How to Plan for a Lync Deployment on a Global Scale
Jd edwards upgrade roundtable at innovate15 empire merchants case study
Marlabs Capabilities Overview: DWBI, Analytics and Big Data Services
Lingustic Harmony in the Tower of Babel
Informix Corporate Image and Brand (1990)
Why ODS? The Role Of The ODS In Today’s BI World And How Oracle Technology H...
Oracle data integrator suite services
Managing Enterprise Content: Solutions that Fit Your Unique Needs
Airavaat Technologies October 2013
LIMS Result Point Brochure
AIOUG : OTNYathra - Troubleshooting and Diagnosing Oracle Database 12.2 and O...
Williams Kirk Oracle Hosted Services Providers (OHSP 2003)
Transforming Business Intelligence Testing
Validation and Business Considerations for Clinical Study Migrations
Mahesh Eswar, Chief Revenue Officer at Marlabs, speaks at NJTC event, 'Breakf...
Marlabs Capabilities Overview: Microsoft SharePoint Services
Marlabs Capabilities Overview: Telecom
Oracle Managed Cloud Services
Ad

Viewers also liked (11)

PDF
Inside an Oracle Clinical Validation Procedure
PDF
Using Lag Variables in Oracle Clinical Procedures
PDF
Effect of Procedure Question Group Attributes on Performance of Batch Validation
PDF
2013 OHSUG - Oracle Clinical and RDC Training for Data Management and Clinica...
PDF
Freedom and Flexibility with Siebel Clinical (CTMS) Open UI
PDF
Oracle Clinical and RDC Implementation Standards and Best Practices
PDF
Managing Oracle Clinical, RDC, and TMS User Accounts with Ease
PDF
Provisional Certificate
PDF
The Future of OC, RDC, and TMS
PDF
Part 4 of RNA-seq for DE analysis: Extracting count table and QC
PDF
Introduction to Oracle Clinical Data Model
Inside an Oracle Clinical Validation Procedure
Using Lag Variables in Oracle Clinical Procedures
Effect of Procedure Question Group Attributes on Performance of Batch Validation
2013 OHSUG - Oracle Clinical and RDC Training for Data Management and Clinica...
Freedom and Flexibility with Siebel Clinical (CTMS) Open UI
Oracle Clinical and RDC Implementation Standards and Best Practices
Managing Oracle Clinical, RDC, and TMS User Accounts with Ease
Provisional Certificate
The Future of OC, RDC, and TMS
Part 4 of RNA-seq for DE analysis: Extracting count table and QC
Introduction to Oracle Clinical Data Model
Ad

Similar to Tips and Techniques for Improving the Performance of Validation Procedures in Oracle Clinical (20)

PPT
Introduction to Data management services
PPT
Harvard University database
PDF
Creating a Project Plan for a Data Warehouse Testing Assignment
PPT
香港六合彩
PDF
Leveraging Oracle's Clinical Development Analytics to Boost Productivity and ...
PPTX
An Introduction to Clinical Study Migrations
PPTX
Using JReview to Analyze Clinical and Pharmacovigilance Data in Disparate Sys...
PDF
AP-Summary-Aug-09-2022_capabilities .pdf
DOCX
Santosh_Nayak_CV
PDF
Leveraging HPE ALM & QuerySurge to test HPE Vertica
PPTX
Data Warehouse Testing in the Pharmaceutical Industry
PPTX
How_to_improve_SQL_Performance_with_new_SQL_Health_Check_Tool.pptx
PDF
IVYWorks
PDF
The ABCs of Clinical Trial Management Systems
PPT
An overview of clinical data repository
DOCX
Bijayalaxmi Behera_CV
PDF
10 Things to Consider When Building a CTMS Business Case
PDF
Getting optimal performance from oracle e business suite
PDF
Getting optimal performance from oracle e business suite(aioug aug2015)
PPTX
Data Warehousing in Pharma: How to Find Bad Data while Meeting Regulatory Req...
Introduction to Data management services
Harvard University database
Creating a Project Plan for a Data Warehouse Testing Assignment
香港六合彩
Leveraging Oracle's Clinical Development Analytics to Boost Productivity and ...
An Introduction to Clinical Study Migrations
Using JReview to Analyze Clinical and Pharmacovigilance Data in Disparate Sys...
AP-Summary-Aug-09-2022_capabilities .pdf
Santosh_Nayak_CV
Leveraging HPE ALM & QuerySurge to test HPE Vertica
Data Warehouse Testing in the Pharmaceutical Industry
How_to_improve_SQL_Performance_with_new_SQL_Health_Check_Tool.pptx
IVYWorks
The ABCs of Clinical Trial Management Systems
An overview of clinical data repository
Bijayalaxmi Behera_CV
10 Things to Consider When Building a CTMS Business Case
Getting optimal performance from oracle e business suite
Getting optimal performance from oracle e business suite(aioug aug2015)
Data Warehousing in Pharma: How to Find Bad Data while Meeting Regulatory Req...

More from Perficient, Inc. (20)

PPTX
Driving Strong 2020 Holiday Season Results
PPTX
Transforming Pharmacovigilance Workflows with AI & Automation
PDF
The Secret to Acquiring and Retaining Customers in Financial Services
PPTX
Oracle Strategic Modeling Live: Defined. Discussed. Demonstrated.
PPTX
Content, Commerce, and... COVID
PPTX
Centene's Financial Transformation Journey: A OneStream Success Story
PPTX
Automate Medical Coding With WHODrug Koda
PPTX
Preparing for Your Oracle, Medidata, and Veeva CTMS Migration Project
PDF
Accelerating Partner Management: How Manufacturers Can Navigate Covid-19
PPTX
The Critical Role of Audience Intelligence with Eric Enge and Rand Fishkin
PPTX
Cardtronics Future Ready with Oracle EPM Cloud
PDF
Teams Summit - What is New and Coming
PPTX
Empower Your Organization with Teams & Remote Work Crisis Management
PPTX
Adoption & Change Management Overview
PPTX
Microsoft Teams: Measuring Activity of Employees Working from Home
PPTX
Securing Teams with Microsoft 365 Security for Remote Work
PPTX
Infrastructure Best Practices for Teams Remote Workers
PPTX
Accelerate Adoption for Microsoft Teams
PPTX
Preparing for Project Cortex and the Future of Knowledge Management
PPTX
Utilizing Microsoft 365 Security for Remote Work
Driving Strong 2020 Holiday Season Results
Transforming Pharmacovigilance Workflows with AI & Automation
The Secret to Acquiring and Retaining Customers in Financial Services
Oracle Strategic Modeling Live: Defined. Discussed. Demonstrated.
Content, Commerce, and... COVID
Centene's Financial Transformation Journey: A OneStream Success Story
Automate Medical Coding With WHODrug Koda
Preparing for Your Oracle, Medidata, and Veeva CTMS Migration Project
Accelerating Partner Management: How Manufacturers Can Navigate Covid-19
The Critical Role of Audience Intelligence with Eric Enge and Rand Fishkin
Cardtronics Future Ready with Oracle EPM Cloud
Teams Summit - What is New and Coming
Empower Your Organization with Teams & Remote Work Crisis Management
Adoption & Change Management Overview
Microsoft Teams: Measuring Activity of Employees Working from Home
Securing Teams with Microsoft 365 Security for Remote Work
Infrastructure Best Practices for Teams Remote Workers
Accelerate Adoption for Microsoft Teams
Preparing for Project Cortex and the Future of Knowledge Management
Utilizing Microsoft 365 Security for Remote Work

Recently uploaded (20)

PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Electronic commerce courselecture one. Pdf
PPTX
Big Data Technologies - Introduction.pptx
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
sap open course for s4hana steps from ECC to s4
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Empathic Computing: Creating Shared Understanding
Unlocking AI with Model Context Protocol (MCP)
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Agricultural_Statistics_at_a_Glance_2022_0.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Electronic commerce courselecture one. Pdf
Big Data Technologies - Introduction.pptx
Programs and apps: productivity, graphics, security and other tools
Network Security Unit 5.pdf for BCA BBA.
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
Advanced methodologies resolving dimensionality complications for autism neur...
sap open course for s4hana steps from ECC to s4
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Mobile App Security Testing_ A Comprehensive Guide.pdf
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Spectral efficient network and resource selection model in 5G networks
Reach Out and Touch Someone: Haptics and Empathic Computing
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Empathic Computing: Creating Shared Understanding

Tips and Techniques for Improving the Performance of Validation Procedures in Oracle Clinical

  • 1. 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_LSlinkedin.com/company/perficient
  • 2. Welcome & Introduction Steve Rifkin Lead Technical Analyst Clinical Data Management & EDC Life 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
  • 3. 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
  • 4. • 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
  • 5. BUSINESS SOLUTIONS Business Intelligence Business Process Management Customer Experience and CRM Enterprise Performance Management Enterprise Resource Planning Experience Design (XD) Management Consulting TECHNOLOGY SOLUTIONS Business Integration/SOA Cloud Services Commerce Content Management Custom Application Development Education Information Management Mobile Platforms Platform Integration Portal & Social Our Solutions Expertise
  • 6. Life SciencesPractices/Solutions Implementation Migration Integration Validation Consulting Upgrades Managed Services Application Development Private Cloud Hosting Application Support Sub-licensing Study Setup Services Deep Clinical and Pharmacovigilance Applications Expertise Clinical Trial Management Clinical Trial Planning and Budgeting Oracle ClearTrial CTMS Oracle Siebel CTMS / ASCEND Mobile CRA Clinical Data Management & Electronic Data Capture CDMS Oracle Clinical Electronic Data Capture Oracle Remote Data Capture Oracle InForm Medical Coding Oracle Thesaurus Management System Safety & Pharmacovigilance Adverse Event Reporting Oracle Argus Safety Suite Oracle AERS / Empirica Trace Axway Synchrony Gateway Signal Management Oracle Empirica Signal/Topics Medical Coding Oracle Thesaurus Management System Clinical Data Warehousing & Analytics Clinical Data Warehousing Oracle Life Sciences Data Hub Clinical Data Analytics Oracle Clinical Development Analytics JReview Data Review and Cleansing Oracle Data Management Workbench Clients
  • 7. 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
  • 8. What is an Oracle Clinical Procedure? Definition => Validation Procs => Procedures
  • 9. Definition => Validation Procs => Procedures It’s a program! What is an Oracle Clinical Procedure?
  • 10. • 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.
  • 11. 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.
  • 12. PL/SQL Cursors In SQL*Plus, a “select statement” retrieves an entire set of records: SQL> select patient, patient_position_id from patient_positions; PATIENT PATIENT_POSITION_ID ---------- ------------------- 100 5001 101 5101 102 5201 103 5301 104 5401 105 5501 106 5601 107 5701 108 5801 109 5901 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.
  • 13. • 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
  • 14. • 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_unit FROM height_table WHERE patient=‘100’ ORDER BY visit_number; OPEN cHeight; PL/SQL Cursors
  • 15. 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:
  • 16. 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;
  • 17. 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
  • 18. 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
  • 19. Fields Retrieved by the Patient Cursor • V_CLINICAL_STUDY_VERSION_ID • V_DATA_MODIFIED_FLAG • V_PROCEDURE_ID • V_PROCEDURE_VERSION_SN • V_PROCEDURE_TYPE_CODE • V_USERNAME • V_DEBUG • V_LAST_BATCH_TS • V_CURRENT_LOCATION • V_MODE • V_LAB_DEPENDENT_FLAG • REPORTED_SEX • REPORTED_BIRTH_DATE • PATIENT_POSITION_ID • CLINICAL_STUDY_ID • REPORTED_DEATH_DATE • PATIENT • INVESTIGATOR_ID • SITE_ID • EARLY_TERMINATION_FLAG • PATIENT_ENROLLMENT_DATE • CLINICAL_SUBJECT_ID • INCLUSION_EXCLUSION_DATE • REPORTED_PATIENT_REFERENCE • REPORTED_INITIALS • REPORTED_DATE_LAST_PREGNACY • FIRST_SCREENING_DATE • TERMINATION_DATE
  • 20. Fields Retrieved by a DCM Cursor • ACTUAL_EVENT_ID • CLIN_PLAN_EVE_ID • CLIN_PLAN_EVE_NAME • DCM_DATE • DCM_ID • DCM_SUBSET_SN • DCM_TIME • INVESTIGATOR_ID • LAB • LAB_ID • LAB_RANGE_SUBSET_NUM • QUALIFYING_VALUE • RECEIVED_DCM_ENTRY_TS • RECEIVED_DCM_ID • REPEAT_SN • SITE_ID • SUBEVENT_NUMBER • VISIT_NUMBER
  • 21. Using Patient Cursor Fields • To use a value for a “V_” field, prefix the field name with “rxcpdstd.” – e.g., rxcpdstd.v_data_modified_flag • To use all other variables, prefix the name with “rxcpdstd.patients_rec.” – e.g., rxcpdstd.patients_rec.reported_birth_date Fields retrieved in the patient information cursor can be used to perform tests or calculations in your procedures or can be used as arguments to custom functions you may write.
  • 22. Structure of PL/SQL Packages • Generation of an Oracle Clinical procedure results in a PL/SQL package • PL/SQL packages contain one or more functions and/or procedures and have two sections – Specification • Lists all procedures and functions in the package • Declares all cursors and variables to be available to all the functions and procedures (i.e. the “common” area) – Body • Contains all the procedural code for the procedures and functions listed in the specification
  • 23. Package Specification in Oracle Clinical CREATE PACKAGE rxcpd_xxx_xx as CURSOR 1 is . . . . CURSOR 2 is . . . . CURSOR n is . . . . PROCEDURE main (… … …); PROCEDURE insert_discrepancy(… … …); PROCEDURE exception_handling (… … …); END rxcpd_xxx_xx; . . . Package is named with internal id and version numbers Definition and number of cursors declared depends on the number of “aliases” on the procedure question group form Three PL/SQL procedures are part of each Oracle Clinical package
  • 24. Body for a Package in Oracle Clinical INSERT_DISCREPANCY and EXCEPTION_HANDLING procedures call Oracle Clinical built-in packages and cannot be readily changed CREATE PACKAGE BODY rxcpd_xxx_xx as PROCEDURE main (… … …); <Program Code > END main; PROCEDURE insert_discrepancy(… … …); < Program Code> END insert_discrepancy; PROCEDURE exception_handling (… … …); <Program Code> END exception_handling; END rxcpd_xxx_xx; Program code in the MAIN procedure depends on options chosen on the procedure definition forms
  • 25. • MAIN procedure is a series of nested loops • For a simple procedure, outermost loop fetches the patient information – Next loop fetches DCM information as defined by the first procedure question group definition • After fetching the innermost loop, the expression details are evaluated Simplified Structure of a MAIN Procedure
  • 26. LOOP<Patient> Fetch Patient cursor LOOP <DCM1> Fetch DCM1 Cursor Execute Details End <DCM1> Loop End <Patient> Loop Simplified Structure of a MAIN Procedure … One DCM Procedure Question Group
  • 27. LOOP<Patient> Fetch Patient cursor LOOP <DCM1> Fetch DCM1 Cursor Execute Details End <DCM1> Loop End <Patient> Loop LOOP <DCM2> Fetch DCM2 Cursor End <DCM2> Loop Two DCM Procedure Question Groups Simplified Structure of a MAIN Procedure
  • 28. Some Techniques to Limit Retrievals • Correlate inner loop with a more outer loop – On event – On qualifying question value – On question values • Qualifying expressions • WHERE clause extension • Limit visits retrieved by the cursor
  • 29. 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 question values – 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.
  • 30. Fetch data for Patient 100 Fetch SYSTOLIC_BP from VITALS DCM for Visit 1, Pt 100 Correlation on Event Retrieval with No Correlation Fetch HYPERTENSIVE_YN from HYPERTENSION DCM for Visit 1, Pt 100 Test Fetch SYSTOLIC_BP from VITALS DCM for Visit 2, Pt 100 Fetch HYPERTENSIVE_YN from HYPERTENSION DCM for Visit 1, Pt 100 Test Fetch HYPERTENSIVE_YN from HYPERTENSION DCM for Visit 2, Pt 100 Test Fetch HYPERTENSIVE_YN from HYPERTENSION DCM for Visit 2, Pt 100 Test
  • 31. Fetch data for Patient 100 Fetch SYSTOLIC_BP from VITALS DCM for Visit 1, Pt 100 Correlation on Event Retrieval with Correlation on Event Fetch HYPERTENSIVE_YN from HYPERTENSION DCM for Visit 1, Pt 100 Test Fetch SYSTOLIC_BP from VITALS DCM for Visit 2, Pt 100 Fetch HYPERTENSIVE_YN from HYPERTENSION DCM for Visit 2, Pt 100 Test Fetch HYPERTENSIVE_YN from HYPERTENSION DCM for Visit 2, Pt 100 TestX Fetch HYPERTENSIVE_YN from HYPERTENSION DCM for Visit 1, Pt 100 TestX
  • 32. Correlation on Event Definition => Validation Procs => Procedures, Press [Q-Groups] Alias to correlate to Inner loops use the same event (including subevent) as retrieved for the outer (correlated) loop
  • 33. Correlation on Qualifying Question Value • Assume two qualified DCMs recorded at a visit – Vitals DCM: qualified at Pre-Dose, 1 Hr Post-dose – EKG DCM: qualified at Pre-Dose, 1 Hr Post-dose • Correlate on both visit and qualifying question
  • 34. Fetch data for Patient 100 Fetch SYSTOLIC_BP from VITALS DCM for Visit 1, Pt 100, Pre-Dose X Fetch EKG from EKG DCM for Visit 1, Pt 100, Pre-dose Fetch EKG from EKG DCM for Visit 1, Pt 100, Post-dose Fetch EKG from EKG DCM for Visit 2, Pt 100, Pre-dose Fetch EKG from EKG DCM for Visit 2, Pt 100, Post-dose X X Fetch SYSTOLIC_BP from VITALS DCM for Visit 1, Pt 100, Post-Dose Fetch SYSTOLIC_BP from VITALS DCM for Visit 2, Pt 100, Pre-Dose Fetch EKG from EKG DCM for Visit 1, Pt 100, Pre-dose Fetch EKG from EKG DCM for Visit 1, Pt 100, Post-dose Fetch EKG from EKG DCM for Visit 2, Pt 100, Pre-dose Fetch EKG from EKG DCM for Visit 2, Pt 100, Post-dose X X X Fetch SYSTOLIC_BP from VITALS DCM for Visit 2, Pt 100, Post-Dose X Fetch EKG from EKG DCM for Visit 1, Pt 100, Pre-dose Fetch EKG from EKG DCM for Visit 1, Pt 100, Post-dose Fetch EKG from EKG DCM for Visit 2, Pt 100, Pre-dose Fetch EKG from EKG DCM for Visit 2, Pt 100, Post-dose X X X Fetch EKG from EKG DCM for Visit 1, Pt 100, Pre-dose Fetch EKG from EKG DCM for Visit 1, Pt 100, Post-dose Fetch EKG from EKG DCM for Visit 2, Pt 100, Pre-dose Fetch EKG from EKG DCM for Visit 2, Pt 100, Post-dose X X Correlation on Qualifying Question Value
  • 35. Correlating Questions • Use responses to DCM questions to correlate between outer and inner fetch loops – May want to fetch AE records where AE description matches the indication given for ConMed Definition => Validation Procs => Procedures, Press [Q-Groups]
  • 36. Definition => Validation Procs => Procedures, Press [Q-Groups], [Correlating Questions] 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
  • 37. 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
  • 38. Effect of Correlation on Event ACTUAL_EVENT_ID is retrieved as part of the standard cursor variables in the outer cursor ……. Outer Cursor Definition
  • 39. Cursor variable i_actual_event_id specified when cursor is opened used in the where clause ……. Inner Cursor Definition Effect of Correlation on Event
  • 40. 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
  • 41. 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
  • 42. 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
  • 43. 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
  • 44. Patient Record Loop Details Fetch Qualify Loop Inner CM Cursor Loop Outer AE Cursor Loop Effect of Qualifying Expressions
  • 45. 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
  • 46. • 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
  • 47. Can join only fields from the current cursor WHERE Clause Extension
  • 48. • 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 …
  • 49. Extension of “where visit_number=1” Added to the default cursor definition Effect of Where Clause Extensions
  • 50. • 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 Controlling Range of Visits
  • 51. Definition => Validation Procs => Procedures, Press [Q-Groups] Only DCMs recorded for visits starting at “Visit 1” and going through “Visit 3” will be retrieved Controlling Range of Visits
  • 52. • 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 Controlling Range of Visits …
  • 53. Effect of Range of Visits Control These are passed as input when the DCM cursor is opened by the main procedure
  • 54. Performance • Generated PL/SQL code contains a multitude of loops – Cursors are opened, fetched and closed many times in the internal fetch loops • Use as much correlation as possible to improve performance – Some types of correlations affect performance more than others – Correlation may be necessary to make sure the procedure does what is expected
  • 55. Effecting Performance Event Range In DCM Cursors Large Correlation Event In DCM Cursor Large Qualifying Value In DCM Cursor Large Correlating Questions In DCM Cursor Large Where Clause Extension In DCM Cursor Large Qualifying Expression Test after DCM Fetch Smaller Where Effect on Parameter Implemented Performance Note: In many cases, parameters must be changed so procedure performs correctly
  • 56. Summary • Procedure generation produces a complex PL/SQL program • Program makes extensive use of cursors and looping structure • Program performance can be changed by correct use of many techniques available from the form templates
  • 58. www.facebook.com/perficient www.perficient.com www.twitter.com/perficient_LS Thank You! For more information, please contact: steve.rifkin@perficient.com LifeSciencesInfo@perficient.com (Sales) +44 (0) 1865 910200 (U.K. Sales) +1 877 654 0033 (U.S. Sales)