DGPTODI3 ;ALB/MTC - DRG INDEX(CONT),PRINT FROM ^UTILITY GLOBAL ; 8/29/01 11:08am
 ;;5.3;Registration;**51,158,164,375,606,744,1015**;Aug 13, 1993;Build 21
 S (DGPAG,DGAT,DGBT,DGAAL,DGTP,DG1DAY,DGTDRG,DGTP(1),DGUNIQ,SSN(1))=0,$P(DGLN,"=",132)="",$P(DGLN2,"-",132)=""
 F DRG=0:0 D:DRG>0 TOT S DRG=$O(^UTILITY($J,"DGDRGI",DRG)) Q:DRG'>0  D HDR S J1=0 F J=0:0 S J1=$O(^UTILITY($J,"DGDRGI",DRG,J1)) Q:J1']""  S:DGP DGPT=J1 S:'DGP DGTD=J1 D L2
 W @IOF,!?61,"Summary Page",!!!,"Total combined hits for Medical Center of all DRGs: ",DGTP(1),!,"The following list gives the total hits by DRG:"
 S DRG="" F J=0:0 Q:DRG<0  W ! F %=1:1:8 S DRG=$O(DRG(DRG)) S:DRG'>0 DRG=-1 Q:DRG'>0  W "    DRG ",$J(DRG,3),":",$J(DRG(DRG),4)
 D:$D(^UTILITY($J,"DGDRGI","DGNOCODE")) NC K DGAT,DGBT,DGAAL,DG1DAY,DGTDRG,DGUNIQ,DGLN,DGLN2,DGPT,DGAL,DGTD,DGDT,DGHI,DGLO,DGPAG,DGNC,DGTP,I,J,J1,K,L Q
L2 F K=0:0 S K=$O(^UTILITY($J,"DGDRGI",DRG,J1,K)) Q:K'>0  F L=0:0 S L=$O(^UTILITY($J,"DGDRGI",DRG,J1,K,L)) Q:L']""  S DGDT=L,X=^(L) D LN
 Q
LN I $Y>$S('$D(IOSL):60,1:(IOSL-6)) D HDR
 S DGTP=DGTP+1,DGTDRG=DGTDRG+1 W !! W:DGP DGPT I 'DGP S DFN=$P(X,"^",2) W $P(^DPT(DFN,0),"^",1)
 S SSN(2)=$P(X,"^") W ?33,SSN(2),?44 S:SSN(2)'=SSN(1) DGUNIQ=DGUNIQ+1,SSN(1)=SSN(2) S Y=$P(X,"^",6) D DT W:DGD=0 ?55,"----------" I DGD S Y=$P(X,"^",7) I Y W ?55 D DT
 W ?66 W:DGDT=1!(DGDT=$P(X,"^",7)) "----------" I DGDT>1&(DGDT'=$P(X,"^",7)) S Y=DGDT D DT
 W ?76 S DGLOS=$P(X,"^",3),DGBE=$P(X,"^",9) W $J(DGLOS,4),?83,$J(DGBE,5) I DGLOS>0 W ?91 D FLG
 W ?99 S DGSTAT=$P(X,"^",8) W $S(DGSTAT=0:"O",DGSTAT=1:"C",DGSTAT=2:"R",1:"T")
 S DGPRO=$P(X,"^",4),DGBS=$P(X,"^",5) W ?103 W:DGPRO'>0 "not specified/" I DGPRO>0 W $S($D(^VA(200,DGPRO,0)):$E($P(^VA(200,DGPRO,0),"^",1),1,29),1:"not specified"),"/"
 I DGBS>0 W !,?103,$E($P(^DIC(42.4,DGBS,0),"^",1),1,29)
 Q
FLG I DGLOS=1 S DG1DAY=DG1DAY+1 W "   *" Q
 S %="" S:DGBE]""&(DGLOS>DGBE) DGBT=DGBT+1,%="B" S:DGHI]""&(DGLOS>DGHI) DGAT=DGAT+1,%=%_"H" S:DGAL]""&(DGLOS>DGAL) DGAAL=DGAAL+1,%=%_"A" W:%]"" $J(%,4) Q
