source: WorldVistAEHR/trunk/r/ONCOLOGY-ONC/ONCSED03.m@ 1396

Last change on this file since 1396 was 613, checked in by George Lilly, 15 years ago

initial load of WorldVistAEHR

File size: 7.9 KB
Line 
1ONCSED03 ;Hines OIFO/SG - EDITS 'RUN BATCH' (REPORT) ; 2/14/07 10:21am
2 ;;2.11;ONCOLOGY;**47**;Mar 07, 1995;Build 19
3 ;
4 Q
5 ;
6 ;***** PRINTS ADDITIONAL EDIT INFO
7 ;
8 ; EDIEN Internal number of the edit in the list of parsed
9 ; error messages generated by the RBQEXEC^ONCSED0101
10 ;
11EDINFO(EDIEN) ;
12 N DA,DIR,DIROUT,DIRUT,DTOUT,DUOUT,EDTNDX,ESIEN,ESNAME,I,NODE,RC,SL,TMP,X,Y
13 S RC=0
14 S ESIEN=+$G(@ONC8MSG@("ES",EDIEN)) Q:ESIEN'>0
15 S ESNAME=$G(@ONC8MSG@(ESIEN,1)) Q:ESNAME=""
16 S EDTNDX=+$P($G(@ONC8MSG@(ESIEN,"E",EDIEN,0)),U,3) Q:EDTNDX<0
17 S SL=$$REPEAT^XLFSTR("- ",$G(IOM,80)\2-1)
18 ;--- Header
19 S $Y=0 W @IOF,SL
20 W !,"Additional info on '"_$G(@ONC8MSG@(ESIEN,"E",EDIEN,1))_"'"
21 W !,SL
22 ;--- Description
23 S NODE=$$GETEDESC^ONCSED04(.ONCSAPI,ESNAME,EDTNDX)
24 I NODE'<0 W ! D Q:RC
25 . S I=0
26 . F S I=$O(@NODE@(I)) Q:I'>0 D Q:RC
27 . . W !,@NODE@(I) S RC=$$PAGE1()
28 ;--- Help
29 S NODE=$$GETEDHLP^ONCSED04(.ONCSAPI,ESNAME,EDTNDX)
30 I NODE'<0 W ! D Q:RC
31 . S I=0
32 . F S I=$O(@NODE@(I)) Q:I'>0 D Q:RC
33 . . W !,@NODE@(I) S RC=$$PAGE1()
34 ;--- Trailer
35 W !,SL
36 S RC=$$PAGE1(,1)
37 Q
38 ;
39 ;***** PRINTS THE MESSAGES
40 ;
41 ; [.ONCSAPI] Reference to the API descriptor (see ^ONCSAPI)
42 ;
43 ; ONC8MSG Closed root of the list of parsed error messages
44 ; (generated by the RBQEXEC^ONCSED0101)
45 ;
46 ; [FLAGS] Flags that control the output
47 ;
48 ; Return values:
49 ;
50 ; <0 Error Descriptor (see ^ONCSAPI for details)
51 ; 0 Ok
52 ; 1 User canceled the output ('^' was entered)
53 ; 2 Timeout
54 ;
55MESSAGES(ONCSAPI,ONC8MSG,FLAGS) ;
56 N ONCMNL ; Maximum number of lines per page
57 N ONCPAGE ; Pointers to the beginning of the current page
58 N ONCESIEN ; Internal number of the current edit set
59 N ONCEDIEN ; Internal number of the current edit
60 ;
61 N EDTNDX,ESNAME,IEN,NODE,RC,REPRINT,TMP
62 S RC=0,REPRINT=1,ONCMNL=$S($G(IOSL)>10:+IOSL,1:24)
63 ;=== Set the pointers to the beginning of the list
64 S ONCESIEN=$O(@ONC8MSG@(0)),ONCEDIEN=""
65 S ONCPAGE=ONCESIEN_U_ONCEDIEN
66 ;
67 ;=== Print the messages and process user input
68 F D Q:RC!(ONCESIEN'>0)
69 . F Q:ONCESIEN'>0 D Q:RC S ONCESIEN=$O(@ONC8MSG@(ONCESIEN)),ONCEDIEN=""
70 . . ;--- Edit set name
71 . . S ESNAME=@ONC8MSG@(ONCESIEN,1)
72 . . I ONCEDIEN'>0 D Q:RC
73 . . . I REPRINT S REPRINT=0
74 . . . E S RC=$$PAGE(3) Q:RC W !!
75 . . . S TMP=ESNAME_" (Metafile Version: "_$P(@ONC8MSG@(0),U,4)_")"
76 . . . W TMP,!,$$REPEAT^XLFSTR("-",$L(TMP))
77 . . . S ONCEDIEN=$O(@ONC8MSG@(ONCESIEN,"E",0))
78 . . ;---
79 . . F Q:ONCEDIEN'>0 D Q:RC S ONCEDIEN=$O(@ONC8MSG@(ONCESIEN,"E",ONCEDIEN))
80 . . . ;--- Edit name
81 . . . I REPRINT S REPRINT=0
82 . . . E S RC=$$PAGE(2) Q:RC W !!
83 . . . W ?2,ONCEDIEN_". "_@ONC8MSG@(ONCESIEN,"E",ONCEDIEN,1)
84 . . . S NODE=$NA(@ONC8MSG@(ONCESIEN,"E",ONCEDIEN))
85 . . . ;--- Messages generated by the edit
86 . . . S IEN=0
87 . . . F S IEN=$O(@NODE@("M",IEN)) Q:IEN'>0 D Q:RC
88 . . . . S RC=$$PRTMSG($P(@NODE@("M",IEN,0),U,2),@NODE@("M",IEN,1),5)
89 . . . Q:RC
90 . . . ;--- Fields validated by the edit
91 . . . S IEN=0
92 . . . F S IEN=$O(@NODE@("F",IEN)) Q:IEN'>0 D Q:RC
93 . . . . S TMP=$E(@NODE@("F",IEN,1),1,25) ; Name
94 . . . . S TMP=TMP_" ("_(+$P(@NODE@("F",IEN,0),U))_")" ; Position
95 . . . . S RC=$$PRTFLD(TMP,$G(@NODE@("F",IEN,2)),9,35)
96 . ;--- Force the "end of page" prompt after the last
97 . ;--- portion of the data
98 . I 'RC,$E(IOST,1,2)="C-",ONCESIEN'>0,$P(ONCPAGE,U,3) D
99 . . S RC=$$PAGE(,1)
100 . Q:+RC'=3
101 . ;--- Display the additional edit info
102 . D EDINFO(+$P(RC,U,2))
103 . ;--- Initiate the current page re-print
104 . W @IOF S ($Y,RC)=0,REPRINT=1
105 . S ONCESIEN=$P(ONCPAGE,U),ONCEDIEN=$P(ONCPAGE,U,2)
106 ;
107 ;=== Cleanup
108 K ^UTILITY($J,"W")
109 Q RC
110 ;
111 ;***** CHECKS IS NEW PAGE OF MESSAGES SHOULD BE STARTED
112 ;
113 ; [RESERVE] Number of additional reserved lines (0, by default).
114 ; If the current page does not have so many lines
115 ; available, a new page will be started.
116 ;
117 ; [FORCE] Force the "end of page" prompt.
118 ;
119 ; Return values:
120 ;
121 ; 0 Ok
122 ; 1 User canceled the output ('^' was entered)
123 ; 2 Timeout
124 ; 3 Display the edit info
125 ;
126PAGE(RESERVE,FORCE) ;
127 N RC,TRM
128 S RC=0,TRM=($E(IOST,1,2)="C-"),$P(ONCPAGE,U,3)=1
129 I ($Y'<(ONCMNL-$S(TRM:3,1:1)-$G(RESERVE)))!$G(FORCE) D
130 . I 'TRM W @IOF S $Y=0 Q
131 . N DA,DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
132 . S DIR(0)="FAO^^K:X'?.N X"
133 . S DIR("A")="RETURN to continue, '^' to exit, or Edit# for help:"
134 . S DIR("?",1)="Press RETURN key to continue the output, enter '^'"
135 . S DIR("?",2)="to stop it, or enter the number printed to the left"
136 . S DIR("?",3)="of the edit name to get additional information about"
137 . S DIR("?")="this edit."
138 . W ! D ^DIR
139 . S RC=$S($D(DUOUT):1,$D(DTOUT):2,1:0) Q:RC
140 . I X>0 S RC=3_U_(+X) Q
141 . S $Y=0 W !
142 . ;--- Mark the beginning of the new page
143 . S ONCPAGE=ONCESIEN_U_ONCEDIEN
144 Q RC
145 ;
146 ;***** CHECKS IS NEW PAGE OF THE EDIT INFO SHOULD BE STARTED
147 ;
148 ; [RESERVE] Number of additional reserved lines (0, by default).
149 ; If the current page does not have so many lines
150 ; available, a new page will be started.
151 ;
152 ; [FORCE] Force the prompt
153 ;
154 ; Return values:
155 ;
156 ; 0 Ok
157 ; 1 User canceled the output ('^' was entered)
158 ; 2 Timeout
159 ;
160PAGE1(RESERVE,FORCE) ;
161 N RC,TRM
162 S RC=0,TRM=($E(IOST,1,2)="C-")
163 I ($Y'<(ONCMNL-$S(TRM:3,1:1)-$G(RESERVE)))!$G(FORCE) D
164 . I 'TRM W @IOF S $Y=0 Q
165 . N DA,DIR,DIROUT,DIRUT,DTOUT,DUOUT,I,X,Y
166 . S DIR(0)="EA"
167 . S DIR("A")="Enter RETURN to continue or '^' to return to messages:"
168 . W ! D ^DIR
169 . S RC=$S($D(DUOUT):1,$D(DTOUT):2,1:0)
170 . I 'RC S $Y=0 W !
171 Q RC
172 ;
173 ;***** PRINTS THE FIELD (INTERNAL)
174 ;
175 ; NAME Field name
176 ; X Field value
177 ; DIWL Left margin for the output
178 ; MNL Maximum length of the field name
179 ;
180 ; Return values:
181 ;
182 ; 0 Ok
183 ; 1 User canceled the output ('^' was entered)
184 ; 2 Timeout
185 ;
186PRTFLD(NAME,X,DIWL,MNL) ;
187 N DIWF,DIWR,I,L,RC,TMP
188 S DIWF="|",L=MNL+3,DIWR=$G(IOM,80)-L-1
189 K ^UTILITY($J,"W")
190 D ^DIWP
191 ;--- Write the name and the first piece of the value
192 S TMP=DIWL-1,L=L+TMP
193 W !?TMP,$$LJ^XLFSTR(NAME,MNL)_" = "_$G(^UTILITY($J,"W",DIWL,1,0))
194 S RC=$$PAGE() Q:RC RC
195 ;--- Write remaining pieces of the value (if any)
196 S I=1
197 F S I=$O(^UTILITY($J,"W",DIWL,I)) Q:I'>0 D Q:RC
198 . W !?L,$G(^UTILITY($J,"W",DIWL,I,0))
199 . S RC=$$PAGE()
200 Q RC
201 ;
202 ;***** PRINTS THE MESSAGE (INTERNAL)
203 ;
204 ; TYPE Message type
205 ; X Message text
206 ; DIWL Left margin for the output
207 ;
208 ; Return values:
209 ;
210 ; 0 Ok
211 ; 1 User canceled the output ('^' was entered)
212 ; 2 Timeout
213 ;
214PRTMSG(TYPE,X,DIWL) ;
215 N DIWF,DIWR,I,L,RC,TMP
216 S DIWF="|",L=$L(TYPE)+1,DIWR=$G(IOM,80)-L-1
217 K ^UTILITY($J,"W")
218 D ^DIWP
219 ;--- Write the type and first piece of the name
220 S TMP=DIWL-1,L=L+TMP
221 W !?TMP,TYPE_":"_$G(^UTILITY($J,"W",DIWL,1,0))
222 S RC=$$PAGE() Q:RC RC
223 ;--- Write remaing pieces of the name (if any)
224 S I=1
225 F S I=$O(^UTILITY($J,"W",DIWL,I)) Q:I'>0 D Q:RC
226 . W !?L,$G(^UTILITY($J,"W",DIWL,I,0))
227 . S RC=$$PAGE()
228 Q RC
229 ;
230 ;***** PRINTS THE TOTALS
231 ;
232 ; [.ONCSAPI] Reference to the API descriptor (see ^ONCSAPI)
233 ;
234 ; ONC8MSG Closed root of the list of parsed error messages
235 ; (generated by the RBQEXEC^ONCSED0101)
236 ;
237 ; [FLAGS] Flags that control the output
238 ;
239 ; Return values:
240 ;
241 ; <0 Error Descriptor (see ^ONCSAPI for details)
242 ; 0 Ok
243 ; 1 User canceled the output ('^' was entered)
244 ; 2 Timeout
245 ;
246TOTALS(ONCSAPI,ONC8MSG,FLAGS) ;
247 N EDIEN,ESIEN,IEN,ONCMNL,RC,TMP
248 S RC=0,ONCMNL=$S($G(IOSL)>10:+IOSL,1:20)
249 ;--- Header
250 S RC=$$PAGE(3) Q:RC RC
251 W !!,$$LJ^XLFSTR("Edit Set","50T")_" Errors Warnings"
252 W !,$$REPEAT^XLFSTR("-",50)_" ------ --------"
253 ;--- Edit set totals
254 S ESIEN=0
255 F S ESIEN=$O(@ONC8MSG@(ESIEN)) Q:ESIEN'>0 D Q:RC
256 . W !,$$LJ^XLFSTR(@ONC8MSG@(ESIEN,1),"50T")
257 . S TMP=$G(@ONC8MSG@(ESIEN,0))
258 . W " "_$J($P(TMP,U,1),6)_" "_$J($P(TMP,U,2),8)
259 . S RC=$$PAGE() Q:RC
260 Q RC
Note: See TracBrowser for help on using the repository browser.