1 | RMPR5HQ4 ;HCIOFO/ODJ - INVENTORY REPORT - PARAMETER DATA ENTRY ; 20 SEP 00
|
---|
2 | ;;3.0;PROSTHETICS;**51,84,103**;Feb 09, 1996
|
---|
3 | ;
|
---|
4 | ; AAC Patch 84, 02-25-04, additions, deletions and change descriptions for Groups and lines.
|
---|
5 | ;
|
---|
6 | ; Prompts for Station, Start date, End date, level of detail,
|
---|
7 | ; NPPD group, NPPD line, HCPC selections and Report Device
|
---|
8 | START N RMPRSDT,RMPREDT,RMPREXC,RMPRSEL,RMPRHTY,RMPRGLST,RMPRLINX
|
---|
9 | N RMPRI,RMPRJ,RMPRLCN,RMPRHCN,RMPR,RMPRGRPA,RMPRVISN
|
---|
10 | ; RMPR("STA") Station Number (ien ^DIC(4)
|
---|
11 | S RMPRSDT="" ; start date VM internal
|
---|
12 | S RMPREDT=DT ; end date VM internal
|
---|
13 | I '$D(RMPRDET) N RMPRDET S RMPRDET="" ; Level of detail
|
---|
14 | S RMPRHTY="" ; type of HCPCS selection
|
---|
15 | S RMPRLCN=1 ; Count for number of individual NPPD lines selected
|
---|
16 | S RMPRHCN=1 ; Count for number of individual HCPCs selected
|
---|
17 | K RMPREXC ; Exit condition from prompts (^ defined as quit)
|
---|
18 | K RMPRSEL ; Array of parameter selections
|
---|
19 | ; If this array gets too big then need to save in ^TMP
|
---|
20 | ; in which case queuing option will have to be removed
|
---|
21 | ;
|
---|
22 | D GRPLST(.RMPRGLST) ;set list of NPPD group codes for DIR prompt
|
---|
23 | D GRPARY(.RMPRGRPA)
|
---|
24 | D SETLIN(.RMPRLINX) ;set an indexing array for NPPD line help
|
---|
25 | S RMPREXC=$$STN(.RMPR,.RMPRVISN)
|
---|
26 | I RMPREXC="^" G EDX
|
---|
27 | S RMPREXC=$$STDT(.RMPRSDT) ;get Start Date (fileman format)
|
---|
28 | I RMPREXC="^" G EDX
|
---|
29 | S RMPREXC=$$ENDT(.RMPREDT,RMPRSDT) ;get End Date (fileman format)
|
---|
30 | I RMPREXC="^" G EDX
|
---|
31 | I RMPRDET="" S RMPREXC=$$LEV(.RMPRDET) ;get Level of Detail
|
---|
32 | I RMPREXC="^" G EDX
|
---|
33 | I RMPRDET="G" K RMPRSEL S RMPRSEL("*")="" G EDDEV ;NPPD group level of detail
|
---|
34 | I RMPRDET="L" G EDLIN ;NPPD line level of detail
|
---|
35 | I RMPRDET="H"!(RMPRDET="I") G EDHCPC ;HCPC or Item level of detail
|
---|
36 | ;
|
---|
37 | ; NPPD Group level of detail
|
---|
38 | EDGRP S RMPREXC=$$NPGRP(.RMPRSEL)
|
---|
39 | I RMPREXC="^" G EDX
|
---|
40 | G EDDEV
|
---|
41 | ;
|
---|
42 | ; NPPD Line level of detail
|
---|
43 | EDLIN S RMPREXC=$$NPLIN(.RMPRSEL)
|
---|
44 | I RMPREXC="^" G EDX
|
---|
45 | EDLINX G EDDEV
|
---|
46 | ;
|
---|
47 | ; HCPC level of detail
|
---|
48 | EDHCPC S RMPREXC=$$HCPCTY(.RMPRHTY)
|
---|
49 | I RMPREXC="^" G EDX
|
---|
50 | I RMPRHTY="" G EDDEV
|
---|
51 | I RMPRHTY="A" K RMPRSEL S RMPRSEL("*")="" G EDDEV
|
---|
52 | I RMPRHTY="G" S RMPREXC=$$NPGRP(.RMPRSEL) G EDDEV
|
---|
53 | I RMPRHTY="L" S RMPREXC=$$NPLIN(.RMPRSEL) G EDDEV
|
---|
54 | S RMPREXC=$$HCPC(.RMPRSEL,.RMPRHCN)
|
---|
55 | G EDDEV
|
---|
56 | ;
|
---|
57 | ; Get device and run report or queue it
|
---|
58 | EDDEV S RMPREXC=$$REPDEV("")
|
---|
59 | I RMPREXC="^" G EDX
|
---|
60 | I '$D(IO("Q")) D REPORT^RMPR5HQ5 G EDX
|
---|
61 | K IO("Q")
|
---|
62 | S ZTDESC="INVENTORY REPORT",ZTRTN="REPORT^RMPR5HQ5",ZTIO=ION
|
---|
63 | S ZTSAVE("RMPRSDT")=""
|
---|
64 | S ZTSAVE("RMPREDT")=""
|
---|
65 | S ZTSAVE("RMPRDET")=""
|
---|
66 | S ZTSAVE("RMPRSEL(")=""
|
---|
67 | ;S ZTSAVE("IOM")=""
|
---|
68 | S ZTSAVE("RMPR(""STA"")")=""
|
---|
69 | D ^%ZTLOAD
|
---|
70 | W:$D(ZTSK) !,"REQUEST QUEUED!" H 1
|
---|
71 | EDX Q
|
---|
72 | ;
|
---|
73 | ; Prompt for Site/Station
|
---|
74 | STN(RMPR,RMPRVISN) ;
|
---|
75 | N X,Y,DIC,DA
|
---|
76 | S RMPRVISN=""
|
---|
77 | D DIV4^RMPRSIT ; call standard Prosthetic site look-up
|
---|
78 | I $D(X) S X="^"
|
---|
79 | E S X="" S:RMPRSITE'="" RMPRVISN=$P($G(^RMPR(669.9,RMPRSITE,"INV")),"^",2)
|
---|
80 | Q X
|
---|
81 | ;
|
---|
82 | ; Prompt for level of detail
|
---|
83 | EN1 N RMPRDET S RMPRDET="G" ;entry point NPPD Group level
|
---|
84 | G START
|
---|
85 | EN2 N RMPRDET S RMPRDET="L" ;entry point NPPD Line level
|
---|
86 | G START
|
---|
87 | EN3 N RMPRDET S RMPRDET="H" ;entry point HCPCS level
|
---|
88 | G START
|
---|
89 | EN4 N RMPRDET S RMPRDET="I" ;entry point Item level
|
---|
90 | G START
|
---|
91 | LEV(RMPRDET) ;
|
---|
92 | N DIR,X,Y
|
---|
93 | S RMPRDET=$G(RMPRDET)
|
---|
94 | S DIR(0)="S^G:NPPD Group;L:NPPD Line;H:HCPCS Code;I:HCPCS Item"
|
---|
95 | S DIR("A")="Select inventory report level of detail"
|
---|
96 | D ^DIR
|
---|
97 | I Y="",$D(DTOUT) S X="^" G LEVX
|
---|
98 | I Y="^"!(Y="^^") S X="^" G LEVX
|
---|
99 | S RMPRDET=Y
|
---|
100 | LEVX Q X
|
---|
101 | ;
|
---|
102 | ; Prompt for Start Date
|
---|
103 | STDT(RMPRSDT) ; RMPRSDT is start date in FM internal form
|
---|
104 | N %DT,X,Y
|
---|
105 | S %DT("A")="Beginning Date: "
|
---|
106 | S %DT(0)=-DT
|
---|
107 | S %DT="AEP"
|
---|
108 | D ^%DT
|
---|
109 | I Y<0 S X="^"
|
---|
110 | S RMPRSDT=$P(Y,".",1)
|
---|
111 | Q X
|
---|
112 | ;
|
---|
113 | ; Prompt for End Date
|
---|
114 | ENDT(RMPREDT,RMPRSDT) ; RMPREDT is end date in FM internal form
|
---|
115 | N %DT,X,Y
|
---|
116 | ENDT1 S %DT("A")="Ending Date: "
|
---|
117 | S %DT(0)=-DT
|
---|
118 | S %DT="AEP"
|
---|
119 | D ^%DT
|
---|
120 | I Y<0 S X="^" G ENDT1X
|
---|
121 | S RMPREDT=$P(Y,".",1)
|
---|
122 | I RMPREDT<RMPRSDT W !,"Ending date should not precede start date",! G ENDT1
|
---|
123 | ENDT1X Q X
|
---|
124 | ;
|
---|
125 | ; Prompt for NPPD group
|
---|
126 | NPGRP(RMPRSEL) ;
|
---|
127 | N DIR,DA,X,Y,RMPRCNT,RMPRI,RMPRJ,RMPRGRP
|
---|
128 | W !
|
---|
129 | F RMPRCNT=1:1:$L(RMPRGLST,";") D
|
---|
130 | . W !,$J(RMPRCNT,2)_". "_$P($P(RMPRGLST,";",RMPRCNT),":",2)
|
---|
131 | . Q
|
---|
132 | S DIR(0)="L" S:$D(RMPRSEL) DIR(0)=DIR(0)_"O"
|
---|
133 | S DIR("A")="Select NPPD Group "
|
---|
134 | S $P(DIR(0),U,2)="1:"_RMPRCNT
|
---|
135 | D ^DIR
|
---|
136 | I Y="",$D(DTOUT) S X="^" G NPGRPX
|
---|
137 | I Y="^"!(Y="^^") S X="^" G NPGRPX
|
---|
138 | I Y="" S X="" G NPGRPX ; no selection so just exit
|
---|
139 | ;
|
---|
140 | ; add in the new selections
|
---|
141 | S RMPRI=""
|
---|
142 | F S RMPRI=$O(Y(RMPRI)) Q:RMPRI="" D Q:RMPRI=""
|
---|
143 | . I $L(Y(RMPRI),",")-1=RMPRCNT D Q
|
---|
144 | .. K RMPRSEL
|
---|
145 | .. S RMPRSEL("*")="" ; all groups selected
|
---|
146 | .. S RMPRI=""
|
---|
147 | .. Q
|
---|
148 | . F RMPRJ=1:1:$L(Y(RMPRI),",")-1 D
|
---|
149 | .. S RMPRGRP=$P($P(RMPRGLST,";",$P(Y(RMPRI),",",RMPRJ)),":",1)
|
---|
150 | .. K RMPRSEL(RMPRGRP)
|
---|
151 | .. S RMPRSEL(RMPRGRP,"*")=""
|
---|
152 | .. Q
|
---|
153 | . Q
|
---|
154 | NPGRPX Q X
|
---|
155 | ;
|
---|
156 | ; Prompt for NPPD line
|
---|
157 | ; User can select lines within a group
|
---|
158 | ; If more than 1 group selected must use all lines within those groups
|
---|
159 | NPLIN(RMPRSEL) ;
|
---|
160 | N DIR,DA,X,Y,RMPRHPG,RMPRGRP,RMPRLIN,RMPREXC,RMPRI,RMPRJ
|
---|
161 | S DIR(0)="L" S:$D(RMPRSEL) DIR(0)=DIR(0)_"O"
|
---|
162 | NPLIN1C S RMPREXC=$$NPGRP(.RMPRSEL)
|
---|
163 | I RMPREXC="^" S X="^" G NPLIN1X
|
---|
164 | I $O(RMPRSEL(""))="*" S X="" G NPLIN1X
|
---|
165 | S RMPRI=0,RMPRJ="" F S RMPRJ=$O(RMPRSEL(RMPRJ)) Q:RMPRJ="" S RMPRI=RMPRI+1 Q:RMPRI=2
|
---|
166 | I RMPRI=2 S X="" G NPLIN1X
|
---|
167 | S RMPRGRP=$O(RMPRSEL("")) K RMPRSEL
|
---|
168 | NPLIN1A D NPLINH(RMPRGRP,.RMPRHPG)
|
---|
169 | S $P(DIR(0),U,2)="1:"_RMPRHPG
|
---|
170 | S DIR("A")="Select NPPD line(s) within the above group"
|
---|
171 | D ^DIR
|
---|
172 | I Y="",$D(DTOUT) S X="^" G NPLIN1X
|
---|
173 | I Y="^"!(Y="^^") S X="^" G NPLIN1X
|
---|
174 | I Y="" S X="" G NPLIN1X
|
---|
175 | S RMPRI=""
|
---|
176 | F S RMPRI=$O(Y(RMPRI)) Q:RMPRI="" D Q:RMPRI=""
|
---|
177 | . I $L(Y(RMPRI),",")-1=RMPRHPG D Q
|
---|
178 | .. K RMPRSEL(RMPRGRP)
|
---|
179 | .. S RMPRSEL(RMPRGRP,"*")="" ; all lines selected
|
---|
180 | .. S RMPRI=""
|
---|
181 | .. Q
|
---|
182 | . F RMPRJ=1:1:$L(Y(RMPRI),",")-1 D
|
---|
183 | .. D NPLINC(RMPRGRP,$P(Y(RMPRI),",",RMPRJ),.RMPRLIN)
|
---|
184 | .. K RMPRSEL(RMPRGRP,RMPRLIN)
|
---|
185 | .. S RMPRSEL(RMPRGRP,RMPRLIN,"*")=""
|
---|
186 | .. Q
|
---|
187 | . Q
|
---|
188 | S X=""
|
---|
189 | NPLIN1X Q X
|
---|
190 | ;
|
---|
191 | ; Check entered NPPD line
|
---|
192 | ; OFFS = line offset in RMPRN62 if valid NPPD line (else null)
|
---|
193 | ;
|
---|
194 | NPLINC(RMPRGRP,INP,RMPRLIN) ;
|
---|
195 | N S,OFFS
|
---|
196 | S OFFS=RMPRLINX(RMPRGRP)+INP-1
|
---|
197 | S S=$P($T(DES+OFFS^RMPRN62),";;",2)
|
---|
198 | S RMPRLIN=$P(S,";",1)
|
---|
199 | Q
|
---|
200 | ;
|
---|
201 | ; Display NPPD lines for a given group
|
---|
202 | NPLINH(RMPRGRP,TO) ;
|
---|
203 | N FR,I,S,LINCD
|
---|
204 | W !,"NPPD Lines for Group: ",RMPRGRP," - ",RMPRGRPA(RMPRGRP),!
|
---|
205 | S FR=RMPRLINX(RMPRGRP)
|
---|
206 | S TO=0
|
---|
207 | F S S=$P($T(DES+FR^RMPRN62),";;",2),LINCD=$P(S,";",1) Q:$P(LINCD," ",1)'=RMPRGRP D
|
---|
208 | . S TO=TO+1
|
---|
209 | . W !,$J(TO,2),". ",$P(S,";",1)_" "_$P(S,";",2)
|
---|
210 | . W:$D(RMPRSEL(RMPRGRP,LINCD)) ?65,"<< Selected"
|
---|
211 | . S FR=FR+1
|
---|
212 | . Q
|
---|
213 | Q
|
---|
214 | ;
|
---|
215 | ; Select type of HCPCS selection
|
---|
216 | HCPCTY(RMPRHTY) ;
|
---|
217 | N DIR,DA,X,Y
|
---|
218 | S DIR("B")="A"
|
---|
219 | S DIR(0)="S^A:ALL HCPCS;G:ALL HCPCS for NPPD group;L:ALL HCPCS for NPPD line;S:Select individual HCPCS"
|
---|
220 | S DIR("A")="Choose HCPCS selection option"
|
---|
221 | D ^DIR
|
---|
222 | I Y="",$D(DTOUT) S X="^" G HCPCTYX
|
---|
223 | I Y="^"!(Y="^^") S X="^" G HCPCTYX
|
---|
224 | I X="" S RMPRHTY="" G HCPCTYX
|
---|
225 | S RMPRHTY=Y
|
---|
226 | HCPCTYX Q X
|
---|
227 | ;
|
---|
228 | ; Select HCPCS
|
---|
229 | HCPC(RMPRSEL,RMPRSCN) ;
|
---|
230 | N DIC,X,Y,DA,RMPRLIN
|
---|
231 | S DIC="^RMPR(661.1,",DIC(0)="AEQMZ"
|
---|
232 | HCPC1 S DIC("A")="Select HCPCS "_RMPRSCN_": "
|
---|
233 | D ^DIC
|
---|
234 | I $D(DTOUT) S X="^" G HCPCX
|
---|
235 | I $D(DUOUT) S X="^" G HCPCX
|
---|
236 | I X="" G HCPCX
|
---|
237 | S RMPRLIN=$P(Y(0),U,7)
|
---|
238 | S:RMPRLIN="" RMPRLIN="999 X"
|
---|
239 | S RMPRSEL($P(RMPRLIN," ",1),RMPRLIN,$P(Y,U,1))=""
|
---|
240 | S RMPRSCN=RMPRSCN+1
|
---|
241 | G HCPC1
|
---|
242 | HCPCX Q X
|
---|
243 | ;
|
---|
244 | ; Select Report device
|
---|
245 | REPDEV(RMPRDEV) ;
|
---|
246 | N X,POP,Y,%ZIS,IOP
|
---|
247 | REPDEV1 S X=""
|
---|
248 | S %ZIS="MQ" K IOP D ^%ZIS I POP S X="^" G REPDEVX
|
---|
249 | I IOM<132 W !,"You need at least 132 columns for this report.",!,"Please use a device capable of this requirement.",! G REPDEV1
|
---|
250 | REPDEVX Q X
|
---|
251 | ;
|
---|
252 | ; LINX is an array used in the help system within NPPD line selection
|
---|
253 | ; Basically each page of help will show lines for a group.
|
---|
254 | ; Each page has a start line corresponding to an offset in RMPRN62
|
---|
255 | SETLIN(LINX) ;
|
---|
256 | N I,HLPPG,S,LINCD,LINCD0
|
---|
257 | S HLPPG=0,LINCD0=""
|
---|
258 | F I=1:1 S S=$T(DES+I^RMPRN62) D Q:LINCD0=""
|
---|
259 | . S LINCD=$P($P(S,";;",2),";",1)
|
---|
260 | . S HLPPG=$P(LINCD," ",1)
|
---|
261 | . I $E(HLPPG)'?1N S LINX(HLPPG)=I,LINCD0="" Q
|
---|
262 | . I HLPPG'=LINCD0 D Q
|
---|
263 | .. S LINX(HLPPG)=I,LINCD0=HLPPG
|
---|
264 | .. Q
|
---|
265 | . Q
|
---|
266 | Q
|
---|
267 | ;
|
---|
268 | ; Set NPPD (new) group codes and desc. for use in DIR
|
---|
269 | ; set of codes prompt.
|
---|
270 | ; Hard coded, but better if in Fileman file sometime
|
---|
271 | ; Codes and desc. copied from RMPRN6UT
|
---|
272 | GRPLST(LIST) ;
|
---|
273 | S LIST="100:WHEELCHAIRS AND ACCESSORIES"
|
---|
274 | S $P(LIST,";",2)="200:ARTIFICIAL LEGS"
|
---|
275 | S $P(LIST,";",3)="300:ARTIFICIAL ARMS AND TERMINAL DEVICES"
|
---|
276 | S $P(LIST,";",4)="400:ORTHOSIS/ORTHOTICS"
|
---|
277 | S $P(LIST,";",5)="500:SHOES/ORTHOTICS"
|
---|
278 | S $P(LIST,";",6)="600:SENSORI-NEURO AIDS"
|
---|
279 | S $P(LIST,";",7)="700:RESTORATIONS"
|
---|
280 | S $P(LIST,";",8)="800:OXYGEN AND RESPIRATORY"
|
---|
281 | S $P(LIST,";",9)="900:MEDICAL EQUIPMENT"
|
---|
282 | S $P(LIST,";",10)="910:ALL OTHER SUPPLIES AND EQUIPMENT"
|
---|
283 | S $P(LIST,";",11)="920:HOME DIALYSIS PROGRAM"
|
---|
284 | S $P(LIST,";",12)="930:ADAPTIVE EQUIPMENT"
|
---|
285 | S $P(LIST,";",13)="940:HISA"
|
---|
286 | S $P(LIST,";",14)="960:SURGICAL IMPLANTS"
|
---|
287 | S $P(LIST,";",15)="999:MISC"
|
---|
288 | Q
|
---|
289 | ;
|
---|
290 | ; Same as above but set into array
|
---|
291 | GRPARY(ARRAY) ;
|
---|
292 | N LIST,I
|
---|
293 | K ARRAY
|
---|
294 | D GRPLST(.LIST)
|
---|
295 | F I=1:1:$L(LIST,";") S ARRAY($P($P(LIST,";",I),":",1))=$P($P(LIST,";",I),":",2)
|
---|
296 | Q
|
---|