Setting up a VISTA Printer
Back to Programming VistA Issues
Contents
This is an updated page. See this page for old content.
Cache/Linux printing
You can use Pipes in Cache as well to print on Linux/Unix. Here's an operative example.
NAME: SAM'S PHARMACY PRINTER $I: /usr/bin/lpr -PSAN_FL6 -l OPEN PARAMETERS: "QW" SUBTYPE: P-HPLJ4SI-P12 TYPE: TERMINAL
GT.M/Linux printing
Pipes again; just like Cache.
NAME: PHAR-IP-DM $I: PHAR-IP-DM LOCATION OF TERMINAL: Inpatient Pharmacy Dot-Matrix OPEN PARAMETERS: (shell="/bin/sh":comm="lpr -l -P PHAR-IP-DM 2>/dev/null":WRITEONLY)::"pipe" SUBTYPE: P-EPSON-DM-P15-5L TYPE: TERMINAL NAME: PHAR-IP-LS $I: PHAR-IP LOCATION OF TERMINAL: Inpatient Pharmacy Landscape OPEN PARAMETERS: (shell="/bin/sh":comm="lpr -P PHAR-IP -l":WRITEONLY)::"pipe" SUBTYPE: P-HPLJ4SI-P13-LS TYPE: TERMINAL NAME: PHAR-IP-POR-P12 $I: PHAR-IP LOCATION OF TERMINAL: Inpatient Pharmacy Portrait (PL) OPEN PARAMETERS: (shell="/bin/sh":comm="lpr -P PHAR-IP -l":WRITEONLY)::"pipe" MNEMONIC: PL SUBTYPE: P-HPLJ4SI-P12 TYPE: TERMINAL NAME: PHAR-IP-POR-P16 $I: PHAR-IP LOCATION OF TERMINAL: Inpatient Pharmacy Portrait (MAR) OPEN PARAMETERS: (shell="/bin/sh":comm="lpr -P PHAR-IP -l":WRITEONLY)::"pipe" MNEMONIC: MAR SUBTYPE: P-HPLJ2-P16 TYPE: TERMINAL
How does this work? The way this works is that $I becomes the IO variable. The open parameters tells VISTA how to open the device.
Vista does this:
S IO=[$I] S param=[OPEN PARAMETERS] O IO:param U IO Send Open Execute from Subtype U IO(0) Interact with user; open another job, etc... U IO write write write Send Close Execute from Subtype C IO etc.
No need to do pre-open and post-close executes on the device which dynamically change IOs.
Avoiding the Staircase effect when printing from GT.M/Cache on *Nix
For an explanation of the Staircase effect, see this: http://www.digitalissues.co.uk/html/os/unix/stair.html
Basically, the new line doesn't do a carriage return with it, so our output just flows off the page. So when you print a 10 line document, you may only see one line, as the rest was printed outside of the margin.
If you are sending raw output (lpr with the -l option) from VISTA to any PCL compatible printer (and VISTA by and large uses PCL for formatting plain text output), you need to add this to your open execute:
W $C(27),"&k2G"
This tells the PCL compatible printer to append a CR to each LF or FF.
On the other hand, if you are asking cups to handle the formatting (lpr without the -l option), cups properly formats the line returns through a cups filter, so you don't have to do anything.