Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: SCRPW301

SCRPW301.m

Go to the documentation of this file.
SCRPW301 ; BPFO/JRC - Performance Monitor Detailed Report ; 2/3/04 7:33am
 ;;5.3;SCHEDULING;**292,335,1015**;AUG 13, 1993;Build 21
 ;
EN ;Main entry point for generation of local detailed report
 ;Declare variable(s) and arrays
 N SCRNARR,SORTARR
 S SCRNARR="^TMP(""SCRPW"",$J,""SCRNARR"")"
 S SORTARR="^TMP(""SCRPW"",$J,""SORTARR"")"
 K @SCRNARR,@SORTARR
 ;Get time limit
 I '$$TLMT^SCRPW302(SCRNARR) D EX1 Q
 ;Get date frame
 I '$$DATE^SCRPW302("","",SCRNARR) D EX1 Q
 ;Get division (one/many/all)
 I '$$DIV^SCRPW302(SCRNARR) D EX1 Q
 ;Get provider (one/many/all)
 I '$$PROV^SCRPW302(SCRNARR) D EX1 Q
 ;Get stop code (one/man/all)
 I '$$DSS^SCRPW303(SCRNARR) D EX1 Q
 ;Include scanned notes
 I '$$SCAN^SCRPW302(SCRNARR) D EX1 Q
 ;Get primary & secondary sort
 I '$$SORT^SCRPW303(SORTARR) D EX1 Q
 ;Queue report
 W !!,"** REPORT REQUIRES 132 COLUMNS TO PRINT CORRECTLY **",!!
 N ZTDESC,ZTIO,ZTSAVE,TMP
 S ZTIO=""
 S ZTDESC="Performance Monitor Detailed Report"
 S ZTSAVE("SCRNARR")=""
 S TMP=$$OREF^DILF(SCRNARR)
 S ZTSAVE(TMP)=""
 I $D(@SCRNARR)#2 S ZTSAVE(SCRNARR)=""
 S ZTSAVE("SORTARR")=""
 S TMP=$$OREF^DILF(SORTARR)
 S ZTSAVE(TMP)=""
 I $D(@SORTARR)#2 S ZTSAVE(SORTARR)=""
 D EN^XUTMDEVQ("EN1^SCRPW301",ZTDESC,.ZTSAVE)
 D EX1
 Q
 ;
EN1 ;Tasked entry point
 ;Input  : SCRNARR - Screen array
 ;         SORTARR - Sort array
 ;Output : None
 ;
 ;Declare variables
 N OUTARR,PAGENUM,ENODE,DFN,TMP
 N SUB1,SUB2,PTRENC,DIV,PROV,TNODE,STOP
 S OUTARR="^TMP(""SCRPW"",$J,""OUTARR"")"
 S STOP=0
 K @OUTARR
 ;Get data
 D GETDATA^SDPMUT1(SCRNARR,SORTARR,OUTARR)
 ;Print summary page
 S PAGENUM=1
 D SUMMARY,WAIT I STOP D EXIT Q
 ;Print detailed report
 I '$D(@OUTARR) D EXIT Q
 ;Loop through data
 S STOP=0
 S SUB1="" F  S SUB1=$O(@OUTARR@("DETAIL",SUB1)) Q:SUB1=""  D  Q:STOP
 .D PRTHEAD
 .S SUB2="" F  S SUB2=$O(@OUTARR@("DETAIL",SUB1,SUB2)) Q:SUB2=""  D  Q:STOP
 ..S DFN=0 F  S DFN=+$O(@OUTARR@("DETAIL",SUB1,SUB2,DFN)) Q:'DFN  D  Q:STOP
 ...S PTRENC=0 F  S PTRENC=+$O(@OUTARR@("DETAIL",SUB1,SUB2,DFN,PTRENC)) Q:'PTRENC  D  Q:STOP
 ....S INFO=$G(@OUTARR@("DETAIL",SUB1,SUB2,DFN,PTRENC))
 ....D PRTDTL
 ....I $Y>(IOSL-5) D WAIT Q:STOP  D PRTHEAD
 ....Q
 ...Q
 ..Q
 .Q:STOP
 .D SUB1SUM,WAIT
 .Q
 ;Clean up and quit
 D EXIT
 Q
 ;
