| 1 | PSODIR2 ;IHS/DSD/JCM - rx order entry contd ;01/27/93 7:12
 | 
|---|
| 2 |  ;;7.0;OUTPATIENT PHARMACY;**3,9,26,46,124,146,139,152,166**;DEC 1997
 | 
|---|
| 3 |  ;External reference to ^DD(52 supported by DBIA 999
 | 
|---|
| 4 |  ;External reference to ^VA(200 supported by DBIA 10060
 | 
|---|
| 5 |  ;External reference to ^%DTC supported by DBIA 10000
 | 
|---|
| 6 |  ;External reference to ^DIC supported by DBIA 10006
 | 
|---|
| 7 |  ;External reference to ^DIR supported by DBIA 10026
 | 
|---|
| 8 |  ;
 | 
|---|
| 9 |  ;---------------------------------------------------------------------
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 | EXP(PSODIR) ;
 | 
|---|
| 12 |  K DIR,DIC
 | 
|---|
| 13 |  I $G(PSODRUG("EXPIRATION DATE"))]"" S Y=PSODRUG("EXPIRATION DATE") X ^DD("DD") S PSORX("EXPIRATION DATE")=Y
 | 
|---|
| 14 |  S DIR("A")="EXPIRES",DIR("B")=$S($G(PSORX("EXPIRATION DATE"))]"":PSORX("EXPIRATION DATE"),1:"T+6M")
 | 
|---|
| 15 |  S DIR(0)="D^NOW::EX"
 | 
|---|
| 16 |  S DIR("?")="Both the month and date are required."
 | 
|---|
| 17 |  D DIR G:PSODIR("DFLG")!PSODIR("FIELD") EXPX
 | 
|---|
| 18 |  S PSODIR("EXPIRATION DATE")=Y
 | 
|---|
| 19 | EXPX K X,Y
 | 
|---|
| 20 |  Q
 | 
|---|
| 21 |  ;
 | 
|---|
| 22 | CLINIC(PSODIR) ;
 | 
|---|
| 23 |  K DIR,DIC S PSODIR("FIELD")=0
 | 
|---|
| 24 |  S DIR(0)="52,5" S:$G(PSORX("CLINIC"))]"" DIR("B")=PSORX("CLINIC"),DIR("A")="CLINIC"
 | 
|---|
| 25 |  D ^DIR G:PSODIR("DFLG")!PSODIR("FIELD") CLINICX
 | 
|---|
| 26 |  I +Y>0 S PSODIR("CLINIC")=+Y,PSORX("CLINIC")=$P(Y,"^",2)
 | 
|---|
| 27 |  E  S (PSORX("CLINIC"),PSODIR("CLINIC"))=""
 | 
|---|
| 28 | CLINICX K X,Y,PSOX,DIC
 | 
|---|
| 29 |  Q
 | 
|---|
| 30 |  ;
 | 
|---|
| 31 | MW(PSODIR) ;
 | 
|---|
| 32 |  K DIR,DIC
 | 
|---|
| 33 |  S DIR(0)="52,11" S:$G(POERR)&'$D(PSORX("MAIL/WINDOW")) PSORX("MAIL/WINDOW")=$S($P($G(OR0),"^",17)="M":"MAIL",1:"WINDOW")
 | 
|---|
| 34 |  S DIR("B")=$S($G(PSORX("MAIL/WINDOW"))]"":PSORX("MAIL/WINDOW"),$G(PSOTPBFG)&($G(PSOFROM)="NEW"):"MAIL",1:"WINDOW")
 | 
|---|
| 35 |  D DIR G:PSODIR("DFLG")!PSODIR("FIELD") MWX
 | 
|---|
| 36 |  I $G(Y(0))']"" S PSODIR("DFLG")=1 G MWX
 | 
|---|
| 37 |  S PSODIR("MAIL/WINDOW")=Y,PSORX("MAIL/WINDOW")=Y(0)
 | 
|---|
| 38 |  I $G(PSORX("EDIT"))]"",PSODIR("MAIL/WINDOW")'="W" K PSODIR("METHOD OF PICK-UP")
 | 
|---|
| 39 | MW1 G:PSODIR("MAIL/WINDOW")'="W"!('$P($G(PSOPAR),"^",12)) MWX
 | 
|---|
| 40 |  S DIR(0)="52,35O"
 | 
|---|
| 41 |  S:$G(PSORX("METHOD OF PICK-UP"))]"" DIR("B")=PSORX("METHOD OF PICK-UP")
 | 
|---|
| 42 |  D DIR G:PSODIR("DFLG") MWX
 | 
