Automated testing is a required part of any development but can be hard to achieve when using physical instruments and dynamically changing real-life samples. Here I will describe my solution to this, which impersonates laboratory instruments and randomly generates different sample characteristics.
If you are reading this externally I refer to Holly which is our Laboratory Information Management Systems (LIMS). This is the software used to manage the samples and instruments within the sample workflow.
Purpose
- Generate a set of samples and add them to Holly via Babble (HL7 interface)
- Generate each instruments out file set for interaction in Holly
- Add dummy workflow & test information to allow final dashboard testing
- Cross check data matches across each step automatically, data checked:
- Patient demographics
- Barcodes
- Plate position
- Id’s
- Re-extraction & failed actions
- Volumes, concentration & dilution info
Description – Workflow Simulator
DNA/RNA preparation workflow simulator
Generates:
With in/out sample ids and appropriate metrics and attributes
- HL7 data file – Auslab (external LIS) impersonator
- QiaSymphony (DNA extraction instrument) input driver file
- QiaSymphony rackfiles – QiaSymphony instrument impersonator
- Synergy Hx PlateReader driver file
- Hamilton MicroLab driver file (load Qubit plate on liquid handler)
- Qubit results file – PlateReader instrument impersonator
- Hamilton driver file (dilutions)
- Dilutions results file – Hamilton MicroLab instrument impersonator
- XL9 Label input file
- XL9 Label output file – XL9 instrument impersonator
Runs:
- Babble import of HL7 file
- Creates random workflow & sample metrics for dashboard (Lab work Impersonator)
By running this every time a change is made to software we can auto detect any issues from a software change. Inversely we can use these files to test instrument protocols when a change is made to the instruments onboard logic.
Code is kept in private source control but please email me if you are interested and I will put a modified version in git.