[613] | 1 | PSOPMPPF ;BIRM/MFR - Patient Medication Profile - Preferences ;04/28/05
|
---|
| 2 | ;;7.0;OUTPATIENT PHARMACY;**260**;DEC 1997;Build 84
|
---|
| 3 | ;
|
---|
| 4 | EN ; - Menu option entry point
|
---|
| 5 | N PSOCHNG,PSOQUIT,DIR,DIRUT,DIROUT
|
---|
| 6 | I '$G(PSOSITE) D ^PSOLSET I '$D(PSOPAR) W $C(7),!!,"Pharmacy Division Must be Selected!",! Q
|
---|
| 7 | ;
|
---|
| 8 | D LOAD(PSOSITE),LST(PSOSITE)
|
---|
| 9 | I '$G(PSOQUIT),$G(PSOCHNG) D SAVE(PSOSITE)
|
---|
| 10 | ;
|
---|
| 11 | G END
|
---|
| 12 | ;
|
---|
| 13 | LST(PSOSITE,PSOUSER) ; - Listmanager entry point
|
---|
| 14 | N DIR,DIRUT,DIROUT
|
---|
| 15 | S (PSOCHNG,PSOQUIT)=0,PSOUSER=+$G(PSOUSER) D FULL^VALM1 W !
|
---|
| 16 | ;
|
---|
| 17 | ; - Reset user/division preferences
|
---|
| 18 | I (PSOUSER&$D(^PS(52.85,PSOSITE,"USER",PSOUSER)))!('PSOUSER&($$GET1^DIQ(52.85,PSOSITE,1)'="")) D
|
---|
| 19 | . D DISPLAY(PSOSITE,PSOUSER)
|
---|
| 20 | . S DIR("A")=" Delete this default view? "
|
---|
| 21 | . S DIR(0)="YA",DIR("B")="NO" D ^DIR I $D(DIRUT)!$D(DIROUT) S PSOQUIT=1 Q
|
---|
| 22 | . I Y=1 D DELETE(PSOSITE,PSOUSER),LOAD(PSOSITE,PSOUSER)
|
---|
| 23 | . W !
|
---|
| 24 | E W !,"Division: ",$$GET1^DIQ(59,PSOSITE,.01),!
|
---|
| 25 | I PSOQUIT Q
|
---|
| 26 | ;
|
---|
| 27 | EXPDC ; - Expiration/Discontinued Cutoff Date
|
---|
| 28 | K DIR,DIRUT,DIROUT,SAVEX
|
---|
| 29 | S DIR(0)="NA^0:9999",DIR("A")="EXP/CANCEL CUTOFF: ",DIR("B")=PSOEXDCE
|
---|
| 30 | S DIR("?",1)="Enter the maximum number of days for an expired and/or"
|
---|
| 31 | S DIR("?")="discontinued prescription to be cut from the profile."
|
---|
| 32 | D ^DIR I $D(DIRUT)!$D(DIROUT) G @$$GOTO(X,"EXPDC")
|
---|
| 33 | W " DAYS" S PSOEXDCE=X,X="T"_$S(X:"-"_X,1:"") D ^%DT S PSOEXPDC=Y
|
---|
| 34 | D CHANGED(PSOSITE,PSOUSER,"EXPDC",PSOEXDCE)
|
---|
| 35 | ;
|
---|
| 36 | SRTBY ; - Sort By
|
---|
| 37 | K DIR,DIRUT,DIROUT
|
---|
| 38 | S DIR(0)="SA^RX:Rx#;DR:DRUG NAME;ID:ISSUE DATE;LF:LAST FILL DATE",DIR("B")=PSOSRTBY
|
---|
| 39 | S DIR("A")="SORT BY: " D ^DIR I $D(DIRUT)!$D(DIROUT) G @$$GOTO(X,"SRTBY")
|
---|
| 40 | S PSOSRTBY=Y D CHANGED(PSOSITE,PSOUSER,"SRTBY",PSOSRTBY)
|
---|
| 41 | ;
|
---|
| 42 | ORDER ; - Sort Order
|
---|
| 43 | K DIR,DIRUT,DIROUT
|
---|
| 44 | S DIR(0)="SA^A:ASCENDING;D:DESCENDING",DIR("B")=$S(PSORDER="A":"ASCENDING",1:"DESCENDING")
|
---|
| 45 | S DIR("A")="SORT ORDER: " D ^DIR I $D(DIRUT)!$D(DIROUT) G @$$GOTO(X,"ORDER")
|
---|
| 46 | S PSORDER=Y D CHANGED(PSOSITE,PSOUSER,"ORDER",PSORDER)
|
---|
| 47 | ;
|
---|
| 48 | SIGDP ; - Display SIG
|
---|
| 49 | K DIR,DIRUT,DIROUT
|
---|
| 50 | S DIR(0)="SA^ON:ON;OFF:OFF",DIR("B")=$S(PSOSIGDP=1:"ON",1:"OFF")
|
---|
| 51 | S DIR("A")="DISPLAY SIG: " D ^DIR I $D(DIRUT)!$D(DIROUT) G @$$GOTO(X,"SIGDP")
|
---|
| 52 | S Y=$S(X="ON":1,1:0),PSOSIGDP=Y D CHANGED(PSOSITE,PSOUSER,"SIGDP",PSOSIGDP)
|
---|
| 53 | ;
|
---|
| 54 | STSGP ; - Group By Status
|
---|
| 55 | K DIR,DIRUT,DIROUT
|
---|
| 56 | S DIR(0)="SA^ON:ON;OFF:OFF",DIR("B")=$S(PSOSTSGP=1:"ON",1:"OFF")
|
---|
| 57 | S DIR("A")="GROUP BY STATUS: " D ^DIR I $D(DIRUT)!$D(DIROUT) G @$$GOTO(X,"STSGP")
|
---|
| 58 | S Y=$S(X="ON":1,1:0),PSOSTSGP=Y D CHANGED(PSOSITE,PSOUSER,"STSGP",PSOSTSGP)
|
---|
| 59 | ;
|
---|
| 60 | ORDCNT ; - Display Order Count
|
---|
| 61 | K DIR,DIRUT,DIROUT
|
---|
| 62 | S DIR(0)="SA^ON:ON;OFF:OFF",DIR("B")=$S(PSORDCNT=1:"ON",1:"OFF")
|
---|
| 63 | S DIR("A")="DISPLAY ORDER COUNT: " D ^DIR I $D(DIRUT)!$D(DIROUT) G @$$GOTO(X,"ORDCNT")
|
---|
| 64 | S Y=$S(X="ON":1,1:0),PSORDCNT=Y D CHANGED(PSOSITE,PSOUSER,"ORDCNT",PSORDCNT)
|
---|
| 65 | ;
|
---|
| 66 | EXIT ; Exit
|
---|
| 67 | ;
|
---|
| 68 | ; - Save view?
|
---|
| 69 | I $G(PSOCHNG),PSOUSER D
|
---|
| 70 | . W ! S DIR(0)="YA",DIR("B")="NO",DIR("A")="Save as your default View? "
|
---|
| 71 | . D ^DIR I $D(DIRUT)!$D(DIROUT)!(Y=0) Q
|
---|
| 72 | . D SAVE(PSOSITE,PSOUSER)
|
---|
| 73 | ;
|
---|
| 74 | S VALMBCK="R"
|
---|
| 75 | ;
|
---|
| 76 | END Q
|
---|
| 77 | ;
|
---|
| 78 | DISPLAY(SITE,USER) ; - Displays the current view
|
---|
| 79 | N X,Z,FLG,LN
|
---|
| 80 | S (X,Z,FLG)=""
|
---|
| 81 | I $G(USER),$D(^PS(52.85,SITE,"USER",+$G(USER))) D
|
---|
| 82 | . S X=$$GET1^DIQ(200,USER,.01),Z=^PS(52.85,SITE,"USER",+$G(USER),0),FLG=1
|
---|
| 83 | E D
|
---|
| 84 | . S X=$$GET1^DIQ(59,SITE,.01),Z=$G(^PS(52.85,SITE,0))
|
---|
| 85 | I Z="" Q
|
---|
| 86 | S X=X_"'s current default view"_$S(FLG:" ("_$$GET1^DIQ(59,SITE,.01)_")",1:"")_":"
|
---|
| 87 | S $P(LN,"-",$L(X))="" W !?5,X,!?5,LN
|
---|
| 88 | W !?5,"EXP/CANCEL CUTOFF : ",$P(Z,"^",2)," DAYS"
|
---|
| 89 | S X=$P(Z,"^",3) W !?5,"SORT BY : "
|
---|
| 90 | W $S(X="RX":"Rx#",X="DR":"DRUG NAME",X="ID":"ISSUE DATE",X="LF":"LAST FILL DATE",1:"??")
|
---|
| 91 | W !?5,"SORT ORDER : ",$S($P(Z,"^",4)="A":"ASCENDING",1:"DESCENDING")
|
---|
| 92 | W !?5,"DISPLAY SIG : ",$S($P(Z,"^",5):"ON",1:"OFF")
|
---|
| 93 | W !?5,"GROUP BY STATUS : ",$S($P(Z,"^",6):"ON",1:"OFF")
|
---|
| 94 | W !?5,"DISPLAY ORDER COUNT: ",$S($P(Z,"^",7):"ON",1:"OFF")
|
---|
| 95 | W !
|
---|
| 96 | Q
|
---|
| 97 | ;
|
---|
| 98 | GOTO(INPUT,HOME) ; - Directed up-arrow
|
---|
| 99 | N GOTO,TAG,TRGT
|
---|
| 100 | I $P(INPUT,"^",2)="" S PSOQUIT=1 Q "EXIT"
|
---|
| 101 | ;
|
---|
| 102 | S TRGT=$P(INPUT,"^",2)
|
---|
| 103 | S TAG("EXP/CANCEL CUTOFF")="EXPDC"
|
---|
| 104 | S TAG("SORT BY")="SRTBY"
|
---|
| 105 | S TAG("SORT ORDER")="ORDER"
|
---|
| 106 | S TAG("DISPLAY SIG")="SIGDP"
|
---|
| 107 | S TAG("GROUP BY STATUS")="STSGP"
|
---|
| 108 | S TAG("DISPLAY ORDER COUNT")="ORDCNT"
|
---|
| 109 | ;
|
---|
| 110 | S GOTO=HOME
|
---|
| 111 | S TAG="" F S TAG=$O(TAG(TAG)) Q:TAG="" I $E(TAG,1,$L(TRGT))=TRGT S GOTO=TAG(TAG) Q
|
---|
| 112 | I GOTO=HOME W " ??",$C(7)
|
---|
| 113 | ;
|
---|
| 114 | Q GOTO
|
---|
| 115 | ;
|
---|
| 116 | LOAD(SITE,USER) ; Loading Factory/Division/User preferences
|
---|
| 117 | ;Input : SITE - Pointer to OUTPATIENT SITE file (#59)
|
---|
| 118 | ; USER - Pointer to NEW PSERON file (#200)
|
---|
| 119 | ;Output: PSOEXPDC - Expiration Cutoff Date
|
---|
| 120 | ; PSOEXDCE - Expiration Cutoff Date (External)
|
---|
| 121 | ; PSOSRTBY - Sort By
|
---|
| 122 | ; PSORDER - Sort Order ("A":Asc,"D":Desc)
|
---|
| 123 | ; PSOSIGDP - Display SIG (1:ON/0:OFF)
|
---|
| 124 | ; PSORDCNT - Display Order Count (1:ON/0:OFF)
|
---|
| 125 | ; PSOSTSGP - Group by Status (1:ON/0:OFF)
|
---|
| 126 | ; PSOSTSEQ - Status Display Order Array
|
---|
| 127 | ; PSORDSEQ - Group Display Order Array
|
---|
| 128 | ;
|
---|
| 129 | K PSOEXPDC,PSOEXDCE,PSOSRTBY,PSORDER,PSOSTSGP,PSOSIGDP,PSOSTSEQ,PSORDSEQ
|
---|
| 130 | ;
|
---|
| 131 | N X,Y,Z,TMP,STSGRP,STS,ORDGRP,GRPNAM
|
---|
| 132 | ;
|
---|
| 133 | ; - Factory Defaults
|
---|
| 134 | S PSOEXDCE=120,X="T-120" D ^%DT S PSOEXPDC=Y
|
---|
| 135 | S PSOSRTBY="DR",PSORDER="A",PSORDCNT=1,(PSOSTSGP,PSOSIGDP)=0
|
---|
| 136 | ;
|
---|
| 137 | S PSOSTSEQ("A")="1^ACTIVE^A" ; Active
|
---|
| 138 | S PSOSTSEQ("S")="1^ACTIVE^S" ; Suspended
|
---|
| 139 | S PSOSTSEQ("E")="1^ACTIVE^E" ; Expired
|
---|
| 140 | S PSOSTSEQ("DC")="2^DISCONTINUED^DC" ; Discontinued
|
---|
| 141 | S PSOSTSEQ("DP")="2^DISCONTINUED^DP" ; Discontinued by Provider
|
---|
| 142 | S PSOSTSEQ("DE")="2^DISCONTINUED^DE" ; Discontinued on Edit
|
---|
| 143 | S PSOSTSEQ("H")="3^HOLD^H" ; Hold
|
---|
| 144 | S PSOSTSEQ("PH")="3^HOLD^PH" ; Provider Hold
|
---|
| 145 | S PSOSTSEQ("N")="4^NON-VERIFIED^N" ; Non-Verified
|
---|
| 146 | ;
|
---|
| 147 | S PSORDSEQ("T")="1^REFILL TOO SOON/DUR REJECTS(Third Party)"
|
---|
| 148 | S PSORDSEQ("R")="2^CURRENT ORDERS"
|
---|
| 149 | S PSORDSEQ("P")="3^PENDING"
|
---|
| 150 | S PSORDSEQ("N")="4^NON-VA MEDS (Not dispensed by VA)"
|
---|
| 151 | ;
|
---|
| 152 | ; - User's preferences
|
---|
| 153 | I $G(USER),$D(^PS(52.85,SITE,"USER",USER,0)) D SET(^PS(52.85,SITE,"USER",USER,0)) Q
|
---|
| 154 | ;
|
---|
| 155 | ; - Division's preferences
|
---|
| 156 | I $D(^PS(52.85,SITE,0)) D SET(^PS(52.85,SITE,0)) Q
|
---|
| 157 | ;
|
---|
| 158 | Q
|
---|
| 159 | ;
|
---|
| 160 | CHANGED(SITE,USER,FIELD,VALUE) ; - Sets PSOCHNG so the list can be refreshed
|
---|
| 161 | I $G(PSOCHNG) Q
|
---|
| 162 | ;
|
---|
| 163 | ; - Saved User's preferences
|
---|
| 164 | S Z=""
|
---|
| 165 | I '$G(USER),$P($G(^PS(52.85,SITE,0)),"^",2) S Z=^PS(52.85,SITE,0)
|
---|
| 166 | I $G(USER),$D(^PS(52.85,SITE,"USER",USER,0)) S Z=^PS(52.85,SITE,"USER",USER,0)
|
---|
| 167 | ;
|
---|
| 168 | I FIELD="EXPDC",VALUE'=$P(Z,"^",2) S PSOCHNG=1 Q
|
---|
| 169 | I FIELD="SRTBY",VALUE'=$P(Z,"^",3) S PSOCHNG=1 Q
|
---|
| 170 | I FIELD="ORDER",VALUE'=$P(Z,"^",4) S PSOCHNG=1 Q
|
---|
| 171 | I FIELD="SIGDP",VALUE'=+$P(Z,"^",5) S PSOCHNG=1 Q
|
---|
| 172 | I FIELD="STSGP",VALUE'=+$P(Z,"^",6) S PSOCHNG=1 Q
|
---|
| 173 | I FIELD="ORDCNT",VALUE'=+$P(Z,"^",7) S PSOCHNG=1 Q
|
---|
| 174 | ;
|
---|
| 175 | Q
|
---|
| 176 | ;
|
---|
| 177 | ;
|
---|
| 178 | SET(ZNODE) ;
|
---|
| 179 | N X,Y
|
---|
| 180 | S X=+$P(ZNODE,"^",2) I X S PSOEXDCE=X,X="T-"_X D ^%DT S PSOEXPDC=Y
|
---|
| 181 | S X=$P(ZNODE,"^",3) I X'="" S PSOSRTBY=X
|
---|
| 182 | S X=$P(ZNODE,"^",4) I X'="" S PSORDER=X
|
---|
| 183 | S X=$P(ZNODE,"^",5) I X'="" S PSOSIGDP=X
|
---|
| 184 | S X=$P(ZNODE,"^",6) I X'="" S PSOSTSGP=X
|
---|
| 185 | S X=$P(ZNODE,"^",7) I X'="" S PSORDCNT=X
|
---|
| 186 | Q
|
---|
| 187 | ;
|
---|
| 188 | SAVE(SITE,USER) ; - Saves preferences by Site and/or User
|
---|
| 189 | N DIE,DR,DA
|
---|
| 190 | ;
|
---|
| 191 | W !!,"Saving..."
|
---|
| 192 | ;
|
---|
| 193 | I '$D(^PS(52.85,SITE)) D
|
---|
| 194 | . N %,DIC,DR,DA,X,DINUM,DLAYGO,DD,DO
|
---|
| 195 | . S DIC="^PS(52.85,",(DINUM,X)=SITE,DIC(0)=""
|
---|
| 196 | . K DD,DO D FILE^DICN K DD,DO
|
---|
| 197 | ;
|
---|
| 198 | I $G(USER),'$D(^PS(52.85,SITE,"USER",USER,0)) D
|
---|
| 199 | . N %,DIC,DR,DA,X,DINUM,DLAYGO,DD,DO
|
---|
| 200 | . S DIC="^PS(52.85,"_SITE_",""USER"",",DA(1)=SITE,(DINUM,X)=USER,DIC(0)=""
|
---|
| 201 | . K DD,DO D FILE^DICN K DD,DO
|
---|
| 202 | ;
|
---|
| 203 | S DR="1///"_PSOEXDCE_";2///"_PSOSRTBY_";3///"_PSORDER
|
---|
| 204 | S DR=DR_";4///"_PSOSIGDP_";5///"_PSOSTSGP_";6///"_PSORDCNT
|
---|
| 205 | ;
|
---|
| 206 | I '$G(USER) S DIE="^PS(52.85,",DA=SITE
|
---|
| 207 | I $G(USER) S DIE="^PS(52.85,"_SITE_",""USER"",",DA(1)=SITE,DA=USER
|
---|
| 208 | ;
|
---|
| 209 | D ^DIE H 2 W "OK!"
|
---|
| 210 | ;
|
---|
| 211 | Q
|
---|
| 212 | ;
|
---|
| 213 | DELETE(SITE,USER) ; - Deletes user/division preferences
|
---|
| 214 | N DIK,DA,DIE,DR,FLD
|
---|
| 215 | ;
|
---|
| 216 | W !!,"Deleting..."
|
---|
| 217 | ;
|
---|
| 218 | I '$G(SITE) Q
|
---|
| 219 | I $G(USER) S DIK="^PS(52.85,"_SITE_",""USER"",",DA(1)=SITE,DA=USER D ^DIK H 1 W "OK!" Q
|
---|
| 220 | I '$D(^PS(52.85,SITE,"USER")) S DIK="^PS(52.85,",DA=SITE D ^DIK H 1 W "OK!" Q
|
---|
| 221 | S DR="" F FLD=1:1:8 S $P(DR,";",FLD)=FLD_"///@"
|
---|
| 222 | S DIE="^PS(52.85,",DA=SITE D ^DIE H 1 W "OK!"
|
---|
| 223 | Q
|
---|