Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: DGHTRPT

DGHTRPT.m

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