Today’s article is from Delphi developer Fabrice Deprez. Fabrice works as a Software Architect at Dedalus Belgium. Fabrice tells us today how the clarity and stability of the Delphi language and runtime libraries powers his cross platform development in one of those places even angels fear to tread – the intricate management of patient anesthesia where mistakes can literally cost lives.
Table of Contents
Fabrice, how did you come to choose Delphi for developing apps in such a demanding environment?
I’ve been using Embarcadero RAD Studio and Delphi since its very first version and I don’t want it to stop. I learned Pascal in high school in 1992 and of course when the first version of Borland Pascal became the first version of Delphi, offering the possibility to create desktop applications on Windows with a RAD that was out of the ordinary, replacing Visual C++ and Basic. I fell in love with the language and the tool and never left.
With each evolution, the tool has adapted itself, going through Kylix under Linux, RAD PHP, Firemonkey to develop under Windows 8,10,11 and other platforms like macOS, Android, Linux. I have always had confidence in this tool and its evolution.
Thanks to Pascal, Delphi offers clarity in development, something that can often not be found in other C-based languages. I’ve worked on many other languages, like java, javascript, PHP, Angular, React, python, C#, C++, LUA, WLanguage, and many more, because I’m curious and I want to stay up to date. But Delphi is still my favorite. You don’t need a framework to release a 100% standalone binary.
What is your day job?
I work for a large group that develops medical applications, and we use Delphi to communicate with biomedical devices, to collect patient vitals, to process them, to get specific curves, to give alerts, etc.
The Dedalus group is an international group, with many, many people.
This group is involved in many hospital infrastructures, laboratories, research, etc. It was originally a grouping of several entities specializing in different fields and therefore different technologies and applications in research.
What do you use Delphi for?
The company I am in was specialized in anesthesia and we were bought by the group. Today we are part of the Dedalus Healthcare BV subsidiary. We have always worked with Delphi, first on Delphi 7 and Paradox via the BDE, we quickly moved to SQL Server and Oracle. At the time, our computerized anesthesia sheet was revolutionary because we had developed our own Chart component library to plot vital parameters in real time. Again, Delphi was adapted to use the GPU features with canvas processing.
The ergonomics were quickly appreciated by the anesthetists who could have a complete view of the data from all their biomedical devices connected to the patients in a block on a single screen, enter events, medications, make injections, and output complete procedure reports, invoices and transmit the information to the patient files.
Why was Delphi such a good choice in such a demanding environment?
It didn’t stop there, it was also necessary to collect the vital parameters of the devices, monitors, respirators, C.E.C. consoles, syringe pumps, haemodialysis devices, etc. This was for different manufacturers with different communication protocols. So, we developed a communication tool with these devices, capable of loading drivers which were in fact at the time BPL packages (another Delphi revolution) loaded dynamically.
Communication with the hardware was unprecedentedly simple. Yes, Delphi had no limitations and no difficulty in communicating with COM ports, USB ports, RJ45 ports, and various protocols like http, TCP, UDP, etc. Providing a totally independent executable (with its packages) made maintenance easier. No incompatible frameworks, etc.
Did you have custom hardware?
We also developed USB cables with a small electronic card containing the driver information for the biomedical devices. This allowed us to have a plug and play connection. This cable was made by a designer (Phil Design Studio) in a medical grade resin to avoid splashing. We had obviously developed the entire communication process with Delphi.
Yes, with Delphi you can do anything, but do it well and its compiler is one of the fastest in the world.
What sort of database did you use?
Afterwards, I developed and integrated our own ORM to be able to connect to different databases, because that too, of course Delphi can do. Oracle, SQL Server, MySQL, SQLite, PostgreSQL, with the ADO component layer, and then later with FireDac.
We stayed with Delphi 2006 for a long time. Because Delphi is a rather stable and complete tool, and a version can stay on the market for a long time with all the tools available. We then switched to XE2, then XE4 and finally RAD Studio 11, firstly for reasons of changes in the functioning of SSL certificates with network components. The indy, for example, which allows exchanges on different protocols (http, ftp, etc).
What cross-platform apps did you create?
I then developed the dxSMA (for Smart Mobile Assistant). It is an application that allows the collection of vital parameters at the bedside of patients during the nurses’ rounds. The application that I developed in Delphi XE4 in FMX ran on a touch-sensitive medical tablet that was attached to the trolley on which the biomedical measurement device was located (blood pressure, saturation, heart rate, etc.). It allowed healthcare staff to identify themselves by RFID badge, authentication (login/pass) or facial recognition, and the patient was identified by scanning the bracelet.
The collection of parameters was done through our communication tool (made in Delphi). Once validated, the data were transmitted to the patient file, without loss of information, either automatically at regular intervals or manually with control by the carer.
Is that right you use Delphi for intensive care and patient resuscitation?
Then from the bedside, I quickly moved on to the intensive care and resuscitation units where the data is centralised and collected by gateways that transmit the information mainly through the HL7 protocol. I then developed DxCentrale which did the same thing as the ADM but for several beds continuously and every 10 seconds for complete services. DxCentrale is a multi-threaded application with many, many, many controls in all directions. All of it, you guessed it, in Delphi (XE4 and FMX).
What happened when your company was acquired by a larger one, did they stop using Delphi?
Now that we are part of an international group that wants to homogenise its solutions and technologies, we had to transform our applications into a microservices architecture. We chose the mORMot Framework for this, although Rad Server would have been a possible solution, but we still have code in several earlier versions of Delphi. Thanks to this, our applications have become the Back end and the Front end are developed in Angular, React, Python. Again, Delphi has no problem to adapt and communicate with these other technologies. I wrote my first book on the subject. Delphi & mORMot, the full-stack developer’s guide.
Today, making APIs, Web Sockets, Microservices, Making Reports, connecting to all existing databases, creating mobile applications, working on other operating systems than Windows, like Linux or MacOS.
There seems to be no limit to this development tool.
Do you have any final words for your fellow enterprise developers?
I spent part of my time writing a book on the subject, showing examples with the mORMot Framework.
I love this language and RAD which has evolved in an incredible way offering exceptional possibilities to save time for developers. Now whenever I can, I praise it.
This article was submitted as part of our Enterprise Article Showcase. If you have a success story to tell about a project which makes use of RAD Studio with Delphi or C++ Builder, or any of our other great enterprise products please get in touch, you could be featured too and win a prize! Read all about it here: Enterprise Article Showcase
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition