What is Customization?
Customization is the implementation of working practices by changing the standard code supplied with the system, or creating new code from scratch. While the source code for the underlying technology of many LIMS is provided in a compiled form and cannot, therefore, be customized, the same is not necessarily true for the application code. Many suppliers provide a computer programming environment that allows code to be written to meet specific needs of the customer. Typically the supplier‘s application developers use this programming environment to create the standard functionality supplied with the system, for example the code to support batch manufacturing and lot traceability. The programming environment not only allows new functionality to be created, but also allows standard functionality to be modified, and it is this that creates the fundamental weakness of the customization approach.
What is Configuration?
A simplistic approach to configuration is often seen as just changing settings and flags made available by the supplier to change the behavior of a workflow. This could be as simple as setting a flag associated with a sample to indicate it requires a preparation step. However, successful configuration of this sort requires the supplier to have anticipated all the possible switches and flags required. In a complex application such as LIMS this is pretty much impossible. When multiple configuration settings are included in specific applications it can lead to the creation of configuration wizards with complex interrelated settings. These can be difficult to set up, manage and verify. Incorrect setting of incompatible configuration options can also lead to the data seeming to get lost within the system. Instead of concentrating just on switches and flags configuration should be looked at in a broader sense; e.g. the way in which the standard parts of a system are arranged to make up the whole.
True configuration for LIMS
True configuration of a LIMS means the bringing together of functional objects to create a solution that meets the needs of the user, not changing standard code. In this way, a system can be built to meet exact needs without compromising supportability and upgradeability of the system or risking obsolescence of functionality. The Matrix Gemini configuration approach involves using a graphical interface and screen editor to manipulate standard functional classes in order to design and implement a workflow. Consider sample registration; a standard functional class exists that supports the registering of samples, and another that supports the registering of multiple or bulk samples. The graphical screen designer employs drag and drop techniques that allow the user to design their own specific data input screens utilizing standard interface elements such as text boxes, combo boxes, list boxes and buttons. The data entered is then used by the appropriate object – in this case to create the sample or samples in the database.
The interface elements such as the list boxes, combo boxes and buttons are themselves standard objects, (also known as screen controls) with associated properties that allow the user to select, change and modify their behavior as required. Other functional classes support standard LIMS elements such as Test Assignment and Result Entry and many others. Other controls allow actions to be linked together to form a complete workflow. Data sets can be passed between functions or workflows without having to write data handling algorithms, and there is no need to implement typical programming features such as array
Customization vs Configurability Real Implications?
The customization approach has implications not just in the initial monetary cost of the programmers required to carry out the customization but in other less obvious, but no less important ways. Take the following example of batch manufacturing and lot traceability functionality created using a supplier’s application programming environment. Given the complexity of the potential manufacturing workflows it is entirely possible that the application as developed will not meet the needs of an organization. If that is the case, there are two options; develop the functionality from scratch or modify the existing code to do what it was not originally designed to do. Developing the functionality from scratch will likely recreate large amounts of existing functionality and will be wasteful and time consuming. Therefore modifying the standard code would seem the more appealing proposition. However, what are the consequences if the supplier issues an upgrade to the system that adds new functionality, fixes known errors or supports technological changes? At best the customized code will need to be reworked to support the changes (if that is possible), otherwise the customized code will need to be left as is, risking obsolescence of the system. Similarly, if the needs of the user change, the code will again need to be reworked – almost certainly by the supplier’s applications programmers. Not only are there costs associated with this, but any changes in the application code may require the LIMS to be re-validated.
This scenario can be avoided in the true configuration approach. This allows the supplier, or indeed users, to create specific screens and workflows that meet their needs without having to write or modify any computer code. The standard objects are simply manipulated to create a configuration that meets the specific needs. The complete configuration is held within the database and is unaffected by any upgrades from the supplier, as these will only modify the underlying technology layer of the product and the functioning of the standard classes and objects.