PSGP ;BIR/CML3-PATIENT LOOK-UP ;15 Apr 98 / 9:05 AM
;;5.0;INPATIENT MEDICATIONS ;**10,53,111,181,267,275,279**;16 DEC 97;Build 150
;
; Reference to ^PS(55 is supported by DBIA 2191.
; Reference to ^SDAMA203 is supported by DBIA 4133.
;
ENDPT ; get any patient
N HIT
K DIC,PSGP,Y W !!,"Select "_$S($D(PSGDICA):PSGDICA_" ",1:"")_"PATIENT: " R X:DTIME S:X["^" PSJSTOP=1 I "^"[X S (Y,PSGP)=-1 G DONE
D EN^PSJDPT
I Y'>0 G ENDPT
K DIC
;
CHK ;
;Clean up arrays use in order checks
K PSJEXCPT,PSJOCER
S (DFN,PSGP)=+Y,VA200=1 D INP^VADPT
I VAIN(4) S PSJPCAF=1_"^"_VAIN(1),PSJPWD=+VAIN(4),PSJPWDN=$P(VAIN(4),"^",2),PSJPTS=+VAIN(3),PSJPTSP=+VAIN(2),PSJPRB=VAIN(5),PSJPAD=+VAIN(7),PSJPDX=VAIN(9),PSJPTD=$P($G(^PS(55,PSGP,5.1)),"^",4),PSJPDD="" G CNV
S PSJPCAF="",VAIP("D")="L" D IN5^VADPT I 'VAIP(13,1) W $C(7),!!?3,"PATIENT HAS NEVER BEEN ADMITTED." D ENCONT^PSJP I '(%=1) G ENDPT
S PSJPAD=VAIP(13,1),PSGID=+VAIP(3),X=+VAIP(4)=12!(+VAIP(4)=38),PSGOD=$$ENDTC^PSGMI(PSGID)
I $G(PSGOD) W $C(7),!!?3,"PATIENT IS FOUND TO BE D",$P("ISCHARG^ECEAS","^",X+1),"ED AS OF ",PSGOD,"." D ENCONT^PSJP I '(%=1) G ENDPT
S PSJPAD=VAIP(13,1),PSJPWD=+VAIP(5),PSJPWDN=$P(VAIP(5),"^",2),PSJPRB=$P(VAIP(6),"^",2),PSJPTSP=+VAIP(7),PSJPTS=+VAIP(8),PSJPDX=VAIP(9),PSJPTD="",PSJPDD=PSGID_"^"_PSGOD S:X PSJPDD=PSJPDD_"^1"
;
CNV ;
I $G(DFN) I '$$AA^PSJDPT(DFN) S Y=-1 G ENDPT
D DEM^VADPT,PID^VADPT,HTWT^PSJAC(DFN)
S PSGP(0)=VADM(1),PSJPSSN=VADM(2),PSJPDOB=+VADM(3),PSJPAGE=VADM(4),PSJPSEX=$S(VADM(5)]"":VADM(5),1:"?^____"),PSJPPID=VA("PID"),PSJPBID=VA("BID")
F X="PSJPAD","PSJPDOB","PSJPTD" I +@X S $P(@X,"^",2)=$$ENDTC^PSGMI(+@X)
;
WP ; ward parameters
S PSJSYSW0="",PSJSYSW=0 I PSJPWD S PSJSYSW=+$O(^PS(59.6,"B",PSJPWD,0)) I PSJSYSW S PSJSYSW0=$G(^PS(59.6,PSJSYSW,0))
S PSJSYSL="",X=$P(PSJSYSU,";",3)>1,PSJSYSL=$S(X=0:$P(PSJSYSW0,"^",12),1:$P(PSJSYSW0,"^",16))
S PSJDCEXP=$$RECDCEXP^PSJP()
I PSJSYSL D
.S:X X='$P(PSJSYSP0,"^",10) S IOP=$S($P(PSJSYSP0,"^",13)]"":$P(PSJSYSP0,"^",13),$P(PSJSYSW0,"^",19+X)]"":$P(PSJSYSW0,"^",19+X),1:"") I IOP]"" D
..S IOP="`"_IOP K %ZIS S %ZIS="NQ" D ^%ZIS S:'POP $P(PSJSYSL,"^",2,3)=ION_"^"_IO D ^%ZISC
;
D CLINIC^PSJAC
DONE ;
K DA,DIC,NB,ND,NS,PSGID,PSGOD,VA200,VADM,VAIN,VAIP,VAMT,X,Y(0),Y(0,0) Q
;
COP ;check for appointments in clinics that allowed inpatient orders
S HIT=0 Q:'$$PATCH^XPDUTL("SD*5.3*285")
N SQ,A,VAIP,X,PSJF
D IN5^VADPT
D NOW^%DTC S (PSJF,VASD("F"))=$P(%,".")-1
D SDA^VADPT
S SQ=0 F S SQ=$O(^UTILITY("VASD",$J,SQ)) Q:'SQ S A=^(SQ,"I") I $$SDIMO^SDAMA203($P(A,"^",2),DFN)>0 S HIT=1 Q
I $O(^PS(55,DFN,5,"AUN",PSJF))!($O(^PS(55,DFN,"IV","AIN",PSJF))) S HIT=1
I HIT D ENCONT^PSJP
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSGP 2692 printed Dec 13, 2024@02:02:37 Page 2
PSGP ;BIR/CML3-PATIENT LOOK-UP ;15 Apr 98 / 9:05 AM
+1 ;;5.0;INPATIENT MEDICATIONS ;**10,53,111,181,267,275,279**;16 DEC 97;Build 150
+2 ;
+3 ; Reference to ^PS(55 is supported by DBIA 2191.
+4 ; Reference to ^SDAMA203 is supported by DBIA 4133.
+5 ;
ENDPT ; get any patient
+1 NEW HIT
+2 KILL DIC,PSGP,Y
WRITE !!,"Select "_$SELECT($DATA(PSGDICA):PSGDICA_" ",1:"")_"PATIENT: "
READ X:DTIME
if X["^"
SET PSJSTOP=1
IF "^"[X
SET (Y,PSGP)=-1
GOTO DONE
+3 DO EN^PSJDPT
+4 IF Y'>0
GOTO ENDPT
+5 KILL DIC
+6 ;
CHK ;
+1 ;Clean up arrays use in order checks
+2 KILL PSJEXCPT,PSJOCER
+3 SET (DFN,PSGP)=+Y
SET VA200=1
DO INP^VADPT
+4 IF VAIN(4)
SET PSJPCAF=1_"^"_VAIN(1)
SET PSJPWD=+VAIN(4)
SET PSJPWDN=$PIECE(VAIN(4),"^",2)
SET PSJPTS=+VAIN(3)
SET PSJPTSP=+VAIN(2)
SET PSJPRB=VAIN(5)
SET PSJPAD=+VAIN(7)
SET PSJPDX=VAIN(9)
SET PSJPTD=$PIECE($GET(^PS(55,PSGP,5.1)),"^",4)
SET PSJPDD=""
GOTO CNV
+5 SET PSJPCAF=""
SET VAIP("D")="L"
DO IN5^VADPT
IF 'VAIP(13,1)
WRITE $CHAR(7),!!?3,"PATIENT HAS NEVER BEEN ADMITTED."
DO ENCONT^PSJP
IF '(%=1)
GOTO ENDPT
+6 SET PSJPAD=VAIP(13,1)
SET PSGID=+VAIP(3)
SET X=+VAIP(4)=12!(+VAIP(4)=38)
SET PSGOD=$$ENDTC^PSGMI(PSGID)
+7 IF $GET(PSGOD)
WRITE $CHAR(7),!!?3,"PATIENT IS FOUND TO BE D",$PIECE("ISCHARG^ECEAS","^",X+1),"ED AS OF ",PSGOD,"."
DO ENCONT^PSJP
IF '(%=1)
GOTO ENDPT
+8 SET PSJPAD=VAIP(13,1)
SET PSJPWD=+VAIP(5)
SET PSJPWDN=$PIECE(VAIP(5),"^",2)
SET PSJPRB=$PIECE(VAIP(6),"^",2)
SET PSJPTSP=+VAIP(7)
SET PSJPTS=+VAIP(8)
SET PSJPDX=VAIP(9)
SET PSJPTD=""
SET PSJPDD=PSGID_"^"_PSGOD
if X
SET PSJPDD=PSJPDD_"^1"
+9 ;
CNV ;
+1 IF $GET(DFN)
IF '$$AA^PSJDPT(DFN)
SET Y=-1
GOTO ENDPT
+2 DO DEM^VADPT
DO PID^VADPT
DO HTWT^PSJAC(DFN)
+3 SET PSGP(0)=VADM(1)
SET PSJPSSN=VADM(2)
SET PSJPDOB=+VADM(3)
SET PSJPAGE=VADM(4)
SET PSJPSEX=$SELECT(VADM(5)]"":VADM(5),1:"?^____")
SET PSJPPID=VA("PID")
SET PSJPBID=VA("BID")
+4 FOR X="PSJPAD","PSJPDOB","PSJPTD"
IF +@X
SET $PIECE(@X,"^",2)=$$ENDTC^PSGMI(+@X)
+5 ;
WP ; ward parameters
+1 SET PSJSYSW0=""
SET PSJSYSW=0
IF PSJPWD
SET PSJSYSW=+$ORDER(^PS(59.6,"B",PSJPWD,0))
IF PSJSYSW
SET PSJSYSW0=$GET(^PS(59.6,PSJSYSW,0))
+2 SET PSJSYSL=""
SET X=$PIECE(PSJSYSU,";",3)>1
SET PSJSYSL=$SELECT(X=0:$PIECE(PSJSYSW0,"^",12),1:$PIECE(PSJSYSW0,"^",16))
+3 SET PSJDCEXP=$$RECDCEXP^PSJP()
+4 IF PSJSYSL
Begin DoDot:1
+5 if X
SET X='$PIECE(PSJSYSP0,"^",10)
SET IOP=$SELECT($PIECE(PSJSYSP0,"^",13)]"":$PIECE(PSJSYSP0,"^",13),$PIECE(PSJSYSW0,"^",19+X)]"":$PIECE(PSJSYSW0,"^",19+X),1:"")
IF IOP]""
Begin DoDot:2
+6 SET IOP="`"_IOP
KILL %ZIS
SET %ZIS="NQ"
DO ^%ZIS
if 'POP
SET $PIECE(PSJSYSL,"^",2,3)=ION_"^"_IO
DO ^%ZISC
End DoDot:2
End DoDot:1
+7 ;
+8 DO CLINIC^PSJAC
DONE ;
+1 KILL DA,DIC,NB,ND,NS,PSGID,PSGOD,VA200,VADM,VAIN,VAIP,VAMT,X,Y(0),Y(0,0)
QUIT
+2 ;
COP ;check for appointments in clinics that allowed inpatient orders
+1 SET HIT=0
if '$$PATCH^XPDUTL("SD*5.3*285")
QUIT
+2 NEW SQ,A,VAIP,X,PSJF
+3 DO IN5^VADPT
+4 DO NOW^%DTC
SET (PSJF,VASD("F"))=$PIECE(%,".")-1
+5 DO SDA^VADPT
+6 SET SQ=0
FOR
SET SQ=$ORDER(^UTILITY("VASD",$JOB,SQ))
if 'SQ
QUIT
SET A=^(SQ,"I")
IF $$SDIMO^SDAMA203($PIECE(A,"^",2),DFN)>0
SET HIT=1
QUIT
+7 IF $ORDER(^PS(55,DFN,5,"AUN",PSJF))!($ORDER(^PS(55,DFN,"IV","AIN",PSJF)))
SET HIT=1
+8 IF HIT
DO ENCONT^PSJP
+9 QUIT