| 1 | PSIVACT ;BIR/PR,MLM-UPDATE ORDER STATUS AFTER PATIENT SELECTION ;16 Jul 98 / 12:51 PM
 | 
|---|
| 2 |  ;;5.0; INPATIENT MEDICATIONS ;**15,38,58,110**;16 DEC 97
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; Reference to ^PS(55 is supported by DBIA 2191
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 | ENNA ; Inpatient entry point.
 | 
|---|
| 7 |  D:$D(XRTL) T0^%ZOSV
 | 
|---|
| 8 |  D NOW^%DTC S PSFDT=%,PS=0 D L D:'$G(PSIVRD) PEND
 | 
|---|
| 9 |  I $D(XRT0) S XRTN="PSIVACT" D T1^%ZOSV
 | 
|---|
| 10 |  Q
 | 
|---|
| 11 |  ;
 | 
|---|
| 12 | ENNB ; Ask profile type, gather orders.
 | 
|---|
| 13 |  D NOW^%DTC S PSFDT=%,PS=0 K ^TMP("PSIV",$J),^TMP("PSJPRO",$J)
 | 
|---|
| 14 |  S PSIVNV=$S(+PSJSYSU=1:"ANIV",+PSJSYSU=3:"APIV",1:"")
 | 
|---|
| 15 |  ;D @P("PT") D:PSIVNV]"" NVACT D:'$G(PSIVRD) PEND
 | 
|---|
| 16 |  D @P("PT") D:'$G(PSIVRD) PEND
 | 
|---|
| 17 |  I P("PT")="L",$D(XRT0) S XRTN="PSIVACT" D T1^%ZOSV
 | 
|---|
| 18 |  Q
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 | L ; Long profile
 | 
|---|
| 21 |  S:'$D(PSJSYSU) PSJSYSU=""
 | 
|---|
| 22 |  F ON=0:0 K Y S ON=$O(^PS(55,DFN,"IV",+ON)) Q:'ON  D SETP
 | 
|---|
| 23 |  Q
 | 
|---|
| 24 |  ;
 | 
|---|
| 25 | S ; Short profile.
 | 
|---|
| 26 |  F PSIVDT=PSFDT:0 S PSIVDT=$O(^PS(55,DFN,"IV","AIS",PSIVDT)) Q:'PSIVDT  F ON=0:0 S ON=$O(^PS(55,DFN,"IV","AIS",PSIVDT,+ON)) Q:'ON  S ON=ON_"V",P(17)=$P($G(^PS(55,DFN,"IV",+ON,0)),U,17) D ACTO
 | 
|---|
| 27 |  I +PSJSYSU=3 S PSIVNV="APIV" D NVACT K PSIVNV
 | 
|---|
| 28 |  Q
 | 
|---|
| 29 |  ;
 | 
|---|
| 30 | NVACT ; Non-verified but have active status
 | 
|---|
| 31 |  NEW ON
 | 
|---|
| 32 |  F ON=0:0 S ON=$O(^PS(55,PSIVNV,DFN,ON)) Q:'ON  D
 | 
|---|
| 33 |  . I $P($G(^PS(55,DFN,"IV",ON,0)),U,17)="E",($P($G(^(.2)),U,4)="D") S ^TMP("PSIV",$J,"A",9999999999-ON)=""
 | 
|---|
| 34 |  Q
 | 
|---|
| 35 |  ;
 | 
|---|
| 36 | PEND ; Get pending and non-verified orders from 53.1
 | 
|---|
| 37 |  N PSJCOM,PSJCOM1 S (PSJCOM,PSJCOM1)=0
 | 
|---|
| 38 |  F ON=0:0 S ON=$O(^PS(53.1,"AS","P",DFN,ON)) Q:'ON  D  S PSJCOM1=PSJCOM
 | 
|---|
| 39 |  . NEW X S X=$P($G(^PS(53.1,ON,.2)),U,4),X=$S(X="S":1,X="A":2,X="R":3,X="P":4,1:5)
 | 
|---|
| 40 |  . S PSJCOM=$P($G(^PS(53.1,ON,.2)),U,8) I PSJCOM Q:'$$COMCHK^PSJO1(PSJCOM,2)  Q:PSJCOM=PSJCOM1
 | 
|---|
| 41 |  . I $G(^PS(53.1,ON,0)),$P(^PS(53.1,ON,0),U,4)'="U" S ^TMP("PSIV",$J,$S('PSJCOM:"P",1:"PD"),X_9999999999-ON)=""
 | 
|---|
| 42 |  F ON=0:0 S ON=$O(^PS(53.1,"AS","N",DFN,ON)) Q:'ON  D  S PSJCOM1=PSJCOM
 | 
|---|
| 43 |  . NEW X S X=$P($G(^PS(53.1,ON,.2)),U,4),X=$S(X="S":1,X="A":2,X="R":3,X="P":4,1:5)
 | 
|---|
| 44 |  . S PSJCOM=$P($G(^PS(53.1,ON,.2)),U,8) I PSJCOM Q:'$$COMCHK^PSJO1(PSJCOM,2)  Q:PSJCOM=PSJCOM1
 | 
