DGHTRPT1 ;ALB/JRC - Home Telehealth Transmissions Report ; 10/14/05 12:38pm
;;5.3;Registration;**644**;Aug 13, 1993;Build 11
;
EN ;entry point from option
;Declare variable(s) and arrays
N DGSD,DGED,I,ZTDESC,ZTIO,ZTSAVE,FLAG,SORT
S FLAG=0
;Get beginning and ending dates
D GETDATES Q:FLAG
;Get sort
D GETSORT Q:FLAG
;Queue Report
S ZTIO=""
S ZTDESC="Home Telehealth Transmission Report"
F I="DGSD","DGED","SORT" D
.S ZTSAVE(I)=""
D EN^XUTMDEVQ("EN1^DGHTRPT1",ZTDESC,.ZTSAVE)
Q
;
EN1 ;Tasked entry point
;Input : DGSD - FM format report start date
; DGED - FM format report end date
;
;Output : None
;
;Declare variables
N DGSD1,DGED1,CNT,ICNT,ACNT,LN,SCRNARR
N NODE,STOP,PAGENUM,FLAG
S DGED1=DGED+.9999,DGSD1=DGSD-.0001,(CNT,ACNT,ICNT,PAGENUM,STOP)=0
S SCRNARR="^TMP(""DGHT"",$J,""SCRNARR"")",FLAG=0
K @SCRNARR
D HEADER I STOP D EXIT Q
D GETDATA
I 'CNT D Q
.W !
.W !,"***********************************************"
.W !,"* NOTHING TO REPORT FOR SELECTED TIME FRAME *"
.W !,"***********************************************"
.D WAIT
D DETAIL I STOP D EXIT Q
D TOTAL
D EXIT
Q
;
GETDATES ;Prompt for start date
N DIR,DIRUT,X,Y
S DIR(0)="D^:NOW:EX"
S DIR("A")="Enter Report Start Date"
S DIR("B")=$$FMTE^XLFDT($$NOW^XLFDT,"1D")
D ^DIR
I $D(DIRUT) S FLAG=1 Q
S DGSD=Y
;Prompt for end date
K DIR,DIRUT,X,Y
S DIR(0)="D^:NOW:EX"
S DIR("A")="Enter Report Ending Date"
S DIR("B")=$$FMTE^XLFDT($$NOW^XLFDT,"1D")
D ^DIR
I $D(DIRUT) S FLAG=1 Q
S DGED=Y
Q
;
GETSORT ;Select sort, 1 for patient or 2 for trans date
;Declare variables
N DIR,X,Y,DIRUT,DIROUT,DTOUT,DUOUT
;Get sort
S DIR(0)="SC^1:Patient;2:Transmission Date;"
S DIR("A")="Select sorting criteria"
D ^DIR
I $D(DIRUT) S FLAG=1 Q
S SORT=Y
Q
;
GETDATA ;Get data
;Declare variables
N DG0,DG1,DGDA0,DGDA1,PATIENT,VENDOR,INACTDT,DATE,MSGTYPE,STATUS
F S DGSD1=$O(^DGHT(391.31,"C",DGSD1)) Q:(DGSD1>DGED1)!('DGSD1) D
.S DGDA0=0
.F S DGDA0=$O(^DGHT(391.31,"C",DGSD1,DGDA0)) Q:'DGDA0 D
..S DGDA1=0
..F S DGDA1=$O(^DGHT(391.31,"C",DGSD1,DGDA0,DGDA1)) Q:'DGDA1 D
...;Get data nodes and icrement conunter
...S DG0=$G(^DGHT(391.31,DGDA0,0))
...Q:DG0=""
...S DG1=$G(^DGHT(391.31,DGDA0,"TRAN",DGDA1,0))
...;Quit if there is no transaction data or type = inactivation
...Q:DG1=""
...Q:$P(DG1,U,4)="I"
...S PATIENT=$P(DG0,U,2),VENDOR=$P(DG0,U,3),INACTDT=$P(DG0,U,7)
...S DATE=$P(DG1,U,1),MSGTYPE=$P(DG1,U,4)
...I 'INACTDT S STATUS="Active"
...;If there is an Inactivation date validate trans status
...I INACTDT D
....S DGDA1=$O(^DGHT(391.31,DGDA0,"TRAN",DGDA1))
....S DG1=$G(^DGHT(391.31,DGDA0,"TRAN",DGDA1,0))
....S STATUS=$S($P(DG1,U,7)="A":"Inactive",$P(DG1,U,7)="R":"Active",1:"Active")
...;Resolve external values for PATIENT
...S PATIENT=$$GET1^DIQ(2,PATIENT,.01,"E")
...;Resolve external value for VENDOR
...S VENDOR=$$GET1^DIQ(4,VENDOR,.01,"E")
...;Resolve external value for COORD
...;Increment counters and save for later
...S CNT=CNT+1
...I STATUS="Active" S ACNT=ACNT+1
...I STATUS="Inactive" S ICNT=ICNT+1
...S ^TMP("DGHT",$J,$S(SORT=1:PATIENT,1:DATE),CNT)=PATIENT_U_STATUS_U_DATE_U_VENDOR
Q
S PAGENUM=PAGENUM+1
S $P(LN,"-",80)=""
W @IOF
W !,"Home Telehealth Patient Summary Report ",?65,"Page: ",PAGENUM
W !!,"Report for ",$$FMTE^XLFDT(DGSD)," thru ",$$FMTE^XLFDT(DGED)
W !!,?1,"Patient",?25,"Status",?34,"Date of Last Change",?56,"HT Vendor"
W !?1,LN
Q
;
DETAIL ;Print detailed line
;Input : ^TMP("DGHT",$J) full global reference
; PATIENT - HTH Patient
; STATUS - Registration Status
; DATE - Event/Transmission Date
; VENDOR - HTH Vendor Server
;Output : None
;Declare variables
N SORT,RECORD
S SORT=""
F S SORT=$O(^TMP("DGHT",$J,SORT)) Q:SORT="" D Q:STOP
.S RECORD=0 F S RECORD=$O(^TMP("DGHT",$J,SORT,RECORD)) Q:'RECORD!(STOP) D Q:STOP
..S NODE=^TMP("DGHT",$J,SORT,RECORD)
..W !,?1,$E($P(NODE,U,1),1,22),?25,$P(NODE,U,2),?34,$$FMTE^XLFDT($P(NODE,U,3),"2Z"),?56,$E($P(NODE,U,4),1,23)
..I $Y>(IOSL-5) D WAIT Q:STOP D HEADER
Q
;
TOTAL ;Report totals
W !!?1,"Total Number of Active Patient Record(s): ",?45,$J($FNUMBER(ACNT,",",0),8)
W !?1,"Total Number of Inactive Patient Record(s): ",?45,$J($FNUMBER(ICNT,",",0),8)
W !?1,"Total Number of Patient Record(s): ",?45,$J($FNUMBER(CNT,",",0),8)
Q
;
WAIT ;End of page logic
;Input ; None
;Output ; STOP - Flag inidcating 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
EXIT ;Kill temp global
K ^TMP("DGHT",$J)
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HDGHTRPT1 5156 printed Nov 22, 2024@17:53:47 Page 2
DGHTRPT1 ;ALB/JRC - Home Telehealth Transmissions Report ; 10/14/05 12:38pm
+1 ;;5.3;Registration;**644**;Aug 13, 1993;Build 11
+2 ;
EN ;entry point from option
+1 ;Declare variable(s) and arrays
+2 NEW DGSD,DGED,I,ZTDESC,ZTIO,ZTSAVE,FLAG,SORT
+3 SET FLAG=0
+4 ;Get beginning and ending dates
+5 DO GETDATES
if FLAG
QUIT
+6 ;Get sort
+7 DO GETSORT
if FLAG
QUIT
+8 ;Queue Report
+9 SET ZTIO=""
+10 SET ZTDESC="Home Telehealth Transmission Report"
+11 FOR I="DGSD","DGED","SORT"
Begin DoDot:1
+12 SET ZTSAVE(I)=""
End DoDot:1
+13 DO EN^XUTMDEVQ("EN1^DGHTRPT1",ZTDESC,.ZTSAVE)
+14 QUIT
+15 ;
EN1 ;Tasked entry point
+1 ;Input : DGSD - FM format report start date
+2 ; DGED - FM format report end date
+3 ;
+4 ;Output : None
+5 ;
+6 ;Declare variables
+7 NEW DGSD1,DGED1,CNT,ICNT,ACNT,LN,SCRNARR
+8 NEW NODE,STOP,PAGENUM,FLAG
+9 SET DGED1=DGED+.9999
SET DGSD1=DGSD-.0001
SET (CNT,ACNT,ICNT,PAGENUM,STOP)=0
+10 SET SCRNARR="^TMP(""DGHT"",$J,""SCRNARR"")"
SET FLAG=0
+11 KILL @SCRNARR
+12 DO HEADER
IF STOP
DO EXIT
QUIT
+13 DO GETDATA
+14 IF 'CNT
Begin DoDot:1
+15 WRITE !
+16 WRITE !,"***********************************************"
+17 WRITE !,"* NOTHING TO REPORT FOR SELECTED TIME FRAME *"
+18 WRITE !,"***********************************************"
+19 DO WAIT
End DoDot:1
QUIT
+20 DO DETAIL
IF STOP
DO EXIT
QUIT
+21 DO TOTAL
+22 DO EXIT
+23 QUIT
+24 ;
GETDATES ;Prompt for start date
+1 NEW DIR,DIRUT,X,Y
+2 SET DIR(0)="D^:NOW:EX"
+3 SET DIR("A")="Enter Report Start Date"
+4 SET DIR("B")=$$FMTE^XLFDT($$NOW^XLFDT,"1D")
+5 DO ^DIR
+6 IF $DATA(DIRUT)
SET FLAG=1
QUIT
+7 SET DGSD=Y
+8 ;Prompt for end date
+9 KILL DIR,DIRUT,X,Y
+10 SET DIR(0)="D^:NOW:EX"
+11 SET DIR("A")="Enter Report Ending Date"
+12 SET DIR("B")=$$FMTE^XLFDT($$NOW^XLFDT,"1D")
+13 DO ^DIR
+14 IF $DATA(DIRUT)
SET FLAG=1
QUIT
+15 SET DGED=Y
+16 QUIT
+17 ;
GETSORT ;Select sort, 1 for patient or 2 for trans date
+1 ;Declare variables
+2 NEW DIR,X,Y,DIRUT,DIROUT,DTOUT,DUOUT
+3 ;Get sort
+4 SET DIR(0)="SC^1:Patient;2:Transmission Date;"
+5 SET DIR("A")="Select sorting criteria"
+6 DO ^DIR
+7 IF $DATA(DIRUT)
SET FLAG=1
QUIT
+8 SET SORT=Y
+9 QUIT
+10 ;
GETDATA ;Get data
+1 ;Declare variables
+2 NEW DG0,DG1,DGDA0,DGDA1,PATIENT,VENDOR,INACTDT,DATE,MSGTYPE,STATUS
+3 FOR
SET DGSD1=$ORDER(^DGHT(391.31,"C",DGSD1))
if (DGSD1>DGED1)!('DGSD1)
QUIT
Begin DoDot:1
+4 SET DGDA0=0
+5 FOR
SET DGDA0=$ORDER(^DGHT(391.31,"C",DGSD1,DGDA0))
if 'DGDA0
QUIT
Begin DoDot:2
+6 SET DGDA1=0
+7 FOR
SET DGDA1=$ORDER(^DGHT(391.31,"C",DGSD1,DGDA0,DGDA1))
if 'DGDA1
QUIT
Begin DoDot:3
+8 ;Get data nodes and icrement conunter
+9 SET DG0=$GET(^DGHT(391.31,DGDA0,0))
+10 if DG0=""
QUIT
+11 SET DG1=$GET(^DGHT(391.31,DGDA0,"TRAN",DGDA1,0))
+12 ;Quit if there is no transaction data or type = inactivation
+13 if DG1=""
QUIT
+14 if $PIECE(DG1,U,4)="I"
QUIT
+15 SET PATIENT=$PIECE(DG0,U,2)
SET VENDOR=$PIECE(DG0,U,3)
SET INACTDT=$PIECE(DG0,U,7)
+16 SET DATE=$PIECE(DG1,U,1)
SET MSGTYPE=$PIECE(DG1,U,4)
+17 IF 'INACTDT
SET STATUS="Active"
+18 ;If there is an Inactivation date validate trans status
+19 IF INACTDT
Begin DoDot:4
+20 SET DGDA1=$ORDER(^DGHT(391.31,DGDA0,"TRAN",DGDA1))
+21 SET DG1=$GET(^DGHT(391.31,DGDA0,"TRAN",DGDA1,0))
+22 SET STATUS=$SELECT($PIECE(DG1,U,7)="A":"Inactive",$PIECE(DG1,U,7)="R":"Active",1:"Active")
End DoDot:4
+23 ;Resolve external values for PATIENT
+24 SET PATIENT=$$GET1^DIQ(2,PATIENT,.01,"E")
+25 ;Resolve external value for VENDOR
+26 SET VENDOR=$$GET1^DIQ(4,VENDOR,.01,"E")
+27 ;Resolve external value for COORD
+28 ;Increment counters and save for later
+29 SET CNT=CNT+1
+30 IF STATUS="Active"
SET ACNT=ACNT+1
+31 IF STATUS="Inactive"
SET ICNT=ICNT+1
+32 SET ^TMP("DGHT",$JOB,$SELECT(SORT=1:PATIENT,1:DATE),CNT)=PATIENT_U_STATUS_U_DATE_U_VENDOR
End DoDot:3
End DoDot:2
End DoDot:1
+33 QUIT
+1 SET PAGENUM=PAGENUM+1
+2 SET $PIECE(LN,"-",80)=""
+3 WRITE @IOF
+4 WRITE !,"Home Telehealth Patient Summary Report ",?65,"Page: ",PAGENUM
+5 WRITE !!,"Report for ",$$FMTE^XLFDT(DGSD)," thru ",$$FMTE^XLFDT(DGED)
+6 WRITE !!,?1,"Patient",?25,"Status",?34,"Date of Last Change",?56,"HT Vendor"
+7 WRITE !?1,LN
+8 QUIT
+9 ;
DETAIL ;Print detailed line
+1 ;Input : ^TMP("DGHT",$J) full global reference
+2 ; PATIENT - HTH Patient
+3 ; STATUS - Registration Status
+4 ; DATE - Event/Transmission Date
+5 ; VENDOR - HTH Vendor Server
+6 ;Output : None
+7 ;Declare variables
+8 NEW SORT,RECORD
+9 SET SORT=""
+10 FOR
SET SORT=$ORDER(^TMP("DGHT",$JOB,SORT))
if SORT=""
QUIT
Begin DoDot:1
+11 SET RECORD=0
FOR
SET RECORD=$ORDER(^TMP("DGHT",$JOB,SORT,RECORD))
if 'RECORD!(STOP)
QUIT
Begin DoDot:2
+12 SET NODE=^TMP("DGHT",$JOB,SORT,RECORD)
+13 WRITE !,?1,$EXTRACT($PIECE(NODE,U,1),1,22),?25,$PIECE(NODE,U,2),?34,$$FMTE^XLFDT($PIECE(NODE,U,3),"2Z"),?56,$EXTRACT($PIECE(NODE,U,4),1,23)
+14 IF $Y>(IOSL-5)
DO WAIT
if STOP
QUIT
DO HEADER
End DoDot:2
if STOP
QUIT
End DoDot:1
if STOP
QUIT
+15 QUIT
+16 ;
TOTAL ;Report totals
+1 WRITE !!?1,"Total Number of Active Patient Record(s): ",?45,$JUSTIFY($FNUMBER(ACNT,",",0),8)
+2 WRITE !?1,"Total Number of Inactive Patient Record(s): ",?45,$JUSTIFY($FNUMBER(ICNT,",",0),8)
+3 WRITE !?1,"Total Number of Patient Record(s): ",?45,$JUSTIFY($FNUMBER(CNT,",",0),8)
+4 QUIT
+5 ;
WAIT ;End of page logic
+1 ;Input ; None
+2 ;Output ; STOP - Flag inidcating if printing should continue
+3 ; 1 = Stop 0 = Continue
+4 ;
+5 SET STOP=0
+6 ;CRT - Prompt for continue
+7 IF $EXTRACT(IOST,1,2)="C-"&(IOSL'>24)
Begin DoDot:1
+8 FOR
if $Y>(IOSL-3)
QUIT
WRITE !
+9 NEW DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT
+10 SET DIR(0)="E"
+11 DO ^DIR
+12 SET STOP=$SELECT(Y'=1:1,1:0)
End DoDot:1
QUIT
+13 ;Background task - check taskman
+14 SET STOP=$$S^%ZTLOAD()
+15 IF STOP
Begin DoDot:1
+16 WRITE !,"*********************************************"
+17 WRITE !,"* PRINTING OF REPORT STOPPED AS REQUESTED *"
+18 WRITE !,"*********************************************"
End DoDot:1
+19 QUIT
EXIT ;Kill temp global
+1 KILL ^TMP("DGHT",$JOB)
+2 QUIT