| [613] | 1 | PSOORAPI ;BIR/RTR-API utility routine ;7/8/00
 | 
|---|
 | 2 |  ;;7.0;OUTPATIENT PHARMACY;**45,58**;DEC 1997
 | 
|---|
 | 3 |  ;External reference to ^PSDRUG supported by DBIA 221
 | 
|---|
 | 4 |  ;External reference to $$ZIEN^A7RPSOUB supported by DBIA 3314
 | 
|---|
 | 5 |  ;
 | 
|---|
 | 6 | EN(PSOB,PSOE,PSOX,PSODT,PSON) ;
 | 
|---|
 | 7 |  ;PSOB - begin date
 | 
|---|
 | 8 |  ;PSOE - end date
 | 
|---|
 | 9 |  ;PSOX - medication array
 | 
|---|
 | 10 |  ;PSODT - fill or release date
 | 
|---|
 | 11 |  ;PSON - node subscript
 | 
|---|
 | 12 |  ;
 | 
|---|
 | 13 |  N PSORD,PSORX,PSOFILL,PSODRG,PSOND,PSOPDFN,PSOCX,PSOMED1,PSOMED2,PSODNM,PSOPRT,PSODAYS,PSOCSITE,PSONOC,PSORTN,PSORXIEN
 | 
|---|
 | 14 |  Q:'$G(PSOB)!('$G(PSOE))
 | 
|---|
 | 15 |  Q:$G(PSODT)'="F"&($G(PSODT)'="R")
 | 
|---|
 | 16 |  S PSOB=PSOB-.0001,PSOE=PSOE+.999999
 | 
|---|
 | 17 |  Q:$G(PSON)=""
 | 
|---|
 | 18 |  S PSOCSITE=+$P($$SITE^VASITE(),"^",3)
 | 
|---|
 | 19 |  S PSORTN=0 I $T(ZIEN52^A7RPSOUB)]"" S PSORTN=1
 | 
|---|
 | 20 |  K ^TMP(PSON,$J),^TMP($J,"PSOCT")
 | 
|---|
 | 21 |  G:PSODT="F" FILL
 | 
|---|
 | 22 | REL ;Use release date
 | 
|---|
 | 23 |  K PSOPRT
 | 
|---|
 | 24 |  F PSORD=PSOB:0 S PSORD=$O(^PSRX("AL",PSORD)) Q:'PSORD!(PSORD>PSOE)  F PSORX=0:0 S PSORX=$O(^PSRX("AL",PSORD,PSORX)) Q:'PSORX  S PSOFILL="" F  S PSOFILL=$O(^PSRX("AL",PSORD,PSORX,PSOFILL)) Q:PSOFILL=""  D
 | 
|---|
 | 25 |  .D SET
 | 
|---|
 | 26 |  .Q:'$G(PSODRG)!('$G(PSOPDFN))
 | 
|---|
 | 27 |  .D MED
 | 
|---|
 | 28 |  ;Partial releases
 | 
|---|
 | 29 |  S PSOPRT=1
 | 
|---|
 | 30 |  F PSORD=PSOB:0 S PSORD=$O(^PSRX("AM",PSORD)) Q:'PSORD!(PSORD>PSOE)  F PSORX=0:0 S PSORX=$O(^PSRX("AM",PSORD,PSORX)) Q:'PSORX  S PSOFILL="" F  S PSOFILL=$O(^PSRX("AM",PSORD,PSORX,PSOFILL)) Q:PSOFILL=""  D
 | 
|---|
 | 31 |  .D SET
 | 
|---|
 | 32 |  .Q:'$G(PSODRG)!('$G(PSOPDFN))
 | 
|---|
 | 33 |  .D MED
 | 
|---|
 | 34 |  G END
 | 
|---|
 | 35 | FILL ;Use fill date
 | 
|---|
 | 36 |  K PSOPRT
 | 
|---|
 | 37 |  F PSORD=PSOB:0 S PSORD=$O(^PSRX("AD",PSORD)) Q:'PSORD!(PSORD>PSOE)  F PSORX=0:0 S PSORX=$O(^PSRX("AD",PSORD,PSORX)) Q:'PSORX  S PSOFILL="" F  S PSOFILL=$O(^PSRX("AD",PSORD,PSORX,PSOFILL)) Q:PSOFILL=""  D
 | 
|---|
 | 38 |  .D SET
 | 
|---|
 | 39 |  .Q:'$G(PSODRG)!('$G(PSOPDFN))
 | 
|---|
 | 40 |  .D MED
 | 
|---|
 | 41 |  ;Partial fills
 | 
|---|
 | 42 |  S PSOPRT=1
 | 
|---|
 | 43 |  F PSORD=PSOB:0 S PSORD=$O(^PSRX("ADP",PSORD)) Q:'PSORD!(PSORD>PSOE)  F PSORX=0:0 S PSORX=$O(^PSRX("ADP",PSORD,PSORX)) Q:'PSORX  S PSOFILL="" F  S PSOFILL=$O(^PSRX("ADP",PSORD,PSORX,PSOFILL)) Q:PSOFILL=""  D
 | 
|---|
 | 44 |  .D SET
 | 
|---|
 | 45 |  .Q:'$G(PSODRG)!('$G(PSOPDFN))
 | 
