Jon Barcellona is principal architect for Digital Architects.
WorldDoc provides Web-based health management tools, such as personal health records, that health insurers and employers can buy for people covered under their plans. The idea is that people will use the information systems to stay healthier, thus living better and lowering costs for insurers and employers. The company's fully hosted central database engine integrates an individual's health risk assessment, medical and pharmacy claims, laboratory test results, and biometric data to provide care management such as personalized medical goals, find gaps in care, and suggest actions to stay well.
WorldDoc's vision is to build a "healthcare intervention engine" that integrates with its existing member healthcare portal. Such a system would let clinicians write rules to process health data information, medical claims, and other information for millions of members. The rules would match a person's health profile with specific interventions, which could be delivered as e-mails, text messages, Web-based coaching, mail, phone calls, and via a smartphone application. It's a highly complex vision, and it needs to execute against millions of members' health data while maintaining a high level of performance.
To do the software development, WorldDoc hired a four-person agile development team from my company, Digital Architects; it wanted a production application in one year. We had a basic development road map in mind from past experience:
- Clearly define the problem domain.
- Don't build what we could buy.
- Start small and rapidly deliver a proof of concept.
- Deliver the main project using agile principles -- especially "deliver working software early and often."
Based on our experience, we decided at the outset to create a new domain-specific language (DSL), this time for the medical domain for medical rules. A DSL is a computer programming language that targets a particular domain -- healthcare in this case -- instead of a general-purpose language such as Java or C++ that's designed to solve any kind of software problem. DSLs offer numerous benefits for projects like WorldDoc's. Users (clinicians in this case) understand them, thereby facilitating communication; they increase the productivity of software developers by raising the level of abstraction; and the system can be quickly updated if user requirements change -- a must for a project like this.
The most critical and time-consuming aspect of such a "rules engine" project was the initial analysis of the language -- understanding the healthcare domain and translating it into a simple programming language that would be intuitive to the clinicians. Another challenge was creating an intuitive user interface for clinician rule entry. Additionally, we learned that the data access layer needed to be mapped from the language elements to the WorldDoc healthcare data, so that future changes to the data structure could be changed via mapping of the language elements to the data, rather than changing the DSL itself.
Define The Problem
The project sprawled out in three big areas, according to Ben Say, World Doc's CIO. One, the clinical rules went very deep. Two, there's a huge variety of member preferences. And three, there's tremendous breadth of possible intervention the system could recommend to patients. Using a DSL let us automate more of the development.
With the DSL approach settled upon, we began defining the problem domain by categorizing the tasks at hand into problem parameters, then reorganizing those tasks into technology areas. In doing so, the problem looked like this:
Create a DSL for medical rules that:
- Clinicians find intuitive;
- Integrates with the existing member health data and intervention process;
- Creates rules that execute swiftly enough to handle millions of members.
This led us to realize that we'd also need to build a Web-based portal for authoring rules that clinicians could use. It would also have to allow authoring and validation of rules syntax and data elements, as well as support fullfeatured rules testing and workflow to manage processes from the draft phase into rules production.