• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Making Healthcare Smarter - Dynamic Enterprise Applications using Eclipse RCP
 

Making Healthcare Smarter - Dynamic Enterprise Applications using Eclipse RCP

on

  • 2,362 views

These slides were presented at EclipseCon 2010. The session abstract is available here: http://www.eclipsecon.org/2010/sessions/?page=sessions&id=1160 ...

These slides were presented at EclipseCon 2010. The session abstract is available here: http://www.eclipsecon.org/2010/sessions/?page=sessions&id=1160

In Healthcare it is very important to be able to present a clinician with the appropriate situational information when caring for a patient. Applications for Healthcare must be able to flex workflow and application experience based on factors such as User Role, Healthcare Venue and Patient Condition.

Using the Eclipse RCP platform, we have developed extensions that allow an application to flex based on these factors. This has been used to build in-room dashboards, walkup applications and user applications.

The following topics will be covered:
* How to bootstrap an RCP application defining the available views and perspectives from an external source.
* How to add views and perspectives on the fly.
* Lessons learned and challenges of taming the Eclipse Workbench.

Statistics

Views

Total Views
2,362
Views on SlideShare
2,292
Embed Views
70

Actions

Likes
3
Downloads
1
Comments
0

2 Embeds 70

http://www.eclipsecon.org 62
http://www.slideshare.net 8

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

