| 1 | PSOSIGMX ;BIR/RTR-Utility routine to calculate Max Refills for CPRS ; 7/25/07 11:17am | 
|---|
| 2 | ;;7.0;OUTPATIENT PHARMACY;**46,78,108,131,222,206**;DEC 1997;Build 39 | 
|---|
| 3 | ;External reference to PS(55 supported by DBIA 2228 | 
|---|
| 4 | ;External reference to PSDRUG( supported by DBIA 221 | 
|---|
| 5 | ;External reference to YSCL(603.01 supported by DBIA 2697 | 
|---|
| 6 | ;External reference to PS(50.7 supported by DBIA 2223 | 
|---|
| 7 | ; | 
|---|
| 8 | ;PSOQX("PATIENT")=patient DFN | 
|---|
| 9 | ;PSOQX("DAYS SUPPLY")=Days Supply ->Optional ?? | 
|---|
| 10 | ;PSOQX("DRUG")=File 50 ien ->Optional | 
|---|
| 11 | ;PSOQX("ITEM")=File 50.7 ien -> we may not use this | 
|---|
| 12 | ;PSOQX("DISCHARGE")=1 if the order is for a Discharge | 
|---|
| 13 | ; | 
|---|
| 14 | ;PSOQX("MAX")=Returned max refills allowed | 
|---|
| 15 | ; | 
|---|
| 16 | EN ; | 
|---|
| 17 | S PSOQX("MAX")=11 | 
|---|
| 18 | N DFN,VAROOT,PSOWRF,PSOMXAUT,PSOMXAUX,PSOCDEA,PSOCSX,PSOMXRX,PSOMX1,PSODYX,PSODYX1,PSOMXPAT,PSOMXSTA | 
|---|
| 19 | S PSOMXAUT=0 | 
|---|
| 20 | S PSOMXAUX=+$P($G(^PS(55,+$G(PSOQX("PATIENT")),"PS")),"^") | 
|---|
| 21 | I PSOMXAUX,$P($G(^PS(53,+$G(PSOMXAUX),0)),"^")["AUTH ABS" S VAROOT="PSOWRF",DFN=$G(PSOQX("PATIENT")) D IN5^VADPT I '$G(PSOWRF(5)) S PSOMXAUT=1 | 
|---|
| 22 | S PSOMXSTA=$S($G(PSOQX("DISCHARGE")):0,$G(PSOMXAUT):0,1:+$P($G(^PS(55,+$G(PSOQX("PATIENT")),"PS")),"^")) I PSOMXSTA S PSOMXRX=$P($G(^PS(53,PSOMXSTA,0)),"^",4) | 
|---|
| 23 | I 'PSOMXSTA S PSOMXRX=11 | 
|---|
| 24 | K PSOCDEA S PSOCSX=0 | 
|---|
| 25 | S PSONODD=0 I '$G(PSOQX("DRUG")),$G(PSOQX("ITEM")) D  S PSONODD=1 | 
|---|
| 26 | . N A,B,PSOCDEA,DEA,PSOAPP,PSOINA,%,%H,%I,X,PSOFIRST | 
|---|
| 27 | . S DEA=99,(A,PSOFIRST)="" | 
|---|
| 28 | . F  S A=$O(^PS(50.7,"A50",PSOQX("ITEM"),A)) Q:'A  D | 
|---|
| 29 | .. S PSOCDEA=$P($G(^PSDRUG(A,0)),"^",3),PSOAPP=$P($G(^(2)),"^",3),PSOINA=$G(^("I")) | 
|---|
| 30 | .. I PSOAPP'["O" Q | 
|---|
| 31 | .. D NOW^%DTC I PSOINA]"",PSOINA'>% Q | 
|---|
| 32 | .. I PSOFIRST="" S PSOFIRST=A | 
|---|
| 33 | .. I PSOCDEA?1N.E,PSOCDEA<DEA S DEA=PSOCDEA,PSOQX("DRUG")=A | 
|---|
| 34 | . I $G(PSOQX("DRUG"))="" S PSOQX("DRUG")=PSOFIRST | 
|---|
| 35 | I $G(PSOQX("DRUG")) D | 
|---|
| 36 | .S PSOCDEA=$P($G(^PSDRUG(PSOQX("DRUG"),0)),"^",3) | 
|---|
| 37 | .I PSOCDEA["2"!(PSOCDEA["3")!(PSOCDEA["4")!(PSOCDEA["5") S PSOCSX=1 | 
|---|
| 38 | I PSOCSX D | 
|---|
| 39 | .S PSOQX("MAX")=$S((PSOCDEA[1)!(PSOCDEA[2):0,1:5),PSOMX1=$S($G(PSOMXRX)>PSOQX("MAX"):PSOQX("MAX"),1:$G(PSOMXRX)),PSOQX("MAX")=$S(PSOMX1=5:PSOQX("MAX"),1:PSOMX1) | 
|---|
| 40 | .S PSOQX("MAX")=$S('PSOQX("MAX"):0,$G(PSOQX("DAYS SUPPLY"))=90:1,1:PSOQX("MAX")),PSODYX=$G(PSOQX("DAYS SUPPLY")),PSODYX1=$S(PSODYX<60:5,PSODYX'<60&(PSODYX'>89):2,PSODYX=90:1,1:0) S PSOQX("MAX")=$S(PSOQX("MAX")'>PSODYX1:PSOQX("MAX"),1:PSODYX1) | 
|---|
| 41 | I 'PSOCSX!('$G(PSOQX("DRUG"))) D | 
|---|
| 42 | .S PSOQX("MAX")=11,PSOMX1=$S($G(PSOMXRX)>PSOQX("MAX"):PSOQX("MAX"),1:$G(PSOMXRX)),PSOQX("MAX")=$S(PSOMX1=11:PSOQX("MAX"),1:PSOMX1) | 
|---|
| 43 | .S PSODYX=$G(PSOQX("DAYS SUPPLY")),PSODYX1=$S(PSODYX<60:11,PSODYX'<60&(PSODYX'>89):5,PSODYX=90:3,1:0) S PSOQX("MAX")=$S(PSOQX("MAX")'>PSODYX1:PSOQX("MAX"),1:PSODYX1) | 
|---|
| 44 | I $P($G(^PSDRUG(+$G(PSOQX("DRUG")),"CLOZ1")),"^")="PSOCLO1" D  Q | 
|---|
| 45 | .S PSOMXPAT=$O(^YSCL(603.01,"C",+$G(PSOQX("PATIENT")),0)) I 'PSOMXPAT S PSOQX("MAX")=0 Q | 
|---|
| 46 | .S PSOMXPAT=$P($G(^YSCL(603.01,PSOMXPAT,0)),"^",3) | 
|---|
| 47 | .I $D(PSOQX("DAYS SUPPLY")) S PSOQX("MAX")=$S(PSOMXPAT="M"&($G(PSOQX("DAYS SUPPLY"))<8):3,PSOMXPAT="M"&($G(PSOQX("DAYS SUPPLY"))<15):1,PSOMXPAT="B"&($G(PSOQX("DAYS SUPPLY"))<8):1,1:0) Q | 
|---|
| 48 | .S PSOQX("MAX")=$S(PSOMXPAT="M":3,PSOMXPAT="B":1,1:0) | 
|---|
| 49 | I $G(PSOQX("DRUG")) I PSOCDEA["A"&(PSOCDEA'["B")!(PSOCDEA["F")!(PSOCDEA[1)!(PSOCDEA[2) S PSOQX("MAX")=0 | 
|---|
| 50 | I PSONODD S PSOQX("DRUG")=0 | 
|---|
| 51 | Q | 
|---|