| 1 | SCDXMSG2 ;ALB/JRP - AMB CARE TRANSMISSION BULLETINS;01-JUL-1996 ; 1/17/02 5:07pm | 
|---|
| 2 | ;;5.3;Scheduling;**44,121,128,66,132,247,393,466**;AUG 13, 1993;Build 2 | 
|---|
| 3 | ; | 
|---|
| 4 | CMPLBULL(SENT,ERRCNT,IPCNT,IPERR) ;Send completion bulletin | 
|---|
| 5 | ; | 
|---|
| 6 | ;Input  : SENT - Number of encounters sent to NPCDB (Defaults to 0) | 
|---|
| 7 | ;         ERRCNT - Contains the number of errored encounters | 
|---|
| 8 | ;         IPCNT  - Number of inpatient encounters | 
|---|
| 9 | ;         IPERR  - Contains the number of inpatient errored encounters | 
|---|
| 10 | ;Output : None | 
|---|
| 11 | ; | 
|---|
| 12 | ;Declare variables | 
|---|
| 13 | N MSGTXT,XMB,XMTEXT,XMY,XMDUZ,XMDT,XMZ,XMITPTR,LINE | 
|---|
| 14 | N ENCPTR,DELPTR,ENCDATE,ENCLOC,NAME,TMP,ENCZERO,SSN,PATZERO | 
|---|
| 15 | ;Deliver bulletin | 
|---|
| 16 | S XMB="SCDX AMBCARE TO NPCDB SUMMARY" | 
|---|
| 17 | S XMB(1)=+$G(SENT) | 
|---|
| 18 | S XMB(2)=+$G(ERRCNT) | 
|---|
| 19 | S XMB(3)=+$G(SENT)-(+$G(IPCNT)) | 
|---|
| 20 | S XMB(4)=+$G(IPCNT) | 
|---|
| 21 | S XMB(5)=+$G(ERRCNT)-(+$G(IPERR)) | 
|---|
| 22 | S XMB(6)=+$G(IPERR) | 
|---|
| 23 | D ^XMB | 
|---|
| 24 | Q | 
|---|
| 25 | ; | 
|---|
| 26 | ERRBULL(REASON) ;Send error bulletin | 
|---|
| 27 | ; | 
|---|
| 28 | ;Input  : REASON - Why transmission of data could not be completed | 
|---|
| 29 | ;Output : None | 
|---|
| 30 | ; | 
|---|
| 31 | ;Check input | 
|---|
| 32 | S REASON=$G(REASON) | 
|---|
| 33 | ;Declare variables | 
|---|
| 34 | N MSGTXT,XMB,XMTEXT,XMY,XMDUZ,XMDT,XMZ | 
|---|
| 35 | ;Set message text | 
|---|
| 36 | S MSGTXT(1)="Transmission of data to the National Patient Care Database" | 
|---|
| 37 | S MSGTXT(2)=" " | 
|---|
| 38 | S MSGTXT(3)="could not be completed for the following reason:" | 
|---|
| 39 | S MSGTXT(4)=" " | 
|---|
| 40 | S MSGTXT(5)="  "_REASON | 
|---|
| 41 | ;Set bulletin subject | 
|---|
| 42 | S XMB(1)="** TRANSMISSION OF DATA TO NPCDB NOT COMPLETED **" | 
|---|
| 43 | ;Deliver bulletin | 
|---|
| 44 | S XMB="SCDX AMBCARE TO NPCDB SUMMARY" | 
|---|
| 45 | S XMTEXT="MSGTXT(" | 
|---|
| 46 | D ^XMB | 
|---|
| 47 | ;Done | 
|---|
| 48 | Q | 
|---|
| 49 | ; | 
|---|
| 50 | LATEACT(XMITPTR,ACT,USER,DATE) ;Send late activity bulletin | 
|---|
| 51 | ; | 
|---|
| 52 | ;Input :  XMITPTR - Pointer to TRANSMITTED OUTPATIENT ENCOUNTER file | 
|---|
| 53 | ;                   (#409.73) that was acted upon | 
|---|
| 54 | ;         ACT - Late activity that occurred | 
|---|
| 55 | ;               Free text (defaults to transmission event of XMITPTR) | 
|---|
| 56 | ;         USER - Who did the activity | 
|---|
| 57 | ;                Pointer to NEW PERSON file (#200) | 
|---|
| 58 | ;                (defaults to causer of event of XMITPTR) | 
|---|
| 59 | ;         DATE - Date/time activity took place | 
|---|
| 60 | ;                FileMan format (defaults to event date of XMITPTR) | 
|---|
| 61 | ;Output : None | 
|---|
| 62 | ;Notes  : Late activity bulletin will be sent to members of the mail | 
|---|
| 63 | ;         group contained in the LATE ACTIVITY MAIL GROUP field (#217) | 
|---|
| 64 | ;         of the MAS PARAMETER file (#43).  The bulletin will not be | 
|---|
| 65 | ;         sent if this mail group has not been defined. | 
|---|
| 66 | ;       : POSTMASTER (DUZ=.5) will be converted to 'ACRP NIGHTLY | 
|---|
| 67 | ;         TRANSMISSION BUILDER' as the causer of the event | 
|---|
| 68 | ;       : Bulletin will default to a transmission event if no ACT | 
|---|
| 69 | ;         is specified | 
|---|
| 70 | ; | 
|---|
| 71 | ;Check input | 
|---|
| 72 | S XMITPTR=+$G(XMITPTR) | 
|---|
| 73 | Q:('$D(^SD(409.73,XMITPTR,0))) | 
|---|
| 74 | S ACT=$G(ACT) | 
|---|
| 75 | S USER=+$G(USER) | 
|---|
| 76 | S DATE=+$G(DATE) | 
|---|
| 77 | ;Declare variables | 
|---|
| 78 | N NODE,ENCPTR,DELPTR,ENCDATE,XMDUZ,XMTEXT,XMSUB,XMY,MSGL,SMTB,SMTN | 
|---|
| 79 | N CLOSED,DFN,CLINIC,DIV,VA,LASTXMIT,LASTACK,LASTCODE,HISTARR | 
|---|
| 80 | ;Send bulletin to site specified mail group | 
|---|
| 81 | ; Don't send if mail group not defined or is invalid | 
|---|
| 82 | S NODE=$G(^DG(43,1,"SCLR")) | 
|---|
| 83 | Q:('$P(NODE,"^",17)) | 
|---|
| 84 | D XMY^SDUTL2($P(NODE,"^",17),0,0) | 
|---|
| 85 | Q:('$D(XMY)) | 
|---|
| 86 | ;Get zero node of transmission file | 
|---|
| 87 | S NODE=$G(^SD(409.73,XMITPTR,0)) | 
|---|
| 88 | ;Set default values (if applicable) | 
|---|
| 89 | I (ACT="") D  Q:(ACT="") | 
|---|
| 90 | .S ACT=+$P(NODE,"^",5) | 
|---|
| 91 | .I (ACT=1)!(ACT=2) S ACT="Creation/Editing of encounter" Q | 
|---|
| 92 | .I (ACT=3) S ACT="Deletion of encounter" Q | 
|---|
| 93 | .S ACT="Retransmission of encounter" | 
|---|
| 94 | I ('USER) D | 
|---|
| 95 | .S USER=+$P(NODE,"^",7) | 
|---|
| 96 | .S:('USER) USER=+$G(DUZ) | 
|---|
| 97 | S:(USER=.5) USER="ACRP NIGHTLY TRANSMISSION BUILDER" | 
|---|
| 98 | I ('DATE) S DATE=+$P(NODE,"^",6) S:('DATE) DATE=$$DT^XLFDT() | 
|---|
| 99 | ;Get pointer to encounter and deleted encounter | 
|---|
| 100 | S ENCPTR=+$P(NODE,"^",2) | 
|---|
| 101 | S DELPTR=+$P(NODE,"^",3) | 
|---|
| 102 | ;Get zero node of [deleted] encounter | 
|---|
| 103 | S NODE="" | 
|---|
| 104 | S:(ENCPTR) NODE=$G(^SCE(ENCPTR,0)) | 
|---|
| 105 | S:('ENCPTR) NODE=$G(^SD(409.74,DELPTR,1)) | 
|---|
| 106 | ;Get date/time of encounter | 
|---|
| 107 | S ENCDATE=+NODE | 
|---|
| 108 | ;Get DFN | 
|---|
| 109 | S DFN=+$P(NODE,"^",2) | 
|---|
| 110 | ;Get clinic pointer | 
|---|
| 111 | S CLINIC=+$P(NODE,"^",4) | 
|---|
| 112 | ;Get division | 
|---|
| 113 | S DIV=+$P(NODE,"^",11) | 
|---|
| 114 | ;Get transmission history | 
|---|
| 115 | S (LASTXMIT,LASTACK,LASTCODE)="" | 
|---|
| 116 | S HISTARR=$NA(^TMP("SCDXMSG2",$J,"HIST")) | 
|---|
| 117 | K @HISTARR | 
|---|
| 118 | I ($$HST4XMIT^SCDXFU13(XMITPTR,HISTARR,1)) D | 
|---|
| 119 | .;Get last xmit date | 
|---|
| 120 | .S LASTXMIT=+$O(@HISTARR@(""),-1) | 
|---|
| 121 | .Q:('LASTXMIT) | 
|---|
| 122 | .;Get ack info for last xmit | 
|---|
| 123 | .S LASTACK=$G(@HISTARR@(LASTXMIT)) | 
|---|
| 124 | .S LASTCODE=$P(LASTACK,"^",3) | 
|---|
| 125 | .S LASTACK=$P(LASTACK,"^",2) | 
|---|
| 126 | K @HISTARR | 
|---|
| 127 | ;Determine the level of acceptance for data base credit and/or | 
|---|
| 128 | ;workload credit | 
|---|
| 129 | S MSGL=$$XMIT4DBC^SCDXFU04(XMITPTR) | 
|---|
| 130 | Q:MSGL<1!(MSGL>4)  ; Only four levels of messages are defined | 
|---|
| 131 | ; 0 - no message, transmit | 
|---|
| 132 | ; 5 - no transmit; error | 
|---|
| 133 | ;Build message | 
|---|
| 134 | S SMTB="The following activity occurred " | 
|---|
| 135 | S XMTEXT(1)=SMTB_"after the National Patient Care" | 
|---|
| 136 | S XMTEXT(2)="Database was closed" | 
|---|
| 137 | I MSGL=4 S XMTEXT(2)=XMTEXT(2)_"." | 
|---|
| 138 | I MSGL=3 D | 
|---|
| 139 | .S XMTEXT(2)=XMTEXT(2)_" for yearly workload credit but will be sent" | 
|---|
| 140 | .S XMTEXT(3)="to the NPCD for historical accuracy of the database." | 
|---|
| 141 | I MSGL=2 D | 
|---|
| 142 | .S XMTEXT(2)=XMTEXT(2)_" for monthly workload credit but will be sent" | 
|---|
| 143 | .S XMTEXT(3)="to the NPCD to be included in the fiscal year totals." | 
|---|
| 144 | I MSGL=1 D | 
|---|
| 145 | .; the rolling 20-day message is based on setup of ROLLD=19 in | 
|---|
| 146 | .; CLOSEOUT^SCDXFU04 | 
|---|
| 147 | .S XMTEXT(1)=SMTB_"20 or more days after the encounter" | 
|---|
| 148 | .S XMTEXT(2)="date but is valid for workload credit and will be sent" | 
|---|
| 149 | .S XMTEXT(3)="to the National Patient Care Database." | 
|---|
| 150 | S SMTN=$S(MSGL=4:3,1:4) S XMTEXT(SMTN)=" " | 
|---|
| 151 | S XMTEXT(SMTN+1)="  Activity: "_ACT | 
|---|
| 152 | S XMTEXT(SMTN+2)="Entered By: "_$S(USER:$P($G(^VA(200,USER,0)),"^",1),1:USER) | 
|---|
| 153 | S XMTEXT(SMTN+3)="Entered On: "_$$FMTE^XLFDT(DATE) | 
|---|
| 154 | S XMTEXT(SMTN+4)=" " | 
|---|
| 155 | S XMTEXT(SMTN+5)="        Encounter Date: "_$$FMTE^XLFDT(ENCDATE)_"  (#"_$S(ENCPTR:ENCPTR,1:DELPTR)_")" | 
|---|
| 156 | S:('ENCPTR) XMTEXT(SMTN+5)=XMTEXT(SMTN+5)_"  ** Deleted Encounter **" | 
|---|
| 157 | S XMTEXT(SMTN+6)="Last NPCD Transmission: "_$S(LASTXMIT:$$FMTE^XLFDT(LASTXMIT),1:"Encounter data never transmitted ")_"  (#"_XMITPTR_")" | 
|---|
| 158 | S XMTEXT(SMTN+7)="Last NPCD Ack Received: "_$S(LASTACK:$$FMTE^XLFDT(+LASTACK),1:"Acknowledgement not received") | 
|---|
| 159 | S:(LASTACK) XMTEXT(SMTN+7)=XMTEXT(SMTN+7)_"  ("_$S((LASTCODE'=""):$$EXTERNAL^DILFD(409.73,15,"",LASTCODE),1:"Status unknown")_")" | 
|---|
| 160 | S XMTEXT(SMTN+8)=" " | 
|---|
| 161 | S XMTEXT(SMTN+9)=" Clinic: "_$P($G(^SC(CLINIC,0)),"^",1) | 
|---|
| 162 | D PID^VADPT6 | 
|---|
| 163 | S XMTEXT(SMTN+10)="Patient: "_$P($G(^DPT(DFN,0)),"^",1)_"  ("_VA("BID")_")" | 
|---|
| 164 | ;Send message | 
|---|
| 165 | S XMSUB="Late ACRP Related Activity"_$$DIV^SDAMEVT1(DIV) | 
|---|
| 166 | S XMTEXT="XMTEXT(" | 
|---|
| 167 | S XMDUZ=.5 | 
|---|
| 168 | S:(USER) XMY(USER)="" | 
|---|
| 169 | D ^XMD    ; REMOVE COMMENT | 
|---|
| 170 | ;Done | 
|---|
| 171 | Q | 
|---|