|---|
 | 46 |  .D MED
 | 
|---|
 | 47 |  G END
 | 
|---|
 | 48 | SET ;
 | 
|---|
 | 49 |  K PSOND,PSODNM,PSODAYS S PSODRG=+$P($G(^PSRX(PSORX,0)),"^",6),PSOPDFN=+$P($G(^(0)),"^",2) I PSODRG S PSOND=+$P($G(^PSDRUG(PSODRG,"ND")),"^"),PSODNM=$P($G(^(0)),"^")
 | 
|---|
 | 50 |  I $G(PSOPRT) S PSODAYS=$P($G(^PSRX(PSORX,"P",+$G(PSOFILL),0)),"^",10)
 | 
|---|
 | 51 |  I '$G(PSOPRT) S PSODAYS=$S($G(PSOFILL):$P($G(^PSRX(PSORX,1,+$G(PSOFILL),0)),"^",10),1:$P($G(^PSRX(PSORX,0)),"^",8))
 | 
|---|
 | 52 |  Q
 | 
|---|
 | 53 | MED ;Check medication array for matches
 | 
|---|
 | 54 |  K PSOMED1,PSOMED2,PSOMED3
 | 
|---|
 | 55 |  I $D(PSOX(PSODRG_";PSDRUG(")) S PSOMED1=1 D MEDS Q
 | 
|---|
 | 56 |  I $G(PSOND),$D(PSOX(PSOND_";PSNDF(50.6,")) S PSOMED2=1 D MEDS Q
 | 
|---|
 | 57 |  ;Here, add class check when ready, use PSOMED2 for NDF, default to 1 for VA Class in MEDS
 | 
|---|
 | 58 |  Q
 | 
|---|
 | 59 | MEDS ;
 | 
|---|
 | 60 |  S PSONOC=0 I '$G(PSOPRT),'$G(PSOFILL),$G(PSORTN),$G(PSOCSITE) S PSORXIEN=$P($G(^PSRX(PSORX,0)),"^") I $G(PSORXIEN)'="" S PSONOC=$$ZIEN52^A7RPSOUB(PSOCSITE,PSORXIEN)
 | 
|---|
 | 61 |  Q:$G(PSONOC)
 | 
|---|
 | 62 |  I $D(^TMP($J,"PSOCT",PSOPDFN)) S (PSOCX,^TMP($J,"PSOCT",PSOPDFN))=^TMP($J,"PSOCT",PSOPDFN)+1
 | 
|---|
 | 63 |  I '$D(^TMP($J,"PSOCT",PSOPDFN)) S (PSOCX,^TMP($J,"PSOCT",PSOPDFN))=1
 | 
|---|
 | 64 |  S ^TMP(PSON,$J,PSOPDFN,PSOCX,0)=$S($G(PSOMED1):PSODRG_";PSDRUG(",1:$G(PSOND)_";PSNDF(50.6,")
 | 
|---|
 | 65 |  I $G(PSODT)="F" D  Q
 | 
|---|
 | 66 |  .I '$G(PSOPRT) S ^TMP(PSON,$J,PSOPDFN,PSOCX,1)=PSORD_"^"_$S('$G(PSOFILL)&($P($G(^PSRX(PSORX,2)),"^",13)):$E($P($G(^(2)),"^",13),1,7),$G(PSOFILL)&($P($G(^PSRX(PSORX,1,$G(PSOFILL),0)),"^",18)):$E($P($G(^(0)),"^",18),1,7),1:"")_"^"_$G(PSODNM)
 | 
|---|
 | 67 |  .I $G(PSOPRT) S ^TMP(PSON,$J,PSOPDFN,PSOCX,1)=PSORD_"^"_$S($G(PSOFILL)&($P($G(^PSRX(PSORX,"P",$G(PSOFILL),0)),"^",19)):$E($P($G(^(0)),"^",19),1,7),1:"")_"^"_$G(PSODNM)
 | 
|---|
 | 68 |  .S ^TMP(PSON,$J,PSOPDFN,PSOCX,1)=$G(^TMP(PSON,$J,PSOPDFN,PSOCX,1))_"^"_$G(PSODAYS)
 | 
|---|
 | 69 |  S ^TMP(PSON,$J,PSOPDFN,PSOCX,1)=$S('$G(PSOPRT)&('$G(PSOFILL)):$E($P($G(^PSRX(PSORX,2)),"^",2),1,7),'$G(PSOPRT)&($G(PSOFILL)):$E($P($G(^PSRX(PSORX,1,+$G(PSOFILL),0)),"^"),1,7),$G(PSOPRT):$E($P($G(^PSRX(PSORX,"P",+$G(PSOFILL),0)),"^"),1,7),1:"")
 | 
|---|
 | 70 |  S ^TMP(PSON,$J,PSOPDFN,PSOCX,1)=$G(^TMP(PSON,$J,PSOPDFN,PSOCX,1))_"^"_$E($G(PSORD),1,7)_"^"_$G(PSODNM)_"^"_$G(PSODAYS)
 | 
|---|
 | 71 |  Q
 | 
|---|
 | 72 | END ;
 | 
|---|
 | 73 |  K ^TMP($J,"PSOCT")
 | 
|---|
 | 74 |  Q
 | 
|---|