RetroGuide, i2b2 and STRIDE comparison

i2b2 (repository cell) is a way to query data.

STRIDE is a query tool done at Stanford.

RetroGuide tries to go beyond cohort estimation and provide a query tool (with a friendly flowchart query metaphor) to not only query data but to do procedural logic:

e.g., test decision support logic, research eligibility protocol.

RetroGuide also goes beyond the underlying DBMS query technology (SQL in both i2b2 and STRIDE) by providing a layer where any technology can be combined with any technology (SQL combined with R, WSDL webservices, Java, etc.)

RetroGuide design objective was to have “retrospective/prospective” switch option. Which means: test your idea retrospectively, and with a switch of a button – change it into prospective logic.

e.g., research alerts functionality.

See the screenshots:

RetroGuide screenshot shows implementation of an Arden Syntax rule – pasted below.

scr 2009-06-16, 09_23_34-i2b2

i2b2 RetroGuide FlowGuide comparison

scr 2009-06-16, 09_11_12-stride

stride cohort tool stanford

scr 2009-06-16, 09_29_37

RetroGuide FlowGuide HealthFlow

Arden Syntax MLM translated above:

KEY PART:

logic:
if (eos is not number) or (inpatient_case is null) then
conclude false;  /* pt must be inpt with valid eos count */
endif;
if eos > eos_upper_normal_limit then  /* elevated eos in diff */
conclude true;
else
conclude false;
endif;

Full MLM:

maintenance:

title: Eosinophilia Research Screen;;
filename: EOSINOPHILIA_1;;
version: 1.06;;
institution: Columbia-Presbyterian Medical Center;;
author:
specialist: ;;
date: 1995-04-24;;
validation: research;;

library:

purpose: To send a log of inpatients with a CBC differential
signifying eosinophilia (> 6%).  The study investigates the
association between eosinophilia and CAD;;
explanation: ;;
keywords: ;;
citations: ;;

knowledge:

type: data-driven;;

data:
cbc_storage := event {‘32506′,’41903’};
eos := read last {‘evoking’,’dam’=”PDQRES2″,
‘constraints’=”C****”; ; ‘32925’};
inpatient_case := read last {‘dam’=”GYDAPMP”,
‘constraints’=” IA**”; “HCASE”; “K”};
eos_upper_normal_limit := 6;
location := read last {‘dam’=”GYDAPMP”; “HLOC”; “HLOCNURS”};
email_dest := destination {’email’,
‘name’=”xxxxx@columbia.edu“};
;;

evoke: cbc_storage;;

logic:
if (eos is not number) or (inpatient_case is null) then
conclude false;  /* pt must be inpt with valid eos count */
endif;
if eos > eos_upper_normal_limit then  /* elevated eos in diff */
conclude true;
else
conclude false;
endif;

;;

action:
write “Eos = ” || eos || “% on ” || time of eos ||
“\nLocation = ” || location
at email_dest;
;;

end:

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: