- 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 Apr 23, 2025@18:57:50 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