DGNTR1 ;ALB/RPM - N/T RADIUM PENDING VERIFICATION REPORT ; 10/4/01 11:05am
;;5.3;Registration;**397,1015**;Aug 13, 1993;Build 21
;
;This report lists all patients with an entry in the NTR HISTORY
;file (#28.11) that are pending verification.
;The report can be tasked using TaskMan and the EN^DGNTR1 entry point.
;The option allows manual generation of the report using a user selected
;output device.
;
Q ;No direct entry
;
EN ;Entry point
I '$D(ZTQUEUED) D MAN Q
;
QEN ;Start point for TaskMan queuing
D START
Q
;
MAN ;Start point for manual report allows sort order and device selection
N DGSORT
S DGSORT=$$ASKSTAT^DGNTQ("Enter the sort type","NAME","SM^N:NAME;D:DATE")
Q:DGSORT=0
I $$DEVICE() D START
Q
;
DEVICE() ;Allow user selection of output device
; Input: none
;
; Output: Function value Interpretation
; 0 User decides to queue or not print report.
; 1 Device selected to generate report NOW.
;
N OK,IOP,POP,%ZIS,DGX
S OK=1
S %ZIS="MQ"
D ^%ZIS
S:POP OK=0
I OK,$D(IO("Q")) D
. N ZTRTN,ZTDESC,ZTSAVE,ZTSK
. S ZTRTN="START^DGNTR1"
. S ZTSAVE("DGSORT")=""
. S ZTDESC="Current N/T Radium Treatment Pending Verification report."
. F DGX=1:1:20 D ^%ZTLOAD Q:$G(ZTSK)
. W !,$S($D(ZTSK):"Request "_ZTSK_" Queued!",1:"Request Cancelled!"),!
. D HOME^%ZIS
. S OK=0
Q OK
;
START ;
D LOOP(DGSORT)
D PRINT(DGSORT)
D EXIT
Q
;
LOOP(DGSORT) ;Locate all entries that are pending verification
;and build ^TMP("DGNT",$J, with data
N DGIEN ;NTR record IEN
N DGSTAT ;Screening Status
K ^TMP("DGNT",$J)
S DGIEN=0
F DGSTAT=2,3 D
. F S DGIEN=$O(^DGNT(28.11,"AST",DGSTAT,1,DGIEN)) Q:'DGIEN D
. . D BLDTMP(DGIEN,DGSORT,DGSTAT)
Q
;
BLDTMP(DGIEN,DGSORT,DGST) ;^TMP("DGNT",$J global builder
; Build TMP file based on sort selection
;
; Input:
; DGIEN - IEN to patient's NTR record
; DGSORT - sort type ("N"ame or "D"ate)
; DGST - screening status (2-Pend Doc, 3-Pend DX)
;
N DGX,DGNT,DFN
N DGNAME,DGSSN,DGHNC,DGNTR,DGAVI,DGSUB,DGDATE,VADM
N X,X1,X2,Y
;validate input parameters
Q:'$G(DGIEN)
Q:'$G(DGST)
S DGSORT=$G(DGSORT)
;
S DGX=$S(DGSORT="D":"DGDATE",1:"DGNAME")
Q:'$$GETREC^DGNTAPI(DGIEN,"DGNT")
S DFN=+$G(DGNT("DFN"))
I DFN>0 D
. Q:'+$G(DGNT("PRIM")) ;if not NTR PRIMARY ENTRY, quit out
. D ^VADPT
. S DGNAME=VADM(1)
. S DGSSN=$P(VADM(2),U,2)
. S DGNTR=$P($G(DGNT("NTR")),"^")
. S DGAVI=$P($G(DGNT("AVI")),"^")
. S DGSUB=$P($G(DGNT("SUB")),"^")
. S DGDATE=$G(DGNT("EDT"))
. S ^TMP("DGNT",$J,DGST,@DGX,DGIEN)=DGNAME_U_DGSSN_U_DGNTR_U_DGAVI_U_DGSUB_U_DGDATE
. S ^TMP("DGNT",$J,"TOT"_DGST)=$G(^TMP("DGNT",$J,"TOT"_DGST))+1
. S ^TMP("DGNT",$J,"TOT")=$G(^TMP("DGNT",$J,"TOT"))+1
Q
;
PRINT(DGSORT) ;
U IO
N DGST
N DGX,DGIEN
N DGFIRST,DGLINE
N DGSITE,DGSTNUM,DGSTTN,DGSTN
N DGQUIT,DGPAGE
N DGDDT ;current date/time for header display
S DGSORT=$G(DGSORT)
S DGSITE=$$SITE^VASITE
S DGSTNUM=$P(DGSITE,U,3),DGSTN=$P(DGSITE,U,2)
S DGSTTN=$$NAME^VASITE(DT)
S DGSTN=$S($G(DGSTTN)]"":DGSTTN,1:$G(DGSTN))
S DGQUIT=0
S DGPAGE=0
S DGX=$S(DGSORT="D":"DGDATE",1:"DGNAME")
S DGDDT=$$FMTE^XLFDT($$NOW^XLFDT,"D")
D HEAD(DGDDT)
I '$D(^TMP("DGNT",$J)) D Q
. W !!!?20,"**** No records to report. ****"
S @DGX=""
F DGST=2,3 D
. F S @DGX=$O(^TMP("DGNT",$J,DGST,@DGX)) Q:@DGX']"" D Q:DGQUIT
.. S DGIEN=""
.. F S DGIEN=$O(^TMP("DGNT",$J,DGST,@DGX,DGIEN)) Q:DGIEN="" D Q:DGQUIT
... D:$Y>(IOSL-4) HEAD(DGDDT)
... Q:DGQUIT
... S DGLINE=$G(^TMP("DGNT",$J,DGST,@DGX,DGIEN))
... W !,$P(DGLINE,U),?30,$P(DGLINE,U,2),?43,$P(DGLINE,U,3),?47,$P(DGLINE,U,4),?51,$P(DGLINE,U,5),?54,$$FMTE^XLFDT($P(DGLINE,U,6))
. Q:DGQUIT
. W !!?5,"Total Patients Pending "_$S(DGST=2:"Documentation",1:"Diagnosis")_" Verification: "_+$G(^TMP("DGNT",$J,"TOT"_DGST))
. I DGST=2 D HEAD(DGDDT)
;
;Shutdown if stop task requested
I DGQUIT W:$D(ZTQUEUED) !!,"REPORT STOPPED AT USER REQUEST" Q
;
W !!?5,"Total Patients Pending Verification: "_$G(^TMP("DGNT",$J,"TOT"))
I $G(DGPAGE)>0,$E(IOST)="C" K DIR S DIR(0)="E" D ^DIR K DIR S:+Y=0 DGQUIT=1
Q
;
HEAD(DGDT) ;Print/Display page header
;
; Input:
; DGDT - current date/time for display
; Output
; none
;
I $D(ZTQUEUED),$$S^%ZTLOAD S (ZTSTOP,DGQUIT)=1 Q
I $G(DGPAGE)>0,$E(IOST)="C" K DIR S DIR(0)="E" D ^DIR K DIR S:+Y=0 DGQUIT=1
Q:DGQUIT
W @IOF
S DGPAGE=$G(DGPAGE)+1
W !,DGDT,?15,"N/T RADIUM TREATMENT PENDING VERIFICATION REPORT",?70,"Page: ",$G(DGPAGE)
W !,"STATION: "_$G(DGSTN)
W !!,"Patient Name",?30,"SSN",?42,"NT",?46,"Avi",?50,"Sub",?54,"Date/Time Entered"
W !,"-----------------------",?30,"-----------",?42,"---",?46,"---",?50,"---",?54,"----------------------"
Q
;
EXIT ;
I $D(ZTQUEUED) S ZTREQ="@"
K ^TMP("DGNT",$J)
I '$D(ZTQUEUED) D
. K %ZIS,POP
. D ^%ZISC,HOME^%ZIS
Q
DGNTR1 ;ALB/RPM - N/T RADIUM PENDING VERIFICATION REPORT ; 10/4/01 11:05am
+1 ;;5.3;Registration;**397,1015**;Aug 13, 1993;Build 21
+2 ;
+3 ;This report lists all patients with an entry in the NTR HISTORY
+4 ;file (#28.11) that are pending verification.
+5 ;The report can be tasked using TaskMan and the EN^DGNTR1 entry point.
+6 ;The option allows manual generation of the report using a user selected
+7 ;output device.
+8 ;
+9 ;No direct entry
QUIT
+10 ;
EN ;Entry point
+1 IF '$DATA(ZTQUEUED)
DO MAN
QUIT
+2 ;
QEN ;Start point for TaskMan queuing
+1 DO START
+2 QUIT
+3 ;
MAN ;Start point for manual report allows sort order and device selection
+1 NEW DGSORT
+2 SET DGSORT=$$ASKSTAT^DGNTQ("Enter the sort type","NAME","SM^N:NAME;D:DATE")
+3 IF DGSORT=0
QUIT
+4 IF $$DEVICE()
DO START
+5 QUIT
+6 ;
DEVICE() ;Allow user selection of output device
+1 ; Input: none
+2 ;
+3 ; Output: Function value Interpretation
+4 ; 0 User decides to queue or not print report.
+5 ; 1 Device selected to generate report NOW.
+6 ;
+7 NEW OK,IOP,POP,%ZIS,DGX
+8 SET OK=1
+9 SET %ZIS="MQ"
+10 DO ^%ZIS
+11 IF POP
SET OK=0
+12 IF OK
IF $DATA(IO("Q"))
Begin DoDot:1
+13 NEW ZTRTN,ZTDESC,ZTSAVE,ZTSK
+14 SET ZTRTN="START^DGNTR1"
+15 SET ZTSAVE("DGSORT")=""
+16 SET ZTDESC="Current N/T Radium Treatment Pending Verification report."
+17 FOR DGX=1:1:20
DO ^%ZTLOAD
IF $GET(ZTSK)
QUIT
+18 WRITE !,$SELECT($DATA(ZTSK):"Request "_ZTSK_" Queued!",1:"Request Cancelled!"),!
+19 DO HOME^%ZIS
+20 SET OK=0
End DoDot:1
+21 QUIT OK
+22 ;
START ;
+1 DO LOOP(DGSORT)
+2 DO PRINT(DGSORT)
+3 DO EXIT
+4 QUIT
+5 ;
LOOP(DGSORT) ;Locate all entries that are pending verification
+1 ;and build ^TMP("DGNT",$J, with data
+2 ;NTR record IEN
NEW DGIEN
+3 ;Screening Status
NEW DGSTAT
+4 KILL ^TMP("DGNT",$JOB)
+5 SET DGIEN=0
+6 FOR DGSTAT=2,3
Begin DoDot:1
+7 FOR
SET DGIEN=$ORDER(^DGNT(28.11,"AST",DGSTAT,1,DGIEN))
IF 'DGIEN
QUIT
Begin DoDot:2
+8 DO BLDTMP(DGIEN,DGSORT,DGSTAT)
End DoDot:2
End DoDot:1
+9 QUIT
+10 ;
BLDTMP(DGIEN,DGSORT,DGST) ;^TMP("DGNT",$J global builder
+1 ; Build TMP file based on sort selection
+2 ;
+3 ; Input:
+4 ; DGIEN - IEN to patient's NTR record
+5 ; DGSORT - sort type ("N"ame or "D"ate)
+6 ; DGST - screening status (2-Pend Doc, 3-Pend DX)
+7 ;
+8 NEW DGX,DGNT,DFN
+9 NEW DGNAME,DGSSN,DGHNC,DGNTR,DGAVI,DGSUB,DGDATE,VADM
+10 NEW X,X1,X2,Y
+11 ;validate input parameters
+12 IF '$GET(DGIEN)
QUIT
+13 IF '$GET(DGST)
QUIT
+14 SET DGSORT=$GET(DGSORT)
+15 ;
+16 SET DGX=$SELECT(DGSORT="D":"DGDATE",1:"DGNAME")
+17 IF '$$GETREC^DGNTAPI(DGIEN,"DGNT")
QUIT
+18 SET DFN=+$GET(DGNT("DFN"))
+19 IF DFN>0
Begin DoDot:1
+20 ;if not NTR PRIMARY ENTRY, quit out
IF '+$GET(DGNT("PRIM"))
QUIT
+21 DO ^VADPT
+22 SET DGNAME=VADM(1)
+23 SET DGSSN=$PIECE(VADM(2),U,2)
+24 SET DGNTR=$PIECE($GET(DGNT("NTR")),"^")
+25 SET DGAVI=$PIECE($GET(DGNT("AVI")),"^")
+26 SET DGSUB=$PIECE($GET(DGNT("SUB")),"^")
+27 SET DGDATE=$GET(DGNT("EDT"))
+28 SET ^TMP("DGNT",$JOB,DGST,@DGX,DGIEN)=DGNAME_U_DGSSN_U_DGNTR_U_DGAVI_U_DGSUB_U_DGDATE
+29 SET ^TMP("DGNT",$JOB,"TOT"_DGST)=$GET(^TMP("DGNT",$JOB,"TOT"_DGST))+1
+30 SET ^TMP("DGNT",$JOB,"TOT")=$GET(^TMP("DGNT",$JOB,"TOT"))+1
End DoDot:1
+31 QUIT
+32 ;
PRINT(DGSORT) ;
+1 USE IO
+2 NEW DGST
+3 NEW DGX,DGIEN
+4 NEW DGFIRST,DGLINE
+5 NEW DGSITE,DGSTNUM,DGSTTN,DGSTN
+6 NEW DGQUIT,DGPAGE
+7 ;current date/time for header display
NEW DGDDT
+8 SET DGSORT=$GET(DGSORT)
+9 SET DGSITE=$$SITE^VASITE
+10 SET DGSTNUM=$PIECE(DGSITE,U,3)
SET DGSTN=$PIECE(DGSITE,U,2)
+11 SET DGSTTN=$$NAME^VASITE(DT)
+12 SET DGSTN=$SELECT($GET(DGSTTN)]"":DGSTTN,1:$GET(DGSTN))
+13 SET DGQUIT=0
+14 SET DGPAGE=0
+15 SET DGX=$SELECT(DGSORT="D":"DGDATE",1:"DGNAME")
+16 SET DGDDT=$$FMTE^XLFDT($$NOW^XLFDT,"D")
+17 DO HEAD(DGDDT)
+18 IF '$DATA(^TMP("DGNT",$JOB))
Begin DoDot:1
+19 WRITE !!!?20,"**** No records to report. ****"
End DoDot:1
QUIT
+20 SET @DGX=""
+21 FOR DGST=2,3
Begin DoDot:1
+22 FOR
SET @DGX=$ORDER(^TMP("DGNT",$JOB,DGST,@DGX))
IF @DGX']""
QUIT
Begin DoDot:2
+23 SET DGIEN=""
+24 FOR
SET DGIEN=$ORDER(^TMP("DGNT",$JOB,DGST,@DGX,DGIEN))
IF DGIEN=""
QUIT
Begin DoDot:3
+25 IF $Y>(IOSL-4)
DO HEAD(DGDDT)
+26 IF DGQUIT
QUIT
+27 SET DGLINE=$GET(^TMP("DGNT",$JOB,DGST,@DGX,DGIEN))
+28 WRITE !,$PIECE(DGLINE,U),?30,$PIECE(DGLINE,U,2),?43,$PIECE(DGLINE,U,3),?47,$PIECE(DGLINE,U,4),?51,$PIECE(DGLINE,U,5),?54,$$FMTE^XLFDT($PIECE(DGLINE,U,6))
End DoDot:3
IF DGQUIT
QUIT
End DoDot:2
IF DGQUIT
QUIT
+29 IF DGQUIT
QUIT
+30 WRITE !!?5,"Total Patients Pending "_$SELECT(DGST=2:"Documentation",1:"Diagnosis")_" Verification: "_+$GET(^TMP("DGNT",$JOB,"TOT"_DGST))
+31 IF DGST=2
DO HEAD(DGDDT)
End DoDot:1
+32 ;
+33 ;Shutdown if stop task requested
+34 IF DGQUIT
IF $DATA(ZTQUEUED)
WRITE !!,"REPORT STOPPED AT USER REQUEST"
QUIT
+35 ;
+36 WRITE !!?5,"Total Patients Pending Verification: "_$GET(^TMP("DGNT",$JOB,"TOT"))
+37 IF $GET(DGPAGE)>0
IF $EXTRACT(IOST)="C"
KILL DIR
SET DIR(0)="E"
DO ^DIR
KILL DIR
IF +Y=0
SET DGQUIT=1
+38 QUIT
+39 ;
HEAD(DGDT) ;Print/Display page header
+1 ;
+2 ; Input:
+3 ; DGDT - current date/time for display
+4 ; Output
+5 ; none
+6 ;
+7 IF $DATA(ZTQUEUED)
IF $$S^%ZTLOAD
SET (ZTSTOP,DGQUIT)=1
QUIT
+8 IF $GET(DGPAGE)>0
IF $EXTRACT(IOST)="C"
KILL DIR
SET DIR(0)="E"
DO ^DIR
KILL DIR
IF +Y=0
SET DGQUIT=1
+9 IF DGQUIT
QUIT
+10 WRITE @IOF
+11 SET DGPAGE=$GET(DGPAGE)+1
+12 WRITE !,DGDT,?15,"N/T RADIUM TREATMENT PENDING VERIFICATION REPORT",?70,"Page: ",$GET(DGPAGE)
+13 WRITE !,"STATION: "_$GET(DGSTN)
+14 WRITE !!,"Patient Name",?30,"SSN",?42,"NT",?46,"Avi",?50,"Sub",?54,"Date/Time Entered"
+15 WRITE !,"-----------------------",?30,"-----------",?42,"---",?46,"---",?50,"---",?54,"----------------------"
+16 QUIT
+17 ;
EXIT ;
+1 IF $DATA(ZTQUEUED)
SET ZTREQ="@"
+2 KILL ^TMP("DGNT",$JOB)
+3 IF '$DATA(ZTQUEUED)
Begin DoDot:1
+4 KILL %ZIS,POP
+5 DO ^%ZISC
DO HOME^%ZIS
End DoDot:1
+6 QUIT