TOT W !,DGLN,!?3,"Total: ",DGTP,!,?3,"Total Unique Patients: ",DGUNIQ S %=$S('$D(IOSL):56,1:(IOSL-10)) F I=$Y:1:% W !
 W !!,"FLAGS:  H - Total Above High Trim: ",DGAT,"   * - Total 1 Day LOS: ",DG1DAY,"   A - Total Above ALOS: ",DGAAL
 S DRG(DRG)=DGTP,DGTP(1)=DGTP(1)+DGTP,(DGTP,DGBT,DGAT,DG1DAY,DGAAL,DGUNIQ,SSN(1))=0 W !!?64,"-",DGPAG,"-" Q
DT W $TR($$FMTE^XLFDT(Y,"5DF")," ","0") S Y="" Q
HDR W @IOF,!,"DRG INDEX FOR DRG ",DRG,?30,"Weight: "
HD1 S %=$S($D(^ICD(DRG,"FY",DGFY2K,0)):(^(0)),1:"")
 I %="",DGFY2K="3070000" N DGFY2KSV,DGFY2KYR S DGFY2KSV=DGFY2K,DGFY2KYR=$E(DGFY2K,1,3)-1,DGFY2K=DGFY2KYR_"0000" G HD1
 I $G(DGFY2KSV) S DGFY2K=DGFY2KSV
 W $P(%,"^",2),?46,"Low Trim: " S DGLO=$P(%,"^",3),DGHI=$P(%,"^",4),DGAL=$P(%,"^",9) W DGLO,?60,"High Trim: ",DGHI,?76,"Avg LOS: ",DGAL
 W ?105,"PRINTED: " S Y=DT X ^DD("DD") W Y,!?3,"For ",$S(DGD:"Discharge Dates from: ",1:"Active Admissions") I DGD S Y=DGSD+.1 X ^DD("DD") W $P(Y,"@")," to " S Y=DGED X ^DD("DD") W $P(Y,"@") I DGB W " including TRANSFER DRGs"
 ;W !!,?5,"Description:" F %=0:0 S %=$O(^ICD(DRG,1,%)) Q:%'>0  W ?18,^ICD(DRG,1,%,0),!
 N DXD,DGDX S DXD=$$DRGD^ICDGTDRG(DRG,"DGDX",,DT)
 W !!,?5,"Description:" F %=0:0 S %=$O(DGDX(%)) Q:'+%  Q:DGDX(%)=" "  W ?18,DGDX(%),!
 W !!,?44,"ADMISSION",?55,"DISCHARGE",?66,"TRANSFER",?97,"PTF",?103,"TRANSFERRING PROVIDER/"
 W !,"PATIENT NAME",?33,"SSN",?44,"DATE",?55,"DATE",?66,"DATE",?77,"LOS",?91,"FLGS",?97,"STAT",?103,"LOSING SPECIALTY"
 W !,DGLN S DGPAG=DGPAG+1 S:'$D(^UTILITY($J,"DGTC",DRG)) ^UTILITY($J,"DGTC",DRG,DGPAG)="" Q
PNC W !,DGNC,?9,$P(^DPT(DFN,0),"^"),?45,$P(^(0),"^",9),?63 S Y=DGDT D DT Q
HD2 W:DGPAG>0 !,?64,"-",DGPAG,"-",@IOF S DGPAG=DGPAG+1 W !,"PTF #",?9,"PATIENT NAME",?45,"SSN",?60,"ADMISSION DATE",!,DGLN Q
NC S (DGPAG,DGTP)=0
 W @IOF,"A ",$S(DGB:"transfer ",1:""),"DRG can not be computed for 1 or more movement(s) associated with the following PTF records because ",$S(DGB:"transfer ",1:""),"ICD code(s) "
 W:DGB ! W "are missing:"
 D HD2
 F DGNC=0:0 S DGNC=$O(^UTILITY($J,"DGDRGI","DGNOCODE",DGNC)) Q:DGNC'>0  S DGTP=DGTP+1,DFN=+^UTILITY($J,"DGDRGI","DGNOCODE",DGNC),DGDT=$P(^(DGNC),"^",2) D PNC D:$Y>$S('$D(IOSL):58,1:(IOSL-8)) HD2
 S:DGPAG=0 DGPAG=1 W !,DGLN,!,"Total PTF Records: ",DGTP S %=$S('$D(IOSL):60,1:IOSL-6) F I=$Y:1:% W !
 W !?64,"-",DGPAG,"-",! Q
DGPTODI3  ;ALB/MTC - DRG INDEX(CONT),PRINT FROM ^UTILITY GLOBAL ; 8/29/01 11:08am
 +1       ;;5.3;Registration;**51,158,164,375,606,744,1015**;Aug 13, 1993;Build 21
 +2        SET (DGPAG,DGAT,DGBT,DGAAL,DGTP,DG1DAY,DGTDRG,DGTP(1),DGUNIQ,SSN(1))=0
           SET $PIECE(DGLN,"=",132)=""
           SET $PIECE(DGLN2,"-",132)=""
 +3        FOR DRG=0:0
               IF DRG>0
                   DO TOT
               SET DRG=$ORDER(^UTILITY($JOB,"DGDRGI",DRG))
               IF DRG'>0
                   QUIT 
               DO HDR
               SET J1=0
               FOR J=0:0
                   SET J1=$ORDER(^UTILITY($JOB,"DGDRGI",DRG,J1))
                   IF J1']""
                       QUIT 
                   IF DGP
                       SET DGPT=J1
                   IF 'DGP
                       SET DGTD=J1
                   DO L2
 +4        WRITE @IOF,!?61,"Summary Page",!!!,"Total combined hits for Medical Center of all DRGs: ",DGTP(1),!,"The following list gives the total hits by DRG:"
 +5        SET DRG=""
           FOR J=0:0
               IF DRG<0
                   QUIT 
               WRITE !
               FOR %=1:1:8
                   SET DRG=$ORDER(DRG(DRG))
                   IF DRG'>0
                       SET DRG=-1
                   IF DRG'>0
                       QUIT 
                   WRITE "    DRG ",$JUSTIFY(DRG,3),":",$JUSTIFY(DRG(DRG),4)
 +6        IF $DATA(^UTILITY($JOB,"DGDRGI","DGNOCODE"))
               DO NC
           KILL DGAT,DGBT,DGAAL,DG1DAY,DGTDRG,DGUNIQ,DGLN,DGLN2,DGPT,DGAL,DGTD,DGDT,DGHI,DGLO,DGPAG,DGNC,DGTP,I,J,J1,K,L
           QUIT 
L2         FOR K=0:0
               SET K=$ORDER(^UTILITY($JOB,"DGDRGI",DRG,J1,K))
               IF K'>0
                   QUIT 
               FOR L=0:0
                   SET L=$ORDER(^UTILITY($JOB,"DGDRGI",DRG,J1,K,L))
                   IF L']""
                       QUIT 
                   SET DGDT=L
                   SET X=^(L)
                   DO LN
 +1        QUIT 
LN         IF $Y>$SELECT('$DATA(IOSL):60,1:(IOSL-6))
               DO HDR
 +1        SET DGTP=DGTP+1
           SET DGTDRG=DGTDRG+1
           WRITE !!
           IF DGP
               WRITE DGPT
           IF 'DGP
               SET DFN=$PIECE(X,"^",2)
               WRITE $PIECE(^DPT(DFN,0),"^",1)
 +2        SET SSN(2)=$PIECE(X,"^")
           WRITE ?33,SSN(2),?44
           IF SSN(2)'=SSN(1)
               SET DGUNIQ=DGUNIQ+1
               SET SSN(1)=SSN(2)
           SET Y=$PIECE(X,"^",6)
           DO DT
           IF DGD=0
               WRITE ?55,"----------"
           IF DGD
               SET Y=$PIECE(X,"^",7)
               IF Y
                   WRITE ?55
                   DO DT
 +3        WRITE ?66
           IF DGDT=1!(DGDT=$PIECE(X,"^",7))
               WRITE "----------"
           IF DGDT>1&(DGDT'=$PIECE(X,"^",7))
               SET Y=DGDT
               DO DT
 +4        WRITE ?76
           SET DGLOS=$PIECE(X,"^",3)
           SET DGBE=$PIECE(X,"^",9)
           WRITE $JUSTIFY(DGLOS,4),?83,$JUSTIFY(DGBE,5)
           IF DGLOS>0
               WRITE ?91
               DO FLG
 +5        WRITE ?99
           SET DGSTAT=$PIECE(X,"^",8)
           WRITE $SELECT(DGSTAT=0:"O",DGSTAT=1:"C",DGSTAT=2:"R",1:"T")
 +6        SET DGPRO=$PIECE(X,"^",4)
           SET DGBS=$PIECE(X,"^",5)
           WRITE ?103
           IF DGPRO'>0
               WRITE "not specified/"
           IF DGPRO>0
               WRITE $SELECT($DATA(^VA(200,DGPRO,0)):$EXTRACT($PIECE(^VA(200,DGPRO,0),"^",1),1,29),1:"not specified"),"/"
 +7        IF DGBS>0
               WRITE !,?103,$EXTRACT($PIECE(^DIC(42.4,DGBS,0),"^",1),1,29)
 +8        QUIT 
FLG        IF DGLOS=1
               SET DG1DAY=DG1DAY+1
               WRITE "   *"
               QUIT 
 +1        SET %=""
           IF DGBE]""&(DGLOS>DGBE)
               SET DGBT=DGBT+1
               SET %="B"
           IF DGHI]""&(DGLOS>DGHI)
               SET DGAT=DGAT+1
               SET %=%_"H"
           IF DGAL]""&(DGLOS>DGAL)
               SET DGAAL=DGAAL+1
               SET %=%_"A"
           IF %]""
               WRITE $JUSTIFY(%,4)
           QUIT 
