PSGTCTD0 ;BIR/CML3-PRINT TOTAL COST TO DATE REPORT ;31 OCT 95 / 2:10 PM
 ;;5.0; INPATIENT MEDICATIONS ;;16 DEC 97
 ;
START ;
 D NOW^%DTC S PSGDT=%,PSGPDT=$$ENDTC^PSGMI(PSGDT),CML=IO'=IO(0)!(IOST'["C-"),(LINE,LN2,NP)="",$P(LINE,"-",81)="",$P(LN2,"=",81)="",(TCNT,TCST)=0
 ;
 I 'PSGWG G:PSGWD W S HDR="(BY PATIENT)" G RUN
 I $D(^PS(57.5,PSGWG,0)),$P(^(0),"^")]"" S HDR="(FOR WARD GROUP: "_$P(^(0),"^")_")" G RUN
 S HDR="(BY WARD GROUP)" G RUN
W I $D(^DIC(42,PSGWD,0)),$P(^(0),"^")]"" S HDR="(FOR WARD: "_$P(^(0),"^")_")"
 E  S HDR="(BY WARD)"
 ;
RUN ;
 S HDRL=80-$L(HDR)\2,PN="" U IO D HDR I '$D(^TMP("PSG",$J)) W !!?18,"*** NO TOTAL COST PER PATIENT FOUND ***" G DONE
 F  D:PN]"" PTOT S PN=$O(^TMP("PSG",$J,PN)) Q:PN=""  D PW G:NP["^" DONE S DRG="",(PCNT,PCST)=0 F  S DRG=$O(^TMP("PSG",$J,PN,DRG)) Q:DRG=""  S CST=^(DRG) D:$Y+4>IOSL NP G:NP["^" DONE D DW
 ;
TOTLS ;
 D:$Y+5>IOSL NP I NP'["^" S TCPU=$S(TCNT:TCST/TCNT,1:0) S:TCST<0&(TCPU>0) TCPU=-TCPU W !!,LN2,!!?5,"TOTALS => ",?17,"AVG. COST/UNIT: ",$J(TCPU,0,2),?52,$J(TCNT,9,0),?67,$J(TCST,12,2)
 I NP'["^",CML F X=$Y:1:IOSL-4 W !
 I  W !?54,"(** = NON-FORMULARY ITEM)"
 ;
DONE ;
 W:CML&($Y) @IOF,@IOF K AD,CML,CST,DIAG,HDR,HDRL,LINE,NP,P,PCNT,PCPU,PCST,PN,PSGPDT,TCNT,TCPU,TCST Q
 ;
PTOT ;
 S TCNT=TCNT+PCNT,TCST=TCST+PCST,PCPU=$S(PCNT:PCST/PCNT,1:0) S:PCST<0&(PCPU>0) PCPU=-PCPU W ?52,"---------",?67,"------------",!?1,"-----  AVG. COST/UNIT: ",$J(PCPU,0,2),?52,$J(PCNT,9,0),?67,$J(PCST,12,2),!! Q
 ;
DW ;
 S CNT=+CST,CST=$P(CST,"^",2),PCNT=PCNT+CNT,PCST=PCST+CST
 W !?4,$S('$P(DRG,"^",2):"  ",1:"**")," ",$P(DRG,"^"),$S($P(DRG,"^")'=+$P(DRG,"^"):"",1:" (DRUG NOT FOUND)"),?52,$J(CNT,9,0),?67,$J(CST,12,2),! Q
 ;
NP ;
 I 'CML W $C(7),!,"'^' TO STOP " R NP:DTIME W:'$T $C(7) S:'$T NP="^" Q:NP["^"
 I CML F X=$Y:1:IOSL-4 W !
 I  W !?54,"(** = NON-FORMULARY ITEM)"
 ;
HDR ;
 W:$Y @IOF W !!?27,"TOTAL COST TO DATE REPORT",?64,PSGPDT,!?HDRL,HDR,!!?7,"Patient",?45,"Admitting Date",!?60,"Admitting Diagnosis",!?10,"Drug",?53,"Dispensed",?72,"Cost",!,LINE Q:PN=""
 ;
PW ;
 G:$Y+7>IOSL NP S PSN=^TMP("PSG",$J,PN),AD=$P(PSN,"^"),DIAG=$S($P(PSN,"^",3)]"":$P(PSN,"^",3),1:"DIAGNOSIS NOT FOUND"),PSN=$P(PSN,"^",2)
 W !!?2,$P(PN,"^"),$S($P(PN,"^")'=$P(PN,"^",2):"",1:$P(PN,"^",2)_";DPT("),"  (",PSN,")",?45,AD,!?79-$L(DIAG),DIAG,! Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSGTCTD0   2317     printed  Sep 23, 2025@19:39:28                                                                                                                                                                                                    Page 2
PSGTCTD0  ;BIR/CML3-PRINT TOTAL COST TO DATE REPORT ;31 OCT 95 / 2:10 PM
 +1       ;;5.0; INPATIENT MEDICATIONS ;;16 DEC 97
 +2       ;
START     ;
 +1        DO NOW^%DTC
           SET PSGDT=%
           SET PSGPDT=$$ENDTC^PSGMI(PSGDT)
           SET CML=IO'=IO(0)!(IOST'["C-")
           SET (LINE,LN2,NP)=""
           SET $PIECE(LINE,"-",81)=""
           SET $PIECE(LN2,"=",81)=""
           SET (TCNT,TCST)=0
 +2       ;
 +3        IF 'PSGWG
               if PSGWD
                   GOTO W
               SET HDR="(BY PATIENT)"
               GOTO RUN
 +4        IF $DATA(^PS(57.5,PSGWG,0))
               IF $PIECE(^(0),"^")]""
                   SET HDR="(FOR WARD GROUP: "_$PIECE(^(0),"^")_")"
                   GOTO RUN
 +5        SET HDR="(BY WARD GROUP)"
           GOTO RUN
W          IF $DATA(^DIC(42,PSGWD,0))
               IF $PIECE(^(0),"^")]""
                   SET HDR="(FOR WARD: "_$PIECE(^(0),"^")_")"
 +1       IF '$TEST
               SET HDR="(BY WARD)"
 +2       ;
