M5 by One Healthcare Solution Inc.

The M5 EMR/EHR: XAF in all its Glory-A Case Study

"M5" is the name of a sophisticated electronic medical record (EMR / EHR) system developed by One Healthcare Solution, Inc. for the Windows .NET platform. M5 is certified for Meaningful Use (Stage 1) and is currently preparing for Stage 2 certification. It is currently deployed in practices in several states.

M5 and XAF

M5 is built on top of the eXpress Application Framework (XAF) by Developer Express. XAF allows the developer to define the "domain objects" (in my case patients, appointments, etc) in the form of business classes and then the framework builds the data schema (mapping the classes to database tables) and both web and windows applications. The developer can customize the application at almost any level by applying .NET attributes to classes, properties and methods, or by writing code in custom controllers. These controllers have a context like "Patient List Views" which would make this particular controller (and its associated actions and behavior) active only on patient list screens.

XAF is powerful, because it allows developers to quickly add functionality. For example, adding a field in a standard project would require adding the field to the user interfaces (there may be several), adding the field to the database, and then writing the field into all the plumbing code that moves the field's data from database to client to user interface and back. With XAF, this process takes about 10 seconds. The developer adds the property to the appropriate business class, adding body-mass-index to a patient object for example, and the database schema is updated and all the user interfaces and plumbing code just happens. Adding an "action" like a button that opens a list of patients with diabetes, takes a bit more time...about 5 minutes. But it can certainly be done faster if one wanted to race. The generated application can be customized in code by a developer, but that is not all.

M5 Patient View

The generated applications come with the full force of DevExpress's award-winning Windows and web controls, and this all puts the developer in control of the machine that is DevEx, including their vast library of data-aware controls and their in-house high-performance object-relational mapper, eXpress persistent Objects (XPO).

The true power of XAF comes from an extensive XML model that allows customizations at any level (i.e. role, user etc.) and not just by programmers, but by anyone!

In addition to the base framework, we use an externally developed add-on framework called eXpand. eXpand was developed by Tolis Bekiarus and a small team of XAF users before Tolis joined DevExpress as the Frameworks Evangelist. eXpand adds many capabilities to the core XAF framework, and its Model Difference Module provides the capability for full multi-level application customization. These application customizations can be defined at the enterprise level, the location level, the role level, and the user level. This allows a non-programmer to layout a patient screen and save it to the Nurse model. When any nurse logs in, they will see the new patient screen layout. This is a repeating pattern in XAF: Non-programmers can customize almost anything about the application. With eXpand, they can even create new objects and add properties to existing ones.

M5 Application Differences

Main Features

M5 takes advantage of this and many of the other capabilities provided by XAF and eXpand to include:

    Full Windows and Web applications (much more capability on the Windows side)"Server Mode" for grid controls means grids load only what they need from the databaseThe ability to define custom criteria at the data source (by setting the Criteria property) or the client (by setting the Filter property) providing great flexibility and performance for Server ModeRole-level permissions based security (provided by the built-in security module)Auditing of changes and access to DetailViews (provided by the built-in audit trail module, with some customizations for DetailView access)Advanced Reporting, provided by the built-in reporting engine, including end-user report design capabilityInternal Messaging and Task lists make task tracking easyNQF module makes NQF reporting painless (also makes developing new measures easy)Scheduler Support provides a flexible, powerful scheduleSnap Template editor for templating engineCached WCF data capability allows remote access to large databases over a secure WCF connection (provided by built-in CachedDataStoreService)All of the other capabilities that come with a certified system

The NQF Module, pictured here, allows providers to comply with new laws requiring them to report certain statistics to the government in order to qualify for incentive payments made as part of the American Reinvestment and Recovery Act of 2009. The module makes it easy to design and develop new measures, which is important in the fast-changing healthcare IT world.

M5 NQF Module

