University of Kansas Medical Center, Medical Informatics Division

Slides:



Advertisements
Similar presentations
Chapter 13 Review Questions
Advertisements

New Features and Enhancements
Implementation and Evaluation of the Rural Early Adolescent Learning Project (REAL): Commonalities in Diverse Educational Settings Jill V. Hamm, Dylan.
DEV392: Extending SharePoint Products And Technologies Through Web Parts And ASP.NET Clint Covington, Program Manager Data And Developer Services - Office.
REDCap Overview Institute for Clinical and Translational Science Heath Davis Fred McClurg Brian Finley.
Introduction to the Enterprise Library. Sounds familiar? Writing a component to encapsulate data access Building a component that allows you to log errors.
MVC pattern and implementation in java
MVC and MVP. References enter.html enter.html
An Introduction to Software Architecture
Service Oriented Architecture (SOA) at NIH Bill Jones
(Business) Process Centric Exchanges
1.file. 2.database. 3.entity. 4.record. 5.attribute. When working with a database, a group of related fields comprises a(n)…
JUNIOR RASHID SHAFEER CS 7 – 7509 YCET CONTENTS o EVOLUTION o OVERVIEW o PROMISES AND POTENTIAL o REALITY o ANALYSIS o CONCLUSION o REFERENCES.
1 Geospatial and Business Intelligence Jean-Sébastien Turcotte Executive VP San Francisco - April 2007 Streamlining web mapping applications.
McGraw-Hill/Irwin © 2008 The McGraw-Hill Companies, All Rights Reserved Chapter 7 Storing Organizational Information - Databases.
Architectural Patterns Support Lecture. Software Architecture l Architecture is OVERLOADED System architecture Application architecture l Architecture.
REDCap Overview Institute for Clinical and Translational Science Heath Davis Fred McClurg Brian Finley.
NA-MIC National Alliance for Medical Image Computing UCSD: Engineering Core 2 Portal and Grid Infrastructure.
Introduction to soarchitect. agenda SOA background and overview transaction recorder summary.
Software Design: Principles, Process, and Concepts Getting Started with Design.
March 2004 At A Glance autoProducts is an automated flight dynamics product generation system. It provides a mission flight operations team with the capability.
SUBMITTED BY JESNA J AM.EN.P2ELT14003 LEARNING MANAGEMENT SYSTEM.
MVC WITH CODEIGNITER Presented By Bhanu Priya.
ETICS An Environment for Distributed Software Development in Aerospace Applications SpaceTransfer09 Hannover Messe, April 2009.
Introduction to ASP.NET development. Background ASP released in 1996 ASP supported for a minimum 10 years from Windows 8 release ASP.Net 1.0 released.
High degree of user interaction Interactive Systems: Model View Controller Presentation-abstraction-control.
CBI Incident Reporting System Caroline Gill PT MHM Betty Wills RN PhD CHCA 2014.
NOTE: To change the image on this slide, select the picture and delete it. Then click the Pictures icon in the placeholder to insert your own image. REDCap:
By Aleksey Stukalov How to Develop Highly Customizable Off-the-Shelf Software.
1 RIC 2009 Symbolic Nuclear Analysis Package - SNAP version 1.0: Features and Applications Chester Gingrich RES/DSA/CDB 3/12/09.
Introduction The concept of a web framework originates from the basic idea that every web application obtains its foundations from a similar set of guidelines.
REDCap External Modules
For Rapid Application Development Developed By
SQL Database Management
The Holmes Platform and Applications
REDCap General Overview
J2EE Platform Overview (Application Architecture)
Plugins & Hooks (Basics) Introduction to Concepts and Basic Examples
Kai Li, Allen D. Malony, Sameer Shende, Robert Bell
A Reusable Framework for Automated Record Creation and Population
REDCap Software: What’s New & What’s Next
Multiple Ways to build a Multi-tenant SaaS Product
Chapter 1: Introduction to Systems Analysis and Design
Web Routing Designing an Interface
Netscape Application Server
Recent trends in estimation methodologies
REDCap New Features LTS 6.15.x
Overview of MDM Site Hub
Social Care Innovation Fund Project In LB Bromley BPV Conference
Software Design and Architecture
PowerMart of Informatica
Operational/non-traditional uses of REDCap
IBM Start Now Host Integration Solutions
REDCap Plugin Examples From VICTR Data Core Team
#01 Client/Server Computing
Design and Maintenance of Web Applications in J2EE
Northbound API Dan Shmidt | January 2017
Cloud Modeling Framework CloudMF
RAIN Live Oak Data Provenance API
Lecture 1: Multi-tier Architecture Overview
Software models - Software Architecture Design Patterns
Enterprise Program Management Office
An Introduction to Software Architecture
SAMANVITHA RAMAYANAM 18TH FEBRUARY 2010 CPE 691
Chapter 1: Introduction to Systems Analysis and Design
REDCap External Modules
Chapter 1: Introduction to Systems Analysis and Design
Partnership for Research and Innovation in the Health System (PRIHS) /2020 Sean Dewitt, Program Manager, Health, Alberta Innovates Marc Leduc,
#01 Client/Server Computing
Demo for Partners and Customers
Presentation transcript:

