Monday, April 23, 2012

My Cloverleaf Experience

My first experience with Cloverleaf and HL7 was when I was hired to work on the Interface team at the University of Washington and Harborview medical centers.

I was brought in to assist the conversion of a custom HL7 router over to the Cloverleaf product. My job was to work with the customers that already had interfaces to get their requirements, and then implement and test those implementations with them.

At the same time they were rolling out a new bedside terminal system that accepted HL7 feeds and I worked the the Nurses at Harborview and the University of Washington medical centers in order to give them the data stream they needed. This involved message conversion and translation in order to change the messages from the ones the main frame generated into ones that the bedside terminals could accept.

I ran several rounds of user acceptance testing. After each round of testing I would go back and analyze what messages we had sent, why the messages had failed and then programmed solutions to those problems into the interface. We went live on schedule with full user acceptance.

I also worked on the custom C and tcl router that was in-house and ran side by side with Cloverleaf, as well as the interfaces that accepted and processed HL7 events into the data ware house systems for both hospitals.

I was solely responsible for generating the requirements for the sending and receiving interface for the new lab system. This included adding the interfaces to Cloverleaf, generating the TrixID, routing the messages to the receiving interfaces and coding the interfaces on the receiving data warehouse to insert the messages properly into the database. I worked with the receiving systems to calculate the impact that the additional message load would have on the data warehouse systems, including load and disk storage requirements with weekly, monthly and yearly message storage space requirements.

I worked with users on the lab system and the data warehouse to generate the requirements document, program the implementation, test everything on every interface, and then go live into production. Several days before the go live we realized that the HL7 interfaces on the lab system were not escaping sequences in several fields, that was causing data to be dropped from those fields. I coded a message intercept in cloverleaf to read that field and rewrite it so they were property escaped for the down steam systems.

At Virginia Mason my first task was to perform an upgrade of their Cloverleaf system to a new version. I took events from the current system from the logs on every current interface. I wrote a script to generate a shell script that would feed the messages into each stage of the cloverleaf engine and save each stage to disk as log files. I then compared the messages the new version of Cloverleaf generated to the messages that the old system generated to ensure that there was an exact byte for byte match with no changes to the way that any message was generated.

I was also solely responsible for converting the Virginia Mason batch billing system to Cloverleaf, including writing a new conversion that converted a batch data feed into an HL7 event feed for one interface. The interfaces on this system would start, ftp a file, process the file, if needed, and then a sending interface would start and send the batch file to the receiving system. Any exceptions to picking up a file, processing it, or sending it would generate an alert.

I also overhauled the Cloverleaf alert system with a custom set of Tcl scripts. I configured Cloverleaf to generate a standard who, what, when, where, why message to a script I had written. Each alert was logged and then processed in a hierarchy of system, alert type and level of severity to generate actions. These actions were finely tuned in the log file so that we could send pages, email message, or even restart an interface automatically at a low level.

Every morning just before work the previous days log file was processed and a report customized for several interface clients, with a full report of all the interfaces going to the people on the interface team.

I wrote a variety of tools in Tcl and Perl at these jobs to start, stop, bounce, and get the status of various levels of the Cloverleaf system in a more standard way. I wrote scripts to compare different configuration files and present the English differences between them. I also wrote tools to rip apart and compare HL7 in Tcl, Perl and C.

At Virginia Mason I wrote scripts to package and roll out everything needed to update a Cloverleaf installation. This allowed controlled and rapid roll out of changes, with the ability to just as rapidly roll back to a previous update if anything went wrong.

No comments:

Post a Comment