[614] | 1 | BSDX31 ; IHS/OIT/HMW - WINDOWS SCHEDULING RPCS ;
|
---|
| 2 | ;;2.0;IHS WINDOWS SCHEDULING;;NOV 01, 2007
|
---|
| 3 | ;
|
---|
| 4 | ;
|
---|
| 5 | NOSHOWD(BSDXY,BSDXAPTID,BSDXNS) ;EP
|
---|
| 6 | ;Entry point for debugging
|
---|
| 7 | ;
|
---|
| 8 | ;D DEBUG^%Serenji("NOSHOW^BSDX31(.BSDXY,BSDXAPTID,BSDXNS)")
|
---|
| 9 | Q
|
---|
| 10 | ;
|
---|
| 11 | NOSHOW(BSDXY,BSDXAPTID,BSDXNS) ;EP
|
---|
| 12 | ;Called by BSDX NOSHOW
|
---|
| 13 | ;Sets appointment noshow flag in BSDX APPOINTMENT file
|
---|
| 14 | ;BSDXAPTID is entry number in BSDX APPOINTMENT file
|
---|
| 15 | ;BSDXNS = 1: NOSHOW, 0: CANCEL NOSHO
|
---|
| 16 | ;Calls CANCEL^BSDAPI to set noshow data in ^DPT
|
---|
| 17 | ;Returns error code in recordset field ERRORID
|
---|
| 18 | ;
|
---|
| 19 | N BSDXNOD,BSDXPATID,BSDXSTART,BSDXID,BSDXI,BSDXZ,BSDXERR,BSDXMSG,BSDXFDA,BSDXIENS
|
---|
| 20 | N BSDXNOEV
|
---|
| 21 | S BSDXNOEV=1 ;Don't execute protocol
|
---|
| 22 | ;
|
---|
| 23 | D ^XBKVAR S X="ETRAP^BSDX31",@^%ZOSF("TRAP")
|
---|
| 24 | S BSDXI=0
|
---|
| 25 | K ^BSDXTMP($J)
|
---|
| 26 | S BSDXY="^BSDXTMP("_$J_")"
|
---|
| 27 | S ^BSDXTMP($J,BSDXI)="I00020ERRORID^T00030ERRORTEXT"_$C(30)
|
---|
| 28 | S BSDXI=BSDXI+1
|
---|
| 29 | TSTART
|
---|
| 30 | I '+BSDXAPTID D ERR(0,"BSDX31: Invalid Appointment ID") Q
|
---|
| 31 | I '$D(^BSDXAPPT(BSDXAPTID,0)) D ERR(0,"BSDX31: Invalid Appointment ID") Q
|
---|
| 32 | S BSDXNS=+BSDXNS
|
---|
| 33 | I BSDXNS'=1&(BSDXNS'=0) D ERR(0,"BSDX31: Invalid No Show value") Q
|
---|
| 34 | ;
|
---|
| 35 | ;Edit BSDX APPOINTMENT entry NOSHOW field
|
---|
| 36 | S BSDXNOD=^BSDXAPPT(BSDXAPTID,0)
|
---|
| 37 | I BSDXNOD="" D ERR(0,"BSDX31: Invalid Appointment ID") Q
|
---|
| 38 | S BSDXPATID=$P(BSDXNOD,U,5)
|
---|
| 39 | S BSDXSTART=$P(BSDXNOD,U)
|
---|
| 40 | ;
|
---|
| 41 | D BSDXNOS(BSDXAPTID,BSDXNS)
|
---|
| 42 | I $D(BSDXMSG("DIERR")) S BSDXMSG=$G(BSDXMSG("DIERR",1,"TEXT",1)) D ERR(0,"BSDX31: "_BSDXMSG) Q
|
---|
| 43 | ;
|
---|
| 44 | S BSDXSC1=$P(BSDXNOD,U,7) ;RESOURCEID
|
---|
| 45 | I BSDXSC1]"",$D(^BSDXRES(BSDXSC1,0)) D I $G(BSDXZ)]"" S BSDXERR="BSDX31: APNOSHO Returned: "_BSDXZ D ERR(0,BSDXERR) Q
|
---|
| 46 | . S BSDXNOD=^BSDXRES(BSDXSC1,0)
|
---|
| 47 | . S BSDXSC1=$P(BSDXNOD,U,4) ;HOSPITAL LOCATION
|
---|
| 48 | . I BSDXSC1]"",$D(^SC(BSDXSC1,0)) D APNOSHO(.BSDXZ,BSDXSC1,BSDXPATID,BSDXSTART,BSDXNS)
|
---|
| 49 | ;
|
---|
| 50 | TCOMMIT
|
---|
| 51 | S BSDXI=BSDXI+1
|
---|
| 52 | S ^BSDXTMP($J,BSDXI)="1^"_$C(30)
|
---|
| 53 | S BSDXI=BSDXI+1
|
---|
| 54 | S ^BSDXTMP($J,BSDXI)=$C(31)
|
---|
| 55 | Q
|
---|
| 56 | ;
|
---|
| 57 | APNOSHO(BSDXZ,BSDXSC1,BSDXDFN,BSDXSD,BSDXNS) ;
|
---|
| 58 | ; update file 2 info
|
---|
| 59 | ;Set noshow for patient BSDXDFN in clinic BSDXSC1
|
---|
| 60 | ;at time BSDXSD
|
---|
| 61 | N BSDXC,%H,BSDXCDT,BSDXIEN
|
---|
| 62 | N BSDXIENS,BSDXFDA,BSDXMSG
|
---|
| 63 | S %H=$H D YMD^%DTC
|
---|
| 64 | S BSDXCDT=X+%
|
---|
| 65 | ;
|
---|
| 66 | S BSDXIENS=BSDXSD_","_BSDXDFN_","
|
---|
| 67 | I +BSDXNS D
|
---|
| 68 | . S BSDXFDA(2.98,BSDXIENS,3)="N"
|
---|
| 69 | . S BSDXFDA(2.98,BSDXIENS,14)=DUZ
|
---|
| 70 | . S BSDXFDA(2.98,BSDXIENS,15)=BSDXCDT
|
---|
| 71 | E D
|
---|
| 72 | . S BSDXFDA(2.98,BSDXIENS,3)=""
|
---|
| 73 | . S BSDXFDA(2.98,BSDXIENS,14)=""
|
---|
| 74 | . S BSDXFDA(2.98,BSDXIENS,15)=""
|
---|
| 75 | K BSDXIEN
|
---|
| 76 | D UPDATE^DIE("","BSDXFDA","BSDXIEN","BSDXMSG")
|
---|
| 77 | S BSDXZ=$G(BSDXMSG("DIERR",1,"TEXT",1))
|
---|
| 78 | Q
|
---|
| 79 | ;
|
---|
| 80 | BSDXNOS(BSDXAPTID,BSDXNS) ;
|
---|
| 81 | ;
|
---|
| 82 | N BSDXFDA,BSDXIENS
|
---|
| 83 | S BSDXIENS=BSDXAPTID_","
|
---|
| 84 | S BSDXFDA(9002018.4,BSDXIENS,.1)=BSDXNS ;NOSHOW
|
---|
| 85 | D FILE^DIE("","BSDXFDA","BSDXMSG")
|
---|
| 86 | ;
|
---|
| 87 | Q
|
---|
| 88 | ;
|
---|
| 89 | NOSEVT(BSDXPAT,BSDXSTART,BSDXSC) ;EP Called by BSDX NOSHOW APPOINTMENT event
|
---|
| 90 | ;when appointments NOSHOW via PIMS interface.
|
---|
| 91 | ;Propagates NOSHOW to BSDXAPPT and raises refresh event to running GUI clients
|
---|
| 92 | ;
|
---|
| 93 | Q:+$G(BSDXNOEV)
|
---|
| 94 | Q:'+$G(BSDXSC)
|
---|
| 95 | Q:$G(SDATA("AFTER","STATUS"))["AUTO RE-BOOK"
|
---|
| 96 | N BSDXSTAT,BSDXFOUND,BSDXRES
|
---|
| 97 | S BSDXSTAT=1
|
---|
| 98 | S:$G(SDATA("BEFORE","STATUS"))["NO-SHOW" BSDXSTAT=0
|
---|
| 99 | S BSDXFOUND=0
|
---|
| 100 | I $D(^BSDXRES("ALOC",BSDXSC)) S BSDXRES=$O(^BSDXRES("ALOC",BSDXSC,0)) S BSDXFOUND=$$NOSEVT1(BSDXRES,BSDXSTART,BSDXPAT,BSDXSTAT)
|
---|
| 101 | I BSDXFOUND D NOSEVT3(BSDXRES) Q
|
---|
| 102 | I $D(^BXDXRES("ASSOC",BSDXSC)) S BSDXRES=$O(^BSDXRES("ASSOC",BSDXSC,0)) S BSDXFOUND=$$NOSEVT1(BSDXRES,BSDXSTART,BSDXPAT,BSDXSTAT)
|
---|
| 103 | I BSDXFOUND D NOSEVT3(BSDXRES)
|
---|
| 104 | Q
|
---|
| 105 | ;
|
---|
| 106 | NOSEVT1(BSDXRES,BSDXSTART,BSDXPAT,BSDXSTAT) ;
|
---|
| 107 | ;Get appointment id in BSDXAPT
|
---|
| 108 | ;If found, call BSDXNOS(BSDXAPPT) and return 1
|
---|
| 109 | ;else return 0
|
---|
| 110 | N BSDXFOUND,BSDXAPPT
|
---|
| 111 | S BSDXFOUND=0
|
---|
| 112 | Q:'+$G(BSDXRES) BSDXFOUND
|
---|
| 113 | Q:'$D(^BSDXAPPT("ARSRC",BSDXRES,BSDXSTART)) BSDXFOUND
|
---|
| 114 | S BSDXAPPT=0 F S BSDXAPPT=$O(^BSDXAPPT("ARSRC",BSDXRES,BSDXSTART,BSDXAPPT)) Q:'+BSDXAPPT D Q:BSDXFOUND
|
---|
| 115 | . S BSDXNOD=$G(^BSDXAPPT(BSDXAPPT,0)) Q:BSDXNOD=""
|
---|
| 116 | . I $P(BSDXNOD,U,5)=BSDXPAT,$P(BSDXNOD,U,12)="" S BSDXFOUND=1 Q
|
---|
| 117 | I BSDXFOUND,+$G(BSDXAPPT) D BSDXNOS(BSDXAPPT,BSDXSTAT)
|
---|
| 118 | Q BSDXFOUND
|
---|
| 119 | ;
|
---|
| 120 | NOSEVT3(BSDXRES) ;
|
---|
| 121 | ;Call RaiseEvent to notify GUI clients
|
---|
| 122 | ;
|
---|
| 123 | N BSDXRESN
|
---|
| 124 | S BSDXRESN=$G(^BSDXRES(BSDXRES,0))
|
---|
| 125 | Q:BSDXRESN=""
|
---|
| 126 | S BSDXRESN=$P(BSDXRESN,"^")
|
---|
| 127 | D EVENT^BMXMEVN("BSDX SCHEDULE",BSDXRESN)
|
---|
| 128 | Q
|
---|
| 129 | ;
|
---|
| 130 | ;
|
---|
| 131 | ERR(BSDXERID,ERRTXT) ;Error processing
|
---|
| 132 | S:'+$G(BSDXI) BSDXI=999999
|
---|
| 133 | S BSDXI=BSDXI+1
|
---|
| 134 | TROLLBACK
|
---|
| 135 | S ^BSDXTMP($J,BSDXI)=BSDXERID_"^"_ERRTXT_$C(30)
|
---|
| 136 | S BSDXI=BSDXI+1
|
---|
| 137 | S ^BSDXTMP($J,BSDXI)=$C(31)
|
---|
| 138 | Q
|
---|
| 139 | ;
|
---|
| 140 | ETRAP ;EP Error trap entry
|
---|
| 141 | D ^%ZTER
|
---|
| 142 | I '$D(BSDXI) N BSDXI S BSDXI=999999
|
---|
| 143 | S BSDXI=BSDXI+1
|
---|
| 144 | D ERR(0,"BSDX31 Error: "_$G(%ZTERROR))
|
---|
| 145 | Q
|
---|
| 146 | ;
|
---|
| 147 | IMHERE(BSDXRES) ;EP
|
---|
| 148 | ;Entry point for BSDX IM HERE remote procedure
|
---|
| 149 | S BSDXRES=1
|
---|
| 150 | Q
|
---|
| 151 | ;
|
---|