| 1 | PSXNEW ;BIR/HTW/PWC-Rx Order Entry Screen for CMOP ;11 Mar 2002  4:38 PM
 | 
|---|
| 2 |  ;;2.0;CMOP;**41**;11 Apr 97
 | 
|---|
| 3 |  ; reference to ^PS(52.5 supported by DBIA #1978
 | 
|---|
| 4 |  ; reference to ^PSRX    supported by DBIA #1977
 | 
|---|
| 5 |  ; reference to EN^PSOHLSN1 supported by DBIA #2385
 | 
|---|
| 6 |  ; reference to ^XTMP("ORLK-" supported by DBIA #4001
 | 
|---|
| 7 | RESET(PSXRX,PSXFILL,PSXREAS) ;
 | 
|---|
| 8 | OERR    ;clear ^XTMP("ORLK" if it is CPRS/CMOP
 | 
|---|
| 9 |  N ORD S ORD=+$P($G(^PSRX(+$G(PSXRX),"OR1")),"^",2)
 | 
|---|
| 10 |  I ORD,$D(^XTMP("ORLK-"_ORD,0)),^XTMP("ORLK-"_ORD,0)["CPRS/CMOP" K ^XTMP("ORLK-"_ORD)
 | 
|---|
| 11 |  ;   Remove and test individual RX's
 | 
|---|
| 12 |  N PSXRFD,PSXEDREL,PSOSITE,PSXSD,PSXLFD,PSXDFN,PSX525,PSXD,PSXZ,PSXRXF,PSXFDA
 | 
|---|
| 13 |  ;       Q:If tradename
 | 
|---|
| 14 |  Q:$G(^PSRX(PSXRX,"TN"))]""
 | 
|---|
| 15 |  ;       Q: If Cancelled, Expired, Deleted, Drug Interactions, Hold
 | 
|---|
| 16 |  Q:$P(^PSRX(PSXRX,"STA"),"^")>9!($P(^("STA"),"^")=4)!($P(^("STA"),"^")=3)
 | 
|---|
| 17 |  ;       Find last fill
 | 
|---|
| 18 |  S PSXRFD=+$O(^PSRX(PSXRX,1,"A"),-1)
 | 
|---|
| 19 |  S PSXEDREL=$S(PSXRFD=0:$P($G(^PSRX(PSXRX,2)),"^",13),1:$P($G(^PSRX(PSXRX,1,PSXRFD,0)),"^",18))
 | 
|---|
| 20 |  I PSXEDREL K DA,DIE,DR D
 | 
|---|
| 21 |  . I PSXRFD=0 S DA=PSXRX L +^PSRX(DA):600 S DIE="^PSRX(",DR="31///@" D ^DIE L -^PSRX(DA)
 | 
|---|
| 22 |  . I PSXRFD>0 S DA=PSXRFD,DA(1)=PSXRX L +^PSRX(DA(1),1,DA):600 S DIE="^PSRX(DA(1),1,",DR="17///@" D ^DIE L -^PSRX(DA(1),1,DA)
 | 
|---|
| 23 | SUS ;       Auto-Suspend CMOPS
 | 
|---|
| 24 |  N DA,Y
 | 
|---|
| 25 |  S DA=PSXRX
 | 
|---|
| 26 |  ;D NOW^%DTC ; need to reset back to original suspended date
 | 
|---|
| 27 |  I PSXRFD=0 S %=$P(^PSRX(PSXRX,2),"^",2)
 | 
|---|
| 28 |  I PSXRFD>0 S %=$P(^PSRX(PSXRX,1,PSXRFD,0),"^",1)
 | 
|---|
| 29 |  S PSXSD=$P(%,".",1),PSXLFD=$E(%,4,5)_"-"_$E(%,6,7)_"-"_$E(%,2,3)
 | 
|---|
| 30 |  S PSXRXS=$O(^PS(52.5,"B",PSXRX,0))
 | 
|---|
| 31 |  I PSXRXS S DA=PSXRXS,DIK="^PS(52.5," D ^DIK S DA=PSXRX
 | 
|---|
| 32 |  I $G(PSXRFD)>0 S PSOSITE=$P(^PSRX(PSXRX,1,PSXRFD,0),"^",9)
 | 
|---|
| 33 |  I $G(PSXRFD)=0 S PSOSITE=$P(^PSRX(PSXRX,2),"^",9)
 | 
|---|
| 34 |  S DIC="^PS(52.5,",DIC(0)="Z"
 | 
|---|
| 35 |  K DD,DO S X=PSXRX,PSXDFN=$P(^PSRX(PSXRX,0),"^",2)
 | 
|---|
| 36 |  S DIC("DR")=".02////"_PSXSD_";.03////"_PSXDFN_";.04////M;.05////0;.06////"_PSOSITE_";2////0;3////Q;9////"_PSXRFD
 | 
|---|
| 37 |  D FILE^DICN K DIC,DIK,DD,DO
 | 
|---|
| 38 |  I +Y>0 S PSX525=+Y
 | 
|---|
| 39 |  E  D EXIT Q
 | 
|---|
| 40 | LOCK525 ;        
 | 
|---|
| 41 |  L +^PS(52.5,PSX525):600 G:'$T LOCK525
 | 
|---|
| 42 |  K ^PS(52.5,"AC",PSXDFN,PSXSD,PSX525),PSXDFN
 | 
|---|
| 43 |  L -^PS(52.5,PSX525)
 | 
|---|
| 44 |  D SETRX
 | 
|---|
| 45 |  D ACT
 | 
|---|
| 46 |  S COMM="Rx# "_$P(^PSRX(PSXRX,0),"^")_" Has Been Suspended for CMOP Until "_PSXLFD_"."
 | 
|---|
| 47 |  D EN^PSOHLSN1(PSXRX,"SC","ZS",COMM) K COMM
 | 
|---|
| 48 | EXIT K PSXRXS,PSXLFD,PSXRXF,PSXFDA,PSXIR,PSXRX,PSXSD,PSXRXDA,PSXRFD,PSX
 | 
|---|
| 49 |  K PSXEDREL,PSOSITE,PSX525,PSXDFN,PSXFIEN,PSXD,DIC,DIE,Y,X,%,%H,%I,%T,I
 | 
|---|
| 50 |  Q
 | 
|---|
| 51 | SETRX ; Check if last fill has been transmitted (0) or retransmitted (2) - 
 | 
|---|
| 52 |  ; edit node and set to not dispensed (3).
 | 
|---|
| 53 |  ; If already dispensed (1) or not dispensed (3), create new entry
 | 
|---|
| 54 |  ; and set to not dispensed (3) with cancelled reason.
 | 
|---|
| 55 |  S $P(^PSRX(PSXRX,"STA"),"^")=5
 | 
|---|
| 56 |  K PSX S PSXZ=0
 | 
|---|
| 57 |  F  S PSXZ=$O(^PSRX(PSXRX,4,PSXZ)) Q:'PSXZ  D
 | 
|---|
| 58 |  . S PSXD=$G(^PSRX(PSXRX,4,PSXZ,0))
 | 
|---|
| 59 |  . S FILL=$P(PSXD,U,3)
 | 
|---|
| 60 |  . S:FILL'="" PSX($P(PSXD,U,3))=$P(PSXD,U,4)_"^"_PSXZ   ; PSX(FILL)=STATUS^IEN
 | 
|---|
| 61 |  Q:'$D(PSX(PSXRFD))    ;last fill does not have entry in multiple
 | 
|---|
| 62 |  S PSXST=$P(PSX(PSXRFD),U,1),PSXFIEN=$P(PSX(PSXRFD),U,2)
 | 
|---|
| 63 |  I PSXST=0!(PSXST=2) D  Q
 | 
|---|
| 64 |  . K DA,DIE,DIC,DR S DIE="^PSRX(DA(1),4,",DA(1)=PSXRX,DA=PSXFIEN
 | 
|---|
| 65 |  . S DR="3////3;5////"_PSXSD_";8////"_$G(PSXREAS)
 | 
|---|
| 66 |  . L +^PSRX(DA(1),4,DA):600
 | 
|---|
| 67 |  . D ^DIE L -^PSRX(DA(1),4,DA) K DIC,DIK,DD,DO
 | 
|---|
| 68 |  I PSXST=1!(PSXST=3) D
 | 
|---|
| 69 |  . K DD,DO S X="",DIC="^PSRX("_PSXRX_",4,",DIC(0)="Z"
 | 
|---|
| 70 |  . S DIC("DR")=".01////"_$P(PSXD,U,1)_";1////"_$P(PSXD,U,2)_";2////"_$P(PSXD,U,3)_";3////3;5////"_PSXSD_";8////"_$G(PSXREAS)
 | 
|---|
| 71 |  . D FILE^DICN K DIC,DIK,DD,DO
 | 
|---|
| 72 |  Q
 | 
|---|
| 73 | ACT ;             adds activity info for CMOP Rx placed on suspense
 | 
|---|
| 74 |  I '$D(PSXRXF) S PSXRXF=0 F I=0:0 S I=$O(^PSRX(PSXRX,1,I)) Q:'I  S PSXRXF=I
 | 
|---|
| 75 |  S PSXIR=0 F PSXFDA=0:0 S PSXFDA=$O(^PSRX(PSXRX,"A",PSXFDA)) Q:'PSXFDA  S PSXIR=PSXFDA
 | 
|---|
| 76 |  S PSXIR=PSXIR+1,^PSRX(PSXRX,"A",0)="^52.3DA^"_PSXIR_"^"_PSXIR
 | 
|---|
| 77 |  D NOW^%DTC
 | 
|---|
| 78 |  I $G(PSXRXF)>5 S PSXRXF=PSXRXF+1
 | 
|---|
| 79 |  ;S ^PSRX(PSXRX,"A",PSXIR,0)=%_"^S^"_DUZ_"^"_PSXRXF_"^"_" RX Resuspended for CMOP Disaster Recovery until "_PSXLFD
 | 
|---|
| 80 |  S ^PSRX(PSXRX,"A",PSXIR,0)=%_"^S^"_DUZ_"^"_PSXRXF_"^"_" RX Resuspended for CMOP "_$G(PSXREAS)_" until "_PSXLFD
 | 
|---|
| 81 |  Q
 | 
|---|