TOT        WRITE !,DGLN,!?3,"Total: ",DGTP,!,?3,"Total Unique Patients: ",DGUNIQ
           SET %=$SELECT('$DATA(IOSL):56,1:(IOSL-10))
           FOR I=$Y:1:%
               WRITE !
 +1        WRITE !!,"FLAGS:  H - Total Above High Trim: ",DGAT,"   * - Total 1 Day LOS: ",DG1DAY,"   A - Total Above ALOS: ",DGAAL
 +2        SET DRG(DRG)=DGTP
           SET DGTP(1)=DGTP(1)+DGTP
           SET (DGTP,DGBT,DGAT,DG1DAY,DGAAL,DGUNIQ,SSN(1))=0
           WRITE !!?64,"-",DGPAG,"-"
           QUIT 
DT         WRITE $TRANSLATE($$FMTE^XLFDT(Y,"5DF")," ","0")
           SET Y=""
           QUIT 
HDR        WRITE @IOF,!,"DRG INDEX FOR DRG ",DRG,?30,"Weight: "
HD1        SET %=$SELECT($DATA(^ICD(DRG,"FY",DGFY2K,0)):(^(0)),1:"")
 +1        IF %=""
               IF DGFY2K="3070000"
                   NEW DGFY2KSV,DGFY2KYR
                   SET DGFY2KSV=DGFY2K
                   SET DGFY2KYR=$EXTRACT(DGFY2K,1,3)-1
                   SET DGFY2K=DGFY2KYR_"0000"
                   GOTO HD1
 +2        IF $GET(DGFY2KSV)
               SET DGFY2K=DGFY2KSV
 +3        WRITE $PIECE(%,"^",2),?46,"Low Trim: "
           SET DGLO=$PIECE(%,"^",3)
           SET DGHI=$PIECE(%,"^",4)
           SET DGAL=$PIECE(%,"^",9)
           WRITE DGLO,?60,"High Trim: ",DGHI,?76,"Avg LOS: ",DGAL
 +4        WRITE ?105,"PRINTED: "
           SET Y=DT
           XECUTE ^DD("DD")
           WRITE Y,!?3,"For ",$SELECT(DGD:"Discharge Dates from: ",1:"Active Admissions")
           IF DGD
               SET Y=DGSD+.1
               XECUTE ^DD("DD")
               WRITE $PIECE(Y,"@")," to "
               SET Y=DGED
               XECUTE ^DD("DD")
               WRITE $PIECE(Y,"@")
               IF DGB
                   WRITE " including TRANSFER DRGs"
 +5       ;W !!,?5,"Description:" F %=0:0 S %=$O(^ICD(DRG,1,%)) Q:%'>0  W ?18,^ICD(DRG,1,%,0),!
 +6        NEW DXD,DGDX
           SET DXD=$$DRGD^ICDGTDRG(DRG,"DGDX",,DT)
 +7        WRITE !!,?5,"Description:"
           FOR %=0:0
               SET %=$ORDER(DGDX(%))
               IF '+%
                   QUIT 
               IF DGDX(%)=" "
                   QUIT 
               WRITE ?18,DGDX(%),!
 +8        WRITE !!,?44,"ADMISSION",?55,"DISCHARGE",?66,"TRANSFER",?97,"PTF",?103,"TRANSFERRING PROVIDER/"
 +9        WRITE !,"PATIENT NAME",?33,"SSN",?44,"DATE",?55,"DATE",?66,"DATE",?77,"LOS",?91,"FLGS",?97,"STAT",?103,"LOSING SPECIALTY"
 +10       WRITE !,DGLN
           SET DGPAG=DGPAG+1
           IF '$DATA(^UTILITY($JOB,"DGTC",DRG))
               SET ^UTILITY($JOB,"DGTC",DRG,DGPAG)=""
           QUIT 
PNC        WRITE !,DGNC,?9,$PIECE(^DPT(DFN,0),"^"),?45,$PIECE(^(0),"^",9),?63
           SET Y=DGDT
           DO DT
           QUIT 
HD2        IF DGPAG>0
               WRITE !,?64,"-",DGPAG,"-",@IOF
           SET DGPAG=DGPAG+1
           WRITE !,"PTF #",?9,"PATIENT NAME",?45,"SSN",?60,"ADMISSION DATE",!,DGLN
           QUIT 
NC         SET (DGPAG,DGTP)=0
 +1        WRITE @IOF,"A ",$SELECT(DGB:"transfer ",1:""),"DRG can not be computed for 1 or more movement(s) associated with the following PTF records because ",$SELECT(DGB:"transfer ",1:""),"ICD code(s) "
 +2        IF DGB
               WRITE !
           WRITE "are missing:"
 +3        DO HD2
 +4        FOR DGNC=0:0
               SET DGNC=$ORDER(^UTILITY($JOB,"DGDRGI","DGNOCODE",DGNC))
               IF DGNC'>0
                   QUIT 
               SET DGTP=DGTP+1
               SET DFN=+^UTILITY($JOB,"DGDRGI","DGNOCODE",DGNC)
               SET DGDT=$PIECE(^(DGNC),"^",2)
               DO PNC
               IF $Y>$SELECT('$DATA(IOSL)
                   DO HD2
 +5        IF DGPAG=0
               SET DGPAG=1
           WRITE !,DGLN,!,"Total PTF Records: ",DGTP
           SET %=$SELECT('$DATA(IOSL):60,1:IOSL-6)
           FOR I=$Y:1:%
               WRITE !
 +6        WRITE !?64,"-",DGPAG,"-",!
           QUIT