Project Health Design University of Washington Chronic Disease Management between Office Visits RWJF Grant #: 59882 Design Documentation and Core Component Testing Report Design Documentation This description was intended to facilitate sharing of design elements across Project HealthDesign teams and, in compliance with the RWJF open source requirements, enable others to use components of your design. Introduction HealthReachMobile is a personal health information delivery system designed to help patient to co-manage chronic illness from any location. This is accomplished through wireless collection of patients’ physiological data and lifestyle behavior as they happen. Patients receive progress feedbacks and positive reinforcements via email messages and graphical charts on their mobile phones. Design Considerations Hardware constraints HealthReachMobile system should be run on server level systems. The minimal requirements for adequate performance include: a. Quad-core CPU b. 4+ GB memory c. RAID configured hard drives with at least 50 GB Client devices consist of Windows Mobile SmartPhone and web browsers. The SmartPhone should be running Windows Mobile 2005 or later. Web browsers should support Outlook web. Software requirements HealthReachMobile was developed on Windows platform and leverages specific Microsoft products. The following products are required for the building and operation of HRM. a. Windows Server 2003 b. SQL Server 2007 c. Exchange 2007 This work is licensed under a Creative Commons Attribution 3.0 Unported License. d. Visual Studio 2005 Other versions of these applications and OS have not been tested. Network layout The network layout we use for HRM is shown in figure 1. The network consists of three servers. HRM2 is the domain controller and directory server. HRM5 hosts Exchange and HRM applications including management tool and glucose uploading services. HRM3 hosts SQL Server 2007 and the hrm database. Figure 1: HRM network layout Performance System Architecture Three tiered design 2 HRM architecture consists of three major components (Figure 2): data management systems (Figures 2A, 2B, and 2C), middleware application services and libraries (Figure 2D), and client devices (Figure 2E). Figure 2: HRM system architecture Data management tier: (Figure 2A, 2B, and 2C) HRM data management consists of internal and external data sources. The internal HRM database (Figure 2B) stores system information including: user profiles, glucose readings, food images, message templates, outgoing messages, and user responses. Access to HRM data records is mediated by TSQL scripts. Stored procedure scripts improve data management through centralized administration, maintenance, and security for all requests to the database. External applications providing additional system function are accessed through custom data connectors. For example, the data connector to CliniPro Server 3 (Figure 2A) utilizes XML over socket to exchange information. Data management with the Exchange server (Figure 2C) is done via Database Mail and a custom Exchange plug-in. Middleware tier: Services and libraries (Figure 2D) HRM services are computer software which provides the business logic for the system. The most important component at this middle level is HeathReachLib library. HealthReachLib provides data mapping to and from the data management subsystems to connecting applications. Thus, all HRM applications and services utilize HealthReachLib library for data objects management and processing. Presentation tier: Client devices (Figure 2E) The presentation component manages user inputs, sends requests to the system, and displays results. For example, Outlook Mobile on the SmartPhone provides the presentation and user interface to the automated messaging application. Using email for realtime two-way messaging The system is set up to support messaging logic that consists of a question or statement followed by a number of responses. Responses trigger follow up messages, which in turn have other responses in a branching chain. For practical purposes, we kept the maximal message chain to four levels deep. The development and testing of this system was primarily part of a separate grant funding the NICHE consortium (RWJF grant #052601). This system is described in further detail in that grant’s final report. Wireless automated glucose upload We use the CyberFab wireless Bluetooth dongle and BlueTouch application to send meter readings from the SmartPhone to GlucoseUploadService. The BlueTouch application runs on the SmartPhone. GlucoseUploadService GlucoseUploadService is a custom socket-based service for glucose data transfer from patients’ SmartPhones. 4 Automated graphical and statistical email feedback Upon receipt of new glucose meter readings HRM system can send embedded graphical email showing weekly averages, standard deviations, and other statistics. The graphical charts are generated using Google Charting API. Data Interfaces Data connectors were developed for various backend and external applications to exchange with HRM. Data interface to CliniPro diabetes management suite (optional) CliniPro for providers and Patient Partner for patients are linked applications for diabetes co-management (Numedics, Portland Oregon http://www.numedics.com/). A backend interface was developed to handle transfer of uploaded patient glucose data to the CliniPro database residing on University of Washington server ZUMA. Data interface to CommonPlatform PHR (optional) RWJF’s CommonPlatform is a PHR data management application. A backend interface was developed to store and retrieve patient health information from the Common Platform. Patient Messaging Service The external interface of HealthReachMobile is the Patient Messaging Service, whose principle function is to integrate information from the Backend Applications into messages for delivery to patients’ smart phones, PDA, or PC. It also processes replies and configuration settings from patients and updates the appropriate Backend Applications. The Patient Messaging Service leverages MS Exchange for content delivery and PIM support. For example, clinic appointments and medication schedules are reflected on patient’s phone calendar after synchronizing with the Exchange server. Media clips can also be delivered for a more enriching experience. The service handles authentication, security, and logging of information served. The service combines data sources from different EMRs providing a seamless view of the data to the client device and patient. Client Device Applications HealthReachMobile patients uses an integrated suite of applications on their smart phones to access the Personal Health Applications services. These include: 1) MS Mobile Outlook client for messaging and PIM functions 5 2) A food capture application for patients to snap real-time pictures of their meal for dietary analysis over time 3) An application to securely sends glucose and other physiological readings uploaded via CyberFab’s Bluetooth reader to the smart phone for delivery to the backend EMR 6 Summary of system design and data flow Figure 4 summarizes the overall flow of HRM. Figure 3: HRM data flow 7 The basic messaging workflow starts from number 1 on Figure 4: 1. PatientMessageManager (Figure 4.1) sets the type, frequency, and interval to send content to the user. 2. The PatientScheduleService (Figure 4.2) service polls the database for messages waiting and ready for delivery. 3. PatientScheduleService (Figure 4.3) sends outgoing messages to Exchange for delivery to users’ SmartPhones. 4. The user receives and replies to the messages (Figure 4.4). 5. Exchange calls MessageAgent (Figure 4.5) which parses the user’s response and updates the HRM database. If required, a follow-up message is sent immediately to the user. The process is repeated until the branching question/response chain is complete. For glucose uploads, the GlucoseUploadService service saves the glucometer readings to the HRM database and sends a copy of the readings to CliniPro for patient or care provider review. Patients also receive a “thank you for uploading” email, which lists the readings uploaded. Summary of HRM applications: Application server PatientMessageManager o This application is used by the case manager to provision patients, messages schedules, and contact patients. PatientScheduleService o A Windows service which polls message schedules from HRM DB and sends out messages to Exchange for delivery to patient’s smartphone. MessageAgent o A custom Exchange transport agent which processes incoming emails from patients. o It parses message content and embedded codes from the email and updates the database. GlucoseUploadService o A socket application which listens for glucose uploads connections from client device. o The readings are saved to HRM internal DB and CliniPro DB. 8 Client device applications Bluetouch o This application from CyberFab communicates with glucometers attached to the CyberFab Bluetooth dongle and sends the result to the GlucoseUploadService. Mobile Outlook o Microsoft email application for Windows Mobile devices. o Use for communication with HRM via automated messages System Description Database design HRM db is a relational database designed to run on SQL Server. The database has a data manipulation language layer (DML) which provides access to the underlying data structures. The DML scripts were written in T-SQL language and are located in: \DataServices\PatientMessaging\DatabaseInstaller\dml Data definition language (DDL) for generating the database and indexes are in: \DataServices\PatientMessaging\DatabaseInstaller\ddl Core HRM library and applications \DataServices\PatientMessaging\PatientMessageSharedLib classes: Config – SQL connection configuration class DataManager – Manages data objects, business logic, statistical processing. Entry point to access the HRM DB and system from derived applications. DaySchedule – Class mapping of the DaySchedule db object DBObject – Base class for database objects Followup – Class mapping of the Followup db object GlucoseReading – Class mapping of GlucoseReading db object Greeting – Class mapping of Greeting db object Message – Class mapping of Message db object Messages – Class to manage array of Message objects MessageTemplate – Class mapping of MessageTemplate db object MessageType – Class mapping of MessageType db object 9 Patient – Class mapping of Patient db object Response – Class mapping of Patient db object Responses – Class for managing arrays of Response objects Schedule – Class mapping of Patient db object SmartDevice – Class mapping of Patient db object Time – Class to handle time storage Util – Utility class containing statistics, math, and date functions \DataServices\PatientMessaging\PatientScheduleService ScheduleServiceHandler – Polls HRM DB for messages to send out to patients ScheduleServiceInstaller – Installs PatientSchedule Windows service ScheduleServiceMain \DataServices\PatientMessaging\PatientMessageManager classes: Manager – Main class handing the display of the management and data screens MediaEditForm - Dialog for editing media data MessageTypeForm – Dialog for editing message types ResponseEditForm – Dialog for editing response data \DataServices\PatientMessaging\GlucoseUploadService classes: GlucoseUploadServiceHandler – Contains processing thread handling meter uploads GlucoseUploadServiceInstaller – Handles installation of the Windows service GlucoseUploadServiceMain – Main program entry \DataService\PatientMessaging\Interfaces\CyberFabLib classes: MeterReadings – Handles the processing of the bytes array obtained from socket data transfer via BlueTouch application on the smartphone. Contains CyberFab (proprietary?) data structure. Optional applications and services CliniPro application \DataService\PatientMessaging\Interfaces\CliniProLib classes: CliniProReadings – Formats HRM stored glucose readings into CliniPro specific XML document for delivery to the CliniPro application SynClient – Handles asynchronous connection to the CliniPro server and data transfers 10 CommonPlatform \DataService\PatientMessaging\Interfaces\CommonPlatformLib classes: AccessUtil CommonPlatform – Main to access CommonPlatform interface and data exchange HDAuthenticationService HDObservationService HDRegistryService HDUtil LogUtil 11 12 Core Component Implementation and Testing The following section reports our experiences with implementing and testing the Project HealthDesign technical specifications for the core components. Our responses the required questions are in Arial, non-italics 10 point font and follow each question. 1. What web services did you use, and which API calls (from the WSDL) did you implement? a. describe which data/functions you used the platform for, and which data you stored or functions you implemented yourself i. We used the common platform to store capillary blood glucose levels from two different mobile PHAs designed for patients with diabetes--the University of Washington’s HRM and NST/Norway’s Few Touch system. ii. We used the platform to exchange blood glucose values between these two personal health applications for a single user. b. list the specific platform API calls that you used i. Authentication ii. Log in iii. Observation—retrieving and inserting blood glucose levels c. provide examples of data that you stored in the Medication and Observation services i. Capillary blood glucose measurements 1. Did not test annotation of these records. 2. Did not test multi-media attachments to these records. d. provide examples of access control rules specified (e.g. provided access to family members to view any data, add annotations, but not update or delete anything, etc.) i. Did not test access control rules beyond administrator and individual user. 2. What problems did you encounter? Also address the core components: a. Functional deficiencies (e.g. it didn’t do what my PHA needed it to do in these areas) ii. Authentication 1. None iii. access control features 1. None iv. medication lists 1. Did not use v. Observations 13 1. Could not distinguish between new blood glucose levels and old blood glucose levels that had already been sent—ie double enters observations.. Common platform relies on the applications to do this filtering first before sending to platform. vi. Suggest specific enhancements such as ‘add a new function that does this’ 1. Consider the ability to resolve double entry. This is really a scope issue for the common platform and may better address in future uses or adaptations of the platform. b. Performance (it did what it needed, but too slowly, especially the following operations) i. Met our limited feasibility needs. c. Robustness (it had bugs or was frequently unavailable) Available whenever we needed it. c. interoperability technology (I couldn’t get SOAP messaging working the automatically generated code stubs had bugs, I had problems with the SSL encryption i. No problems. 3. Did you try to share data with other PHAs using the platform components? a. what specific data did you try to share (medications, specific types of observations, access-control rules, user registry, etc.)? i. We are in the process of sharing glucose data across two personal health applications. b. were you successful? if not, what problems did you encounter? i. We are very close to successful. The two applications store blood glucose values in different units. Conversion needs to be set up on the application side, but common platform could consider supporting a unit transformation, especially in cases where an international standard is different than U.S for units measures (eg capillary blood glucose levels). 4. Was the process of interfacing to the platform components straightforward? a. what was the programmatic mechanism you used to interface to the platform (i.e. automatic code generation based on WSDL, direct SOAP calls, etc.)? i. Automatic cod generation and custom code b. was the documentation adequate? i. Yes c. was the technical support provided by Project HealthDesign adequate? i. Yes d. do you have any suggestions for improving this process? i. Ok for testing purposes. 14 ii. If goal is to scale to serve multiple users and applications may need to consider different data transfer methods. 5. What would you change about the Project HealthDesign common platform components to better meet the needs of your PHA and your programming team? The Common Platform components met our feasibility goals well. We have particularly enjoyed the good service and communications we have had with Walter Sujansky and his colleague Sam Faus. 15 16