PSOCST4 ;BHAM ISC/SAB - DRUG COSTS BY PROVIDER ; 08/19/92 11:22
 ;;7.0;OUTPATIENT PHARMACY;**10,31**;DEC 1997
BEG S RP=4 D HDC^PSOCSTX F  D CDT^PSOCSTX Q:$G(CTR)  D PRV^PSOCSTX Q:$G(CTR)  S RP=0 D CTP^PSOCSTX Q:$G(CTR)  I RP=0 D DEV Q
 D EX Q
DEV D DVC^PSOCSTX Q:$G(CTR) 
 K PSOION I $D(IO("Q")) S ZTDESC="DRUG COSTS BY PROVIDER",ZTRTN="START^PSOCST4" D PAS^PSOCSTX
 I  K IO("Q") D ^%ZTLOAD W:$D(ZTSK) !,"REPORT QUEUED TO PRINT !!",! D EX Q
START U IO K ^TMP($J) F PSDT=(BEGDATE-1):0:ENDDATE S PSDT=$O(^PSCST(PSDT)) Q:'PSDT!(PSDT>ENDDATE)  D @$S('IFN:"PHY",1:"SPHY")
 D ZER^PSOCSTX S PHYX="" D HD I $O(^TMP($J,PHYX))']""  D HDN^PSOCSTX Q
 F I=0:0 S PHYX=$O(^TMP($J,PHYX)) Q:PHYX=""  D
 .D HD:($Y+4)>IOSL Q:$G(CTR)  S Y=^TMP($J,PHYX),TTX=PHYX D PRT^PSOCSTX
 I 'CTR,'IFN D HD:($Y+2)>IOSL D FTX^PSOCSTX
EX D EX^PSOCSTX Q
PHY F PHY=0:0 S PHY=$O(^PSCST(PSDT,"P",PHY)) Q:'PHY  D SPHY
 Q
SPHY I $D(^PSCST(PSDT,"P",PHY,0)) S X=^PSCST(PSDT,"P",PHY,0) D STORE
 Q
STORE S PHYX=$S($D(^VA(200,+PHY,0)):$P(^(0),"^"),1:"UNKNOWN")
 S:'$D(^TMP($J,PHYX)) ^TMP($J,PHYX)="^0^0^0"
 S UTL=^TMP($J,PHYX),^TMP($J,PHYX)="^"_($P(UTL,"^",2)+$P(X,"^",2))_"^"_($P(UTL,"^",3)+$P(X,"^",3))_"^"_($P(UTL,"^",4)+$P(X,"^",4))
 Q
HD D HD^PSOCSTX Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSOCST4   1234     printed  Sep 23, 2025@20:02:29                                                                                                                                                                                                     Page 2
PSOCST4   ;BHAM ISC/SAB - DRUG COSTS BY PROVIDER ; 08/19/92 11:22
 +1       ;;7.0;OUTPATIENT PHARMACY;**10,31**;DEC 1997
BEG        SET RP=4
           DO HDC^PSOCSTX
           FOR 
               DO CDT^PSOCSTX
               if $GET(CTR)
                   QUIT 
               DO PRV^PSOCSTX
               if $GET(CTR)
                   QUIT 
               SET RP=0
               DO CTP^PSOCSTX
               if $GET(CTR)
                   QUIT 
               IF RP=0
                   DO DEV
                   QUIT 
 +1        DO EX
           QUIT 
DEV        DO DVC^PSOCSTX
           if $GET(CTR)
               QUIT 
 +1        KILL PSOION
           IF $DATA(IO("Q"))
               SET ZTDESC="DRUG COSTS BY PROVIDER"
               SET ZTRTN="START^PSOCST4"
               DO PAS^PSOCSTX
 +2       IF $TEST
               KILL IO("Q")
               DO ^%ZTLOAD
               if $DATA(ZTSK)
                   WRITE !,"REPORT QUEUED TO PRINT !!",!
               DO EX
               QUIT 
START      USE IO
           KILL ^TMP($JOB)
           FOR PSDT=(BEGDATE-1):0:ENDDATE
               SET PSDT=$ORDER(^PSCST(PSDT))
               if 'PSDT!(PSDT>ENDDATE)
                   QUIT 
               DO @$SELECT('IFN:"PHY",1:"SPHY")
 +1        DO ZER^PSOCSTX
           SET PHYX=""
           DO HD
           IF $ORDER(^TMP($JOB,PHYX))']""
               DO HDN^PSOCSTX
               QUIT 
 +2        FOR I=0:0
               SET PHYX=$ORDER(^TMP($JOB,PHYX))
               if PHYX=""
                   QUIT 
               Begin DoDot:1
 +3                if ($Y+4)>IOSL
                       DO HD
                   if $GET(CTR)
                       QUIT 
                   SET Y=^TMP($JOB,PHYX)
                   SET TTX=PHYX
                   DO PRT^PSOCSTX
               End DoDot:1
 +4        IF 'CTR
               IF 'IFN
                   if ($Y+2)>IOSL
                       DO HD
                   DO FTX^PSOCSTX
EX         DO EX^PSOCSTX
           QUIT 
PHY        FOR PHY=0:0
               SET PHY=$ORDER(^PSCST(PSDT,"P",PHY))
               if 'PHY
                   QUIT 
               DO SPHY
 +1        QUIT 
SPHY       IF $DATA(^PSCST(PSDT,"P",PHY,0))
               SET X=^PSCST(PSDT,"P",PHY,0)
               DO STORE
 +1        QUIT 
STORE      SET PHYX=$SELECT($DATA(^VA(200,+PHY,0)):$PIECE(^(0),"^"),1:"UNKNOWN")
 +1        if '$DATA(^TMP($JOB,PHYX))
               SET ^TMP($JOB,PHYX)="^0^0^0"
 +2        SET UTL=^TMP($JOB,PHYX)
           SET ^TMP($JOB,PHYX)="^"_($PIECE(UTL,"^",2)+$PIECE(X,"^",2))_"^"_($PIECE(UTL,"^",3)+$PIECE(X,"^",3))_"^"_($PIECE(UTL,"^",4)+$PIECE(X,"^",4))
 +3        QUIT 
HD         DO HD^PSOCSTX
           QUIT