SUMMARY ;Summary Page
 ;Input  : SCRNARR - Screen array
 ;         OUTARR - Data array
 ;         PAGENUM - Page number
 ;Output : None
 ;         PAGENUM is incremented by 1
 ;
 N DIV,PROV,DSS,INFO,PS
 I $E(IOST)="C" W @IOF
 W !,"Performance Monitor Detailed Report",?120,"Page: ",PAGENUM
 W !!,"Run Date: ",$$HTE^XLFDT($H)
 W !!,"Encounter Date Range: ",?15,$$FMTE^XLFDT($P(@SCRNARR@("RANGE"),U,1))
 W " to ",$$FMTE^XLFDT($P(@SCRNARR@("RANGE"),U,2))
 W !!,"Time limit for acceptable signatures: ",@SCRNARR@("TLMT")
 W !!,"Division(s): "
 I @SCRNARR@("DIVISION")=0 D
 .S PS=0
 .S DIV=0 F  S DIV=$O(@SCRNARR@("DIVISION",DIV)) Q:'DIV  D
 ..S INFO=@SCRNARR@("DIVISION",DIV)
 ..I ($L(INFO)+$X+3)>(IOM-1) W !,?13,"/ " S PS=0
 ..I PS W " / "
 ..W INFO
 ..S PS=1
 .Q
 I @SCRNARR@("DIVISION")=1 W "All"
 W !!,"Provider(s): "
 I @SCRNARR@("PROVIDERS")=0 D
 .S PS=0
 .S PROV=0 F  S PROV=$O(@SCRNARR@("PROVIDERS",PROV)) Q:'PROV  D
 ..S INFO=@SCRNARR@("PROVIDERS",PROV)
 ..I ($L(INFO)+$X+3)>(IOM-1) W !,?13,"/ " S PS=0
 ..I PS W " / "
 ..W INFO
 ..S PS=1
 .Q
 I @SCRNARR@("PROVIDERS")=1 W "All"
 W !!,"DSS ID(s)  : "
 I @SCRNARR@("DSS")=0 D
 .I @SCRNARR@("DSS-NTNL") W "All stop codes & credit pairs in national cohort" Q
 .S PS=0
 .S DSS=0 F  S DSS=$O(@SCRNARR@("DSS",DSS)) Q:'DSS  D
 ..S INFO=@SCRNARR@("DSS",DSS)
 ..I ($L(INFO)+$X+3)>(IOM-1) W !,?13,"/ " S PS=0
 ..I PS W " / "
 ..W INFO
 ..S PS=1
 I @SCRNARR@("DSS")=1 W "All"
 W !!,"Count encounters with scanned notes: ",$S(@SCRNARR@("SCANNED"):"YES",1:"NO")
 I '$D(@OUTARR) D  Q
 .W !
 .W !,"*********************************************"
 .W !,"*  NOTHING TO REPORT FOR SELECTED CRITERIA  *"
 .W !,"*********************************************"
 S INFO=$$SITE^VASITE()
 W !!,"Total for facility ",$P(INFO,"^",2)," (",$P(INFO,"^",3),")"
 I $$S^%ZTLOAD() W !! Q
 S INFO=$G(@OUTARR@("SUMMARY"))
 D PRTSUMS
 Q
 ;
PRTSUMS ;Print summaries
 ;Input  : INFO - Summary information to print
 ;         SCRNARR - Screen array
 ;Output : None
 ;
 N VAL
 W !,"Encounters (denominator): ",+$P(INFO,U,1)
 W ?34,"Compliant Notes (numerator): ",+$P(INFO,U,2)
 W ?69,"Compliance Rate: "
 S VAL=0 I +$P(INFO,U,1)&($P(INFO,U,1)-$P(INFO,U,7))>0 S VAL=100*($P(INFO,U,2)/($P(INFO,U,1)-$P(INFO,U,7)))
 W $TR($J(VAL,3,0)," ")_" %"
 W !,?5,"Encounter Providers: ",+$P(INFO,U,4)
 W ?34,"DSS IDs: ",+$P(INFO,U,5),?53,"Ave Time: "
 S VAL=0 I +$P(INFO,U,8) S VAL=$P(INFO,U,6)/$P(INFO,U,8)
 W $TR($J(VAL,3,0)," ")
 I $G(@SCRNARR@("SCANNED")) W ?71,"Scanned Notes: ",+$P(INFO,U,7)
 Q
 ;
