DGMSTR4 ;ALB/SCK - MST History report ; 7/9/01 4:07pm
;;5.3;Registration;**195,379,1015**;Aug 13, 1993;Build 21
EN ; Main entry point
N VAUTN,VAUTNI,VA,Y,ZTSAVE
;
; Select patients to include
S VAUTNI=0
D PATIENT^VAUTOMA
I '$G(VAUTN),$O(VAUTN(""))="" Q
;
N ZTSAVE
S ZTSAVE("VAUTN")=""
D EN^XUTMDEVQ("RPT^DGMSTR4","MST History Report",.ZTSAVE)
D HOME^%ZIS
Q
;
RPT ; Generate and print report
N RPTREF,MSTNAME,DFN,DGQUIT,FRSTPAS
;
S RPTREF="^TMP(""MST RPT"","_$J_")"
K @RPTREF
D BUILD(.VAUTN,RPTREF)
Q:$$HEADER
;
; Print report from contents of ^TMP global
; If not data found, then print message on form.
I '$D(@RPTREF) D Q
. W !?2,"No data found for report."
;
S MSTNAME=""
F S MSTNAME=$O(@RPTREF@(MSTNAME)) Q:'(MSTNAME]"") D Q:$G(DGQUIT)
. S DFN=$P(MSTNAME,U,2)
. D PID^VADPT
. W !?2,$E($P(MSTNAME,U),1,$L($P(MSTNAME,U)))," ("_VA("PID")_")"
. S MSTDT=""
. F S MSTDT=($O(@RPTREF@(MSTNAME,MSTDT))) Q:'MSTDT D Q:$G(DGQUIT)
.. S DGMST=@RPTREF@(MSTNAME,MSTDT)
.. W !?2,$$FMTE^XLFDT(-MSTDT)
.. W ?21,$J($P(DGMST,U,2),2)
.. W ?30,$$GET1^DIQ(4,(+$P(DGMST,U,7))_",",99)
.. W ?36,$E($$NAME^DGMSTAPI($P(DGMST,U,4)),1,25)
.. W ?61,$E($$NAME^DGMSTAPI($P(DGMST,U,5)),1,25)
. W !
. I $Y+5>$G(IOSL) D Q:$G(DGQUIT)
.. S DGQUIT=$$HEADER
;
D KVA^VADPT
K @RPTREF
Q
;
BUILD(PTARRY,RPARRY) ; Build TMP global of patients to include in report form array
; of patient names passed in (PTARRY)
;
N DFN,MSTDT,DGMST,MSTIEN
;
S DFN=""
F S DFN=$O(^DGMS(29.11,"APDT",DFN)) Q:'DFN D
. I 'PTARRY,'$D(PTARRY(DFN)) Q
. S MSTDT=""
. F S MSTDT=$O(^DGMS(29.11,"APDT",DFN,MSTDT),-1) Q:'MSTDT D
.. S DGMST=$$GETSTAT^DGMSTAPI(DFN,MSTDT)
.. Q:+DGMST<1
.. S @RPARRY@($P(^DPT(DFN,0),U)_U_DFN,-MSTDT)=DGMST
Q
;
N SDASH,LINE,STR
I $G(FRSTPAS),$E(IOST,1,2)="C-" D PAUSE^VALM1 Q:'Y 1
I '$G(FRSTPAS) D
. S FRSTPAS=1
. W @IOF
E D
. W @IOF
S STR="MST HISTORY REPORT"
S $P(LINE," ",(IOM/2)-($L(STR)/2))=""
W !,LINE_STR
S STR="Print Date: "_$$FMTE^XLFDT($$NOW^XLFDT,"D")
K LINE S $P(LINE," ",(IOM/2)-($L(STR)/2))=""
W !,LINE_STR
;
W !!?2,"Status Date",?21,"Status",?30,"Site",?36,"Provider",?61,"Who entered status",!
S $P(SDASH,"-",IOM+1)=""
W SDASH,!
Q 0
DGMSTR4 ;ALB/SCK - MST History report ; 7/9/01 4:07pm
+1 ;;5.3;Registration;**195,379,1015**;Aug 13, 1993;Build 21
EN ; Main entry point
+1 NEW VAUTN,VAUTNI,VA,Y,ZTSAVE
+2 ;
+3 ; Select patients to include
+4 SET VAUTNI=0
+5 DO PATIENT^VAUTOMA
+6 IF '$GET(VAUTN)
IF $ORDER(VAUTN(""))=""
QUIT
+7 ;
+8 NEW ZTSAVE
+9 SET ZTSAVE("VAUTN")=""
+10 DO EN^XUTMDEVQ("RPT^DGMSTR4","MST History Report",.ZTSAVE)
+11 DO HOME^%ZIS
+12 QUIT
+13 ;
RPT ; Generate and print report
+1 NEW RPTREF,MSTNAME,DFN,DGQUIT,FRSTPAS
+2 ;
+3 SET RPTREF="^TMP(""MST RPT"","_$JOB_")"
+4 KILL @RPTREF
+5 DO BUILD(.VAUTN,RPTREF)
+6 IF $$HEADER
QUIT
+7 ;
+8 ; Print report from contents of ^TMP global
+9 ; If not data found, then print message on form.
+10 IF '$DATA(@RPTREF)
Begin DoDot:1
+11 WRITE !?2,"No data found for report."
End DoDot:1
QUIT
+12 ;
+13 SET MSTNAME=""
+14 FOR
SET MSTNAME=$ORDER(@RPTREF@(MSTNAME))
IF '(MSTNAME]"")
QUIT
Begin DoDot:1
+15 SET DFN=$PIECE(MSTNAME,U,2)
+16 DO PID^VADPT
+17 WRITE !?2,$EXTRACT($PIECE(MSTNAME,U),1,$LENGTH($PIECE(MSTNAME,U)))," ("_VA("PID")_")"
+18 SET MSTDT=""
+19 FOR
SET MSTDT=($ORDER(@RPTREF@(MSTNAME,MSTDT)))
IF 'MSTDT
QUIT
Begin DoDot:2
+20 SET DGMST=@RPTREF@(MSTNAME,MSTDT)
+21 WRITE !?2,$$FMTE^XLFDT(-MSTDT)
+22 WRITE ?21,$JUSTIFY($PIECE(DGMST,U,2),2)
+23 WRITE ?30,$$GET1^DIQ(4,(+$PIECE(DGMST,U,7))_",",99)
+24 WRITE ?36,$EXTRACT($$NAME^DGMSTAPI($PIECE(DGMST,U,4)),1,25)
+25 WRITE ?61,$EXTRACT($$NAME^DGMSTAPI($PIECE(DGMST,U,5)),1,25)
End DoDot:2
IF $GET(DGQUIT)
QUIT
+26 WRITE !
+27 IF $Y+5>$GET(IOSL)
Begin DoDot:2
+28 SET DGQUIT=$$HEADER
End DoDot:2
IF $GET(DGQUIT)
QUIT
End DoDot:1
IF $GET(DGQUIT)
QUIT
+29 ;
+30 DO KVA^VADPT
+31 KILL @RPTREF
+32 QUIT
+33 ;
BUILD(PTARRY,RPARRY) ; Build TMP global of patients to include in report form array
+1 ; of patient names passed in (PTARRY)
+2 ;
+3 NEW DFN,MSTDT,DGMST,MSTIEN
+4 ;
+5 SET DFN=""
+6 FOR
SET DFN=$ORDER(^DGMS(29.11,"APDT",DFN))
IF 'DFN
QUIT
Begin DoDot:1
+7 IF 'PTARRY
IF '$DATA(PTARRY(DFN))
QUIT
+8 SET MSTDT=""
+9 FOR
SET MSTDT=$ORDER(^DGMS(29.11,"APDT",DFN,MSTDT),-1)
IF 'MSTDT
QUIT
Begin DoDot:2
+10 SET DGMST=$$GETSTAT^DGMSTAPI(DFN,MSTDT)
+11 IF +DGMST<1
QUIT
+12 SET @RPARRY@($PIECE(^DPT(DFN,0),U)_U_DFN,-MSTDT)=DGMST
End DoDot:2
End DoDot:1
+13 QUIT
+14 ;
+1 NEW SDASH,LINE,STR
+2 IF $GET(FRSTPAS)
IF $EXTRACT(IOST,1,2)="C-"
DO PAUSE^VALM1
IF 'Y
QUIT 1
+3 IF '$GET(FRSTPAS)
Begin DoDot:1
+4 SET FRSTPAS=1
+5 WRITE @IOF
End DoDot:1
+6 IF '$TEST
Begin DoDot:1
+7 WRITE @IOF
End DoDot:1
+8 SET STR="MST HISTORY REPORT"
+9 SET $PIECE(LINE," ",(IOM/2)-($LENGTH(STR)/2))=""
+10 WRITE !,LINE_STR
+11 SET STR="Print Date: "_$$FMTE^XLFDT($$NOW^XLFDT,"D")
+12 KILL LINE
SET $PIECE(LINE," ",(IOM/2)-($LENGTH(STR)/2))=""
+13 WRITE !,LINE_STR
+14 ;
+15 WRITE !!?2,"Status Date",?21,"Status",?30,"Site",?36,"Provider",?61,"Who entered status",!
+16 SET $PIECE(SDASH,"-",IOM+1)=""
+17 WRITE SDASH,!
+18 QUIT 0