|---|
| 43 |  I X[U W !,"Cannot jump to another field ..",! G MW1
 | 
|---|
| 44 |  S (PSODIR("METHOD OF PICK-UP"),PSORX("METHOD OF PICK-UP"))=Y
 | 
|---|
| 45 | MWX K X,Y
 | 
|---|
| 46 |  Q
 | 
|---|
| 47 |  ;
 | 
|---|
| 48 | RMK(PSODIR) ;
 | 
|---|
| 49 | RMKEN K DIR,DIC
 | 
|---|
| 50 |  S DIR(0)="52,12"
 | 
|---|
| 51 |  S:$G(PSODIR("REMARKS"))]"" DIR("B")=PSODIR("REMARKS")
 | 
|---|
| 52 |  D DIR G:PSODIR("DFLG") RMKX
 | 
|---|
| 53 |  I X[U W !,"Cannot jump to another field ..",! G RMKEN
 | 
|---|
| 54 |  S:$L(X)>0 PSODIR("REMARKS")=X
 | 
|---|
| 55 |  S:X="@" PSODIR("REMARKS")=""
 | 
|---|
| 56 | RMKX K X,Y
 | 
|---|
| 57 |  Q
 | 
|---|
| 58 |  ;
 | 
|---|
| 59 | ISSDT(PSODIR) ;
 | 
|---|
| 60 |  K DIR,DIC
 | 
|---|
| 61 |  S DIR("A")="ISSUE DATE",DIR("B")=$S($G(POERR)&($G(PSORX("ISSUE DATE"))']"")&($G(PSODIR("ISSUE DATE"))]""):PSODIR("ISSUE DATE"),$G(PSORX("ISSUE DATE"))]"":PSORX("ISSUE DATE"),1:"TODAY")
 | 
|---|
| 62 |  I DIR("B") S Y=DIR("B") X ^DD("DD") S DIR("B")=Y
 | 
|---|
| 63 |  S DIR(0)="52,1"
 | 
|---|
| 64 |  D DIR G:PSODIR("DFLG")!PSODIR("FIELD") ISSDTX
 | 
|---|
| 65 |  S (PSODIR("ISSUE DATE"),PSOID)=Y
 | 
|---|
| 66 |  X ^DD("DD") S (PSORX("ISSUE DATE"),PSODIR("ISSUE DATE"))=Y
 | 
|---|
| 67 | ISSDTX K X,Y
 | 
|---|
| 68 |  Q
 | 
|---|
| 69 |  ;
 | 
|---|
| 70 | FILLDT(PSODIR) ;
 | 
|---|
| 71 |  K DIR,DIC
 | 
|---|
| 72 |  S:'$G(PSONEW("DAYS SUPPLY")) PSONEW("DAYS SUPPLY")=30,PSONEW("# OF REFILLS")=1
 | 
|---|
| 73 |  S DIR("A")="FILL DATE",DIR("B")=$S($G(PSORX("FILL DATE"))]"":PSORX("FILL DATE"),1:"TODAY")
 | 
|---|
| 74 |  S X2=PSONEW("DAYS SUPPLY")*(PSONEW("# OF REFILLS")+1)\1
 | 
|---|
| 75 |  S X1=$S($G(PSOID):PSOID,1:DT)
 | 
|---|
| 76 |  S X2=$S(PSONEW("DAYS SUPPLY")=X2:X2,+$G(PSODIR("CS")):184,1:366)
 | 
|---|
| 77 |  I X2<30 D
 | 
|---|
| 78 |  . N % S %=$P($G(PSORX("PATIENT STATUS")),"^"),X2=30
 | 
|---|
| 79 |  . S:%?.N %=$P($G(^PS(53,+%,0)),"^") I %["AUTH ABS" S X2=5
 | 
|---|
| 80 |  D C^%DTC S PSOFDMX=$P(X,".") I DT>X S Y=$S($G(PSOID):PSOID,1:PSORX("ISSUE DATE")) X ^DD("DD") S DIR("B")=Y
 | 
|---|
| 81 |  S DIR(0)="D^"_$S($G(PSOID):PSOID,+$G(PSODIR("ISSUE DATE")):PSODIR("ISSUE DATE"),1:DT)_$S($G(DUZ("AG"))="I":":"_DT_":EX",1:":"_PSOFDMX_":EX")
 | 
|---|
| 82 |  S Y=PSOFDMX X ^DD("DD")
 | 
|---|
| 83 |  S DIR("?",1)="The earliest fill date allowed is determined by the ISSUE DATE,"
 | 
|---|
| 84 |  S DIR("?",2)="the FILL DATE cannot be before the ISSUE DATE or AFTER the Expiration Date "
 | 
|---|
| 85 |  S DIR("?")=Y_".  Both the month and date are required."
 | 
|---|
| 86 |  D DIR G:PSODIR("DFLG")!PSODIR("FIELD") FILLDTX
 | 
|---|
| 87 |  S PSODIR("FILL DATE")=Y
 | 
|---|
| 88 |  X ^DD("DD") S PSORX("FILL DATE")=Y
 | 
|---|
| 89 | FILLDTX K X,Y,PSOFDMX
 | 
|---|
| 90 |  Q
 | 
|---|
| 91 |  ;
 | 
|---|
| 92 | CLERK(PSODIR) ;
 | 
|---|
| 93 |  I $G(DUZ("AG"))'="I" D  G CLERKX
 | 
|---|
| 94 |  .S PSODIR("CLERK CODE")=$S($G(PSOFDR):$P(OR0,"^",4),1:DUZ),PSORX("CLERK CODE")=$P($G(^VA(200,PSODIR("CLERK CODE"),0)),"^")
 | 
|---|
| 95 |  K DIR,DIC
 | 
|---|
| 96 |  S DIR("A")="CLERK",DIR("B")=$S($G(PSORX("CLERK CODE"))]"":PSORX("CLERK CODE"),1:$P($G(^VA(200,DUZ,0)),"^",2)),DIR(0)="52,16"
 | 
|---|
| 97 |  D DIR G:PSODIR("DFLG")!PSODIR("FIELD") CLERKX
 | 
|---|
| 98 |  S PSODIR("CLERK CODE")=+Y,PSORX("CLERK CODE")=$P(Y,"^")
 | 
|---|
| 99 | CLERKX Q
 | 
|---|
| 100 |  ;
 | 
|---|
| 101 | DIR ;
 | 
|---|
| 102 |  S PSODIR("FIELD")=0
 | 
|---|
| 103 |  G:$G(DIR(0))']"" DIRX
 | 
|---|
| 104 |  D ^DIR K DIR,DIE,DIC,DA I X="^^" S (PSODIR("QFLG"),PSODIR("DFLG"))=1 G DIRX
 | 
|---|
| 105 |  I $D(DUOUT)!($D(DTOUT))!($D(DIROUT)),$L($G(X))'>1!(Y="") S PSODIR("DFLG")=1 S:$G(SPEED) PSODIR("QFLG")=1 G DIRX
 | 
|---|
| 106 |  I $D(DUOUT)!($D(DTOUT)),$G(SPEED) S PSODIR("DFLG")=1 G DIRX
 | 
|---|
| 107 |  I X[U,$L(X)>1 D JUMP
 | 
|---|
| 108 | DIRX K DIRUT,DTOUT,DUOUT,DIROUT,PSOX
 | 
|---|
| 109 |  Q
 | 
|---|
| 110 |  ;
 | 
|---|
| 111 | JUMP ;
 | 
|---|
| 112 |  I $G(PSOEDIT)!($G(OR0)) S PSODIR("DFLG")=1 Q
 | 
|---|
| 113 |  S X=$P(X,"^",2),DIC="^DD(52,",DIC(0)="QM" D ^DIC K DIC
 | 
|---|
| 114 |  I Y=-1 S PSODIR("FIELD")=$G(PSODIR("FLD")) G JUMPX
 | 
|---|
| 115 |  I $G(PSONEW1)=0 D JUMP^PSONEW1 G JUMPX
 | 
|---|
| 116 |  I $G(PSONEW3)=0 D JUMP^PSONEW3 G JUMPX
 | 
|---|
| 117 |  I $G(PSORENW3)=0 D JUMP^PSORENW3 G JUMPX
 | 
|---|
| 118 | JUMPX S X="^"_X
 | 
|---|
| 119 |  Q
 | 
|---|
| 120 |  ;Reset refills when drug changed to a controlled sub
 | 
|---|
| 121 | RFRSET ;
 | 
|---|
| 122 |  N RFN,RFNC
 | 
|---|
| 123 |  S (RFN,RFNC)=0
 | 
|---|
| 124 |  F  S RFN=$O(^PSRX(+$G(PSODIR("IRXN")),1,RFN)) Q:'RFN  S RFNC=RFNC+1
 | 
|---|
| 125 |  I $D(PSODIR("FIELD")) S PSODIR("FIELD")=0
 | 
|---|
| 126 |  S PSODIR("# OF REFILLS")=RFNC
 | 
|---|
| 127 |  S VALMSG="The drug has been changed and no longer allows refills."
 | 
|---|
| 128 |  W !,VALMSG,!
 | 
|---|
| 129 |  Q
 | 
|---|