| 1 | PSOUTLA ;BHAM ISC/AMC - pharmacy utility program ; 07/24/96 1:13 pm
|
---|
| 2 | ;;7.0;OUTPATIENT PHARMACY;**1,15,23,56,126,222**;DEC 1997;Build 12
|
---|
| 3 | ;External reference ^PS(54 supported by DBIA 2227
|
---|
| 4 | ;External reference ^PSDRUG( supported by DBIA 221
|
---|
| 5 | CHK I '$D(PY(PSPR)) W !?10,$C(7)," # ",PSPR," is not a valid choice." S PSPOP=1 Q
|
---|
| 6 | I $D(PSDUP(PY(PSPR))) W !?10,$C(7),"RX# ",$P(^PSRX(+$P(PY(PSPR),"^"),0),"^")," is a duplicate choice." S PSPOP=1 Q
|
---|
| 7 | S PSDUP(PY(PSPR))="" Q:'PSODIV Q:'$P(^PSRX(+PY(PSPR),2),"^",9) Q:+$P(^(2),"^",9)=PSOSITE
|
---|
| 8 | S PSPRXN=+$P(PY(PSPR),"^")
|
---|
| 9 | CHK1 I '$P(PSOSYS,"^",2) W !!,$C(7),"RX# "_$P(^PSRX(PSPRXN,0),"^")_" is not a valid choice. (Different Division)",! S PSPOP=1 Q
|
---|
| 10 | I $P(PSOSYS,"^",3) K DIR,DUOUT,DTOUT D
|
---|
| 11 | .W $C(7) S DIR("A",1)="",DIR("A",2)="RX# "_$P(^PSRX(PSPRXN,0),"^")_" is from another division.",DIR("A")="Continue: (Y/N)",DIR(0)="Y",DIR("?",1)="'Y' FOR YES",DIR("?")="'N' FOR NO"
|
---|
| 12 | .S DIR("B")="N" D ^DIR I 'Y!($D(DUOUT))!($D(DTOUT)) S PSPOP=1 W !
|
---|
| 13 | K DIR,DUOUT,DTOUT Q
|
---|
| 14 | ;
|
---|
| 15 | ZIPIN ; input transform for ZIP field in file #59 internal format (no '-'s)
|
---|
| 16 | ; Input: X as user entered value
|
---|
| 17 | ; Output: X as internal value of user input OR
|
---|
| 18 | ; undefined if input from user was invalid
|
---|
| 19 | N % I X'?.N F %=1:1:$L(X) I $E(X,%)?1P S X=$E(X,0,%-1)_$E(X,%+1,20),%=%-1
|
---|
| 20 | I X'?5N,(X'?9N) K X
|
---|
| 21 | Q
|
---|
| 22 | ;
|
---|
| 23 | ZIPOUT ; output transform for ZIP - prints either ZIP or ZIP+4 (in 12345-1234)
|
---|
| 24 | ; format.
|
---|
| 25 | ; Input: Y internal value
|
---|
| 26 | ; Output: Y external (12345 or 12345-1234)
|
---|
| 27 | S Y=$E(Y,1,5)_$S($E(Y,6,9)]"":"-"_$E(Y,6,9),1:"")
|
---|
| 28 | Q
|
---|
| 29 | YN ;YES/NO PROMPT
|
---|
| 30 | W !?5,"'Y' FOR YES",!?5,"'N' FOR NO",!
|
---|
| 31 | Q
|
---|
| 32 | DAYS K PSFMAX S ED=1,PSODEA=$P(^PSDRUG($P(^PSRX(DA,0),"^",6),0),"^",3),PSDAYS=$P(^PSRX(DA,0),"^",8),CS=0 D EDNEW K:ED PSFMAX,ED
|
---|
| 33 | K:$P(^PSRX(DA,0),"^",9)'>MAX PSMAX
|
---|
| 34 | Q
|
---|
| 35 | EDNEW K PSMAX,PSFMAX F DEA=1:1 Q:$E(PSODEA,DEA)="" I $E(+PSODEA,DEA)>1,$E(+PSODEA,DEA)<6 S CS=1
|
---|
| 36 | I $D(CLOZPAT) S MAX=$S(CLOZPAT=2&(PSDAYS=14):1,CLOZPAT=2&(PSDAYS=7):3,CLOZPAT=1&(PSDAYS=7):1,1:0) G CLOZPAT
|
---|
| 37 | I CS D
|
---|
| 38 | .S PSOX1=$S(PTRF>5:5,1:PTRF),PSOX=$S(PSOX1=5:5,1:PSOX1)
|
---|
| 39 | .S PSOX=$S('PSOX:0,PSDAYS=90:1,1:PSOX),PSDY1=$S(PSDAYS<60:5,PSDAYS'<60&(PSDAYS'>89):2,PSDAYS=90:1,1:0) S MAX=$S(PSOX'>PSDY1:PSOX,1:PSDY1)
|
---|
| 40 | E D
|
---|
| 41 | .S PSOX1=PTRF,PSOX=$S(PSOX1=11:11,1:PSOX1),PSOX=$S('PSOX:0,PSDAYS=90:3,1:PSOX)
|
---|
| 42 | .S PSDY1=$S(PSDAYS<60:11,PSDAYS'<60&(PSDAYS'>89):5,PSDAYS=90:3,1:0) S MAX=$S(PSOX'>PSDY1:PSOX,1:PSDY1)
|
---|
| 43 | CLOZPAT I PSRF>MAX D
|
---|
| 44 | .W $C(7),!!,PSRF_" refills are not correct for a "_PSDAYS_" day supply.",!,"Please enter correct # of refills for a "_PSDAYS_" day supply. Max refills allowed is "_MAX_".",!
|
---|
| 45 | .;S (PSMAX("MAX"),PSFMAX("MAX"))=MAX,(PSMAX("RF"),PSFMAX("RF"))=PSRF,(PSMAX("DAYS"),PSFMAX("DAYS"))=PSDAYS,(PSMAX,PSFMAX)=1
|
---|
| 46 | K PSTMAX D EDSTAT
|
---|
| 47 | Q
|
---|
| 48 | STATDAY K PSMAX,PSRMAX,PSFMAX,PSTMAX S PSDAYS=$P(^PSRX(DA,0),"^",8),PSRF=$P(^PSRX(DA,0),"^",9),PTST=$P(^PS(53,X,0),"^"),PTDY=$P(^(0),"^",3),PTRF=$P(^(0),"^",4)
|
---|
| 49 | EDSTAT I PSRF>PTRF D EN^DDIOL(PSRF_" refills are greater than "_PTRF_" allowed for "_$P(PTST,"^")_" Rx Patient Status.","","$C(7),!") D EN^DDIOL(" ","","!") ;S PSTMAX=1,PSTMAX("PTRF")=PTRF,PSTMAX("PSRF")=PSRF,PSTMAX("PT")=$P(PTST,"^")
|
---|
| 50 | Q
|
---|
| 51 | PARKILL S CNT=0 F SUB=0:0 S SUB=$O(^PSRX(DA(1),"A",SUB)) Q:'SUB S CNT=SUB
|
---|
| 52 | I '$G(RESK) D G:$D(DIRUT) PARKILL
|
---|
| 53 | .D EN^DDIOL(" ","","!") K DIR S DIR(0)="FO^10:75",DIR("A",1)="Enter Reason for Edit:",DIR("A")="=>",DIR("?",1)="This is a required response. No Up-arrowing allowed."
|
---|
| 54 | .S DIR("?")="Response must be 10-75 characters in length.",DIR("B")="Entered In Error"
|
---|
| 55 | .D ^DIR I $D(DIRUT) D EN^DDIOL("This is a required response. No Up-arrowing allowed.","","!") Q
|
---|
| 56 | .S ACOM=$S($G(Y)]""&('$D(DIRUT)):Y,1:"Partial Entered In Error.")
|
---|
| 57 | .S PSOPRZ=$G(PSOPRZ)-1 S:PSOPRZ<0 PSOPRZ=0
|
---|
| 58 | S:$G(RESK) ACOM="Partial fill returned to stock."
|
---|
| 59 | D NOW^%DTC S CNT=CNT+1 S ^PSRX(DA(1),"A",0)="^52.3DA^"_CNT_"^"_CNT,^PSRX(DA(1),"A",CNT,0)=%_"^D^"_DUZ_"^6^"_ACOM K CNT,SUB,DIR,DTOUT,DUOUT
|
---|
| 60 | Q
|
---|
| 61 | SETUP ;enter/edit clinic sort groups
|
---|
| 62 | W ! S (DLAYGO,DIC,DIE)=59.8,DIC("A")="Select Clinic Sort Group: ",DIC(0)="AEQML" D ^DIC G:"^"[$E(X) SETUPX G:Y<1 SETUP S DA=+Y,DR=".01;1" D ^DIE
|
---|
| 63 | SETUPX K DIE,DIC,DA,DLAYGO,Y,X,DR
|
---|
| 64 | Q
|
---|
| 65 | FSIG(PSOFILE,PSOINTR,PSOLENTH) ;Format front door sig
|
---|
| 66 | ;PSOFILE is 'P' if in Pending File, 'R' if in Prescription File
|
---|
| 67 | ;PSOINTR is internal number for either file
|
---|
| 68 | ;PSOLENTH is length of each line of the Sig
|
---|
| 69 | ;returned in the FSIG array
|
---|
| 70 | K FSIG I $G(PSOFILE)=""!('$G(PSOINTR))!('$G(PSOLENTH)) G FQUIT
|
---|
| 71 | I PSOFILE'="P",PSOFILE'="R" G FQUIT
|
---|
| 72 | I PSOFILE="P",'$D(^PS(52.41,+PSOINTR,0)) G FQUIT
|
---|
| 73 | I PSOFILE="R",'$D(^PSRX(+PSOINTR,0)) G FQUIT
|
---|
| 74 | I PSOFILE="R",'$P($G(^PSRX(+PSOINTR,"SIG")),"^",2) G FQUIT
|
---|
| 75 | N FFF,NNN,CNT,FVAR,FVAR1,FLIM,HSIG,II
|
---|
| 76 | I PSOFILE="P" F NNN=0:0 S NNN=$O(^PS(52.41,PSOINTR,"SIG",NNN)) Q:'NNN S:$G(^(NNN,0))'="" HSIG(NNN)=^(0)
|
---|
| 77 | I PSOFILE="P" G:'$O(HSIG(0)) FQUIT G FSTART
|
---|
| 78 | ;S HSIG(1)=$P($G(^PSRX(PSOINTR,"SIG")),"^") S FFF=2 F NNN=0:0 S NNN=$O(^PSRX(PSOINTR,"SIG1",NNN)) Q:'NNN I $G(^(NNN,0))'="" S HSIG(FFF)=$G(^(0)),FFF=FFF+1
|
---|
| 79 | S FFF=1 F NNN=0:0 S NNN=$O(^PSRX(PSOINTR,"SIG1",NNN)) Q:'NNN I $G(^(NNN,0))'="" S HSIG(FFF)=^(0) S FFF=FFF+1
|
---|
| 80 | G:'$O(HSIG(0)) FQUIT
|
---|
| 81 | FSTART S (FVAR,FVAR1)="",II=1
|
---|
| 82 | F FFF=0:0 S FFF=$O(HSIG(FFF)) Q:'FFF S CNT=0 F NNN=1:1:$L(HSIG(FFF)) I $E(HSIG(FFF),NNN)=" "!($L(HSIG(FFF))=NNN) S CNT=CNT+1 D I $L(FVAR)>PSOLENTH S FSIG(II)=FLIM_" ",II=II+1,FVAR=FVAR1
|
---|
| 83 | .S FVAR1=$P(HSIG(FFF)," ",(CNT))
|
---|
| 84 | .S FLIM=FVAR
|
---|
| 85 | .S FVAR=$S(FVAR="":FVAR1,1:FVAR_" "_FVAR1)
|
---|
| 86 | I $G(FVAR)'="" S FSIG(II)=FVAR
|
---|
| 87 | I $G(FSIG(1))=""!($G(FSIG(1))=" ") S FSIG(1)=$G(FSIG(2)) K FSIG(2)
|
---|
| 88 | FQUIT Q
|
---|
| 89 | DRUGW ;
|
---|
| 90 | F Z0=1:1 Q:$P(X,",",Z0,99)="" S Z1=$P(X,",",Z0) W:$D(^PS(54,Z1,0)) ?35,$P(^(0),"^"),! I '$D(^(0)) W ?35,"NO SUCH WARNING LABEL" K X Q
|
---|
| 91 | Q
|
---|
| 92 | HLNEW ;formats provider instructions in FSIG for front door order
|
---|
| 93 | K FSIG N FFF,NNN,CNT,FVAR,FVAR1,FLIM,HSIG,II,LLP,PSOLENTH
|
---|
| 94 | S PSOLENTH=59,LLP=1 F LLL=0:0 S LLL=$O(WPARRAY(7,LLL)) Q:'LLL S HSIG(LLP)=$G(WPARRAY(7,LLL)),LLP=LLP+1
|
---|
| 95 | D FSTART Q
|
---|
| 96 | HLNEWX ;
|
---|
| 97 | K FSIG N FFF,NNN,CNT,FVAR,FVAR1,FLIM,HSIG,II,LLP,PSOLENTH
|
---|
| 98 | S PSOLENTH=59,LLP=1 F LLL=0:0 S LLL=$O(WPARRAY(6,LLL)) Q:'LLL S HSIG(LLP)=$G(WPARRAY(6,LLL)),LLP=LLP+1
|
---|
| 99 | D FSTART Q
|
---|
| 100 | ;
|
---|
| 101 | SUSFDS ;
|
---|
| 102 | N SUSIEN
|
---|
| 103 | Q:$O(^PSRX(DA,1,0))
|
---|
| 104 | S SUSIEN=+$O(^PS(52.5,"B",DA,0)) Q:'$G(SUSIEN)
|
---|
| 105 | Q:'$D(^PS(52.5,SUSIEN,0))!($G(^PS(52.5,SUSIEN,"P")))
|
---|
| 106 | I '$P($G(^PS(52.5,SUSIEN,0)),"^",5),'$P($G(^(0)),"^",13) S $P(^PS(52.5,SUSIEN,0),"^",2)=X,^PS(52.5,"C",X,SUSIEN)="" D
|
---|
| 107 | .I $P($G(^PS(52.5,SUSIEN,0)),"^",7)="Q" S ^PS(52.5,"AQ",X,+$P($G(^PS(52.5,SUSIEN,0)),"^",3),SUSIEN)="" D SCMPX^PSOCMOP(SUSIEN,"Q") Q
|
---|
| 108 | .S ^PS(52.5,"AC",+$P($G(^PS(52.5,SUSIEN,0)),"^",3),X,SUSIEN)=""
|
---|
| 109 | Q
|
---|
| 110 | SUSFDK ;
|
---|
| 111 | N SUSIEN
|
---|
| 112 | Q:$O(^PSRX(DA,1,0))
|
---|
| 113 | S SUSIEN=+$O(^PS(52.5,"B",DA,0)) Q:'$G(SUSIEN)
|
---|
| 114 | Q:'$D(^PS(52.5,SUSIEN,0))!($G(^PS(52.5,SUSIEN,"P")))
|
---|
| 115 | I '$P($G(^PS(52.5,SUSIEN,0)),"^",5),'$P($G(^(0)),"^",13) K ^PS(52.5,"C",X,SUSIEN) D
|
---|
| 116 | .I $P($G(^PS(52.5,SUSIEN,0)),"^",7)="Q" K ^PS(52.5,"AQ",X,+$P($G(^PS(52.5,SUSIEN,0)),"^",3),SUSIEN) D KCMPX^PSOCMOP(SUSIEN,"Q") Q
|
---|
| 117 | .K ^PS(52.5,"AC",+$P($G(^PS(52.5,SUSIEN,0)),"^",3),X,SUSIEN)
|
---|
| 118 | Q
|
---|