- DGENRPT3 ;ALB/DW,LBD - EGT Actual Summary Impact Report ; 04/24/03 2:40pm ; 07/22/02 9:40am
- ;;5.3;Registration;**232,306,417,456,491,513,1015**;Aug 13,1993;Build 21
- ;
- ;
- ENPT ;Actual Summary Report selected.
- K ^TMP($J,"SS3"),^TMP($J,"RT3")
- N BDT,EDT S (BDT,EDT)=""
- D RPDT I BDT="^"!(EDT="^")!($D(DTOUT)) Q
- D PRINT
- Q
- ;
- RPDT ;Ask the user the Report Begin Date and Report End Date.
- N DIR,X,Y
- S DIR(0)="DA^::E"
- S DIR("A")="Report Begin Date: "
- S DIR("?")="Please enter the Enrollment End Date as the beginning date that will be reported on."
- D ^DIR S BDT=Y
- I BDT="^" Q
- I ($D(DTOUT)) W *7 Q
- ;
- RPDT2 S DIR(0)="DA^::E"
- S DIR("A")="Report End Date: "
- S DIR("?")="Please enter the Enrollment End Date as the end date that will be reported on. Report End Date cannot be earlier than Report Begin Date."
- D ^DIR S EDT=Y
- I EDT="^" Q
- I ($D(DTOUT)) W *7 Q
- I EDT<BDT G RPDT2
- Q
- ;
- GETEGTS ;First get the current EGT parameters from file #27.16.
- N GETEGTS,REC,TP S (GETEGTS,REC,TP)=""
- S REC=$$FINDCUR^DGENEGT() I REC=0 Q
- S TP=$$GET^DGENEGT(REC,.GETEGTS)
- ;Get EGT Priority.
- S EGT=GETEGTS("PRIORITY"),RLEGT=EGT
- I EGT="" W !,"No EGT setting on file.",! S EGT=0
- S EGTSUB=GETEGTS("SUBGRP")
- ;Get EGT Effective Date.
- S EGTEDT=GETEGTS("EFFDATE") I EGTEDT S EGTEDT=$$FMTE^XLFDT(EGTEDT)
- ;Get last EGT setting Date/Time.
- S EGTLDT=GETEGTS("ENTDATE") I EGTLDT S EGTLDT=$$FMTE^XLFDT(EGTLDT)
- ;Get EGT Type.
- S EGTTP=GETEGTS("TYPE")
- S EGTTP=$$EXTERNAL^DILFD(27.16,.04,"F",EGTTP) S:EGTTP="" EGTTP="UNSPECIFIED"
- Q
- ;
- PRESRT1 ;Sort for patient's current record and get the potentially affected.
- N IND,PRT,DFN,INPT,PSSN,PEDT,PCTRY,TMP,PRTSUB,ABV
- S (IND,PRT,DFN,PSSN,PEDT,PCTRY,TMP,PRTSUB,ABV)="",INPT="OUT"
- K ^TMP($J,"SS3"),^TMP($J,"RT3")
- F S DFN=$O(^DGEN(27.11,"C",DFN)) Q:DFN="" D
- . S IND=$$FINDCUR^DGENA(DFN) I IND D
- .. D EGTP
- .. S PEDT=$P($G(^DGEN(27.11,IND,0)),U,11)
- .. S PCTRY=$$CATEGORY^DGENA4(DFN)
- .. I ABV=0&(PCTRY="N")&(PEDT'<BDT)&(PEDT'>EDT) D
- ... K VAIP(2) S INPT="OUT" D IN5^VADPT S TMP=$P($G(VAIP(2)),U) I TMP=1!(TMP=2)!(TMP=6) S INPT="IN"
- ... K VADM(2) D DEM^VADPT S PSSN=$P($G(VADM(2)),U)
- ... S ^TMP($J,"RT3",PRT,PSSN)=PRT_"^"_INPT
- ;
- PRESRT2 ;Sort the sorted.
- N CNT,ICNT,OCNT,J,K
- S (J,K)=""
- F S J=$O(^TMP($J,"RT3",J)) Q:J="" D
- . S (CNT,ICNT,OCNT)=0
- . F S K=$O(^TMP($J,"RT3",J,K)) Q:K="" D
- .. S INPT=$P($G(^TMP($J,"RT3",J,K)),U,2)
- .. S CNT=CNT+1 S:INPT="IN" ICNT=ICNT+1 S:INPT="OUT" OCNT=OCNT+1
- .. S ^TMP($J,"SS3",J)=CNT_"^"_ICNT_"^"_OCNT
- K ^TMP($J,"RT3")
- Q
- ;
- EGTP ;Get patients EGT Priority.
- S (PRT,PRTSUB,ABV,ENRDT)=""
- S PRT=$P($G(^DGEN(27.11,IND,0)),U,7)
- S:((PRT=7)!(PRT=8)) PRTSUB=$P($G(^DGEN(27.11,IND,0)),U,12)
- S ENRDT=$P($G(^DGEN(27.11,IND,0)),U,10)
- S:'ENRDT ENRDT=$P($G(^DGEN(27.11,IND,0)),U)
- S ABV=$$ABOVE^DGENEGT1(DFN,PRT,PRTSUB)
- I PRT=7!(PRT=8) D
- . S PRTSUB=$$EXTERNAL^DILFD(27.11,.12,"F",PRTSUB)
- . S:PRTSUB="" PRTSUB="ER"
- S PRT=PRT_PRTSUB
- Q
- ;
- PRINT ;Print the report.
- N POP,IO,IOBS,IOF,IOHG,IOM,ION,IOPAR,IOS,IOSL,IOST,IOT,IOUPAR,IOXY,ZTSAVE,TSK,%ZIS,ZTRTN,ZTDESC
- S %ZIS="QM" D ^%ZIS G EXIT:POP
- I $D(IO("Q")) D G EXIT
- . S ZTRTN="WRITER^DGENRPT3",ZTDESC="DG EGT Actual Summary Report."
- . S ZTSAVE("BDT")="",ZTSAVE("EDT")=""
- . D ^%ZTLOAD
- . S TSK=$S($D(ZTSK)=0:"C",1:"Y")
- . I TSK="Y" W !!,"Report queued! Task number: ",ZTSK
- . D HOME^%ZIS
- ;
- WRITER ;Write out the report.
- U IO
- I $E(IOST,1,2)="C-" W @IOF
- N EGT,EGTSUB,EGTEDT,EGTLDT,EGTTP,COUNT,RLEGT,ENRDT
- S (EGT,EGTSUB,EGTEDT,EGTLDT,EGTTP,RLEGT)="",COUNT=0
- I $$FINDCUR^DGENEGT()=0 W !,"No EGT setting on file.",! S EGT=0
- I $$FINDCUR^DGENEGT()'=0 D GETEGTS
- D PRESRT1
- D PSHEAD
- D DATA
- D ^%ZISC
- EXIT S:$D(ZTQUEUED) ZTREQ="@"
- D KVA^VADPT
- K ^TMP($J,"SS3")
- Q
- ;
- PSHEAD ;Header for the Preliminary Detailed Report.
- ;Get the date/time the report is run.
- N RDT,Y,DT1,DT2 S (RDT,Y,DT1,DT2)=""
- D NOW^%DTC S Y=% X ^DD("DD")
- S RDT=$P(Y,"@",1)_" @ "_$P($P(Y,"@",2),":",1,2)
- S DT1=$$FMTE^XLFDT(BDT),DT2=$$FMTE^XLFDT(EDT)
- S EGTSUB=$$EXTERNAL^DILFD(27.16,.03,"F",EGTSUB)
- I ((EGT=7)!(EGT=8)),EGTSUB="" S EGTSUB="ER"
- ;Write the header.
- W !,?((IOM-32)\2),"EGT Actual Summary Impact Report"
- W !,?((IOM-62)\2),"Date Range of Enrollment End Date: ",DT1," - ",DT2
- W !,?((IOM-41)\2),"Date/Time Report Run: ",RDT
- W !,?((IOM-45-$L(RLEGT_EGTSUB_EGTTP_EGTEDT))\2),"EGT Setting: ",RLEGT_EGTSUB," EGT Type: ",EGTTP," EGT Effective Date: ",EGTEDT
- W !,?((IOM-28-$L(EGTLDT))\2),"Date/Time Last EGT Setting: ",EGTLDT
- W !!,"IMPORTANT NOTE: Actual report is based on a comparison of the EGT Setting and the Enrollment Category as provided by HEC."
- W !!,"ENROLLMENT PRIORITY",?23,"TOTAL (UNIQUE SSN)",?43,"# INPATIENT",?57,"# OUTPATIENT",!
- Q
- ;
- DATA ;Get all the data for the report.
- N T,EP,TLT,INPT,OPT S (T,EP,TLT,INPT,OPT)=""
- F S T=$O(^TMP($J,"SS3",T)) Q:T="" D
- . S EP=T,TLT=$P($G(^TMP($J,"SS3",T)),U),INPT=$P($G(^TMP($J,"SS3",T)),U,2),OPT=$P($G(^TMP($J,"SS3",T)),U,3)
- . S COUNT=COUNT+TLT
- . W !,EP,?25,TLT,?45,INPT,?59,OPT
- W !,"TOTAL PATIENTS (UNIQUE SSNS) FOR THIS FACILITY: ",COUNT
- Q
- DGENRPT3 ;ALB/DW,LBD - EGT Actual Summary Impact Report ; 04/24/03 2:40pm ; 07/22/02 9:40am
- +1 ;;5.3;Registration;**232,306,417,456,491,513,1015**;Aug 13,1993;Build 21
- +2 ;
- +3 ;
- ENPT ;Actual Summary Report selected.
- +1 KILL ^TMP($JOB,"SS3"),^TMP($JOB,"RT3")
- +2 NEW BDT,EDT
- SET (BDT,EDT)=""
- +3 DO RPDT
- IF BDT="^"!(EDT="^")!($DATA(DTOUT))
- QUIT
- +4 DO PRINT
- +5 QUIT
- +6 ;
- RPDT ;Ask the user the Report Begin Date and Report End Date.
- +1 NEW DIR,X,Y
- +2 SET DIR(0)="DA^::E"
- +3 SET DIR("A")="Report Begin Date: "
- +4 SET DIR("?")="Please enter the Enrollment End Date as the beginning date that will be reported on."
- +5 DO ^DIR
- SET BDT=Y
- +6 IF BDT="^"
- QUIT
- +7 IF ($DATA(DTOUT))
- WRITE *7
- QUIT
- +8 ;
- RPDT2 SET DIR(0)="DA^::E"
- +1 SET DIR("A")="Report End Date: "
- +2 SET DIR("?")="Please enter the Enrollment End Date as the end date that will be reported on. Report End Date cannot be earlier than Report Begin Date."
- +3 DO ^DIR
- SET EDT=Y
- +4 IF EDT="^"
- QUIT
- +5 IF ($DATA(DTOUT))
- WRITE *7
- QUIT
- +6 IF EDT<BDT
- GOTO RPDT2
- +7 QUIT
- +8 ;
- GETEGTS ;First get the current EGT parameters from file #27.16.
- +1 NEW GETEGTS,REC,TP
- SET (GETEGTS,REC,TP)=""
- +2 SET REC=$$FINDCUR^DGENEGT()
- IF REC=0
- QUIT
- +3 SET TP=$$GET^DGENEGT(REC,.GETEGTS)
- +4 ;Get EGT Priority.
- +5 SET EGT=GETEGTS("PRIORITY")
- SET RLEGT=EGT
- +6 IF EGT=""
- WRITE !,"No EGT setting on file.",!
- SET EGT=0
- +7 SET EGTSUB=GETEGTS("SUBGRP")
- +8 ;Get EGT Effective Date.
- +9 SET EGTEDT=GETEGTS("EFFDATE")
- IF EGTEDT
- SET EGTEDT=$$FMTE^XLFDT(EGTEDT)
- +10 ;Get last EGT setting Date/Time.
- +11 SET EGTLDT=GETEGTS("ENTDATE")
- IF EGTLDT
- SET EGTLDT=$$FMTE^XLFDT(EGTLDT)
- +12 ;Get EGT Type.
- +13 SET EGTTP=GETEGTS("TYPE")
- +14 SET EGTTP=$$EXTERNAL^DILFD(27.16,.04,"F",EGTTP)
- IF EGTTP=""
- SET EGTTP="UNSPECIFIED"
- +15 QUIT
- +16 ;
- PRESRT1 ;Sort for patient's current record and get the potentially affected.
- +1 NEW IND,PRT,DFN,INPT,PSSN,PEDT,PCTRY,TMP,PRTSUB,ABV
- +2 SET (IND,PRT,DFN,PSSN,PEDT,PCTRY,TMP,PRTSUB,ABV)=""
- SET INPT="OUT"
- +3 KILL ^TMP($JOB,"SS3"),^TMP($JOB,"RT3")
- +4 FOR
- SET DFN=$ORDER(^DGEN(27.11,"C",DFN))
- IF DFN=""
- QUIT
- Begin DoDot:1
- +5 SET IND=$$FINDCUR^DGENA(DFN)
- IF IND
- Begin DoDot:2
- +6 DO EGTP
- +7 SET PEDT=$PIECE($GET(^DGEN(27.11,IND,0)),U,11)
- +8 SET PCTRY=$$CATEGORY^DGENA4(DFN)
- +9 IF ABV=0&(PCTRY="N")&(PEDT'<BDT)&(PEDT'>EDT)
- Begin DoDot:3
- +10 KILL VAIP(2)
- SET INPT="OUT"
- DO IN5^VADPT
- SET TMP=$PIECE($GET(VAIP(2)),U)
- IF TMP=1!(TMP=2)!(TMP=6)
- SET INPT="IN"
- +11 KILL VADM(2)
- DO DEM^VADPT
- SET PSSN=$PIECE($GET(VADM(2)),U)
- +12 SET ^TMP($JOB,"RT3",PRT,PSSN)=PRT_"^"_INPT
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +13 ;
- PRESRT2 ;Sort the sorted.
- +1 NEW CNT,ICNT,OCNT,J,K
- +2 SET (J,K)=""
- +3 FOR
- SET J=$ORDER(^TMP($JOB,"RT3",J))
- IF J=""
- QUIT
- Begin DoDot:1
- +4 SET (CNT,ICNT,OCNT)=0
- +5 FOR
- SET K=$ORDER(^TMP($JOB,"RT3",J,K))
- IF K=""
- QUIT
- Begin DoDot:2
- +6 SET INPT=$PIECE($GET(^TMP($JOB,"RT3",J,K)),U,2)
- +7 SET CNT=CNT+1
- IF INPT="IN"
- SET ICNT=ICNT+1
- IF INPT="OUT"
- SET OCNT=OCNT+1
- +8 SET ^TMP($JOB,"SS3",J)=CNT_"^"_ICNT_"^"_OCNT
- End DoDot:2
- End DoDot:1
- +9 KILL ^TMP($JOB,"RT3")
- +10 QUIT
- +11 ;
- EGTP ;Get patients EGT Priority.
- +1 SET (PRT,PRTSUB,ABV,ENRDT)=""
- +2 SET PRT=$PIECE($GET(^DGEN(27.11,IND,0)),U,7)
- +3 IF ((PRT=7)!(PRT=8))
- SET PRTSUB=$PIECE($GET(^DGEN(27.11,IND,0)),U,12)
- +4 SET ENRDT=$PIECE($GET(^DGEN(27.11,IND,0)),U,10)
- +5 IF 'ENRDT
- SET ENRDT=$PIECE($GET(^DGEN(27.11,IND,0)),U)
- +6 SET ABV=$$ABOVE^DGENEGT1(DFN,PRT,PRTSUB)
- +7 IF PRT=7!(PRT=8)
- Begin DoDot:1
- +8 SET PRTSUB=$$EXTERNAL^DILFD(27.11,.12,"F",PRTSUB)
- +9 IF PRTSUB=""
- SET PRTSUB="ER"
- End DoDot:1
- +10 SET PRT=PRT_PRTSUB
- +11 QUIT
- +12 ;
- PRINT ;Print the report.
- +1 NEW POP,IO,IOBS,IOF,IOHG,IOM,ION,IOPAR,IOS,IOSL,IOST,IOT,IOUPAR,IOXY,ZTSAVE,TSK,%ZIS,ZTRTN,ZTDESC
- +2 SET %ZIS="QM"
- DO ^%ZIS
- IF POP
- GOTO EXIT
- +3 IF $DATA(IO("Q"))
- Begin DoDot:1
- +4 SET ZTRTN="WRITER^DGENRPT3"
- SET ZTDESC="DG EGT Actual Summary Report."
- +5 SET ZTSAVE("BDT")=""
- SET ZTSAVE("EDT")=""
- +6 DO ^%ZTLOAD
- +7 SET TSK=$SELECT($DATA(ZTSK)=0:"C",1:"Y")
- +8 IF TSK="Y"
- WRITE !!,"Report queued! Task number: ",ZTSK
- +9 DO HOME^%ZIS
- End DoDot:1
- GOTO EXIT
- +10 ;
- WRITER ;Write out the report.
- +1 USE IO
- +2 IF $EXTRACT(IOST,1,2)="C-"
- WRITE @IOF
- +3 NEW EGT,EGTSUB,EGTEDT,EGTLDT,EGTTP,COUNT,RLEGT,ENRDT
- +4 SET (EGT,EGTSUB,EGTEDT,EGTLDT,EGTTP,RLEGT)=""
- SET COUNT=0
- +5 IF $$FINDCUR^DGENEGT()=0
- WRITE !,"No EGT setting on file.",!
- SET EGT=0
- +6 IF $$FINDCUR^DGENEGT()'=0
- DO GETEGTS
- +7 DO PRESRT1
- +8 DO PSHEAD
- +9 DO DATA
- +10 DO ^%ZISC
- EXIT IF $DATA(ZTQUEUED)
- SET ZTREQ="@"
- +1 DO KVA^VADPT
- +2 KILL ^TMP($JOB,"SS3")
- +3 QUIT
- +4 ;
- PSHEAD ;Header for the Preliminary Detailed Report.
- +1 ;Get the date/time the report is run.
- +2 NEW RDT,Y,DT1,DT2
- SET (RDT,Y,DT1,DT2)=""
- +3 DO NOW^%DTC
- SET Y=%
- XECUTE ^DD("DD")
- +4 SET RDT=$PIECE(Y,"@",1)_" @ "_$PIECE($PIECE(Y,"@",2),":",1,2)
- +5 SET DT1=$$FMTE^XLFDT(BDT)
- SET DT2=$$FMTE^XLFDT(EDT)
- +6 SET EGTSUB=$$EXTERNAL^DILFD(27.16,.03,"F",EGTSUB)
- +7 IF ((EGT=7)!(EGT=8))
- IF EGTSUB=""
- SET EGTSUB="ER"
- +8 ;Write the header.
- +9 WRITE !,?((IOM-32)\2),"EGT Actual Summary Impact Report"
- +10 WRITE !,?((IOM-62)\2),"Date Range of Enrollment End Date: ",DT1," - ",DT2
- +11 WRITE !,?((IOM-41)\2),"Date/Time Report Run: ",RDT
- +12 WRITE !,?((IOM-45-$LENGTH(RLEGT_EGTSUB_EGTTP_EGTEDT))\2),"EGT Setting: ",RLEGT_EGTSUB," EGT Type: ",EGTTP," EGT Effective Date: ",EGTEDT
- +13 WRITE !,?((IOM-28-$LENGTH(EGTLDT))\2),"Date/Time Last EGT Setting: ",EGTLDT
- +14 WRITE !!,"IMPORTANT NOTE: Actual report is based on a comparison of the EGT Setting and the Enrollment Category as provided by HEC."
- +15 WRITE !!,"ENROLLMENT PRIORITY",?23,"TOTAL (UNIQUE SSN)",?43,"# INPATIENT",?57,"# OUTPATIENT",!
- +16 QUIT
- +17 ;
- DATA ;Get all the data for the report.
- +1 NEW T,EP,TLT,INPT,OPT
- SET (T,EP,TLT,INPT,OPT)=""
- +2 FOR
- SET T=$ORDER(^TMP($JOB,"SS3",T))
- IF T=""
- QUIT
- Begin DoDot:1
- +3 SET EP=T
- SET TLT=$PIECE($GET(^TMP($JOB,"SS3",T)),U)
- SET INPT=$PIECE($GET(^TMP($JOB,"SS3",T)),U,2)
- SET OPT=$PIECE($GET(^TMP($JOB,"SS3",T)),U,3)
- +4 SET COUNT=COUNT+TLT
- +5 WRITE !,EP,?25,TLT,?45,INPT,?59,OPT
- End DoDot:1
- +6 WRITE !,"TOTAL PATIENTS (UNIQUE SSNS) FOR THIS FACILITY: ",COUNT
- +7 QUIT