| 1 | PSJORREN ;BIR/MV-RENEWAL FLAG ;6 DEC 00 / 3:11 PM 
 | 
|---|
| 2 |  ;;5.0; INPATIENT MEDICATIONS ;**50,70,58,89,91,110,127**;16 DEC 97
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; Reference to ^PS(50.7 supported by DBIA #2180
 | 
|---|
| 5 |  ; References to ^PS(52.6 supported by DBIA #1231
 | 
|---|
| 6 |  ; References to ^PS(52.7 supported by DBIA #2173
 | 
|---|
| 7 |  ; References to ^PS(55 supported by DBIA #2191
 | 
|---|
| 8 |  ; Reference to ^PSDRUG( is supported by DBIA 2192
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 | ACTIVE(DFN,ON) ;
 | 
|---|
| 11 |  ;DFN: Patient IEN
 | 
|---|
| 12 |  ;ON : Order number_"U/V/P"
 | 
|---|
| 13 |  ;Output: 0^reason not renewable (Can't renew)
 | 
|---|
| 14 |  ;        2^New OI (Need to create a new order as in edit)
 | 
|---|
| 15 |  ;          note: with PSJ*5*70 - instead of 2, IV order will return 0
 | 
|---|
| 16 |  ;        1 (OK to renew)
 | 
|---|
| 17 |  NEW PSJRT,PSJEXP
 | 
|---|
| 18 |  D:ON["U" UD
 | 
|---|
| 19 |  D:ON["V" IV
 | 
|---|
| 20 |  I (+$G(PSJRT)=1) S PSJEXP=$$EXPIRED^PSGOER(DFN,ON) I PSJEXP S PSJRT="0^Expired Time Limit Exceeded"
 | 
|---|
| 21 |  Q $G(PSJRT)
 | 
|---|
| 22 | UD ;
 | 
|---|
| 23 |  ;If both PSJRT(2) & (3) existed it meant order has multiple DDs and one
 | 
|---|
| 24 |  ;is tied to a different OI. It's best to not allow renewal of the order.
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 |  NEW PSJDD,PSJDDOI,PSJDDX,PSJACT,PSJOI,PSJOIACT,PSJUSE,PSJPRI,X,ND2
 | 
|---|
| 27 |  K PSJRT
 | 
|---|
| 28 |  S PSJOI=+^PS(55,DFN,5,+ON,.2)
 | 
|---|
| 29 |  S PSJPRI=$P(^PS(55,DFN,5,+ON,.2),"^",4)
 | 
|---|
| 30 |  I PSJPRI="D" S PSJRT="0^Orders with a Done priority may not be renewed" Q
 | 
|---|
| 31 |  S ND0=$G(^PS(55,DFN,5,+ON,0)) I $P(ND0,"^",7)="O" S PSJRT="0^One Time orders may not be renewed" Q
 | 
|---|
| 32 |  N PSJCANT,PSJDAD,NDP2,PSJORKID,PSJKID S NDP2=$G(^PS(55,DFN,5,+ON,.2)),PSJDAD=$P(NDP2,"^",8) I PSJDAD D
 | 
|---|
| 33 |  .S PSJORKID="" F  S PSJORKID=$O(^PS(55,"ACX",PSJDAD,PSJORKID)) Q:'PSJORKID!$G(PSJCANT)  S PSJKID="" F  S PSJKID=$O(^PS(55,"ACX",PSJDAD,PSJORKID,PSJKID)) Q:'PSJKID!$G(PSJCANT)  D
 | 
|---|
| 34 |  ..S ND0=$G(^PS(55,DFN,5,+PSJKID,2)) I $P(ND0,"^",7)="O" S PSJRT="0^Complex Orders with One-Time doses may not be renewed",PSJCANT=1
 | 
|---|
| 35 |  Q:$G(PSJCANT)
 | 
|---|
| 36 |  F PSJDD=0:0 S PSJDD=$O(^PS(55,DFN,5,+ON,1,PSJDD)) Q:('PSJDD!$D(PSJRT(1)))  D
 | 
|---|
| 37 |  . S (PSJACT,PSJOIACT)=0 S PSJDDX=^PS(55,DFN,5,+ON,1,PSJDD,0)
 | 
|---|
| 38 |  . S X=$P(PSJDDX,U,3) I X]"",(X'>DT) S PSJACT=1
 | 
|---|
| 39 |  . S X=$G(^PSDRUG(+PSJDDX,"I")) I X]"",(X'>DT) S PSJACT=1
 | 
|---|
| 40 |  . S X=$G(^PSDRUG(+PSJDDX,2)),PSJUSE=$P(X,U,3)["U",PSJDDOI=+X I '+PSJDDOI S PSJRT(3)="0^Dispense drug is not matched to an Orderable Item" Q
 | 
|---|
| 41 |  . S X=$P($G(^PS(50.7,+PSJDDOI,0)),U,4) I X]"",(X'>DT) S PSJOIACT=1
 | 
|---|
| 42 |  . I 'PSJACT,PSJUSE D  Q
 | 
|---|
| 43 |  .. I PSJOI=PSJDDOI D  Q
 | 
|---|
| 44 |  ... I 'PSJOIACT S PSJRT(1)=1 Q
 | 
|---|
| 45 |  ... S:PSJOIACT PSJRT(3)="0^Inactive Orderable Item"
 | 
|---|
| 46 |  .. I +PSJDDOI,(PSJOI'=PSJDDOI) D
 | 
|---|
| 47 |  ... S:'PSJOIACT PSJRT(2)="2"_U_PSJDDOI
 | 
|---|
| 48 |  ... S:PSJOIACT PSJRT(3)="0^Dispense drug ties to an inactive Orderable Item"
 | 
|---|
| 49 |  . I PSJACT S PSJRT(3)="0^This drug has been Inactivated"
 | 
|---|
| 50 |  . I 'PSJUSE S PSJRT(3)="0^Drug is No longer used in Inpatient Meds"
 | 
|---|
| 51 |  I $D(PSJRT(1)) S PSJRT=1 Q
 | 
|---|
| 52 |  I $D(PSJRT(2)),$D(PSJRT(3)) S PSJRT=PSJRT(3) Q
 | 
|---|
| 53 |  I '$D(PSJRT) S PSJRT="0^Order has no Dispense drug" Q
 | 
|---|
| 54 |  S X=$O(PSJRT(0)),PSJRT=$G(PSJRT(X))
 | 
|---|
| 55 |  Q
 | 
|---|
| 56 | IV ;
 | 
|---|
| 57 |  NEW FIL,PSJACT,PSJAS,PSJASNO,PSJASOI,PSJCNT,PSJIEN,PSJOI,PSJOIACT,PSJPRI,X
 | 
|---|
| 58 |  K PSJRT
 | 
|---|
| 59 |  S PSJCNT=0
 | 
|---|
| 60 |  S PSJOI=+$G(^PS(55,DFN,"IV",+ON,.2))
 | 
|---|
| 61 |  S PSJPRI=$P(^PS(55,DFN,"IV",+ON,.2),"^",4)
 | 
|---|
| 62 |  I PSJPRI="D" S PSJRT="0^Orders with a Done priority may not be renewed" Q
 | 
|---|
| 63 |  N ND2,PSBACT,IVSCHED
 | 
|---|
| 64 |  S ND0=$G(^PS(55,DFN,"IV",+ON,0)) I ($P(ND0,"^",4)="P")!($P(ND0,"^",23)="P")!$P(ND0,"^",5) D  Q:$G(PSJRT)]""
 | 
|---|
| 65 |  .N X,PSGOES,ZZND S PSGOES=2,X=$P(ND0,"^",9) D ENOS^PSGS0 Q:($G(X)="")!($P($G(ZZND),"^",5)'="O")
 | 
|---|
| 66 |  .S PSJRT="0^This One-Time order may not be renewed"
 | 
|---|
| 67 |  F FIL="AD","SOL"  F PSJAS=0:0 S PSJAS=$O(^PS(55,DFN,"IV",+ON,FIL,PSJAS)) Q:'PSJAS  D
 | 
|---|
| 68 |  . S (PSJACT,PSJOIACT)=0
 | 
|---|
| 69 |  . S PSJASNO=$S(FIL="AD":52.6,1:52.7)
 | 
|---|
| 70 |  . S PSJIEN=+^PS(55,DFN,"IV",+ON,FIL,PSJAS,0)
 | 
|---|
| 71 |  . S X=$G(^PS(PSJASNO,+PSJIEN,"I")) I X]"",(X'>DT) S PSJACT=1
 | 
|---|
| 72 |  . S PSJASOI=$P(^PS(PSJASNO,PSJIEN,0),U,11)
 | 
|---|
| 73 |  . S X=$P($G(^PS(50.7,+PSJASOI,0)),U,4) I X]"",(X'>DT) S PSJOIACT=1
 | 
|---|
| 74 |  . I PSJACT S PSJCNT=PSJCNT+1,PSJRT(3)="0^Inactive "_$S(FIL="AD":"Additive",1:"Solution") Q
 | 
|---|
| 75 |  . I PSJOI=PSJASOI D  Q
 | 
|---|
| 76 |  .. I 'PSJOIACT S PSJRT(1)="" Q
 | 
|---|
| 77 |  .. I PSJOIACT S PSJRT(3)="0^Inactive Orderable Item"
 | 
|---|
| 78 |  . I PSJOI'=PSJASOI D
 | 
|---|
| 79 |  .. I 'PSJOIACT S PSJCNT=PSJCNT+1,PSJRT(2)=2_U_PSJASOI
 | 
|---|
| 80 |  .. I PSJOIACT S PSJRT(3)="0^Inactive Orderable Item"
 | 
|---|
| 81 |  I $D(PSJRT(1)) S PSJRT=1 Q
 | 
|---|
| 82 |  I $D(PSJRT(3)) S PSJRT=PSJRT(3) Q
 | 
|---|
| 83 |  ;I $D(PSJRT(2)),PSJCNT=1 S PSJRT=PSJRT(2) Q
 | 
|---|
| 84 |  I $D(PSJRT(2)),PSJCNT=1 S PSJRT="0^New Orderable Item" Q
 | 
|---|
| 85 |  S PSJRT="0^Inactive drug"
 | 
|---|
| 86 |  Q
 | 
|---|