| 1 | PSOPMP0 ;BIRM/MFR - Patient Medication Profile - Listmanager ;10/28/06 | 
|---|
| 2 | ;;7.0;OUTPATIENT PHARMACY;**260,281**;DEC 1997;Build 41 | 
|---|
| 3 | ;Reference to EN1^GMRADPT supported by IA #10099 | 
|---|
| 4 | ;Reference to EN6^GMRVUTL supported by IA #1120 | 
|---|
| 5 | ;Reference to ^PS(55 supported by DBIA 2228 | 
|---|
| 6 | ; | 
|---|
| 7 | EN ; - Menu option entry point | 
|---|
| 8 | N PSOEXPDC,PSOEXDCE,PSOSRTBY,PSORDER,PSOSIGDP,PSOSTSGP,PSOSTORD,PSORDCNT,PSOSTSEQ,PSORDSEQ,PSOCHNG | 
|---|
| 9 | N GRPLN,DIC,Y,DFN,GRPLN,HIGHLN,LASTLINE,VALMCNT | 
|---|
| 10 | ; | 
|---|
| 11 | ; - Division selection | 
|---|
| 12 | I '$G(PSOSITE) D ^PSOLSET I '$D(PSOPAR) W $C(7),!!,"Pharmacy Division Must be Selected!",! G EXIT | 
|---|
| 13 | ; | 
|---|
| 14 | ; - Patient selection | 
|---|
| 15 | W !! S DIC=2,DIC(0)="QEAM" D ^DIC G EXIT:Y<0  S DFN=+Y | 
|---|
| 16 | ; | 
|---|
| 17 | S PSODFN=DFN D CHKADDR^PSOBAI(DFN,1,1)  ;bad address flag/update | 
|---|
| 18 | ; | 
|---|
| 19 | D LST(PSOSITE,DFN) | 
|---|
| 20 | Q | 
|---|
| 21 | ; | 
|---|
| 22 | LST(SITE,PSODFN) ; - ListManager entry point | 
|---|
| 23 | ; Loading Division/User preferences | 
|---|
| 24 | D LOAD^PSOPMPPF(SITE,DUZ) | 
|---|
| 25 | ; | 
|---|
| 26 | W !,"Please wait..." | 
|---|
| 27 | D EN^VALM("PSO PMP MAIN") | 
|---|
| 28 | D FULL^VALM1 | 
|---|
| 29 | G EXIT | 
|---|
| 30 | ; | 
|---|
| 31 | HDR      ; - Header | 
|---|
| 32 | N LINE,POS,LINE1,LINE2,LINE3,LINE4,WT,WTDT,HT,HTDT,VADM,DFN,PNAME,DOB,SEX,X,GMRAL,ADVREA | 
|---|
| 33 | ; | 
|---|
| 34 | K VADM S DFN=PSODFN D DEM^VADPT | 
|---|
| 35 | S PNAME=VADM(1) | 
|---|
| 36 | S DOB=$S(+VADM(3):$P(VADM(3),"^",2)_" ("_$G(VADM(4))_")",1:"UNKNOWN") | 
|---|
| 37 | S SEX=$P(VADM(5),"^",2) | 
|---|
| 38 | S (WT,X)="",GMRVSTR="WT" D EN6^GMRVUTL I X'="" S WT=$J($P(X,"^",8)/2.2,6,2),WTDT=$$DAT^PSOPMP1($P(X,"^")\1,"/",1) | 
|---|
| 39 | S (HT,X)="",GMRVSTR="HT" D EN6^GMRVUTL I X'="" S HT=$J($P(X,"^",8)*2.54,6,2),HTDT=$$DAT^PSOPMP1($P(X,"^")\1,"/",1) | 
|---|
| 40 | S LINE1=PNAME | 
|---|
| 41 | S LINE1=$$ALLERGY^PSOPMP1(LINE1,DFN) | 
|---|
| 42 | S LINE2="  PID: "_$P(VADM(2),"^",2),$E(LINE2,50)="HEIGHT(cm): "_$S(HT'="":HT_" ("_HTDT_")",1:"NOT AVAILABLE") | 
|---|
| 43 | S LINE3="  DOB: "_DOB,$E(LINE3,50)="WEIGHT(kg): "_$S(WT'="":WT_" ("_WTDT_")",1:"NOT AVAILABLE") | 
|---|
| 44 | S LINE4="  SEX: "_SEX,$E(LINE4,43)="EXP/CANCEL CUTOFF: "_PSOEXDCE_" DAYS" | 
|---|
| 45 | ; | 
|---|
| 46 | K VALMHDR S VALMHDR(1)=LINE1,VALMHDR(2)=LINE2,VALMHDR(3)=LINE3,VALMHDR(4)=LINE4 | 
|---|
| 47 | ; | 
|---|
| 48 | D SETHDR^PSOPMP1() | 
|---|
| 49 | Q | 
|---|
| 50 | ; | 
|---|
| 51 | INIT ; - Populates the Body section for ListMan | 
|---|
| 52 | K ^TMP("PSOPMP0",$J) | 
|---|
| 53 | ; | 
|---|
| 54 | D SETSORT(PSOSRTBY),SETLINE | 
|---|
| 55 | S VALMSG="Select the entry # to view or ?? for more actions" | 
|---|
| 56 | Q | 
|---|
| 57 | ; | 
|---|
| 58 | SETLINE ; - Sets the line to be displayed in ListMan | 
|---|
| 59 | N TYPE,STS,SUB,SEQ,LINE,Z,TOTAL,I,X,X1,ORDCNT,LBL,LN,IENSUB,GROUP,GRP,QTYL | 
|---|
| 60 | I '$D(^TMP("PSOPMPSR",$J)) D  Q | 
|---|
| 61 | . F I=1:1:6 S ^TMP("PSOPMP0",$J,I,0)="" | 
|---|
| 62 | . S ^TMP("PSOPMP0",$J,7,0)="                    No prescriptions found for this patient." | 
|---|
| 63 | . S VALMCNT=1 | 
|---|
| 64 | ; | 
|---|
| 65 | ; - Resetting list to NORMAL video attributes | 
|---|
| 66 | F I=1:1:$G(LASTLINE) D RESTORE^VALM10(I) | 
|---|
| 67 | K GRPLN,HIGHLN | 
|---|
| 68 | ; | 
|---|
| 69 | ; - Building the list (line by line) | 
|---|
| 70 | S (GROUP,STS,SUB)="",LINE=0 K ^TMP("PSOPMP0",$J) | 
|---|
| 71 | F  S GROUP=$O(^TMP("PSOPMPSR",$J,GROUP)) Q:GROUP=""  D | 
|---|
| 72 | . S GRP=$P(GROUP,"^") | 
|---|
| 73 | . I GRP'["R"!('PSOSTSGP&($O(^TMP("PSOPMPSR",$J,GROUP),-1)'="")) D | 
|---|
| 74 | . . D GROUP^PSOPMP1($P(GROUP,"^",2),+$G(^TMP("PSOPMPSR",$J,GROUP)),.LINE) | 
|---|
| 75 | . F  S STS=$O(^TMP("PSOPMPSR",$J,GROUP,STS)) Q:STS=""  D | 
|---|
| 76 | . . I STS'="<NULL>" D | 
|---|
| 77 | . . . D GROUP^PSOPMP1($P(STS,"^",2),+$G(^TMP("PSOPMPSR",$J,GROUP,STS)),.LINE) | 
|---|
| 78 | . . F  S SUB=$O(^TMP("PSOPMPSR",$J,GROUP,STS,SUB),$S(PSORDER="A":1,1:-1)) Q:SUB=""  D | 
|---|
| 79 | . . . S Z=$G(^TMP("PSOPMPSR",$J,GROUP,STS,SUB)) | 
|---|
| 80 | . . . S X1="",SEQ=$G(SEQ)+1,X1=$J(SEQ,3) | 
|---|
| 81 | . . . S QTYL=$L($P(Z,"^",4)) S:QTYL<5 QTYL=5 | 
|---|
| 82 | . . . I GRP["R"!(GRP["T") S $E(X1,5)=$P(Z,"^",2),$E(X1,19)=$E($P(Z,"^",3),1,(32-QTYL)) | 
|---|
| 83 | . . . I GRP["P"!(GRP["N") S $E(X1,5)=$P(Z,"^",3) | 
|---|
| 84 | . . . I GRP["N" S $E(X1,49)="Date Documented:" | 
|---|
| 85 | . . . I GRP'["N" S $E(X1,52-QTYL)=$J($P(Z,"^",4),QTYL),$E(X1,53)=$P(Z,"^",5),$E(X1,57)=$P(Z,"^",6) | 
|---|
| 86 | . . . S $E(X1,66)=$P(Z,"^",7) | 
|---|
| 87 | . . . S $E(X1,74)=$J($P(Z,"^",8),3),$E(X1,78)=$J($P(Z,"^",9),3) | 
|---|
| 88 | . . . S LINE=LINE+1,^TMP("PSOPMP0",$J,LINE,0)=X1,HIGHLN(LINE)="" | 
|---|
| 89 | . . . S IENSUB=$S(GRP["R"!(GRP["T"):"RX",GRP["P":"PEN",1:"NVA") | 
|---|
| 90 | . . . S ^TMP("PSOPMP0",$J,SEQ,IENSUB)=$P(Z,"^") | 
|---|
| 91 | . . . I $G(PSOSIGDP) D SETSIG^PSOPMP1($S(GRP["R"!(GRP["T"):"R",GRP["P":"P",1:"N"),+Z,.LINE,PSODFN) | 
|---|
| 92 | ; | 
|---|
| 93 | ; - Saving NORMAL video attributes to be reset later | 
|---|
| 94 | I LINE>$G(LASTLINE) D | 
|---|
| 95 | . F I=($G(LASTLINE)+1):1:LINE D SAVE^VALM10(I) | 
|---|
| 96 | . S LASTLINE=LINE | 
|---|
| 97 | ; | 
|---|
| 98 | D VIDEO^PSOPMP1() | 
|---|
| 99 | ; | 
|---|
| 100 | S VALMCNT=+$G(LINE) | 
|---|
| 101 | Q | 
|---|
| 102 | ; | 
|---|
| 103 | SETSORT(FIELD) ; - Sets the data sorted by the FIELD specified | 
|---|
| 104 | N SEQ,RX,RXNUM,DRUG,DRNAME,QTY,STATUS,STS,ISSDT,DOCDAT,LSTFD,REFREM,DAYSUP,SIG,Z,ORD,GRPCNT,GROUP,RFRX,OI,PSOBADR | 
|---|
| 105 | ; | 
|---|
| 106 | K ^TMP("PSOPMPSR",$J) | 
|---|
| 107 | ; | 
|---|
| 108 | ; - Loading prescription (file #55) | 
|---|
| 109 | S SEQ=0 | 
|---|
| 110 | F  S SEQ=$O(^PS(55,PSODFN,"P",SEQ)) Q:'SEQ  D | 
|---|
| 111 | . S RX=+$G(^PS(55,PSODFN,"P",SEQ,0)) I 'RX!($G(^PSRX(RX,0))="") Q | 
|---|
| 112 | . I $$FILTER^PSOPMP1(RX) Q | 
|---|
| 113 | . S RXNUM=$$GET1^DIQ(52,RX,.01) | 
|---|
| 114 | . S DRUG=$$GET1^DIQ(52,RX,6,"I") | 
|---|
| 115 | . S DRNAME=$$GET1^DIQ(50,DRUG,.01) | 
|---|
| 116 | . S QTY=$$GET1^DIQ(52,RX,7) | 
|---|
| 117 | . S STATUS=$$STSINFO^PSOPMP1(RX) | 
|---|
| 118 | . S ISSDT=$$ISSDT^PSOPMP1(RX,"R") | 
|---|
| 119 | . S LSTFD=$$LSTFD^PSOPMP1(RX) | 
|---|
| 120 | . S REFREM=$$REFREM^PSOPMP1(RX) | 
|---|
| 121 | . S DAYSUP=$$GET1^DIQ(52,RX,8) | 
|---|
| 122 | . S PSOBADR=$O(^PSRX(RX,"L",9999),-1) | 
|---|
| 123 | . I PSOBADR'="" S PSOBADR=$G(^PSRX(RX,"L",PSOBADR,0)) I PSOBADR["(BAD ADDRESS)" S PSOBADR="B" | 
|---|
| 124 | . I PSOBADR'="B" S PSOBADR="" | 
|---|
| 125 | . S Z="",$P(Z,"^")=RX,$P(Z,"^",2)=RXNUM_$$COPAY^PSOPMP1(RX)_$$ECME^PSOBPSUT(RX),$P(Z,"^",3)=$E(DRNAME,1,30) | 
|---|
| 126 | . S $P(Z,"^",4)=QTY,$P(Z,"^",5)=$P(STATUS,"^",3)_$$CMOP^PSOPMP1(DRUG,RX)_PSOBADR,$P(Z,"^",6)=$P(ISSDT,"^",2) | 
|---|
| 127 | . S $P(Z,"^",7)=$P(LSTFD,"^",2),$P(Z,"^",8)=REFREM,$P(Z,"^",9)=DAYSUP | 
|---|
| 128 | . S SORT=$S(FIELD="RX":RXNUM_" ",FIELD="DR":DRNAME_RXNUM,FIELD="ID":+ISSDT_RXNUM_" ",FIELD="LF":+LSTFD_RXNUM_" ") | 
|---|
| 129 | . S STS="<NULL>" I $G(PSOSTSGP) S STS=$P(STATUS,"^")_"^"_$P(STATUS,"^",2) | 
|---|
| 130 | . S GROUP=$P(PSORDSEQ("R"),"^")_"R^"_$P(PSORDSEQ("R"),"^",2) | 
|---|
| 131 | . I $$FIND^PSOREJUT(RX) S GROUP=$P(PSORDSEQ("T"),"^")_"T^"_$P(PSORDSEQ("T"),"^",2),STS="<NULL>" | 
|---|
| 132 | . S ^TMP("PSOPMPSR",$J,GROUP,STS,SORT)=Z | 
|---|
| 133 | . S GRPCNT(GROUP)=$G(GRPCNT(GROUP))+1,GRPCNT(GROUP,STS)=$G(GRPCNT(GROUP,STS))+1 | 
|---|
| 134 | ; | 
|---|
| 135 | S GROUP="" | 
|---|
| 136 | F  S GROUP=$O(GRPCNT(GROUP)) Q:GROUP=""  D | 
|---|
| 137 | . S ^TMP("PSOPMPSR",$J,GROUP)=$G(GRPCNT(GROUP)) | 
|---|
| 138 | . S STS="" F  S STS=$O(GRPCNT(GROUP,STS)) Q:STS=""  D | 
|---|
| 139 | . . S ^TMP("PSOPMPSR",$J,GROUP,STS)=GRPCNT(GROUP,STS) | 
|---|
| 140 | ; | 
|---|
| 141 | ; - Loading pending orders (file #52.41) | 
|---|
| 142 | S ORD=0,GROUP=$P(PSORDSEQ("P"),"^")_"P^"_$P(PSORDSEQ("P"),"^",2) | 
|---|
| 143 | F  S ORD=$O(^PS(52.41,"P",PSODFN,ORD)) Q:'ORD  D | 
|---|
| 144 | . S TYPE=$$GET1^DIQ(52.41,ORD,2,"I") | 
|---|
| 145 | . I TYPE="DC"!(TYPE="DE")!(TYPE="HD") Q | 
|---|
| 146 | . S DRNAME="",DRUG=+$$GET1^DIQ(52.41,ORD,11,"I") I DRUG S DRNAME=$$GET1^DIQ(50,DRUG,.01) | 
|---|
| 147 | . I DRNAME="" D  Q:DRNAME="" | 
|---|
| 148 | . . S OI=$$GET1^DIQ(52.41,ORD,8,"I") I 'OI Q | 
|---|
| 149 | . . S DRNAME=$$GET1^DIQ(50.7,OI,.01)_" "_$$GET1^DIQ(50.7,OI,.02) | 
|---|
| 150 | . S QTY=$$GET1^DIQ(52.41,ORD,12) | 
|---|
| 151 | . S STATUS=$$GET1^DIQ(52.41,ORD,2,"I") | 
|---|
| 152 | . S ISSDT=$$ISSDT^PSOPMP1(ORD,"P") | 
|---|
| 153 | . S REFREM=$$GET1^DIQ(52.41,ORD,13) | 
|---|
| 154 | . S DAYSUP=$$GET1^DIQ(52.41,ORD,101) | 
|---|
| 155 | . S RFRX="" I STATUS="RF" S RFRX=$$GET1^DIQ(52.41,ORD,21,"I") I RFRX S RFRX=$$GET1^DIQ(52,RFRX,.01) | 
|---|
| 156 | . S Z="",$P(Z,"^")=ORD,$P(Z,"^",3)=$E(DRNAME,1,45),$P(Z,"^",4)=QTY,$P(Z,"^",5)=$E(STATUS,1,2)_$$CMOP^PSOPMP1(DRUG) | 
|---|
| 157 | . S $P(Z,"^",6)=$S(RFRX'="":"Rx#: "_RFRX,1:$P(ISSDT,"^",2)),$P(Z,"^",8)=REFREM,$P(Z,"^",9)=DAYSUP | 
|---|
| 158 | . S SORT=$S(FIELD="RX":DRNAME_ORD,FIELD="DR":DRNAME_ORD,FIELD="ID":+ISSDT_ORD,FIELD="LF":+ISSDT_ORD) | 
|---|
| 159 | . S ^TMP("PSOPMPSR",$J,GROUP,"<NULL>",SORT)=Z | 
|---|
| 160 | . S GRPCNT(GROUP)=$G(GRPCNT(GROUP))+1 | 
|---|
| 161 | ; | 
|---|
| 162 | S:$G(GRPCNT(GROUP)) ^TMP("PSOPMPSR",$J,GROUP)=$G(GRPCNT(GROUP)) | 
|---|
| 163 | ; | 
|---|
| 164 | ; - Loading Non-VA Med orders (file #55, sub-file #55.05) | 
|---|
| 165 | S ORD=0,GROUP=$P(PSORDSEQ("N"),"^")_"N^"_$P(PSORDSEQ("N"),"^",2) | 
|---|
| 166 | F  S ORD=$O(^PS(55,PSODFN,"NVA",ORD)) Q:'ORD  D | 
|---|
| 167 | . I $$GET1^DIQ(55.05,ORD_","_PSODFN,5,"I") Q | 
|---|
| 168 | . S DRNAME=$$GET1^DIQ(55.05,ORD_","_PSODFN,1) | 
|---|
| 169 | . I DRNAME="" D  Q:DRNAME="" | 
|---|
| 170 | . . S OI=$$GET1^DIQ(55.05,ORD_","_PSODFN,.01,"I") I 'OI Q | 
|---|
| 171 | . . S DRNAME=$$GET1^DIQ(50.7,OI,.01)_" "_$$GET1^DIQ(50.7,OI,.02) | 
|---|
| 172 | . S DOCDAT=$P($$GET1^DIQ(55.05,ORD_","_PSODFN_",",11,"I"),".") | 
|---|
| 173 | . S Z="",$P(Z,"^")=ORD,$P(Z,"^",3)=$E(DRNAME,1,38),$P(Z,"^",7)=$$DAT^PSOPMP1(DOCDAT,"-") | 
|---|
| 174 | . S SORT=$S(FIELD="RX":DRNAME_ORD,FIELD="DR":DRNAME_ORD,FIELD="ID":DOCDAT_ORD,FIELD="LF":DOCDAT_ORD) | 
|---|
| 175 | . S ^TMP("PSOPMPSR",$J,GROUP,"<NULL>",SORT)=Z | 
|---|
| 176 | . S GRPCNT(GROUP)=$G(GRPCNT(GROUP))+1 | 
|---|
| 177 | ; | 
|---|
| 178 | S:$G(GRPCNT(GROUP)) ^TMP("PSOPMPSR",$J,GROUP)=$G(GRPCNT(GROUP)) | 
|---|
| 179 | ; | 
|---|
| 180 | Q | 
|---|
| 181 | ; | 
|---|
| 182 | RX ; - Sort by Rx | 
|---|
| 183 | D SORT("RX") | 
|---|
| 184 | Q | 
|---|
| 185 | DR ; - Sort by Drug | 
|---|
| 186 | D SORT("DR") | 
|---|
| 187 | Q | 
|---|
| 188 | ID ; - Sort by Issue Date | 
|---|
| 189 | D SORT("ID") | 
|---|
| 190 | Q | 
|---|
| 191 | LF ; - Sort by Last Fill Date | 
|---|
| 192 | D SORT("LF") | 
|---|
| 193 | Q | 
|---|
| 194 | ; | 
|---|
| 195 | SORT(FIELD) ; - Sort entries by FIELD | 
|---|
| 196 | I PSOSRTBY=FIELD S PSORDER=$S(PSORDER="A":"D",1:"A") | 
|---|
| 197 | E  S PSOSRTBY=FIELD,PSORDER="A" | 
|---|
| 198 | D REF | 
|---|
| 199 | Q | 
|---|
| 200 | ; | 
|---|
| 201 | REF ; - Screen Refresh | 
|---|
| 202 | W ?52,"Please wait..." D INIT,HDR S VALMBCK="R" | 
|---|
| 203 | Q | 
|---|
| 204 | GS ; - Group by Status | 
|---|
| 205 | W ?52,"Please wait..." S PSOSTSGP=$S($G(PSOSTSGP):0,1:1) D INIT,HDR S VALMBCK="R" | 
|---|
| 206 | Q | 
|---|
| 207 | ; | 
|---|
| 208 | SIG ; - Display SIG | 
|---|
| 209 | W ?52,"Please wait..." S PSOSIGDP=$S($G(PSOSIGDP):0,1:1) D INIT,HDR S VALMBCK="R" | 
|---|
| 210 | I 'PSOSIGDP S VALMBG=VALMBG\2 | 
|---|
| 211 | I PSOSIGDP S VALMBG=VALMBG*2-1 | 
|---|
| 212 | S:VALMBG>(VALMCNT-10) VALMBG=VALMCNT-10 S:VALMBG<1 VALMBG=1 | 
|---|
| 213 | Q | 
|---|
| 214 | ; | 
|---|
| 215 | PI ; - Patient Information | 
|---|
| 216 | D EN^PSOLMPI S VALMBCK="R" | 
|---|
| 217 | Q | 
|---|
| 218 | ; | 
|---|
| 219 | CV ; - Change View | 
|---|
| 220 | D LST^PSOPMPPF(SITE,DUZ) W !?52,"Please wait..." D INIT,HDR | 
|---|
| 221 | S VALMBG=1,VALMBCK="R" | 
|---|
| 222 | Q | 
|---|
| 223 | ; | 
|---|
| 224 | SEL ; - Process selection of one entry | 
|---|
| 225 | N PSOSEL,TYPE,XQORM,ORD,TITLE | 
|---|
| 226 | S PSOSEL=+$P($P(Y(1),"^",4),"=",2) I 'PSOSEL S VALMSG="Invalid selection!",VALMBCK="R" Q | 
|---|
| 227 | S TYPE=$O(^TMP("PSOPMP0",$J,PSOSEL,0)) I TYPE="" S VALMSG="Invalid selection!",VALMBCK="R" Q | 
|---|
| 228 | S ORD=$G(^TMP("PSOPMP0",$J,PSOSEL,TYPE)) | 
|---|
| 229 | I 'ORD S VALMSG="Invalid selection!",VALMBCK="R" Q | 
|---|
| 230 | S TITLE=VALM("TITLE") | 
|---|
| 231 | ; | 
|---|
| 232 | ; - Regular prescription | 
|---|
| 233 | I TYPE="RX" D  S VALMBCK="R" D REF | 
|---|
| 234 | . N PSOVDA,PSOSAVE,DA,PS | 
|---|
| 235 | . S (PSOVDA,DA)=ORD,PS="REJECTMP" | 
|---|
| 236 | . N LINE,TITLE,PSODFN D DP^PSORXVW | 
|---|
| 237 | ; | 
|---|
| 238 | ; - Pending Order | 
|---|
| 239 | I TYPE="PEN" D | 
|---|
| 240 | . N PSOACTOV,OR0 | 
|---|
| 241 | . S OR0=^PS(52.41,ORD,0),PSOACTOV="" | 
|---|
| 242 | . N LINE,TITLE D PENHDR^PSOPMP1(PSODFN),DSPL^PSOORFI1 | 
|---|
| 243 | ; | 
|---|
| 244 | ; - Pending Order | 
|---|
| 245 | I TYPE="NVA" D | 
|---|
| 246 | . N LINE,TITLE D EN^PSONVAVW(PSODFN,ORD) | 
|---|
| 247 | ; | 
|---|
| 248 | S VALMBCK="R",VALM("TITLE")=TITLE | 
|---|
| 249 | Q | 
|---|
| 250 | ; | 
|---|
| 251 | EXIT ; | 
|---|
| 252 | K ^TMP("PSOPMP0",$J),^TMP("PSOPMPSR",$J) | 
|---|
| 253 | Q | 
|---|
| 254 | ; | 
|---|
| 255 | HELP Q | 
|---|