[613] | 1 | YSCUP001 ;DALISC/LJA - Pt Move Utils: UPDATE Logic ;8/31/94 11:45
|
---|
| 2 | ;;5.01;MENTAL HEALTH;**2,11,20,29**;Dec 30, 1994
|
---|
| 3 | ;
|
---|
| 4 | UPDATE(MHNO,MOVNO) ; Using MH Inpt from ^TMP("YSPM",$J, AND YSMH data...
|
---|
| 5 | ; !!!!!!!!!!!!!!!!!! Programmer!!! No QUITting !!!!!!!!!!!!!!!!!!!
|
---|
| 6 | N MHIEN,MOVE,TIEN,WIEN,YSMH0,YSMH7
|
---|
| 7 | ;
|
---|
| 8 | ; Set "main" variables...
|
---|
| 9 | S YSACTS=1
|
---|
| 10 | S MHIEN=+$G(^TMP("YSMH",$J,+MHNO,0))
|
---|
| 11 | I MHIEN'>0 D QUIT ;->
|
---|
| 12 | . I '$D(ZTQUEUED),'$G(DGQUIET) W !,"Missing MH array entry..."
|
---|
| 13 | S YSMH0=$P($G(^TMP("YSMH",$J,+MHNO,0)),"~",2,99)
|
---|
| 14 | S YSMH7=$G(^TMP("YSMH",$J,+MHNO,7))
|
---|
| 15 | S MOVE=$G(^TMP("YSPM",$J,+MOVNO))
|
---|
| 16 | I YSMH0']""!(YSMH7']"")!(MOVE']"") D QUIT ;->
|
---|
| 17 | . I '$D(ZTQUEUED),'$G(DGQUIET) W !,"Missing required update variables..."
|
---|
| 18 | ;
|
---|
| 19 | ; ************************** Update XTMP ***************************
|
---|
| 20 | S X=$G(^XTMP($G(YSXTMP),"PRE0-UPD",+MHIEN)) S:X']"" ^XTMP(YSXTMP,"PRE0-UPD",+MHIEN)=$G(^YSG("INP",+MHIEN,0))
|
---|
| 21 | S X=$G(^XTMP($G(YSXTMP),"PRE7-UPD",+MHIEN)) S:X']"" ^XTMP(YSXTMP,"PRE7-UPD",+MHIEN)=$G(^YSG("INP",+MHIEN,7))
|
---|
| 22 | ;
|
---|
| 23 | ; ************************* AIN AOUT AWC CP ************************
|
---|
| 24 | ; Kill AOUT, AWC, and CP xrefs...
|
---|
| 25 | ; They will be rebuilt later, if appropriate.
|
---|
| 26 | K ^YSG("INP","AIN",9999999-$P(YSMH0,U,3),+MHIEN)
|
---|
| 27 | K ^YSG("INP","AOUT",9999999-$P(YSMH7,U,2),+MHIEN)
|
---|
| 28 | K ^YSG("INP","AWC",+$P(YSMH7,U),+$P(YSMH7,U,4),+MHIEN)
|
---|
| 29 | K ^YSG("INP","CP",+YSDFN)
|
---|
| 30 | ;
|
---|
| 31 | ; NEVER TRANSFERRED & this is NOT a DISCHARGE, Clear p(2)
|
---|
| 32 | I $G(YSLTRSF)']"",$P(MOVE,U,4)'=3 D
|
---|
| 33 | . S $P(YSMH7,U,2)=""
|
---|
| 34 | . S X=+$P(YSMH7,U,3) S:X>0 $P(YSMH7,U,3)=+X_"~"
|
---|
| 35 | ;
|
---|
| 36 | ; If First to MH movement's Date is valid, reset UNIT ENTRY DATE
|
---|
| 37 | I +$P(YSFMTMH,U,6)?7N.E S $P(YSMH0,U,3)=+$P(YSFMTMH,U,6)
|
---|
| 38 | ;
|
---|
| 39 | ; If First to MH movement's IEN is valid, reset ADMISSION POINTER p(1)
|
---|
| 40 | I +$P(YSFMTMH,U,5)>0 D
|
---|
| 41 | . S X=$P(YSMH7,U,3),$P(X,"~")=+$P(YSFMTMH,U,5),$P(YSMH7,U,3)=X
|
---|
| 42 | ;
|
---|
| 43 | ; If Last Movement out of MH ward Date is valid, reset DC/Trsf Date
|
---|
| 44 | I +$P(YSLMOMH,U,6)?7N.E S $P(YSMH7,U,2)=+$P(YSMH7,U,2)
|
---|
| 45 | ;
|
---|
| 46 | ; If Last Movement out of MH ward IEN is valid, reset ADMISSION POINTER p(2)
|
---|
| 47 | I +$P(YSLMOMH,U,5)>0 D
|
---|
| 48 | . S X=$P(YSMH7,U,3),$P(X,"~",2)=+$P(YSLMOMH,U,5),$P(YSMH7,U,3)=X
|
---|
| 49 | ;
|
---|
| 50 | ; ***** Patient is on MH ward, and is being DISCHARGED...
|
---|
| 51 | I +MOVE>0,$P(MOVE,U,4)=3 D
|
---|
| 52 | . S $P(YSMH7,U,2)=$P(MOVE,U,6) ;Discharge Date
|
---|
| 53 | . S $P(YSMH7,U,4)="" ;Remove team
|
---|
| 54 | . S X=$P(YSMH7,U,3),$P(YSMH7,U,3)=+X_"~"_$P(MOVE,U,5) ;Admit/DC Pointer
|
---|
| 55 | ;
|
---|
| 56 | ; ***** Patient is on MH ward, is is NOT being DISCHARGED *****
|
---|
| 57 | I +MOVE>0,$P(MOVE,U,4)'=3 D
|
---|
| 58 | .
|
---|
| 59 | . ; Update Ward and Team on ^(7)
|
---|
| 60 | . S X=+$P(MOVE,U,2),$P(YSMH7,U)=$S(X>0:+X,1:"")
|
---|
| 61 | . S X=+$P(MOVE,U,3),$P(YSMH7,U,4)=$S(X>0:+X,1:"")
|
---|
| 62 | . S X=+$P(MOVE,U,3),$P(YSMH0,U,4)=$S(X>0:+X,1:"")
|
---|
| 63 | . D TEAMHX
|
---|
| 64 | .
|
---|
| 65 | . ; Admit~DC/Transfer p(3)
|
---|
| 66 | . ; If pt is on a MH ward, p(3)'s 2nd piece should ALWAYS be null...
|
---|
| 67 | . ; (Strip off dc/Tfr movement.)
|
---|
| 68 | . S X=$P(YSMH7,U,3) S $P(YSMH7,U,3)=$S(+X>0:+X_"~",1:"~")
|
---|
| 69 | .
|
---|
| 70 | . ; If pt is on a MH ward, p(2) should never be filled in...
|
---|
| 71 | . S $P(YSMH7,U,2)=""
|
---|
| 72 | ;
|
---|
| 73 | ; ************ Patient is NOT on a MH ward ************
|
---|
| 74 | I +MOVE'>0,$P(MOVE,U,4)>0 D
|
---|
| 75 | . S $P(YSMH7,U,4)=""
|
---|
| 76 | .
|
---|
| 77 | . ; ==> No DC/Trf Date p(2)...
|
---|
| 78 | . ; Movement is a DC/Transfer, &
|
---|
| 79 | . ; DC/Trf Date available, so ... <==
|
---|
| 80 | . I $P(YSMH7,U,2)']"",23[$P(MOVE,U,4),$P(MOVE,U,6)?7N.E S $P(YSMH7,U,2)=$P(MOVE,U,6)
|
---|
| 81 | .
|
---|
| 82 | . ; Check whether Movement Off MH ward Date/Time has been edited.
|
---|
| 83 | . ; If so, reset Date/Time...
|
---|
| 84 | . D
|
---|
| 85 | . . QUIT:$P(YSMH7,U,2)']"" ;-> Not transfer out or DC recorded yet...
|
---|
| 86 | . . QUIT:$L(YSLMOMH,"~")'=2 ;-> No Last Move off MH Ward recorded...
|
---|
| 87 | . . QUIT:$P(YSMH7,U,2)=$P(YSLMOMH,U,6) ;-> No change of DC/Trsf Date...
|
---|
| 88 | . . S $P(YSMH7,U,2)=$P(YSLMOMH,U,6)
|
---|
| 89 | .
|
---|
| 90 | . ; Admit/DC-Tfr IENs
|
---|
| 91 | . S YSX=+$P(YSMH7,U,3) ; Strip DC/Transfer movement
|
---|
| 92 | . S YSY=+$P($P(YSMH7,U,3),"~",2) ;DC/Transfer Movement...
|
---|
| 93 | . S YSY=+$S(+$P(YSLMOMH,U,5)<1:+$P(MOVE,U,5),$P(YSLMOMH,U,5)'=$P(MOVE,U,5):+$P(YSLMOMH,U,5),1:+$P(MOVE,U,5))
|
---|
| 94 | . S $P(YSMH7,U,3)=+YSX_"~"_YSY
|
---|
| 95 | ;
|
---|
| 96 | ; First move to MH ward Date/Time edited?
|
---|
| 97 | S YSMHDT=+$P($G(YSFMTMH),U,6) ;Date/Time of 1st to MH move...
|
---|
| 98 | I YSMHDT?7N.E&(+YSMH0'=+YSMHDT) S $P(YSMH0,U,3)=+YSMHDT
|
---|
| 99 | ;
|
---|
| 100 | ; 0 node sets...
|
---|
| 101 | S ^YSG("INP",+MHIEN,0)=YSMH0
|
---|
| 102 | ;
|
---|
| 103 | ; ^XTMP sets...
|
---|
| 104 | S ^XTMP(YSXTMP,"POST0-UPD",+MHIEN)=YSMH0
|
---|
| 105 | S ^XTMP(YSXTMP,"POST7-UPD",+MHIEN)=YSMH7
|
---|
| 106 | ;
|
---|
| 107 | ; 7 node sets...
|
---|
| 108 | S ^YSG("INP",+MHIEN,7)=YSMH7
|
---|
| 109 | ;
|
---|
| 110 | ; Xref SETS...
|
---|
| 111 | ;
|
---|
| 112 | ; Active Inpatient?
|
---|
| 113 | I $P(YSMH7,U)>0&($P(YSMH7,U,4)>0) D
|
---|
| 114 | . S ^YSG("INP","CP",+YSDFN,+MHIEN)=""
|
---|
| 115 | . S ^YSG("INP","AWC",+$P(YSMH7,U),+$P(YSMH7,U,4),+MHIEN)=""
|
---|
| 116 | ;
|
---|
| 117 | ; Discharged or Transferred?
|
---|
| 118 | I $P(YSMH7,U,2)]"" D
|
---|
| 119 | . S ^YSG("INP","AOUT",9999999-$P(YSMH7,U,2),+MHIEN)=""
|
---|
| 120 | ;
|
---|
| 121 | ; Into MH ward AIN xref...
|
---|
| 122 | S X=+$P(YSMH0,U,3) I X?7N.E D
|
---|
| 123 | . S ^YSG("INP","AIN",9999999-X,+MHIEN)=""
|
---|
| 124 | ; !!!!!!!!!!!!!!!!! Programmer!!! You can QUIT now !!!!!!!!!!!!!!!!!
|
---|
| 125 | ;
|
---|
| 126 | QUIT
|
---|
| 127 | ;
|
---|
| 128 | TEAMHX ; Update the multiple field PAST TEAMS
|
---|
| 129 | ;
|
---|
| 130 | S:'$D(^YSG("INP",+MHIEN,6,0)) ^YSG("INP",+MHIEN,6,0)="^618.419P^0^0"
|
---|
| 131 | L +^YSG("INP",+MHIEN,6):999999 Q:$T
|
---|
| 132 | S YSN=$P(^YSG("INP",+MHIEN,6,0),U,3)+1
|
---|
| 133 | I (YSN>1),$D(^YSG("INP",+MHIEN,6,YSN-1)),(X=+^YSG("INP",+MHIEN,6,YSN-1,0)) S X2=^YSG("INP",+MHIEN,6,YSN-1,0),W1=+^YSG("INP",+MHIEN,7),^YSG("INP","AST",9999999-$P(X2,U,2),W1,X,+MHIEN)="" L -^YSG("INP",+MHIEN,6,0) Q
|
---|
| 134 | S ^YSG("INP",+MHIEN,6,0)=$P(^YSG("INP",+MHIEN,6,0),U,1,2)_U_YSN_U_($P(^YSG("INP",+MHIEN,6,0),U,4)+1) L -^YSG("INP",+MHIEN,6)
|
---|
| 135 | S W1=+^YSG("INP",+MHIEN,7),YSU=X,X="NOW",%DT="T" D ^%DT S X=YSU,YSNOW=9999999-Y,^YSG("INP","AST",YSNOW,W1,X,+MHIEN)="" K YSU,YSNOW
|
---|
| 136 | S ^YSG("INP",+MHIEN,6,YSN,0)=X_U_Y_U_DUZ,^YSG("INP",+MHIEN,6,"B",X,YSN)=""
|
---|
| 137 | Q:'$D(^YSG("SUB",X,1))
|
---|
| 138 | Q:'$P(^YSG("SUB",X,1),U,4) S YSTM8="" F ZZ=1:1 Q:'$D(^YSG("CEN",W1,"ROT")) S YSTM7=$P(^YSG("CEN",W1,"ROT"),U,ZZ) Q:YSTM7'?1N.N S:YSTM7'=X YSTM8=YSTM8_YSTM7_U
|
---|
| 139 | S ^YSG("CEN",W1,"ROT")=YSTM8_X
|
---|
| 140 | ;
|
---|
| 141 | QUIT
|
---|
| 142 | ;
|
---|
| 143 | EOR ;YSCUP001 - Pt Move Utils: UPDATE Logic ;8/31/94 11:45
|
---|