|---|
| 45 |  . I $G(^PS(53.1,ON,0)),$P(^PS(53.1,ON,0),U,4)'="U" S ^TMP("PSIV",$J,$S('PSJCOM:"N",1:"ND"),X_9999999999-ON)=""
 | 
|---|
| 46 |  .; S:$P(^PS(53.1,ON,0),U,4)'="U" ^TMP("PSIV",$J,"P",X_9999999999-ON)=""
 | 
|---|
| 47 |  ;
 | 
|---|
| 48 | QUIT ; Kill and exit.
 | 
|---|
| 49 |  K PSIVCWD,PSIVFLAG,PSIVWD,PSDFN,PSON1,PSFDT,YHOLD,JJ,XHOLD
 | 
|---|
| 50 |  Q
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 | SETP ; Get partial P array,
 | 
|---|
| 53 |  S ON=ON_"V",Y=$G(^PS(55,DFN,"IV",+ON,0)) F X=2,3,17,21 S P(X)=$P(Y,U,X)
 | 
|---|
| 54 |  S P(2)=+P(2),P(3)=+P(3) S Y(P(2))="",Y(P(3))=""
 | 
|---|
| 55 |  I P(2),P(3),P(17)'="P" D CHK
 | 
|---|
| 56 |  Q
 | 
|---|
| 57 |  ;
 | 
|---|
| 58 | CHK ; Check if order is active or expired and save accordingly.
 | 
|---|
| 59 |  S PS=PS+1 I P(17)="H" S ^TMP("PSIV",$J,"A",9999999999-ON)="" Q
 | 
|---|
| 60 |  I $O(Y(PSFDT))=P(3) D ACTO Q
 | 
|---|
| 61 |  I $O(Y(PSFDT))="" D NACTO Q
 | 
|---|
| 62 |  S:"ARO"[P(17) ^TMP("PSIV",$J,"A",9999999999-ON)="" S:"ED"[P(17) ^TMP("PSIV",$J,"X",9999999999-ON)="" S:"E"[P(17) PSIVREA="A",$P(^PS(55,DFN,"IV",+ON,0),U,17)="A",PS("A",9999999999-ON)=""
 | 
|---|
| 63 |  Q
 | 
|---|
| 64 |  ;
 | 
|---|
| 65 | ACTO ; Active orders
 | 
|---|
| 66 |  I "AE"[P(17) S ^TMP("PSIV",$J,"A",9999999999-ON)="" S:P(17)="E" $P(^PS(55,DFN,"IV",+ON,0),U,17)="A" Q
 | 
|---|
| 67 |  I "HOR"[P(17) S ^TMP("PSIV",$J,"A",9999999999-ON)="" Q
 | 
|---|
| 68 |  I "D"[P(17) S ^TMP("PSIV",$J,"X",9999999999-ON)=""
 | 
|---|
| 69 |  Q
 | 
|---|
| 70 |  ;
 | 
|---|
| 71 | NACTO ; Inactive orders
 | 
|---|
| 72 |  ;I "AER"[P(17) S ^TMP("PSIV",$J,"X",9999999999-ON)="" I "AR"[P(17) S $P(^PS(55,DFN,"IV",+ON,0),U,17)="E" D EXPIR^PSIVOE Q
 | 
|---|
| 73 |  I "AER"[P(17) D
 | 
|---|
| 74 |  . Q:$P(^PS(55,DFN,"IV",+ON,0),U,3)=""
 | 
|---|
| 75 |  . I +PSJSYSU=3,($P($G(^PS(55,DFN,"IV",+ON,.2)),U,4)="D"),'+$P($G(^(4)),U,4) S ^TMP("PSIV",$J,"A",9999999999-ON)="" Q
 | 
|---|
| 76 |  . S ^TMP("PSIV",$J,"X",9999999999-ON)=""
 | 
|---|
| 77 |  I "AR"[P(17) S $P(^PS(55,DFN,"IV",+ON,0),U,17)="E" D EXPIR^PSIVOE
 | 
|---|
| 78 |  I "OD"[P(17) S ^TMP("PSIV",$J,"X",9999999999-ON)=""
 | 
|---|
| 79 |  Q
 | 
|---|
| 80 |  ;
 | 
|---|
| 81 | DCOR ; Auto-cancel IV orders
 | 
|---|
| 82 |  ;NEED TO NEW VARIABLES LATER.
 | 
|---|
| 83 |  NEW DA,DIR,DG,ON,ON55,P,PSIVAC,PSIVACT,PSIVLN,PSIVREA,PSIVRES,PSGALO,PSGP,PSJDCDT,PSJIVDCF,PSJIVON,PSJIVORF,PSJORF,VA,VADM,VAERR
 | 
|---|
| 84 |  S PSGP=DFN,PSIVRES="Auto DC due to Surgery Package"
 | 
|---|
| 85 |  D NOW^%DTC S PSJDCDT=+%
 | 
|---|
| 86 |  D ENIV^PSJADT0
 | 
|---|
| 87 |  Q
 | 
|---|