Difference between revisions of "Setting up a VISTA Printer"
(→Cache/Linux printing) |
|||
Line 11: | Line 11: | ||
OPEN PARAMETERS: "QW" SUBTYPE: P-HPLJ4SI-P12 | OPEN PARAMETERS: "QW" SUBTYPE: P-HPLJ4SI-P12 | ||
TYPE: TERMINAL | TYPE: TERMINAL | ||
+ | </pre> | ||
+ | |||
+ | Please note that there is a bug in DEVOK^%ZOSV that prevents it from checking the device properly. | ||
+ | |||
+ | You can also use the method developed but not adopted by the VA in patch [http://foia-vista.osehra.org/Patches_By_Application/XU-KERNEL/XU-8_SEQ-485_PAT-585.TXT XU*8.0*585]. After attempting to use this method in production, I would recommend against it, because a. CPRS and BCMA code is not configured to pick up PQ devices and b. %ZISC has issues with PQ devices. I have fixed both of these issues; but the code for this is not in VISTA yet. | ||
+ | |||
+ | Here's a sample device that uses the XU*8.0*585 method: | ||
+ | |||
+ | <pre> | ||
+ | NAME: PRINTER_NAME $I: PRINTER_NAME | ||
+ | PURGE OLD PRINT QUEUE FILES: YES LOCATION OF TERMINAL: Cups Device | ||
+ | SUBTYPE: P-HP-LTR-POR-C17L7-W128-NOFF TYPE: PRINT QUEUE | ||
</pre> | </pre> | ||
Revision as of 19:17, 19 September 2016
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
Please note that there is a bug in DEVOK^%ZOSV that prevents it from checking the device properly.
You can also use the method developed but not adopted by the VA in patch XU*8.0*585. After attempting to use this method in production, I would recommend against it, because a. CPRS and BCMA code is not configured to pick up PQ devices and b. %ZISC has issues with PQ devices. I have fixed both of these issues; but the code for this is not in VISTA yet.
Here's a sample device that uses the XU*8.0*585 method:
NAME: PRINTER_NAME $I: PRINTER_NAME PURGE OLD PRINT QUEUE FILES: YES LOCATION OF TERMINAL: Cups Device SUBTYPE: P-HP-LTR-POR-C17L7-W128-NOFF TYPE: PRINT QUEUE
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.