RUN       ;
 +1        SET HDRL=80-$LENGTH(HDR)\2
           SET PN=""
           USE IO
           DO HDR
           IF '$DATA(^TMP("PSG",$JOB))
               WRITE !!?18,"*** NO TOTAL COST PER PATIENT FOUND ***"
               GOTO DONE
 +2        FOR 
               if PN]""
                   DO PTOT
               SET PN=$ORDER(^TMP("PSG",$JOB,PN))
               if PN=""
                   QUIT 
               DO PW
               if NP["^"
                   GOTO DONE
               SET DRG=""
               SET (PCNT,PCST)=0
               FOR 
                   SET DRG=$ORDER(^TMP("PSG",$JOB,PN,DRG))
                   if DRG=""
                       QUIT 
                   SET CST=^(DRG)
                   if $Y+4>IOSL
                       DO NP
                   if NP["^"
                       GOTO DONE
                   DO DW
 +3       ;
TOTLS     ;
 +1        if $Y+5>IOSL
               DO NP
           IF NP'["^"
               SET TCPU=$SELECT(TCNT:TCST/TCNT,1:0)
               if TCST<0&(TCPU>0)
                   SET TCPU=-TCPU
               WRITE !!,LN2,!!?5,"TOTALS => ",?17,"AVG. COST/UNIT: ",$JUSTIFY(TCPU,0,2),?52,$JUSTIFY(TCNT,9,0),?67,$JUSTIFY(TCST,12,2)
 +2        IF NP'["^"
               IF CML
                   FOR X=$Y:1:IOSL-4
                       WRITE !
 +3       IF $TEST
               WRITE !?54,"(** = NON-FORMULARY ITEM)"
 +4       ;
DONE      ;
 +1        if CML&($Y)
               WRITE @IOF,@IOF
           KILL AD,CML,CST,DIAG,HDR,HDRL,LINE,NP,P,PCNT,PCPU,PCST,PN,PSGPDT,TCNT,TCPU,TCST
           QUIT 
 +2       ;
PTOT      ;
 +1        SET TCNT=TCNT+PCNT
           SET TCST=TCST+PCST
           SET PCPU=$SELECT(PCNT:PCST/PCNT,1:0)
           if PCST<0&(PCPU>0)
               SET PCPU=-PCPU
           WRITE ?52,"---------",?67,"------------",!?1,"-----  AVG. COST/UNIT: ",$JUSTIFY(PCPU,0,2),?52,$JUSTIFY(PCNT,9,0),?67,$JUSTIFY(PCST,12,2),!!
           QUIT 
 +2       ;
DW        ;
 +1        SET CNT=+CST
           SET CST=$PIECE(CST,"^",2)
           SET PCNT=PCNT+CNT
           SET PCST=PCST+CST
 +2        WRITE !?4,$SELECT('$PIECE(DRG,"^",2):"  ",1:"**")," ",$PIECE(DRG,"^"),$SELECT($PIECE(DRG,"^")'=+$PIECE(DRG,"^"):"",1:" (DRUG NOT FOUND)"),?52,$JUSTIFY(CNT,9,0),?67,$JUSTIFY(CST,12,2),!
           QUIT 
 +3       ;
NP        ;
 +1        IF 'CML
               WRITE $CHAR(7),!,"'^' TO STOP "
               READ NP:DTIME
               if '$TEST
                   WRITE $CHAR(7)
               if '$TEST
                   SET NP="^"
               if NP["^"
                   QUIT 
 +2        IF CML
               FOR X=$Y:1:IOSL-4
                   WRITE !
 +3       IF $TEST
               WRITE !?54,"(** = NON-FORMULARY ITEM)"
 +4       ;
HDR       ;
 +1        if $Y
               WRITE @IOF
           WRITE !!?27,"TOTAL COST TO DATE REPORT",?64,PSGPDT,!?HDRL,HDR,!!?7,"Patient",?45,"Admitting Date",!?60,"Admitting Diagnosis",!?10,"Drug",?53,"Dispensed",?72,"Cost",!,LINE
           if PN=""
               QUIT 
 +2       ;
PW        ;
 +1        if $Y+7>IOSL
               GOTO NP
           SET PSN=^TMP("PSG",$JOB,PN)
           SET AD=$PIECE(PSN,"^")
           SET DIAG=$SELECT($PIECE(PSN,"^",3)]"":$PIECE(PSN,"^",3),1:"DIAGNOSIS NOT FOUND")
           SET PSN=$PIECE(PSN,"^",2)
 +2        WRITE !!?2,$PIECE(PN,"^"),$SELECT($PIECE(PN,"^")'=$PIECE(PN,"^",2):"",1:$PIECE(PN,"^",2)_";DPT("),"  (",PSN,")",?45,AD,!?79-$LENGTH(DIAG),DIAG,!
           QUIT