DGHTRPT	;ALB/JRC - Home Telehealth Transmissions Report ; 1/9/06 9:22am
	;;5.3;Registration;**644**;Aug 13, 1993;Build 11
	;
EN	;entry point from option
	;Declare variable(s) and arrays
	N DGSD,DGED,I,SCANARR,MSGSTAT,FLAG
	N ZTDESC,ZTIO,ZTSAVE
	S FLAG=""
	;Prompt for starting and ending date
	D GETDATES^DGHTRPT1 Q:FLAG
	;Get ACK status
	D GETSTAT Q:FLAG
	;Get coordinator(s)
	D GETCOOR Q:FLAG
	;Queue Report
	S ZTIO=""
	S ZTDESC="Home Telehealth Transmission Report"
	F I="DGSD","DGED","SCANARR","MSGSTAT" S ZTSAVE(I)=""
	D EN^XUTMDEVQ("EN1^DGHTRPT",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,STOP,CNT,LN,PAGENUM,SCRNARR
	S DGED1=DGED+.9999,DGSD1=DGSD-.0001,(CNT,PAGENUM,STOP)=0
	S SCRNARR="^TMP(""DGHT"",$J,""SCRNARR"")"
	K @SCRNARR
	M @SCRNARR@("PROVIDERS")=SCANARR
	D HEADER
	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
	;
GETSTAT	;Prompt for message status to report
	N DIR,X,Y
	S DIR(0)="SC^1:ALL;2:ACCEPTED;3:REJECTED"
	S DIR("A")="Select message status for report"
	D ^DIR
	I $D(DIRUT) S FLAG=1 Q
	S MSGSTAT=Y
	Q
	;
GETCOOR	;Prompt for coordinator(s)
	N DIC,VAUTSTR,VAUTVB,VAUTNI,Y
	;Get provider selection
	S DIC="^VA(200,"
	S VAUTSTR="CARE COORDINATOR"
	S VAUTVB="SCANARR"
	S VAUTNI=2
	D FIRST^VAUTOMA
	I Y<0 S FLAG=1 Q
	Q
	;
GETDATA	;Get data
	;Declare variables
	N PATIENT,SSN,VENDOR,COORD,CONSULT,DATE,MSGID,ACKDATE,STATUS,REJECT
	N MSGTYPE,STATUS,DGDA0,DGDA1,DG0,DG1
	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 node and increment conunter
	...S DG0=$G(^DGHT(391.31,DGDA0,0))
	...Q:DG0=""
	...S DG1=$G(^DGHT(391.31,DGDA0,"TRAN",DGDA1,0))
	...Q:DG1=""
	...S PATIENT=$P(DG0,U,2),VENDOR=$P(DG0,U,3),CONSULT=$P(DG0,U,4)
	...S COORD=$P(DG0,U,5),DATE=$P(DG1,U,1),MSGID=$P(DG1,U,2)
	...S ACKDATE=$P(DG1,U,6),STATUS=$P(DG1,U,7),REJECT=$P(DG1,U,8)
	...S MSGTYPE=$P(DG1,U,4)
	...;Check Screens
	...Q:MSGSTAT'=1&(MSGSTAT'=$S(STATUS="A":2,STATUS="R":3,1:""))
	...Q:'@SCRNARR@("PROVIDERS")&'$D(@SCRNARR@("PROVIDERS",COORD))
	...;Resolve external values for PATIENT
	...S SSN=$E($$GET1^DIQ(2,PATIENT,.09,"I"),6,9)
	...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
	...S COORD=$$GET1^DIQ(200,COORD,.01,"E")
	...;Increment counter and save for later
	...S CNT=CNT+1
	...S ^TMP("DGHT",$J,CNT)=PATIENT_U_SSN_U_VENDOR_U_COORD_U_CONSULT_U_DATE_U_MSGID_U_ACKDATE_U_STATUS_U_REJECT_U_MSGTYPE
	Q
