OpenSpecimen supports printing for specimen. On configuring printing, OpenSpecimen generates and writes the labels as CMD or CSV files on the file system. OpenSpecimen does not actually print the labels. It only writes the required data in the file format understood by the printer automation software like Bartender, NiceLabel, etc. The print software can be configured to process these CMD files in an automated fashion.
OpenSpecimen print rules support is very flexible. It supports:
- Different types of label types
- Different formats for different rules
- Different folders for different rules
For configuring the printing in OpenSpecimen please refer configuration section.
JSON files to a database table
It also writes the JSON files to a database table which can also be used to print labels. The CMD or CSV files is the most preferred and used method.
Below is the block diagram of the workflow:
Q: Which printers and scanners are supported by OpenSpecimen?
OpenSpecimen works with any printer or scanner. The interaction with the printer is done via printer software which is explained below.
Q: Which printer software should we use?
A: BarTender Automation Edition is most recommended. You are free to choose any other option as long as they support automated printing. Most of them follow similar approaches and should work with OpenSpecimen.
Q: OpenSpecimen requires the automation license running on a server or can it work with the desktop version?
A: It doesn't matter on which server/desktop the automation software is running. As long as the automation software is able to read the files generated by the OpenSpecimen software, it could be on any server.
Q: Does any user that would like to print labels from OpenSpecimen would need a separate printer?
A: No. There could be a single printer for multiple users based on the group/network requirements. If using multiple printers, it can be configured in the automation software to read the labels and send them to different printers as per the requirement.
Q: How to configure OpenSpecimen to generate labels for multiple printers?
A: One can create different rules based on the collection site, IP address. For each rule you can specify a different directory for property 'Output Directory'. Then configure the automation software to link the different directories with appropriate printers.
Q: Can only one user print per CP or do we create multiple lines for each person who would print in that CP?
A: Any number of users can print. Rules are not based on user. Ignore this field, this is just a legacy from old print rules which we are checking if we really need it.
Q: How is IP address of users used?
A: You might need to configure the same user to print to different printers located at different sites or buildings. E.g., there are two printers in two floors. Use Joe needs to print to first floor's printer when he is on the first floor and second floor's printer when he is on the second floor. This can be achieved using the IP addresses or ranges.
You can configure printing based on IP addresses of users. E.g. some sites assign dynamic IP addresses based on location of users. You can specify range of IP address. You can leave this blank if you do not want to use this feature.
Q: Are values for label types dictated by the printer software?
A: No. It is just configurable keywords that you configure in the printer software and then use it in the rules. Example include whether label is printed for cap or slide etc
Q: Are label designs dictated by the printer?
A: No. This is same as above. However, historically, this has been used to specify the path of printer label design template
Q: How to handle printing from remote sites?
For sites which will operate OpenSpecimen remotely from multiple geographical locations, below are the options to handle printing:
Option 1: Via shared folder on the cloud like DropBox
For example, when user prints from 'Site A', OpenSpecimen sends label information into DropBox/SharedFolderA. BarTender is installed on a cloud server which is listening to this DropBox folders. The printers should also be accessible on the cloud so that BarTender is able to route the printing job to specific printer.
Option 2: Download printed labels file CSV from OpenSpecimen UI
By enabling 'Download Labels Print File' in 'Settings' of OpenSpecimen, users can download the CSV with labels information to be printed. This CSV can be manually fed to printer to print labels. Refer to 'Download specimen labels print file' section in 'Print Rules' wiki page for more details.
Q. Bartender Videos
Refer to the files below for help setting up a File Integration:
Also, we have two webinar with additional information:
Q Sample output files
- Sample file in CSV format.
- Sample file in CMD format.
Step 1: Configure what needs to be printed on the specimen label
OpenSpecimen uses print rules to decide on how specimen label content should be formatted and printed. Refer to Print Rules for more details. The printing rules can be customized based on CP, specimen type among other attributes as explained.
Rules are matched in sequential fashion and stopped at first matching rule. Users are notified with an error message when none of the rules match specimen whose label is to be printed.
Step 2: Configure printer software to read generated labels
There are 2 options:
- Generated labels are stored in database table:
OS_LABEL_PRINT_JOB_ITEMS in JSON format. The printer software can be configured to poll this table at periodic intervals for new rows, read data and send it to printer. Please refer /wiki/spaces/DEV/pages/4948040 for more details
- Generated labels are written to CMD or CSV files saved in directory identified by
'Output Directory' value specified in the rules. The format of output file is as specified by
'Output File Format' value in the rules. Printer software can be configured to poll
'Output Directory' at periodic intervals for new files and print labels.
Adopters can implement custom print tokens by extending class
AbstractLabelTmplToken and providing implementation for following methods:
getName() - returns unique name of token. Example: "specimen_requirement_code"
getReplacement(Specimen s) - returns string to be included in printed label
The custom token implementation class needs to be registered with
Sample Specimen Label Formats
Example 1: Label printed with barcode, specimen label and location
Example 2: Label printed with barcode and specimen label
Example 3: Label printed with site name, barcode and specimen label