1 | BPSOSU8 ;BHAM ISC/FCS/DRS/FLS - utilities ;06/01/2004
|
---|
2 | ;;1.0;E CLAIMS MGMT ENGINE;**1,5**;JUN 2004;Build 45
|
---|
3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
4 | ;*** Collection of FSI UTILITIES ***
|
---|
5 | ;
|
---|
6 | ;EOPQ(LINES,PARAM,Xcode) - Return 0 to continue, 1 to quit.
|
---|
7 | ;PAUSE() Return 1 to continue, 0 to stop.
|
---|
8 | ;ENDRPT()
|
---|
9 | ;DEVICE(DEV,RTN,TITLE,MULTI) S up a device, 1 if successful, 0 not.
|
---|
10 | ;HEADER(PROGRAM,TITLE1,TITLE2,RUNTIME,NOFF,UL) Procedure call
|
---|
11 | ;CENTER
|
---|
12 | ;UNDERLINE
|
---|
13 | ;REPLICATE
|
---|
14 | ;FMPAGE() Handle the screen or printer for an FM print report.
|
---|
15 | ;PAGE0
|
---|
16 | ;STANDBY
|
---|
17 | ;======================================================================
|
---|
18 | EOPQ(LINESBOT,PARAM,EOPXCODE) ;EP -
|
---|
19 | ; IN: LINESBOT = (optional) # of LINES from bottom (IOSL) before
|
---|
20 | ; determining what to do next. I this is a CRT, we
|
---|
21 | ; will ask user whether to continue; for printers, just
|
---|
22 | ; continue. DEFAULT=6
|
---|
23 | ; PARAM = List of parameter codes (each may occur):
|
---|
24 | ; "M" - Will display "-- More --" at bottom.
|
---|
25 | ; EOPXCODE = xecutable code that will occur if this is the
|
---|
26 | ; end of the page (like, D HEADER^ROU).
|
---|
27 | ;
|
---|
28 | ; OUT: 0 if not end of page, OR if we're EOP but we're continuing;
|
---|
29 | ; 1 if user wants to quit.
|
---|
30 | ; May call this as DO in some cases (like a little trailer on report)
|
---|
31 | ;
|
---|
32 | N X,Y,%,DIR
|
---|
33 | ;
|
---|
34 | I '$G(IOSL) Q 0 ;if we don't know page length, then not at end
|
---|
35 | S LINESBOT=$S($G(LINESBOT):LINESBOT,1:6)
|
---|
36 | I ($Y+LINESBOT)<IOSL Q 0 ;not at end of page
|
---|
37 | ; -- Okay, we're at end of page
|
---|
38 | I $G(PARAM)["M" W !,?($S($G(IOM):IOM,1:80)-12),"-- More --"
|
---|
39 | ;
|
---|
40 | I '$$PAUSE Q 1 ;user wants out
|
---|
41 | X $G(EOPXCODE)
|
---|
42 | ;
|
---|
43 | Q 0
|
---|
44 | ;======================================================================
|
---|
45 | PAUSE() ;3/31/93
|
---|
46 | ;END of screen... should we continue?
|
---|
47 | ;I $E(IOST,1)'="C"
|
---|
48 | I '$$TOSCREEN^BPSOSU5 Q 1
|
---|
49 | K DIR
|
---|
50 | S DIR(0)="E" D ^DIR
|
---|
51 | Q Y ;Y=1 to continue, 0 to quit.
|
---|
52 | ;===================================================================
|
---|
53 | ENDRPT() ;EP - end of report. Pause until user presses return (or timeout)
|
---|
54 | I '$$TOSCREEN^BPSOSU5 W:$Y @IOF Q 1
|
---|
55 | I $G(FLGSTOP) W !," <escape>"
|
---|
56 | N DIR,X,Y
|
---|
57 | S DIR(0)="E"
|
---|
58 | S DIR("A")=" -- END OF REPORT -- (Press <ENTER> to return to menu)"
|
---|
59 | D ^DIR
|
---|
60 | Q Y
|
---|
61 | ;===================================================================
|
---|
62 | DEVICE(DEV,RTN,TITLE,MULTI) ;EP
|
---|
63 | ;Select an output device.
|
---|
64 | ;No parameters are required. DEV can be set alone, or if queuing
|
---|
65 | ; set to variables needed for queuing.
|
---|
66 | ; DEV - DEFAULT device, "HOME" if undefined.
|
---|
67 | ; RTN - Routine name if queuing is selected.
|
---|
68 | ; TITLE - Description for the task log if queuing is selected.
|
---|
69 | ; MULTI - I then ask NUMBER OF COPIES, which sets the variable
|
---|
70 | ; DCOPIES that the calling routine should use.
|
---|
71 | ;Return 1 if successful, 0 if not. Also returns DCOPIES to number of
|
---|
72 | ; copies if MULTI parameter is set.
|
---|
73 | ;Examples: Q:'$$DEVICE^ABSBUU01("STANDARD")
|
---|
74 | ;
|
---|
75 | ; Q:'$$DEVICE^ABSBUU01("PC;132;66","EN^WSHLC","CORRECTION LIST")
|
---|
76 | ; note: D ^%ZISC to close the device after printing is done.
|
---|
77 | N I,Y,%ZIS,POP,ZTRTN,ZTIO,ZTDESC,ZTSAVE,ZTQUEUED,PAGE
|
---|
78 | W !!
|
---|
79 | S ZTSAVE("PAGE")=""
|
---|
80 | I $D(RTN) S %ZIS="QM" ; Ask if queuing is allowed only if RTN is set.
|
---|
81 | S %ZIS("A")="Send report to device: " ;PROMPT
|
---|
82 | S %ZIS("B")=$S($D(DEV):DEV,1:"HOME") ;DEFAULT device
|
---|
83 | D ^%ZIS ;Input/Output variables.
|
---|
84 | I POP W " try again later" S Y=0 G DEVQ ;Device success flag
|
---|
85 | S PAGE=0
|
---|
86 | I '$D(IO("Q")) U IO S Y=1 G DEVQ ;Queuing not selected
|
---|
87 | S ZTRTN=RTN ;Routine entry point for queuing.
|
---|
88 | S ZTIO=ION ;Output device for queuing.
|
---|
89 | S ZTDESC=$G(TITLE) ;Report title if queuing is selected.
|
---|
90 | S ZTSAVE("*")="" ;All variables in memory for queuing.
|
---|
91 | D ^%ZTLOAD ;Entry point for queuing.
|
---|
92 | W !,$S($D(ZTQUEUED):"Request queued!",1:"Request cancelled!") ;flag
|
---|
93 | S Y='$D(ZTQUEUED)
|
---|
94 | D HOME^%ZIS ;S IO variables back to device = screen.
|
---|
95 | U IO ;Use the currently open IO device
|
---|
96 | DEVQ I +$G(MULTI)>0 D USE IO
|
---|
97 | . USE $P
|
---|
98 | . N Y
|
---|
99 | . S DCOPIES=0
|
---|
100 | . K DIR
|
---|
101 | . S DIR(0)="NO^0:99999",DIR("A")="NUMBER OF COPIES TO OUTPUT"
|
---|
102 | . S DIR("B")=1
|
---|
103 | . D ^DIR K DIR
|
---|
104 | . I +Y>0 S DCOPIES=Y
|
---|
105 | . I Y["^" S DCOPIES=-1
|
---|
106 | I $G(DCOPIES)<0 S Y=0
|
---|
107 | Q Y
|
---|
108 | ;===================================================================
|
---|
109 | HEADER(PROGRAM,TITLE1,TITLE2,RUNTIME,NOFF,UL) ;
|
---|
110 | ; This PROCEDURE accepts the routine name and titles and prints out a
|
---|
111 | ; standard header with the run date and time,page and increments
|
---|
112 | ; the page counter by 1. Page is initialized in function DEVICE.
|
---|
113 | ; W @IOF if (to SCREEN) OR (to PRINTER after page 1)
|
---|
114 | ; TITLE variable has special uses. I the calling routine
|
---|
115 | ; send-in the TITLE-array (by setting TITLE(1)="LINE 1", TITLE(n)=
|
---|
116 | ; "LINE n of title", and then D HEADER^WSHUTL("ROUTINE",.TITLE),"."),
|
---|
117 | ; then the entire array of TITLE will be used (and TITLE2 will be
|
---|
118 | ; ignored). You must send-in TITLE2="."
|
---|
119 | ; RUNTIME has been added so that all pages of the report can
|
---|
120 | ; have the same date.time. The calling report must send it in.
|
---|
121 | ; NOFF (optional) - if it exists, then do NOT issue a FormFeed.
|
---|
122 | ; This is necessary for reports that are controlled as a FileMan
|
---|
123 | ; template... since FM issues its own FF, this routine should not.
|
---|
124 | ; UL (opt) - is flag to print a 1-IOSL dashes after the header.
|
---|
125 | ; DEFAULT is no-underline. S UL to 1 to print the underline.
|
---|
126 | ;
|
---|
127 | ; Note: PAGE is assumed to exist even though it is not passed in
|
---|
128 | N X,N
|
---|
129 | S $Y=0,PAGE=$G(PAGE)
|
---|
130 | I $E(IOST,1)="C"!($E(IOST,1)="P"&(PAGE>0)) I '$D(NOFF) W @IOF
|
---|
131 | S PAGE=PAGE+1
|
---|
132 | I $G(RUNTIME)="" D NOW^%DTC S Y=$E(%,1,12) X ^DD("DD") S RUNTIME=Y
|
---|
133 | W !,"RUN DATE: ",RUNTIME
|
---|
134 | W ?(IOM-10),"PAGE: ",$J(PAGE,3,0)
|
---|
135 | I $D(PROGRAM),PROGRAM'="" W !,"PGM: ",PROGRAM
|
---|
136 | I $G(TITLE2)'="." DO
|
---|
137 | . I $D(TITLE1) D WCENTER^BPSOSU9(TITLE1)
|
---|
138 | . I $D(TITLE2) D WCENTER^BPSOSU9(TITLE2)
|
---|
139 | I $G(TITLE2)="." DO
|
---|
140 | . S N=""
|
---|
141 | . F S N=$O(TITLE1(N)) Q:N="" D WCENTER^BPSOSU9($G(TITLE1(N)))
|
---|
142 | I $G(UL)=1 D ;print dashes across the page
|
---|
143 | . W !
|
---|
144 | . FOR I=1:1:$S($G(IOM)>0:IOM,1:80) W "-"
|
---|
145 | W !
|
---|
146 | Q
|
---|
147 | ;===================================================================
|
---|
148 | FMPAGE ;at end of page
|
---|
149 | I $$TOSCREEN^BPSOSU5 D Q
|
---|
150 | . D PRESSANY^BPSOSU5()
|
---|
151 | I IOST["P-" W @IOF Q
|
---|
152 | ; should we fall through to PAGE0?
|
---|
153 | Q
|
---|
154 | ;===================================================================
|
---|
155 | PAGE0 ; This checks the IO device and issues a pagefeed if $Y>0
|
---|
156 | Q:'$G(IO)
|
---|
157 | ;OPEN IO USE IO I $Y>0 USE IO W #
|
---|
158 | U IO I $Y>0 U IO W #
|
---|
159 | Q
|
---|
160 | ;===================================================================
|
---|
161 | STANDBY ; W a message to screen to "Please Wait"
|
---|
162 | USE $P D WAIT^DICD USE +$G(IO)
|
---|
163 | Q
|
---|
164 | ;===================================================================
|
---|