PSGTCTD ;BIR/CML3-SHOW TOTAL COST TO DATE OF PATIENTS ; 15 May 98 / 9:26 AM
;;5.0; INPATIENT MEDICATIONS ;**3**;16 DEC 97
START ;
D ENCV^PSGSETU I '$D(XQUIT) S PSGSSH="TCR",PSJACNWP=1,(PSGWG,PSGWD,PSGPAT)=0 D ^PSGSEL I "^"'[PSGSS D @PSGSS I +Y>0 D DEV I 'POP,'$D(IO("Q")) D ENQ,^%ZISC
;
DONE ;
D ENKV^PSGSETU K AMT,CNTR,COST,DRG,DRGN,LN2,ND,PSJJORD,PSGDICA,PSGP,PSGPAT,PSGPN,PSGSS,PSGSSH,PSGWD,PSGWDN,PSGWG,PSN,SD,ZTOUT Q
;
ENQ ;
D NOW^%DTC S PSGDT=%,DT=$P(%,".") K ^TMP("PSG",$J) D @("G"_PSGSS),^PSGTCTD0
K ^TMP("PSG",$J) Q
;
GG ;
F PSGWD=0:0 S PSGWD=$O(^PS(57.5,"AC",PSGWG,PSGWD)) Q:'PSGWD D GW
Q
;
GW ;
I $D(^DIC(42,PSGWD,0)),$P(^(0),"^")]"" S PSGWDN=$P(^(0),"^") F PSGP=0:0 S PSGP=$O(^DPT("CN",PSGWDN,PSGP)) Q:'PSGP D PAT
Q
;
GP ;
F PSGP=0:0 S PSGP=$O(PSGPAT(PSGP)) Q:'PSGP D PAT
Q
;
PAT ;
S COST=0 D ^PSJAC S PSGPN=$S($P(PSGP(0),"^")]"":$P(PSGP(0),"^"),1:PSGP)_"^"_PSGP,PSN=$E($P(PSJPSSN,"^"),6,10)
F SD=+PSJPAD:0 S SD=$O(^PS(55,PSGP,5,"AUS",SD)) Q:'SD F PSJJORD=0:0 S PSJJORD=$O(^PS(55,PSGP,5,"AUS",SD,PSJJORD)) Q:'PSJJORD D ADD
S:$D(^TMP("PSG",$J,PSGPN)) ^(PSGPN)=$P(PSJPAD,"^",2)_"^"_PSN_"^"_PSJPDX Q
;
ADD ;
N X F X=0:0 S X=$O(^PS(55,PSGP,5,PSJJORD,1,X)) Q:'X D
.; naked ref below refers to line above
.S ND=^(X,0),DRG=+ND,DRGN=$G(^PSDRUG(DRG,0)),DRGN=$S($P(DRGN,"^")]"":$P(DRGN,"^"),1:DRG)_$S('$P(DRGN,"^",9):"",1:"^1"),DRG=+$P($G(^(660)),"^",6)
.S AMT=$P(ND,"^",6)+$P(ND,"^",10)+$P(ND,"^",12)-$P(ND,"^",7) I DRG*AMT S ND=$G(^TMP("PSG",$J,PSGPN,DRGN)),^(DRGN)=+ND+AMT_"^"_(DRG*AMT+$P(ND,"^",2))
Q
;
G ;
S DIC="^PS(57.5,",DIC(0)="QEAMI",DIC("A")="Select WARD GROUP: " W ! D ^DIC K DIC S PSGWG=+Y Q
W ;
S DIC="^DIC(42,",DIC(0)="QEAMI",DIC("A")="Select WARD: " W ! D ^DIC K DIC S PSGWD=+Y Q
P ;
K PSGPAT S PSGPAT=0 F CNTR=1:1 S:CNTR>1 PSGDICA="another" D ENDPT^PSGP Q:PSGP'>0 S PSGPAT(PSGP)="",PSGPAT=PSGP
S Y=PSGPAT Q
;
DEV ;
K ZTSAVE S PSGTIR="ENQ^PSGTCTD",ZTDESC="TOTAL COST REPORT" F X="PSGSS","PSGWG","PSGWD","PSGPAT(" S ZTSAVE(X)=""
D ENDEV^PSGTI Q
PSGTCTD ;BIR/CML3-SHOW TOTAL COST TO DATE OF PATIENTS ; 15 May 98 / 9:26 AM
+1 ;;5.0; INPATIENT MEDICATIONS ;**3**;16 DEC 97
START ;
+1 DO ENCV^PSGSETU
IF '$DATA(XQUIT)
SET PSGSSH="TCR"
SET PSJACNWP=1
SET (PSGWG,PSGWD,PSGPAT)=0
DO ^PSGSEL
IF "^"'[PSGSS
DO @PSGSS
IF +Y>0
DO DEV
IF 'POP
IF '$DATA(IO("Q"))
DO ENQ
DO ^%ZISC
+2 ;
DONE ;
+1 DO ENKV^PSGSETU
KILL AMT,CNTR,COST,DRG,DRGN,LN2,ND,PSJJORD,PSGDICA,PSGP,PSGPAT,PSGPN,PSGSS,PSGSSH,PSGWD,PSGWDN,PSGWG,PSN,SD,ZTOUT
QUIT
+2 ;
ENQ ;
+1 DO NOW^%DTC
SET PSGDT=%
SET DT=$PIECE(%,".")
KILL ^TMP("PSG",$JOB)
DO @("G"_PSGSS)
DO ^PSGTCTD0
+2 KILL ^TMP("PSG",$JOB)
QUIT
+3 ;
GG ;
+1 FOR PSGWD=0:0
SET PSGWD=$ORDER(^PS(57.5,"AC",PSGWG,PSGWD))
IF 'PSGWD
QUIT
DO GW
+2 QUIT
+3 ;
GW ;
+1 IF $DATA(^DIC(42,PSGWD,0))
IF $PIECE(^(0),"^")]""
SET PSGWDN=$PIECE(^(0),"^")
FOR PSGP=0:0
SET PSGP=$ORDER(^DPT("CN",PSGWDN,PSGP))
IF 'PSGP
QUIT
DO PAT
+2 QUIT
+3 ;
GP ;
+1 FOR PSGP=0:0
SET PSGP=$ORDER(PSGPAT(PSGP))
IF 'PSGP
QUIT
DO PAT
+2 QUIT
+3 ;
PAT ;
+1 SET COST=0
DO ^PSJAC
SET PSGPN=$SELECT($PIECE(PSGP(0),"^")]"":$PIECE(PSGP(0),"^"),1:PSGP)_"^"_PSGP
SET PSN=$EXTRACT($PIECE(PSJPSSN,"^"),6,10)
+2 FOR SD=+PSJPAD:0
SET SD=$ORDER(^PS(55,PSGP,5,"AUS",SD))
IF 'SD
QUIT
FOR PSJJORD=0:0
SET PSJJORD=$ORDER(^PS(55,PSGP,5,"AUS",SD,PSJJORD))
IF 'PSJJORD
QUIT
DO ADD
+3 IF $DATA(^TMP("PSG",$JOB,PSGPN))
SET ^(PSGPN)=$PIECE(PSJPAD,"^",2)_"^"_PSN_"^"_PSJPDX
QUIT
+4 ;
ADD ;
+1 NEW X
FOR X=0:0
SET X=$ORDER(^PS(55,PSGP,5,PSJJORD,1,X))
IF 'X
QUIT
Begin DoDot:1
+2 ; naked ref below refers to line above
+3 SET ND=^(X,0)
SET DRG=+ND
SET DRGN=$GET(^PSDRUG(DRG,0))
SET DRGN=$SELECT($PIECE(DRGN,"^")]"":$PIECE(DRGN,"^"),1:DRG)_$SELECT('$PIECE(DRGN,"^",9):"",1:"^1")
SET DRG=+$PIECE($GET(^(660)),"^",6)
+4 SET AMT=$PIECE(ND,"^",6)+$PIECE(ND,"^",10)+$PIECE(ND,"^",12)-$PIECE(ND,"^",7)
IF DRG*AMT
SET ND=$GET(^TMP("PSG",$JOB,PSGPN,DRGN))
SET ^(DRGN)=+ND+AMT_"^"_(DRG*AMT+$PIECE(ND,"^",2))
End DoDot:1
+5 QUIT
+6 ;
G ;
+1 SET DIC="^PS(57.5,"
SET DIC(0)="QEAMI"
SET DIC("A")="Select WARD GROUP: "
WRITE !
DO ^DIC
KILL DIC
SET PSGWG=+Y
QUIT
W ;
+1 SET DIC="^DIC(42,"
SET DIC(0)="QEAMI"
SET DIC("A")="Select WARD: "
WRITE !
DO ^DIC
KILL DIC
SET PSGWD=+Y
QUIT
P ;
+1 KILL PSGPAT
SET PSGPAT=0
FOR CNTR=1:1
IF CNTR>1
SET PSGDICA="another"
DO ENDPT^PSGP
IF PSGP'>0
QUIT
SET PSGPAT(PSGP)=""
SET PSGPAT=PSGP
+2 SET Y=PSGPAT
QUIT
+3 ;
DEV ;
+1 KILL ZTSAVE
SET PSGTIR="ENQ^PSGTCTD"
SET ZTDESC="TOTAL COST REPORT"
FOR X="PSGSS","PSGWG","PSGWD","PSGPAT("
SET ZTSAVE(X)=""
+2 DO ENDEV^PSGTI
QUIT