University of Kansas Medical Center, Medical Informatics Division Enhancing REDCap Extensibility Using Model-View-Controller and Event-Listener Design Patterns Michael R. Prittie, Matthew C. Hoag, Bhargav Adagarla, Lemuel R. Waitman University of Kansas Medical Center, Medical Informatics Division Motivation Plugin Framework Hook Registry In 2014 Dr. Christie Befort, at the University of Kansas Medical Center (KUMC), was awarded $10 million by the Patient-Centered Outcomes Research Institute (PCORI) to fund the multi-site RE-POWER study. The primary aim of this study is to compare the efficacy of three obesity treatment models in rural Middle America.  To achieve this goal, the study will enroll 1440 patients over a five-year period, at 36 rural primary care clinics, across four Midwestern states.  In order to meet the RE-POWER study’s needs using REDCap, our team realized that significant customizations to REDCap would need to be made to deliver all of the desired functionality, which included: REDCap plugins provide developers with a space to execute custom PHP code to produce new user-interfaces for REDCap users. This space gives external developers a very flexible “blank-slate” to create new functionality. If plugins are relatively simple, then all plugin logic can easily fit into one or two files, but as the complexity and number of plugins increases, the need for a structure to meaningfully separate logic grows. To provide this structure a Model-View-Controller (MVC) Plugin Framework was developed. A major contributor to issues of maintainability, readability, and robustness with code used to generate user-interfaces, is the blending of disparate types of logic into a single file, function, or class. The MVC design pattern was expressly developed to address these issues and does so by breaking logic up into three distinct components: Models: Provide representations of and a means of manipulating an application’s underlying data. Views: Produce user interfaces given a minimal set of relevant information. Controllers: Manage interactions between models and views to achieve application functionality. REDCap hooks allow outside developers to write additional PHP, which can “hook” into REDCap at specific times and places to add some desired behavior. Some hooks allow the look and feel of a given type of page to be altered, while others allow custom code to be run when a survey or data instrument are saved. Event Listener Severe Adverse Event Alerts Group Counseling Session Interfaces Advanced Multi-Project Reporting Event Triggered Data Pipelines View Controller Model [redcap_save_record] hooks/projects/foo.php= foo_save_record:1,2 plugins/bar/hook_impl.php= bar_save_record:* These feature gaps would need to be bridged in order for REDCap to be a viable solution for the RE-POWER study. Fortunately, REDCap provides external developers with three mechanisms through which to extend REDCap functionality. The Hook Registry transforms REDCap hooks from a one-to-one, to a one-to-many event-listener pattern. With this pattern many listeners can be defined separately and registered with the same event independently. This allows for listener code to be logically separated from unrelated code and co-located with associated functionality. Listener functions are “registered” with target REDCap hooks (events) in a configuration file which defines hook – listener – project relationships (example configuration above). Hook Registry use cases: Severe Adverse Event Alerts (SAE): SAE alerts were one of 10 different email alerts developed for the RE-POWER study using a Notifications Plugin which utilizes both the Hook Registry and the Plugin Framework. This plugin allows for email notifications and calendar invitations to be configured by REDCap administrators using a dedicated REDCap project. Event Based Data Pipelines: One example of a data pipeline is the RE-POWER patient screening process. As a patient is being screened their data moves between a dedicated registry project of potential patients to a patient project containing study data on those who have agreed to participate in the study. REDCap Extensibility In addition to the more highly structured API for manipulating REDCap's underlying database, the REDCap development team has provided more minimally structured plugin and hook offerings to allow external developers to extend REDCap functionally to meet local requirements. This approach, paired with over two dozen available helper functions, provides developers with an easily accessible, highly flexible environment within which to add new REDCap features. Plugin Framework use cases: Group Counseling Sessions: The RE-POWER team wanted their group counselors to be able to enter all of the information about a given group counseling session, both for the session as a whole, and for each patient individually, into a single form. This meant developing interfaces which pulled data from four distinct REDCap projects and saved form data to multiple records in two different projects. Advanced Multi-Project Reporting: Since the RE-POWER study’s footprint spans eight different REDCap projects, the need existed to build reports across two or more of these projects at a time. The Plugin Framework was leveraged to both cleanly and securely execute report SQL, as well as display the report results. A dedicated REDCap project allows for new reports to be easily configured and access granted by username, project role, and/or DAG. Minimally Structured Simple Flexible Accessible Highly Structured Scalable Maintainable Modular Summary Acknowledgements The REDCap Plugin Framework and Hook Registry allowed developers at KUMC to manage the complexity of creating and maintaining the REDCap customizations made in support of the RE-POWER study, and provided re-useable components which are currently being used to support other local REDCap customers. This approach resulted in DRYer code, that was more readable by peer developers, less error prone, more configurable, and easier to deploy to a production environment. Now that these resources have been produced, the rapid development of future customizations is possible as plugin and hook components are easily repurposed for new use cases. This project is supported in part by NIH grant UL1TR000001, and PCORI Contracts CDRN-1306-04631 and OB-1402-09413. We would also like to acknowledge the work of Dr. Christie Befort and Dr. Danielle Christifano, and their team at RE-POWER. Source code for both the Plugin Framework and the Hook Registry can be found at: https://github.com/kumc-bmi. The downside of this approach is it encourages the concentration of code into monolithic files in the case of plugins, and monolithic functions in the case of hooks. This concentration of code into monolithic forms presents challenges when producing highly complex, yet easily maintainable and robust REDCap customizations. In order to address these challenges a Hook Registry and Plugin Framework were developed to support local development of REDCap customizations at KUMC. The REDCap Plugin Framework and Hook Registry developed at KUMC consist of a collection of loosely-coupled components. This means that any or all the available components can be used to aid in the development of a new REDCap customization.