WAIT ;End of page logic
 ;Input  : None
 ;Output : STOP - Flag indicating if printing should continue
 ;                1 = Stop     0 = Continue
 ;
 S STOP=0
 ;CRT - Prompt for continue
 I $E(IOST,1,2)="C-"&(IOSL'>24) D  Q
 .F  Q:$Y>(IOSL-3)  W !
 .N DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT
 .S DIR(0)="E"
 .D ^DIR
 .S STOP=$S(Y'=1:1,1:0)
 ;Background task - check TaskMan
 S STOP=$$S^%ZTLOAD()
 I STOP D
 .W !,"*********************************************"
 .W !,"*  PRINTING OF REPORT STOPPED AS REQUESTED  *"
 .W !,"*********************************************"
 Q
 ;
PRTHEAD ;Report Heading
 ;Input  : SORTARR - Sort array
 ;         PAGENUM - Page number
 ;         SUB1 - Primary sort value
 ;Output : None
 ;         PAGENUM is incremented by 1
 ;
 N SORT,SORTTEXT,DASH,TYPE
 S SORT=$G(@SORTARR)
 S SORTTEXT=$G(@SORTARR@("TEXT"))
 S PAGENUM=PAGENUM+1
 S $P(DASH,"-",IOM)="-"
 W @IOF
 W !,"Performance indicator detailed report",?120,"Page: ",PAGENUM
 W !!,"Report for ",$P(SORTTEXT,U,1)," "
 S TYPE=$P(SORT,U,1) D
 .I TYPE=1 W $P(SUB1,U,1)," (",$P(SUB1,U,2),")" Q
 .I TYPE=5 W $$FMTE^XLFDT(SUB1,"D") Q
 .W SUB1
 W " sorted by ",$P(SORTTEXT,U,2)
 W !!,"Encounter",?40,"Primary Encounter",?62,"DSS"
 W ?89,"Acceptable Provider",?112,"Date",?122,"Time"
 W !,"Date",?11,"Patient Name",?34,"SSN",?40,"Provider",?62,"ID"
 W ?67,"Clinic Name",?89,"Signing Progress Note",?112,"Signed"
 W ?122,"Span"
 W !,$E(DASH,1,9),?11,$E(DASH,1,21),?34,$E(DASH,1,4),?40,$E(DASH,1,20)
 W ?62,$E(DASH,1,3),?67,$E(DASH,1,20),?89,$E(DASH,1,21),?112,$E(DASH,1,8)
 W ?122,$E(DASH,1,5)
 Q
 ;
PRTDTL ;Print detail line
 ;Input  : INFO - Detail information to print
 ;         DFN - Pointer to Patient
 ;         PTRENC - Pointer to Outpatient Encounter
 ;Output : None
 ;
 N PROV,ENODE,VAL,VADM,VAERR,VA
 D DEM^VADPT
 S PROV=$$ENCPROV^SDPMUT2(PTRENC)
 S ENODE=$G(^SCE(PTRENC,0))
 S VAL=$$FMTE^XLFDT($P(ENODE,U,1),"2DF")
 W !,$TR(VAL," ","0")
 W ?11,$E(VADM(1),1,21)
 W ?34,$E($P(VADM(2),U,1),6,10)
 I PROV W ?40,$E($P($G(^VA(200,PROV,0)),U,1),1,20)
 I 'PROV W ?40,"Provider Unknown"
 S VAL=$P(ENODE,U,3)
 S VAL=$P($G(^DIC(40.7,VAL,0)),U,2)
 S:VAL="" VAL="???"
 W ?62,VAL
 S VAL=$P(ENODE,U,4)
 S VAL=$P($G(^SC(VAL,0)),U,1)
 S:VAL="" VAL="Clinic Unknown"
 W ?67,$E(VAL,1,20)
 S VAL=$P(INFO,U,1)
 I VAL W ?89,$E($P($G(^VA(200,VAL,0)),U,1),1,21)
 S VAL=$P(INFO,U,2)
 I VAL S VAL=$$FMTE^XLFDT(VAL,"2DF") W ?112,$TR(VAL," ","0")
 W ?122,$P(INFO,U,3)
 Q
 ;
SUB1SUM ;Summary for primary sort
 ;Input  : SORTARR - Sort array
 ;         OUTARR - Data array
 ;         SUB1 - Primary sort value (1st subscript in OUTARR)
 ;Output : None
 ;
 N SORT,SORTTEXT,TYPE,INFO
 I $Y>(IOSL+6) D WAIT Q:STOP  D PRTHEAD
 S SORT=$G(@SORTARR)
 S SORTTEXT=$G(@SORTARR@("TEXT"))
 S INFO=$G(@OUTARR@("SUBTOTAL",SUB1))
 W !!,"Total for ",$P(SORTTEXT,U,1)," "
 S TYPE=$P(SORT,U,1) D
 .I TYPE=1 W $P(SUB1,U,1)," (",$P(SUB1,U,2),")" Q
 .I TYPE=5 W $$FMTE^XLFDT(SUB1,"D") Q
 .W SUB1
 D PRTSUMS
 Q
 ;
EXIT ;Kill temporary arrays
 K @OUTARR
EX1 K @SCRNARR,@SORTARR
 Q