CC Attribution-NonCommercial-NoDerivs LicenseCC Attribution-NonCommercial-NoDerivs LicenseCC Attribution-NonCommercial-NoDerivs License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • <br />
  • <br />
  • * Healthcare can be incredibly complex. <br /> * The goal of our software is to simplify the delivery of healthcare, rather than add to the chaos in this picture. <br />
  • * Everyone in this picture plays some role in the treatment of the patient pictured in the bottom right <br /> *Our Users: <br /> - Don&apos;t necessarily &#x201C;want" to use software <br /> &#xA0;&#xA0; &#xA0;- their job is the patient&apos;s health, not working on a PC <br /> - Diverse workforce <br /> &#xA0;&#xA0; &#xA0;- power user MDs just out of college, providers on the verge of retirement - no computer skills <br /> - Many people/roles are responsible for the treatment of a patient <br /> &#xA0;&#xA0; &#xA0;&#xA0;&#xA0; &#xA0;- primary care physician, nurse, PT, Rounding MDs <br /> <br />
  • In addition to treating the patient, there are a number of secondary challenges that Healthcare Software must address. <br />
  • The first of these is Patient Privacy. <br /> <br /> Our applications must be able to filter sensitive information and show it only to those with an appropriate provider relationship to the patient. <br />
  • * The next Challenge is Patient Safety <br /> * Not only must we also always ensure that the correct information is being displayed, but we must also ensure the end user cannot become disoriented as to WHAT PATIENT&#x2019;S information is being displayed. <br /> * Health Care Providers are constantly switching between patients and analyzing new information. It is critical that they do not make mistakes regarding whose information they are using to make decisions. <br />
  • * Finally, our consumers have numerous requirements regarding standardization and accreditation. <br /> * These include governmental regulatory requirements and accreditations such as JCAHO, as well as the ability for institutions to prove &#x201C;Meaningful Use&#x201D;, something that has taken on a new level of priority with the availability of recent healthcare stimulus funds. <br /> <br />
  • Farr <br />
  • What is Cerner <br /> - is a health company, that produces solution to automate care. <br /> - legacy technology stack <br /> &#xA0;&#xA0;&#xA0; - c++, VB <br /> &#xA0;&#xA0;&#xA0; - java <br /> - install, run, support highly available systems for our clients <br /> - write software to help manage it as well. <br />
  • What is Cerner <br /> - is a health company, that produces solution to automate care. <br /> - legacy technology stack <br /> &#xA0;&#xA0;&#xA0; - c++, VB <br /> &#xA0;&#xA0;&#xA0; - java <br /> - install, run, support highly available systems for our clients <br /> - write software to help manage it as well. <br />
  • What is Cerner <br /> - is a health company, that produces solution to automate care. <br /> - legacy technology stack <br /> &#xA0;&#xA0;&#xA0; - c++, VB <br /> &#xA0;&#xA0;&#xA0; - java <br /> - install, run, support highly available systems for our clients <br /> - write software to help manage it as well. <br />
  • What is Cerner <br /> - is a health company, that produces solution to automate care. <br /> - legacy technology stack <br /> &#xA0;&#xA0;&#xA0; - c++, VB <br /> &#xA0;&#xA0;&#xA0; - java <br /> - install, run, support highly available systems for our clients <br /> - write software to help manage it as well. <br />
  • What is Cerner <br /> - is a health company, that produces solution to automate care. <br /> - legacy technology stack <br /> &#xA0;&#xA0;&#xA0; - c++, VB <br /> &#xA0;&#xA0;&#xA0; - java <br /> - install, run, support highly available systems for our clients <br /> - write software to help manage it as well. <br />
  • What is Cerner <br /> - is a health company, that produces solution to automate care. <br /> - legacy technology stack <br /> &#xA0;&#xA0;&#xA0; - c++, VB <br /> &#xA0;&#xA0;&#xA0; - java <br /> - install, run, support highly available systems for our clients <br /> - write software to help manage it as well. <br />
  • What is Cerner <br /> - is a health company, that produces solution to automate care. <br /> - legacy technology stack <br /> &#xA0;&#xA0;&#xA0; - c++, VB <br /> &#xA0;&#xA0;&#xA0; - java <br /> - install, run, support highly available systems for our clients <br /> - write software to help manage it as well. <br />
  • Integrated ecosystem. <br /> Transition: legacy system focused on chart, next gen must adapt to role/venue/condition <br /> <br />
  • Integrated ecosystem. <br /> Transition: legacy system focused on chart, next gen must adapt to role/venue/condition <br /> <br />
  • Integrated ecosystem. <br /> Transition: legacy system focused on chart, next gen must adapt to role/venue/condition <br /> <br />
  • Integrated ecosystem. <br /> Transition: legacy system focused on chart, next gen must adapt to role/venue/condition <br /> <br />
  • Integrated ecosystem. <br /> Transition: legacy system focused on chart, next gen must adapt to role/venue/condition <br /> <br />
  • Started playing with RCP in 2005 <br /> - history of Millennium <br /> - focused on replacing paper chart <br /> - paper chart is really a data entry mechanism <br /> - not really role/venue/condition based <br /> <br /> 2006, rethink how application in healthcare need to adapt <br /> <br /> Transition: Why? <br />
  • * proven, we&#x2019;d been using eclipse since 2003. <br /> * Eclipse Community & Resources, Documentation&#xA0; <br /> * Hit the ground running <br /> &#xA0;&#xA0; &#xA0;&#xA0;&#xA0; &#xA0;- very low barrier to entry to have a working application <br /> &#xA0;&#xA0; &#xA0;&#xA0;&#xA0; &#xA0;- able to quickly demonstrate value <br /> * OSGi <br /> &#xA0;&#xA0; &#xA0;&#xA0;&#xA0; &#xA0;- "forced modularity" of OSGi <br /> &#xA0;&#xA0; &#xA0;&#xA0;&#xA0; &#xA0;- you must be modular <br /> * investment in Java <br /> <br />
  • * proven, we&#x2019;d been using eclipse since 2003. <br /> * Eclipse Community & Resources, Documentation&#xA0; <br /> * Hit the ground running <br /> &#xA0;&#xA0; &#xA0;&#xA0;&#xA0; &#xA0;- very low barrier to entry to have a working application <br /> &#xA0;&#xA0; &#xA0;&#xA0;&#xA0; &#xA0;- able to quickly demonstrate value <br /> * OSGi <br /> &#xA0;&#xA0; &#xA0;&#xA0;&#xA0; &#xA0;- "forced modularity" of OSGi <br /> &#xA0;&#xA0; &#xA0;&#xA0;&#xA0; &#xA0;- you must be modular <br /> * investment in Java <br /> <br />
  • * proven, we&#x2019;d been using eclipse since 2003. <br /> * Eclipse Community & Resources, Documentation&#xA0; <br /> * Hit the ground running <br /> &#xA0;&#xA0; &#xA0;&#xA0;&#xA0; &#xA0;- very low barrier to entry to have a working application <br /> &#xA0;&#xA0; &#xA0;&#xA0;&#xA0; &#xA0;- able to quickly demonstrate value <br /> * OSGi <br /> &#xA0;&#xA0; &#xA0;&#xA0;&#xA0; &#xA0;- "forced modularity" of OSGi <br /> &#xA0;&#xA0; &#xA0;&#xA0;&#xA0; &#xA0;- you must be modular <br /> * investment in Java <br /> <br />
  • * proven, we&#x2019;d been using eclipse since 2003. <br /> * Eclipse Community & Resources, Documentation&#xA0; <br /> * Hit the ground running <br /> &#xA0;&#xA0; &#xA0;&#xA0;&#xA0; &#xA0;- very low barrier to entry to have a working application <br /> &#xA0;&#xA0; &#xA0;&#xA0;&#xA0; &#xA0;- able to quickly demonstrate value <br /> * OSGi <br /> &#xA0;&#xA0; &#xA0;&#xA0;&#xA0; &#xA0;- "forced modularity" of OSGi <br /> &#xA0;&#xA0; &#xA0;&#xA0;&#xA0; &#xA0;- you must be modular <br /> * investment in Java <br /> <br />
  • approximately 300 monitored beds, with 500+ more signed. <br /> <br /> Transition: Like any journey, you have to start before you can arrive. <br /> <br />
  • Dashboard&#xA0; <br /> - 2007, CHLD_PA, replace the trifold. <br /> - <br /> - situational awareness <br /> - on the wall, always on summary&#xA0; <br /> - built in 3 months&#xA0; <br /> - 2wk time to install&#xA0; <br /> &#xA0; <br />
  • - more evidence that our decision in 2006 was on the mark <br /> - focus in on the user(s), venue, patient, condition, etc... <br />
  • Personalized <br /> &#xA0; <br /> - short description of "what is personalization" <br /> - tackling this enabled us to develop the extensibility of the platform <br />
  • Frank <br />
  • As we developed the solutions described by Robert, we began to modularize and &#x201C;break out&#x201D; what we viewed as functionality that could be coalesced into a core platform for developing Healthcare applications. <br /> <br /> The primary goals of the iAware Platform are to... <br /> - FIRST of all, Reduce Complexity <br /> - We do this by encapsulating and abstracting common programming tasks, such as adding and removing listeners and assisting in UI thread callbacks. <br /> - NEXT, the platform provides an abstraction layer for development. <br /> - This helps by providing a "cushion" for developers when there are changes to either the Eclipse RCP or how iAware consumes the Rich Client Platform <br /> - THIRD, the platform provides places where we can inject and abstract out high level functional requirements, such as displaying a Patient&#x2019;s Demographics Banner anytime certain data is shown <br /> - FINALLY, the platform allows us to provide APIs that make it easier to achieve behavioral consistency across solutions. <br /> <br /> In addition to these goals, MODULARITY always plays a key role in our decisions. It is our goal to enable a diverse set of solutions to be developed using this platform, with assembly or runtime decisions determining the precise functionality present in the running application. <br />
  • - What did we do to extend Eclipse <br /> - Perspectives (3) <br /> - Context <br /> - Navigation <br /> - Our Registries <br /> <br /> Associate a perspective with a given set of contexts <br /> &#xA0;&#xA0; &#xA0;- allow for associating banners, other actions, etc. <br /> &#xA0;&#xA0; &#xA0;- provide means by which we can guarantee patient-safety or that a set of data is being displayed <br /> <br /> Allow a given Perspective to be viewed only by authorized personnel <br /> <br /> Persist the perspectives locally, remote <br /> <br /> Our Perspective Registry allow for perspectives to come from local install, user defined, or centralized store <br /> <br /> Entry for a Perspective can be tied to our global navigation bar <br />
  • Now I&#x2019;m going to describe a few of the building blocks that make up the core of the iAware Platform. <br /> <br /> * Context is the primary driving force in the behavior of our applications. <br /> * It contains the stateful information that helps drive where the user is at in the application and what information can and should be displayed. <br /> * Examples in our application are User, Patient, and Encounter. <br /> <br /> * Both the Type of Context and Instance of that type are necessary, so that some components know &#x201C;a chart is open&#x201D; but then other components that require more precise data can find out that &#x201C;John Doe&#x2019;s chart is open.&#x201D; <br /> <br /> <br />
  • The next building block is Authorization. <br /> <br /> As discussed earlier when talking about privacy and patient safety, users must be authorized to access content in healthcare applications. <br /> <br /> The Authorization APIs allow us to provide a very granular approach to determining whether the current user is authorized to view specific data, access parts of the application, or perform various tasks. <br />
  • The concept of a Perspective is familiar to anyone who has done Eclipse RCP development. <br /> <br /> A Perspective in iAware builds on the Eclipse concept of just a simple layout of views by providing the ability to specify additional metadata. <br /> <br /> This information includes the type of context that must be active when that layout is being shown as well as what authorization is required to access the Perspective. <br />
  • The core Navigation APIs allow us to customize which Perspectives are shown to specific users. <br /> <br /> They also enable the end-user to customize their Navigation Bar to meet their specific workflow requirements. <br /> <br /> This also includes the ability to flex which Navigation options are shown to the user based on where they are, what patient they are viewing, and takes into account any authorization for their specific role. <br />
  • The building block most important to developers using the iAware Platform is the Gadget SDK. <br /> <br /> This is our version of an IViewPart. We wrap every Gadget in a Gadget Container that performs a number of tasks for the developer. <br /> <br /> The Gadget Container automatically specifies the ViewPart, provides the underlying declaration to the View Plugin Registry, and creates common Error and Message areas for each Gadget. <br /> <br /> The Gadget is given the appropriate UI &#x201C;Rendering Surface&#x201D; such as a Composite for SWT Gadgets, but other technologies are also supported such as AWT and Browsers. <br /> <br /> The Gadget SDK also exposes other essential APIs to developers, such as background execution and platform messaging. <br />
  • The next building block is our Persistence Strategies. <br /> <br /> Our Persistence APIs and their relationship to the previously described concepts allow us to have application content such as Navigation, Perspective, and Gadget definitions distributed across numerous resources, both local and remote. <br /> <br /> This enables a user to access their specific application settings ON ANY device. <br /> <br /> It also gives them the ability to share their settings with other users, opening up new venues for discussing and collaborating on best practices in the usage of electronic medical records. <br />
  • <br /> <br />
  • - Registries <br /> <br /> Allow contributions to occur from local assembly or remote data store. <br /> <br /> Allow more granular types to be specified. For example, we have defined specific Gadget types: <br /> *browser (web) <br /> *rich <br /> *specialized technology (MPage) <br /> <br /> Eliminate plugin.xml based contributions for Views/Perspectives <br /> - populate registry when contribution is deemed necessary <br /> <br /> <br />
  • The goal of all of these building blocks is to reduce the complexity in developing for iAware applications and provide a consistent and safe experience for our end users. <br /> <br /> When initially developing our applications using just the Eclipse RCP, developers had too many choices and too many things to remember. Mistakes around trivial, boilerplate code were common. <br /> <br /> Our goal is to change the developer&#x2019;s problem set from this... to THIS. <br />
  • The developer should be able to focus on their core domain and components, rather than the intricacies of existing as a component within an iAware RCP Application. <br />
  • So now that we have this set of building blocks, how do they all come together to form an iAware Application? <br />
  • We use all of the declarations and contributions to do what we refer to as &#x201C;bootstrapping the application&#x201D;. <br /> <br /> Our GadgetRegistry, PerspectiveRegistry, and NavigationBarRegistry are populated from local and/or remote resources, giving us the &#x201C;possible set&#x201D; of components available to the end user. <br /> <br /> Then, at Runtime, a number of questions need to be answered such as: <br /> Who is the user? <br /> Where is the device located? <br /> What is the Patient&#x2019;s Condition? <br /> <br /> Once these questions are answered, the proper set of components are enabled and the user&#x2019;s possible workflows are established. <br /> <br /> Now, Robert is going to describe some of the lessons we&#x2019;ve learned along the way as well as the future visions for iAware. <br />
  • <br />
  • Farr <br />
  • Lessons learned and challenges of "taming" the Eclipse Workbench. &#xA0; <br /> <br /> - Global Toolbar Contributions <br /> - had to create our own "Navigation Bar", and Banner area. <br /> <br />
  • Banner area <br /> &#xA0; <br /> Maximized view, covered banner area. <br />
  • - Registry APIs are "too internal" <br /> &#xA0;&#xA0; &#xA0;- still able to use, but "risky", internal <br /> &#xA0;&#xA0; &#xA0;- little bit of hackery <br /> <br /> - Usability of "drag-n-drop" for our user base <br /> &#xA0;&#xA0; &#xA0;- very excited about potential of e4 <br /> - Presentation Layer difficult to modify/extend <br /> &#xA0;&#xA0; &#xA0;- not enough "bang for the buck" <br /> &#xA0;&#xA0; &#xA0;- again e4 <br /> <br /> - Eclipse Workbench designed around editing a document, not a lot of constraint. <br /> &#xA0;&#xA0; &#xA0;- how to develop a platform without chaos ensuing <br /> &#xA0;&#xA0; &#xA0;- need to have some control over the application&apos;s components <br /> &#xA0;&#xA0; &#xA0;- want to keep development simple, intuitive, domain focused <br /> <br /> Transition: Current state. <br />
  • iAware Platform: A Look Forward <br /> &#xA0; <br /> - vs static assemblies, want to provision the solution based on device/location configuration <br /> &#xA0;&#xA0; &#xA0;- solutions to detect location <br /> &#xA0;&#xA0; &#xA0;-&#xA0;mobile&#xA0;solution may use badging/RFID solutions to determine location. <br /> <br /> - provision additional features based on user role <br /> &#xA0;&#xA0; &#xA0;- not all features will be available on boot. <br /> <br /> - open up gadget development to 3rd parties <br /> &#xA0;&#xA0;&#xA0;&#xA0;- http://udevelop.ucern.com&#xA0; <br /> <br /> - allow clients/3rd parties to redistribute IP via this platform, allowing for a revenue stream around such IP. <br /> &#xA0; <br />
  • For dynamic provisioning, leverage p2 <br /> Leverage more declarative services, and now blueprint services to extend the gadget SDK. <br /> runtime isolation with composite bundles <br /> e4 changes, to leverage&#xA0;simpler ways to build UI. <br /> <br />
  • For dynamic provisioning, leverage p2 <br /> Leverage more declarative services, and now blueprint services to extend the gadget SDK. <br /> runtime isolation with composite bundles <br /> e4 changes, to leverage&#xA0;simpler ways to build UI. <br /> <br />
  • For dynamic provisioning, leverage p2 <br /> Leverage more declarative services, and now blueprint services to extend the gadget SDK. <br /> runtime isolation with composite bundles <br /> e4 changes, to leverage&#xA0;simpler ways to build UI. <br /> <br />
  • For dynamic provisioning, leverage p2 <br /> Leverage more declarative services, and now blueprint services to extend the gadget SDK. <br /> runtime isolation with composite bundles <br /> e4 changes, to leverage&#xA0;simpler ways to build UI. <br /> <br />
  • <br />
  • <br />
  • <br />
  • * What we are trying to solve <br /> * OSGi <br /> <br /> * Workbench built for building document editing&#xA0; <br /> &#xA0;&#xA0; &#xA0;- square peg/round hole. <br /> * authorization of perspectives/views <br /> <br /> * externalized perspectives <br /> * registering views on the fly <br /> &#xA0;&#xA0; &#xA0;- cat n mouse with events <br /> * Extending with web gadgets (3.5 callbacks) <br /> <br /> Next: <br /> * Provisioning features on demand <br /> *&#xA0; <br /> <br /> <br /> From Abstract <br /> How to bootstrap an RCP application defining the available views and perspectives from an external source. &#xA0;&#xA0; <br /> How to add views and perspectives on the fly. &#xA0; <br /> Lessons learned and challenges of taming the Eclipse Workbench. &#xA0; <br />

