Challenge
Instil was hired by The Design Factor - a Belfast-based product design consultancy who were working for an American medical device company - to design and develop a touch-screen driven interface for an electrophysiology heart stimulator system used by cardiologists to help diagnose heart disorders such as arrhythmia.
Consisting of a touch screen device and bespoke hardware, the system controls a specialised electrode catheter that is capable of sending electrical signals to and reading electrical activity from a patient’s heart. Essentially, the system takes over of the pacing of the heart and feeds-back the resulting activity (both visually and audibly) to enable electrophysiologists to perform their diagnosis.
Project Goals
Originally developed in the early 1970s, the client’s existing EPS machine - a metal enclosure housing the electronics, switches, dials, and speaker for audio feedback - had been hugely popular and much loved by physicians, mainly due to its reliability and ease of use. But in technology terms, four decades is a long time and many of the original parts had become increasingly difficult to source and replace. A replacement was needed; one that modernised the whole experience and yet remained true to the heritage of the original product, especially in terms of ease of use and reliability.
Approach
Replacing the physical facia with a capacitive touch screen and commodity motherboard, the new front-end radically updates the user experience for today’s needs. In place of physical switches and dials, the user now works with their touch-screen equivalents, and instead of simple audio cues for feedback, the user now has visual as well as audio cues to help with their diagnosis.
The software was designed to work in a resource-constrained, embedded environment, with limited memory and processing power. It employs a number of tricks from the world of high performance computing to ensure seamless real-time hardware integration, fluid UI transitions and smooth plotting of a patient’s ECG. For example:
- To ensure high priorty tasks are executed performantly and thus avoid hardware communication jitter and UI lag, the software incorporates a tightly defined threading model to mitigate unnecessary and expensive context switching
- To ensure low priority tasks and more expensive UI updates don’t waste valuable CPU, the software uses Reactive Extensions to filter and deprioritise low priority messages from the hardware
- To ensure custom graphics are rendered efficiently, the software makes intelligent use of low level drawing APIs where necessary (e.g. when plotting the ECG)
- To ensure correctness the software is validated by copious automated tests (behavioural and performance) at all levels of the software. And to ensure robustness in the context of the wider system, including external hardware, the software has built-in health monitors, heartbeat monitors and retry mechanisms
Developing safety-critical software requires extreme rigour and discipline - when your software is effectively controlling a person’s heartbeat, it cannot simply fail or crash in any way. Maintaining intellectual control over the code base, and having mechanisms in place that ensure the code works and continues to work as it evolves, are absolutely essential.