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