M5 is the latest in a line of applications that specialize in making a medical practice more efficient and more profitable while at the same time maintaining the highest regard for patient safety.

Make the Practice More Efficient

Efficiency starts with providing customizable templates and customized voice / speech recognition. Everything is designed to operate with as few clicks as possible. Allowing the staff to enter data easily, and allowing the provider to move from this structured data to the text-based visit documentation they are used to quickly and easily. We work with users to customize every aspect of M5, including custom templates for:

    ExamsReview of SystemsLab OrdersFamily HistorySocial HistorySOAP NotesCustom! (Anything Else)

And full customizations for:

    Your voice model and medical/specialist dictionaries Statuses: Icons, Captions, Target Type (Appointment, Patient, Lab Order, etc) all customizable. Status Transitions for Custom Workflow (Implemented as a State Machine, though not with State Machine Module) Icons, Captions, Tooltips, Confirmation Messages all customizableCan be Disabled by RoleCustom List View Filters (Private and Shared)Did I mention Reports including a full end-user report designer?Problem Types with support for ICD-9 ICD-10 and SNOMED-CTProcedure Types with support for CPT, HCSPCS and SNOMED-CTAnd of course Drug Lists, Lab Panels, Appointment Types, Rooms, etcFavorites--Anything can be "favorited"

M5 also provides bi-direction interfaces with several laboratories and billing systems, and also provides e-Prescribing services.


Today's practice is a connected practice. M5 provides support for inbound and outbound HL7 interfaces providing HL7 edit rules and full logging. In addition, M5 allows providers and patients to communicate, providing preferences for patient contacts and a full patient-accessible web portal.

Preferences are stored for each patient to indicate how the patient wishes to be contacted for appointment reminders and or test results. In addition, each chart item in M5 can be flagged to indicate that a patient or a referring provider requires notification. Based on patient preferences, M5 can automate these notifications.

Patient Care and Safety

We take patient safety very seriously. In M5, safety begins by using globally unique identifiers (GUIDs) for all keys. This eliminates the possibility of mixing up one patient number "57" with another patient number "57", which can happen when integrating multiple systems or using separate databases. GUIDs are long strings that, while not absolutely guaranteed to be unique in all the universe, are unique with enough certainty that they can be assumed to be so. This makes it impossible to mix up records based on duplicate IDs.

M5 HDL Lab Interface

A side effect of using GUIDs everywhere is that the data becomes transportable across other systems (a common patient at multiple practices or health record repositories etc.) without the risk if key collisions, and the records will always be identifiable. This is very powerful for distributed applications.

M5 also displays a banner on every screen where a patient item is being viewed. This ensures that the current patient being worked is the correct patient. The banner can be turned off or set to auto-hide.

M5 Outlook

M5 is currently deployed in a select number of clinics across the country, all of which have met meaningful use requirements for Stage 1. We are currently working on Stage 2 requirements and we expect to begin beta testing of our new Cached WCF Data Layer server in the next month or so. This capability allows us to host the sensitive databases in a secure data center while allowing Windows clients to operate as if the database were local. Initial testing shows that this works very well as long as all work is done through a single cache root. Without caching this method of operation is unusable for our purposes. With caching it works very well, which is good since we have spent the vast majority of our development effort on the rich Windows client. Unfortunately, the new XAF middle tier server does not support caching so we do not use it or the new (still in beta) security system.

We are also utilizing the web application generated by XAF. We expect to have our new Patient Portal online within the next couple of months. This will be the Web flavor of XAF and will allow patients (and eventually providers and even external/referring providers) to access the system from any web browser.

Over the next few months we expect to be ready to take on new customers at a faster pace as we complete Stage 2 meaningful use requirements, automate some setup processes, and prepare our automated demo system, documentation and tutorial videos. I will also be describing more features and some of the technical aspects of M5 in later posts, to include our WCF services that allow you to say no to thin client!

In short, the future is bright!

One Healthcare Solution Inc.