| 1 | PSGDL ;BIR/CML3-CALCULATE STOP DATE/TIME WITH DOSE LIMIT ;27 Aug 98 / 8:47 AM
 | 
|---|
| 2 |  ;;5.0; INPATIENT MEDICATIONS ;**16,50,64,58,111,170**;16 DEC 97
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; Reference to ^PS(55 is supported by DBIA #2191.
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 | EN ;
 | 
|---|
| 7 |  K PSGDLS S ND2=^PS(53.1,DA,2) I $P(ND2,"^",5)!$P(ND2,"^",6) W " ...Dose Limit... " G ENGO
 | 
|---|
| 8 |  G DONE
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 | ENE ;
 | 
|---|
| 11 |  S ND2=PSGSCH_"^"_PSGSD_"^^^"_PSGAT_"^"_PSGS0XT G ENGO
 | 
|---|
| 12 |  ;
 | 
|---|
| 13 | EN1 ;
 | 
|---|
| 14 |  S ND2=$P(PSGNEDFD,"^",4)_"^"_PSGNESD_"^^^"_PSGS0Y_"^"_PSGS0XT G ENGO
 | 
|---|
| 15 |  ;
 | 
|---|
| 16 | EN2 ;
 | 
|---|
| 17 |  K PSGDLS S ND2=^PS(55,DA(1),5,DA,2) I '$P(ND2,"^",5),'$P(ND2,"^",6) G DONE
 | 
|---|
| 18 |  W " ...Dose Limit... "
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 | ENGO ;
 | 
|---|
| 21 |  S SCH=$P(ND2,"^")
 | 
|---|
| 22 |  S ST=$S($D(PSGDLS):PSGDLS,1:$P(ND2,"^",2))
 | 
|---|
| 23 |  S TS=$P(ND2,"^",5),MN=$P(ND2,"^",6)
 | 
|---|
| 24 |  I $P(PSJSYSW0,U,5)=2 D
 | 
|---|
| 25 |  . Q:'TS  S:TS'[$P(ST,".",2) $P(PSJSYSW0,U,5)=1 D
 | 
|---|
| 26 |  .. S X=$G(PSGSD),%DT="T" D ^%DT I Y'=-1 N PSGSD S PSGSD=Y
 | 
|---|
| 27 |  .. S X=$G(PSGFD),%DT="T" D ^%DT I Y'=-1 N PSGFD S PSGFD=Y
 | 
|---|
| 28 |  .. I '$G(PSGSD) N PSGSD S PSGSD=$$DATE^PSJUTL2
 | 
|---|
| 29 |  .. I '$G(PSGFD) N PSGFD S PSGFD=$$FMADD^XLFDT(PSGSD,30)
 | 
|---|
| 30 |  .. N STRING,ND2,SCH,TS,MN S STRING=$G(PSGSD)_"^"_$G(PSGFD)_"^"_$G(PSGSCH)_"^"_$G(PSGST)_"^"_$G(PSGPDRG)_"^"_$G(PSGAT)
 | 
|---|
| 31 |  .. I $G(PSGP) S ST=$$ENQ^PSJORP2(PSGP,STRING) S:'ST ST=$S($D(PSGDLS):PSGDLS,1:$P(ND2,"^",2))
 | 
|---|
| 32 |  . S $P(PSJSYSW0,U,5)=2
 | 
|---|
| 33 |  G MWF:SCH["@",DONE:'TS&'MN
 | 
|---|
| 34 |  I 'TS S AM=MN*PSGDL,X=$$EN^PSGCT(ST,AM) G DONE
 | 
|---|
| 35 |  S TM=$E(ST_"00000",9,8+$L($P(TS,"-")))
 | 
|---|
| 36 |  F Q=1:1 Q:$P(TS,"-",Q)=""!(TM<$P(TS,"-",Q))
 | 
|---|
| 37 |  S X=ST\1,C=0 F Q=Q:1 D:$P(TS,"-",Q)="" ADD S C=C+1 I C=PSGDL S X=X_"."_$P(TS,"-",Q) G DONE
 | 
|---|
| 38 |  ;
 | 
|---|
| 39 | MWF ; if schedule is similar to monday-wednesday-friday
 | 
|---|
| 40 |  S TS=$P(SCH,"@",2),SCH=$P(SCH,"@"),X=$P(ST,"."),C=0 D SCHK G:C=PSGDL DONE F Q=1:1 S X1=$P(ST,"."),X2=Q D C^%DTC S X1=X D DW^%DTC D CHK G:C=PSGDL DONE
 | 
|---|
| 41 | SCHK S X1=X D DW^%DTC F Q=1:1:$L(SCH,"-") S WKD=$P(SCH,"-",Q) I WKD=$E(X,1,$L(WKD)) Q
 | 
|---|
| 42 |  E  Q
 | 
|---|
| 43 |  S TM=$E(ST_"00000",9,8+$L($P(TS,"-"))) F Q=1:1:$L(TS,"-") I TM<$P(TS,"-",Q) S C=C+1 I C=PSGDL S X=X1_"."_$P(TS,"-",Q) Q
 | 
|---|
| 44 |  Q
 | 
|---|
| 45 | CHK F QQ=1:1:$L(SCH,"-") S WKD=$P(SCH,"-",QQ) I WKD=$E(X,1,$L(WKD)) D TS Q
 | 
|---|
| 46 |  Q
 | 
|---|
| 47 | TS F Q1=1:1:$L(TS,"-") S C=C+1 I C=PSGDL S X=X1_"."_$P(TS,"-",Q1) Q
 | 
|---|
| 48 |  Q
 | 
|---|
| 49 |  ;
 | 
|---|
| 50 | DONE ;
 | 
|---|
| 51 |  K %H,%T,%Y,MN,ND2,ND4,PSGDLS,PSGDL,Q1,QQ,SCH,TM,WKD,TS,X1,X2 Q
 | 
|---|
| 52 |  ;
 | 
|---|
| 53 | ADD ;
 | 
|---|
| 54 |  S X1=$P(X,"."),X2=$S(MN&'(MN#1440):MN\1440,1:1) D C^%DTC S Q=1 Q
 | 
|---|
| 55 |  ;
 | 
|---|
| 56 | ENPREV ; when "P" is enter at start date
 | 
|---|
| 57 |  W "REVIOUS" S (X,Y)=0 I '$D(PSGP)!'$D(PSGPDRG) G:$D(DA)[0 POUT S PSGP=$P($G(^PS(53.1,DA,0)),"^",15),PSGPDRG=+$G(^(.2)),Y=1 I 'PSGP!'PSGPDRG W:'PSGPDRG !?17,"Must have drug from formulary list." G POUT
 | 
|---|
| 58 |  F Q=0:0 S Q=$O(^PS(53.1,"AC",PSGP,Q)) Q:'Q  I +$G(^PS(53.1,Q,.2))=PSGPDRG,$D(^PS(53.1,Q,2)),$P(^(2),"^",4)>X S X=$P(^(2),"^",4)
 | 
|---|
| 59 |  F Q=0:0 S Q=$O(^PS(55,PSGP,5,"C",PSGPDRG,Q)) Q:'Q  I $D(^PS(55,PSGP,5,Q,2)),$P(^(2),"^",4)>X S X=$P(^(2),"^",4)
 | 
|---|
| 60 |  W:'X !?17,"No other order found with this drug."
 | 
|---|
| 61 |  ;
 | 
|---|
| 62 | POUT ;
 | 
|---|
| 63 |  K:'X X K:Y PSGPDRG,PSGP,Q Q
 | 
|---|
| 64 | ENDL(SCH,DL) ;validate that dose limit should be allowed with this schedule
 | 
|---|
| 65 |  ;and that the dose limit is a whole number
 | 
|---|
| 66 |  I $G(SCH)="" Q 1
 | 
|---|
| 67 |  I ",ON CALL,ON-CALL,ONCALL,"[(","_SCH_",")!($$ONE^PSJBCMA(DFN,"",SCH)="O") W " Dose limit invalid with this schedule" Q 0
 | 
|---|
| 68 |  I DL'?1N.N W " Dose limit must be a whole number" Q 0
 | 
|---|
| 69 |  Q 1
 | 
|---|