Making Healthcare Smarter - Dynamic Enterprise Applications using Eclipse RCP Making Healthcare Smarter - Dynamic Enterprise Applications using Eclipse RCP Presentation Transcript

  • Making Healthcare Smarter Dynamic Enterprise Applications using Eclipse RCP Frank Rydzewski Robert Farr
  • Agenda Healthcare About Cerner and iAware iAware Platform Lessons Learned The Future of iAware
  • Healthcare is Complex flickr.com/photos/nomadicentrepreneur/2327177503
  • Meet our users...
  • Healthcare Software Challenges
  • Patient Privacy flickr.com/photos/nicolelee/3280593718
  • Patient Safety flickr.com/photos/cdevers/3375279449
  • Standardizations and Accreditations flickr.com/photos/limaoscarjuliet/225249268
  • Who we are...
  • is
  • is a health company.
  • is a health company. We write...
  • is a health company. We write... solutions for Hospitals, Clinics, Patients
  • is a health company. We C++ write... VB solutions for Hospitals, Clinics, Patients Java
  • is a health company. We C++ write... VB solutions for Hospitals, Clinics, Patients Java We also... run it,  support it, monitor it.
  • Development Ecosystem
  • Development Ecosystem Eclipse IDE Maven Subversion Hudson Crucible/Fisheye
  • iAware
  • Why Eclipse RCP?
  • Why Eclipse RCP? Proven Development Community Hit the ground running OSGi
  • Deployed iAware Applications Two Primary Applications Live at 7 clients
  • CriticalCare Dashboard
  • To get EMRs adopted at a higher level, the authors conclude that the navigation scheme needs to be flexed for a venue or by individual physicians or for different patients as the tasks may be the same (review, order, document, bill) but the required order is variable. “Usability of Electronic Medical Records” John B. Smelcer, Hal Miller-Jacobs, and Lyle Kantrovich Journal of Usability Studies, Volume 4, Issue 2, February 2009, pp. 70-84
  • Personalized
  • iAware Platform
  • iAware Platform flickr.com/photos/seven13avenue/2080281038
  • Context flickr.com/photos/44442915@N00/3761163015/
  • Authorization flickr.com/photos/wirehead2501/4176357595
  • Perspectives www.mcescher.com/LW389.jpg
  • Navigation flickr.com/photos/mystandardbreakfromlife/4387140466
  • Gadgets Gadgets (placeholder) flickr.com/photos/dajobe/13476025/
  • Persistence The Persistence of Memory, Salvador Dali (1931)
  • Reducing Complexity “Eclipse RCP” flickr.com/photos/x-ray_delta_one/3941701730/
  • Reducing Complexity “iAware Platform” flickr.com/photos/woolner/2173277584/
  • Putting it all together flickr.com/photos/tim_ellis/3126935570/
  • Bootstrapping the Applicaition The Raw Materials:     GadgetRegistry     PerspectiveRegistry     NavigationBarRegistry Runtime Questions:     Who is user?     Where is the device located?     What is the Patient's condition?
  • Lessons Learned
  • A look forward... flickr.com/photos/x-ray_delta_one/3861340590
  • Key Enablers
  • Key Enablers Equinox p2
  • Key Enablers Equinox p2 Declarative and Blueprint Services
  • Key Enablers Equinox p2 Declarative and Blueprint Services Composite Bundles
  • Key Enablers Equinox p2 Declarative and Blueprint Services Composite Bundles e4
  • Questions? www.flickr.com/photos/44124427152@N01/58601919
  • Follow us at @iAware