Omnicell describes their product as an "ATM for drugs". It is a computer-controlled cabinet that holds and controls hospital inventory, including drugs and other small items. They build their own hardware cabinets, each of which is attached to a PC which runs their application and communicates with the central server. Records can be kept for each patient, reminding nurses when prescriptions are to be given, and making sure the right doses are given to the right patients. The savings to the hospital include not just better inventory control and billing records, but also the extra safety check that the correct drugs and dosages are given to the right person at the right time.

It was an interesting job because they are in a spot in the industry different from most I am familiar with. Most tech companies upgrade every few years to the newest, fastest, and sexiest hardware. Omnicell's core system software, written in Foxpro, is based on the same code they first used over 20 years ago. For hospital applications, reliability is the first, second, and third priority. Changing hardware or updating the software would require huge amounts of testing, and there would still be the risk that a bug could damage their reputation, or even worse cause a death. The basic application itself is relatively simple, but the complexity comes in because as a hospital system, reliability is literally vital. Downtime is not allowed even if communications are lost, so updating and keeping all the databases in sync is a tricky problem.

Omnicell is well established in the US and Europe, where they describe themseves as the "Ferrari of the industry": expensive, maybe, but the best. The markets they are in are pretty well saturated, and they have recognized that China is preparing to make a large investment in the health industry. Their code was internationalized several years ago when they entered the European markets, but they neglected to add double-byte support required for Asian languages.

That would not have been too big a problem except for the fact that their server is in Foxpro, which does not support Unicode. The client, written in C++ and C#, was not too difficult, but getting Foxpro to talk nicely with SQL and C++ was more challenging. Finding people with much experience in Foxpro was a challenge too.

When I made my original proposal I estimated about 3-4 months, depending on investigations we would make in the first few weeks. One of the guys who did the European port later told me he wouldn't touch it for less than a year. Later, after we finished it on time, our manager at Omnicell told us they had counted on 6-9 months. Our team consisted of 3 senior developers, one Foxpro, one C++, and me as the technical lead and filling in wherever needed (which was, unfortunately, usually Foxpro). Ther also were a testing manager, and 2 testers.

The project leader's motto for the project was "You only get one chance to make a good first impression". Omnicell was an ideal client to work for. They respected the difficulty of what we were doing, and valued it very highly. As a result, they provided all the support and training required, and did it without micromanaging or requiring anything more than short weekly meetings, which usually consisted of them asking us if we needed anything.

The project was completed on time, successfully: we provided full agreed-upon support for the client and server, as well as other reports and alerts that it provided. We actually were finished a full month ahead of time, but lost the extra time because I listened to their build people when they told us the build process was "too difficult". When I finally realized I needed to dig in and fix it myself rather than rely on support it took a couple days to finish the build process and turn over the completed code.

The customer was very happy with our work - happy enough so that when the project finished they signed a new contract keeping on our entire team, working with their central development group in the US. Unfortunately, because of the complexity of their software and the organization of the development group, it was too difficult to coordinate work between the US and China development groups, so when the first contract lapsed they did not re-sign.

Back to resume
Back to home page