HEADER	;print header
	S PAGENUM=PAGENUM+1
	S $P(LN,"-",80)=""
	W @IOF
	W !,"Home Telehealth ",$S(MSGSTAT=1:"All",MSGSTAT=2:"Accepted",MSGSTAT=3:"Rejected",1:"")_" Transmissions Report ",?65,"Page: ",PAGENUM
	W !!,"Report for ",$$FMTE^XLFDT(DGSD)," thru ",$$FMTE^XLFDT(DGED)
	W !!,?1,"Patient",?22,"SSN",?28,"HT Vendor",?50,"Care Coordinator",?68,"Consult #"
	W !?3,"Event/Trans Date",?28,"Message ID",?50,"ACK Date/Time",?69,"Status"
	W !?3,"Message Type",?28,"Reject Message",?50,"Retransmitted"
	W !?1,LN
	Q
	;
DETAIL	;Print detailed line
	;Input  :  ^TMP("DGHT",$J) full global reference
	;          PATIENT   -   HTH Patient
	;          SSN       -   Patient SSN's last four
	;          VENDOR    -   HTH Vendor Server
	;          COORD     -   Care Coordinator
	;          CONSULT   -   CONSULT # file 123
	;          DATE      -   Event/Transmission Date
	;          MSGID     -   Message ID
	;          ACK DATE  -   ACK Date and Time
	;          STATUS    -   Registration Status
	;          REJECT    -   Reject message
	;          MSGTYPE   -   Message Type
	;Output  : None
	;Set acknowledgement status
	N RECORD,NODE,MSGID,ACKSTAT
	S (MSGID,ACKSTAT,NODE)="",RECORD=0
	F  S RECORD=$O(^TMP("DGHT",$J,RECORD)) Q:'RECORD  D  Q:STOP
	.S NODE=^TMP("DGHT",$J,RECORD)
	.S MSGID=$P(NODE,U,7),ACKSTAT=+$$MSGSTAT^HLUTIL(MSGID)
	.W !,?1,$E($P(NODE,U,1),1,20),?22,$P(NODE,U,2),?28,$E($P(NODE,U,3),1,20),?50,$E($P(NODE,U,4),1,16),?68,$P(NODE,U,5)
	.W !?3,$E($$FMTE^XLFDT($P(NODE,U,6),"1"),1,18),?28,$P(NODE,U,7),?47,$E($$FMTE^XLFDT($P(NODE,U,8),"1"),1,18),?69,$S($P(NODE,U,9)="A":"Accepted",$P(NODE,U,9)="R":"Rejected",ACKSTAT=1:"Pending TR",ACKSTAT=2:"Awaiting AA",1:"Unknown")
	.W !,?3,$S($P(NODE,U,11)="A":"Activation",$P(NODE,U,11)="I":"Inactivation",1:""),?28,$P(NODE,U,10)
	.;if there is data in the "HTHNOACK" node resolve number of retries
	.I $O(^DGHT(391.31,"HTHNOACK",$S(MSGID'="":MSGID,1:0),0)) D
	..N RECORD,TRANS,RETRANS
	..S (RECORD,TRANS,RETRANS)=0
	..S RECORD=$O(^DGHT(391.31,"HTHNOACK",MSGID,0)),TRANS=$O(^DGHT(391.31,"HTHNOACK",MSGID,RECORD,0)),RETRANS=$P($G(^DGHT(391.31,"HTHNOACK",MSGID,RECORD,TRANS)),U,1)
	..W ?50,RETRANS
	.W !
	.I $Y>(IOSL-5) D WAIT Q:STOP  D HEADER
	Q
	;
TOTAL	;Report totals
	W !!?1,"Total Number of Home Telehealth Records: ",?23,CNT
	Q
	;
WAIT	;End of page logic
	;Input   ; None
	;Output  ; STOP - Flag inidcating if printing should continue
	;                 1 = Stop     0 = Continue
	;
	N DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT
	;CRT - Prompt for continue
	I $E(IOST,1,2)="C-"&(IOSL'>24) D  Q
	.F  Q:$Y>(IOSL-3)  W !
	.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
